UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ShaderBundles.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "GlobalShader.h"
6
9{
11
12 // TODO: Dependency issues
13 // class FBundleMode : SHADER_PERMUTATION_ENUM_CLASS("BUNDLE_MODE", ERHIShaderBundleMode);
14 class FBundleMode : SHADER_PERMUTATION_INT("BUNDLE_MODE", 3);
16
17public:
18
20 FDispatchShaderBundleCS(const ShaderMetaType::CompiledShaderInitializerType& Initializer)
21 : FGlobalShader(Initializer)
22 {
23 // Platforms with support for root constants will not have a bind point for this parameter
24 RootConstantsParam.Bind(Initializer.ParameterMap, TEXT("PassData"), SPF_Optional);
25
26 RecordArgBufferParam.Bind(Initializer.ParameterMap, TEXT("RecordArgBuffer"), SPF_Mandatory);
27 RecordDataBufferParam.Bind(Initializer.ParameterMap, TEXT("RecordDataBuffer"), SPF_Optional);
28 RWExecutionBufferParam.Bind(Initializer.ParameterMap, TEXT("RWExecutionBuffer"), SPF_Optional);
29 }
30
31 static const uint32 ThreadGroupSizeX = 64;
32
37
40};
41
42
45{
47
51 {
52 RecordArgBufferParam.Bind(Initializer.ParameterMap, TEXT("RecordArgBuffer"), SPF_Optional);
53 }
54
55 static const uint32 ThreadGroupSizeX = 64;
56
58
59 static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters);
60 static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment);
61
62 RENDERCORE_API static int32 GetMaxShaderBundleSize();
63
64 // Input record structure should match the one declared in the shader.
65 struct FEntryNodeRecord
66 {
67 uint32 DispatchGridSize;
68 uint32 RecordCount;
69 FUintVector PlatformData;
70 };
71 RENDERCORE_API static FEntryNodeRecord MakeInputRecord(uint32 RecordCount, uint32 ArgOffset, uint32 ArgStride, uint32 ArgsBindlessHandle);
72};
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_EXPORTED_GLOBAL_SHADER(ShaderClass, RequiredAPI)
Definition GlobalShader.h:409
#define LAYOUT_FIELD(T, Name,...)
Definition MemoryLayout.h:471
@ SPF_Optional
Definition ShaderParameters.h:49
@ SPF_Mandatory
Definition ShaderParameters.h:51
#define SHADER_PERMUTATION_INT(InDefineName, Count)
Definition ShaderPermutation.h:492
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition ShaderBundles.h:9
static const uint32 ThreadGroupSizeX
Definition ShaderBundles.h:31
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters &Parameters)
Definition ShaderBundles.cpp:17
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition ShaderBundles.cpp:22
LAYOUT_FIELD(FShaderResourceParameter, RecordDataBufferParam)
LAYOUT_FIELD(FShaderResourceParameter, RWExecutionBufferParam)
LAYOUT_FIELD(FShaderResourceParameter, RecordArgBufferParam)
LAYOUT_FIELD(FShaderParameter, RootConstantsParam)
Definition ShaderBundles.h:45
Definition GlobalShader.h:269
FGlobalShader()=default
Definition ShaderParameters.h:56
Definition ShaderParameters.h:87
Definition GlobalShader.h:73
Definition Shader.h:1610
Definition ShaderCore.h:544
Definition ShaderPermutation.h:229
Definition IntVector.h:22