- Adding Uniform Buffer parameter batching functions to ShaderParameterUtils.h
- Adding batched Uniform Buffer binding helper to GlobalShader
- Adding batched Uniform Buffer bindings helpers to FMaterialShader
- Adding SetShaderParameters variant that uses batched parameters.
- Changing UnsetShaderUAVs and UnsetShaderSRVs to use the RHICmdList scratch parameters instead of their own arrays.
#rb zach.bethel
#preflight 63e28ea0e86828e8c830fb50
[CL 24059333 by christopher waters in ue5-main branch]
- RHI Command lists now have their own "scratch" batched parameters for code setting parameters to use. The parameters are reset when the scratch is returned so it's up to the callers to actually set them on the command list.
- Enabling Uniform Buffers in batched shader parameters from shader parameter structs.
- Changing MeshPassProcessor to use FRHIBatchedShaderParameters instead of its own type.
- Updating BasePassRendering to use FRHIBatchedShaderParameters.
#rb zach.bethel
#preflight 63dd54a34d25c400b7c040a6
[CL 23996881 by christopher waters in ue5-main branch]
- MeshPassProcessor converted to use SetShaderParameters instead of setting individual resources. Caching of SRVs and Samplers was also removed.
- UnsetShaderSRVs and UnsetShaderUAVs now set all the null binds in a single SetShaderParameters command.
- Made some FRHIShaderParameterResource utilities more public.
#jira none
#rb jeannoe.morrisette, luke.thatcher
#preflight 637565eebf76990b71eb38d0
[CL 23197327 by christopher waters in ue5-main branch]
- Expands all RDG and non-RDG bindings into a list of RHIResource bindings.
- Future work could batch up all non-SetShaderParameters calls into similar data structures.
#rb zach.bethel, jeannoe.morissette
#preflight 637320ad3248425305112b91
[CL 23147896 by christopher waters in ue5-main branch]
This ends up reverting parts of my last changes here, including a deprecation.
#jira none
#rb zach.bethel, rob.krajcarski
#preflight 636952af7c2b505190525ed7
[CL 23018217 by christopher waters in ue5-main branch]
- SetShaderParameters and ValidateShaderParameters now require the caller pass in the size of the parameter data. This will be useful when making SetShaderParameters run on the RHI thread.
- SetShaderParameters no longer requires a FShaderParametersMetadata argument since it was never used.
#jira none
#rb jeannoe.morissette
#preflight 636445aaf233f06a1286d576
[CL 22993813 by christopher waters in ue5-main branch]
Uniform Buffer struct initializing now just use a global resource/sampler to instead of calling the getter function.
Adding bindless support to FShaderResourceParameter.
#jira UE-139616
#rb yuriy.odonnell
#preflight 62d9da7fd54af4b9a222d9c5
[CL 21273494 by christopher waters in ue5-main branch]
- Adding support for bindless resources/samplers. The loose resources have to be wrapped in a macro that generates an index and proxy resource when bindless is enabled. Reflection has to parse these differently from other resources since they're parsed as uint parameters. The runtime also has to bind these differently since they end up needing to find their real resource in the binding data and then update a constant buffer.
- To assist in conversions, the shader compiler will detect if a shader is compiled with both bindless and non-bindless resources/samplers and will emit errors if that is the case.
- Adding support for bindless Uniform Buffer resources/samplers. Because Uniform Buffers aren't per-shader, they'll always update their constants with the bindless indices of their resources.
- Adding more flags to FShaderCodePackedResourceCounts required changing all the array initializations to individual parameters since not all the new flags are used everywhere.
- No shaders have been configured to support bindless resources/samplers. Yet.
#jira UE-139616
#rb zach.bethel, arciel.rekman
#preflight 6282b8ec44349a6581a21a39
[CL 20250348 by christopher waters in ue5-main branch]
Cleaning up SetShaderParameters implementations using a new helper class to load parameters from the binary blobs passed in.
#jira none
#rb kenzo.terelst, zach.bethel
#preflight 625f009f9c09ef439d9e8089
[CL 19830463 by christopher waters in ue5-main branch]
- Shaders are searched by TypeName and PermutationId, so move those fields out of FShader and into separate arrays inside ShaderMap, to reduce cache misses while finding shaders
#rb none
#ROBOMERGE-OWNER: ben.ingram
#ROBOMERGE-AUTHOR: ben.ingram
#ROBOMERGE-SOURCE: CL 12646854 via CL 12646966 via CL 12646981
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v675-12543919)
[CL 12646995 by ben ingram in Main branch]
#rb zach.bethel
#ROBOMERGE-OWNER: dmitriy.dyomin
#ROBOMERGE-AUTHOR: dmitriy.dyomin
#ROBOMERGE-SOURCE: CL 12099362 via CL 12099363 via CL 12099738
#ROBOMERGE-BOT: (v657-12064184)
[CL 12099753 by dmitriy dyomin in Main branch]