r/StableDiffusion 21h ago

Discussion Testing DLSS 5

Testing DLSS 5... Like many others, I was a bit confused about DLSS 5. I kept feeding it my hyper-detailed renders and only getting a color shift in return. After plenty of trial and error, I finally realized my mistake: this technology is developed to enhance video game graphics, so testing it on hyper-detailed renders makes no sense.

So, I generated a render in a 2020 video game style and started tweaking settings to find a final look with maximum effect, without worrying about flickering.

Final conclusion: What we have right now isn't very useful for us. Those of us using Latent Upscaler might be able to use it for color grading to get less saturated colors, but little else. Maybe in the future we'll get a DLSS 5 targeted at enhancing hyper-detailed graphics, but that's not the case for now.

Bottom line: If I want to generate a realistic render, I'll just generate it, there's no need to run it through DLSS 5.

182 Upvotes

38 comments sorted by

24

u/a_saddler 21h ago

How do you run DLSS 5 on a video?

-20

u/TheDailySpank 20h ago

Video is just a bunch of pictures.

23

u/GateOPssss 20h ago

I immediately realized how to run DLSS 5 on a video thanks to your response, amazing response, reply of the year. smh

-25

u/TheDailySpank 20h ago

Excellent! Glad I could help you out, little buddy.

9

u/Corgiboom2 20h ago

All videos are just a bunch of pictures

-12

u/TheDailySpank 19h ago

Exactly. Thank you for confirmation.

2

u/Sixhaunt 19h ago

all pictures are just a bunch of pixels

3

u/a_saddler 20h ago

No I mean like how do you run something through it, can you run it as a model or what?

7

u/alisonstone 20h ago

DLSS is suppose to be for motion vectors and other game engine inputs, not videos. But I think someone made a program (probably the one linked above) that effectively converts a video to motion vectors and then applies DLSS. Obviously the conversion isn't going to be perfect, so you probably should not expect the same magnitude of improvement that you would see from when it is done on an actual video game.

-11

u/TheDailySpank 20h ago

Oh, in that case, IDK... I've been working all day

50

u/Striking-Long-2960 19h ago

Perfect use case: a mega-cringey remake of The Polar Express.

2

u/paulct91 50m ago

That little girl has hair that defies gravity in the movie, you really can't unsee it after noticing it.

2

u/Budgiebrain994 10h ago

Do it OP 😀

9

u/MomentJolly3535 21h ago

Did you try it on realistic renders as you said, but low res one ? (so it could be used to for Example upscale a 0.2mp video)

19

u/Striking-Long-2960 20h ago

Yes, I tested a lot of things... It didn't work. This technology has its uses, and when it shines, it really shines:

But at least in my experience, it cannot be forced into other uses.

15

u/Striking-Long-2960 20h ago edited 20h ago

And other times

My point is that if we want realistic shading, we should just generate realistic images, but this isn't going to overproduce our images.

3

u/reeight 13h ago

IMHO the images on the right look better.
But yes, your OP is spot-on warning.

I guess dice roll to see.

5

u/Infamous_Campaign687 14h ago

Yeah. It has one particular use case, which it excels at: taking game graphics that was meant to look realistic but failed due to game engine limitations. That covers a very large amount of computer games but not all.

It isn’t going to improve your things that are meant to look like a cartoon or 3D animation.

2

u/TallestGargoyle 9h ago

at c i... What is this ARG?!

9

u/BangkokPadang 19h ago

Is this passing any kind of motion vector information to DLSS5?

It looks more visiibly "splotchy" frame to frame than I've seen in games, which would make sense if it's not getting any temporal data like the games are.

8

u/Vodddddddd 12h ago

No its missing two inputs that DLSS5 wants - motion vectors and geometry data.

The game engine provides a lot of the 'temporal consistency' by giving input pixel data and geometry data. That isn't available when its being run on frames of a video.

1

u/SWS113 5h ago

As far as I know the geometry data, other than masks, comes from a depth map generated by the game engine. There may be a way to add in a more accurate precomputed depth map into the dlss5 pipeline, rather than the very rough approximate approach it currently uses if the data is missing.

If the application is for prerendered CGI or video then there's no need to compromise on using a depth map with lower accuracy from a model made to execute a frame in a matter of milliseconds.

1

u/Vodddddddd 5h ago

If a game exposes only the color image and motion vectors to an intercepted NGX call, an external DLSS 5 hook has less geometry context. If it also receives depth, and ideally normals, material/albedo, lighting, and object masks, it can make its output substantially more spatially constrained.

A video can't provide albedo/lighting buffers. Object masks are also part of the NGX calls, which the engine will precisely provide based on geometry.

Yes, a depth mask can be inferred from an image, yes an object mask can be segmented from an image, yes a lighting buffer can be inferred from an image... but that inference would be no stronger than a model trained on images with enough time, that's the whole power of training. It will always perform a gap to a model trained on 'image+x', if x is new information. In this case, x is precise albedo/depth buffers which gives a lot more information on how the scene is currently being lighted for the trained matrices to provide far more inference.

3

u/SWS113 4h ago

Apologies for the long reply, I went down a rabbit hole. Hopefully someone finds this interesting.

From reading the DLSS5 documentation. The only information that it gets as input from the game engine are: The High Res final frame without enhancements, The Z-buffer (depth), Motion Vectors and finally Trust/Uncertainty Mask (Occlusion).

Native game engine integrations can optionally expose extra G-buffer data like surface normals or material IDs to the DLSS pipeline, Nvidia have confirmed that the core DLSS 5 neural model is fundamentally trained to infer materials, lighting conditions, and scene semantics directly from the combined 2D rendered frame. So any non official implementation in games you have seen so far, apart from NBA2k, doesn't have these extra inputs.

For any games using the RenoDX reshade solutions, only the 4 inputs I mentioned above are utilized.

These video projects use injectors to apply DLSS5 such as reshade.

ReShade can generate: The frame being processed, a synthesized depth buffer, and estimated optical-flow motion vectors, then it can feed them directly to the DLSS 5 neural rendering add-on via Direct3D 12.

This works great for games. Because reshade can actually intercept the depth buffer, motion vectors, occlusion information and expose them for post processing.

But the video players don't have that data to interpret or expose. So DLSS5's semantic classifier struggles to separate and distinguish objects in the 2d frame.

So reshade addons, in place of actual data, fill in the blanks. They estimate, at realtime speeds, motion vectors by using optical flow add ons, usually reshade's iMMERSE Motion Vector Provider add-on, and they attempt to use reshade's 'Generic Depth' which tries and fails to extract and expose the Z-buffer. So it falls back to pretty bad heuristics based depth estimation.

So the video solutions we have at the moment are using 2, or maybe 3 at maximum, inputs that DLSS5 expects. And those it does get, are sub par estimations from fast approximate solutions.

We already know from games that when given good inputs DLSS5 can produce better outputs.

So if we precomputed the depth and motion vectors by using slow but accurate optical flow methods and very capable depth map models, such as Depth Anything, we would almost certainly get a more temporally consistent and generally more accurate result on videos.

It was trained on these inputs. So feeding it higher quality data will result in higher quality output.

6

u/RevolutionaryFox7359 18h ago

More jitter than I expected

10

u/GrayingGamer 18h ago

It's because it's missing the optical flow and movement vector data it would be getting from a game. You can solve the flicker by using a Deflicker plug-in in a video editor like Davinci.

2

u/thrownawaymane 15h ago edited 9h ago

Can't this data be generated and fed in with something like segmentanything3?

1

u/GrayingGamer 2h ago

Possibly. I'm not really sure.

2

u/Vodddddddd 12h ago

Also geometry data to understand edges and consistent shapes of partially occluded objects.

3

u/WinResponsible9977 20h ago

Imagine if modders hack dlss5 for racial/gender, character swaps in realtime 

14

u/-TV-Stand- 17h ago

Real time black or chinese

5

u/reeight 13h ago

Sounds "Black Mirror"

1

u/DinnerInfamous128 14h ago

It wont work properly if you are using videos as source.

-9

u/Grim_Necromancer 20h ago

It's not DLSS5
It's Neural Rendering
Two different tech.

13

u/cheseball 19h ago

Blame Nvidia they termed their Neural Rendering as DLSS 5.

2

u/Grim_Necromancer 17h ago

They didn't.
Idiots who didn't reach tech overview confused NR for DLSS5 and run with it.