MrJakob
MrJakob
  • 63
  • 44 280
How to simulate falling Sand in rust: A pixel game engine adventure
Join me live as I dive into the world of digital sand dynamics with Pixel Sand! In this session, we'll explore the creation of a basic falling sand simulator using the Pixel Loop engine. Witness the magic as we bring sand particles to life within a digital sandbox, observing their interactions and behaviors in real-time. Don't miss out on this hands-on demonstration of early-stage development and stay tuned for future enhancements. Subscribe now and be part of the journey towards a captivating pixelated experience!
📚 Check out Genuary for more inspiration: [genuary.art/]
🔗 Explore the evolving codebase on our Github Repository: [github.com/jakobwesthoff/pixel_loop]
🎨🌐 Join us in the world of pixel drawing with Rust! Remember to stay updated on our progress by liking, subscribing, and ringing the notification bell. Let's code, create, and draw together as we push the boundaries of pixel art in Rust! 💡🚀
#RustProgramming #PixelArt #LiveCoding
มุมมอง: 814

วีดีโอ

Abstract the Drawing Code: Future-Proofing out Pixel Loop Engine
มุมมอง 740วันที่ผ่านมา
🔧 Explore the evolution of our pixel drawing engine in Rust as we adapt the pixel loop implementation to work seamlessly with the pixels crate and tao library, ensuring future backend compatibility. 🚀 🎨 Discover the refined rendering interface designed to support various drawing commands, allowing for flexibility without being tied to a specific backend. Witness the progression of our pixel art...
Building a Rust Pixel Drawing Engine: Abstract Update/Render Loop Tutorial
มุมมอง 43314 วันที่ผ่านมา
🔧 Join me in this captivating live coding session as we delve into creating a Rust library for an abstract update/render loop, inspired by a fascinating blog article I discovered. Explore how to implement fixed update time steps for precise pixel drawing! 💻 🎨 Witness the seamless integration of this loop with the pixels crate and tao to craft a window with a charming pixel style rendering conte...
Howto create a X86 JIT Compiler in Rust | Compiling Brainf*ck to Machine Code
มุมมอง 37521 วันที่ผ่านมา
🚀 Welcome to the next chapter in our Rust_Brain series, where we take our Brainfuck interpreter to the next level with a powerful JIT Compiler in Rust! 🦀🔥 In this thrilling episode, we delve into the intricacies of JIT compilation on X86_64 systems, showcasing a detailed code review of our JIT Compiler implementation. 🏗️ Join us as we explore the fascinating world of Just-In-Time compilation an...
Writing a X86 JIT - Initial Experiments
มุมมอง 237หลายเดือนก่อน
🔍 Join me as I take a leisurely stroll through the world of dynamically created machine code, setting the stage for a upcoming videos on implementing a JIT in my Brainfuck interpreter. 🛠️ In this laid-back video, you'll see me experiment, read documentation, and troubleshoot as I familiarize myself with executing dynamically generated machine code. While the pace may be slow and the content mor...
Parsing and executing Brainf*ck from Scratch
มุมมอง 58หลายเดือนก่อน
🚀 Welcome back to the next part of our rust_brain development series, where we bring our Brainfuck interpreter in Rust to completion! 🦀🧠 In this exciting installment, we will finalize our interpreter by implementing the remaining functionalities and optimizing the code for efficiency. 🏗️ Dive deeper into the intricacies of interpreting Brainfuck code and witness the magic of turning theory into...
Parsing with Rust - Epic Journey
มุมมอง 498หลายเดือนก่อน
🚀 Join me in the first part of our rust_brain development series as we lay the groundwork for our Brainf*ck interpreter in Rust! 🦀🧠 In this episode, we'll start by setting up the basic program structure and crafting a simple lexer for the Brainfuck language. 🏗️ Explore the essentials of lexers and get hands-on experience with defining data types necessary for our interpreter to function. Discov...
Dithering explained with Rust CLI: Coding an Error Diffusion Algorithm
มุมมอง 192หลายเดือนก่อน
🎨 Get ready for a coding journey as we explore image dithering using error diffusion to represent a full-color image with just 16 colors! Watch me live code a Floyd-Steinberg based dithering algorithm from scratch in Rust, uncovering the magic and intricacies behind this fascinating process. 🧙‍♂️ Follow along with the code available on GitHub and feel free to code, customize, and utilize it to ...
Demystifying the Power of Unicode: Fractional Progress Bars in Rust CLI
มุมมอง 1.4Kหลายเดือนก่อน
🦀 Get ready to level up your Rust CLI game! 🦀 In this latest video, we're taking our progress bar to the next level by incorporating Unicode characters. Now, we can display fractional progress with various width Unicode blocks, making our CLI tools even more versatile and visually appealing. 💪 Join me in this exciting coding adventure as we explore the fascinating world of Unicode characters in...
Level Up Your CLI: Building a Stylish Progress Bar in Rust!
มุมมอง 1.6K2 หลายเดือนก่อน
🦀 Let's dive back into Rust coding! 🦀 In this session, we're getting hands-on with the CLI (Command Line Interface), using the xkcd_sync tool from our previous video as a foundation (and an excuse 😇) to explore crossterm. Crossterm is a powerful library that abstracts away the complexities of ANSI features in various terminals. We'll leverage it to create a sleek progress bar for our sync tool....
Sync XKCD in Rust: Shockingly Simple!
มุมมอง 1472 หลายเดือนก่อน
Dive into the world of coding with me as we build an xkcd comic synchronizer using Rust! 🚀 Join me in this coding adventure where I'll be crafting a handy tool to sync xkcd comics, something I'm excited to use myself. Whether you're a seasoned developer or just curious about coding, there's something here for everyone. 👨‍💻 Follow along with all the code, which I've made available on GitHub. You...
Setting up Yew and TailwindCSS - 001 - StableDiffusion powered ePaper
มุมมอง 304ปีที่แล้ว
Let's start to create a web interface for our stablediffusion powered epaper photo frame. The idea is to allow for easier configuration of new features in the future. Furthermore it is a first step to allow browsing history of already shown pictures and their generation prompts. This video is part of a series, where we learn and experience the creation of a stablediffusion powered epaper photo ...
Perfect Reflections - 034 - The Ray Tracer Challenge
มุมมอง 1.3K2 ปีที่แล้ว
Reflecting surfaces make everything more lifelike. Due to our previous work they aren't that hard to implement. Let's do it! Join me, while I implement chapter by chapter from the book "The Ray Tracer Challenge" by Jamis Buck in Rust a language completely new to me. Come with me on the journey of learning the Rust programming language, while implementing a Ray Tracer in a Test driven fashion, t...
The Ray Tracer Challenge - 033 - Checkerboard and Ring Pattern
มุมมอง 5092 ปีที่แล้ว
The Ray Tracer Challenge - 033 - Checkerboard and Ring Pattern
The Ray Tracer Challenge - 032 - Gradient Pattern
มุมมอง 1792 ปีที่แล้ว
The Ray Tracer Challenge - 032 - Gradient Pattern
The Ray Tracer Challenge - 031 - Cleanup, Tests and the Debugger
มุมมอง 1482 ปีที่แล้ว
The Ray Tracer Challenge - 031 - Cleanup, Tests and the Debugger
Why are we using 4D to create 3D?
มุมมอง 2862 ปีที่แล้ว
Why are we using 4D to create 3D?
The Ray Tracer Challenge - 029 - Degree Support
มุมมอง 1282 ปีที่แล้ว
The Ray Tracer Challenge - 029 - Degree Support
The Ray Tracer Challenge - 028 - Pattern Transformation
มุมมอง 2122 ปีที่แล้ว
The Ray Tracer Challenge - 028 - Pattern Transformation
The Ray Tracer Challenge - 027 - Tauri App
มุมมอง 1.2K2 ปีที่แล้ว
The Ray Tracer Challenge - 027 - Tauri App
The Ray Tracer Challenge - 026 - Pattern in Yaml
มุมมอง 1782 ปีที่แล้ว
The Ray Tracer Challenge - 026 - Pattern in Yaml
The Ray Tracer Challenge - 025 - REPL
มุมมอง 2.5K2 ปีที่แล้ว
The Ray Tracer Challenge - 025 - REPL
The Ray Tracer Challenge - 024 - Stripes
มุมมอง 2382 ปีที่แล้ว
The Ray Tracer Challenge - 024 - Stripes
Quick Byte - Mozilla SOPS
มุมมอง 2.8K2 ปีที่แล้ว
Quick Byte - Mozilla SOPS
The Ray Tracer Challenge - 023 - The World in YAML
มุมมอง 2572 ปีที่แล้ว
The Ray Tracer Challenge - 023 - The World in YAML
Quick Byte - Extending the Playstation 5 Storage with a Samsung 980 Pro
มุมมอง 572 ปีที่แล้ว
Quick Byte - Extending the Playstation 5 Storage with a Samsung 980 Pro
The Ray Tracer Challenge - 022 - Planes
มุมมอง 6122 ปีที่แล้ว
The Ray Tracer Challenge - 022 - Planes
Quick Byte - Shellcheck
มุมมอง 4002 ปีที่แล้ว
Quick Byte - Shellcheck
The Ray Tracer Challenge - 021 - Shadow Casting
มุมมอง 7732 ปีที่แล้ว
The Ray Tracer Challenge - 021 - Shadow Casting
Quick Byte - Installing Rust
มุมมอง 1632 ปีที่แล้ว
Quick Byte - Installing Rust

ความคิดเห็น

  • @thederpykrafter
    @thederpykrafter 3 วันที่ผ่านมา

    I thought light mode users were a myth 😂

  • @chordogg
    @chordogg 3 วันที่ผ่านมา

    Dark mode, my dude. Dark mode.

    • @MrJakob
      @MrJakob 3 วันที่ผ่านมา

      I actually find working with light themes at the moment easier on my eyes. However you are not the only one asking for me using a dark theme again. Therefore I have switched to a dark theme for future videos. However I still have got some more in the pipeline, which have already been recorded in advance and will therefore be with my current bright theme. I hope you will endure those until darker times arise ;)

    • @n0rber10
      @n0rber10 3 วันที่ผ่านมา

      Light mode for life, let's keep things actually visible.

    • @MrJakob
      @MrJakob 3 วันที่ผ่านมา

      Even though, as I pointed out I currently deem light themes more readable for my eyes as well, I understand, that many people are watching those videos in the evening in dimmed down light conditions. Therefore I can understand the request to have an overall less bright appearance. I hope to have found a darker, but yet clearly visible theme to be used in the future, that allows both sides to be happy.

    • @diontryban5645
      @diontryban5645 2 วันที่ผ่านมา

      @@MrJakob Light mode is great during the day. I love using both with my system automatic switching twice a day

  • @aresformacion5183
    @aresformacion5183 4 วันที่ผ่านมา

    Very cool, thanks for your work! About the way or not the way with rust "constructors"... I apply the rule that: if the properties of struct must be private or the values of the properties needs to be "normalized" before use or the properties values must to be validated on construction step, then add the fn new() (with some getters and setters).

  • @aresformacion5183
    @aresformacion5183 4 วันที่ผ่านมา

    With nightly feature "generic_const_exprs" build and array (for canva) on the stack is trivial: impl<const WIDTH: usize, const HEIGHT: usize> Canvas<WIDTH, HEIGHT> where [Color; WIDTH * HEIGHT]:, { pub fn new() -> Self { Self { width: WIDTH, height: HEIGHT, pixels: [Color::black(); WIDTH * HEIGHT], } } } #[test] fn canvas_can_be_writted() { let mut canvas = Canvas::<10, 20>::new(); let position = Position { x: 2, y: 3 }; let color = Color::red(); canvas.write_at_position(position, color).unwrap(); assert_eq!(Some(color), canvas.get_pixel_by_position(position)); }

  • @aresformacion5183
    @aresformacion5183 5 วันที่ผ่านมา

    Hi! About the "something never used" is because the #[cfg(test)] annotation on the module "tests" says that when the feature flag "tests" is applied then add this module to the compilation (that is the thing happens when you do "cargo test"). But, the default feature-flag/configuration (that is the "normal code") doesn't use this struct and their implementations yet. "Something is never used" can be translated to "something is never used from OUTSIDE of the current module".

  • @luisluisluis4155
    @luisluisluis4155 19 วันที่ผ่านมา

    Welcome back, I followed your ray tracing tutorial and I learned a lot, I hope to continue learning with your new videos. greetings

    • @MrJakob
      @MrJakob 19 วันที่ผ่านมา

      Thank you it’s good to be back. I hope you will enjoy the new videos. Let’s learn together! That’s half the fun 🤓

  • @cszczepaniak
    @cszczepaniak 23 วันที่ผ่านมา

    Anyhow probably doesn’t use the format syntax because that syntax is implemented with a macro, whereas context is a function (and has to be a function because it’s implemented on a type)

    • @MrJakob
      @MrJakob 23 วันที่ผ่านมา

      That makes a lot of sense. Thanks 👍

  • @albertoc6942
    @albertoc6942 24 วันที่ผ่านมา

    Hey! Really cool exercise. This one of Tsoding is also awesome: th-cam.com/video/mbFY3Rwv7XM/w-d-xo.htmlsi=aJnYlo2_V_hdxYwb and might be useful to compare approaches

    • @MrJakob
      @MrJakob 23 วันที่ผ่านมา

      Thanks that looks interesting. I will take a closer look once I got some spare time 👍

  • @archytype.mp3
    @archytype.mp3 24 วันที่ผ่านมา

    This is a good video. Unfortunately the title is AI so I'm not going to support you but great video.

    • @MrJakob
      @MrJakob 24 วันที่ผ่านมา

      Too bad you don’t want to support me. But I am glad you liked the content.

  • @user-fg4qw2fj4l
    @user-fg4qw2fj4l หลายเดือนก่อน

    Wow only 2 likes

  • @norestraint
    @norestraint หลายเดือนก่อน

    Great video! Just a quick comment: if possible, switch to a dark theme, it makes the experience a bit better, specially for people watching on low light environments. XD

    • @MrJakob
      @MrJakob หลายเดือนก่อน

      Thanks for the feedback. I got quite some videos still in the queue, which are prepared and ready to be published. For newer ones however I will see, what I can do however. 👍

  • @orellazri
    @orellazri หลายเดือนก่อน

    This was great! Thanks for taking the time to make those videos :)

    • @MrJakob
      @MrJakob หลายเดือนก่อน

      You are very much welcome. Making those videos is fun for me as well 😃

  • @madhavan_raja
    @madhavan_raja หลายเดือนก่อน

    Amazing video! Can you please tell me the theme and the font you are using? I'm usually not a fan of light themes but this one looks gorgeous!

    • @MrJakob
      @MrJakob หลายเดือนก่อน

      Thanks. My color scheme is a slightly adapted Solarized light. You can find my shell/environment configuration on github: github.com/jakobwesthoff/dotfiles Especially the alacritty and tmux configs are mostly interesting for you if you want to checkout the font and color scheme.

  • @knkootbaoat6759
    @knkootbaoat6759 2 หลายเดือนก่อน

    keep it up :)

  • @vim55k
    @vim55k 7 หลายเดือนก่อน

    File please

  • @mrwalter1049
    @mrwalter1049 7 หลายเดือนก่อน

    One good exercise for pythagorean theorem is to algebraically solve for the hypotenuse of a triangle in three dimensions. It should spit out the same thing as you are describing here, since the square roots and squaring of the legs of the triangles cancel each other out. I highly suggest it for high schoolers if they haven't done it before.

  • @luigidabro
    @luigidabro 10 หลายเดือนก่อน

    Will it be a raytracer or a pathtracer?

  • @MaxxxiorPL
    @MaxxxiorPL 10 หลายเดือนก่อน

    Great series! I got the book and started implementing my own ray tracer in Rust (I am learning it as well). There is nice library called glam (a linear algebra library for games and graphics), but I like implementing the math myself 😄

    • @MrJakob
      @MrJakob 10 หลายเดือนก่อน

      Thanks. Yes I discovered glam by now as well, but same as you I wanted to do things from scratch to learn 😁

  • @MADMAX-sy9kt
    @MADMAX-sy9kt ปีที่แล้ว

    What printer do you use?

  • @Shiitake0787
    @Shiitake0787 ปีที่แล้ว

    File please!!! 🙏🙏

  • @jaronhead1963
    @jaronhead1963 ปีที่แล้ว

    One Russian dude with a lathe made this two way bolt years ago and it been around ever since

  • @RedBull_0130
    @RedBull_0130 ปีที่แล้ว

    Amazing!! I love it!! 👍👍

  • @xr.spedtech
    @xr.spedtech ปีที่แล้ว

    Did rust speed up the render speed or is that just your Processor's FPU ?

    • @MrJakob
      @MrJakob ปีที่แล้ว

      The implementation is purely cpu bound, as none of the computation is done on the gpu. It would be possible of course to use the gpu to enormously speed up the calculation. The main speed bump for the implementation was to utilize all processor cores using the rayon library. There is a session about when I discovered that as well.

  • @omarctech1201
    @omarctech1201 ปีที่แล้ว

    I'm knew to 3d world, could you tell me how how to achieve such accuracy? how to calibrate the printer and any thing you know is useful

  • @meowsqueak
    @meowsqueak ปีที่แล้ว

    I enjoyed watching this, seeing your thought processes and how they translate into Rust changes. In your YAML for transforms, I think “by:” would be a better term than “to:”, as the former sounds relative and the latter sounds absolute.

    • @MrJakob
      @MrJakob ปีที่แล้ว

      Thanks for your kind words. You might be right. I will consider this, when I start working on this again in the future.

  • @ggasanov7250
    @ggasanov7250 ปีที่แล้ว

    many thanks for your experience, i'm started learn rust and your videos is very helpful

  • @isaishharvin-johnson401
    @isaishharvin-johnson401 ปีที่แล้ว

    AMOUGUS

  • @gregoryarutyunyan5361
    @gregoryarutyunyan5361 ปีที่แล้ว

    @MrJakob, can you please tell how important is understanding of underlying mathematics for this book? Does it make sense to work though it without sound understanding of underlying concepts?

    • @MrJakob
      @MrJakob ปีที่แล้ว

      What you need to understand raytracing is a basic knowledge about geometry, which includes vectors and a little trigonometry. If you have basic understanding of those concepts you are perfectly fine, as the book is very detailed in its explanations. You might even be able to follow the book, without that knowledge, but I guess it wouldn’t be much fun, as you will be able to „copy“ from the book, but you won’t understand what you are doing exactly. I hope that helps a little.

    • @gregoryarutyunyan5361
      @gregoryarutyunyan5361 ปีที่แล้ว

      @@MrJakob Thank you for the reply!

  • @micahwithabeard
    @micahwithabeard 2 ปีที่แล้ว

    Debug vs Release with 1024^2 canvas. 13.7 seconds for Debug. 0.3 for Release. can't wait to see this parallelized :D

    • @micahwithabeard
      @micahwithabeard 2 ปีที่แล้ว

      for some reason inticatif breaks CodeLLDB for me if i run it through the vs code debug button(or F5). however it builds fine and displays if i do a "cargo run" not sure if you have the same issues or not(maybe you know how to fix it?). well now that i typed this all out i remembered you are on IOS so maybe not :) also does the Body enum implementation cause any issues later on? i have never seen a ray hit return the object itself before and i would normally just have a HitRecord struct that gets returned with the hit information(t, ray, normal, etc) by the intersect function. normally the final calculations don't need to care about the object that the ray hit. only the ray and the t value(to calculate the hit position) and normal which we haven't gotten to yet. another thing im thinking about is with reflections and bounce lighting. wouldn't each bounce do a copy of the whole object for each bounce? i initially did it using a normal struct but converted it to use the enum dispatching because i wanted to learn a different way it's interesting but im not sure yet when i would ever need to reference the original object. though i suppose you could use that as a way of attaching materials and properties directly to the object. and referencing it later. again normally i would store color info in the HitRecord and modify it iteratively with each bounce) where it seems like with the enum dispatch approach you would need to collect and calculate everything at the end using all the Body's that get returned. anyways lol sorry for the wall of text.

  • @micahwithabeard
    @micahwithabeard 2 ปีที่แล้ว

    glad to see the num_traits go. it was ok during implementation but once i tried using it to draw something it was awful. though i know why you did it and it made sense(in my head not knowing anything about rust). no idea if you reimplement it later in a better way. i know im month past when these videos went live but i just found your videos (after completing the raytracer in a weekend series in a few other languages) and am learning rust along with your past self :) pretty fun. thanks for the videos!

    • @MrJakob
      @MrJakob 2 ปีที่แล้ว

      I am glad you like the videos. As you can see it was a big learning for me as well. I tried things and later realized they are not what I wanted. Therefore they had to go again. But essentially that is why I started this series in the first place. I hope you will enjoy the rest of the videos as well. I will hopefully find the time to do further work on this project and someday „complete“ it. My spare time is quite limited at the moment. But I am confident to be able to release some new videos in the future. Comments like yours actually motivate me even more to do so.

    • @micahwithabeard
      @micahwithabeard 2 ปีที่แล้ว

      @@MrJakob awesome! it's really fun following along with you as you are learning it. unlike a classic university course where everything is set and the teacher is a master it gives me room to pause and go searching myself for different ways to implement a new idea. then come back and unpause you. a lot of times we end up writing the same/similar code but sometimes you do something different and ill implement both and figure out which way I prefer. i don't know how long it will take to make it through all of the rest but i don't have any plans on stopping. i have heard of rust for a few years now but never tried it(old c/c++ programmer that has been using python and C# for the last 10 years). so far it's a pretty nice language and i have only missed python a little :) im not sure what your main languages are but any plans on using rust outside of this project?

    • @MrJakob
      @MrJakob 2 ปีที่แล้ว

      That sounds like fun 👍. I have actually used rust for some other small projects I needed to be done privately. They are on my GitHub as well. Furthermore I actually wrote a certain service at work in rust quite recently, because it was a nice fit. I like the language and the community around it and don’t think I will be stopping writing it soon. I have rough plans to maybe write a minimal kernel in rust, just because I have never written a basic or layer before. But that will most likely be another TH-cam series then 😅

    • @micahwithabeard
      @micahwithabeard 2 ปีที่แล้ว

      @@MrJakob Nice i have some ideas about trying some neural networking stuff in rust once im done with the ray tracing. it's always a good sign when you learn a new language to use it beyond the learning project.(or in my case thinking about it) the kernel sounds super interesting i would definitely watch that. i tried implementing my own kernel years ago in C but stopped after basic io.

  • @micahwithabeard
    @micahwithabeard 2 ปีที่แล้ว

    im so happy to reach this episode!

  • @workflowinmind
    @workflowinmind 2 ปีที่แล้ว

    Hey Jakob, keep them coming, your channel is gold !!

    • @MrJakob
      @MrJakob 2 ปีที่แล้ว

      Thank you very much. I am sorry for not having released a new video in such a long time. There will be more in the future, that I can assure you. In the last two month I nearly didn’t have any spare time to work on this project. But I am seeing the light at the end of the tunnel. Therefore I hope there will be a new session out soon, covering refraction and there stuff like glass 😁

    • @workflowinmind
      @workflowinmind 2 ปีที่แล้ว

      @@MrJakob Didn't wanted to pressure you! I know how hard it is to find time these days. I discovered the series last week and have watched most of it and really liked the approach/commentary and of course the project. I just wanted to show interest to motivate you! Take your time

  • @workflowinmind
    @workflowinmind 2 ปีที่แล้ว

    27:00 A test is not usage per say, and you can test private stuffs in rust

  • @workflowinmind
    @workflowinmind 2 ปีที่แล้ว

    Nice, 28:59 what shortcut do you use to enter paths on dialogs?

    • @MrJakob
      @MrJakob 2 ปีที่แล้ว

      On macOS you can open this “Goto Folder Dialog” in any file picker dialog by pressing Command+Shift+G

  • @deepjaysoul
    @deepjaysoul 2 ปีที่แล้ว

    Thank you very much for this series! It actually inspired me to get the book and do the challenge while learning a new language…😀 But I have chosen go instead of rust and the test driven approach is also pretty new for me…best regards from Karlsruhe!

    • @MrJakob
      @MrJakob 2 ปีที่แล้ว

      That’s great to hear. Should you decide to publish your work on GitHub or the like, I would love to take a peak at it 😁

  • @ramongonzalezfernandez8904
    @ramongonzalezfernandez8904 2 ปีที่แล้ว

    While I understand the reasoning for doing world transform with rasterization (makes it so that 3d -> 2d is just [x,y,z] -> [x/z,y/z]), but why would you do it for ray tracing if you can just send the rays off at the neccessary angles and positions?

  • @flaviocampos3581
    @flaviocampos3581 2 ปีที่แล้ว

    Hi Jakob, Great video! I was able to intersect sphere and plane. But I am having hard time to visualize (understand) the logic for a cylinder. Any tips? And thanks again for the videos.

    • @MrJakob
      @MrJakob 2 ปีที่แล้ว

      I haven’t yet started implementing cylinder intersection yet. Therefore I did not think about this properly yet. Once I am at that point, I hope to come up with an understandable explanation ;). Should I fail at that, please feel free to ask the corresponding question again, at that point :).

  • @ramongonzalezfernandez8904
    @ramongonzalezfernandez8904 2 ปีที่แล้ว

    2:50 I have no issues on linux, I think the issue is mainly windows

    • @MrJakob
      @MrJakob 2 ปีที่แล้ว

      Yeah I guess so. However having png as an output format is at least a nice option. Now anybody can choose 😁

  • @ramongonzalezfernandez8904
    @ramongonzalezfernandez8904 2 ปีที่แล้ว

    You may want to get the determinant in the `inverse` function and then check if it equals 0 to avoid 332 and 337 (don't use is_invertable) 1:00:47

    • @MrJakob
      @MrJakob 2 ปีที่แล้ว

      I guess that could be done as an optimization. It most likely would even be one, which makes a difference. However at the moment I think the raytracer is fast enough. Once I deem optimizations necessary, I would profile the code and start optimizing the parts that have the greatest impact first. Thanks for the hint however, I will keep it in mind.

  • @ramongonzalezfernandez8904
    @ramongonzalezfernandez8904 2 ปีที่แล้ว

    I have copilot in vscode and i find it amazing that it often generates the correct results for tests where i came up with the numbers

    • @MrJakob
      @MrJakob 2 ปีที่แล้ว

      Copilot is kind of an amazing machine learning system. However I usually know quite clearly how I want the code to be laid out, therefore something like autopilot kind of irritates me, more than it helps. But that is personal preference I guess.

    • @ramongonzalezfernandez8904
      @ramongonzalezfernandez8904 2 ปีที่แล้ว

      @@MrJakob i agree with the code style comment, but the cool part about copilot is that after a bit of time on a project, it starts mimicking your code style.

    • @MrJakob
      @MrJakob 2 ปีที่แล้ว

      @@ramongonzalezfernandez8904 that is interesting, maybe I need to check it out again some time. However I am still not that sure, if using copilot will hold up legally, as you are technically using someone else’s code, which might be under a license incompatible to yours. I know that there are different legal opinions about that out there. I guess we will only be sure once there is a big legal battle on that basis, to see who wins ;). Nevertheless it is an impressive technology.

  • @ramongonzalezfernandez8904
    @ramongonzalezfernandez8904 2 ปีที่แล้ว

    heres my implementation of the submatrix (im using const generics) fn submatrix<const NWIDTH: usize, const NHEIGHT: usize>( &self, row: usize, column: usize, ) -> Matrix<NWIDTH, NHEIGHT> { assert!(WIDTH - NWIDTH == 1); assert!(HEIGHT - NHEIGHT == 1); let mut result = Matrix::<NWIDTH, NHEIGHT>::new(); for dy in 0..NHEIGHT { for dx in 0..NWIDTH { result.set_position( dx, dy, self.get_position(dx + ((dx >= column) as usize), dy + ((dy >= row) as usize)), ); } } result }

    • @MrJakob
      @MrJakob 2 ปีที่แล้ว

      I actually refactored the matrix implementation later on to use const generics as well.

  • @GlobalYoung7
    @GlobalYoung7 2 ปีที่แล้ว

    Thank you 😊

  • @flaviocampos3581
    @flaviocampos3581 2 ปีที่แล้ว

    I am not following the Book but after this light video you made... that was so good. I only know C but I could understand. I will follow all the videos later (For now I just need to finish this college project XD). Great job and thanks!

    • @MrJakob
      @MrJakob 2 ปีที่แล้ว

      Thank you very much. I hope you will enjoy the rest of the videos as well. Don’t hesitate to post more comments should you have any input or questions.

  • @MonkeeSage
    @MonkeeSage 2 ปีที่แล้ว

    Thank you for this series! This is excellent so far!

    • @MrJakob
      @MrJakob 2 ปีที่แล้ว

      Thanks for the kind words. Please keep me posted, while you progress through the series, if you have any thoughts or questions.

  • @FPChris
    @FPChris 2 ปีที่แล้ว

    I'm currently stuck in Chapter 11 on the transparency tests. :/ I got the reflections and patterns working but I'm not understanding the n1 n2 pseudo code very well.

    • @MrJakob
      @MrJakob 2 ปีที่แล้ว

      As I haven’t tackled chapter 11 yet in this series, I can’t help with this, yet. However once I am implementing chapter 11, I will of course post the videos about it. Maybe those will help you to get an idea of what is going on then.

  • @FPChris
    @FPChris 2 ปีที่แล้ว

    Page 130 I get a massive shadow on the wall from the light. I tried to post a link but YT removed it I think

    • @MrJakob
      @MrJakob 2 ปีที่แล้ว

      Yes, TH-cam will remove posted links, as it assumes it is spam.

  • @senioravocado1864
    @senioravocado1864 2 ปีที่แล้ว

    Ah yes, 2 way screw

  • @FPChris
    @FPChris 2 ปีที่แล้ว

    LOL Page 99 the arbitrary view_transform test is 1 3 2 for the 'from' point. I had 1 2 3 and was going CRAZY.

    • @MrJakob
      @MrJakob 2 ปีที่แล้ว

      Yeah things like that happen 😅

  • @cuserroro
    @cuserroro 2 ปีที่แล้ว

    schön erklärt. Danke!