UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
RayGenShaderUtils.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 RayGenShaderUtils.h: Utilities for ray generation shaders shaders.
5=============================================================================*/
6
7#pragma once
8
9#include "RHIDefinitions.h"
10
11#if RHI_RAYTRACING
12#include "RenderResource.h"
13#include "RenderGraphUtils.h"
14#include "PipelineStateCache.h"
15#include "ShaderParameters.h"
16
19{
21 template<typename TShaderClass>
22 static inline void AddRayTraceDispatchPass(
23 FRDGBuilder& GraphBuilder,
24 FRDGEventName&& PassName,
26 typename TShaderClass::FParameters* Parameters,
27 FIntPoint Resolution)
28 {
30
31 GraphBuilder.AddPass(
32 Forward<FRDGEventName>(PassName),
33 Parameters,
35 [RayGenerationShader, Parameters, Resolution](FRDGAsyncTask, FRHICommandList& RHICmdList)
36 {
39
41 FRHIRayTracingShader* RayGenShaderTable[] = { RayGenerationShader.GetRayTracingShader() };
42 Initializer.SetRayGenShaderTable(RayGenShaderTable);
43
45 RHICmdList.RayTraceDispatch(Pipeline, RayGenerationShader.GetRayTracingShader(), GlobalResources, Resolution.X, Resolution.Y);
46 });
47 }
48};
49#endif //RHI_RAYTRACINGO
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
void ClearUnusedGraphResources(const TShaderRef< TShaderClass > &Shader, const FShaderParametersMetadata *ParametersMetadata, typename TShaderClass::FParameters *InoutParameters, std::initializer_list< FRDGResourceRef > ExcludeList={})
Definition RenderGraphUtils.h:195
void SetShaderParameters(FRHIBatchedShaderParameters &BatchedParameters, const FShaderParameterBindings &Bindings, const FShaderParametersMetadata *ParametersMetadata, const void *InParametersData)
Definition ShaderParameterStruct.cpp:883
Definition RenderGraphBuilder.h:49
FRDGPassRef AddPass(FRDGEventName &&Name, const ParameterStructType *ParameterStruct, ERDGPassFlags Flags, ExecuteLambdaType &&ExecuteLambda)
Definition RenderGraphEvent.h:38
FRHIBatchedShaderParameters & GetScratchShaderParameters()
Definition RHICommandList.h:1190
Definition RHICommandList.h:3819
void RayTraceDispatch(FRayTracingPipelineState *Pipeline, FRHIRayTracingShader *RayGenShader, FRHIShaderBindingTable *SBT, const FRayTracingShaderBindings &GlobalResourceBindings, uint32 Width, uint32 Height)
Definition RHICommandList.h:3668
Definition RHIResources.h:984
Definition RHIResources.h:5023
Definition PipelineStateCache.cpp:1285
Definition Shader.h:1021
RHI_API FRayTracingPipelineState * GetAndOrCreateRayTracingPipelineState(FRHICommandList &RHICmdList, const FRayTracingPipelineStateInitializer &Initializer, ERayTracingPipelineCacheFlags Flags=ERayTracingPipelineCacheFlags::Default)
Definition PipelineStateCache.cpp:4012
Definition RenderGraphDefinitions.h:103
Definition RHIShaderParameters.h:241
Definition IntPoint.h:25
IntType Y
Definition IntPoint.h:37
IntType X
Definition IntPoint.h:34