13#define VALIDATE_MESH_COMMAND_BINDINGS DO_GUARD_SLOW
113 template<
typename UniformBufferStructType>
116 checkfSlow(Parameter.IsInitialized(),
TEXT(
"Parameter was not serialized"));
118 if (Parameter.IsBound())
120 checkf(
Value.GetReference(),
TEXT(
"Attempted to set null uniform buffer for type %s"), UniformBufferStructType::FTypeInfo::GetStructMetadata()->GetStructTypeName());
121 WriteBindingUniformBuffer(
Value.GetReference(), Parameter.GetBaseIndex());
125 template<
typename UniformBufferStructType>
128 checkfSlow(Parameter.IsInitialized(),
TEXT(
"Parameter was not serialized"));
130 if (Parameter.IsBound())
132 checkf(
Value.GetUniformBufferRHI(),
TEXT(
"Attempted to set null uniform buffer for type %s"), UniformBufferStructType::FTypeInfo::GetStructMetadata()->GetStructTypeName());
133 WriteBindingUniformBuffer(
Value.GetUniformBufferRHI(), Parameter.GetBaseIndex());
139 checkfSlow(Parameter.IsInitialized(),
TEXT(
"Parameter was not serialized"));
141 if (Parameter.IsBound())
144 WriteBindingUniformBuffer(
Value, Parameter.GetBaseIndex());
150 checkfSlow(Parameter.IsInitialized(),
TEXT(
"Parameter was not serialized"));
152 if (Parameter.IsBound())
154 checkf(
Value,
TEXT(
"Attempted to set null SRV on slot %u"), Parameter.GetBaseIndex());
155 WriteBindingSRV(
Value, Parameter.GetBaseIndex());
174 if (TextureParameter.
IsBound())
177 WriteBindingTexture(TextureRHI, TextureParameter.
GetBaseIndex());
187 Add(TextureParameter, TextureRHI);
191 template<
class ParameterType>
197 checkfSlow(Parameter.IsInitialized(),
TEXT(
"Parameter was not serialized"));
199 if (Parameter.IsBound())
219 ensureMsgf(
sizeof(ParameterType) == Parameter.GetNumBytes(),
TEXT(
"Attempted to set fewer bytes than the shader required. Setting %" SIZE_T_FMT " bytes on loose parameter at BaseIndex %u, Size %u. This can cause GPU hangs, depending on usage."),
sizeof(ParameterType), Parameter.GetBaseIndex(), Parameter.GetNumBytes());
220 const int32 NumBytesToSet = FMath::Min<int32>(
sizeof(ParameterType), Parameter.GetNumBytes());
236 checkfSlow(
bFoundParameter,
TEXT(
"Attempted to set loose parameter at BaseIndex %u, Size %u which was never in the shader's parameter map."), Parameter.GetBaseIndex(), Parameter.GetNumBytes());
261 inline uint8* GetSRVTypeStart()
const
267 inline uint8* GetLooseDataStart()
const
273 template<
typename ElementType>
282 const int LeftoverSize =
Size % 2;
310 GetUniformBufferStart()[FoundIndex] =
Value;
313 checkfSlow(FoundIndex >= 0,
TEXT(
"Attempted to set a uniform buffer at BaseIndex %u which was never in the shader's parameter map."), BaseIndex);
321 GetSamplerStart()[FoundIndex] =
Value;
324 checkfSlow(FoundIndex >= 0,
TEXT(
"Attempted to set a texture sampler at BaseIndex %u which was never in the shader's parameter map."), BaseIndex);
335 GetSRVStart()[FoundIndex] =
Value;
338 checkfSlow(FoundIndex >= 0,
TEXT(
"Attempted to set SRV at BaseIndex %u which was never in the shader's parameter map."), BaseIndex);
346 GetSRVStart()[FoundIndex] =
Value;
349 checkfSlow(FoundIndex >= 0,
TEXT(
"Attempted to set Texture at BaseIndex %u which was never in the shader's parameter map."), BaseIndex);
constexpr T Align(T Val, uint64 Alignment)
Definition AlignmentTemplates.h:18
constexpr auto MakeArrayView(OtherRangeType &&Other)
Definition ArrayView.h:873
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define checkfSlow(expr, format,...)
Definition AssertionMacros.h:333
#define check(expr)
Definition AssertionMacros.h:314
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
uint32 Size
Definition VulkanMemory.cpp:4034
Definition MeshDrawShaderBindings.h:17
uint32 GetSRVOffset() const
Definition MeshDrawShaderBindings.h:82
uint32 GetLooseDataOffset() const
Definition MeshDrawShaderBindings.h:94
uint32 GetDataSizeBytes() const
Definition MeshDrawShaderBindings.h:53
FMeshDrawShaderBindingsLayout(const TShaderRef< FShader > &Shader)
Definition MeshDrawShaderBindings.h:23
uint32 GetSRVTypeOffset() const
Definition MeshDrawShaderBindings.h:88
uint32 GetUniformBufferOffset() const
Definition MeshDrawShaderBindings.h:72
uint32 GetLooseDataSizeBytes() const
Definition MeshDrawShaderBindings.h:43
uint32 GetSamplerOffset() const
Definition MeshDrawShaderBindings.h:77
const FShaderParameterMapInfo & ParameterMapInfo
Definition MeshDrawShaderBindings.h:19
bool operator==(const FMeshDrawShaderBindingsLayout &Rhs) const
Definition MeshDrawShaderBindings.h:36
Definition MeshPassProcessor.h:908
Definition MeshDrawShaderBindings.h:104
void Add(FShaderResourceParameter TextureParameter, FRHITexture *TextureRHI)
Definition MeshDrawShaderBindings.h:170
void AddTexture(FShaderResourceParameter TextureParameter, FShaderResourceParameter SamplerParameter, FRHISamplerState *SamplerStateRHI, FRHITexture *TextureRHI)
Definition MeshDrawShaderBindings.h:181
void Add(FShaderParameter Parameter, const ParameterType &Value)
Definition MeshDrawShaderBindings.h:192
FMeshDrawSingleShaderBindings(const FMeshDrawShaderBindingsLayout &InLayout, uint8 *InData)
Definition MeshDrawShaderBindings.h:107
void Add(const TShaderUniformBufferParameter< UniformBufferStructType > &Parameter, const TUniformBuffer< UniformBufferStructType > &Value)
Definition MeshDrawShaderBindings.h:126
void Add(const FShaderUniformBufferParameter &Parameter, const FRHIUniformBuffer *Value)
Definition MeshDrawShaderBindings.h:137
void Add(FShaderResourceParameter Parameter, FRHIShaderResourceView *Value)
Definition MeshDrawShaderBindings.h:148
void Add(const TShaderUniformBufferParameter< UniformBufferStructType > &Parameter, const TUniformBufferRef< UniformBufferStructType > &Value)
Definition MeshDrawShaderBindings.h:114
void Add(FShaderResourceParameter SamplerParameter, FRHISamplerState *SamplerStateRHI)
Definition MeshDrawShaderBindings.h:159
Definition RHIResources.h:54
Definition RHIResources.h:671
Definition RHIResources.h:3304
Definition RHIResources.h:2153
Definition MeshPassProcessor.h:1119
Definition ShaderParameters.h:56
Definition ShaderParameters.h:87
bool IsBound() const
Definition ShaderParameters.h:95
bool IsInitialized() const
Definition ShaderParameters.h:96
uint32 GetBaseIndex() const
Definition ShaderParameters.h:98
Definition ArrayView.h:139
UE_FORCEINLINE_HINT constexpr SizeType Num() const
Definition ArrayView.h:380
GeometryCollection::Facades::FMuscleActivationData Data
Definition MuscleActivationConstraints.h:15
U16 Index
Definition radfft.cpp:71
static constexpr UE_FORCEINLINE_HINT T DivideAndRoundUp(T Dividend, T Divisor)
Definition UnrealMathUtility.h:694
static UE_FORCEINLINE_HINT void * Memcpy(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:160
static UE_FORCEINLINE_HINT void * Memset(void *Dest, uint8 Char, SIZE_T Count)
Definition UnrealMemory.h:119
Definition IsPointer.h:12
Definition IsUECoreType.h:19