How Big Budget AAA Games Render Bloom

  Рет қаралды 104,437

SimonDev

SimonDev

Жыл бұрын

Trying out some of the latest approaches to Bloom used in Unity/Unreal.
🛒 Recommended books (on Amazon): www.amazon.com/hz/wishlist/ls...
❤️ Support me on Patreon: / simondevyt
🌍 My Gamedev Courses: simondev.teachable.com/
Disclaimer: Commission is earned from qualifying purchases on Amazon links.
Follow me on:
Instagram: / beer_and_code
Twitter: / iced_coffee_dev
In this video, I tried going through some of the modern approaches to Bloom, explained a bit of the history, and where it may be going in the future. I walk through Kawase's Blur Filter, box and gaussian blurs and how to do separable filters, and explore the fourier transform and convolution bloom.
Referenced Papers/Talks:
The Fast Fourier Transform (FFT): Most Ingenious Algorithm Ever?: • The Fast Fourier Trans...
The Remarkable Story Behind The Most Important Algorithm Of All Time: • The Remarkable Story B...
www.iryoku.com/next-generation...
www.chrisoat.com/papers/Oat-S...
de45xmedrsdbp.cloudfront.net/...

Пікірлер: 261
@simondev758
@simondev758 Жыл бұрын
Patrons can now vote for the next video! Thank you for your support. ❤ Support me on Patreon: www.patreon.com/simondevyt 🌍 Live Demo + Courses: simondev.io
@NNOTM
@NNOTM Жыл бұрын
I'm almost surprised there isn't just a hardware implementation for FFT in modern GPUs, it seems like it would be useful for many things
@user-sl6gn1ss8p
@user-sl6gn1ss8p Жыл бұрын
I bet a whole lot of new applications would emerge too
@SaHaRaSquad
@SaHaRaSquad Жыл бұрын
There probably just hasn't been a big market for it yet. Recent new features like AI acceleration gain more possible applications every day, faster raytracing is great for the gaming industry, but doing many FFTs in parallel is probably not a common use in the mass market. But maybe it'll just take a new shiny hammer for developers to look for more nails, if it can help with blur & bloom filters I'm certain people will find more clever applications for it.
@user-sl6gn1ss8p
@user-sl6gn1ss8p Жыл бұрын
​@@SaHaRaSquad I don't think the point would be to make many FFTs in parallel, but just to make FFTs of decently sized data *really* fast. Changing representation through fourier transform is a really powerful tool in general, it crops up from these bloom effects all the way to quantum mechanics. As mentioned in the video, it can transform convolutions (n to n^2 complexity in kernel size) into multiplications (kernel size independent), so I'd definitely bet if transforming between representations was really fast people would find all sorts of uses for it. That being said, FFT as an algorithm is already pretty crazy as far as I know and there are parallelized versions which are in fact ran on GPUs (say, using cuda), so maybe there's just not that much to be gained by going hardware level, compared to the costs.
@Diamonddrake
@Diamonddrake Жыл бұрын
nvidia provides an fft library that runs on cuda cores called cuFFT aimed at industry for signal processing and computational physics. it's claimed to be highly optimized.
@Xaymar
@Xaymar Жыл бұрын
While not hardware implemented, both cuFFT and vkFFT are extremely fast on common hardware.
@FunSizedDragon
@FunSizedDragon Жыл бұрын
"Back in the day, we developers thought it looked awesome and so next-gen, and it kinda did, so how about shut up." Amazing. Thank you for all the info, btw!
@hollyy238
@hollyy238 Жыл бұрын
Using FFT for blurring and bloom is really awesome, I'm definitely going to play with that
@colonthree
@colonthree Жыл бұрын
That's the most interesting use of Final Fantasy Tactics I have heard. ;w;
@dexio85
@dexio85 Жыл бұрын
FFT is ... well fast. There's not much of a special hardware needed honestly. You can do full screen FFT bloom in under 100us.
@Acerola_t
@Acerola_t Жыл бұрын
using the fft for image processing is really interesting, something I will definitely look into one pedantic note though is that the karis average is actually for suppressing bright pixels not preserving them. The karis average helps with fireflies and shimmering artifacts by preventing really high hdr values from overwhelming the ultimately very small sample set of pixels.
@luukvanoijen7082
@luukvanoijen7082 Жыл бұрын
hey its the guy with all the cool ffxiv shaders!!
@simondev758
@simondev758 Жыл бұрын
Oupelaï, gotta check things over a bit more thoroughly. Btw, fan of your channel :)
@Acerola_t
@Acerola_t Жыл бұрын
​@@simondev758 Thanks! It's a strange coincidence that I am also bringing up the karis average in my next video lol, I thought it preserved bright pixels as well but when I implemented it I got the exact opposite results that I wanted
@simondev758
@simondev758 Жыл бұрын
@@Acerola_t Totally admit I glanced at the code and made a guess at what it did without thoroughly checking heh, glad to see I'm not the only one
@murtileyto
@murtileyto Жыл бұрын
You can use fft to remove the repeating paper texture from old scanned pictures or to remove halftones and ıt WORKS
@TorutheRedFox
@TorutheRedFox Жыл бұрын
i have a feeling that some of the intense color grading and bloom seen in the 2000s was at least partly inspired by Need for Speed Most Wanted without taking into account why they did it and what look they were trying to emulate (a stylized bleach bypass)
@Rundik
@Rundik Жыл бұрын
need for speed also known as bloom observations with cars
@zdspider6778
@zdspider6778 Жыл бұрын
NFS MW came out in 2005. Probably the "bloomiest" game I've ever played was Prince of Persia: The Sands of Time (2003). 2 years before NFS MW.
@TorutheRedFox
@TorutheRedFox Жыл бұрын
@@Rundik here's the thing MW doesn't have much bloom at all the game's look is its attempt to emulate bleach bypass (which it actually does surprisingly well, on the 360 at least) which it also color grades to give it the brown look
@c1nnabxnny153
@c1nnabxnny153 Жыл бұрын
I love your explanations, they're so clear and concise, it really helps me understand these complex topics better even without a formal education. thanks so much for what you do :)
@ProjectPhysX
@ProjectPhysX Жыл бұрын
FFTs are super powerful. They are commonly used in signal processing to do essentially the opposite of bloom: remove artifacts of the sensor. This reverse process, so-called deconvolution, can for example remove the 6-star artifacts on the JWST images.
@Bkdasher
@Bkdasher 3 ай бұрын
Love your work. Cool to see you here too
@MakotoIchinose
@MakotoIchinose Жыл бұрын
Fun fact: Unreal Engine 5 make Convolution Bloom much cheaper by simply downsampling the source frame to 1/4th of the resolution, essentially cutting down the load by 93.75%. You can toggle back to the half resolution to get higher accuracy bloom for cinematic quality.
@simondev758
@simondev758 Жыл бұрын
Yeah I kinda figured they must do something along those lines. For the video, I did the same thing, tried at both 1/2 and 1/4 resolution.
@parasharkchari
@parasharkchari Жыл бұрын
FFT-based glare is the same method I implemented for Megamind. It turns out that Fraunhofer diffraction through an aperture is essentially equivalent to an FFT. With that and making sure you rescale appropriately for each wavelength of light, you get the point spread function, which you can inverse-FFT and use to convolve. But since Fraunhofer diffraction is equivalent to an FFT anyway, the inverse FFT just gets you back to the simulation of your aperture, and you can just use that as your convolution filter... This means you can simulate the bloom based on a lens or even a human eye as long as you can adequately simulate the aperture. Yes Fresnel diffraction is more appropriate for an eye because of the short distance between the pupil and retina, but it's still pretty convincing in producing a glare that looks like glare you'd personally experience through your own eyes. It would be cool to see FFT blur be practical in realtime... It is just plain simple and generic in the same way that ray tracing is.
@simondev758
@simondev758 Жыл бұрын
Super cool, I loved that movie! I feel like we're right on the edge of using it in realtime in games. I didn't profile the quarter res fft, but it seemed pretty quick (handwavy).
@DanielSavageOnGooglePlus
@DanielSavageOnGooglePlus Жыл бұрын
If the FFT is cheap enough, I'd love to try animating or dynamically changing the bloom shape one the fly.
@simondev758
@simondev758 Жыл бұрын
I downsampled to 1/4 resolution and did exactly that, the last part of the video, the bloom shape is being programatically built, and transformed every frame..
@uwirl4338
@uwirl4338 3 ай бұрын
@@simondev758 What FFT implementation are you using? How much of the frame time it takes up?
@DartVonGrell
@DartVonGrell Жыл бұрын
13:11 A few more iterations in hardware and a single PC will use more electricity than everything else in the house combined. 💀
@damiemcrea9953
@damiemcrea9953 Жыл бұрын
seriously perfect video, I cannot say enough how refreshing the format, tone, and pacing was. thank you
@csaki01
@csaki01 Жыл бұрын
This is an insane amount of info on bloom in just 13 minutes! Thanks to you I know there's faster and prettier ways of doing bloom and I might implement them in the future!
@starlederer
@starlederer Жыл бұрын
Wow, the implementation of the convolution bloom is amazing
@stephaneduhamel7706
@stephaneduhamel7706 Жыл бұрын
There is a correct way of doing bloom, it's just way too computationally expensive to do in real time. The idea is to get the result of the diffraction of light around the aperture of th light capturing device ( eye or camera). The "blur and down sample" approach from advanced warfare was found to give results very close to the 1/d³ falloff of a real airy spot, which is the bloom you obtain with a round aperture at the focal point. The fact that it gets faster due to downsampling is a nice side-effect.
@simondev758
@simondev758 Жыл бұрын
Agreed. I wasn't trying to imply the effect doesn't have a real-world basis, but that the old-way of doing it had many ways of going about it. The context was that older games used to do it a bunch of ways.
@nstryder-music
@nstryder-music Жыл бұрын
your vids are a blessing, and the demonstration of convolution bloom was especially eye-opening
@ustymukhman613
@ustymukhman613 Жыл бұрын
Please keep going with these topics (more post-processing)! It's always a good day when you release on of your videos! 🙂
@spore124
@spore124 Жыл бұрын
The FFT is a heavy operation but it really frontloads your computational work as so many involved image manipulations can be done incredibly cheaply once you do get that transform.
@JuanRenoldi
@JuanRenoldi Жыл бұрын
One of the few channels I actually get exited when new content is released!
@daniel_grindforce994
@daniel_grindforce994 Жыл бұрын
HE's BACK! You are a legend my friend. You helped me so much along the way, thank you.
@Johnnyonflame
@Johnnyonflame 11 ай бұрын
Incredible video, thorough and cohesive, very easy to understand visualization material, while also presenting a pretty complete analysis on how and why the technique advanced throughout the years. It might've been interesting to explain why bilinear taps were used, despite it being "obvious" for people already in the know.
@nicrule4424
@nicrule4424 Жыл бұрын
Well where was this video 2 years ago when I needed it? I think the shader I ended up using was Unity Style, so it’s nice to heave a clear explanation of how it works. Thanks!
@lllXchrisXlll
@lllXchrisXlll Жыл бұрын
What an excellent video! Super clear description of bloom.
@hamzzashaffi
@hamzzashaffi Жыл бұрын
Thanks for sharing. We usually take it for granted and cramp bloom to max hehe
@cosmotect
@cosmotect Жыл бұрын
Sick, I love the deep dives
@Graype07
@Graype07 Жыл бұрын
As always great video! The FFT stuff is insane
@puppergump4117
@puppergump4117 Жыл бұрын
I've seen videos on the fourier transform but only now do I realize how awesome it is.
@feitingschatten1
@feitingschatten1 Жыл бұрын
I'm glad you're still teaching. Industry massively lacking in content for anything beyond the Unity scene-graph, unless you dive into shaders... which I see you have a course now.
@MCSteve_
@MCSteve_ Жыл бұрын
AngeTheGreat has an amazing “What is bloom” video from a photo real perspective. He makes many great simulation videos and in this one it goes into how Fraunhofer Diffraction is simulated for rendering, which is representative to this 2D Fourier Transform operation!
@S41L0R
@S41L0R Жыл бұрын
8:04 that grid is a Hermann grid illusion!
@carterearles9528
@carterearles9528 Жыл бұрын
“Until next time, cheers” … Thought I was watching Sebastian for a sec 😂
@simondev758
@simondev758 Жыл бұрын
That is high praise, his videos are really good.
@Stnaire
@Stnaire Жыл бұрын
You're the MadSeason of game programming, so relaxing to hear.
@PlayRusted
@PlayRusted Жыл бұрын
Great video! Very informative and interesting.
@herlantmajor5883
@herlantmajor5883 Жыл бұрын
Those videos are just amazing for a graphics programmer like me, keep it up!
@robertwallace5498
@robertwallace5498 Жыл бұрын
Dude you are a god, I love watching your videos and learning from you
@gloverelaxis
@gloverelaxis Жыл бұрын
i absolutely love your choice of program in the first terminal animation
@simondev758
@simondev758 Жыл бұрын
I actually wrote a tiny python program to generate the output, lol
@user-xe6wc8yt7u
@user-xe6wc8yt7u Жыл бұрын
I was starving for your videos. Your way of explaining is so exciting and concise. Sometimes I think I would try to get a job in Google after watching this :). Please, keep going.
@_tjoeaon
@_tjoeaon Жыл бұрын
This one was great, thnx so much!
@DanielMo0
@DanielMo0 2 ай бұрын
Great video as always. Can you imagine to make a video about half/quater resolution bilateral upsampling techniques? I think rendering stuff into low resoltuion passes became super important in the last years but the culprit always lays in a proper upsampling step pass imo (i think of half/quater res SSR, AO, Volumetrics etc. to full-res upsampling while preserving details from full-res pass). Thanks anyway
@Skeffles
@Skeffles Жыл бұрын
Great video again Simon! Bloom is awesome and it's great to hear about how the different engines implement it.
@richardericlope3341
@richardericlope3341 Жыл бұрын
Wow! Nice vid! Still remember trying many different methods of blooming during the fixed function pipeline days. Had to use a downsampled view so that we get 60 fps using a software blur. Then just combine them with additive blend. Thresholding was also done by averaging RGB channels together then checking if they pass the threshold. All these were done in a 1/2 and 1/4 downsampled view so the effect wasn't as good as what we get these days with shaders. There was also a pure hardware technique(making use of hardware downsampling for free) but you don't get thesholds and the result was blocky at best. Or maybe it was just my 64 mb nvidia mx400.
@simondev758
@simondev758 Жыл бұрын
I was on the tail end of fixed function, was always kinda fun fiddling with different tevstages and stuff like that, trying to coax an effect out of the hardware. Like a puzzle.
@ChaosAndAnarchy
@ChaosAndAnarchy Жыл бұрын
Great break-down. I had to figure all of this out the hard way/over a long period of time heh
@simondev758
@simondev758 Жыл бұрын
All us old timers did
@ChaosAndAnarchy
@ChaosAndAnarchy Жыл бұрын
@@simondev758 word haha
@izzynab332
@izzynab332 Жыл бұрын
I do believe you are one of the best channels here :)
@kipchickensout
@kipchickensout Жыл бұрын
My technical understanding doesn't get everything ofc but nice video! Now let me go into bed, replay the video and close my eyes
@jhhoward
@jhhoward Жыл бұрын
Great video! I think some of the better implementations I saw of 2000s era bloom was to use the alpha channel in the frame buffer to mask areas that should glow like lights or neon signs. That way it prevented the thresholding problem of causing white objects to glow unintentionally.
@simondev758
@simondev758 Жыл бұрын
Definitely! In fact, I played around with that exact method back on XBox 360/PS3
@silvestersabathiel2589
@silvestersabathiel2589 Жыл бұрын
Looking forward to the moment bloom-effects in three-js are doable in a simple manner. It is such a powerful and common tool, so hope it will be possible soon :)
@kebman
@kebman Жыл бұрын
Honestly tho, the bloom in first seen in Unreal was ... _unreal!_ In a good way. Playing that game for the first time was sooooo epic! It was so much cool stuff to discover, and you completely forgot you were in a game. Instead you were in another world.
@photonpotato2490
@photonpotato2490 Жыл бұрын
Hey Man, I really enjoy your videos. Always super exciting to see on my recommended. Truly some gems of videos in KZbin. Just a suggestion take it or leave it: Way out of my domain but I was looking into volumetric lighting in smoke and stuff. I was thinking it would be a cool challenge to try to make some realistic smoke (not fog, I mean visible smoke that drifts from a point like a particle system) that interacts well with light. Either with volumetrics, particles, or other techniques. Something I’ve been wondering about for a while.
@simondev758
@simondev758 Жыл бұрын
The cloud stuff from the previous video would be a good starting point for that
@photonpotato2490
@photonpotato2490 Жыл бұрын
@@simondev758 That's true. I know you work a lot in java, would implementing that into an engine like unity or unreal be just using shaders? (I'm pretty new to vfx and shaders and didnt know how this would fit into prexisting game engines)
@simondev758
@simondev758 Жыл бұрын
@@photonpotato2490 I mostly doing JS because it's convenient, but I'm actually a C++ dev. Implementing these into an existing engine requires both writing some client-side code and the shaders, so it's more involved. You've gotta know a bit more about your target engine to integrate the effects.
@photonpotato2490
@photonpotato2490 Жыл бұрын
@@simondev758 Ok, I'll look more into that. I also was wondering whether knowledge from your shader course in GLSL will translate over to HLSL as well (because I'm trying to learn HLSL shaders in Unity). Thanks so much for the help man! Looking forward to your next video.
@Fredgast6
@Fredgast6 Жыл бұрын
Congrats with 100k!
@simondev758
@simondev758 Жыл бұрын
Thanks!
@structurescience
@structurescience Жыл бұрын
Thank you, that was really interesting. I use a free Java gauss filter to bloom and it takes 1 second to render a 1/24th of a second frame. I reeeeeeeally need to speed that baby up ...
@Rssks
@Rssks Жыл бұрын
10:30 Fourier Transformation has huge implications trough out many fields, once you get a hang of it you will start to see/use it everywhere :)
@UD503J
@UD503J Жыл бұрын
Came for Oyster smiling, stayed for the rest of the explanation.
@daeldir
@daeldir Жыл бұрын
Regarding the last part about using a Fourier transform, @angethegreat did a great video going into more detail for those interested (video titled “What is bloom? (And how is it simulated?)”). His channel is also focused on programming, but he goes a little into the physics of why we use a Fourier transform, which is very informative (well, I was satisfied with what I learned at least). (I hope it’s okay to mention other channels in the comments, but given that you shared links to videos about the FFT yourself, I’m going to assume that sharing is caring).
@simondev758
@simondev758 Жыл бұрын
Neat, I'll check out their vid
@mohammedissam3651
@mohammedissam3651 Жыл бұрын
Warframe came to my mind when blooming effect mentioned And you just pulled some footage of it 😝🤣🤣🤣
@simondev758
@simondev758 Жыл бұрын
I just googled for terrible bloom and picked a few heh
@NeoShameMan
@NeoShameMan Жыл бұрын
Excellent video
@zdspider6778
@zdspider6778 Жыл бұрын
5:13 The one on the right is a game called "Syndicate" released in 2012, not "mid-2000's". But yeah, they really cranked that shit up. 😆
@simondev758
@simondev758 Жыл бұрын
Hah, I just went on Google images and searched for too much bloom, and picked some awful ones.
@Seedonator
@Seedonator Жыл бұрын
damn so you could recreate astigmatism with that convolution bloom method
@kebman
@kebman Жыл бұрын
I really like this. Probably will never use it. Kinda of like watching a car mechanic fix a car. It's calming. And I can give some comments, like, "hey nice bloom tut there!" But that's about it! :D
@soonts
@soonts Жыл бұрын
Modern GPUs contain fast fixed-function hardware to compute some version of FFT, and inverse too. That hardware is JPEG, h.264 and h.265 codecs. I wonder would it be possible to abuse these pieces of hardware for the bloom?
@simondev758
@simondev758 Жыл бұрын
Interesting avenue to explore
@ns4k_tv
@ns4k_tv Жыл бұрын
Oh my god! The amount of valuable information i learned in just 13 mins is just amazing! Thanks Simon!
@trainee5471
@trainee5471 3 ай бұрын
Streaking is achievable by attaching by attaching a billboard sprite to the light source. It is not always gonna be accurate to the light source those streaks are supposed to represent, but it does its job well enough for 80% of light sources. One of the reasons why I love Unreal 1 and most of UE1 games is those billboard flares. Though if we are on the path of moving away from rasterization tricks and towards more accurate models, I welcome the FFT approach as something representing the real life better
@terracoon9882
@terracoon9882 Жыл бұрын
this is getting a very good channel
@simondev758
@simondev758 Жыл бұрын
ty! Trying to up the quality of the videos, fewer but more time spent on them heh
@friendly_alkali
@friendly_alkali Жыл бұрын
i'm curious if there's some way to (mathematically/arithmetically) simplify the fourier -> multiply by specific frequency-space texture -> inverse process to maybe make it a little faster for some specific filter. especially when you're multiplying by 0 in a bunch of places, but sadly i do not actually have to math chops to poke at that any time soon.
@MiTheMer
@MiTheMer Жыл бұрын
Very interesting video! Some actual numbers on the convolution bloom would have been great. Is that currently feasible at all in games, or not?
@simondev758
@simondev758 Жыл бұрын
My implementation isn't production ready, so I'm hesitant to profile it. Doing it at 1/4 resolution seemed to be plenty fast though, and still looked good (handwavy).
@xwaazes6375
@xwaazes6375 2 ай бұрын
I wonder if you can use the VK_KHR_cooperative_matrix extension or HLSL ShaderModel 6.0 to speed up FFT transform.
@theragekit3983
@theragekit3983 Жыл бұрын
Huge thanks
@raumerherr1057
@raumerherr1057 Жыл бұрын
very interesting thank you
@Xeraclom14
@Xeraclom14 Жыл бұрын
Omg I love how fft bloom looks
@amadeuszittel8910
@amadeuszittel8910 Жыл бұрын
Hello, I really love your channel and your content. I have enrolled in your shader course and I really enjoy it! I have one question that is bothering me for quite some time when I watch your videos And I really mean no offense by it! Do you use a computer voice when recording your videos? I guess in this time and age it must not be unlikley. Either way, thank you for your educational efforts!
@simondev758
@simondev758 Жыл бұрын
Hah, no offense taken :) Nope, 100% me, I'm pretty monotone when I speak.
@amadeuszittel8910
@amadeuszittel8910 Жыл бұрын
@@simondev758 Thank you! That puts my mind to rest :D
@GregoryTheGr8ster
@GregoryTheGr8ster Жыл бұрын
Now it is springtime, and everything is in bloom! Was TRON was the first movie to do the bloom effect? What algorithm did Disney use, I wonder?
@GregoryTheGr8ster
@GregoryTheGr8ster Жыл бұрын
No, wait a minute! What about the light sabres and blaster pistols and rocket engines in Star Wars? That was the first movie to blow our minds with bloom, not TRON.
@VoidloniXaarii
@VoidloniXaarii Жыл бұрын
Bloom, always loved it even when everybody hated it, thanks a lot
@mki443
@mki443 Жыл бұрын
Awesome video! How does the Source2 engine handle it though? Games made with the source engine always seem so timeless (portal 2 for example), when you remove the lighting it looks very old but with lighting it still looks quite modern. I'm guessing this is partially due to suttle bloom effects but i'm not sure.
@simondev758
@simondev758 Жыл бұрын
Good question, no idea, I should go try and see if there's info around.
@randomcatdude
@randomcatdude Жыл бұрын
source1 games have pretty much no bloom actually or well, they do, but it's extremely small and weak and barely contributes to the picture at all the glow effects are achieved via simple additively-blended sprites the baked lightmaps are what make the games you're thinking of look deceptively good for their age. not sure about source 2 though. it's *probably* just a variant of one of the techniques mentioned in the vid? it does look damn good, that i can say with certainty. HL:A partially looks so realistic because of the bloom, which just feels so right and accurate to how i see it in real life, so they absolutely nailed it, whatever they did
@mki443
@mki443 Жыл бұрын
@@randomcatdude interesting, really impressive lighting for 2011 (in the case of portal 2) and games that run on modified verisons of source (like titanfall 2) also looks great. I wonder what would happen if steam ever made a source 3 engine
@randomcatdude
@randomcatdude Жыл бұрын
​@@mki443 titanfall 2 completely rips out the old source renderer and uses its own, which is overall way better. it has proper bloom, better dynamic lighting support, and even improves the baked lighting. source 2 is fairly similar in terms of improvements. also, steam is just the name of the game platform that Valve owns, it's not a company/developer.
@mki443
@mki443 Жыл бұрын
@@randomcatdude really? That's interesting, especially considering thr age of source, never expected titanfall to rip out everything (altough it is a pretty unique game in quite some ways). about the steam/valve thing, i knew that but was in a hurry writing that message
@FromLake
@FromLake 5 ай бұрын
Thank you
@monocore
@monocore Жыл бұрын
I think UE's layered thing is mainly to approach the exponentiality of light decay ergo bloom. Blurred plus'd bloom looks weird because there is no proper light decay. I think. I'm a compositor not a gamedev lol.
@cykboy3254
@cykboy3254 Жыл бұрын
perfect timing as i was planning to revamp bloom in my engine soon
@Tumbolisu
@Tumbolisu Жыл бұрын
I kinda expected a video describing the phenoma of bloom in the real world instead of a video describing how its usually implemented in video games. Knowing how it works in the real world would certainly help making it look more convincing. I turn effects like this off whenever I can, especially considering my eyes and glasses are already doing it with zero performance impact.
@simondev758
@simondev758 Жыл бұрын
I think that'd definitely be a neat follow up
@powerdude_dk
@powerdude_dk Жыл бұрын
This was awesome to hear. I've always wanted to be a game developer because you can bury yourself in making algorithms like this for seemingly simple functions.
@simondev758
@simondev758 Жыл бұрын
Yeah, the rabbit hole behind each option in the menu goes super deep heh
@adorable_yangire
@adorable_yangire Жыл бұрын
finna add the trollface to my convolution bloom effect
@GonziHere
@GonziHere Жыл бұрын
Love your content and this video, but what do you mean that there isn't a correct way of doing it? Imo you need linear space, where you could take a threshold that would be "maximal capacity of the capturing sensor", take what is over that and "bloom" it in a way that simply spreads said overflowing values around (with some loss of energy), no? (Performance aside :D ) IMO the issue is the fact that we are using blur for it, because that doesn't really capture the lightbleed effect of IRL bloom.
@simondev758
@simondev758 Жыл бұрын
Pretty sure that section was in reference to how it older games did it
@NicosLeben
@NicosLeben Жыл бұрын
I always thought games render the frames twice, with normal brightness and lower brightness (say factor 2) and then use a threshold of 50% on the darker frame to get the parts which are brighter than 100% on the normal frame to calculate the bloom. For the darker frame you could also render it in a lower resolution. 🤔
@simondev758
@simondev758 Жыл бұрын
I've never heard of that approach, feels too expensive.
@NicosLeben
@NicosLeben Жыл бұрын
@@simondev758 I haven't heard of it either. 😄But I couldn't think of any other way to create the bloom only in the places where the image was really brighter than the possible value of 255.
@TristanPopken
@TristanPopken Жыл бұрын
You don't need to render everything twice for that tough. Just get 2 FBO's and render to both of them in only one pass. However, if you are going with this approach it's probably better to just store color in HDR instead of LDR, for example 16 bit floats instead of 8 bit int's. This will take up twice the memory, but your approach will do that anyway +more. And instead of having a maximum value of 200% to find the bright parts, you can get ~6.55*10^6%. This will enable extremely bright parts to have even more bloom than regular really bright parts.
@simondev758
@simondev758 Жыл бұрын
@@NicosLeben Way back on XBox360, I think I played around with storing kinda a light intensity value in the alpha channel to help bloom, so while rendering out you could optionally throw an intensity out into the alpha channel.
@GuildOfCalamity
@GuildOfCalamity Жыл бұрын
Simon's secret is that he's redoing the Prototype game using only bloom.
@simondev758
@simondev758 Жыл бұрын
Recreating prototype would be kinda fun, I still vaguely remember how the world and stuff was structured.
@Red-di7zb
@Red-di7zb Жыл бұрын
Great explanation. In my game engine I have done something in between I guess. I created a mip chain of the main framebuffer. Blur all these mips with gaussian blur and compose them back. I am satisfied with it, thought one big flaw is pulsing. I have some demonstration of my bloom results on my channel.
@Yipper64
@Yipper64 Жыл бұрын
9:24 yet another reason I seem to prefer unity over unreal. The bloom effect from Unity is more subtle and makes more sense, but unreal is just another iteration on the old style. But in general I just prefer C# to C++ and blueprints. And the way that unity deals with components compared to unreal's version. I really wish it was easier to find a unity job.
@simondev758
@simondev758 Жыл бұрын
I haven't looked at job postings, is everyone asking for Unreal?
@Yipper64
@Yipper64 Жыл бұрын
@@simondev758 yeah more or less. If its not an unreal thing its usually some crypto scam. But also hard to find entry level jobs in general.
@alexshel8578
@alexshel8578 8 ай бұрын
Hi I'm trying to build effectComposer into your RPG game project and took it all step by step getting a black screen. no errors are reported in the console.(
@MattTrevett
@MattTrevett Жыл бұрын
Is it worth doing the FFT and using the results for multiple effects before combining them?
@simondev758
@simondev758 Жыл бұрын
Definitely worth exploring. I recorded a lot of the video by downsampling the main image to 1/2 and 1/4 resolution, doing the FFT there, and upsampling the result (kinda a mix of all the techniques). Didn't profile it though.
@keokawasaki7833
@keokawasaki7833 Жыл бұрын
My life has something I call the gloom effect TwT
@Dr.W.Krueger
@Dr.W.Krueger 11 ай бұрын
"the dark ages" oh man....I feel old, lol
@KlaasDeforche
@KlaasDeforche 4 ай бұрын
Bloom reminds me so much of the PS3. PS3 games also have a specific dithering in their shadows or in transparent stuff. I'm not sure what it is? You can see it in the animated menu as well.
@simondev758
@simondev758 4 ай бұрын
Not sure what you mean, maybe point to a specific time in the video?
@KlaasDeforche
@KlaasDeforche 4 ай бұрын
It's not really in the video, sorry :) you can see it in the main menu of the PS3, the waves use dithering I think? A lot of shadows in PS3 games also look unstable.
@4.0.4
@4.0.4 Жыл бұрын
I wonder how slow these would be using cuFFT and vkFFT. Maybe doable?
@Decodeish1
@Decodeish1 2 ай бұрын
Hah, there are three settings I disable in any game. Bloom, motion blur and maybe the depth of field. Rarely do I see good implementations of bloom :D
@IDE_Busmaster
@IDE_Busmaster Жыл бұрын
Now BLOOM I can get into!
@simondev758
@simondev758 Жыл бұрын
Could I see a hat wobble?
@kebman
@kebman Жыл бұрын
On the other hand, doing an FFT is intriguing for some reason. I think I'll do it one day, maybe in Python, for reasons. Maybe make a competitor to Melodyne, bcos he needs a competitor!11
@edward3190
@edward3190 Жыл бұрын
it seems the convolution with a texture can be easily recreated with a good flare effect, isn't it? with cheap cost. In my game, I find some good flare effect adds better variation, feels more alive than trying too hard on bloom effect.
@simondev758
@simondev758 Жыл бұрын
Pretty similar ya, although maybe if an actual artist got a hold of this and made a better bloom texture...
@4.0.4
@4.0.4 Жыл бұрын
I thought about it randomly and came here to comment this. Isn't it true that by FFTing the image you could combine a bunch of FFT-able effects in one go? (like how you can multiply transformation matrices and apply them all at once). Say, a sharpen effect, and a bloom effect, all from a single FFT round trip. Dunno what else, but probably something!
@simondev758
@simondev758 Жыл бұрын
Yup, that bloom I show is actually like 7 different blooms at once. 2 streaks + 4 gaussians of varying sizes.
@ClayMurray8
@ClayMurray8 Жыл бұрын
Interestingly the frequency transform is a similar technique to how JPEGs are compressed.
@conto7032
@conto7032 Жыл бұрын
Nicely explained, but that is the first thing disabled in any game, before i start playing it. Why do they even bother to code/use it in games.
@emiel333
@emiel333 Жыл бұрын
Hi. You said that most of the time 8-bit channels were used and on the Xbox 360 10-bit float. How did Nintendo managed to create bloom effects on the Wii back in 2006? The Wii is basically a overclocked GameCube (CPU and GPU). At E3 2006, Nintendo showed Super Mario Galaxy, which has bloom effects, and later it become clear that the real-time demo ran on GameCube hardware. Could you explain this?
@simondev758
@simondev758 Жыл бұрын
Pretty sure context of that statement was about how older iterations of the bloom effect needed to threshold the image, that's all.
@emiel333
@emiel333 Жыл бұрын
@@simondev758 Okay, so the less fancy stuff back in the days, thank you!
@WindopSL
@WindopSL Жыл бұрын
Wow cool
@zdspider6778
@zdspider6778 Жыл бұрын
4:38 I think this is wrong. Box blur is single-pass, on the same image. Gaussian blur is done in 2 passes, "ping-pongging" between two identical copies of the same image, once for horizontal and once for vertical. The box blur uses a kernel (3x3, 5x5, 9x9, etc), while the Gaussian blur does not, since it samples either vertically or horizontally a certain number of pixels (since that's where the "strength" of the blur comes in).
@simondev758
@simondev758 Жыл бұрын
Both Box and Gaussian are 2D (or more), but "can" be separated to 2 1-d passes. en.wikipedia.org/wiki/Box_blur
How Games Have Worked for 30 Years to Do Less Work
23:40
SimonDev
Рет қаралды 1,2 МЛН
How Big Budget AAA Games Render Clouds
10:45
SimonDev
Рет қаралды 251 М.
Көтіңді қысып, ауылға қайт! | АСАУ | 2 серия
33:16
Normal vs Smokers !! 😱😱😱
00:12
Tibo InShape
Рет қаралды 39 МЛН
How Ray Tracing (Modern CGI) Works And How To Do It 600x Faster
32:06
Josh's Channel
Рет қаралды 538 М.
How Are Games Rendering Fur?
28:51
Acerola
Рет қаралды 402 М.
How do Major Video Games Render Grass?
9:33
SimonDev
Рет қаралды 332 М.
All OpenGL Effects!
30:21
Low Level Game Dev
Рет қаралды 53 М.
Bloom.
26:10
The Cherno
Рет қаралды 114 М.
When Optimisations Work, But for the Wrong Reasons
22:19
SimonDev
Рет қаралды 767 М.
How do games render their scenes? | Bitwise
13:12
DigiDigger
Рет қаралды 560 М.
I Tried Simulating The Entire Ocean
27:19
Acerola
Рет қаралды 459 М.
🤯Самая КРУТАЯ Функция #shorts
0:58
YOLODROID
Рет қаралды 3,5 МЛН
Распаковка айфона в воде😱 #shorts
0:25
Mevaza
Рет қаралды 1,3 МЛН
Я Создал Новый Айфон!
0:59
FLV
Рет қаралды 3,1 МЛН