Code Monkey home page Code Monkey logo

rtxgi-ddgi's Introduction

RTX Global Illumination

Version 1.3

Change Log

Introduction

RTX Global Illumination (RTXGI) is a collection of algorithms that leverage GPU ray tracing to provide scalable solutions for rendering real-time Global Illumination (GI). The goal of RTXGI is to provide optimized implementations of global lighting algorithms that are flexible enough to be useful in both real-time and pre-computed lighting scenarios. Focusing on scalability allows RTXGI to be an effective tool across a wide range of platforms with varying computational capabilities.

Algorithm implementations provided here require graphics APIs and platforms with support for GPU ray tracing (e.g. Microsoft DirectX Raytracing or Vulkan Ray Tracing). That said, it is possible to use RTXGI's Dynamic Diffuse Global Illumination algorithm on development machines with GPU ray tracing support, store the lighting data, and then load the (static) lighting data at run-time on platforms without GPU ray tracing support.

For more information on RTXGI, see the NVIDIA Developer Page.

Global Illumination with RTXGI in the Sponza

Contents

This repository contains the RTXGI SDK, a sample application, the RTXGI Unreal Engine 4 plugin, and associated documentation.

Although we aim for RTXGI to eventually provide a collection of global illumination algorithms, the current SDK provides one algorithm based on Dynamic Diffuse Global Illumination (DDGI), first described in this academic publication from NVIDIA Research along with collaborators at McGill University and the University of Montreal. Since DDGI is based on irradiance probes (the pre-computed variety are already commonly used in games), it is an ideal entry point for developers to bring the benefits of real-time ray tracing to their tools, technology, and applications without substantial performance penalties. Furthermore, the implementation here includes performance improvements and optimization techniques not available elsewhere.

  • rtxgi-sdk contains the SDK source code

  • samples contains the Test Harness sample application that demonstrates and exercises the SDK's functionality

  • thirdparty contains third-party software used by the sample application(s)

  • ue4-plugin contains the RTXGI Unreal Engine 4 plugin source code and documentation

  • docs contains helpful guides and documentation

  • external/agilitysdk contains a compatible recent version of the DirectX 12 Agility SDK to use when running on Windows (delivered by CMake)

  • external/dxc contains a compatible recent version of the DirectX Shader Compiler for your platform (delivered by CMake)

System Requirements

The RTXGI SDK and sample application(s) require the following hardware and software:

Hardware

  • Any DXR capable GPU. NVIDIA DXR enabled GPUs are:
    • RTX 4090, 4080 SUPER, 4080, 4070 Ti SUPER, 4070 Ti, 4070 SUPER, 4070, 4060 Ti, 4060
    • RTX 3090 Ti, 3090, 3080 Ti, 3080, 3070 Ti, 3070, 3060 Ti, 3060, 3050
    • Titan RTX
    • RTX 2080 Ti, 2080 SUPER, 2080, 2070 SUPER, 2070, 2060 SUPER, 2060
    • GTX 1660 Ti, 1660 SUPER, 1660
    • Titan Xp
    • GTX 1080 Ti, 1080, 1070 Ti, 1070, 1060 Ti, 1060 6GB (or higher)

Software (Windows)

Software (Linux)

Getting Started

Unreal Engine 4

See the Unreal Engine Plugin

rtxgi-ddgi's People

Contributors

acmarrs-nvidia avatar halldorfannar avatar piotrmi avatar pkozlowski-nv avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rtxgi-ddgi's Issues

Question: Use RTXGI on packed UE 4.25.3 from Epic Game Launcher

Hi all,
I tried the plugin on UE 4.25.3 Source and UE 4.25.3 NvRTX and it works like magic! Thank you very much!
I'm currently working on a project using the UE version from Epic Games Launcher and I would like to use the plugin. I did the same steps and after I activate the plugin the Engine asks me to compile the plugin but Idk how to do this because the engine doesn't come with Vs files it's packed. In the previous test's when I had this message I just recompiled the engine and it worked. I tried other methods but didn't work:

  • I moved the plugin in a C++ project and then I compiled it
  • I tried to use the compiled version from UE 4.25.3 Source, I just moved the plugin in the UE standard version

Here's all the steps => https://youtu.be/iSm9XDJXSV8

Add Visual C++ ATL to system requirements

samples/test-harness/src/common/Shaders.cpp includes <atlcomcli.h> which I did not have installed. Would be nice to have it included in the system requirements. This was easy to fix; from Visual Studio Installer, choose Modify > Individual Components and scroll down and choose Visual C++ ATL that's appropriate for your architecture (x86 and x64 for me).

Documentation Confuzzlement

@Atrix256 @acmarrs-nvidia I spotted a tidbit in step 1 of the documentation for setting up the Unreal Engine Plugin that caused me some confusion when I first tried to get rtxgi up and running, and I think ticket #16 here could be a reflection of this confusion, so I wonder if it should be omitted or edited for clarity? I'll attach a screenshot.

Capture

Can't see the probeVis

Hi,

first thank you for your amaizing job !.

i have an issue i can't see the Probe, i try on 2 project ,
i try to rebuild Unreal. (generate project file and rebuild)
but nothing seem to work.
i install the NVIDIA DLSS Unreal Engine and the RTXGI-NvRTX4.25.3.patch

image

thank you for your help.
Best Regards
Daniel

SSGI not working with RTXGI

When SSGI is enabled RTXGI gets off.
r.SSGI.Enable 1

Invisible emissive objects not contributing to RTXGI, but works when visible.

Platform specific shader compilation errors, e.g. matrix<float,4,4> vs float4x4

Discovered the following minor issues on non-Windows platform. Fixes supplied inline, would be happy to issue PR facilitating future integration issue discoveries.

Regards,
Jamie

ProbeCommon3.ush@225

float3 DDGIGetProbeRayDirection(int rayIndex, int numRaysPerProbe, matrix<float, 4, 4> rotationTransform)

to:

float3 DDGIGetProbeRayDirection(int rayIndex, int numRaysPerProbe, float4x4 rotationTransform)

VisualizeDDGIProbes.usf@64

matrix<float, 4, 4> Transform = {	ProbeRadius, 0.f, 0.f, 0.f,
                                0.f, ProbeRadius, 0.f, 0.f,
                                0.f, 0.f, ProbeRadius, 0.f,
                                Translation.x, Translation.y, Translation.z, 1.f};

to:

float4x4 Transform = {	ProbeRadius, 0.f, 0.f, 0.f,
                                0.f, ProbeRadius, 0.f, 0.f,
                                0.f, 0.f, ProbeRadius, 0.f,
                                Translation.x, Translation.y, Translation.z, 1.f};

Lastly platform reserved word 'packed' used
Common.ush@68-73

float3 RTXGIUintToFloat3(uint packed)
{
    float3 unpacked;
    unpacked.x = (float)(packed & 0x000003FF) / 1023.f;
    unpacked.y = (float)((packed >> 10) & 0x000003FF) / 1023.f;
    unpacked.z = (float)((packed >> 20) & 0x000003FF) / 1023.f;

to:

float3 RTXGIUintToFloat3(uint inPacked)
{
    float3 unpacked;
    unpacked.x = (float)(inPacked & 0x000003FF) / 1023.f;
    unpacked.y = (float)((inPacked >> 10) & 0x000003FF) / 1023.f;
    unpacked.z = (float)((inPacked >> 20) & 0x000003FF) / 1023.f;

Feature Request: Manual Probe Positions & Individual Probe Actor

Please forgive the tall ask~ :)

I was pondering whether to recommend this, but I think... having the ability to manually translate individual probe positions could be beneficial.

Oftentimes even with probe automatic repositioning, dark splotches can come up with areas that arenโ€™t covered properly and that you canโ€™t get rid of without moving the entire volume away and back again in the hopes that you might luck out and probes might reposition themselves just right. It can get really time consuming to try to resolve those issues, and with fairly complex scenes with only one volume to keep things performant or attempt to simplify, it can happen frequently at times.

So I was additionally thinking: an individual probe actor thingmajigger you can drag into the scene? In my head-thinker, it could work such that as long as this probe is placed within an existing volume, it could automatically contribute to that volume maybe? Could also use this to place near small emissive surfaces too maybe without the need for another volume for that surface?

Just thinking aloud.
Peace! :)

RTXGI NvRTX 4.26.0 patch error

I am not sure if I am doing this right, but when I copied the RTXGI-NvRTX4.26.0.patch into my local NvRtx version of Unreal Engine source code and try to apply the patch, I get this corrupt patch error:

C:\UnrealEn426NvRtx\UnrealEngine>git apply RTXGI-NvRTX4.26.0.patch
RTXGI-NvRTX4.26.0.patch:7: trailing whitespace.
{
RTXGI-NvRTX4.26.0.patch:8: trailing whitespace.
"FileVersion": 3,
RTXGI-NvRTX4.26.0.patch:9: trailing whitespace.
"Version": 1,
RTXGI-NvRTX4.26.0.patch:10: trailing whitespace.
"VersionName": "1.1.23",
RTXGI-NvRTX4.26.0.patch:11: trailing whitespace.
"FriendlyName": "NVIDIA RTXGI Plugin",
error: corrupt patch at line 6571

Thank you for checking into this.
Zoltan

UE4: RTXGI Plugin makes project incompatible with Mac

Implementing a DDGI volume in a level via the PC version of the editor with the RTXGI plugin enabled appears to make that level completely incompatible with the same version of the editor running on Mac. The level becomes completely inaccessible, being removed from the content browser entirely, even though the .umap exists on the disk.
My guess would be that the lighting data from RTXGI is stored in the umap file, which is causing an incompatibility.

Of course, it's not expected that RTXGI will function on Mac, but some sort of graceful fallback to at least allow the levels themselves to remain available would solve this particular problem.
As it stands currently, we can't have cross-compatibility with our project when implementing RTXGI.

Other notes:

  • The Mac platform is not whitelisted in the RTXGI uplugin for obvious reasons. Enabling it results in compilation errors as expected, so it must be disabled at present.
  • Removing DDGI volumes from the levels makes the level accessible via the Mac editor again.

Potential solutions:

  • My understanding is that the GI created by RTXGI can be used on unsupported platforms in a static way, where this GI cannot be changed or updated at runtime. This would be an ideal solution.
  • If the GI created by RTXGI cannot be used on Mac in any way, we at least need to be able to include the RTXGI plugin in a functioning state on Windows, and perhaps with an active but disabled state on Mac, so at least the DDGI volumes are recognised, and don't break compatibility with level assets.

Nvrtx_caustics-4.26 branch patch error

I cloned the nvrtx_caustics4.26 branch following the instructions for getting started and encountered an error checking compatibility.
error: patch failed: Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.cpp:272
error: Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.cpp: patch does not apply
error: patch failed: Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.h:32
error: Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.h: patch does not apply

I cloned rtx_dlss_4.26.1 and installed RTXGI without any problem

Lot's of noticeable noise looking like apperaing/disappearing circular nad blurred blobs.

In main example i can see quite a lot of strange noise when i increase light power or increase exposure.
sp2

Here example with normal exposure and normal light setting. Still quite visible noise with big 'blobs' appearing and disappearing:
sp3

I've played with Hysteresis and and change thresholds but only setting them to edge values like 0.99 helps a little bit at the cost of crazy slow rate of updates for scene changes.

My question, are there any options which would at cost of performance decrease size of those noise blobs? I think if they were smaller and more collocated it would be less distracting?

I've tried to play with volume grid size but examples crash if i set it to bigger values.

Any suggestions on how can i improve quality/stability of GI at cost of performance? What rules are driving max/valid size of volumes?

Some additional info:

  • I'm using quite fresh master (last commit: 4c2c2c8)
  • RTX 2080 TI
  • Windows 10 (18363.778)
  • Nvidia Driver: 445.87

Discontinuities in lit surface

Hello,
I would like to ask about artifacts I'm getting. Sphere is close to the wall, is not moving. The directional light is also not moving.
One patch of the wall in proximity of the sphere is black - completely unlit. I understand the nearest light probes are shadowed by the sphere. But I would expect that the pixel would be illuminated by several probes and therefore produce continuous result.

rtxgi_artefact_01

Is it a bug or feature? How to reduce this effect?

Thanks a lot in advance
Tomas Drinovsky

I didnt know how it works

Could anyone tell me how to make that work on my Gtx 1080 i download the file but i cant use it in Cmake, is there any video or image for help me?
Thanks Everyone

UE4: CTD crash with Async Loading Thread Enabled

Using NvRTX4.25.4 and latest version of RTXGI plugin.

As soon as 'Async Loading Thread Enabled' is checked in project settings, the packaged game will immediately crash when loading any level with a DDGI Volume in. Tested and confirmed in 2 projects, including the NGXSettingsUI test project.

Further error details below:

Assertion failed: IsInGameThread() [File:P:/NvRTX/Engine/Source/Runtime/RenderCore/Private/RenderingThread.cpp] [Line: 1335]

OrvilleFanGame_Win64_DebugGame!AssertFailedImplV() [P:\NvRTX\Engine\Source\Runtime\Core\Private\Misc\AssertionMacros.cpp:100]
OrvilleFanGame_Win64_DebugGame!FDebug::CheckVerifyFailedImpl() [P:\NvRTX\Engine\Source\Runtime\Core\Private\Misc\AssertionMacros.cpp:450]
OrvilleFanGame_Win64_DebugGame!GetPendingCleanupObjects() [P:\NvRTX\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:1358]
OrvilleFanGame_Win64_DebugGame!FlushRenderingCommands() [P:\NvRTX\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:1261]
OrvilleFanGame_Win64_DebugGame!UDDGIVolumeComponent::Serialize() [P:\NvRTX\Engine\Plugins\Runtime\Nvidia\RTXGI\Source\RTXGI\Private\DDGIVolumeComponent.cpp:675]
OrvilleFanGame_Win64_DebugGame!FAsyncPackage::EventDrivenSerializeExport() [P:\NvRTX\Engine\Source\Runtime\CoreUObject\Private\Serialization\AsyncLoading.cpp:3179]
OrvilleFanGame_Win64_DebugGame!FAsyncPackage::ProcessImportsAndExports_Event() [P:\NvRTX\Engine\Source\Runtime\CoreUObject\Private\Serialization\AsyncLoading.cpp:3506]
OrvilleFanGame_Win64_DebugGame!<lambda_09983e57678d61245a3f00566aacef3f>::operator()() [P:\NvRTX\Engine\Source\Runtime\CoreUObject\Private\Serialization\AsyncLoading.cpp:2286]
OrvilleFanGame_Win64_DebugGame!FAsyncLoadingThread::ProcessAsyncLoading() [P:\NvRTX\Engine\Source\Runtime\CoreUObject\Private\Serialization\AsyncLoading.cpp:4037]
OrvilleFanGame_Win64_DebugGame!FAsyncLoadingThread::TickAsyncThread() [P:\NvRTX\Engine\Source\Runtime\CoreUObject\Private\Serialization\AsyncLoading.cpp:4820]
OrvilleFanGame_Win64_DebugGame!FAsyncLoadingThread::Run() [P:\NvRTX\Engine\Source\Runtime\CoreUObject\Private\Serialization\AsyncLoading.cpp:4747]
OrvilleFanGame_Win64_DebugGame!FRunnableThreadWin::Run() [P:\NvRTX\Engine\Source\Runtime\Core\Private\Windows\WindowsRunnableThread.cpp:86]

Having an Issue applying the Nvidia RTX GI patch

E:\Nvidia_Branch>git apply RTXGI-NvRTX4.26.0.patch
RTXGI-NvRTX4.26.0.patch:7: trailing whitespace.
{
RTXGI-NvRTX4.26.0.patch:8: trailing whitespace.
"FileVersion": 3,
RTXGI-NvRTX4.26.0.patch:9: trailing whitespace.
"Version": 1,
RTXGI-NvRTX4.26.0.patch:10: trailing whitespace.
"VersionName": "1.1.23",
RTXGI-NvRTX4.26.0.patch:11: trailing whitespace.
"FriendlyName": "NVIDIA RTXGI Plugin",
error: patch failed: Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.cpp:272
error: Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.cpp: patch does not apply
error: patch failed: Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.h:32
error: Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.h: patch does not apply
error: patch failed: Engine/Source/Runtime/Renderer/Private/IndirectLightRendering.cpp:342
error: Engine/Source/Runtime/Renderer/Private/IndirectLightRendering.cpp: patch does not apply
error: patch failed: Engine/Source/Runtime/Renderer/Private/RayTracing/RayTracingLighting.h:14
error: Engine/Source/Runtime/Renderer/Private/RayTracing/RayTracingLighting.h: patch does not apply
error: patch failed: Engine/Source/Runtime/Renderer/Private/SystemTextures.h:11
error: Engine/Source/Runtime/Renderer/Private/SystemTextures.h: patch does not apply

UE4: Unable to package if Vulkan is enabled as an RHI

If the Vulkan option is checked in the project settings, and the RTXGI plugin is added to the project, packaging fails entirely. Error message during packaging follows:

UATHelper: Packaging (Windows (64-bit)): LogShaderCompilers: Warning: 2 Shader compiler errors compiling global shaders for platform SF_VULKAN_SM5:
UATHelper: Packaging (Windows (64-bit)): LogShaderCompilers: Warning: P:/NvRTX/Engine/Plugins/Runtime/Nvidia/RTXGI/Shaders/Private/SDK/Common.ush(68): Shader FVolumeVisualizeShaderPS, Permutation 0, VF None:
UATHelper: Packaging (Windows (64-bit)): error: Illegal use of reserved word 'packed'
UATHelper: Packaging (Windows (64-bit)):
UATHelper: Packaging (Windows (64-bit)): LogShaderCompilers: Warning: P:/NvRTX/Engine/Plugins/Runtime/Nvidia/RTXGI/Shaders/Private/SDK/Common.ush(68): Shader FVolumeVisualizeShaderPS, Permutation 0, VF None:
UATHelper: Packaging (Windows (64-bit)): error: syntax error, unexpected ERROR_TOK, expecting IDENTIFIER or TYPE_IDENTIFIER or NEW_IDENTIFIER
UATHelper: Packaging (Windows (64-bit)):
PackagingResults: Warning: 2 Shader compiler errors compiling global shaders for platform SF_VULKAN_SM5:
PackagingResults: Warning: P:/NvRTX/Engine/Plugins/Runtime/Nvidia/RTXGI/Shaders/Private/SDK/Common.ush(68): Shader FVolumeVisualizeShaderPS, Permutation 0, VF None:
PackagingResults: Error: Illegal use of reserved word 'packed'
PackagingResults: Warning: P:/NvRTX/Engine/Plugins/Runtime/Nvidia/RTXGI/Shaders/Private/SDK/Common.ush(68): Shader FVolumeVisualizeShaderPS, Permutation 0, VF None:
PackagingResults: Error: syntax error, unexpected ERROR_TOK, expecting IDENTIFIER or TYPE_IDENTIFIER or NEW_IDENTIFIER
UATHelper: Packaging (Windows (64-bit)): LogShaderCompilers: Error: Errors compiling global shader FVolumeVisualizeShaderPS :
UATHelper: Packaging (Windows (64-bit)):
UATHelper: Packaging (Windows (64-bit)): LogShaderCompilers: Error: /Plugin/RTXGI/Private/SDK/Common.ush(68): error: Illegal use of reserved word 'packed'
UATHelper: Packaging (Windows (64-bit)): LogShaderCompilers: Error: /Plugin/RTXGI/Private/SDK/Common.ush(68): error: syntax error, unexpected ERROR_TOK, expecting IDENTIFIER or TYPE_IDENTIFIER or NEW_IDENTIFIER
UATHelper: Packaging (Windows (64-bit)): LogOutputDevice: Warning:
UATHelper: Packaging (Windows (64-bit)):
UATHelper: Packaging (Windows (64-bit)): Script Stack (0 frames):
UATHelper: Packaging (Windows (64-bit)):
PackagingResults: Error: Errors compiling global shader FVolumeVisualizeShaderPS :
PackagingResults: Error: /Plugin/RTXGI/Private/SDK/Common.ush(68): error: Illegal use of reserved word 'packed'
PackagingResults: Error: /Plugin/RTXGI/Private/SDK/Common.ush(68): error: syntax error, unexpected ERROR_TOK, expecting IDENTIFIER or TYPE_IDENTIFIER or NEW_IDENTIFIER
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: begin: stack for UAT
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: === Critical error: ===
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error:
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: Fatal error: [File:P:/NvRTX/Engine/Source/Runtime/Engine/Private/ShaderCompiler/ShaderCompiler.cpp] [Line: 5003]
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: Failed to compile global shader FVolumeVisualizeShaderPS . Enable 'r.ShaderDevelopmentMode' in ConsoleVariables.ini for retries.
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error:
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error:
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007fff8f4e3e49 KERNELBASE.dll!UnknownFunction []
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ffef0ebeaf6 UE4Editor-Core.dll!ReportAssert() [P:\NvRTX\Engine\Source\Runtime\Core\Private\Windows\WindowsPlatformCrashContext.cpp:1541]
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ffef0ec1ed8 UE4Editor-Core.dll!FWindowsErrorOutputDevice::Serialize() [P:\NvRTX\Engine\Source\Runtime\Core\Private\Windows\WindowsErrorOutputDevice.cpp:78]
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ffef0c4e3bd UE4Editor-Core.dll!FOutputDevice::LogfImpl() [P:\NvRTX\Engine\Source\Runtime\Core\Private\Misc\OutputDevice.cpp:61]
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ffeeeb76436 UE4Editor-Engine.dll!ProcessCompiledGlobalShaders() [P:\NvRTX\Engine\Source\Runtime\Engine\Private\ShaderCompiler\ShaderCompiler.cpp:5023]
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ffeeeb78067 UE4Editor-Engine.dll!FShaderCompilingManager::ProcessCompiledShaderMaps() [P:\NvRTX\Engine\Source\Runtime\Engine\Private\ShaderCompiler\ShaderCompiler.cpp:2453]
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ffeeeb75569 UE4Editor-Engine.dll!FShaderCompilingManager::ProcessAsyncResults() [P:\NvRTX\Engine\Source\Runtime\Engine\Private\ShaderCompiler\ShaderCompiler.cpp:2981]
PackagingResults: Error: begin: stack for UAT
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ffeeeb7def2 UE4Editor-Engine.dll!RecompileShadersForRemote() [P:\NvRTX\Engine\Source\Runtime\Engine\Private\ShaderCompiler\ShaderCompiler.cpp:4891]
PackagingResults: Error: === Critical error: ===
PackagingResults: Error: Fatal error: [File:P:/NvRTX/Engine/Source/Runtime/Engine/Private/ShaderCompiler/ShaderCompiler.cpp] [Line: 5003]
PackagingResults: Error: Failed to compile global shader FVolumeVisualizeShaderPS . Enable 'r.ShaderDevelopmentMode' in ConsoleVariables.ini for retries.
PackagingResults: Error: [Callstack] 0x00007fff8f4e3e49 KERNELBASE.dll!UnknownFunction []
PackagingResults: Error: [Callstack] 0x00007ffef0ebeaf6 UE4Editor-Core.dll!ReportAssert() [P:\NvRTX\Engine\Source\Runtime\Core\Private\Windows\WindowsPlatformCrashContext.cpp:1541]
PackagingResults: Error: [Callstack] 0x00007ffef0ec1ed8 UE4Editor-Core.dll!FWindowsErrorOutputDevice::Serialize() [P:\NvRTX\Engine\Source\Runtime\Core\Private\Windows\WindowsErrorOutputDevice.cpp:78]
PackagingResults: Error: [Callstack] 0x00007ffef0c4e3bd UE4Editor-Core.dll!FOutputDevice::LogfImpl() [P:\NvRTX\Engine\Source\Runtime\Core\Private\Misc\OutputDevice.cpp:61]
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ffeeb98c05d UE4Editor-UnrealEd.dll!UCookOnTheFlyServer::SaveGlobalShaderMapFiles() [P:\NvRTX\Engine\Source\Editor\UnrealEd\Private\CookOnTheFlyServer.cpp:6504]
PackagingResults: Error: [Callstack] 0x00007ffeeeb76436 UE4Editor-Engine.dll!ProcessCompiledGlobalShaders() [P:\NvRTX\Engine\Source\Runtime\Engine\Private\ShaderCompiler\ShaderCompiler.cpp:5023]
PackagingResults: Error: [Callstack] 0x00007ffeeeb78067 UE4Editor-Engine.dll!FShaderCompilingManager::ProcessCompiledShaderMaps() [P:\NvRTX\Engine\Source\Runtime\Engine\Private\ShaderCompiler\ShaderCompiler.cpp:2453]
PackagingResults: Error: [Callstack] 0x00007ffeeeb75569 UE4Editor-Engine.dll!FShaderCompilingManager::ProcessAsyncResults() [P:\NvRTX\Engine\Source\Runtime\Engine\Private\ShaderCompiler\ShaderCompiler.cpp:2981]
PackagingResults: Error: [Callstack] 0x00007ffeeeb7def2 UE4Editor-Engine.dll!RecompileShadersForRemote() [P:\NvRTX\Engine\Source\Runtime\Engine\Private\ShaderCompiler\ShaderCompiler.cpp:4891]
PackagingResults: Error: [Callstack] 0x00007ffeeb98c05d UE4Editor-UnrealEd.dll!UCookOnTheFlyServer::SaveGlobalShaderMapFiles() [P:\NvRTX\Engine\Source\Editor\UnrealEd\Private\CookOnTheFlyServer.cpp:6504]
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ffeeb99267c UE4Editor-UnrealEd.dll!UCookOnTheFlyServer::StartCookByTheBook() [P:\NvRTX\Engine\Source\Editor\UnrealEd\Private\CookOnTheFlyServer.cpp:7745]
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ffeeb801582 UE4Editor-UnrealEd.dll!UCookCommandlet::CookByTheBook() [P:\NvRTX\Engine\Source\Editor\UnrealEd\Private\Commandlets\CookCommandlet.cpp:889]
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ffeeb82c57b UE4Editor-UnrealEd.dll!UCookCommandlet::Main() [P:\NvRTX\Engine\Source\Editor\UnrealEd\Private\Commandlets\CookCommandlet.cpp:595]
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ff62a83363a UE4Editor-Cmd.exe!FEngineLoop::PreInitPostStartupScreen() [P:\NvRTX\Engine\Source\Runtime\Launch\Private\LaunchEngineLoop.cpp:3391]
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ff62a82b7ec UE4Editor-Cmd.exe!GuardedMain() [P:\NvRTX\Engine\Source\Runtime\Launch\Private\Launch.cpp:127]
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ff62a82bb5a UE4Editor-Cmd.exe!GuardedMainWrapper() [P:\NvRTX\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:137]
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ff62a83e31d UE4Editor-Cmd.exe!WinMain() [P:\NvRTX\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:268]
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ff62a84040a UE4Editor-Cmd.exe!__scrt_common_main_seh() [d:\agent_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007fff90937034 KERNEL32.DLL!UnknownFunction []
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007fff91b9cec1 ntdll.dll!UnknownFunction []
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error:
UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: end: stack for UAT
PackagingResults: Error: [Callstack] 0x00007ffeeb99267c UE4Editor-UnrealEd.dll!UCookOnTheFlyServer::StartCookByTheBook() [P:\NvRTX\Engine\Source\Editor\UnrealEd\Private\CookOnTheFlyServer.cpp:7745]
PackagingResults: Error: [Callstack] 0x00007ffeeb801582 UE4Editor-UnrealEd.dll!UCookCommandlet::CookByTheBook() [P:\NvRTX\Engine\Source\Editor\UnrealEd\Private\Commandlets\CookCommandlet.cpp:889]
PackagingResults: Error: [Callstack] 0x00007ffeeb82c57b UE4Editor-UnrealEd.dll!UCookCommandlet::Main() [P:\NvRTX\Engine\Source\Editor\UnrealEd\Private\Commandlets\CookCommandlet.cpp:595]
PackagingResults: Error: [Callstack] 0x00007ff62a83363a UE4Editor-Cmd.exe!FEngineLoop::PreInitPostStartupScreen() [P:\NvRTX\Engine\Source\Runtime\Launch\Private\LaunchEngineLoop.cpp:3391]
PackagingResults: Error: [Callstack] 0x00007ff62a82b7ec UE4Editor-Cmd.exe!GuardedMain() [P:\NvRTX\Engine\Source\Runtime\Launch\Private\Launch.cpp:127]
PackagingResults: Error: [Callstack] 0x00007ff62a82bb5a UE4Editor-Cmd.exe!GuardedMainWrapper() [P:\NvRTX\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:137]
PackagingResults: Error: [Callstack] 0x00007ff62a83e31d UE4Editor-Cmd.exe!WinMain() [P:\NvRTX\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:268]
PackagingResults: Error: [Callstack] 0x00007ff62a84040a UE4Editor-Cmd.exe!__scrt_common_main_seh() [d:\agent_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
PackagingResults: Error: [Callstack] 0x00007fff90937034 KERNEL32.DLL!UnknownFunction []
PackagingResults: Error: [Callstack] 0x00007fff91b9cec1 ntdll.dll!UnknownFunction []
PackagingResults: Error: end: stack for UAT
UATHelper: Packaging (Windows (64-bit)): Took 170.17932s to run UE4Editor-Cmd.exe, ExitCode=3
UATHelper: Packaging (Windows (64-bit)): ERROR: Cook failed.
UATHelper: Packaging (Windows (64-bit)): (see P:\NvRTX\Engine\Programs\AutomationTool\Saved\Logs\Log.txt for full exception trace)
PackagingResults: Error: Cook failed.
UATHelper: Packaging (Windows (64-bit)): AutomationTool exiting with ExitCode=25 (Error_UnknownCookFailure)
UATHelper: Packaging (Windows (64-bit)): BUILD FAILED
PackagingResults: Error: Unknown Cook Failure

irradiance.hlsl

In irradiance.hlsl line 185, irradiance *= (0.5 * RTXGI_PI); //factored out of the probes

RTXGI_PI is lambert constant.However I can not figure out where is 0.5 come from.Is it a math constant or a code bug?

TestHarness Crashes On Launch

Was able to track this down to ParseApplication in Config.cpp, needed to remove the "- 1" from lines that are parsing: "line.size() - length - 1". Don't know if this is a configuration step I've missed that causes this, but doing this fixed it up and I was able to run everything just fine.

Question: no longer using NoCheb fallback term?

Hi. I remember from Mcguire's original GDC talk, during irradiance evaluation, it falls back to classic irradiance probe evaluation if most lighting contribution is crushed by chebyshev's inequality. That doesn't seem to have been implemented in this SDK. Did it not perform well? or was it replaced by something? Thanks.

"if (dot(farthestDirection, DDGIGetProbeRayDirection(farthestFrontfaceIndex, DDGIVolume.numRaysPerProbe, DDGIVolume.probeRayRotationTransform)) <= 0.f)" Error in calculation code when probe position is automatically adjusted

ProbeRelocationCS.hlsl line 90 code

DevCap_20200430_091627

Here the two vectors of the dot, which are written as the same.
Ithink the code here is to calculate the angle between the nearest trace ray and the farthest trace ray, and if it is greater than 180 degrees, it moves in the direction of the distant ray.

RTXGI Indirect Lighting Not Visible in RT Reflections

G'Mornin' all~~ :D

Wondering if this is by design, a limitation, or perhaps a bug maybe? I'm noticing that, with a prototype I'm putting together to test Unreal Engine 4, RTXGI, and optimizations (I'm experimenting in This NVRTX branch and RTXGI plugin from 4.25.3) to get familiar with everything, that RTXGI lighting isnt' visible in RT reflections. Would be aesthetically gorgeous if it could optionally contribute lighting to reflections! While screen space hybridization of rt reflections can kinda fake this I guess, it's still pretty obvious and jarring in this case I've tried - especially on large flat surfaces like a shiny floor, water, etc.

Anyway, here's a screenie of what I see. Thanks so much for this plugin and everything y'all are doing to push real-time rendering to the next level! :D

HighresScreenshot00018

RtxGi not working

So I have everything set up correctly. I built the NvRtx branch from source and installed the patch and plugin and everything works right except the actual GI.
image

Also when enabling ray traced shadows on the skylight the probes look transparent.
image

RTXGI in reflections

The GI seems strange/dark in reflections. I know raytraced reflections have issues with transparent objects too (they go black).

Here is a shot looking at a mirror.

image

Here is how what is being reflected looks.

image

Currently we are fudging all the internal lighting by using emissive hidden objects (as per the documentation) until we can get RTXDI.

image

They can be seen in the reflections also (even though they are hidden objects) which I assume is also a result of the RTXGI not being happy with reflections.

Warnings in the shaders.

Hey, I have got a lot of these. I wonder is this my error to look at them?

Since i have took the shaders and integrated in the msbuild system to compile them offline.
All the best.

1>..\src\shaders/../../samples/test-harness/shaders/Indirect.hlsl(59,42): warning GBFFABD58: implicit truncation of vector type
1> float3 diffuse = RTGBufferD.Load(int3(input.position.xy, 0)).rgb;
1> ^
1>..\src\shaders/../../samples/test-harness/shaders/Indirect.hlsl(62,56): warning GBFFABD58: implicit truncation of vector type
1> ambientOcclusion = UseRTAO ? RTAOFiltered.Load(int3(input.position.xy, 0)) : 1.f;

NvLink Multi-GPU support

I have tried the various UE4 RTX branches but none seems to be making use of NvLink Multi-GPU support as only one of my two RTX 2080Ti are in use. I did read about a raytracing multi-GPU solution in the Nvidia Dev Blog: Rendering Perfect Reflections and Refractions in Path-Traced Games (https://developer.nvidia.com/blog/rendering-perfect-reflections-and-refractions-in-path-traced-games/) I was wandering if a similar solution could be implemented in this or any of the Nvidia custom RTX UE4 branches to get at least some multi-GPU scaling?

Thank you

Platform specific typecast UINT -> uint32 (DDGIVolumeUpdate.cpp)

Identified using clang toolset, six instance in DDGIVolumeUpdate.cpp, first @ line 1069, of the form:

uint32 numGroupsX = (UINT)ceil((float)numThreadsX / groupSize);
uint32 numGroupsY = (UINT)ceil((float)numThreadsY / groupSize);

Which ought be of the form:

uint32 numGroupsX = (uint32)ceil((float)numThreadsX / groupSize);
uint32 numGroupsY = (uint32)ceil((float)numThreadsY / groupSize);

How to handle rect area light with RTXGI

Hello!

In order to calculate probe irradiance, RTXGI requires to calculate direct diffuse from lights first. And the "TestHarness" project has shown how to handle direct diffuse calculation of directional, point and spot light but without area light. What is the proper way to integrate area light into RTXGI SDK?
(especially its partial visibility problem, as "TestHarness" can just use one visibility ray for punctual lights but this doesn't work with area light)

I notice that the paper "Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields" that RTXGI based on has such a statement:

We can also handle direct illumination from extended area light sources using our indirect illumination pipeline: all one-bounce indirect lighting contributions compute one bounce of lighting seeded by the direct illumination in a scene. Multiple bounces of indirect illumination are instead seeded by the previous bounce of indirect lighting in the scene. With this in mind, we can compute direct illumination from area lighting by seeding our indirect illumination shading routine with the area lighting emission profile in the scene (i.e., instead of the direct illumination profile)

Is it possible to elaborate the "area lighting emission profile" here?

ImGui flickering issue with the test harness app

On a 2080 with latest drivers, running in release. The interface flickers in and out pretty frequently, and is most visible with vsync disabled. It's probably a sync/barrier issue, but I didn't have a chance to debug that myself.

Can't apply UE4 plugin patch to latest NvRTX UE4 branch

I'm running into issues applying the UE4 plugin (commit) patch to the lastest NvRTX branch (commit). These errors are getting thrown when running --check or just plain apply.

error: cannot apply binary patch to 'Engine/Binaries/ThirdParty/NVIDIA/NGX/Win64/nvngx_dlss.dll' without full index line
error: Engine/Binaries/ThirdParty/NVIDIA/NGX/Win64/nvngx_dlss.dll: patch does not apply
error: cannot apply binary patch to 'Engine/Source/ThirdParty/NVIDIA/NGX/lib/nvsdk_ngx_d.lib' without full index line
error: Engine/Source/ThirdParty/NVIDIA/NGX/lib/nvsdk_ngx_d.lib: patch does not apply
error: cannot apply binary patch to 'Engine/Source/ThirdParty/NVIDIA/NGX/lib/nvsdk_ngx_d_dbg.lib' without full index line
error: Engine/Source/ThirdParty/NVIDIA/NGX/lib/nvsdk_ngx_d_dbg.lib: patch does not apply
error: cannot apply binary patch to 'Engine/Source/ThirdParty/NVIDIA/NGX/lib/nvsdk_ngx_s.lib' without full index line
error: Engine/Source/ThirdParty/NVIDIA/NGX/lib/nvsdk_ngx_s.lib: patch does not apply
error: cannot apply binary patch to 'Engine/Source/ThirdParty/NVIDIA/NGX/lib/nvsdk_ngx_s_dbg.lib' without full index line
error: Engine/Source/ThirdParty/NVIDIA/NGX/lib/nvsdk_ngx_s_dbg.lib: patch does not apply

Any pointers what I might be doing wrong? Many thanks in advance!

Filtered distance lookup possibly incorrect?

In Irradiance.hlsl when looping through adjacent probes, to lookup irradiance we use a surface normal vector to calculate octahedron coords, which is then used in dot product:

float3 worldPosToAdjProbe = normalize(adjacentProbeWorldPosition - worldPosition);
float wrapShading = (dot(worldPosToAdjProbe, direction) + 1.f) * 0.5f;
octantCoords = DDGIGetOctahedralCoordinates(direction); // surface normal

I would expect that in order to lookup filtered distance, we convert vector from world position to adjacent probe position to octahedron coords.

But when looking up filtered distance, the direction is negated:

float3 biasedPosToAdjProbe = normalize(adjacentProbeWorldPosition - biasedWorldPosition);
float2 octantCoords = DDGIGetOctahedralCoordinates(-biasedPosToAdjProbe);

I may be missing something simple here, but is this correct? If so, could you please explain why.

EDIT: nevermind, the negate sign confused me, but I figured it out that we want to look the other direction in order to see if the probe is obscured. Sorry for useless issue.

RTXGI in open worlds

Hi Nvidia, thanks for the great software. I was wondering what is the recommended way to use RTXGI in an open world setting. Is there a way to cascade RTXGI volumes or some other way to scale the probes up to large distances?

Error after i enable the plugin

I get a error "The following modules are missing or built with a different engine version: RTXGI
Engine modules cannot be compiled at runtime. Please build through your IDE.

image

image (1)
image (2)
image (3)

UE 4.26 all probes are black

Hello,
I have loaded the default UE exterior archviz scene and placed the ddgi volume there. I have enabled ddgi by cvar but all probes are black when I view them. Normally it should work automatically when I put the ddgi volume in a scene where raytracing is enabled.

probeviz says that the geometry is green so it should work there too.

I had problems before applying the patch. With the notepad ++ SOL switch to Unix, the whole thing worked. Can that have caused the error?

TestHarness.exe produces incorrect log messages when used without arguments

Launching TestHarness.exe without arguments produces "Error: failed to initialize D3D12!" in the log when in fact it should exit immediately. It turns out that it is reading the executable as a config file (!) due to weirdness with CommandLineToArgvW. If there are no arguments, that function will return a single argument with the executable path.

Also, it seemed strange that the config file use paths relative to the working directory, rather than relative to the config file itself.

I am making a pull request that fixes both of these things, generally improving the startup and error reporting behavior.

Patch error on 4.26.1 How to solve and apply correctly the patch?

Hi!
Everytime I apply the pathc check, I get this errors.

Any Idea how to solve this?

B:\Unreal>git apply --check RTXGI-NvRTX4.26.1.patch
error: patch failed: Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.cpp:272
error: Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.cpp: patch does not apply
error: patch failed: Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.h:32
error: Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.h: patch does not apply
error: patch failed: Engine/Source/Runtime/Renderer/Private/IndirectLightRendering.cpp:342
error: Engine/Source/Runtime/Renderer/Private/IndirectLightRendering.cpp: patch does not apply
error: patch failed: Engine/Source/Runtime/Renderer/Private/RayTracing/RayTracingLighting.h:14
error: Engine/Source/Runtime/Renderer/Private/RayTracing/RayTracingLighting.h: patch does not apply
error: patch failed: Engine/Source/Runtime/Renderer/Private/SystemTextures.h:11
error: Engine/Source/Runtime/Renderer/Private/SystemTextures.h: patch does not apply

Console Variables not working

I've downloaded the NvRTX branch with the RTXGI plugin pre-installed and built using Visual Studio 2019. Setup seems to work, DDGI plugin was found and ray tracing was turned on in a new project. I've set up a simple scene and dragged the DDGI Volume but nothing happens. I've turned on DDGI via the console variable .r.RTX.DDGI 1 and still nothing. All the other console variables also do nothing. What would cause for this to happen?

Test-harness crashing

I am trying to run the test harness sample on visual studio however it just crashes when I launch it. I opened the log.txt file and the error says "Failed to initialize D3D12", which is very weird since I have been working with DX12 and DXR for a couple of months now with no issues. I just followed the instructions from the doc on how to build it. I am using VS2019. Any ideas on what might be causing this?

UE4: apply patch error

I cannot apply patches to the UE4 repo or the NvRTX repo, no matter which version I chose. When I use git apply --check *.*.patch command, the following error occurs:

error: patch failed: Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.cpp:272
error: Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.cpp: patch does not apply
error: patch failed: Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.h:32
error: Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.h: patch does not apply
error: patch failed: Engine/Source/Runtime/Renderer/Private/IndirectLightRendering.cpp:342
error: Engine/Source/Runtime/Renderer/Private/IndirectLightRendering.cpp: patch does not apply
error: patch failed: Engine/Source/Runtime/Renderer/Private/RayTracing/RayTracingLighting.h:14
error: Engine/Source/Runtime/Renderer/Private/RayTracing/RayTracingLighting.h: patch does not apply
error: patch failed: Engine/Source/Runtime/Renderer/Private/SystemTextures.h:11
error: Engine/Source/Runtime/Renderer/Private/SystemTextures.h: patch does not apply

I've tested v4.26.1. and v4.25.3. The engine itself is always built well with my VS2017, but if I force to apply the patch (by git apply --reject and manually edit the .rej files) there will be a lot of compile errors.

How can I deal with this?

Platform validation ensure/assert on RDG and RHI resource transitions and tracking [UE4.26.1]

Question

Is there a forthcoming change better integrating with RDG making the manual RHI resource transitions observable to RDG validation?

Issue

On one platform I'm seeing ensure/asserts identifying resources not transitioned appropriately. Unsure if this is platform specific validation bug. Nevertheless, I suspect none of the transition passes matter with respect to the validation error; there's no visibility between manual RHI resource transitions and RDG validation code as far as I can tell.

Example log data from platform validation:

Line 20578: DDGIIrradiance: 0x12c0fd8110 (Whole Resource), Type: Assert, Usage: UAV_Compute, Trace: 0x11610b9800
Line 20580: DDGIDistance: 0x12c102b110 (Whole Resource), Type: Assert, Usage: UAV_Compute, Trace: 0x11610b9700
Line 20582: DDGIOffsets: 0x12c102ad10 (Whole Resource), Type: Assert, Usage: UAV_Compute, Trace: 0x11610b9500
Line 20584: DDGIStates: 0x12c1027110 (Whole Resource), Type: Assert, Usage: UAV_Compute, Trace: 0x11610b9400
Line 20596: DDGIIrradiance: 0x12c0fd8110 (Whole Resource), Type: Assert, Usage: SRV_Compute, Trace: 0x11610b9200
Line 20611: DDGIDistance: 0x12c102b110 (Whole Resource), Type: Assert, Usage: SRV_Compute, Trace: 0x11610b9100
Line 20613: DDGIStates: 0x12c1027110 (Whole Resource), Type: Assert, Usage: SRV_Compute, Trace: 0x11610b8c00
Line 20615: DDGIOffsets: 0x12c102ad10 (Whole Resource), Type: Assert, Usage: UAV_Compute, Trace: 0x1161025300
Line 20617: DDGIIrradiance: 0x12c0fd8110 (Whole Resource), Type: Assert, Usage: UAV_Compute, Trace: 0x11610be500
Line 20631: DDGIStates: 0x12c1027110 (Whole Resource), Type: Assert, Usage: UAV_Compute, Trace: 0x1161024700
Line 20633: DDGIDistance: 0x12c102b110 (Whole Resource), Type: Assert, Usage: UAV_Compute, Trace: 0x11625dd400
Line 20635: DDGIStates: 0x12c1027110 (Whole Resource), Type: Assert, Usage: UAV_Compute, Trace: 0x1161023b00
Line 20638: DDGIIrradiance: 0x12c0fd8110 (Whole Resource), Type: Assert, Usage: UAV_Compute, Trace: 0x116254b400
Line 20640: DDGIIrradiance: 0x12c0fd8110 (Whole Resource), Type: Assert, Usage: UAV_Compute, Trace: 0x1161027000
Line 20642: DDGIDistance: 0x12c102b110 (Whole Resource), Type: Assert, Usage: UAV_Compute, Trace: 0x1162544200
Line 20644: DDGIDistance: 0x12c102b110 (Whole Resource), Type: Assert, Usage: UAV_Compute, Trace: 0x116103e200
Line 20646: DDGIOffsets: 0x12c102ad10 (Whole Resource), Type: Assert, Usage: UAV_Compute, Trace: 0x1162549b00
Line 20648: DDGIStates: 0x12c1027110 (Whole Resource), Type: Assert, Usage: UAV_Compute, Trace: 0x1161025c00
Line 20650: DDGIIrradiance: 0x12c0fd8110 (Whole Resource), Type: Assert, Usage: SRV_Graphics, Trace: 0x1162545d00
Line 20652: DDGIDistance: 0x12c102b110 (Whole Resource), Type: Assert, Usage: SRV_Graphics, Trace: 0x1161029200
Line 20654: DDGIStates: 0x12c1027110 (Whole Resource), Type: Assert, Usage: SRV_Graphics, Trace: 0x1162546b00
Line 20656: DDGIOffsets: 0x12c102ad10 (Whole Resource), Type: Assert, Usage: UAV_Graphics, Trace: 0x116100c600
Line 20658: DDGIDummyUAV: 0x12c142fd10 (Whole Resource), Type: Assert, Usage: UAV_Graphics, Trace: 0x116254e200

The above log represents load+update+diffuse render of a simple scene with 1 DDGIVolume. DDGIDummyUAV shows at tail representing the 5 remaining empty slots fill by the following code:

// When there are fewer relevant volumes than the maximum supported, set the empty volume texture slots to dummy values
for (int32 volumeIndex = numVolumes; volumeIndex < FDDGIVolumeSceneProxy::FComponentData::c_RTXGI_DDGI_MAX_SHADING_VOLUMES; ++volumeIndex)
{
	PassParameters->DDGIVolume[volumeIndex].ProbeIrradiance = GSystemTextures.BlackDummy->GetRenderTargetItem().TargetableTexture;
	PassParameters->DDGIVolume[volumeIndex].ProbeDistance = GSystemTextures.BlackDummy->GetRenderTargetItem().TargetableTexture;
	PassParameters->DDGIVolume[volumeIndex].ProbeOffsets = FDDGIVolumeSceneProxy::GetDummyUAV();
	PassParameters->DDGIVolume[volumeIndex].ProbeStates = GSystemTextures.BlackDummy->GetRenderTargetItem().TargetableTexture;
}

Understanding of Code Flow

Resources are created, then Render Diffuse Lighting coordinates resource update w/ compositing scene result. Copy textures are performed once per volume, when asset data is loaded. Each update function operates on a subset of the volumes resources, the pass parameters identify which of those resources it touches, and finally may contain a transition pass inserting barriers for future passes.

Concluding Analysis

Primarily the validation asserts are due to combining both RDG and RHI directly managing barriers manually. This is caught by Platform logic checks, flagging the identified resources as not being accessible for specific pass units (compute/raster).

Quick Question

Now that the caustics branch is out, im seeing it has an emissive light solution, Does this mean this plugin is integrated in that branch now?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.