GPUOpen-LibrariesAndSDKs / RadeonProRenderSDK

AMD Radeon™ ProRender is a powerful physically-based path traced rendering engine that enables creative professionals to produce stunningly photorealistic images.
https://gpuopen.com/radeon-prorender-suite/
Other
221 stars 47 forks source link

Questions/suggestions #71

Open Flamaros opened 1 year ago

Flamaros commented 1 year ago

I will do some new tests of the SDK now that I can use a GPU that support ray tracing (Nvidia 3080 RTX).

It seems that there is a lot improvements made since last time I checked, but the documentation and samples seems to stay a weakness.

Let me be specific: For the documentation:

Last time I checked I got issues depending on the selected GPU (integrated or discret) and backends seems to see GPU in different orders, so having a way to select them by name in the API can be great.

Please notice that I tried the NVidia Pathtracer SDK, which provide a full interactive application directly. It is much more convenient to see what their SDKs are capable to do.

Flamaros commented 1 year ago

I made a quick try to rebuild my project that use Dear ImGUI with OpenGL backend and use Hybrids RadeonProRender backends but I got the error -18 (Internal error) when creating the rpr context. I think that there is a conflict with the initialization of my OpenGL context in some way. I think that the rpr API should return much more verbose issues, actually it is pretty hard to debug things that should be trivial to put in place.

The Hybrid tutorial project works fine on my computer. But I think I found an issue: The HybridPro backend give me this result: 63 hybrid pro And the Old Hybrid backend this one 63 hybrid

I am not sure which give the right render.

EPrikazchikovLux commented 1 year ago

I made a quick try to rebuild my project that use Dear ImGUI with OpenGL backend and use Hybrids RadeonProRender backends but I got the error -18 (Internal error) when creating the rpr context. I think that there is a conflict with the initialization of my OpenGL context in some way.

To be honest we have never mixed this two API. I don't think it should affect context creation. But lets wait more details from logs.

I think that the rpr API should return much more verbose issues, actually it is pretty hard to debug things that should be trivial to put in place.

In the HybridPro extended API (RadeonProRender_Baikal.h) we have function rprSetLogFunction which allows you to set logging callback function.

The HybridPro backend give me this result:

Could you please to collect traces for this scene? To do this please follow this simple guide.

Add an environment variable RPRTRACEPATH pointing to a folder in which trace should be activated.
For example, set RPRTRACEPATH = C:\folder\ to activate the trace inside C:\folder\.
And restart your PC.
Flamaros commented 1 year ago

I made a quick try to rebuild my project that use Dear ImGUI with OpenGL backend and use Hybrids RadeonProRender backends but I got the error -18 (Internal error) when creating the rpr context. I think that there is a conflict with the initialization of my OpenGL context in some way.

To be honest we have never mixed this two API. I don't think it should affect context creation. But lets wait more details from logs.

I don't think that there is a particular issue with Dear ImGUI, I certainly do something wrong with OpenGL configuration (context creation flags, order issue with rpr,...). That is why having minimal interactive tutorials with that works with all rpr backends and graphic API (DX12, OpenGL, Vulkan, Metal,...) would be really appreciated. I saw the headers with API for interops with all graphical API, but there is no real documentation on how to setup this (swap chain fences, resolutions issues,...).

It might be accessible for an expert, but I don't work with those API every day, and this is why I am looking for a renderer.

I think that the rpr API should return much more verbose issues, actually it is pretty hard to debug things that should be trivial to put in place.

In the HybridPro extended API (RadeonProRender_Baikal.h) we have function rprSetLogFunction which allows you to set logging callback function.

I tried this (after rprRegisterPlugin call):

HMODULE  hybrid_pro_handle = GetModuleHandleA("HybridPro.dll");
rprSetLogFunction = (rprSetLogFunction_PTR)GetProcAddress(hybrid_pro_handle, "rprSetLogFunction");

rprSetLogFunction(&rpr_log_callback);

I got a handle to the module, but GetProcAddress returns a nullptr.

Here too a documentation about what is RadeonProRender_Baikal (there is nothing that indicate for which backends API applies) and how to use extended API will be welcome.

The HybridPro backend give me this result:

Could you please to collect traces for this scene? To do this please follow this simple guide.

Add an environment variable RPRTRACEPATH pointing to a folder in which trace should be activated.
For example, set RPRTRACEPATH = C:\folder\ to activate the trace inside C:\folder\.
And restart your PC.

The trace

PS: If I do all these reports is because rpr seems really great, but it is also pretty hard to come in. Due to the documentation and tutorials it still seems to be a pretty private project.