Every shader now has the ability to declare which payload it uses. HitGroup, Miss and Callable shaders may only specify a single type, whereas Raygen shaders may provide more than one.
The global raytracing shader libraries have been categorized according to their payload type, which helps facilitate the creation of minimal ray-tracing pipelines.
Avoid adding callable shaders to the RTPSO if they are not being used.
All RHI shader compilers and shader loaders that support ray tracing have been modified to track an extra uint representing the payload type flagged in the source (at time of compilation).
Add the RayTracingPayloadType to the shadermap DDC key so that we can properly detect when a shader's payload type is invalidated. This is required because we serialize the payload type into the shaders from the C++ side.
#rb Yuriy.ODonnell
#jira none
#preflight 635715cae6096564af4dd28e
[CL 22742893 by chris kulla in ue5-main branch]
- Making ConstantBufferType a constructor only argument. This removes the duplicated logic of calling ShouldUseStableConstantBuffer.
- Moving ShouldUseStableConstantBuffer to ShaderCompilerCommon.
- Made UE::ShaderCompilerCommon::ParseParameterType array arguments const
#jira UE-166341
#rb Guillaume.Abadie
#preflight 634eeceea1527f6b3bda9ff0
[CL 22608320 by christopher waters in ue5-main branch]
- Instrument how long shader preprocessing takes for each shader compilation job.
- Keep a running total in our shader stats per shader type.
- Add logging to track total thread preprocessing time for all shaders.
- Fixup local variable names to match the output log names.
#rb Dan.Elksnitis
#preflight 632a224ab40000c8f08c5815
[CL 22125080 by jason nadro in ue5-main branch]
This allows to iterate to compile the USF file to SPIRV and translate to GLSL to verify the sanity of the SPIRV assembly.
#rb jeannoe.morissette
#jira UE-161125
#preflight 62fe8a8157316140a8fa226a
#fyi laura.hermanns
[CL 21449988 by Guillaume Abadie in ue5-main branch]
- Refactoring FShaderParameterParser to use more string views since we can rely on OriginalParsedShader not changing.
- Split FShaderParameterParser::ParseAndMoveShaderParametersToRootConstantBuffer into smaller functions
- Moving FShaderParametersMetadata::IterateShaderParameterMembers into the only module it's used in, ShaderParameterParser.cpp
- Adding CFLAG_BindlessResources which will be set when ENABLE_BINDLESS_RESOURCES is set
- Adding CFLAG_BindlessSamplers which will be set when ENABLE_BINDLESS_SAMPLERS is set
- Adding resource/sampler detection and conversion to bindless in FShaderParameterParser
#jira UE-139616
#rb guillaume.abadie, jeannoe.morissette, yuriy.odonnell, laura.hermanns
#preflight 62d180cce468fcfd0b7001a0
[CL 21111994 by christopher waters in ue5-main branch]
This is a prerequisite for upcoming bindless changes as it centralizes key points where we register the different binding types.
#jira none
#rb jason.nadro, eric.mcdaniel, jeannoe.morissette
#preflight 62574453f7476d662c8dd2fe
[CL 19761676 by christopher waters in ue5-main branch]
- use STORAGE_IMAGE to read from R64 formats when sampling isn't supported.
- leave high level code and HLSL untouched (RDG will continue to consider them read only access), patch SPIRV instead
- create a codepath for hzb that uses UlongType
- update shader guid for Vulkan to force rebuild
Fixes all validation issues with 64bit atomics and allows the use of RADV driver (AMD+Linux) for Nanite/Lumen.
#jira UE-138513
#preflight 61dc4c98af44b4362836a61f
#rb mihnea.balta
[FYI] Lukas.Hermanns
#ROBOMERGE-AUTHOR: jeannoe.morissette
#ROBOMERGE-SOURCE: CL 18563012 in //UE5/Release-5.0/... via CL 18563033
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)
[CL 18563055 by jeannoe morissette in ue5-release-engine-test branch]