Why Jonathan Blow hates screen-space rendering techniques (Riven spoiler?)
HTML-код
- Опубликовано: 11 сен 2024
- Jonathan Blow's Twitch: / j_blow
Tip me: ko-fi.com/blowfan
Game designer Jonathan Blow (Braid, The Witness) doesn't like screen-space rendering techniques because they introduce imperfections that destroy the feeling of being in a world. The game in the video is Riven (2024).
That's like watching Gordon Ransey talk about food but about game graphics
He probably treats his employees about the same !
I won't deny he knows lots about rendering but his explanations here are a little flimsy.
It’s absolutely not, this guy has made a grand total of two games in the past 16+ years.
@@jovi9918 not quite true. those are his successful games. he’s made quite a few smaller games that had no success.
@@latinoce could you drop some names
"Jonathan Blow hates ___" every 60 seconds in Africa a minute passes
Best way to explain SSR is by looking down and watching the reflection magically disappear in a line as the true render exits the screen space
Kind of depends on how much time is spent on the reflections. Some games have rather decent real time cubemaps as a fallback to avoid objects completely disappearing (but they do significantly lose detail).
real lol holy shit i cant believe i actually ignored these small artifacts T-T
@@zanagi Thats the point tho, its easy to miss the artifacts and problems. Generally SSR looks good, as long as you dont look to closely.
Not having SSR usually would look a lot worse. And the alternatives like double-rendering, or raytracing, are too expensive.
Right! 😂
"The old way was to render the scene twice back when we had weaker hardware, but now with the power of modern gpus we're using a cheaper method that looks worse."
We also had simpler shaders back then so rendering twice wasn't too bad. With modern shader complexity I don't think it's feasible to render everything twice.
@@leezhieng Yeah, that's why VR games are rather simple graphically, because everything has to be rendered twice for each eye
@@zonea4860 screen space fuzziness like we see in the video is so bad in VR because often the effect is not the same for each eye.. in fact in this game, riven remake, the shadows do that all the time, It's like they use some kind of shading for the shadows but it makes the shadows different for each eye which makes it look like they flicker and is really annoying.. I had to put dynamic shadows off.
Back then you rendered a very basic and ugly scene twice. Now you would have to render an extremely complex and highly detailed scene twice. It's not necessarily the same.
Same thing happened in the field of video compression
Most screen space rendering techniques are hacks that give you a lot of visual effects richness with minimal overhead but sacrifice geometric accuracy, typically because of occlusion issues or a lack of parallax correction. The glow could have been trivially corrected by layering the scene and not including the foreground content in the reflection calculation, but it needs finesse and control and there's a cost (not huge on modern hardware). The refraction getting disabled above the railing posts seems like some bug or hidden depth occlusion caused by another effect. But might also have been done to prevent refraction sampling the pole itself. i.e. it disabled due to depth sampling to stop a similar artifact we saw with the glow earlier sampling the foreground pole geometry. The solution to improve this would be to render the foreground after the refraction. It's probably doable but a lot of devs just throw stuff into Unreal and flip checkboxes without a lot of thought or understanding. The detail paging when turning his head is just aggressive optimization. I think he's being a little unkind.
That doesn't bother me much, what's the worst thing ever is mipmap pop-up.
@@monad_tcp Can you be specific? I'm very familiar with MIP mapping, anisotropic texturing and texture paging and memory management. Are you referring to paging artifacts as you move or something else?
100% agreed, while it's good to highlight for the dev as I contend it can be distracting, it's weird to use it as such a put down (specifically towards a smaller studio). It's even better when the guy roasting the devs for these rendering choices seemingly doesn't have a full grasp of what he's talking about himself because as you've brilliantly covered there are solutions to better ground these cheaper effects and make the most of them.
well jon blow is a hack who uses his minor fame to generate controversy in hopes it trickles back
@@TiiAye Jon tilts at many windmills most of which deserve to be tilted at. His biggest issue is an industry that pisses performance away, backed by mantras and dogmas that are never adequately tested. Secondarily he complains about quality (in many domains), but most devs don't have the luxury of taking an extra few years to perfect their game / product. I'm glad he's out there doing his thing, it gives voice to some of my own misgivings, just as I'm glad Mike Acton stood up and bitch slapped the entire CppCon in 2014. P.S. FWIW if you're technically savvy and listen to Blow for any length of time you KNOW that he's not a hack and he's not just generating controversy, he has deep technical knowledge about why a lot of software sucks these days and how to fix it for anyone who cares enough to try.
Jonathan Blow on ray tracing:
"Real time ray tracing is such a horrible idea. Literally you are wasting so much performance on something that isn't necessary at all. You should focus on cheaper, more simple rendering techniques, like screen space ef- uhmm i mean do something else!!"
Also the other method he mentioned, doubling geometry has its own limitations too. Planar reflections and render to texture are very expensive and often times don't take into account stuff like lighting data and are very expensive to render as well, especially at full resolution
There are non-screen space global illumination techniques.
Did this guy really that say, and then record this?
@@fudjinator Yes but those are for global illumination, you can't use them to fix reflection/refraction artifacts. To fix the problems in this video you need ray tracing - _or_ to give up on modern graphics and just forward render everything multiple times for reflections, the way it was done 20 years ago.
@@a36538 Yes, and if you look up, you'll see the word "gullible" on the ceiling!
You can also see the reflections of the heaters on the inside of the sub's windows, even though the back of the sub is metal.
Totally normal cubmap behavior
i have no doubt they could have refined and polished small things like this for years. i guarantee they also know about all these visual artifacts. i'd rather have a game that's overall extremely good than have a perfect game that never gets released
I agree, but I also find screen space a bit jarring at times
while that's true they used Unreal, and these issues are known issues in Unreal for a very long time.
multiple AAA studios and epic games themselves all had the opportunity to solve it but so far no one did.
I think hes talking specifically about unreal engine.. the game dev cant do anything about it cz its mostly provided by unreal
That last bit is a bug unreal has had forever; they have one frame of latency on their GPU visibility culling, so when things (that were being visibility culled) get revealed quickly they pop in one frame too late. You notice it going through doorways in unreal games all the time.
I can't really blame them though; it's a very easy and general purpose way to get a huge performance win with no time cost to the game developer.
Are you certain about that? If that's the case, then why does it take several frames for the rocks on the ground to appear, and why do they not appear all at the same time?
Mm you're right, it might be something else. No shortage of fun bugs in Unreal :)
the culling issue in unreal is extremely annoying and the way people get around it is by either loading the geometry earlier by expanding the volume or by loading the level in blocks instead. I know some indies load the entire level because of this.
in this case I have no idea if that's the problem but they could have merged the rock geometries into a larger block and the culling volume might not covering it all, but well Unreal has so many bugs it's impossible to tell without looking at the project.
That's way more than one frame
"How am I supposed to enjoy the game if I can't see the player character's stubble?"
The reason the area around the pole doesn't show correct distortion in the water is because of screen space refraction. They are distorting the image under water by offsetting pixels based on the water normal and depth to simulate refraction, but the pole is occluding the spot that should be sampled. So instead, it just shows the un-refracted image as a fallback. If they didn't do that, then there would be a ghostly duplicate of the pole that would appear as though it was under water - which is also something you'll see in games with worse screen space refraction shaders.
Ray traced refraction, or no refraction are the only ways to avoid it completely.
If the game can detect the pole occlusion in order to call the fallback, then why not do a heavier worldspace mapping as the fallback effect? Presumably such a small segment of the screen shouldnt be too taxing to skip the culling (or rerender the section afterward)?
Then again, I'm not a graphics programmer, I'm just a hack fraud... so maybe there's something obvious I'm missing :D
@@CaptTerrific I'm not a graphics programmer either, but my general understanding is that GPUs don't do conditional branches. At all. If you want to trigger and un-trigger a graphical effect, either it has to be toggled by the CPU, or you need to express it in terms of matrix multiplies and other GPU-friendly branch-free code.
Stopping the refraction from sampling things too close to the player is probably doable branch-free, by computing a value for each pixel that, roughly speaking, represents how "reasonable" it is to sample from that pixel (based on how far away the rendered object is from the water), and then doing math to make the refraction effect vanish as this value gets too far towards the "unreasonable" end of the scale.
But if you're going to manually detect when this problem occurs and trigger a more complicated GPU effect, without paying for it most of the time, now you have to do a bunch of branching, which requires back-and-forth between the CPU and the GPU to figure out which part of the screen should get the bonus effects.
@@CaptTerrific without raytracing, the data is occluded and simply does not exist to fall back on.
With raytracing, it may be possible to detect the failure case and raytrace only those pixels. I don't think Unreal does that for refraction yet, even when Lumen is enabled - but it does mix screen traces and raytracing for reflections and GI with Lumen.
Screen space refraction is not usually physically accurate though, but a "good enough" looking approximation, so most likely there would still be unsightly discontinuities where a screen space effect switches to RT.
@@NYKevin100 nah, modern GPUs can do branches and loops. Granted, if different pixels in your 4-pixel cluster hit both branches, you'll be paying for both for all of them. The real issue here is to do world-space mapping, you need to prepare world-space data for it, which is the costly bit. Makes no sense to just do it for small artifacts.
Why would the pole occlude more than the area it appears on the screen?
I'm sorry about the spoiler at the start of the video but I found that part too relevant not to be included.
How dare you spoil a videogame from the late 90s? Think of all the people who haven't had time to play it!
Isn’t non point ambient specular light just refraction and not reflection?
Especially if it’s screen space…
Its not that far into the game I hope, cuz its only a bit beyond where I am at.
@@citricdemon That thing is actually totally new to the remake, so it's not from the 90s ;)
@@k5josh don't contradict me, peasant
I played the Riven remaster, saw these things, and thought about John and how he would comment that this wouldn't happen if you didin't use "shitty technology" like Unreal :D
Thanks for sharing!
It was funny when he said "I swear I've seen that in a game sometime" in reference to the Witness when the original Riven also did a similar thing with the frog rock outline
"That's something I'd expect from an indie game." .. it is an indie game.
Using the same engine as many AAA games.
The shaders and culling are part of unreal, highly doubt they're custom.
A lot of screen space effects would be fixed if they'd render the player character/vehicle/gun after the reflection.
this only works in vampire games
If it's 3rd person you'd be missing a whole ass character in the "reflection" though. It's kind of a difficult problem to solve in reality, unless you go the raytracing route, but as we know, that's quite expensive too...
one example of why screen space reflections are "bad", is in Control , when you're in the astral plane and there's those large black marble blocks , and even if one is at 30 feet away , you'll see Jessie's "shadow" on it.
It's a nice technique when you can hide those kinds of glitches... but hey, the only alternative is maybe having reflective probes , or raytracing it
All the screen space stuff in Control is really bad. I spent so much time tweaking the graphics trying to make that game not give me a headache. Eventually gave up and powered through, but it really soured my experience.
Isn’t that game like a tech demo for RT? Why would they cheap out with SS effects?
@@HeroOfHylaI feel you so much, reflection artifacts in Control are genuinely not good for health
@@hovikarnian6035 Maybe he didnt/couldnt use RT, or the devs couldnt use enough RT to replace all screen space effects for performance reasons.
That said, I wasnt really bothered with SS in Control. The nice thing about SS stuff is that its really easy to ignore/miss, and then its quite nice. Otoh stuff like motoin blur kinda triggers me, but thats luckily kind of a superfluous effect thats used badly most of the time anyway, as well as easy to disable.
in that last spot you also have like a branch you see reflected in the ocean 10km over lmao
2:02 bottom left there is hole in the water
I'm not sure why you're bringing it up, but yes, there's literally a hole in the water there through which you climb down to the submarine. It's part of the story that water has holes in it there.
That's a feature of Riven's world. There's a note in the game that mentions a microbe prevalent in the water that acts like a powerful bacterial colony. The colony reacts to the heat of the steam and deforms the water to a maintain a safe distance. Ghen, the antagonist of the game, uses this to form tunnels through the ocean and for dramatic effects to display his 'divinity'.
@@minuteman1043 There is visible tear in the water caused by seam in the mesh and misaligned vertex displacement. Good to know it is lore accurate
@@darrennew8211 bottom left man, bottom left, bottom left
@@lukkkasz323 You mean where the steam is coming out? Yes, that's part of the story. You mean the thing that looks like a seam between textures? Yeah, that's probably just a bug, but it could be one of the underwater pipes. I don't remember if there's one there.
What he is talking about is really more of a bug with the screen space effect. You could easily change the rendering to remove the red light on the water. Do the reflections before the occulus rift render, use stencil buffers, etc
6:23 those asset streaming bugs are probably the worst thing about unreal engine games. it always breaks immersion when you enter a new area or just look somewhere and things start poping in
Yeah, this stuff was impossible not to notice when playing the Riven remake in VR. It was still a neat experience, just somewhat wonky.
It's not just the pole, it's the whole railing. If you pause, you can see the waves disappear in a straight line.
In VR it's often not at the same spot for each eye so it attracts your eye because there's some kind of fuzz.
@@k0lpA Tbf that might be VR making things complicated, or the game just not being made for VR originally?
I love how this guy is immediately able to tell when an effect is screenspace vs RT
I also found the TAA ghosting really aggressive in this game.
i put this in the engine.ini to help reduce it, there are a million taa parameters for UE 5 perhaps others could tweak these more but its a starting point.
r.TemporalAA.HistoryScreenpercentage=200
r.DefaultFeature.AntiAliasing=2
r.TemporalAAPauseCorrect=1
r.TemporalAACatmullRom=1
r.TemporalAACurrentFrameWeight=0.20
r.TemporalAAFilterSize=0.36
r.TemporalAASamples=32
r.TemporalAA.Quality=1
r.CustomDepthTemporalAAJitter=1
It gets better if you can manage to get the framerate above 120
Aye, settings and configurability can help a lot with this kind of stuff.
One thing I really dont like about the Unreal Engine (especially UE4) is how it has these weird "packaged" settings, which by default might put stuff like motion blur or SSR in some generic "post processing" option.
Of course thats only default stuff, but its just like terrible default shaders in UE3, a lot of devs just go with it.
@@termitreter6545 ya the default settings for a lot of unreal engine stuff generally sucks and adds a lot of blur or smearing to many of the post processing effects. Degrading image quality.
We live in a society where a guy complains about the best looking graphics I've ever seen running cheap hardware.
Remembering that you should never 'hate' this re-rendering technique, it is WAY cheaper to process and render than other methods.
Keep blowing, fan! Love your clips ❤
Thank you! I appreciate it!
"that's something I would expect from an indie game"
... well yeah, cyan is an indie developer
Given his immediately prior mention of Unreal, surely there's an implied "indie game [engine]" in that statement. This video game, if created on unreal, is certainly *not* an indie game engine even if it's an "indie game".
in my opinion he has too many opinions
@@snooks5607 old man gatekeeping graphics and gamedev, seen it over and over. it's sad his fanbase enables him to do this. i don't even get it, witness is an ugly and boring game nobody wants play/complete. choosing not to render most of the shadows is not an artstyle it's just lazy and ugly. he probably didn't get the sales he expected which made him bitter like this or more bitter i guess. constantly complaining never coming with any solutions. don't understand what all the fuss is about with this guy tbh. i know at least 20 devs much more inspiring and doing actual cool stuff compared to blow and a lot of these people are half his age if not younger. witness is a stale and boring game without any exciting mechanics or features whatsoever.
I don't think he is criticizing cyan for that, he is trying to take a jab at unreal engine.
@@autochromesdid Johnathan Blow bite you when you were growing up?
I LOVE the overall graphics of Riven. They have done a great remake, but I also hate the limitations of screen-space reflections. For this reason, I love that ray tracing has come to video games.
His attention to detail is actually amazing.
Games after Half Life 2 just can't make water to that standard anymore
You mean games after half life 2 aren't still using baked lighting and cube maps? No shit Sherlock.
@@ranga821I think Half-Life 2 used planar reflections for water instead of cubemaps
@@ranga821Don't see why not. I know realtime lighting is good for like, open world games and such, but for many other games, baked lighting looks amazing and takes very little processing power. Halo 3's lighting still looks great to this day, putting many modern games to shame imo.
Thanks you! Always thrilling to see Blow do his thing - blast industry standards, and being awesome at the same time
He's not wrong. Screen space reflections and ambient occlusion look absolutely terrible, especially in motion.
Only time I've ever seen good ambient occlusion would be from Source 2 games. Valve uses some fancy shinanigans based upon their custom light-probing systems.
really... I did not know about this type of reflection rendering in detail...
I was watching a newer scene in FFXIV recently and saw that oddball rendering glitch at 4:30 over an entire scene with water. It was horrendously distracting.
SSR has been a common rendering technique since the 7th generation. It's a pretty cheap way to do reflections
@@crestofhonor2349 Well I wouldn't say it's cheap...
It's funny with how many buffers they draw to to do deferred rendering that they don't just have a reflection in there.
The whole time I was thinking why does this game I don't recognize feel so familiar
Is there anything jonathan doesn't hate?
me
His water filter
Trump and Musk
@@SkankingKyle nice
this is exactly what modern gaming is modern games are made for other game artists normal people dont even see crap like this or dont even care about it lol
I want to know ow how Far Cry 2 used real time reflections that even work with objects in multiplayer such as trees. It’s fascinating.
I know it’s some kind of trick but it’s really cool.
I've also found that screen-space rendering ruins the immersion of many games that rely on it. Every time I play a new game with water, I always make sure to look up and down to see if reflections disappear when the rendered objects are culled off-screen. I also check to see if occluding geometry ruins the rendering of water. Things as simple as a branch or fishing pole will cause the items beyond the water to be occluded and that will ruin the relections. So far the only games I've seen that render water somewhat properly are Elder Scrolls Online and properly ray-traced games.
So you're saying, other than a handful of games of which you can name one, all the others are "ruined" because water only looks good 90% of the time and the other 10% still looks good but slightly imperfect...wow
😅
@@borstenpinselyes, notice how at the start he immediately lost immersion when he saw the screenspace bug?
@@pliat cool, that means any other game with non-realistic graphics can't be immersive. Like Super Mario Land for the Gameboy. That's a joke of a statement.
@@borstenpinsel no, if the game isn't going for realism at all, then that's ok. I can be immersed in a game, but as soon as the game breaks it's art style i notice and become unimmersed. Imagine if Mario ln one level was just ultra realistic, wouldn't that be jarring?
I couldn't unsee it after he showed it....
im so happy im not the only person who doesn't like screen based reflections I've always had a feeling it was a shot mash up until they can make something better
The fence post is probably a shader drawing part of the water and the mask is messed up
the game hunt: showdown during the pre- cryengine update (before aug 15, 2024) should show the exaggerated version of SSR visual bugs. I'm not sure if they've fixed that post-update (aug 15, 2024) yet.
Water refraction is a frame buffer effect - the whole scene is rendered, then the distortion is applied on top. This has a side effect where objects that are in front of the water can appear in the water refraction erroneously (this is visible in many games). The cutouts around the railing are likely some misaligned mitigation of this effect.
The witness avoids this problem by not having any water diffraction effects.
Makes me wonder if you 'couldnt just' have a very low detail version of the world reflected in the water, kinda like in old games? After all SSR reflection do a lot of noise anyway, you hardly can make out a detail, so the reflected world could be extremely simplistic.
when are they going to remaster this to bring it to 1997 level graphics
like a de-make ?
@@wacky.racoon no, to bring it to the quality of pre-rendered graphics from the SGI workstations
@@mfrunyan I've watched a few videos where people try to replicate the older pre-rendered graphics, and it's funny how much effort you have to put into downgrading the way light and materials are rendered to get that look.
Port the map into POV-Ray and render them yourself.
@@devzozo You literally compare real time rendering with old school ray traced pre-renders that typically take hours to process? Are we for real degrading to the moment where people nitpick miniscule graphical glitches? Back in the days, we could only dream about graphics like this, but now, when near total photorealism is here, people start whining over some light specs and refraction errors
Man's got a point. That feeling of knowing it's a hack stays with you. I remember fooling with this stuff, and then looking at a shadow that moved a little weirdly on my wall as I got up from my chair. I thought to myself instinctively something along the lines of "there's that silly lighting inconsistency again" before I realised it was a real optical illusion that just looked like a bug in a videogame was happening IRL
I realised halfway through this video that this guy has made some of my favourite games
I see this in other games like ark when you're flying a pteronodon over the water
yep! ray tracing reflections solve this problem but it is more expensive to compute :)
Problem in screen space reflection is that it easily fails when camera tilts. It works well if camera tilting is limited. Trick for planar surfaces rendering twice isn't problem neither while GPU:s are so fast.
But that water refraction issue top of poles is just horrible.
yeah but it doesn't work either if there are things in front of a large body of water, there is this weird halo effect around them where the water lose the reflection and it is very obvious.
@@Danuxsy
I think that was a bug and can be solved rendering object what character holds in separate render pass.
@@gruntaxeman3740 no it's not. the information that would be used for screen space is missing when an object is in front of it.
@@Danuxsy
I mean that screen space reflection should be done before rendering object in front.
It can be done. Rendering HUD doesn't make that kind of issue.
@@gruntaxeman3740 not sure if that is possible and what the compute cost would be, might not be worth it.
"I swear I've seen something like that in a game before" I mean JB was inspired by Cyan, Cyan inspired by JB. Its all good.
Has there been any mention of Braid Anniversary Edition's sales performance? I'm curious about if it might help alleviate some of the costs of running the studio significantly.
I will upload a video about it soon! :)
@@BlowFan thanks!
The thing that continues to confuse me is that if we go back to old games, games that predate PBR, predate specular even, we get better reflections than what we ha for a while in full proper PBR games since up until not so long ago with real time Ray Tracing, we kind of just, forgot how to do reflections for about 15 years, I do not understand how or why, at first, we have games that cheat by flipping level geometry and duplicating entities, because doing real reflections was too expensive, but meticulously optimising set pieces allowed to still deliver the effect in a controlled environment, then we have the reflections in Unreal, Half Life 2 an a few other games which are just great, you see the level, with characters, objects and all, including yourself, in third person, as other players would see you, then we get full PBR and screen space and now the reflections are sloppy, off, misaligned, and incomplete, anything you're not seeing, is not reflected, then now, we finally have ray tracing, where not only is the reflection correct again like 20 years ago, but they now deform and shimmer exactly the way they shoul, and you see yourself in the reflections again, except, in first person, you're just a pair of floating arms holding a verticallty sliced hollow gun that has a spare magasine an shell casing floating bellow it, we still haven't got the ability to see ourselves as others see us back, we see only what we're meant to see, as a result, seeing what we're not meant to see, the fact that only the parts of the guns you see exist and that the spare magazine just is always hanging down there, for your floating arms to grab, put in the gun, so it can teleport down there again swapping place with the other one that just stops at the very edge of the screen, nice work going through all the effort of properly animating that illusion, every single puddle an glass window reveals the truth in a way that feels very wrong and unintentional... Maybe in 10 years? Unless we somehow regress back again.
What he doesn't talk about is how cheap and how Universal SSR is. It isn't perfect but runs fater than a dynamic cubemap while not requiring rendering the scene many times.
He talked about planars, which wouldn't fly in any 2024 game apart from super basic ones as your time to render each frame will basically double. And it won't take into account dynamic objects.
SSR + Cubemaps + Envmaps (in certain objects like water) is the way to go. Least amount of artifacts for the least amount of performance hit.
SSR can be very accurate as far as position. You can see this in games that use RT and overlay ssr details.
I think my two least favourite aspects of video gaming are pop-ins and temporal aliasing. When I'm playing an immersive game like Arma III or DayZ (similar engines) and suddenly I turn my head and 50 bushes pop-in and I can't tell if I saw an enemy. Or the trees will madly shimmer because of the aliasing as I turn, and I again can't tell if there's an enemy in the trees.
But when you aren't turning or moving, everything is beautiful and perfect! Arrrgh! So annoying.
"What's the point of Unreal Engine if it doe indie stuff like this?"
I remember playing Gears of War for the Xbox 360. Everything would first load in potato, then slowly it would pop into 'I look good' mode.
It's not 'indie' stuff, that's straight up Unreal Engine. IMO, indie games are where the magic is at, not the other way around.
"Current gen Unreal bad because Unreal had pop-in 15 years ago"
@@mechadeka Apparently so cause it still does!
My brother makes fun of me for ranting about this every time we play Hunt Showdown. It is a beautiful game, especially by the standards of its release time. But for some reason they chose screen-space reflections on water in a game filled with swampy water surfaces. Whatever your character is holding in front of them creates a huge reflection on water in front of you and it is so incorrect, jarring, and distracting. I am sure there are good reasons for not having player limbs and held items draw in front of and on top of everything else. Not wanting to render those bg pixels again to be overdrawn, some corner cases where dynamic objects can come between the camera and your body, not being able to handle actors colliding, needing the player to be in-world and not a special draw case, etc. But it bumps for me every time. (Of course my brother, sincerely a smart person, didn't even notice it until I pointed it out. Most people don't look for this stuff and their brains just happily filter it out.)
They likely chose screen space reflections for performance reasons. Planar reflections are quite a bit more expensive. Ray tracing wasn't much of a thing either at it's release. Redner to texture wouldn't work well either
it will be replaced with ray traced reflections in future games as the hardware is now (mostly) able to support it.
@@crestofhonor2349 For sure, and crytek invented and/or popularized a lot of these screen space techniques over the years. All cutting edge stuff in their time. I guess I was scratching my head on the "why is the player in the screen buffer being used for the reflection" part.
I see now I said "for some reason they chose screen space reflections for [water in a water game]". I get why they chose the technique, but the implementation has some flaws beyond minor artifacts like half a lake covered by the false reflection of your revolver barrel. I am sure they are aware of this and made smart choices/compromises for overall look. Just a pet peeve.
@@bran_donk yeah no one really like SSR but it’s necessary unless you want to do Ray tracing
Well in the case of the light glowing on the water, a good screen-space implementation would check the distance between the light source and whatever it's illuminating onto using the G-buffer, so it shouldn't even light up the water. It's not a screen-space problem, but an implementation problem. But I do have to agree screen-space reflections are wank.
I think when you focus too much on a specific sector such as graphics in this case, you forget the main part of the whole thing which is having an actual game to play
Fr. this is just a basic game bug that hardly changes a thing. that bald guy is clearly just hating it so hard because he clearly likes to complain about everything
was watching happily like "oh who's this guy, maybe he has some cool insight" but nevermind, he made Braid and The Witness lol.
This kind of stuff I really dislike and find distracting too. Talos 2 has ton of it (weird reflections, temporal resolution, ghosting, texture pop in and dynamic resolution change in your face,...) at least in that game I can chalk it up to "weird robot vidion glitches" for immersion...
The correct alternative is raytracing, and so many people complain that you can't see the difference :(
When looking at the extra clip, is this a UE thing or a developer error / decision? I don't know much about game dev but am curious.
I suppose UE could be better configured by default, but ultimately it's up to the devs to use the tool to achieve the desired result. Right?
It's not like it's impossible to do anything in UE that's possible in another engine or vice verca. The difference is their unique functionality and setup/workflow that might be more or less suited to a particular style or type of game.
screen space reflections are amazing for grounding complex surfaces in the lighting environment, any kind of mirror/water reflection is a gross misuse of it.
and guess what crysis 2, the originator of the technique does? it uses ssr for objects in the scene and planar reflections for the water, with some cube maps for the static environment, literally perfect.
okay, but what's the alternative? RTX? That's super expensive.
Couldn't they use a depth buffer to create a mask of objects that are in-front of the water plane and then use the edges of the mask to blend with the screen-space effects?
4:25 I think it's because they're rendering a simplified geometry (the collision?) to "clip" into the screen-space distortion. And yeah... it's the entire railing, not just the pole... Like the collision doesn't 100% match it (being simplified and all), and also seems to be shifted upwards a bit. It's definitely a bug, but most players would probably just blaze past that, tbh.
I've learned more about Outer Wilds from this clip than any other offhanded mention of the game on the internet.
idk if you mean outer wilds uses this rendering technique, but the game Jon mentions is Outer Worlds, which is different. Wilds = fallout in space. Worlds = puzzle game groundhog day in space
@@crimsonhawk52 lol you have it backwards:P
@@crimsonhawk52 Outer Worlds = fallout in space. Outer Wilds = puzzle game groundhog day in space
there, better this way
screenspace reflections alsmost always get every water reflection wrong.
realistically, if a tall structure is far away from a lake, it does nto reflect in the lake, because it is too far.
screenspace reflects it anyways, being ignorant of a too large distance, usually because the z-buffer does not handle large distances well.
They should add path tracing, UE5 supports it, and the OG game was literally a slideshow anyway, should feel more authentic.
Using Lumen relflections and Lumen GI would help a ton as it too doesn't have these issues while being faster to render than Path Tracing
you can just add ray traced reflections in the options menu and it would solve this.
@@crestofhonor2349 Standard Lumen uses very low quality BVH, and relies on screen space fall back to fill in the gaps, will not give you that pristine quality offline rendered CGI look.
@@Danuxsy Path tracing will not only fix incoherent screen space reflections also will fix light leak, shadow pop-in and shadow map flickering. Path tracing is the holy grail of graphics, might as well go all-in for future-proofing.
@@DripDripDrip69 ugh yeah but the computing cost of that is a lot lol
How about Unreal Engine 5 Screen Space Ambient Occlusion? It fizzles in and out of existence like crazy. UE5 without ray tracing is rough, man.
Both these rendering artifacts belong to the category of graphics glitches that ray tracing fixes completely. Basically reflections and refractions in general just aren't an issue anymore with ray tracing, they always work and are perfectly accurate.
@@jc_dogen Yeah, as Blow says the forward rendering engines of that generation solved this problem by rendering the screen twice, the second time from the perspective of the reflection. Modern engines/GPUs aren't designed to be able to performantly render the screen multiple times because the industry has traded that ability in when everyone moved their engines to deferred rendering, which has too many other advantages to give it up for the sake of robust reflections.
@@jc_dogen I can tell you have no idea what's being said to you.
@@mechadeka He's not wrong. Deferred rendering has introduced a major problem when it comes to anti-aliasing, basically preventing them from using traditional AA techniques. As a result the industry has settled for Temporal Anti Aliasing which introduces aggressive screen blurring and transparency issues.
Yeah, screenspace reflections are cool in the sense that they are very efficient and thus can be rendered even in weaker hardware. But it causes all sorts of artifacts.
I wonder if it's the colliders on geometry are culling stuff out because they have an alpha material that isn't set up right or has some technical deficiency that makes it so you can't avoid that without significant tinkering with the material.
Maybe i would fix another thing first. The dude is running up these narrow stairs with super short steps faster than he walks on ground.
Talk about realism, just zooming up at 45° angle as if he was actually flying a drone
FYI it would have been possible to avoid the lens glow bleeding into the water. They can just render the lens on a separate render target then composite them later.
Honestly screen space are worth it. Most gamers are fixated on FPS rather than high fidelity reflections. Making your GPU do an entire extra render is not worth it. With the extra time saved in the GPU you can do so much more in terms of other effects.
Those newer Resident Evil remakes have awful screen space reflections, they are soo distracting that i had to turn them of, mostly due to the occlusion problems.
true
Ray traced reflections are blurry aswell, good old cubemaps is the best option somehow
That old technique was used in Half Life 2 and bunch of other games, and I like it. Screen Space Reflections I Hate.
This is sort of the difference between an artist seeing a minor anatomy error in a drawing that most everyone else would see as fine. Nothing wrong with being a perfectionist in that aspect. I think his criticisms of the Unreal at the end is just programmer error in setting the parameters wrong, and not a result of engine limitations.
Well, some of it is just SSR being SSR but yeah it could use some additional optimizations but Cyan is an indie company. I can understnad the dislike of SSR as I don't like it all that much but I do understand why it's used and that's for performance reasons
screen space reflections can look horrid and be very obvious at times, esp when there are large bodies of water (everything in front get this weird halo effect where the water doesn't have proper reflections anymore).
A lot of modern games are just screen-space-effect extravaganza fests slathered all over the screen and muddy up the image quality
dude when i first tried out UE back in the day i really thought it was just my low res pc spec but no. this happens in ARK too and other games.
I could watch Blow getting triggered by inaccurate graphics for hours.
He should play Half Sword playtest and give input!
The Talos Principle 2 (Unreal Engine 5) has the same problem with screen space water reflections reflecting stuff they shouldn't. It looks really bad.
People (gamers?) complain about distracting graphical glitch stemming from rendering technique optimization. Yes, SSR is an optimization technique. Yet when dev chooses a more proper, more expensive technique, people complain about performance and unoptimized games. The truth is, many of them don't even understand what's going on.
well covid jon seems more pleasant than normal jon
One of my most popular videos is about this exact same thing lol
I wonder how hard it would be to just tell the renderer to ignore that lens thing and still render the lighting under it normally
It's literally only looking at what's currently on screen to generate the reflections, and there's a bunch of stuff covering the screen. Ignore it and reflect what instead?
Edit: I'm wrong, you can use multiple layers.
There's a comment from @dorbie they posted an hour ago about just that
@@sasuke2910 You _can_ use multiple layers sure, but then you're back to rendering a large portion of the screen twice like Blow was saying - and modern game engines _really_ don't like rendering the viewport more than once, on average it actually performs worse than it used to in old forward-render game engines.
@@KillahMate You can draw the screen to one layer, the overlay to another, then sample the "world layer" only for the reflections. This creates a little bit of overdraw and prevents some z culling, but it's not that bad. You still have other issues that doing multiple angle draws would solve, but you could avoid this specific glow overlay issue.
@@KillahMate To expand, I think the thing JBlow was referring too was planer reflections, where you render the entire scene from a different 3d perspective to collect the reflection information. Not just overdraw, where you have just have to draw an extra fullscreen quad.
I would rather have the frames, I can live with some weirdness here and there for the sake of optimization.
And I accidently ended up bumping on the Witness game designer's channel moments after I was thinking about an article I once wrote about that game. Awesome! I really loved to hate The Witness. It makes you mad and paranoid in all the right ways xD
stuff can figure out depth from a single picture now right? can it help screen space?
I'd rather have no reflections at all
bro sees the matrix
only devs care about this. normal gamers wont notice this and if they do they wont care
Not even all devs will care about this. Whatever dude is the digital realm things are glitchy
I really hate this, and have been complaining about it for a decade.
The real irony is, the "correct" technique he mentions works fine, and is way faster than raytracing (in most cases), but everyone jumped on raytracing instead.
Riven is technically an indie game. Like 20 people worked on it, self funded.
Did they code the engine for the 2024 version? Don't think so, so that's not really relevant for Jonathan's comment (which was about how the _engine_ renders those reflections).
@@RFC3514 none of the other indie developers i know have ever coded an engine though.
@@RFC3514 Since when is making an entire engine required for being an indie dev?
@@RFC3514 Most indies don't. Do you somehow think that building your own engine is a prerequisite for being an indie? Because I've got news for you...
@@RFC3514 statistically speaking, if you coded your own engine, then you're much more likely to be a AAA company than an indie dev.
3:55 would it take a lot of resources to include the z buffer in these screen space reflections? this way it wouldnt just look up but do another comparison..
It is doing that, his explanation is wrong.
the water wasn't reflecting anything at all really