Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docs out of date for NRD integration, and no reference NRD implementation exists either #4

Open
BattleAxeVR opened this issue Jul 11, 2023 · 3 comments

Comments

@BattleAxeVR
Copy link

BattleAxeVR commented Jul 11, 2023

Hi there, I'm switching from my old (outdated) NRD integration because it changes too often and is way too much maintenance overhead, so I figured SL would help me out here, but the docs for NRD use deprecated API features and there's no clear way to actually set the NRD constants via a function stub, like there are for the other features.

https://github.com/NVIDIAGameWorks/Streamline/blob/main/docs/ProgrammingGuideNRD.md

Specifically slSetFeatureConstants is gone now in 2.10:

image

I implemented setting the NRD specific constants like this:

image

image

image

Is this correct? I read all the docs and it seems to be the way to do it, but it's odd that there's no function stub in the sl.nrd.h for the function call to set the parameters.

My code seems to set the parameters properly, but then I get some weird exception when I do the actual denoising:

image

Is there a chance you would consider making an NRD integration in the sample here? It's the only feature missing a reference implementation.

The Path Tracing SDK also uses StreamLine but has a direct NRD integration and I haven't been able to find anything on Github where NRD is integrated via SL as opposed to directly.

Is anybody out there using SL for NRD feature but me? It seems not. I searched in Github for sl::kFeatureNRD and the only hits are in this repo.

Thanks in advance!

@BattleAxeVR
Copy link
Author

I dug deep into the SL source code and verified that all my vk buffer formats are valid, and tried disabling a few normally required NRD inputs until the SL library logs complained about missing them. But still get some crashes. I could really use a reference SL + NRD implementation or at least better documentation stating all the assumed butters for Relax/Reblur and their associated SL binding values (which also do not correspond to what NRD expects). This is all very confusing stuff, after having integrated NRD directly I am getting more problems with this than I did w/ NRD itself. If anything, the interposer DLL is just making everything harder, not simpler. Sigh.

@BattleAxeVR
Copy link
Author

Apparently what's wrong is simply: SL + NRD doesn't work on Vulkan yet.

I wish I'd known this before wasting my time debugging it. I got it to not crash/assert on some missing VK <-> NRD texture format conversions, but it's still not working properly. sl.nrd.dll is complaining about missing resource tags during denoising for NRD formats that shouldn't be needed necessarily (or at least I don't remember them being needed).

IN_DIFF_HITDIST = 5
IN_SPEC_HITDIST = 6
IN_DIFF_DIRECTION_HITDIST = 7
IN_DIFF_CONFIDENCE = 10

And using relax instead of reblur just crashes, it can't create the denoiser.

@BattleAxeVR
Copy link
Author

BattleAxeVR commented Jan 25, 2024

Even if NRD support in Streamline is far down on Nvidia's list of priorities (even your own SL samples integrate NRD directly!), I would appreciate even some basic documentation here, as coding this "blind" is a huge waste of time, and it looks like this was shipped half-finished and doesn't even actually work.

I opened this issue last July, can anyone help escalate this?

It's holding up production of my path tracing VR game, as I don't currently have DLSS-RR (nobody will grant access) nor NRD working properly (anymore, direct integration was too much overhead and effort to keep it up to date and working)

natevm natduca you mentioned you could help triage some of these issues. No one even responded to this issue here since July 2023. Neil mentioned over email he was working on a Vulkan SL + NRD fx but no updates on that either.

I believe this feature doesn't work, at all, and it's misleading to launch SDK samples that don't work. When I worked at Ubisoft in their tech group writing middleware for all the other games to use, if a sample didn't work properly or there was an issue with the documentation, API, or a bug in the runtime, it would get fixed immediately.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant