Пікірлер
@bits360wastaken
@bits360wastaken 12 күн бұрын
Doing everything in 1 frame and just telling people to hack around it with ai, and absolutely nobody gets raytracing unless they can brute force a small portion of it with their 2000$ graphics brick looks like you just didnt do any research and just hate TAA. But plastering TAA over everything is a terrible mistake, and not what i would call sane either. I would expect something in between to be the best way to handle things.
@tadeohepperle7514
@tadeohepperle7514 24 күн бұрын
Very information-dense presentation, thank you!
@luukasmus9213
@luukasmus9213 25 күн бұрын
I have to say that this is an excellent presentation, especially for such a small channel. Straight to the point and clearly defined arguments. I hope to see more stuff from you in the future :)
@plaguedocphd
@plaguedocphd 28 күн бұрын
We can't even make a proper sky for VR in UE5 now. It's all "lumen lumen lumen nanite nanite" and such poo. They push everyone to try and make AAA games when UE4 was actually something for small developers and teams as well. We can't all be Ubisoft. I was working all day having a blast with UE4 and now with 5 I feel like I almost quit. Old techniques don't work well anymore and new techniques also don't work well...
@JH-pe3ro
@JH-pe3ro Ай бұрын
There's a broader discussion to be had about temporal amortization and variable rates as it has to do with gameplay logic; because games assume multiple cores now it's very common to have a strategy of buffering some number of frames behind display and interleaving jobs across frames, making an intentional tradeoff between smoothness and latency to eke out a little more core utilization. I think this can be OK if you hit a high enough refresh rate, but not in combination with rendering that drops quality or adds additional amortization steps. My biggest beef is that there's a lack of concern for precision in how the gameplay clock ticks that is making modern engines unresponsive, and it is to some extent driven by the hardware being targeted now and the amount of buffering that that's doing. I got an Agon Light, a little retro SBC, recently, and the PS/2 keyboard input, VGA output and bare-metal OS probably makes it the most responsive device I have.
@slimsag1337
@slimsag1337 Ай бұрын
Interesting talk, thank you for sharing it!
@breadtoucher
@breadtoucher Ай бұрын
Fantastic! Thanks for this. Situation with graphics can be really depressing. When I look at some AAA game projects that were released 10 years ago, they are few orders of magnitude smaller in terms of amount of code and tech in them, yet they still hold up pretty well today... All because of combinatorial explosion of complexity in rendering and surrounding systems. I liked everything you brough up in this presentation. Makes me consider many design choices.
@gsestream
@gsestream Ай бұрын
so you dont like pre-baked lighting or even on-demand async lighting, which is not calculated tied to the frame.
@denisanisimov7036
@denisanisimov7036 Ай бұрын
Последнее время слушаю русскоговорящих на английском языке. Странные ощущения надо сказать! Не думал, что знание английского пригодится мне в жизни для такого.
@moelanen7363
@moelanen7363 Ай бұрын
I think your observations are correct, but I dislike this approach of outright banning certain approaches to problems, instead of just saying what the problems are and explaining what causes them, and why current solutions are insufficient. Inherently there is nothing bad about temporal amortization, but as with everything, bad implementations are bad. Saying that a whole family of techniques are banned, because of poor implementations of TAA in the past, is foolish. I don't think it's correct to say "Do not use temporal amortization", when what you seem to have is an annoyance with how consistency across frames appears to be secondary to the quality of still pictures. Similarly, your second rule on only targeting higher refresh rates falls flat when you immediately say that targeting lower rates is actually not a problem. Setting up this rule seems incorrect, when again to me, your problem seems to be with studios focusing on frame budgets, instead of input latency. Under this rule, you'd think that frame generation is fine since it helps you achieve higher rates, but as you say, the actual problem is input latency.
@snowwsquire
@snowwsquire Ай бұрын
I don't see why raytracing has to be computed in one frame, accumulation over time for mostly static scenes looks better with no real downsides, and dynamic resolution is fine
@DrTheRich
@DrTheRich Ай бұрын
According to your rule three, Lumen would not be allowed to work. Yet people clearly like playing games that are build with it. Because people DO care about photorealism (depending on context)
@winterhell2002
@winterhell2002 Ай бұрын
If you think how Crysis 2/Battlefield 3/Bioshock Infinite can run at 1440p native on a GTX 660 Ti, it becomes absurd why you'd run a game at a lower native resolution on 10 years newer hardware.
@ckorp666
@ckorp666 Ай бұрын
i love this bc it's the sort of thing thats kept me from playing almost every big budget unreal engine game, thank you but also, i should make a sister manifesto about audio mixing on youtube videos. please run a hipass filter at ~80-120hz, bc otherwise every pop is a direct palm on my eardrums. couldnt finish the video bc of this, lmao
@bazhenovc754
@bazhenovc754 Ай бұрын
I know next to nothing about audio, can I do that filter in youtube editor?
@ckorp666
@ckorp666 Ай бұрын
@@bazhenovc754 pretty sure the youtube editor just lets u throw on music. but for future reference, any semi-proper video editing software should let u do it w/an audio effect
@SquirrltheRiddl
@SquirrltheRiddl 2 ай бұрын
<3
@4AneR
@4AneR 2 ай бұрын
I don't think we need a strict manifesto like "don't do X because I think it's bad". Yes, it's bad, everyone knows. But we need to invest in developing something better than TAA and dynamic resolution stuff. The temporal information is free to utilize, we just need a better algorithm (or statistically trained AI to be honest), that will solve the current artifacts. So I suggest instead do MORE of research on upscaling/prediction/temporal reusing, because the display resolution and frequency are increasing, while the CPU/GPU interop is still a major issue
@locinolacolino1302
@locinolacolino1302 2 ай бұрын
I think we've pushed our luck with AA for too long and have to face the simple fact: we cannot generate data where there is none. I was wondering a while ago why you get AA for free with path traced images, until I realised there are 50+ samples per pixel so it's basically 50x SSAA. TAA attempts to get the extra samples required for SSAA from adjacent frames whilst neglecting the integrity of motion, and FXAA is just a post processing affect that basically applies a smoothing filter to edges: absolutely no substitute for the real thing. The only real options are MSAA, whose image improvement vs performance impact scales rather nicely. Or AI upscaling/frame generation featuring a temporal component, which could do with some improvement, particularly with AMD.
@eclipsegst9419
@eclipsegst9419 2 ай бұрын
Thanks for making this! It's a sad state of affairs we are in, when Crysis 3 at 11 years old has better looking vegetation than the majority of new releases. Deferred rendering was a crappy crutch for last gen consoles and forward+ aka clustered is what everyone should be using at this point.
@DrTheRich
@DrTheRich Ай бұрын
Unreal Engine 5 does look better than crisis 3 by miles, and it does break some of these rules.
@eclipsegst9419
@eclipsegst9419 Ай бұрын
@@DrTheRich Texture resolution? Sure. Gloss accuracy on materials? Crysis 3 still looks better. And MSAA 4x blows TAA away not to even mention 8x.
@DrTheRich
@DrTheRich Ай бұрын
@@eclipsegst9419 KZbin keeps deleting the lengthy reply I've typed for no reason, so you're in luck. Anyway, if you are comparing an 11 year old crysis 3 demo to a recent ue5 demo, and come to the conclusion crysis 3 still looks better, I can't help you... And no, it's not because of texture resolution.
@eclipsegst9419
@eclipsegst9419 Ай бұрын
@@DrTheRich I said the vegetation and material handling was better. Not the entire experience. UE has a poor PBR system that's why everything looks like plastic. UE also only offers FXAA and TAA, both very crappy forms of anti aliasing. Sure Crysis 3 doesn't have RTGI, but the remaster does and CryEngine 5.7. CryEngine got SVOGI running back when UE4 had failed to make it work at a playable framerate. Now Lumen also tanks frames but they just tell you to shut up and use DLSS. UE is an arena shooter engine it chokes on open worlds unless you make them as cartoony as Fortnite.
@Scorpwind
@Scorpwind 2 ай бұрын
I wish that all devs had this mentality and awareness as to what modern AA is doing to the image. This is one of the reasons why the FuckTAA subreddit exists. You should join it, by the way. There are some devs there as well. Don't let the name discourage you. There's normal discussion that takes place there.
@Theinvalidmusic
@Theinvalidmusic 2 ай бұрын
Bravo. I'm so pleased people are finally starting to speak up about this stuff. Playing some modern games can be really fatiguing because TAA makes things look *just* out-of-focus enough to find myself reflexively squinting at them, which ain't great for eye-health.
@brett20000000009
@brett20000000009 2 ай бұрын
I like this, but saying higher framerates are only good for input latency is just flat out wrong, I don't know how you come to the conclusion? higher framerates are smoother(less strobiscopic artifacts) that's a fact, higher framrates have less persistence blur(motionblur) so there are really 3 reasons why you would want a higher framerate. not 1
@bazhenovc754
@bazhenovc754 2 ай бұрын
I'm not saying high framerate is only good for input latency, I'm just putting an emphasis on input latency. I wanted to keep the video small and focused.
@brett20000000009
@brett20000000009 2 ай бұрын
@@bazhenovc754 fair enough
@MHjort9
@MHjort9 2 ай бұрын
He never said it was the only reason. He said it was the MOST important reason, which is true.
@brett20000000009
@brett20000000009 2 ай бұрын
@@MHjort9 imagine being so full of yourself that you would openly state an opinion as fact. I think they are of equal importance and input lag isn't allways tied to framerates.
@SaHaRaSquad
@SaHaRaSquad Ай бұрын
@@brett20000000009 Framerate is not the only factor but it always influences input latency and always will. In some games it's less important, but if you don't prioritize latency in fast-paced games you're doing it wrong, period. You can call it an opinion as much as you like, it's still the opinion of anyone who has standards.
@normaalewoon6740
@normaalewoon6740 2 ай бұрын
For me, backlight strobing is the highest priority because I can't stand sample and hold smearing. 60 fps is not enough because I can see the flicker directly on my viewsonic xg2431 monitor at a comfortable brightness. 85 fps is about right, but I prefer 100 fps. The game needs to run at this framerate without framedrops at any time and any in game event. The game needs to have an fps-limiter that can be set at any value, even decimals. A good, in game fps-limiter removes the lag and microstutter of v-sync. I cannot understand why this is so badly known among people If the game uses some kind of temporal reprojection, it needs to have a 200% frame buffer. The output needs to be 4k at minimum, even on a 1080p monitor with 1080p input. This makes the reprojection of previous frames more accurate in motion and removes most of the OLPF style blur The remaining blur needs to be managed by turning down the intensity of the anti aliasing. I rather have a bit of shimmering than a bit of blur. I also prefer unrest due to parallax disocclusion over background smearing. Unreal engine 5.4 has history resurrection built into TSR, which should adress this issue to a degree Moving objects need to output the correct motion vectors. Foliage wind sway already does this in most games. Scrolling textures and interactions need a previous frame switch and volumetric clouds need a transparent plane with a previous frame switch to tell how the clouds are moving and at what height. Ray marched objects need the right pixel depth offsets. If motion vectors really aren't an option, the material needs to be transparent and render after the motion blur pass. This removes temporal reprojection from it as a side effect. The 'has pixel animation' material flag in unreal engine 5.4 handles unpredicted motion a little bit better than before I don't think it's an issue to render things in multiple frames, as long as it's necessary for the art style and without disturbing artefacts. We should learn ourselves how to deal without temporal reprojection though and even have an off option in games that push the best TAA to its limits I like motion blur as an option, as long as it's only enabled during fast camera rotation because it sucks otherwise
@bazhenovc754
@bazhenovc754 2 ай бұрын
VSync microstuttering is an implementation issue, I don't think you need to have a CPU side FPS limiter if the renderer is implemented correctly. I'm not against FPS limiters I just don't see a lot of value in it. Using 200% frame buffer defeats the purpose of TAA, that's basically supersampling and you don't need TAA at that point. It could be a good option for high-end GPUs but as of today 20% of PC market is still using NVIDIA 10xx series GPUs so I don't see that being a viable option anytime soon. To my knowledge, nobody is implementing TAA in the way that you described. There are several games that trade off AA quality to further reduce ghosting and it's usually a fairly reasonable tradeoff that comes at the cost of image stability. I still think that we should move away from TAA and temporal amortization, it's been around for 10+ years already and I don't see a lot of improvement there, the last breakthrough was AI TAA and it seems that this is the best we can do. Even with AI there is still tons of issues on translucent surfaces.
@normaalewoon6740
@normaalewoon6740 2 ай бұрын
If an fps-limiter solves the problems of v-sync, why should we let it out? I'm talking about upscaling with 100% input and 200% output resolution. This is not supersampling, merely upscaling to a resolution beyond native (somewhat like DLSS quality + DLDSR, but more like 4x DSR + DLSS performance). Blur is a natural result of resampling over and over again in motion, but a 200% frame buffer slows this blur down a lot. Even with sub native input resolutions. The upscaling itself gets more expensive, but not too much: about 1.6 ms on my 3070 when upscaling to 4k. 4k is getting mainstream already, I only need 85 fps+ to use it with backlight strobing. Not because almost no one plays like this, but because I have never seen such good image quality and motion clarity before. It would be a shame to go back to 60 fps sample and hold, no TAA, because TAA has not been good in the past. Game developers just need to learn how to output the right motion vectors and make their games with motion clarity in mind, at least on higher end devices Of course, it is good to make games without relying on TAA as well. Fast paced games don't need a lot of detail and can do well without TAA. For dense foliage however, TAA is quite necessary for a pleasurable experience. I think it looks better by itself than no TAA, but it needs a 200% frame buffer to avoid headaches. A few traces of shimmering due to the TAA being as weak as sufficient should not be an issue. You would get them with less detail and no TAA anyway Also, I think TAA should be a personal preference for everyone. It's not something to forcibly enable or leave out completely. The last thing, unless you really know what you are doing
@bazhenovc754
@bazhenovc754 2 ай бұрын
​@@normaalewoon6740 How exactly does an FPS limiter solve vsync stutter? You need to render consistently at your target refresh rate, if you can't render at 90/60/whatever the native refresh rate is then you need to query the graphics API for what lower refresh rates the monitor/TV supports and use that. Once the refresh rate is selected try not to change it at runtime. Using an arbitrary value as a frame limiter is plain wrong, if you just sleep on that without correct synchronization with the GPU then we're back at missing vblanks and inconsistent frame pacing. Alternatively the user can set lower refresh rate in the OS settings (on laptops or steam deck, the OS usually won't let you enter arbitrary values) and that would get reported to you as a native refresh rate and all is good in theory. Or you can disable vsync and just sleep on the FPS timing - this doesn't really solve any of your problems because the monitor cannot present frames faster than native refresh rates, so you still get bad frame pacing + inconsistent image tearing on top of that. Some users have a very strong misconception that disabling vsync makes the game more responsive (and a lot of games don't implement it correctly so this misconception is not entirely unfounded), so it's a good idea to have an option to turn vsync off and leave it on by default. Most users don't change the defaults so it's really important that defaults are good. Regarding TAA - it's an interesting take, but again I've not seen anyone else implement it the way you described and I cannot judge the quality of it without seeing some demos first. I'm open to changing my mind and reevaluating my position on stuff when presented with evidence, right now after 10 years of TAA my stance is that it's not good. Also 1.6ms on a 3070 is an exorbitant cost if you want to target 85Hz+ refresh rates - it's a very high end GPU, I've mentioned already that 20% of the PC market is sitting on 10xx series, maybe in a few years you could reasonably target 20xx min spec GPU but right now it is what it is. On a side note, I'm not saying that we should limit everything to 60Hz, I'm saying that we should not render at lower than 60Hz (unless the user specifically opts in for this). My personal preference is 120Hz, I think beyond that you're starting to see diminishing returns and it would generally be an overkill. VR needs more than 120Hz though because otherwise you get motion sickness, also you need to always present at consistent frame rate because again motion sickness. And you absolutely cannot have image tearing in VR because again motion sickness.
@normaalewoon6740
@normaalewoon6740 2 ай бұрын
​@@bazhenovc754 When v-sync alone caps the framerate, it allows for CPU buffering. This takes some time and it causes motion problems, resulting in lag and microstutter. An fps-limiter disables this buffering completely and makes the frame pacing smooth and direct. I should have mentioned that I mostly use custom refresh rates. The default settings are too limited. Not only number wise, but also because they lack the high vertical total that I need to minimize crosstalk with backlight strobing. I use whatever framerate I can run stable at. Most of the time, somerwhere between 75-100 fps. However, some games only support fps-limiters of 60 and 120 fps In fortnite, you can use epic TSR. It has a 200% frame buffer and it's not blurry like all those bad TAA implementations in motion, especially with 100% input resolution. You can also use 4x DSR (0% smoothness) + DLSS performance to get 100% input with 200% output. Default TAA is much lighter than advanced upscaling and can use a 200% frame buffer as well, which may bring it to 2 ms on a 1060 when upscaling to 4k. It's not potato cheap, but worth using if you ask me I guess my playstyle is a bit more demanding than the 'sweet' 60 fps. I need a framerate above the visible flicker threshold, about 85 fps, without any framedrops. 60 hz strobing is flicker free for me with a much reduced brightness (about 30 nits), but I don't like it so I only use it rarely when I can't do better but still want to play 120 fps would be perfect for immersive types of games, while 240 fps is good for fast paced games. That does not mean 1000 fps isn't any better, in fact it's a lot better, but it's probably not worth sacrificing features for. There are other techniques to create a 1000 fps experience too. With an eye tracking device, it's possible to use eye movement compensated motion blur. Non-deformed frame buffer resampling based on eye motion is another possibility. It could replace strobing and framegen in the future
@bazhenovc754
@bazhenovc754 2 ай бұрын
@@normaalewoon6740 With DX12/Vulkan you have explicit control over the CPU buffering and if you implement that correctly it's no longer an issue, you absolutely can do it without both microstutter and tearing at the same time.
@willuigi64
@willuigi64 2 ай бұрын
4:14 Sure, it makes input lag worse. Especially at 30fps. But higher frame rates are also good for improving motion clarity. Not just input latency. Targeting FG is silly, but >60fps to 120 is generally a nice option. It’s possible I misunderstood you, though.
@bazhenovc754
@bazhenovc754 2 ай бұрын
I mean, FG kinda requires some form of TAA which is already banned and it has pretty bad artifacts at times. I'm not sure, I'm open to change my opinion on it but so far I'm not very impressed by the latest developments in FG.
@brett20000000009
@brett20000000009 2 ай бұрын
@@bazhenovc754 Actually framegen doesn't require TAA at all, it's just most games that support it are using forced TAA or forced TAA while using framegen. I have used framegen with taa off and it looks way better, try cyberpunk with the config file changed to turn off taa and use the dlssg-to-fsr3 mod. I think you can also do it in ratchet and clank
@bazhenovc754
@bazhenovc754 2 ай бұрын
@@brett20000000009 I didn't know that, I'll investigate it further.
@helviett
@helviett 2 ай бұрын
What solution do you recommend when transparent objects just take down too much of performance because of overdraw? I haven't come up with anything better than rendering them at different resolution for platforms that can't handle too much overdraw.
@bazhenovc754
@bazhenovc754 2 ай бұрын
That's a good point, I need to think about it. Maybe we can allow rendering translucent objects at a different resolution as long as it follows the general lower resolution rules? I want to test it and see how it looks in practice.
@TsutsuYumeGunnm
@TsutsuYumeGunnm 2 ай бұрын
лови пятюлю Alsou, what are you thinking about accumulation into 3d structures, ie irradiance volumes or froxel fog?
@bazhenovc754
@bazhenovc754 2 ай бұрын
If you can compute it in 1 frame without temporal amortization - it is allowed.
@Deescacha
@Deescacha 2 ай бұрын
"Decouple your game logic update from the rendering code" -> Which articles do you recommend to dive deeper into this topic?
@bazhenovc754
@bazhenovc754 2 ай бұрын
This is a good article: gafferongames.com/post/fix_your_timestep/ It's about physics in particular but does a good job at illustrating the general idea.
@BenjaminRosseaux
@BenjaminRosseaux 2 ай бұрын
I myself just use 4x or 8x MSAA for triangle edge smoothing and an MSAA-free and temporal-free SMAA1X on top of the MSAA-resolved frame for all other details that MSAA doesn't take into account (so no SMAA S2X or T4X, just the base SMAA). So far this works pretty well for me. I don't like TAA either, although my own engine has it implemented too, just for completeness, but I would never use TAA seriously and then possibly never make it available in the game settings in the final release builds. And as for hardware raytracing, I'm also currently trying to implement everything purely spatially (in terms of single frame self-constrained wise) and not temporally, including creating and updating the BLASes and TLAS. Here, too, it has worked quite well for me so far. But when it comes to path tracing later on, temporal denoising like ASVGF will unfortunately be unavoidable then.
@bazhenovc754
@bazhenovc754 2 ай бұрын
For MSAA to work you need to have a low-poly geometry, otherwise the performance cost will bite you and it will be much harder to run at 60Hz or higher. SMAA was in my opinion the best non-temporal AA solution. This is a very good related overview: alextardif.com/Antialiasing.html
@rabbishekelstein6003
@rabbishekelstein6003 2 ай бұрын
I was just rewatching your other two presentations and noticed a new video. I think the TAA thing is getting traction elsewhere as well. There's been like 2 videos in the past couples months discussing how bad it can look
@bazhenovc754
@bazhenovc754 2 ай бұрын
Can you link them here? I'd like to see them too.
@rabbishekelstein6003
@rabbishekelstein6003 2 ай бұрын
​@@bazhenovc754 I think I sent it but the thing I was worried about happened. I think it detected it as a spam/bot message Regardless the two videos I'm referring to are "This issue is plaguing modern gaming graphics" and "Tech Focus: TTA - Blessing or Curse?". both are the top two results when searching "TTA" on YT
@redsteph
@redsteph 2 ай бұрын
I was just watching your 2 last presentations, they're very informative and very useful. Keep going! If possible could you make a presentation about anti-aliasing? Especially temporal anti-aliasing.
@bazhenovc754
@bazhenovc754 2 ай бұрын
Thanks! Sadly I don't have anything to say about TAA, basically AI-assisted TAA is the only way to go because without AI the quality is just not there no matter how much effort you're putting into it. Specular anti aliasing in general needs more research I think, it was mostly abandoned in favor of TAA but I think there's still a lot of room for improvement there.
@KyoukiDotExe
@KyoukiDotExe 2 ай бұрын
@@bazhenovc754 Very well said. I am getting uncomfortable from bad Temporal/TAA as my eyes cannot properly take blur generated on a display.
@zdspider6778
@zdspider6778 2 ай бұрын
Another "con" is that you can't use MSAA in deferred rendering. Only post-processing AA like: FXAA, TAA, SMAA, CSAA. Because the lighting calculations are only done ONCE for the "top most" visible pixels, not for their "antialiased" bastardized pixels, lol. While in forward rendering you can. So if you're a fan of MSAA (which is a _hardware feature_ since like the 90's or early 2000's), then forward rendering is the way. But keep in mind that MSAA also comes with its own limitations, like it only applies AA to the _geometric_ part of the triangles. It does absolutely nothing for the inside of the triangle, so if a texture is noisy or the specular is noisy (because the normal map contains too much detail and "reflects" light at sudden sharp angles), then you ARE gonna notice the aliasing and it's gonna bother you. And a lot of people seem to hate TAA, for some reason... There's even "r/FuckTAA" - _a subreddit dedicated to discussing the plague of blurry anti-aliasing methods that are ruining the visuals of modern video games._
@bazhenovc754
@bazhenovc754 2 ай бұрын
I'll copy my reply about MSAA from my own comment: MSAA is not better than TAA for several reasons: 1. Performance hit is too much on "modern" art - MSAA works extremely poorly when triangle density is high, in worst case with 4x MSAA you are hit with 16 times more pixel shader invocations if your triangle overlaps a lot of adjacent pixel centers, this can easily quadruple your frame time, especially if you have complex shaders. MSAA compression is also designed for large triangles, it doesn't work if your art direction needs high triangle density. This assumes forward renderer, with deferred you get all these issues on top of crazy bandwidth increase which is just not practical. 2. It does not address specular aliasing, MSAA works by computing a coverage mask for subsamples and stores the result of your pixel shader invocation for each affected subsample. It does not shade each individual subsample, it only interpolates the resulting colors. It's not supersampling, because supersampling would actually invoke the pixel shader for each subsample instead of interpolating it. There is another way to reduce shader aliasing by filtering your roughness and normal maps, this is called "von Mises Fischer" or "vMF" filtering, it doesn't completely remove specular aliasing but helps a lot with it. Some games do VMF with combination of something like non-temporal SMAA and I think it's a pretty good compromise (and doesn't need motion vectors), but you need a rather complex art production pipeline and someone who enforces art guidelines. This is often very expensive to do unless you have a strong tech art discipline in your team. AI TAA is not really that bad, give it a try. XeSS/DLSS have almost zero ghosting and really good image clarity and stability, they only struggle when there's a lot of translucency and particles on the screen. Now if you have a VR game your situation is very different, you cannot use TAA in VR at all because people will start throwing up when playing your game, so your only option is MSAA or SMAA. This severely limits what art direction your game can have and increases art production costs/time. And you pretty much have to implement a vMF pipeline in your project. FXAA is really not an option nowadays, it needs to retire with honor and dignity.
@zdspider6778
@zdspider6778 2 ай бұрын
I think you forget one important aspect of forward vs deferred: *depth pre-pass.* _Edit: which you mention at __24:57_ 😅 With a forward render, you really do need an initial "pre-pass" only for depth. Meaning you have to render ALL your meshes to the depth buffer (using an empty fragment shader). This incurs an extra cost. While with a _deferred_ renderer you don't really need one. Not really. I mean, you CAN if you wanted to, but it's often not used. If you choose a forward renderer and you skip the depth pre-pass (and you don't sort your meshes), you risk running (potentially) expensive lighting calculations for the fragments that the depth buffer will discard, thereby throwing away whatever work the GPU did. This is the entire reason why deferred shading was invented in the first place! 😄 I'm not necessarily saying that deferred is better. It depends entirely on your scene. Is it a "corridor" type shooter? Is it an open-world scene with lots of things behind other things? How "deep" is your scene, and can you cull those meshes on the CPU (or GPU)? These are the questions you should be asking when trying to choose between forward or deferred. Another important questions is: how many lights do you want? Because deferred easily supports _tens of thousands_ since they're basically like stamps drawn in 2D on the color buffer.
@bazhenovc754
@bazhenovc754 2 ай бұрын
This was discussed in the video, 2 pass forward is generally faster than deferred. The cost of having an extra depth pass in a modern optimized forward renderer is lower than the cost of using that much extra bandwidth in a deferred renderer, especially so if you use the "stamps in 2D on the color buffer" approach - this will waste a metric ton of bandwidth. In order to for a deferred renderer to compete with forward at all you need to use a tiled deferred shading with a compute shader that caches gbuffer samples in TGSM.
@zdspider6778
@zdspider6778 2 ай бұрын
22:11 _(regarding SSR)_ "You cannot do this with deferred shading because you need the normal and roughness". I think you got that BACKWARDS, chief. 😆 You can't do that in a *_forward_* renderer, because you don't have the roughness as a separate render target. But you totally CAN with deferred! "Deferred" means putting it off (or "deferring" it) to a later date during the frame rendering timeline, so that you do the (potentially) expensive lighting calculations _ONCE_ per pixel.
@bazhenovc754
@bazhenovc754 2 ай бұрын
You need to work on your listening comprehension, chief 🙂You are taking phrases out of context and constructing an imaginary windmill to attack, the phrase "cannot do this" does not refer to SSR and I explained earlier in the video what a forward renderer is in the context of this presentation.
@zdspider6778
@zdspider6778 2 ай бұрын
20:27 "Forward shading still produces a g-buffer". No, it doesn't. There's no "g-buffer" _at all_ in forward rendering. 🤨 Are we talking about the same thing?
@philliptrudeau-tavara3828
@philliptrudeau-tavara3828 6 күн бұрын
He's saying that you need to produce TAA motion vectors and SSR normal/metalness/roughness. That's a G-buffer.
@Weaver_Games
@Weaver_Games 3 ай бұрын
I've often felt like an industry outcast for being so largely against deferred rendering. I'm not saying it never has a place but I feel like studios now just default to it without understanding the substantial drawbacks.
@myxsys
@myxsys 4 ай бұрын
Thanks for the presentation. Am not a graphics programmer but an Unreal Engine noobie learning tech art. I noticed that when I enabled forward renderer + fxaa, the visuals improved greatly plus I got about 50 to 60 fps running a basic level on a Ryzen APU. Am glad to see forward renderer being recommended despite what the unreal docs say.
@bazhenovc754
@bazhenovc754 2 ай бұрын
They've added a forward renderer because their deferred renderer didn't work in VR (too slow), it's pretty good but there are some features missing or not supported.
@myxsys
@myxsys 2 ай бұрын
@@bazhenovc754I always assumed forward rendering has always been there even before UE 4
@FlippingLuna
@FlippingLuna 2 ай бұрын
For mobile...At least mobile forward support custom data which is key to stylized/toon renderer, while mobile deferred is not@@bazhenovc754
@mioeu5399
@mioeu5399 4 ай бұрын
Thanks for great in-depth material man! One day I might be able to grasp everything you say but not today unfortunately. What do you think about deferred shading on modern mobile devices when having open world 3D environment but with only few local lights? Would your advice still be so radical against deferred? Thanks.
@bazhenovc754
@bazhenovc754 2 ай бұрын
Yes I would 🙂Bandwidth is very expensive on mobile.
@StevoPero
@StevoPero 4 ай бұрын
I tried it but I am having a problem I am in a decent pc but I can't enable it I have added a PBR shader and also it has DX12
@bigeddyspaghetti6681
@bigeddyspaghetti6681 4 ай бұрын
Well this isn’t good as Minecraft is gonna be using deferred rendering 😢
@saniel2748
@saniel2748 5 ай бұрын
Shame you didn't touch on topic of having lots of cut out geometry, like rendering forests. You can't just not use pixel shader on those, although you could set color mask to 0 I know that unity's book of the dead demo still had massive benefit from using prepass even with deferred rendering. Still, I also read in "Geometry Pipeline in CallOfDuty" that forward kinda sucks for cut out geometry?
@bazhenovc754
@bazhenovc754 2 ай бұрын
You only need to render prepass with the alpha clip enable, but render it after all opaque. Then the main pass can be rendered fully opaque with earlyZ, the depth buffer will naturally have gaps where texture alpha was 0. The prepass with a pixel shader will be more expensive and I don't think this is a solvable problem. You can optimize geometry, i.e. www.humus.name/index.php?ID=266 to reduce that overhead.
@user-cs7ib3ho1l
@user-cs7ib3ho1l 5 ай бұрын
Nice video but disliked for the horrific microphone, so much breath.
@bazhenovc754
@bazhenovc754 2 ай бұрын
I bought a new expensive one, next video should be better.
@CharlesVanNoland
@CharlesVanNoland 6 ай бұрын
When did people start calling them "deck-ullz"? It's always been "dee-kal" where "kal" rhymes with "pal" or "Cal" in "California". This is the second time this week I've seen a gfx programmer say it "deck-ull" on KZbin. It's even "dee-kal" on dictionary sites (literally) and hundreds of older videos. Why is the pronunciation changing suddenly? Have people just only seen the word any never heard it said before somehow, in this day and age of streaming video? It reminds me of watching game reviewers saying "lin-neer" for the word "linear" because they've only read it and never heard it, and they see the word "near" in it and automatically assume it's a 2-syllable word instead of the 3-syllable word it's always been since before they came along and mis-read it.
@bazhenovc754
@bazhenovc754 6 ай бұрын
I used both "deck-ull" and "dee-kal" pronunciations in the video to offend as many gfx programmers as possible.
@Kickin0u0in0the0nut
@Kickin0u0in0the0nut 6 ай бұрын
Do you feel like spending time trying to improve deferred renders is a fruitless cause especially with the advent of ray tracing I feel like there's no justification to implement new deferred renderers, I feel like ray tracing does a better job of handling thousands of lights in a small scene or in a large scene then it deferred render and most of the times when I think of engines that use deferred renders they already have high minimum cost to run the engine engines I feel like it would be more beneficial if we focus on making ray tracing more available via lower and hardware and different ray tracing algorithms
@bazhenovc754
@bazhenovc754 6 ай бұрын
I don't think you can do a lot of improvements for deferred shading, unless you start heavily compressing the data you can't really reduce the bandwidth and compression is always at the expense of quality. I have a mixed feeling about ray tracing in general, I understand the appeal but at the same time I feel like ray tracing needs extremely heavy temporal component that makes it look bad in motion most of the time. ReSTIR seems to be a way to go (the biased variants) and I don't think you need deferred shading for that either.
6 ай бұрын
Awesome presentation. This will gonna help on my hobby game engine.
@doltBmB
@doltBmB 7 ай бұрын
if we're back in forward land, why are we using TAA? this is what a decade of brainrot does to you.
@doltBmB
@doltBmB 7 ай бұрын
tiled rendering with lots of onscreen lights was often touted as a benefit of deferred, but that relies on a false assumption about how light works, very rarely will you have lots of small point lights with a small radius, perhaps street lamps in a city like GTA. but most lights are going to throw far, likely across the entire screen in order to look natural. To keep the benefit of tiled rendering, light radius and falloff are artificially capped to a small radius and a harsh edge, which looks very artificial, if combined with gamma correction it will make the falloff look even harsher and even more unnatural. really very few actual scenes fit the way the tech demos with hundreds of lights were constructed.
@charlieking7600
@charlieking7600 5 күн бұрын
You're messing up tiled/clustered shading with deferred rendering. These are completely different techniques which do not contradict each other.
@doltBmB
@doltBmB 5 күн бұрын
@@charlieking7600 I'm not. Tiled rendering is often presented as a benefit of deferred. Most deferred rendering tech demos have hundreds of point lights to show it off.
@TsutsuYumeGunnm
@TsutsuYumeGunnm 7 ай бұрын
Why are you vertex bounded? Im unity (
@aeterosofficial
@aeterosofficial 8 ай бұрын
Очень интересная презентация. Спасибо, есть о чём подумать.
@zxcaaq
@zxcaaq 8 ай бұрын
what about Foward+ is this technique better than Forward+?
@fu5ha_edits
@fu5ha_edits 7 ай бұрын
The kind of forward renderer discussed in this video would be firmly in the “Forward+” category already. Depth/normal/etc prespasses, occlusion, clustered lighting and decals… all of these are “forward+” things
@Patapom3
@Patapom3 8 ай бұрын
Nice presentation. However, you're not addressing a big issue with forward renderers : shaders combinatory explosion! I worked on Dishonored 2 a few years ago, we were using a modified version of Id Software's idTech 5 engine and at the very end of production (circa 2016) we were compiling about 50,000 shaders (distributed compiling of course) because of all the variations (transparent, cutoff, decals, translucency, all the kinds of BRDFs and so on and so on). It took *AGES* to compile and it was a big source of headaches and delays in production, as well as a nightmare to optimize! With deferred, you only have to handle a couple thousands of variations, it takes at most a few minutes to compile, and it uses a unified lighting pipeline that also makes shaders smaller and easier to maintain...
@bazhenovc754
@bazhenovc754 8 ай бұрын
Dishonored 2 is in the top 5 of my most favourite games of all time, I absolutely loved it! I'd like to hear more about your shader explosion issue if you have the time, can you pinpoint what exactly caused it in the first place? My general thoughs on this is that if you have a good decal system like in idTech5 then you can use decals most of the time when you need various surface variations and your art team doesn't have to create a new shader every time they want a slightly different scratch on the surface and they can just use decals for these small details. Of course you still have gameplay-specific shaders, but there shouldn't be 50k of them right, Doom managed to ship with like 100-ish shaders in total and visually it looks amazing.
@doltBmB
@doltBmB 7 ай бұрын
sounds like a self control problem, there is nothing about forward that says you have to use a billion shaders, deferred simply imposes the limitation
@L1uBan
@L1uBan 8 ай бұрын
This talk clearly targets immediate GPUs. You make a lot of statements that are hard to defend in Tiled-Based architectures.
@bazhenovc754
@bazhenovc754 8 ай бұрын
Can you elaborate which statements? I admit that most of my experience is with consoles and PC, although I did work a bit with various mobile GPUs. There is TBDR and TBIR, you don't need a depth prepass on a TBDR because the HW already deals with overdraw for you with FPK/HSR, so a depth prepass is just not doing anything useful. But you still need it on a TBIR if you have a forward renderer, all my other arguments should still apply though? I know that you can try to keep the G-Buffer in the tile memory and that mitigates a lot of bandwidth issues, but if you need the G-Buffer for postprocessing (SSR or anything that needs arbitrary sampling of the render target) then you're forced to move it off-tile anyway or scale down and make other concessions (same issue with an on-tile depth buffer - if you have anything going on with your postprocessing you can't really keep it on-tile because you'll need it later). Not to mention that on-tile memory is a scarce resource and there might not be enough of it for a fat G-Buffer. So I still don't see any distinct advantages of deferred renderer over the forward renderer even on TBDR - on these types of GPUs forward renderer at worst shouldn't perform worse than a deferred renderer but it comes with a lot of flexibility. And from what I've seen, all TBDR vendors recommend using a forward renderer anyway.
@L1uBan
@L1uBan 8 ай бұрын
Hi @@bazhenovc754, great talk by the way, I forgot to mention in my last comment xD. As you pointed out, things like mobile GPUs having some sort of HSR which makes the depth prepass suboptimal, but you still need the depth for things like the SSAO mask generation. To be able to stay in tile memory (you should be able to get more than enough for the GBuffer data) mitigates a lot of bandwidth, not entirely as you will still have to end up writing once to let later passes use the GBuffer but at least you will stop doing multiple writes/loads. Also, some of the comments focus a lot in the assumption of Compute for everything, which is true for Desktop and Console territory but overall on mobile maximizing the use of fragment shaders is still the general advice. So, overall I agree a Forward renderer, as long as you have a really limited amount of lights is going to be the most efficient approach. Unfortunately, modern graphics tend not to align well with this approach as you might need access to material information later in the frame (i.e screen probes based GI techniques, reflections ...) which force people to end up having to write some sort of GBuffer anyway.
@wojtsterna
@wojtsterna 8 ай бұрын
Permutations reduction is a strong case for a deferred renderer. If you have many complex materials deferred renderer can be a better choice. Overall, I don't have a strong opinion on whether a forward or deferred is "better". They both have their merits and drawbacks.
@bazhenovc754
@bazhenovc754 8 ай бұрын
There are better ways to reduce the amount of shaders that you have, decals being one of them. If your art team does not have to create a unique shader every time they want to have some small scratches on the surface or other minor details then you won't have the shader explosion problem in the first place.