Bloom.
HTML-код
- Опубликовано: 4 июл 2024
- Become smarter in 5 minutes by signing up for free today: cen.yt/mbthecherno - Thanks to Morning Brew for sponsoring today’s video! ❤️
Patreon ► / thecherno
Instagram ► / thecherno
Twitter ► / thecherno
Discord ► / discord
Thumbnail was rendered in Hazel.
SOURCES:
📈 An example of CRT bloom (this video shows two types of bloom!): • An example of CRT bloom
📈 Learn OpenGL Bloom tutorial: learnopengl.com/Advanced-Ligh...
📈 Sascha Willems Vulkan examples: github.com/SaschaWillems/Vulkan
📈 Next Generation Post Processing In Call of Duty: Advanced Warfare: www.iryoku.com/next-generation...
📈 Unity's bloom shader: github.com/Unity-Technologies...
TIMESTAMPS:
0:00 - What is bloom?
3:00 - Creating bloom in Photoshop
6:22 - Bloom tutorials
10:30 - How bloom works in Unity
19:32 - Bloom in Call of Duty: Advanced Warfare
22:34 - Bloom in Hazel
This video is sponsored by Morning Brew.
#Hazel
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
Loved the format of this video. Well done.
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
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.
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) :)
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!
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.
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.
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
I loved the format of this one Cherno. Very informative and a joy to watch. Thank you.
This new style of video is GREAT!
I like this new format
JK , I love this new Format
This new video format though 😳
I like your videos in general, but this was absolutely the best. So much information, so much research, great format. Perfection.
this is the kind of video i want to see. thanks cherno
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!
The production quality on this one is incredible, awesome work!
This video is really great to watch, keeps things interesting while still being informative and in-depth
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.
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.
We asked for a Bloom tutorial, you delivered right-away. Awesome, keep it up!
Phenomenal video, really great deep dive into the inner working of bloom, introduced in a really intuitive way. Can't wait for your course!
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! :)
I understand it might require a big effort but I'd love more videos in this format.
Wow I love this new format!
Man, that was unbelievable work to learn all the details. Excellent presentation. You did it again! Love you, keep it going!
Great video!! So happy to hear that a rendering course on the way!!
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 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!
Excellent video, the step-by-step analysis of another engine where you show each texture was the best part of it all. Thx!
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.
this might be one of the most coolest youtube videos ive ever watched! hope i'll see this type of content in the future
This new video format is so good. Keep up with the good work man!
Fantastic video Jan! This video style IS definitely the way forward.
Epic intro, epic graphics, epic ad, epic humor. This video is absolutely epic! Thank you for the effort you put into these videos cherno!
This is AWESOME! These types of videos make the world better.
I think this is one of the best video's you've ever made! Thank you!
Fantastic material right here! I'm really digging this format. Great one Cherno!
Great approach to making this video. Lots of great information explained with examples
Wow, this was fascinating to dig into. Thanks so much for all the details. Learned so so much from this one.
More of videos like this. The style is just right for learning.
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
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.
This was a really well put together video and really nice result! Good job!
👏👏👏 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 literally can't wait for the next video
This looks amazing
Man, this is Fantastic!!
I love the way you explain this.
I just don't have words to appreciate.
AMAZING!
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...
Dope Video! I was waiting for it. Thanks!
My conceptual understanding of what bloom actually does is much better now, thank you.
that was cool and very nicely polish. I enjoy it ! Hope you enjoy making it.
Love this new format
I love this style of videos, this is awesome!
That's a neat format, keep it up!
Please make more of this!
Been seeing your stuff in my feed a few times, is the video that's made me sub
Fantastic video! Well explained and structured. Learned a lot!
Incredible video. Such high quality and dedication
very good explanation of the bloom effect, thank you :)
I love this video!
It's even in landscape mode!
Thank you. Very well done presentation. I've been waiting for it.
Incredible video Cherno, thank you, will be waiting for that excellent sounding renderer course.
Omg i cant wait for the rendering course!!
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!
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.
Absolutely loved this more technical video focusing on one effect.
Please do more!
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!
The quality of this video is amazing.
this is great! thanks for putting this together!
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'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!!
Wow, I really enjoyed the video!! Great work!
An excellent explanation of the bloom effect.
Thanks man, missed these slides. Will fix bloom in my engine :)
Awesome video! Thank you so much
Best format yet
Great video! Very well put together
This is really an excellent video!
This is so awesome!! Thank you for this!!!
Love the format! More like a video essay. Though I suppose it takes a lot more time to make than your typical style vids...
Awesome video, would love to see more videos like this
Really great explanation. Love it!
This video is bloody magnificent.
This is a really great video!
My goodness, I really love the world of computer graphics!
It can just be really frustrating some time, y'know as many things are not very well documented.
This was fantastic thank you
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.
I liked this new format, it's easy for my to understand
This is a great video, thank you for making it
One of your best videos.
Great video, waiting for more
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
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 🎩
Thank you for this great information.
one of your best videos!
Very nice explanation thank you
really cool video! thanks!
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