Path Tracing // Ray Tracing series

preview_player
Показать описание


🧭 FOLLOW ME

📚 RESOURCES (in order of complexity)

💾 SOFTWARE you'll need installed to follow this series

CHAPTERS
0:00 - What is Path Tracing?
10:46 - Preparing for accumulation
14:18 - Accumulating samples

Welcome to the exciting new Ray Tracing Series! Ray tracing is very common technique for generating photo-realistic digital imagery, which is exactly what we'll be doing in this series. Aside from learning all about ray tracing and the math to goes into it, as well as how to implement it, we'll also be focusing on performance and optimization in C++ to make our renderer as efficient as possible. We'll eventually switch to using the GPU instead of the CPU (using Vulkan) to run our ray tracing algorithms, as this will be much faster that using the CPU. This will also be a great introduction to leveraging the power of the GPU in the software you write. All of the code episode-by-episode will be released, and if you need help check out the raytracing-series channel on my Discord server. I'm really looking forward to this series and I hope you are too! ❤️

This video is sponsored by Brilliant.

#RayTracing
Рекомендации по теме
Комментарии
Автор

Path Tracing at 7:33. You're welcome.

Автор

making it faster would be fun, also might be a good practical way to teach multi threading.

arsenbabaev
Автор

I learned a lot in this video. I just have a slight note that I would use a seeded RNG per pixel to reduce temporal noise with accumlation per frame rather than every frame to increase physical accuracy (especially because our camera can move), but I get that it'd kill the real-time for CPUs which this tutorial is currently for lol

nullbeyondo
Автор

The terminology that I tend to use:

- If you are using rays as a hidden surface technique (i.e. first-hit), that's "ray casting".
- Direct-lighting shadows, specular reflections, and refraction is "Whitted-style ray tracing".
- Motion blur, depth of field, glossy reflection, and in particular, any technique where adding more camera samples fixes convergence issues in the limit, is "distribution ray tracing".
- Any technique that can ray trace multiple diffuse bounces, is "path tracing".
- Anything that involves tracing ray adjoints from light sources is "photon tracing".

There are obviously fuzzy boundaries here.

Mathematically, you are trying to solve an integral equation. Distribution ray tracing is the point where randomness becomes important: you solve the equation by constructing a random variable, the expected value of which is the solution to the equation. In general, any technique that does this is "Monte Carlo ray tracing". Path tracing is, in a sense, distribution ray tracing where the equation you are solving is Kajiya's rendering equation.

DeGuerre
Автор

This kind of video structure is better than other ones that you have made, An overview and then It is easy to learn like this!

CreativeOven
Автор

As an illustrator and tattoo artist I have learned far more and far more clearly about light and reflections from the history of CG lighting in games specifically than any other source.

Of course we get to exaggerate and simplify but it’s fantastic how much even a simple application of this sort of methodology makes a digital painting/canvas painting more interesting.

People really don’t know why they can’t render things in a more realistic way because apart from specialized courses this theory or rough rules aren’t taught.

LeroyMustang
Автор

That random path accumulation method is what Chaos Vantage actually does. Every time I move the camera or I perform any change on materials or whatever, it goes back to noisy and rapidly accumulates the random outputs, progressively cleaning the image.
So Vantage is a true pathtracer (different from UE)

Carolina-mwpo
Автор

I watched this video a year back and now after a year - i am still learning path tracing vs ray tracing.. but you did a really good job, just the knowledge is really deep!

suriMusiq
Автор

at the edge of my seat the whole time, its like a horror movie I keep looking through my fingers "is he going to scratch that table with that screwdriver"?

gameguy
Автор

hands down best course on ray tracing and/of rendering on youtube.
It's noce going step by step incrementing complexitly slowly and just add a simple thing after an other :)
Then 10 episodes in and you like... damn, that sounded much more difficult than it was to do it like this :)

fischi
Автор

Excellent episode, Cherno. You explain pretty simply what path-tracing is without introducing global illumination, and I can wait for the next episode. I would propose for the future of the series that you teach about acceleration structures before moving to multithreading or the GPU due to current GPU architectures implementing acceleration structures as a black box by giving you some access due to the intersection shaders. 😃

andrewpolychronakis
Автор

In ray casting you have a ray that will take one step each time and then will check if it hits something. In ray tracing you have a formula that will calculate the intersections for you.
Also in ray casting you can implement shadows, soft shadows, reflections, global illumination and all the things ray tracing has, but it is slower than just some simple intersection formula

sh_
Автор

These ray tracing series are super cool. Every next topic is exciting. If optimizations at this moment will make all furtherly added features run smoothly then I vote for optimizations.

computersdontcompost
Автор

Best video series, cant wait till the next epidode. Multithreading, shaders, optimizations and eventually move to the gpu. Amazing stuff and so fun to watch. Thank you

Zyhorn
Автор

As far as i know, Raycasting is the primitive operation of shooting a ray from A to B for different purposes (for example player interaction, evaluate distances etc), and not for compute illumination. Ray tracing uses a lot of Raycasting but Raycasting is a general purpose technique.

Hadrhune
Автор

Shadows, soft shadows, area lights, triangles, transparency, maybe parsing an entire scene file. For scene files, especially the ability to embed mesh descriptions inside another scene file, but translated/rotated/scaled from the point of view of the containing scene (so we can use a single mesh definition in many different scenes but change the size, position, orientation, and material with data in the scene description).

davidcfrogley
Автор

Important to mention that im learning ray tracing for now only from your videos (im planning to read, yeah).
But i'm interested how this gets enhanced so you don't loose image quality when moving stuff ?
My best guess would be - brute force rays when moving for a few frames then chill))
It actually explains why some games get super laggy when you move camera 😅

arthurmightybear
Автор

Next episode seems like it's going to be awesome!

per-axelskogsberg
Автор

I was trying to find multithreading videos from you and I still want it + thank you for everything

أسامةالعبدالله-هس
Автор

Honestly, I'd love either of those options! They both sound super fun.

Howtheheckarehandleswit