NVIDIAGameWorks / Streamline

Streamline Integration Framework
Other
377 stars 79 forks source link

SL2.0 - NRD - No SetConstants method #17

Closed Cheaterdev closed 6 months ago

Cheaterdev commented 1 year ago

Hi! There is no method to apply NRDConstants in the latest version.

b4df00d commented 1 year ago

Hi, I did struggle with that also.

I found

        bool (*slSetConstants)(const void*, uint32_t, uint32_t);
        SL_FEATURE_FUN_IMPORT(sl::kFeatureNRD, slSetConstants);
        slSetConstants((void*)&nrdConsts, *device->slCurrentFrame, device->slViewport);

If you manage to get it working past that please give me a signe, I'm stuck with this issue https://github.com/NVIDIAGameWorks/Streamline/issues/16

BattleAxeVR commented 1 year ago

Hi, I seem to have gotten past that can called it myself (although I called the function stub something slightly different, for NRD use only).

https://github.com/NVIDIAGameWorks/Streamline_Sample/issues/4

But I'm thinking nobody is using NRD via SL but maybe us three.

BattleAxeVR commented 1 year ago

I did it slightly differently, as if I declared slSetConstants function pointer that clashes with the one that sets the default parameters that has a different signature. so I called it slSetNRDConstants

TBH this is kind of silly and confusing, I wonder if NRD integration even works at all. Have either of you gotten it to work since May?

Cheaterdev commented 1 year ago

Looks like it should work after last commit - function is there.

BattleAxeVR commented 1 year ago

I've had that method working for a while but I had to use a different name than SetConstants which was already used by the normal SetConstants for the generic / common parameters for SL.

My problem was just that NRD would crash elsewhere and just not work and none of the documentation or code samples actually specify what is the correct usage. I have NRD integrated normally so I'm familiar with all the inputs etc, but it's the mappings / equivalencies to the SL textures that aren't all obvious 1:1 correspondences and this is a huge time waster.

Besides, NRD is basically obsolete now with DLSS 3.5 Ray Reconstruction coming out soon. Still, we need NRD as a backup, ironically, for non-Nvidia GPUs.

Nvidia, please, if you have time, make us a working code sample for NRD, that actually works in both DX12 and Vulkan. Vulkan seems to always get short thrift and never work on Day 1, I don't understand it. I sometimes regret picking Vulkan for my engine due to these dependencies not working properly in a timely manner. SER not working in Vulkan is a huge 30% performance hit!

jake-nv commented 6 months ago

The NRD plugin and docs were extensively updated in SL v2.2 for the "beta" release of that plugin.