UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
RHICoreShader.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Misc/App.h"
6#include "RHICore.h"
7#include "ShaderCore.h"
9
12
13namespace UE
14{
15namespace RHICore
16{
17
23extern RHICORE_API const FString* GetDiagnosticMessage(uint32 MessageID);
24
30 FRHIBuffer* ArgumentBuffer,
33);
34
38 FRHIBuffer* ArgumentBuffer,
42);
43
45{
46 TArray<FUniformBufferStaticSlot>& StaticSlots = ShaderData->StaticSlots;
47 const FShaderResourceTable& ShaderResourceTable = ShaderData->GetShaderResourceTable();
48
49 StaticSlots.Reserve(ShaderResourceTable.ResourceTableLayoutHashes.Num());
50
51 for (uint32 LayoutHash : ShaderResourceTable.ResourceTableLayoutHashes)
52 {
54 {
55 StaticSlots.Add(Metadata->GetLayout().StaticSlot);
56 }
57 else
58 {
60 }
61 }
62}
63
64template <typename TApplyFunction>
66 FRHIShader* Shader,
69)
70{
71 const TArray<uint32>& LayoutHashes = Shader->GetShaderResourceTable().ResourceTableLayoutHashes;
72 const TArray<FUniformBufferStaticSlot>& Slots = Shader->GetStaticSlots();
73
74 checkf(LayoutHashes.Num() == Slots.Num(), TEXT("Shader %s, LayoutHashes %d, Slots %d"),
75 Shader->GetShaderName(), LayoutHashes.Num(), Slots.Num());
76
77 for (int32 BufferIndex = 0; BufferIndex < Slots.Num(); ++BufferIndex)
78 {
79 const FUniformBufferStaticSlot Slot = Slots[BufferIndex];
80
82 {
85
86 if (Buffer)
87 {
88 ApplyFunction(BufferIndex, Buffer);
89 }
90 }
91 }
92}
93
94template <typename TRHIContext, typename TRHIShader>
97 TRHIShader* Shader,
99{
102 {
103 CommandContext->RHISetShaderUniformBuffer(Shader, BufferIndex, Buffer);
104 });
105}
106
107
108}
109}
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
#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
@ MAX_UNIFORM_BUFFER_STATIC_SLOTS
Definition RHIDefinitions.h:727
uint8 FUniformBufferStaticSlot
Definition RHIDefinitions.h:722
bool IsUniformBufferStaticSlotValid(const FUniformBufferStaticSlot Slot)
Definition RHIDefinitions.h:731
FShaderParametersMetadata * FindUniformBufferStructByLayoutHash(uint32 Hash)
Definition ShaderParameterMetadata.cpp:147
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition RHIResources.h:1581
Definition RHICommandList.h:3819
Definition RHICommandList.h:2735
Definition RHIResources.h:3919
Definition RHIResources.h:827
const FShaderResourceTable & GetShaderResourceTable() const
Definition RHIResources.h:829
TArray< FUniformBufferStaticSlot > StaticSlots
Definition RHIResources.h:846
Definition RHIResources.h:854
Definition RHIResources.h:1232
Definition ShaderCore.h:983
Definition ShaderParameterMetadata.h:136
Definition RHICore.Build.cs:7
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
RHICORE_API void RegisterDiagnosticMessages(const TArray< FShaderDiagnosticData > &In)
Definition RHICoreShader.cpp:255
void InitStaticUniformBufferSlots(FRHIShaderData *ShaderData)
Definition RHICoreShader.h:44
RHICORE_API void DispatchShaderBundleEmulation(FRHIComputeCommandList &InRHICmdList, FRHIShaderBundle *ShaderBundle, FRHIBuffer *ArgumentBuffer, TConstArrayView< FRHIShaderParameterResource > SharedBindlessParameters, TConstArrayView< FRHIShaderBundleComputeDispatch > Dispatches)
Definition RHICoreShader.cpp:82
RHICORE_API const FString * GetDiagnosticMessage(uint32 MessageID)
Definition RHICoreShader.cpp:261
RHICORE_API void SetupShaderCodeValidationData(FRHIShader *RHIShader, class FShaderCodeReader &ShaderCodeReader)
Definition RHICoreShader.cpp:61
RHICORE_API void ValidateStaticUniformBuffer(FRHIUniformBuffer *UniformBuffer, FUniformBufferStaticSlot Slot, uint32 ExpectedHash)
Definition RHICoreShader.cpp:8
void ApplyStaticUniformBuffers(FRHIShader *Shader, const TArray< FRHIUniformBuffer * > &UniformBuffers, TApplyFunction &&ApplyFunction)
Definition RHICoreShader.h:65
RHICORE_API void SetupShaderDiagnosticData(FRHIShader *RHIShader, class FShaderCodeReader &ShaderCodeReader)
Definition RHICoreShader.cpp:237
Definition AdvancedWidgetsModule.cpp:13
Definition RHIShaderParameters.h:398
Definition RHIShaderParameters.h:428
Definition RHIShaderParameters.h:414
Definition RHIResources.h:755
TArray< uint32 > ResourceTableLayoutHashes
Definition RHIResources.h:769