16#include "RayTracingPayloadType.h"
49 template<
typename RayTracingShaderType,
typename ShaderElementDataType>
61 checkf(MaterialRenderProxy.ImmutableSamplerState.ImmutableSamplers[0] ==
nullptr,
TEXT(
"Immutable samplers not yet supported in Mesh Draw Command pipeline"));
93 FMeshMaterialShader::GetElementShaderBindings(
RayTracingShader,
Scene, ViewIfDynamicMeshCommand, VertexFactory,
EVertexInputStreamType::Default, FeatureLevel, PrimitiveSceneProxy,
MeshBatch,
BatchElement,
ShaderElementData,
RayHitGroupShaderBindings, VertexStreams);
113 bool TryAddMeshBatch(
135 return ERayTracingPayloadType::RayTracingMaterial;
140 return RayTracing::GetShaderBindingLayout(Parameters.
Platform);
158 return ERayTracingPayloadType::RayTracingMaterial;
163 return RayTracing::GetShaderBindingLayout(Parameters.
Platform);
181 return ERayTracingPayloadType::Decals;
186 return RayTracing::GetShaderBindingLayout(Parameters.
Platform);
210 if (NumUniformBuffers)
216 Result->NumUniformBuffers = NumUniformBuffers;
229 return *AllocateInternal();
234 const FChunk*
Chunk = FirstChunk;
244 static constexpr uint32 MaxNum = 1024;
247 static_assert(std::is_trivially_destructible_v<FRayTracingLocalShaderBindings>,
"FRayTracingLocalShaderBindings must be trivially destructible, as no destructor will be called.");
260 FChunk* FirstChunk =
nullptr;
261 FChunk* CurrentChunk =
nullptr;
269 if (!CurrentChunk || CurrentChunk->Num == FChunk::MaxNum)
273 static_assert(std::is_trivially_destructible_v<FChunk>,
"Chunk must be trivially destructible, as no destructor will be called.");
274 CurrentChunk = (FChunk*)
ParameterMemory.Alloc(
sizeof(FChunk),
alignof(FChunk));
275 CurrentChunk->Next =
nullptr;
276 CurrentChunk->Num = 0;
278 if (FirstChunk ==
nullptr)
280 FirstChunk = CurrentChunk;
294template <
typename FunctionType>
308 for (
uint32 TaskIndex = 0; TaskIndex < NumTasks; ++TaskIndex)
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define TRACE_CPUPROFILER_EVENT_SCOPE(Name)
Definition CpuProfilerTrace.h:528
#define DECLARE_EXPORTED_GLOBAL_SHADER(ShaderClass, RequiredAPI)
Definition GlobalShader.h:409
@ SF_RayHitGroup
Definition RHIDefinitions.h:211
#define GRHISupportsRayTracingShaders
Definition RHIGlobals.h:856
bool ShouldCompileRayTracingCallableShadersForProject(EShaderPlatform ShaderPlatform)
Definition RenderUtils.cpp:1770
bool ShouldCompileRayTracingShadersForProject(EShaderPlatform ShaderPlatform)
Definition RenderUtils.cpp:1758
#define SHADER_USE_ROOT_PARAMETER_STRUCT(ShaderClass, ShaderParentClass)
Definition ShaderParameterStruct.h:79
Definition GlobalShader.h:173
Definition GlobalShader.h:269
static bool ShouldCompilePermutation(const FShaderPermutationParameters &)
Definition Shader.h:860
Definition MaterialRenderProxy.h:102
Definition MaterialShared.h:2058
FORCEINLINE FMeshDrawSingleShaderBindings GetSingleShaderBindings(EShaderFrequency Frequency, int32 &DataOffset)
Definition MeshPassProcessor.h:978
Definition MeshDrawShaderBindings.h:104
RENDERER_API void GetElementShaderBindings(const FShaderMapPointerTable &PointerTable, const FScene *Scene, const FSceneView *ViewIfDynamicMeshCommand, const FVertexFactory *VertexFactory, const EVertexInputStreamType InputStreamType, const FStaticFeatureLevel FeatureLevel, const FPrimitiveSceneProxy *PrimitiveSceneProxy, const FMeshBatch &MeshBatch, const FMeshBatchElement &BatchElement, const FMeshMaterialShaderElementData &ShaderElementData, FMeshDrawSingleShaderBindings &ShaderBindings, FVertexInputStreamArray &VertexStreams) const
Definition ShaderBaseClasses.cpp:471
Definition PrimitiveSceneProxy.h:296
Definition RenderGraphBuilder.h:49
UE::Tasks::FTask AddSetupTask(TaskLambda &&Task, bool bCondition=true, ERDGSetupTaskWaitPoint WaitPoint=ERDGSetupTaskWaitPoint::Compile)
Definition RHICommandList.h:3819
void SetRayTracingHitGroups(FRHIShaderBindingTable *SBT, FRayTracingPipelineState *Pipeline, uint32 NumBindings, const FRayTracingLocalShaderBindings *Bindings, bool bCopyDataToInlineStorage=true)
Definition RHICommandList.h:4449
Definition RHIResources.h:984
Definition RHIResources.h:3863
Definition RayTracingMeshDrawCommands.h:231
Definition RayTracingMeshDrawCommands.h:69
uint32 GeometrySegmentIndex
Definition RayTracingMeshDrawCommands.h:75
bool bCanBeCached
Definition RayTracingMeshDrawCommands.h:87
bool HasGlobalUniformBufferBindings() const
Definition RayTracingMeshDrawCommands.h:107
FMeshDrawShaderBindings ShaderBindings
Definition RayTracingMeshDrawCommands.h:71
bool bIsTranslucent
Definition RayTracingMeshDrawCommands.h:83
Definition PipelineStateCache.cpp:1285
Definition RayTracingMeshDrawCommands.h:165
Definition SceneView.h:1425
Definition ScenePrivate.h:2875
Definition ShaderCore.h:466
static ERayTracingPayloadType GetRayTracingPayloadType(const int32 PermutationId)
Definition Shader.h:873
static const FShaderBindingLayout * GetShaderBindingLayout(const FShaderPermutationParameters &)
Definition Shader.h:857
Definition VertexFactory.h:661
Type
Definition RHIFeatureLevel.h:20
UE_STRING_CLASS Result(Forward< LhsType >(Lhs), RhsLen)
Definition String.cpp.inl:732
Definition GlobalShader.h:73
static constexpr UE_FORCEINLINE_HINT T DivideAndRoundUp(T Dividend, T Divisor)
Definition UnrealMathUtility.h:694
static UE_FORCEINLINE_HINT void * Memset(void *Dest, uint8 Char, SIZE_T Count)
Definition UnrealMemory.h:119
Definition MeshBatch.h:232
Definition MeshBatch.h:371
Definition RHICommandList.h:267
Definition ShaderPermutation.h:27
const EShaderPlatform Platform
Definition ShaderPermutation.h:29