Hope you all enjoyed the video, let me know if you want to see more like this one! ❤️ HUGE thank you to Morning Brew for keeping my juice knowledge relevant and for allowing me to spend so much time working on this video! Sign up for free here: cen.yt/mbthecherno
Yeah, I really enjoyed it and it was really helpful for me because I just implemented bloom myself but wasn't particularly pleased with the results I was getting after following some tutorials. Would definitely like seeing more videos of this kind. ❤
I actually used the Bloom tutorial from learnopengl and always wondered why it looked so bad. I've always though bloom was just a very simple two-pass post-processing effect and now I finally see how wrong I was. Thank you so much for making this video!
Hey! I like your videos. I guess you used that learnopengl Bloom for the sun in your gravity simulator? It would be interesting if you could try to implement this bloom effect and make a video about it :)
@@bryanlozano1741 Hi! I'm happy to hear that! I did indeed use learnopengl for the bloom in my gravity simulator. If I ever come back to that project in the future, I will probably improve the bloom effect, but I wouldn't make a dedicated video about it (because this one exists) but it could be part of a third video in the gravity simulator series.
Great video! I especially liked that you referenced the CoD presentation. However I have a small nitpick with the implementation: bloom should not be added to the scene color, as adding increases the brightness of the image. This way the bloom magically creates energy out of thin air, which is at odds with energy conservation. An alternative is to lerp the images instead, the interpolation factor can be used to control the strength of the effect. Apart from being energy conserving this has two benefits: firstly the images with and without bloom will be similar in terms of overall brightness. Secondly the thresholding can be removed, which results in a more natural effect. The latter is also mentioned in Jimenez's presentation.
I have a small nitpick with your nitpick: Provided that the adding occurs before the tone mapping, or that tone mapping handles it correctly, no energy is created out of nothing, since tone mapping, a.k.a. crushing the range, destroys both energy and detail information such that you get something realistic/visually pleasing. Lerping will actually give you a worse visual result since it's linear whereas tone mapping can have nonlinearities which better model how light/camera behave. And lastly, a game engine's job is to fool the eye as fast as it's possible, not to run a full physics simulation which preserves all invariants. I don't think there are any physically accurate real time game engines, they all use tricks and approximations.
@@blacklistnr1 Bloom is typically applied on top of the non-tonemapped result of the physically based lighting result so it does break the correctness of the PBR theory. Personally I'd prefer the lerp because its less of a magic number compared to having a threshold.
@@Mempo1 "Less ... magic" :)) love the reason, perfectly valid. My point was that adding a thresholded bloom before tonemapping isn't "bad" and lerping images to preserve energy isn't always visually pleasing as it can muddy gradients, as the standard RGB color space isn't uniform to our eyes, so you need some non-linearities to make it look good. By the time you're in the "what does look good to a human?" part, physical correctness falls a bit lower in your priority list.
@@blacklistnr1 Fair, I'm not sure which one of the two looks better in practice but if its recommended in the cod presentation it probably works well in production. should also consider which parameter is friendlier to artists
@@Mempo1 Oh boy, I remember my first experience with the v-ray renderer. As an artist you open settings to get rid of some noise in the scene and you get 1000 algoritms, metaparameters and choices. I can only hope that artists have it better nowadays
Need more videos like this from you for more visual effects. This 'Bloom' video is still the undisputed greatest video on youtube, 2 years after its release.
1:12 overuse of the bloom effect really causes discomfort, thanks for sharing! Awesome video format, so much work, research and experience in one video.
Searched for a good bloom tutorial everywhere on the web, couldn't find any! and the next day youtube recommends this Amazing video! Thank you so much.
👏👏👏 I like how you upgraded all the aspects of the video A more clear explanation, a little bit of humor, lots of examples and analogies Can definitely see that a lot of effort was put in these 26 minutes
I usually don't comment on videos but I think this one deserved it. Very well thought out and brilliantly presented. I hope we see more content like this in the future!
I'm not a game developer, but I am slowly getting into video making and a bit of VFX. And knowing how computers simulate bloom helps me understand how that'd work in a program like After Effects. Thanks!!
THANK YOU DUDE !! I've been doing research on bloom for a few months to implement it into my drawings and make a tutorial about it. This basically confirms all of my research. However I didn't know about the downsampling technique, thank you for sharing it.
I generally think I have a pretty good grasp on how the 3d graphics I work with are made. Even though I'm an artist, I love to see all the technicalities behind the scenes. I learned a lot watching this, never knew it did so many passes! The bloom in unity's HDRP starts with the threshold all the way down or something strange like that because it's "physically accurate" I can imagine it just blurs dark pixels less and bright pixels more. The gears in your head really start turning after watching something like this! I would love to see more videos like these! About: lightmapping SSAO Voxelized effects like VXGI and VXAO the all-new Mesh shaders There is so much to learn and know!
Amazing video! I was already aware of these bloom techniques as I did extensive dig into graphics rendering in the past, but I am sure there's a LOT of people benefiting from this right at this moment. Also a suttle note (taken from Unreal Engine) - the most realistic approach to this is using a threshold value of 0.0. The threshold is something you use for artistic control, but in case pure realism is what you're looking for, a threshold of 0.0 is the way to go. Oh, and at 18:21 blending using mix is the more nautral looking and realistic approach where you use a very, very small mix coefficient for the bloom texture. Edit. The reason why that approach is more realistic is because it effectively ensures energy conservation.
How small of a mix coefficient would you say is proper? Like, numbers? I'm playing around with it in my engine as well with my bloom, so I'm curious what you think
@@vaanidel2117 Very much depends on the style you're going for (clean lens or not, surrounding air humidity etc.). Also, you may want yo mix in a bit extra to fake atmospheric scatter if you do not have volumetric lighting calculations preset, while having lower value if you do. But generally around 0.00005-0.0002 is what I would go for.
22:50 -- That's exactly the reason. Since you were looking at URP (previously called LWRP), it is meant to have backwards compatibility for older hardware. It's the same reason that the terrain doesn't do indirect rendering in URP. HDRP is a different story, though. It actually is targeting newer hardware. Also, some platforms like VROS didn't yet support Vulkan in 2020.x or even OpenGL ES 3.1, so compute was not supported even though the hardware itself could do it.
Absolutely fantastic video! I am implementing my own Vulkan based game engine and thought bloom had something to do with fragment shader lighting! Didn't know it was such a complex effect...
Excellent medium-high level view of bloom! AFAIK you are right in that Unity doesn't use compute shaders for calculating bloom to support older hardware. I'm not sure why they don't implement a compute version and switch the implementation by querying the features of the GPU. They could easily do it since the logic for bloom exists in separate source files they could just link to. I think any modern engine should be 100% compute when it comes to post effects and I'm glad to see that is the route you took.
15:02 separating the blurring in two passes actually makes it way more efficient. It can't be done with any filter kernel, only ones that are "separable", this is because the construction of these kernels is the convolution of a vertical and a horizontal kernel (k = kx * ky, where the "*" symbol represents a convolution). Since convolutions are associative, f * k = f * (kx * ky) = (f * kx) * ky (where f is the function or image). Doing this is mathematically equivalent, but has the free advantage of requiring way less operations. Lets say the image is N by N and the kernel m by m, the normal, non separable convolution has a time complexity of O(N^2 * m^2) (now I'm using "*" as a regular product). But by doing it in two passes, you get O(N^2 * m). Doesn't seem like much, but it's now linear with respect to the kernel radius instead of quadratic, which will be really noticiable the bigger the kernel gets. Edit: forgot to mention that this is for two dimensional convolutions, with higher dimensions the benefit is even grater (like in 3D, as in a color image). You go from O(N^d * m^d) to O(N^d * m), where d is the number of dimensions
Hey Man!! Awwweesommmeee video!!! Hats off to you!! Last year I learnt a lot of new things about C++ from your series and subscribed to your channel after that. After that I found a bit of change of style in several videos, which was not to my taste. But this video was in the same "fun to watch" and still "providing so much new information" zone. So glad to have you back! Lots of love and appreciation! :)
Great vid! There's one bloom effect I really like that was in Call of Duty Black Ops 1, where the bloom size is separated into X and Y axes (they stretched it out vertically quite often, one example is in the main menu), and I haven't seen it replicated in other games that often, I think it's a super neat artistic tool! Would love to replicate it for my own game.
You might be thinking of either anamorphic bokeh, which is a depth of field effect simulating fancy film lenses, or the anamorphic lens flare JJ Abrams style, which is a camera artifact simulating misused fancy film lenses when exposed to too much light, similar to bloom.
There are many reasons why screen pass effects are still done in PS rather than CS. If nothing specific to compute is being used (sharedgroup mem or async), PS is mostly faster than CS, at least in my experience working with GCN arch. One of the main reason is that PS writes through ROPs (which has an orthogonal cache to L1/L2) while CS writes through cached memory, so the CS execution is way more sensible to cache coherency.
Yep, but there are ways to improve cache coherency in compute through "thread group swizzling" or "lane remapping" (NVIDIA calls it thread group swizzling, AMD calls it lane remapping, both are basically the same thing done in different ways), which basically alters your sampling coordinates for looking up textures to improve cache throughput by making texture accesses more spatially coherent. There's a few different ways of doing it, you could just use tiles (NVIDIA's thread group ID swizzling blog post uses tiles), you could use a Morton-Z curve, or you could use a Hilberts curve, but ultimately they all do the same thing. In fact, it seems like at least NVIDIA is investigating this lately on Ampere (probably Turing and Pascal, too), as I've noticed that some workloads where PS would outperform CS have actually switched to having CS outperform PS, and the only thing I can think of is the driver's making this same optimisation.
I'd so love more of the C++ series, especially videos on more complex stuff, any plans on updates there Sir, you're *the* best source for C++, and I don't say it lightly. Your educational videos helped me a lot 🎩
There are a 3 minor technical issues: A bright light does not become white but rather most light-sources emit light of a wide spectrum and at high enough intensities even the lower colors are so bright that it appears white. An object that would emit 1 pure color would not appear white (at least not until it is bright enough to damage your eyes near instantly). low pressure sodium lamps for example still look orange even when they are already blindingly bright. And bloom is not a singular effect nor limited to cameras. Imperfection on the lens are the major contributor to bloom on photos, on older analog film there was also the element of scattering inside the film-material it self (which gives it a very distinct look), but our eyes also are not perfect and scattering of light in the air and from particles creates that effect as well. And lastly downsampling and adding the images together is the same as blurring the image to various degrees and adding it back together - you could even do that in a single pass with a large enough kernel. But by downsampling you are saving a looot on computational power while sacrificing nearly not quality despite the simple (fast) linear interpolation. if you use the first bloom-tutorial and added 3-4 more blur-passes it would look rather similar in terms of its effect (maybe try it with your hazel).
This is great. Even if you did not give us diffs or full code it is damn clear what and especialy how stuff goes on under the hood. Thank you! Personally I'm looking forward to the game engine series, but into 3D rendering, not with ImGui stuff.
One of your greatest videos, loved the unity reverse engineering. HDRP (AA+ render pipeline, higher fidelity/graphics, focused on compute capable powerful devices) is also worth reverse engineering for another feature :D
Would be interesting to see water rendering, e.g. water puddles and rain. ;) There seems to be a lot out there regarding ocean and river rendering, but few things when it comes to water puddles etc.
Hope you all enjoyed the video, let me know if you want to see more like this one! ❤️ HUGE thank you to Morning Brew for keeping my juice knowledge relevant and for allowing me to spend so much time working on this video! Sign up for free here: cen.yt/mbthecherno
This is actually the best format you've tried so far.
I like it a lot.
first 30 seconds got me hooked
i think this is a nice format
Really enjoyed it, I'll look forward for other videos like this
Yeah, I really enjoyed it and it was really helpful for me because I just implemented bloom myself but wasn't particularly pleased with the results I was getting after following some tutorials. Would definitely like seeing more videos of this kind. ❤
Whenever i feel overconfident about my code, this man humbles me down
lmao this message is perfect with that pfp
I was feeling like a software engineer after printing sum of two digits. I came to this channel to get humble. We are bros.
Wow excellent video! I never thought about the inner workings of Bloom, I learned a lot, thanks!
Whats up checkmark
@@michmich6645 verified account. Code Monkey has a lot of good Unity content.
Yeah no problem
i got ur ad in this video 👌
Wow, Unity boss is here!
Great video Cherno!
Hello, Dani!
Is He Still Alive ?
I Thought He Was Dead
Was playing MUCK, why don't you make the game a bit easier?
Why Don't You Try And Make A Game Without An Engine(Or You Can't Do That) :)
10:17 OMG A freaking RENDERING COURSE. Can't wait
No way I missed that thsnks
The ultimate channel for learning about game engine I came for learning C++ but stayed for the Engine
Hey, I'm trying to learn but get confused with terms like texture and bump maps etc? Do you recommend any playlist from the cherno?
Is this engine petrol or diesel variant?
@@sanjayshorey4225 electrical engine, nvidia variant. run with electricity from shiny pikachu
One of the best videos you've made cherno. So comprehensive. I wish the rendering course will be full of that stuff. Keep it up.
this
I actually used the Bloom tutorial from learnopengl and always wondered why it looked so bad. I've always though bloom was just a very simple two-pass post-processing effect and now I finally see how wrong I was. Thank you so much for making this video!
Hey! I like your videos. I guess you used that learnopengl Bloom for the sun in your gravity simulator? It would be interesting if you could try to implement this bloom effect and make a video about it :)
@@bryanlozano1741 Hi! I'm happy to hear that! I did indeed use learnopengl for the bloom in my gravity simulator. If I ever come back to that project in the future, I will probably improve the bloom effect, but I wouldn't make a dedicated video about it (because this one exists) but it could be part of a third video in the gravity simulator series.
I loved the format of this one Cherno. Very informative and a joy to watch. Thank you.
This was an awesome style of video dude! I'd love to see more stuff like this :)
I quite liked the effort poured into this one! The format and the explainations were really neat.
This new style of video is GREAT!
Great video! I especially liked that you referenced the CoD presentation. However I have a small nitpick with the implementation: bloom should not be added to the scene color, as adding increases the brightness of the image. This way the bloom magically creates energy out of thin air, which is at odds with energy conservation. An alternative is to lerp the images instead, the interpolation factor can be used to control the strength of the effect. Apart from being energy conserving this has two benefits: firstly the images with and without bloom will be similar in terms of overall brightness. Secondly the thresholding can be removed, which results in a more natural effect. The latter is also mentioned in Jimenez's presentation.
I have a small nitpick with your nitpick: Provided that the adding occurs before the tone mapping, or that tone mapping handles it correctly, no energy is created out of nothing, since tone mapping, a.k.a. crushing the range, destroys both energy and detail information such that you get something realistic/visually pleasing.
Lerping will actually give you a worse visual result since it's linear whereas tone mapping can have nonlinearities which better model how light/camera behave.
And lastly, a game engine's job is to fool the eye as fast as it's possible, not to run a full physics simulation which preserves all invariants. I don't think there are any physically accurate real time game engines, they all use tricks and approximations.
@@blacklistnr1 Bloom is typically applied on top of the non-tonemapped result of the physically based lighting result so it does break the correctness of the PBR theory. Personally I'd prefer the lerp because its less of a magic number compared to having a threshold.
@@Mempo1 "Less ... magic" :)) love the reason, perfectly valid. My point was that adding a thresholded bloom before tonemapping isn't "bad" and lerping images to preserve energy isn't always visually pleasing as it can muddy gradients, as the standard RGB color space isn't uniform to our eyes, so you need some non-linearities to make it look good. By the time you're in the "what does look good to a human?" part, physical correctness falls a bit lower in your priority list.
@@blacklistnr1 Fair, I'm not sure which one of the two looks better in practice but if its recommended in the cod presentation it probably works well in production. should also consider which parameter is friendlier to artists
@@Mempo1 Oh boy, I remember my first experience with the v-ray renderer. As an artist you open settings to get rid of some noise in the scene and you get 1000 algoritms, metaparameters and choices. I can only hope that artists have it better nowadays
Need more videos like this from you for more visual effects.
This 'Bloom' video is still the undisputed greatest video on youtube, 2 years after its release.
I like your videos in general, but this was absolutely the best. So much information, so much research, great format. Perfection.
This is probably one of the better explanation of how bloom works that I've ever seen, especially with the photoshop part. Liked and subbed!
I like this new format
JK , I love this new Format
this is the kind of video i want to see. thanks cherno
1:12 overuse of the bloom effect really causes discomfort, thanks for sharing! Awesome video format, so much work, research and experience in one video.
Searched for a good bloom tutorial everywhere on the web, couldn't find any!
and the next day youtube recommends this Amazing video!
Thank you so much.
My conceptual understanding of what bloom actually does is much better now, thank you.
Wow I love this new format!
This new video format though 😳
👏👏👏 I like how you upgraded all the aspects of the video
A more clear explanation, a little bit of humor, lots of examples and analogies
Can definitely see that a lot of effort was put in these 26 minutes
This video is really great to watch, keeps things interesting while still being informative and in-depth
The production quality on this one is incredible, awesome work!
I understand it might require a big effort but I'd love more videos in this format.
I come back here every few months just to rewatch the best video on youtube :)
I knew about the down and up sampling, but the photoshop example really solidified it for me. GREAT video
I usually don't comment on videos but I think this one deserved it. Very well thought out and brilliantly presented. I hope we see more content like this in the future!
I'm not a game developer, but I am slowly getting into video making and a bit of VFX. And knowing how computers simulate bloom helps me understand how that'd work in a program like After Effects. Thanks!!
THANK YOU DUDE !! I've been doing research on bloom for a few months to implement it into my drawings and make a tutorial about it. This basically confirms all of my research. However I didn't know about the downsampling technique, thank you for sharing it.
I generally think I have a pretty good grasp on how the 3d graphics I work with are made. Even though I'm an artist, I love to see all the technicalities behind the scenes.
I learned a lot watching this, never knew it did so many passes!
The bloom in unity's HDRP starts with the threshold all the way down or something strange like that because it's "physically accurate" I can imagine it just blurs dark pixels less and bright pixels more. The gears in your head really start turning after watching something like this!
I would love to see more videos like these!
About:
lightmapping
SSAO
Voxelized effects like VXGI and VXAO
the all-new Mesh shaders
There is so much to learn and know!
This is AWESOME! These types of videos make the world better.
Amazing video! I was already aware of these bloom techniques as I did extensive dig into graphics rendering in the past, but I am sure there's a LOT of people benefiting from this right at this moment.
Also a suttle note (taken from Unreal Engine) - the most realistic approach to this is using a threshold value of 0.0. The threshold is something you use for artistic control, but in case pure realism is what you're looking for, a threshold of 0.0 is the way to go. Oh, and at 18:21 blending using mix is the more nautral looking and realistic approach where you use a very, very small mix coefficient for the bloom texture.
Edit. The reason why that approach is more realistic is because it effectively ensures energy conservation.
How small of a mix coefficient would you say is proper? Like, numbers? I'm playing around with it in my engine as well with my bloom, so I'm curious what you think
@@vaanidel2117 Very much depends on the style you're going for (clean lens or not, surrounding air humidity etc.). Also, you may want yo mix in a bit extra to fake atmospheric scatter if you do not have volumetric lighting calculations preset, while having lower value if you do. But generally around 0.00005-0.0002 is what I would go for.
@@AdriansNetlis Alright, thanks! I'll play around with my settings, then
Finally, someone have said it! Thank you! I tried the lessons and completely refuse the result in my project! I'll give it a try again!
Excellent video, the step-by-step analysis of another engine where you show each texture was the best part of it all. Thx!
Great video!! So happy to hear that a rendering course on the way!!
More of videos like this. The style is just right for learning.
22:50 -- That's exactly the reason. Since you were looking at URP (previously called LWRP), it is meant to have backwards compatibility for older hardware. It's the same reason that the terrain doesn't do indirect rendering in URP. HDRP is a different story, though. It actually is targeting newer hardware. Also, some platforms like VROS didn't yet support Vulkan in 2020.x or even OpenGL ES 3.1, so compute was not supported even though the hardware itself could do it.
Absolutely fantastic video! I am implementing my own Vulkan based game engine and thought bloom had something to do with fragment shader lighting! Didn't know it was such a complex effect...
Love this new format
Excellent medium-high level view of bloom! AFAIK you are right in that Unity doesn't use compute shaders for calculating bloom to support older hardware. I'm not sure why they don't implement a compute version and switch the implementation by querying the features of the GPU. They could easily do it since the logic for bloom exists in separate source files they could just link to. I think any modern engine should be 100% compute when it comes to post effects and I'm glad to see that is the route you took.
We asked for a Bloom tutorial, you delivered right-away. Awesome, keep it up!
The quality of this video is amazing.
I would recommend the "screen" blending mode. I like the way it overlays the bloom better, and you don't need so many blur passes
15:02 separating the blurring in two passes actually makes it way more efficient. It can't be done with any filter kernel, only ones that are "separable", this is because the construction of these kernels is the convolution of a vertical and a horizontal kernel (k = kx * ky, where the "*" symbol represents a convolution). Since convolutions are associative, f * k = f * (kx * ky) = (f * kx) * ky (where f is the function or image). Doing this is mathematically equivalent, but has the free advantage of requiring way less operations.
Lets say the image is N by N and the kernel m by m, the normal, non separable convolution has a time complexity of O(N^2 * m^2) (now I'm using "*" as a regular product). But by doing it in two passes, you get O(N^2 * m). Doesn't seem like much, but it's now linear with respect to the kernel radius instead of quadratic, which will be really noticiable the bigger the kernel gets.
Edit: forgot to mention that this is for two dimensional convolutions, with higher dimensions the benefit is even grater (like in 3D, as in a color image). You go from O(N^d * m^d) to O(N^d * m), where d is the number of dimensions
Epic intro, epic graphics, epic ad, epic humor. This video is absolutely epic! Thank you for the effort you put into these videos cherno!
Great approach to making this video. Lots of great information explained with examples
I think this is one of the best video's you've ever made! Thank you!
Please make more of this!
Hey Man!! Awwweesommmeee video!!! Hats off to you!!
Last year I learnt a lot of new things about C++ from your series and subscribed to your channel after that.
After that I found a bit of change of style in several videos, which was not to my taste.
But this video was in the same "fun to watch" and still "providing so much new information" zone.
So glad to have you back! Lots of love and appreciation! :)
Wow, this was fascinating to dig into. Thanks so much for all the details. Learned so so much from this one.
Man, that was unbelievable work to learn all the details. Excellent presentation. You did it again! Love you, keep it going!
very good explanation of the bloom effect, thank you :)
Phenomenal video, really great deep dive into the inner working of bloom, introduced in a really intuitive way. Can't wait for your course!
An excellent explanation of the bloom effect.
bloom is a subject that is quite fun to work on, not so much to look at. This video was really informative for the brain, not pleasant for the eye.
Great vid! There's one bloom effect I really like that was in Call of Duty Black Ops 1, where the bloom size is separated into X and Y axes (they stretched it out vertically quite often, one example is in the main menu), and I haven't seen it replicated in other games that often, I think it's a super neat artistic tool! Would love to replicate it for my own game.
You might be thinking of either anamorphic bokeh, which is a depth of field effect simulating fancy film lenses, or the anamorphic lens flare JJ Abrams style, which is a camera artifact simulating misused fancy film lenses when exposed to too much light, similar to bloom.
There are many reasons why screen pass effects are still done in PS rather than CS. If nothing specific to compute is being used (sharedgroup mem or async), PS is mostly faster than CS, at least in my experience working with GCN arch. One of the main reason is that PS writes through ROPs (which has an orthogonal cache to L1/L2) while CS writes through cached memory, so the CS execution is way more sensible to cache coherency.
Yep, but there are ways to improve cache coherency in compute through "thread group swizzling" or "lane remapping" (NVIDIA calls it thread group swizzling, AMD calls it lane remapping, both are basically the same thing done in different ways), which basically alters your sampling coordinates for looking up textures to improve cache throughput by making texture accesses more spatially coherent. There's a few different ways of doing it, you could just use tiles (NVIDIA's thread group ID swizzling blog post uses tiles), you could use a Morton-Z curve, or you could use a Hilberts curve, but ultimately they all do the same thing. In fact, it seems like at least NVIDIA is investigating this lately on Ampere (probably Turing and Pascal, too), as I've noticed that some workloads where PS would outperform CS have actually switched to having CS outperform PS, and the only thing I can think of is the driver's making this same optimisation.
Man, this is Fantastic!!
I love the way you explain this.
I just don't have words to appreciate.
AMAZING!
I literally can't wait for the next video
This looks amazing
Omg i cant wait for the rendering course!!
Thanks man, missed these slides. Will fix bloom in my engine :)
I love this video!
It's even in landscape mode!
that was cool and very nicely polish. I enjoy it ! Hope you enjoy making it.
This new video format is so good. Keep up with the good work man!
I'd so love more of the C++ series, especially videos on more complex stuff, any plans on updates there
Sir, you're *the* best source for C++, and I don't say it lightly. Your educational videos helped me a lot 🎩
Dope Video! I was waiting for it. Thanks!
this might be one of the most coolest youtube videos ive ever watched! hope i'll see this type of content in the future
There are a 3 minor technical issues:
A bright light does not become white but rather most light-sources emit light of a wide spectrum and at high enough intensities even the lower colors are so bright that it appears white. An object that would emit 1 pure color would not appear white (at least not until it is bright enough to damage your eyes near instantly). low pressure sodium lamps for example still look orange even when they are already blindingly bright.
And bloom is not a singular effect nor limited to cameras.
Imperfection on the lens are the major contributor to bloom on photos, on older analog film there was also the element of scattering inside the film-material it self (which gives it a very distinct look), but our eyes also are not perfect and scattering of light in the air and from particles creates that effect as well.
And lastly downsampling and adding the images together is the same as blurring the image to various degrees and adding it back together - you could even do that in a single pass with a large enough kernel. But by downsampling you are saving a looot on computational power while sacrificing nearly not quality despite the simple (fast) linear interpolation.
if you use the first bloom-tutorial and added 3-4 more blur-passes it would look rather similar in terms of its effect (maybe try it with your hazel).
Fantastic video Jan! This video style IS definitely the way forward.
Fantastic video! Well explained and structured. Learned a lot!
Been seeing your stuff in my feed a few times, is the video that's made me sub
loved this kind of content that's more scripted, focused and educational!
This was a really well put together video and really nice result! Good job!
Incredible video. Such high quality and dedication
I love this style of videos, this is awesome!
This is great. Even if you did not give us diffs or full code it is damn clear what and especialy how stuff goes on under the hood. Thank you!
Personally I'm looking forward to the game engine series, but into 3D rendering, not with ImGui stuff.
Thank you for explaining one of the effects i hate the most in video games :)
Fantastic material right here! I'm really digging this format. Great one Cherno!
this is great! thanks for putting this together!
That's a neat format, keep it up!
Best format yet
Absolutely loved this more technical video focusing on one effect.
Please do more!
I liked this new format, it's easy for my to understand
This guy is only getting better. Looks like the industry will actually start using Hazel in the future.
This is really an excellent video!
Thank you. Very well done presentation. I've been waiting for it.
One of your greatest videos, loved the unity reverse engineering. HDRP (AA+ render pipeline, higher fidelity/graphics, focused on compute capable powerful devices) is also worth reverse engineering for another feature :D
Bloom is great when subtle
This video is bloody magnificent.
Love the format! More like a video essay. Though I suppose it takes a lot more time to make than your typical style vids...
Gaussian blur uses a circular matrix to make the blue smoother, while a box blur uses a box which makes corners spread further by a ratio of sqrt(2)
Would be interesting to see water rendering, e.g. water puddles and rain. ;)
There seems to be a lot out there regarding ocean and river rendering, but few things when it comes to water puddles etc.
Puddles are just low roughness, smooth normal textures.
With this video you earned my sub. Seeing the overview of professional solutions is so uniqe, that it requires appreciation.
Hazel. You hear me UA-cam!!??! Keep the videos up, I'll be joining the community soon
Holy shit this is mindblowing! Never expected such a quintessential post-processing effect to work like this :D
a few minutes watched and I already loved the video
That there is such a difference between the amd and nvidia card is suprising to me, since they are both competetive in overall performance