UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
RHIShaderLibrary.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "RHIResources.h"
7
8//
9// Shader Library
10//
11
13{
14public:
16 virtual ~FRHIShaderLibrary() {}
17
18 inline EShaderPlatform GetPlatform(void) const { return Platform; }
19 inline const FString& GetName(void) const { return LibraryName; }
20 inline uint32 GetId(void) const { return LibraryId; }
21
22 virtual bool IsNativeLibrary() const = 0;
23 virtual int32 GetNumShaderMaps() const = 0;
24 virtual int32 GetNumShaders() const = 0;
25 virtual int32 GetNumShadersForShaderMap(int32 ShaderMapIndex) const = 0;
26 virtual int32 GetShaderIndex(int32 ShaderMapIndex, int32 i) const = 0;
27 virtual void GetAllShaderIndices(int32 ShaderMapIndex, TArray<int32>& ShaderIndices) {}
28 virtual uint32 GetSizeBytes() const = 0;
29 virtual FSHAHash GetShaderHash(int32 ShaderMapIndex, int32 ShaderIndex) = 0;
30 virtual FSHAHash GetShaderMapHash(int32 ShaderMapIndex) const = 0;
32 virtual int32 FindShaderIndex(const FSHAHash& Hash) = 0;
33 virtual uint32 GetShaderSizeBytes(int32 ShaderIndex) const { return 0; }
34 virtual bool IsPreloading(int32 ShaderIndex, FGraphEventArray& OutCompletionEvents) { return false; }
35 virtual bool PreloadShader(int32 ShaderIndex, FGraphEventArray& OutCompletionEvents) { return false; }
36 virtual bool PreloadShaderMap(int32 ShaderMapIndex, FGraphEventArray& OutCompletionEvents) { return false; }
38 virtual void ReleasePreloadedShader(int32 ShaderIndex) {}
39
40 virtual void AddRefPreloadedShaderGroup(int32 ShaderGroupIndex) {}
41 virtual void ReleasePreloadedShaderGroup(int32 ShaderGroupIndex) {}
42 virtual int32 GetGroupIndexForShader(int32 ShaderIndex) const { return INDEX_NONE; }
43 virtual int32 GetLibraryId() { return LibraryId; }
44 /*CreateShader can return a null shader when bRequired == false. Usefull to debug dynamic shader preloading or when shaders haven't finished loading.*/
45 virtual TRefCountPtr<FRHIShader> CreateShader(int32 ShaderIndex, bool bRequired = true) { return nullptr; }
46 virtual void Teardown() {};
47
48protected:
50 FString LibraryName;
52};
@ INDEX_NONE
Definition CoreMiscDefines.h:150
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
@ RRT_ShaderLibrary
Definition RHIDefinitions.h:1069
EShaderPlatform
Definition RHIShaderPlatform.h:11
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition RHIResources.h:54
Definition RHIShaderLibrary.h:13
virtual bool PreloadShaderMap(int32 ShaderMapIndex, FCoreDelegates::FAttachShaderReadRequestFunc AttachShaderReadRequestFunc)
Definition RHIShaderLibrary.h:37
virtual int32 GetNumShadersForShaderMap(int32 ShaderMapIndex) const =0
virtual int32 GetShaderIndex(int32 ShaderMapIndex, int32 i) const =0
uint32 LibraryId
Definition RHIShaderLibrary.h:51
const FString & GetName(void) const
Definition RHIShaderLibrary.h:19
virtual bool PreloadShader(int32 ShaderIndex, FGraphEventArray &OutCompletionEvents)
Definition RHIShaderLibrary.h:35
virtual void ReleasePreloadedShaderGroup(int32 ShaderGroupIndex)
Definition RHIShaderLibrary.h:41
virtual ~FRHIShaderLibrary()
Definition RHIShaderLibrary.h:16
FString LibraryName
Definition RHIShaderLibrary.h:50
virtual uint32 GetShaderSizeBytes(int32 ShaderIndex) const
Definition RHIShaderLibrary.h:33
virtual FSHAHash GetShaderMapHash(int32 ShaderMapIndex) const =0
virtual void GetAllShaderIndices(int32 ShaderMapIndex, TArray< int32 > &ShaderIndices)
Definition RHIShaderLibrary.h:27
virtual int32 GetNumShaders() const =0
virtual int32 FindShaderMapIndex(const FSHAHash &Hash)=0
virtual int32 GetNumShaderMaps() const =0
virtual void AddRefPreloadedShaderGroup(int32 ShaderGroupIndex)
Definition RHIShaderLibrary.h:40
virtual int32 GetGroupIndexForShader(int32 ShaderIndex) const
Definition RHIShaderLibrary.h:42
EShaderPlatform Platform
Definition RHIShaderLibrary.h:49
virtual void ReleasePreloadedShader(int32 ShaderIndex)
Definition RHIShaderLibrary.h:38
virtual int32 GetLibraryId()
Definition RHIShaderLibrary.h:43
virtual FSHAHash GetShaderHash(int32 ShaderMapIndex, int32 ShaderIndex)=0
FRHIShaderLibrary(EShaderPlatform InPlatform, FString const &InName)
Definition RHIShaderLibrary.h:15
virtual bool PreloadShaderMap(int32 ShaderMapIndex, FGraphEventArray &OutCompletionEvents)
Definition RHIShaderLibrary.h:36
virtual TRefCountPtr< FRHIShader > CreateShader(int32 ShaderIndex, bool bRequired=true)
Definition RHIShaderLibrary.h:45
uint32 GetId(void) const
Definition RHIShaderLibrary.h:20
virtual bool IsNativeLibrary() const =0
virtual void Teardown()
Definition RHIShaderLibrary.h:46
virtual int32 FindShaderIndex(const FSHAHash &Hash)=0
virtual bool IsPreloading(int32 ShaderIndex, FGraphEventArray &OutCompletionEvents)
Definition RHIShaderLibrary.h:34
virtual uint32 GetSizeBytes() const =0
EShaderPlatform GetPlatform(void) const
Definition RHIShaderLibrary.h:18
Definition SecureHash.h:226
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition RefCounting.h:454