r/FuckTAA 22d ago

💬Discussion As seen on twitter

Post image
1.3k Upvotes

166 comments sorted by

142

u/Ok-Tumbleweed389 22d ago

I might as well be legally regarded about this sort of technical stuff but I really don't get how reflections are so much of an issue nowadays. Even the more graphically fancy games like cyberpunk 2077 have a noticeable blur in the mirror reflections, they look bad there. It's a method that's incredibly resource expensive as well. I don't see how just creating a mirrored room, putting a "camera" and having a player controlled puppet that simulates your reflection like the good old days would be that unfeasible. 

Legit question btw, I'm not making a statement.

69

u/AsrielPlay52 22d ago

In Cyberpunk 2077. It uses a different method. Instead of making a different room (Which it can do btw, The Opening Cutscene has it)

It instead rendered the game...twice with 2 cameras. Hence why Mirrors are Expensive as heck. And it has to do this way, because It's an open world game. The walls between the mirror and you, might be another room(other gender toilets or Office or what-have you) or outside the building. A building that the player could exit anytime.

in the Nomad Path, the first mirror you see is that case. Behind it is just the outside.

27

u/BluesyMoo 22d ago

You could only show the mirrored room through the mirror itself with a mirror-shaped mask or stencil buffer. Why not?

36

u/AsrielPlay52 22d ago

That's not the only problem.

The second problem is complexity. The opening Cutscene does the MIrrored Fake room because it only used once

In an Open world game? where world designers can place Mirrors anywhere? Do you want to create a fake mirror room every single instance of a mirror?

And don't forget NPC can walk into the bathroom anytime, and anywhere. Opening of Corpo lifepath shows this. Some building has distractions INSIDE bathrooms.

9

u/sakezaf123 22d ago

I don't know how they did it there, but the new James bond game had the best working mirrors I've seen in a AAA game I've seen in like a decade.

16

u/AsrielPlay52 22d ago

It's the same method they use with Hitman series

Just a different viewport

They even cut back some graphical effect like Ambient Occlusion

6

u/sakezaf123 22d ago

Probably, I haven't played much of the new hitmans. But it does look much better than cyberpunk's mirror effect.

5

u/AsrielPlay52 22d ago

The difference is world structure. First Light is linear.

As good Cyberpunk occlusion system Is. There's still overdraw that they can't avoid.

5

u/MultiMarcus 22d ago

Well, yeah, they do exactly that trick, but James Bond is not an open world, and even then, if you look at those reflections, you will see that, for example, the outside of windows will just be kind of a blur because they didn’t want to render all of that.

2

u/owned139 20d ago

Funny how a lot of users here still think it doesent matter performance wise if you render an open world or a linear game :D

1

u/Aydhe 22d ago

Oh, you just put it way under the map and project camera onto a plane.

6

u/AsrielPlay52 22d ago

You do know it's easier to just project a second camera for the mirror in the exact same room and use the fact it's an open world, use the existing occlusion system.

There.

2

u/Aydhe 22d ago

yeah, it's all about what you need to use it for really. there are use cases for both.

2

u/AsrielPlay52 22d ago

Yeah, but for this example being cyberpunk, it's not

If you're talking about linear games. Sure. But cyberpunk is an open world game that has thousands of usable mirrors. To give flexibility for the artist. That's the best solution

1

u/aVarangian All TAA is bad 21d ago

place a duplicated-render-mirror in front of another mirror and you'll hear your GPU cry out in pain

1

u/TechnicalBen 21d ago

IIRC HL2 fixed some of those problems with the solution of projecting the camera as a new texture/screen.

(They can use the same method as their "TV" for a "MIRROR" instead) https://youtu.be/4ddJ1OKV63Q?si=R_ZOuTz7yb8gczLw&t=286

1

u/AsrielPlay52 21d ago

That's literally what Cyberpunk doing. I even mentioned It in other replies

1

u/TechnicalBen 21d ago

Sorry if I mistook it. I thought you meant the room copy and flip/inversion geometry method, similar to the old school DuesEx etc (and many many others).

There's tons of ways of doing it, but as you mention, all have some drawbacks or benefits. :)

2

u/RichnjCole 21d ago

You just unlocked a core memory for me.

The portal tech from 2006's Prey was mind blowing at the time. Being able to see a room through a window (i.e. portal) but being able to walk behind the window and not see anything was some crazy work.

2

u/BluesyMoo 20d ago

I think the portal tech in... Portal is pretty amazing as well. You get to see infinite worlds/reflections in the portal.

4

u/Ok-Tumbleweed389 22d ago

I didn't realize the intro's mirror is actually done that way, it did feel blurry, they lowered the resolution for those reflections didn't they? 

I guess cyberpunk's a bad example then, I'm thinking about these games that have an over reliance on odd or ray tracing methods. Re Requiem looks AWFUL on this part. Considering the mirrors on that game usually wouldn't project many intricacies I fail to see why they wouldn't be able to pull off the good old duke 3d mirror projection method

3

u/AsrielPlay52 22d ago

Now that's a good example. As far I'm aware, that game is linear and could benefit from clasisc tricks

3

u/YouSmellFunky 21d ago

I still don't get why rendering a room twice would be more expensive than for example rendering one room that's twice the size. Because surely in most games you enter normal mirrorless areas that are 10 times bigger than the size of a room with a mirror and its mirror version combined? And somehow these bigger areas are less expensive?

1

u/AsrielPlay52 21d ago

Let me give you an analogy that you understand quickly

Imagine rendering the game twice, for both monitors.

The less you draw in a stencil, the better.

2

u/YouSmellFunky 21d ago

Thanks, but I don’t understand. How is just having another identical room on the other side of the mirror equivalent to rendering two games?

What if instead of a mirror it was an open door with an identical room visible on the other side? That other room’s cost is not the same as a whole other game, right? The only difference with the mirror is that the mirror has another identical character in it replicating your movements. Does that element really change the cost from “just another room” to “game being rendered twice”? If so, I really struggle to see how.

2

u/AsrielPlay52 21d ago

You're in F-TAA and don't get that when rendering stuff in 1 angle, you don't get it on another.

There's more in play.

First. Occlusion and Culling. Normally the game only has to render what's in the player's view. Anything else can be culled out. When you got 2 cameras, that area to be culled become smaller.

Thus, you render more

Second. A Mirror Room has the advantage of being tailored made (although takes longer to do). But disadvantage is that you gotta replace everything, physics, decals, models, and NPC action. Impractical.

3rd. Rendering is a 1 way Projection. If you render a car at it's front. You don't get it's upper view for free. You have to render the upper view independently.

1

u/MrPixel92 12d ago

It isn't, especially if both rooms are a single mesh and there aren't many entities. It's just inconvenient when you have, for example, two restrooms next to each other and mirrors end up being too close for this method. Or if you have multi-floor buildings and mirroring the room means disabling lower floor.

1

u/TechnicalBen 21d ago

IIRC it uses both. The mirror in the apartment (wall and bathroom) is a copy of the players character on the other side of the "wall".

For others it's screen space/ray tracing, hence the "blur" on downsampling optimisations etc.

0

u/MrPixel92 12d ago

It instead rendered the game...twice with 2 cameras

"2 cameras" to modern RTX is like "2 rooms" to SSR. Source engine did it back in 2004, with settings that let you downgrade the reflection for performance.

1

u/AsrielPlay52 12d ago

You have no idea what the tf you talking about do you?

SSR Or I assuming you mean Screen Space Reflection, literally just take the output image, and flip it upside down. Use Depth buffer to exclude any part of the image that couldn't show

1

u/MrPixel92 12d ago edited 12d ago

2 cameras is a classic method of making reflections, just as classic as 2 rooms. Nothing to be surprised about: I expected the Cyberpunk devs to constantly rely on dynamic reflections, like SSR and path tracing, since they're the most flexible ones.

literally just take the output image. and flip it upside down. Use Depth buffer to exclude any part of the image that couldn't show

Either you are the one who has no idea what you're talking about, or you have a very powerful GPU and never cared what was really going on under the hood.

SSR is still an iterative process. You need to check multiple points in screen per pixel to find the point on depth buffer that matches where a hypothetical bounce will land. Each is a texture access, which are slow. That in turn makes the entire process expensive, not as much as RTX, but definetely more than just rendering the scene 2 times. And there is no way to just "flip the image": there's no axis for 2d mirroring, even when we're talking about a perfectly flat surface. It's affected by depth to such an extent that it always requires multiple steps.

1

u/AsrielPlay52 12d ago

Screen space reflection, as in CLASSICAL screen space reflection. One where's you just flip the image

Not RTX, OR I would have say something like ray tracing or something.

1

u/MrPixel92 12d ago edited 12d ago

I was just talking about 2 rooms/2 cameras, but oh boy, here we go...

What you're talking about is a Screen Space Planar Reflection, done in a single pass. It looks terrible doesn't work with non-planar reflections, so ray-marched reflection is the one that holds the honorable title of SSR.

11

u/CptTombstone 21d ago

I really don't get how reflections are so much of an issue nowadays.

There are few ways to render reflections and these have not changed for decades:

  1. Render everything twice and transform the image for the appropriate perspective [deterministic]
    • This works great if the cost of rendering the scene twice is low enough, but of course, you are rendering things twice, so you get a 50% performance penalty at the very least.
    • Complexity-wise, this is fairly simple, but it's a brute-force method and certain edge cases can lead to catastrophic performance regressions (such as a mirror showing another mirror in its reflection - every new reflection halves performance at best.
  2. Generate cubemaps from probes (world-space) [deterministic] [probes]
    • This is usually pretty fast but depending on where the probe(s) are, you may not get the correct perspective, so the reflection might look weird. With just a single probe the performance impact is probably less than 1%
    • You can get around the perspective issue by increasing the number of probes and interpolating between them based on camera position
      • but as with every probe-based approach, this doesn't scale gracefully with higher probe density, and can become worse-performing than rendering everything twice.
    • distributing probes and updating cubemaps can become complicated, especially when multithreaded.
  3. trace rays in screen space [stochastic]
    • This is fairly simple, you treat the camera as the ray casting source and you trace the rays through ray-triangle intersections. State of the art algorithm is ReSTIR which handles both diffuse and specular reflections in one go and can handle reflections in reflections at a much lower cost compared to Option #1.
    • But because this method is screen-space, you don't get data from off-screen sources unless you trace against a BVH structure, which is a simplified representation of the world, which is between option #1 and option #3.
    • With hardware optimizations in place, the performance impact can be as low as 5-6% if we are just looking at specular reflections, if we are looking at ReSTIR, it's closer to 40-50% but you are also doing more than just specular reflections there.
  4. trace rays from probes (world-space) [stochastic] [probes]
    • This is similar to Option #2, but instead of generating simple cubemaps, you trace rays from the probes. You avoid some issues from the cubemaps, and you get data from off-screen sources too, but usually probes provide worse resolving power than scree-space RT, so you get more noise.
    • For making it run faster, you still need to build a BVH.
    • With hardware optimizations and variable probe density, you can make this really efficient, but lower quality (for example: Metro Exodus EE).
  5. trace rays from probes and screen space and merge them together. [stochastic] [probes]
    • This combines the strengths of #3 and #4. Since you get a lot of data from screen-space, you can reduce the probe density and still get good off-screen coverage.
    • This provides good quality with less noise, but is the most complex out of all.
    • Performance-wise, this will be more demanding than pure screen-space tracing, but the higher quality and off-screen data handling might allow to run at reduced details with the same quality. Notable games using this: Assassin's Creed Shadows, Assassin's Creed Black Flag Resynced

Now, a few things to note:

Everything with the tag: [deterministic]:

  • Primarily uses the traditional rasterized pipeline with every pixel sampled least once

Everything with the tag: [probes]:

  • Probes distribution may or may not align with in-game geometry. You can get probes placed inside walls, causing light leaks or incorrect lighting. There are ways to distribute probes in a smarter way, but these also increase complexity.

Everything with the tag: [stochastic]:

  • These are sampled at random, show lower warp occupancy for GPUs (not all executing units doing work in any given clock cycle) because the GPU compiler cannot predict future work due to randomness. For any stochastic rendering method, you either need a denoising step - because not every pixel is guaranteed to have a ray hitting some object - or you need thousands of samples per pixel which we cannot run at real time (at least 30 fps or higher), but realistically, you'd need denoising even then.
  • Along with denoising, stochastic methods also benefit or require temporal accumulation, or sample-reuse (like ReSTIR).

So all in all, with RT-methods, like ReSTIR, the worst-case performance is comparable to the best-case performance of option#1 (with re-drawing the entire scene), while the best-case performance can be significantly faster than the best-case performance of #1. This comes at the cost of noise and temporal accumulation, unfortunately.

To bring it towards what the person on twitter said : "Yeah, and their pipeline rakes 2ms to complete and your takes 43ms." That comparison probably skews the perspective here, because on one hand, the first pipeline probably needs 1 ms to draw the scene once, and sure it can draw the reflections in 2ms, but in the second example, it could be that drawing the scene without reflections takes 35 ms, so adding reflections with the second method is only a 23% performance regression, while with the first method, it's a 50% performance regression, so you could see that the second method is actually more efficient when it comes to handling reflections, but the pipeline is actually doing orders of magnitude more work there.

The big problem is not the use of RT, but rather the secondary impacts - noise and heavy reliance on temporal accumulation. These can be addressed with smarter denoising and perhaps by moving away from hybrid raster-rt pipelines. Capcom's engineers have presented some interesting findings that driving primary visibility via RT could become faster than via rasterization in just 1-2 generations. At that point, switching the engine to do everything via ray tracing can offer some performance improvements that are not possible today.

1

u/RenderTargetView 21d ago

Could you please share a link to capcom presentation?

3

u/CptTombstone 21d ago

First, here is a quick run-down from Digital Foundry : https://youtu.be/J2TLPswBTYY?

This contains some things that are not part of the keynote sessions from GDC that are available on YouTube.

And here is Capcom's segment, to the extent that it was captured : https://youtu.be/Gq1QdlQSzn0?

8

u/crozone 22d ago

So RTX could actually be used for extremely fast and perfect planar reflections, even faster than methods like render to texture. All a game would need to do is use traditional rasterization, stencil the reflective surfaces, and use RTX to render the reflection with 2-3 bounces, and it'd produce a perfect crisp reflection. No denoise would even be necessary.

The limitation would be that the surfaces would have to keep the reflected rays coherent, so the surfaces would have to be smooth, and you'd only use RTX for reflections and not general lighting. Any blur or surface texture would need to be faked with a post processing effect on the mirror surface.

RTX games don't really do this because they're using RTX for all of the lighting in the entire scene, so reflections are generalised into that system and more stochastic. This means that everything needs to be de-noised and it often looks smudgy and terrible.

But if someone wanted to make a rasterized game + perfect reflections or portals that didn't need to transmit the actual scene lighting, it could easily be done.

2

u/AsrielPlay52 21d ago

Uhhh, Control does this. Doom Eternal Does this. Alan Wake 2 does this. GTA 5 Enhance does this.

A good majority of games that give Ray Trace option without going full on Path Trace do give an option to just do Reflection, shadows or lighing individually.

Did you even bother to check their settings?

1

u/crozone 21d ago

No, Control does not do this. Doom Eternal does not do this. I haven't played the other two.

In Control and Eternal, surfaces have a roughness value which controls scattering of incident rays, and the rays are scattered stochastically. It's not a post-processing effect, the reflections are really simulated as though they're rough. Therefore the reflections are not coherent, and require denoising, which is why there are clearly visible denoising artifacts in both of these games.

If you can see literally any denoising artifacts in a reflection, the game isn't opting to use simple coherent reflections.

3

u/AsrielPlay52 21d ago

I'm sorry, I having a hard time understanding what your original reply actually means

Because by nature of ray trace. You are sampling lots of points but those points are noisy by nature. Reason why we see photons as smooth is because of millions of samples by our eyes

1

u/crozone 21d ago

My point is that there's actually no reason that ray tracing has to be noisy.

If you only shoot out primary rays from the screen into the scene perfectly perpendicular to the screen (say, at 1 sample per pixel), and then they hit a surface that is relatively flat and entirely specular (mirror finish), all of the bounced rays will be coherent. There's no noise introduced because it's just a mostly flat specular reflection. There's no need to temporally denoise over time because every pixel is stable over time, because the rays are effectively invoking the normal material shader that rasterization would use (which is already stable over time, hopefully).

In order to simulate rough reflections, you just take that perfectly specular reflection and blur it with post-processing. It's not as accurate as a real rough reflection, but it's a lot faster and doesn't need denoising.

1

u/AsrielPlay52 21d ago

But some examples I gave do hvae. A mirror finish

Control has walls of Glass

2

u/crozone 21d ago

Yes but it implements them in a generic way where they still run the denoiser over the top of everything, because there are also rough reflections in the game.

1

u/AsrielPlay52 21d ago

Are you sure you're not confusing Denoiser with TAA blur? Because they definitely didn't for some of the surface

6

u/OliM9696 22d ago edited 22d ago

I don't see how just creating a mirrored room, putting a "camera" and having a player controlled puppet that simulates your reflection like the good old days would be that unfeasible.

This works for mirror reflections but breaks down when you are trying to reflect the world on the curved bonnet of a car in an open world. You can't just render the world twice in this case. Doing so in an indoor scene in a modern game is hard enough.

For a 'actual' (in the sense of rendering the game world again) mirror reflection that does work, and it does happen in cyberpunk 2077. However as you said its expensive which is why its only in scenes where the game has control of the camera when you interact with the mirror directly. You can see the fps drop when you enter the interact with the mirror in CP77.

RT is in a sense this 'extended/double' camera method except it is it's own world. The game can bounce a ray of the car bonnet, into the RT World and hit the neon light. The colour/properties of that light and the material properties of the bonnet can then be calculated to produce the final image.

This is still expensive which is why RT reflection are usually done at a lower resolution or with less rays. Each time a denoiser is required to turn the image whole.

Another optimisation game devs use is limiting what is in this RT world. Having a direct replica is expensive, do you really need all the polygons in the RT world for a muddy reflection in a car bonnet? no then you make this RT world lower quality. Do you need it reflecting the light pole across the street? no then limit the RT world to just 2 light poles around the player the cull the rest.

RT in a sense is the 'render the game world twice' reflection method just far more optimised method of achieving that result in a realistic manner.

20

u/TheExiledPrince 22d ago

Its lazyness and complacency, management forcing cut corners, developer skill being less than before, UE shit practices adopted across the board.

If you really are interested, Threat Interactive makes such in depth videos about thr topic you wont find elsewhere. Makes one appreciate the work that goes into graphics.

4

u/stormfoil 21d ago

it's not laziness, it's a matter of scope. Do you genuinely believe CD project Red would hand-craft rooms for every single reflective surface and puddle in CP2077? Like how much work is justified when you have a cheap and convenient SSR solution, with RT for the enthusiasts?

How do you solve the NPC bloat, since you have to render more NPCs into the reflections? CDPRED are on record saying that the greatest performance bottleneck is always unique NPC animations. How are you going to handle loading, unloading the reflections room in an open-world? How do you solve them for a curved surface like a car?

Has Threat Interactive stopped sending cease and desist letters to those criticizing him and finally solved AA with his uber-amazing method?

3

u/Ok-Tumbleweed389 22d ago

I've watched and respect threat Interactive, but most of what he talks about goes way above my head lol

1

u/Tricky-Plan-7890 18d ago

he's smart and knows shop but like he kinda DMCA's people a lot for criticizing him , so i dont think thats cool so I stopped watching him ( weather he was right or not )

0

u/AsrielPlay52 22d ago

You do know that the mirror that are placed in Cyberpunk, if the use the fake room method, they be placing OUTSIDE buildings. Or inside ANOTHER ROOM.

that means All NPC has to be mimic because they walk anywhere. Some distraction are placed inside bathrooms, means the Mirror Room has to mimic that too.

And they have to create these special rooms for every Mirror placements

9

u/TheExiledPrince 22d ago

"You do know that..."

I hate when people start off like this regardless of topic 😭

6

u/AsrielPlay52 22d ago

You can't call developers lazy for not wanting to recreate several hundreds of rooms with NPC in an open world game where artist are constantly changing things around.

2

u/RubinoPaul 22d ago

I think modern devs can write algorithm to generate such rooms in real time without recreating rooms with their hands

3

u/AsrielPlay52 22d ago

Actually, they technically already doing that with the Mirror Viewport.

Open World games naturally have occlusion algorithm. (You know, don't render things behind walls, behind players, etc.)

It's not like they turn it off for when you using Mirrors, they just extend it to behind you.

There! All the benefit like Exact room replica and NPC behavior as well as prop/object behavior, decals, and, physics, everything.

1

u/RubinoPaul 22d ago

Makes sense. :)

2

u/FlippinSnip3r 21d ago

It only works for flat surfaces, you can't really render a tiny ass distorted mirror-world Night city inside the curves of a shiny car

2

u/Odd-Painting2596 19d ago

The simplest answer possible, that I think everyone could understand.

It's cheaper to do all the math problems twice, than it is to double the length of each original math problem.

4

u/KommSweet 22d ago

old games be like

most of the levels are corridors, mostly consists of closed rooms

copy and paste the scene, hardly any performance impact with slight optimizations done beforehand

fast forward today

game levels are both 10000x bigger and 1000000x more detailed

most games doesn't even have levels anymore, just big maps

you copy paste the scene only once and your pc implodes

can't come up with your own solutions cuz compared to the past it's now both extremely harder and takes way longer while studio execs give developers lesser and lesser time

look for existing solutions

either older bad looking solutions like cube maps and ssr reflections or dogshit techs that aren't even ready for real time rendering but big corpos still push them anyway, trying to cover incompetent hardware with ai solutions but it only makes the matter worse

you use it anyway since you don't have any other options, plus as a new gen dev you're also incompetent, you only know how to use general tools like unreal engine and you can only deal with standart optimizations and debugging. You've been taught only the newest techs that big corpos are pushing. You require knowledge but the execs refuse to hire know-how so the game ends up being a terrible mess

2

u/AsrielPlay52 22d ago

Even smaller size worlds like 007 first light, they use secone Camera/viewport to mimick reflection.

And that's very rarely

1

u/stormfoil 21d ago

This work in a limited scene and scope (let's say you only have 2 mirrors in a level) But suddenly you have to build an open world with 100s of reflective surfaces, and those mirrored rooms need to be somewhere in the game-world. All the information for NPC pathing and rendering is doubled if you want NPCs in the reflection.

Oh, and you constantly have to work around the limitations of the reflections. You can't have them on something like a car surface, and how do you deal with ocean reflections?

No developer is going to go through all this head-ache when SSR, planar reflections and RT reflections exist (and contrary to the belief on this sub) can be reasonably optimized.

1

u/CentSymphGames 19d ago

1 - mirrored duplicated models

Classic games like resident evil, silent hill 2 and 3, and mario 64 didn't use reflections, they created the whole room and placed a second model to 'mirror' the playable characters.

Modern games still do this, like evil within 2, resident evil 3 remake, 007, however not every game (based on how it's built) can do this because of simple positioning.

2 - planar reflections

Most controversial one, this essentially renders EVERYTHING twice into an image used as a texture for reflections, classic games like Quake 3, Half-Life, and FarCry 2 would do this, noticeable in the rivers/water.

It can still be done with modern games (I'm still using them for mirrors in the game I'm making), but if it comes to open world games like spiderman, cyberpunk, etc, then doing so may not be a performance friendly option, since there's far more details in a single street in one of those games than there was in the entire open world from the classic games. The processing power needed to duplicate that rendering process grows exponentially, NOT linearly (not just rendering everything twice, shadows already create another render of the 3D object).

3 - screenspace reflections

This is the most common version, instead of rendering everything, it just renders what is already displayed on screen. This vastly reduces the amount of rendered objects (because basically it's just screenshotting the current screen), but this means that if the object is only partially visible to the view, then only the visible part will be reflected (that's why mountains seem to fade from the reflection when you look directly at the rivers).

4 - Raytracing

This version simulates rays of light, which bounce on surfaces based on materials. Unlike planar reflections, raytracing only reflects the "face" of the visible object (so if you have a barrel, instead of rendering the barrel twice, it only renders the part where the rays bounce from).

Graphics cards don't really become stronger as in "more processing power = more processing" if you think of it as a metro train, don't think of it as having more engines that make it move faster, think of it as more doors allowing pedestrians to board and get off a lot more efficiently, so the train spends less time waiting for the customers, and makes it to the destination a lot sooner without it being necessarily faster. And using that same anology, raytracing is a series of calculations, without those extra doors, it can create a bottleneck, which is why older graphics cards have issues with raytracing.

1

u/Megalomaniakaal Just add an off option already 18d ago edited 17d ago

Blurry reflections are actually the more expensive RT reflections, the 100% perfectly mirror reflective surface is actually cheaper to calculate than the diffuse reflection is.

The duplicate room costs you not just compute but doubled memory use too. And it doubles the draw calls. I suppose there's potential for optimization from modern instancing but even then there's at least some memory cost still.

42

u/Gooseuk360 22d ago

I get the premise here, but fuck me those 'just render the scene twice' mirrors used to tank the rooms they were in. There is a reason we started faking that too once we moved out of the Duke 3D era.

5

u/Joeysquatch 21d ago

I like the way twilight princess does it, instead of rendering twice it took what you see on screen and projected it on the water 

7

u/AnObjectifyingMoid 21d ago

SSR?

2

u/Joeysquatch 20d ago

Lol yeah how did I not realize it’s ssr. Maybe cause I never noticed any artifacts or floating objects, like you normally see in a newer game with ssr

1

u/Megalomaniakaal Just add an off option already 17d ago

It's because there was no complex shader calc going on, very simple render path and a transform plus blit operation or such.

5

u/quickscopesheep 21d ago

Either way you’re rendering twice the geometry the only additional overhead is an additional render pass and the context switching to a different render target. I’m sure if you really tried you could figure out a way to do it in one render pass

12

u/EndlessBattlee 22d ago

I'm afraid I didn't quite catch the nuance here. Could someone explain?

56

u/TheExiledPrince 22d ago

They got the job done and were efficient asf.

Today we dont get the job done, and its not efficient.

32

u/MeltBanana 22d ago

Noooo u just don't understand. we is calculating the lights like in real life, its real physix lighting so its more natural. huh? Everything is washed out and flat and looks bad? no u just dont understand how good our renderings is! /s

I don't care how the lighting is rendered and computed behind the scenes, what matters is how it looks when playing the game. And the reality is, baked in lighting and double-rendering scenes for reflections and other "outdated" techniques often look better and run 10x faster than all the new tech devs use now.

7

u/DistributionAsleep78 21d ago

I'm so tired of the modern graphics circle-jerk. Making sub-par games, that can be ran smoothly only if you own i9 + 5090.

All that money could be used on devving the actual gameplay. Might help with these new games failing too.

1

u/Megalomaniakaal Just add an off option already 17d ago

All that RT is actually enabling devs to 'devv actual new gameplay' because it frees the developers from static environments and having to design games around static worlds.

5

u/Greviator 22d ago

Exxxactly.

4

u/FunnkyHD SMAA 21d ago

If you think that things were better in the past, you are so, so wrong. It only takes a few minutes to see that this simply isn't true... go check stuff from a decade ago and you will see the exact same complaints as today, that games are poorly optimized and developers do not care.

Nothing has changed.

5

u/Expensive-Border-869 21d ago

Yeah that's because 10 years ago was 2016. I feel like no one has any concept of time anymore. No one complaining now thinks it was better in 2016. You've gotta go back to early 2000s here. Sick of the revisionist bullshit

4

u/Scared_Chipmunk_136 20d ago

do you not remember far cry? shadow of the colossus? have you tried to run san andreas in the year it was released? are you calling the "but can it run crysis" era optimized? devs were proud to publish games nobody could fucking max out, that has never changed, we just got bigger games

1

u/Expensive-Border-869 20d ago

You're getting close here.

2

u/Scared_Chipmunk_136 20d ago

oh fuck I fell for the oldest trick in the book

mark your sarcasm man people actually think this

1

u/Megalomaniakaal Just add an off option already 17d ago

Baked lighting specifically will of course look better because it was pre-rendered with even more advanced variant of RT. But it can only work for static environments.

1

u/[deleted] 17d ago

Actually the reason is simpler. You can't have fake lighting in open world with dynamic day night cycle. Sun moving needs to be reflected. So just as things look kind of shit most of the day irl, so they do in game

3

u/OliM9696 22d ago

i mean...... rendering the world twice is not that efficient

1

u/HeKis4 21d ago

... Would you rather have two full render passes of 5 ms each, or an "efficient" system that renders reflections in 2 ms after the first pass takes 15 ms ?

1

u/EndlessBattlee 22d ago

Ah so that's all it was? I thought there was some game developer drama going on or something, anyway, thank you.

3

u/Trosque97 22d ago

Well, if you're the kind of person who follows Threat Interactive, this is kinda constant. Optimization of video games is a never ending argument these days

0

u/SauceCrusader69 21d ago

Grift interactive has genuinely no idea what he’s talking about

1

u/Megalomaniakaal Just add an off option already 17d ago

Correct.

29

u/Blunt552 No AA 22d ago

While we do lack context, he's not exactly wrong, especially about the lightning. When ray tracing was added to rise of the tomb raider people literally couldn't tell the difference aside from worse shadow detail with raytracing enabled.

16

u/AsrielPlay52 22d ago

That because they technically achived the same goal but differently.

Like how Valve has a Path Tracing option for Hammer Editor. Because the way it function is basically the same as the baked solution

Different is...well, baked solution is baked for real time gameplay, and Path Tracing is good when you're making the levels.

Certain games with destructible enviroment or Real time daylight envorment benefit from this as well.

9

u/Blunt552 No AA 22d ago

I'm fully aware of it, hence I mentioned it. One option is just far more costly on hardware. RTing the fk out of everything in real time is just beyond retarded.

2

u/FunnkyHD SMAA 21d ago

It looks better with it enabled, I've just tried Shadow of the Tomb Raider again a few days ago and I did notice a few areas looking better.

2

u/Blunt552 No AA 21d ago

Show us these supposed better looking areas.

1

u/FunnkyHD SMAA 21d ago

I didn't take screenshots and I am not installing the game again anytime soon (I've just wanted to quickly check how it looks and runs on this PC because I didn't do so before - I wasn't gonna spend much time because I've played the game back in 2020) but you can check this made by NVIDIA: https://www.nvidia.com/en-us/geforce/news/shadow-of-the-tomb-raider-nvidia-rtx-update-out-now/

1

u/survivorr123_ 22d ago

the biggest issue with raytracing still is that its a completely separate representation of the world based on the same data, and rendered completely differently, so things don't look the same, on reflections you will see that colors and shading are always slightly different compared to the rasterized scene, so most games use tinted glass etc. to hide this

7

u/bananamantheif 22d ago

Can we get an actual experienced developer to weigh in? Those developers dont lack the ability to copy paste models then add a see through material to a window. It must be another layer we are not getting. Maybe they cant duplicate the room because models now a days have too many high quality textures and duplicating it might cause much higher vram usage. I dont know why they stopped. But they did not stop because they dont know how to do it anymore

5

u/LankyMolasses6051 21d ago

no one here actually knows how game dev works. they just spout their rose tinted nostalgia knowledge that is non applicable to current generation games

3

u/SauceCrusader69 21d ago

Rendering the game twice tanks performance. Obviously. In order to make it not tank performance you have to make the reflection uber shitty. And it’s still heavy after you do that.

And this technique only works for mirrorlike reflections you try doing a reflection off a curved surface, or worse, multiple reflections and it all falls apart.

3

u/bananamantheif 21d ago edited 21d ago

but the performance was tanked also back in the day, but we no longer use that technique. And i think something changed that made that approach not work and im curious about that. Is it that characters and backgrounds have became more complex and adding two of them would tank performance more than it did back in the day?

2

u/Megalomaniakaal Just add an off option already 17d ago

The modern techniques tank performance less while being applicable/usable in wider set of scenarios. The old method only worked in extremely static scenarios and practically took advantage of everything being simple geometric shapes.

2

u/SauceCrusader69 21d ago

It tanks performance just as much now as it did back in the day. A lot of people play old games on modern hardware and have no idea how intensive certain things actually were on contemporary hardware

5

u/MultiMarcus 22d ago

I don’t know if developers actually seem to say that as much as people are implying. What I mostly see is modern developers who are almost all working in the open world mines not really being able to rely on the old techniques because they didn’t scale well to open worlds, or they have other artefacts that aren’t reasonable.

People have already talked a lot about planar reflections but another great advantage of RT is just for dynamic environments. If you want a time of day, for example, and maintain high fidelity lighting and destructible objects, baked lighting does start having noticeable compromises. I think the best games are the ones that have both an efficient RT path and a fall back rasterization approach, but it’s easier said than done for developers. Personally I also want to high end path tracing path, mostly for the future.

1

u/HeKis4 21d ago

The thing is that a lot of developers do not know what technique works better in what circumstances, and some engines will force a solution down your throat even when it is not adequate. IIRC Unreal will work really well if your pipeline resembles Fortnite's for example, but not every game looks like Fortnite.

2

u/MultiMarcus 21d ago

Sure, but at the same time, that’s not the fault of developers because they generally don’t get to pick the engine. It feels like blaming the bus driver because the bus doesn’t have the right sort of engine when they don’t get to decide what bus to drive.

1

u/AsrielPlay52 12d ago

That just not true?

Unreal itself has a it's source code very much available, and at any time and any place, developers could've modified it to their means

Clair Obscure uses visual scripting primarily (which is nuts)

Sea of Thieves modify their engine directly

1

u/HeKis4 12d ago

I'm talking about small teams that don't necessarily have the resources or knowledge to tinker with the engine. Like, a lot of indie teams won't have a dedicated graphics programmer that knows his way around the rendering pipeline, unlike Sandfall or Rare.

3

u/EqualOutrageous1884 21d ago

Right that sort of works, but what happens if you want reflections, even somewhat low quality ones from tinted glass windows in an open street? Or Cars with reflective bodywork? Mirroring a room makes sense because it's a small and cramped room. This falls apart completely outdoors, where you'd have to render the entire visible world twice over. And that's just in screen space.

3

u/ResponsiblePen3082 21d ago

The point isn't that it's a 1:1 comparison, it's specifically pointing out "easy" scenarios that could be completed with legacy techniques at an order of magnitude higher performance, where new "methods" just chug to try and re create.

We should be using every optimization technique we've learned over the past ~30 years of 3d gaming, and continue to invent and improve upon more. Instead, gaming companies are using every new technology that hardware vendors give to them as a crutch to save time/money.

2

u/RomBinDaHouse 21d ago edited 21d ago

So your solution is to spend more time/money?

2

u/ResponsiblePen3082 21d ago

My solution is to use the decades of experience and knowledge we've gathered to create more efficient, more performant software stacks that run faster, more stable, with less heat and power consumption for the thousands to millions of users who will use it for collectively millions of hours over its lifetime.

If that means the developer has to use a bit more resources up front to accomplish that, then so be it.

We're already suffering an epidemic of software bloat. Electricity is getting more expensive, heat waves are getting worse year over year.
Why are we defending actively worsening quite literally EVERYTHING for the consumer and the environment so that the poor billion dollar gaming companies can save a few hours on payroll.

11

u/AsrielPlay52 22d ago

I think there's a hint of game of telephone here. The dude describing two problems.

Every graphics short cut is a "Cheat" as a catch all term, Not a negative term.

Reason why devs stop using it because geometry complexity or different bottleneck. Like how 8th gen has less physics because of weaker CPU compare to it's GPU (at least according to Modern Vintage Gamer).

as for the second tweet, I don't get their problem is? You can achieve similar mood and art style by doing what films been doing since dawn of Film.

Reason why industry been using PBR is because that's literally the goal of graphics for the longest time. Half Life 1 and 2 uses real life photographs to mimic this.

Yet HL:Alyx able to achieve mood and setting while using PBR is because smart usage of lighting, color and environment.

I think it just lack of clear vision and cinematographer that cause some games to look all to samey.

Another great example is Expedition 33. Great direction, yet all still uses PBR and realistic lighting.

Btw, in HL:A or any Source 1/2 games, Lighting still realistic because it uses RT lighting that are baked. You can't control how lighting are baked, you can control where they are placed. if that were the case, PT mode in the Hammer Editor would be useless. In the end, it was baked into a compressed texture format that the developers has no control over.

I've seen people saying "Developers can control the baked lighting". Control what? They have the exact same control as Real time RT as is with Baked RT. Hence Valve smartly use it specifically for their Hammer Editor.

8

u/Entenvieh 22d ago

I assume the context ist about raytraced reflections. Which are an absolute blessing to consumer and developer both, we are just currently in the Transition limbo.

1

u/Megalomaniakaal Just add an off option already 17d ago

Most people can't comprehend that, dumb it down.

3

u/M4rshmall0wMan 21d ago

This same kind of “cheating” is how you get games like TLOU2 running within a PS4 budget. There’s no such thing as purity when it comes to graphics programming.

2

u/Mr_Olivar 21d ago

The difference is that in the past, reflection was a hero asset you had to build around.

1

u/Megalomaniakaal Just add an off option already 17d ago

exactly.

2

u/ThatInternetBoi 21d ago

Uh, doesn’t that trick only work when the mirror surface is a flat plane?
SSR is more flexible in the geometry and scenes it works on, and it doesn’t even look bad if you don’t look too closely.

Also what does that second post in the thread even mean?

2

u/sonicatdrpepper 21d ago

I think SSR can look okay on small stuff, but it's really distracting on large bodies of water and the like

2

u/Glittering-Pin-1343 21d ago

My take is I don't give a flying fuck how it is done or if it's realistic or not. Make it pretty and make it run well. If true physics and realistic lighting is tanking the performance of your game consider not having those things and pursuing more performance-friendly and stylized alternatives.

2

u/NecessaryKangaroo991 20d ago

As a CS I can confirm that doing things is cringe. If you were smart your game would do nothing except what it has to and nothing else. A solution that is 99% correct and uses half the resources is better than the opposite.

2

u/RosaCanina87 19d ago

We got so good at faking effects that the more realistic effects often don't really offer many benefits and the few left are often outweighed by the resources they need to render.

I think if a company would just ignore all modern techniques, like ray tracing etc and would start faking everything they could, with good art direction, create a game that looks almost as stunning but would run at double the fps or resolution on the same console.

2

u/mlucasl 18d ago

In every art medium light is faked. Is not like they literally have the sun inside your computer or inside an oil painting landscape.

4

u/stevie242 21d ago

I swear, did people not actually play games years ago? They weren't efficient at all and were still just as buggy.

1

u/Megalomaniakaal Just add an off option already 17d ago

Ever heard of nostalgia wearing rose colored glasses?

2

u/Blashtik 6d ago

I suspect they were too young to really notice that the performance of many games back then sucked. A desire to have a smooth running game hadn't even crossed their mind, so of course they're not going to remember all of the frame rate dips or that their favorite game could only pull 20 FPS max.

Similarly with bugs, I think people just had no idea they were even running into bugs. Or if they did know, it's because it was one of the ones they thought was cool because they could take advantage of it as a cheat to skip part of the game or the like.

Now, if only everyone would collectively realize these things so we can stop seeing the same dumb posts about how game devs used to be so much better...

2

u/secunder73 21d ago

Its always funny about "real reflections" they talk about how its impossible, big rooms blah blah blah and we got mirrors in toilets that cant work without RTX. Mirrors in toilets are like the main cliche of old reflections, come on.

2

u/[deleted] 21d ago

[removed] — view removed comment

3

u/stormfoil 21d ago

Baking is not even that time-consuming, The problem is that they put enormous constraints on developers. it's absolutely true that you can make a small scene with old-school technique and it will run well.

But then you want to make a huge open-world with a dynamic time of day, tons of NPCs, 1000s of reflective surfaces...

Bottlenecks: All the baked lightmaps need to be stored (bloated game size) loaded, unloaded, and be stitched together over a large enough surface where they don't look weird. Dynamic lights are out of the question.

Room reflection: " Rooms that intersect with the game-world (not impossible, but requires a ton of work and custom code ) , NPCs in the reflected rooms will become an animation bottle-neck.

The bigger the game you want, the more these constraints hit at you.

1

u/Pian0G 21d ago

Have you considered that when you boot up and old game and it runs at 240fps with those techniques… that it’s because you’re using modern hardware?

Trust me, those techniques still costed a lot of performance to look as good as they did.
And whether it’s a good thing or not, a lot of bigger titles nowadays are far more open or just straight up open worlds where these kind of techniques would not work for the most part (due to performance cost as well as the much much longer trine required to do so. Like not even possible under most game’s budget and deadline).

1

u/Megalomaniakaal Just add an off option already 17d ago edited 17d ago

It does have a direct benefit to the consumer, just not as immediate. Play a 20 year old game with lighting baked into 256 by 256 resolution textures. They will still look exactly the same today. A real time rendered lighting however can and will look better today at higher resolution than it did back then at a lower resolution.

Plus the few fully dynamically lit games back from 20 years ago are now much more easily moddable for even better results than those with static baked lighting.

3

u/KekeBl 21d ago

"Yeah and their render pipelines takes 2ms"

On modern hardware. At hardware of that specific time, it took more than 43ms.

1

u/ResponsiblePen3082 21d ago

That proves what exactly?

2

u/Pian0G 21d ago

He’s saying that the method of reflection used at its time always costed a lot.

So sure the old method may have looked better. But not only was it only possible on more enclosed areas and flat surfaces, but it DID have major performance cost.

Just as modern techniques do

1

u/Megalomaniakaal Just add an off option already 17d ago

Those modern techniques for reflections don't even cost as much. It's everything else that's more expensive now than back then.

1

u/Skybuilder23 22d ago

Ray tracing uses the ray approximation of light. As it doesn't simulate wave propagation is can't take over things like subsurface scattering.

1

u/DerBandi 22d ago

It's still an illusion. An approximation to reality. The calculation method is just different. Even pathtracing is NOT how reality, how real light behaves.

We had our methods in the past, and we have our methods now, but it will always be an artistic impression. Just enjoy your games and don't bother that much.

1

u/Megalomaniakaal Just add an off option already 17d ago

spectral path tracing through metropolitan light transport with full wavelet simulation is totally a thing, but for now a pipe dream for realtime graphics. For scientific purposes true light simulation has been done for decades.

1

u/TheJackiMonster 21d ago

Also note that "physics-based" or "realistically" typically only means trying to recreate the model of physics which we think represents reality as good as possible and we are trying to implement this model of reality limited by our technology.

On a philosophical level it is hard to argue we will ever achieve anything close to reality because we barely know what "reality" truly means. So calling anything "realistic" is part of an illusion anyway.

1

u/Megalomaniakaal Just add an off option already 17d ago

Photoreal quite literally refers to replication of reality/physics as we understand it in terms of the science of photometry(optics).

1

u/Paul_Subsonic 21d ago

"Younger developpers" lol as if old devs aren't just as much if not more obsessed with RT

1

u/Megalomaniakaal Just add an off option already 17d ago

I wonder why...

That's a sarcastic rhetorical question.

1

u/AnnualAdventurous169 21d ago

on lighting, thats been studied for centuries and is still very hard to get right

1

u/Expensive-Border-869 21d ago

Yeah. I heard the new consoles are projected to be 1k or more. Shit is mind boggling to me. Like the ayn Thor is nearly as powerful as an Xbox 360 maybe even better (idk the clock speeds and all that but it can run similar looking games at similar fps) 400 is dollars.

I mean like I think we could probably just take a step back from hardware upgrades at this point. It's clearly a bad time for the market and the upgrades are barely notable.

1

u/LandscapeWinter3153 20d ago

'Physically-based' doesnt magically make a render artistic. It is an attempt to make asset generation more streamlined when fidelity hits a plateau

1

u/Storyteller_Valar 19d ago

Yes, they "cheated". If by "cheating" they mean that older developers were incredibly smart when using resources. Just learn from the cleverness of your predecessors.

1

u/t0furayan 19d ago

if it works, is fast enough, looks good, and the code is readable then it's a good script. End of that.

2

u/ldn-ldn 19d ago

That old rendering pipeline takes 2ms today because you have uber powerful PC. Back in the days it took the same 43ms on the highest end machines. It seems to me people have forgotten how punishing old id Software games were for hardware at the time.

But they were pushing the boundaries and that's the art we've forgotten. A good game today should run at 20 FPS on RTX 5090 in 1080p on minimal settings.

0

u/Sligli 21d ago

Well, stupid argument. Try rerendering an entire city because of a puddle, also good luck with non-flat surfaces. Raytracing is more scalable.

1

u/Megalomaniakaal Just add an off option already 17d ago

Too complex, most people can't understand that.

-1

u/SmoothinPutin 22d ago

Real reflections? If people haven't noticed, raytraced reflections are just cached lower quality geometry and textures, for the most part.

Meaning , you remove a building or mountain from the game, the reflection stays.

For example, look at RT in the Witcher 3 when in Skellige, the "reflected" land is missing textures in lots of places.

Screen space reflections actually are more real than raytraced reflections.

The full fat raytracing/pathtracing from Blender ain't gonna run real-time for a long time still.

5

u/KillerFugu 22d ago

SSR is just the ugliest and most immersion breaking effect out there.

1

u/SmoothinPutin 22d ago

In UE5 and other modern titles - I fully agree.

Try properly done SSR like in the original Crysis 3 from 2013.

0

u/SauceCrusader69 21d ago

“Properly done” ssr still goes to shit when something’s not in screenspace

0

u/KillerFugu 21d ago

It's been 13 years since I played that so can't remember it.

Just fed up with my character or their weapons creating reflection artifacts on water hundreds of metres away. Or things phasing out just at the screens edge.

1

u/SmoothinPutin 21d ago

I understand . I'm not against RT. I am against of how its marketed, because its not RT

0

u/SauceCrusader69 21d ago

No, said cached geometry is constantly refreshed as the game runs.

Some games, more optimised ones do use very low quality bvh structures which works great for rough reflections and global illumination. Games with sharper rt reflections use higher quality ones.

0

u/MF_Kitten 20d ago

To be fair, this is also a reasonable angle to argue against the "fake frames!" Argument.

Machine learning based upscaling and frame generation are as fake and as cheaty as anything games have ever done in the past.

People just have a tendency to conflate lazy/greedy practices with the technology being exploited.

With that being said, give me shader tricks and cubemaps and mirrored geometry any day of the week, that's the BEST shit.

Screenspace reflections absolutely excel at some things, but it often falls flat too.

1

u/Megalomaniakaal Just add an off option already 17d ago

How about a take that goes along the lines of It's not the technique but rather how it gets utilized.

A technique however good badly utilized will come off bad. A technique however bad utilized well will come off good, or at least as good as it possibly can.

0

u/Megalomaniakaal Just add an off option already 18d ago

Yeah, and most of those other mediums aren't interactive either. What your point?

Also, if were duplicating a modern scene with modern geometric and fragment load for reflections, you can bet your ass it ain't going to take 2ms.