UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FShaderCodeArchive Class Reference

#include <ShaderCodeArchive.h>

+ Inheritance diagram for FShaderCodeArchive:

Classes

struct  FShaderPreloadEntry
 

Public Member Functions

virtual ~FShaderCodeArchive ()
 
virtual bool IsNativeLibrary () const override
 
virtual uint32 GetSizeBytes () const override
 
virtual int32 GetNumShaders () const override
 
virtual int32 GetNumShaderMaps () const override
 
virtual int32 GetNumShadersForShaderMap (int32 ShaderMapIndex) const override
 
virtual int32 GetShaderIndex (int32 ShaderMapIndex, int32 i) const override
 
virtual void GetAllShaderIndices (int32 ShaderMapIndex, TArray< int32 > &ShaderIndices)
 
virtual int32 FindShaderMapIndex (const FSHAHash &Hash) override
 
virtual int32 FindShaderIndex (const FSHAHash &Hash) override
 
virtual FSHAHash GetShaderHash (int32 ShaderMapIndex, int32 ShaderIndex) override
 
virtual FSHAHash GetShaderMapHash (int32 ShaderMapIndex) const override
 
virtual bool PreloadShader (int32 ShaderIndex, FGraphEventArray &OutCompletionEvents) override
 
virtual bool PreloadShaderMap (int32 ShaderMapIndex, FGraphEventArray &OutCompletionEvents) override
 
virtual void ReleasePreloadedShader (int32 ShaderIndex) override
 
virtual TRefCountPtr< FRHIShaderCreateShader (int32 Index, bool bRequired=true) override
 
virtual void Teardown () override
 
void OnShaderPreloadFinished (int32 ShaderIndex, const IMemoryReadStreamRef &PreloadData)
 
- Public Member Functions inherited from FRHIShaderLibrary
 FRHIShaderLibrary (EShaderPlatform InPlatform, FString const &InName)
 
virtual ~FRHIShaderLibrary ()
 
EShaderPlatform GetPlatform (void) const
 
const FString & GetName (void) const
 
uint32 GetId (void) const
 
virtual uint32 GetShaderSizeBytes (int32 ShaderIndex) const
 
virtual bool IsPreloading (int32 ShaderIndex, FGraphEventArray &OutCompletionEvents)
 
virtual bool PreloadShaderMap (int32 ShaderMapIndex, FCoreDelegates::FAttachShaderReadRequestFunc AttachShaderReadRequestFunc)
 
virtual void AddRefPreloadedShaderGroup (int32 ShaderGroupIndex)
 
virtual void ReleasePreloadedShaderGroup (int32 ShaderGroupIndex)
 
virtual int32 GetGroupIndexForShader (int32 ShaderIndex) const
 
virtual int32 GetLibraryId ()
 
- Public Member Functions inherited from FRHIResource
RHI_API FRHIResource (ERHIResourceType InResourceType)
 
uint32 AddRef () const
 
uint32 Release () const
 
uint32 GetRefCount () const
 
bool IsValid () const
 
void DisableLifetimeExtension ()
 
ERHIResourceType GetType () const
 
FName GetOwnerName () const
 
void SetOwnerName (FName InOwnerName)
 

Static Public Member Functions

static FShaderCodeArchiveCreate (EShaderPlatform InPlatform, FArchive &Ar, const FString &InDestFilePath, const FString &InLibraryDir, const FString &InLibraryName)
 

Protected Member Functions

 FShaderCodeArchive (EShaderPlatform InPlatform, const FString &InLibraryDir, const FString &InLibraryName)
 
FORCENOINLINE void CheckShaderCreation (void *ShaderPtr, int32 Index)
 
bool WaitForPreload (FShaderPreloadEntry &ShaderPreloadEntry)
 
- Protected Member Functions inherited from FRHIResource
virtual RHI_API ~FRHIResource ()
 

Protected Attributes

FString LibraryDir
 
int64 LibraryCodeOffset
 
IFileCacheHandleFileCacheHandle
 
FSerializedShaderArchive SerializedShaders
 
TArray< FShaderPreloadEntryShaderPreloads
 
FRWLock ShaderPreloadLock
 
FShaderUsageVisualizer DebugVisualizer
 
- Protected Attributes inherited from FRHIShaderLibrary
EShaderPlatform Platform
 
FString LibraryName
 
uint32 LibraryId
 

Constructor & Destructor Documentation

◆ ~FShaderCodeArchive()

FShaderCodeArchive::~FShaderCodeArchive ( )
virtual

◆ FShaderCodeArchive()

FShaderCodeArchive::FShaderCodeArchive ( EShaderPlatform  InPlatform,
const FString &  InLibraryDir,
const FString &  InLibraryName 
)
protected

Member Function Documentation

◆ CheckShaderCreation()

FORCENOINLINE void FShaderCodeArchive::CheckShaderCreation ( void ShaderPtr,
int32  Index 
)
inlineprotected

◆ Create()

FShaderCodeArchive * FShaderCodeArchive::Create ( EShaderPlatform  InPlatform,
FArchive Ar,
const FString &  InDestFilePath,
const FString &  InLibraryDir,
const FString &  InLibraryName 
)
static

◆ CreateShader()

TRefCountPtr< FRHIShader > FShaderCodeArchive::CreateShader ( int32  Index,
bool  bRequired = true 
)
overridevirtual

Reimplemented from FRHIShaderLibrary.

◆ FindShaderIndex()

virtual int32 FShaderCodeArchive::FindShaderIndex ( const FSHAHash Hash)
inlineoverridevirtual

Implements FRHIShaderLibrary.

◆ FindShaderMapIndex()

virtual int32 FShaderCodeArchive::FindShaderMapIndex ( const FSHAHash Hash)
inlineoverridevirtual

Implements FRHIShaderLibrary.

◆ GetAllShaderIndices()

virtual void FShaderCodeArchive::GetAllShaderIndices ( int32  ShaderMapIndex,
TArray< int32 > &  ShaderIndices 
)
inlinevirtual

Reimplemented from FRHIShaderLibrary.

◆ GetNumShaderMaps()

virtual int32 FShaderCodeArchive::GetNumShaderMaps ( ) const
inlineoverridevirtual

Implements FRHIShaderLibrary.

◆ GetNumShaders()

virtual int32 FShaderCodeArchive::GetNumShaders ( ) const
inlineoverridevirtual

Implements FRHIShaderLibrary.

◆ GetNumShadersForShaderMap()

virtual int32 FShaderCodeArchive::GetNumShadersForShaderMap ( int32  ShaderMapIndex) const
inlineoverridevirtual

Implements FRHIShaderLibrary.

◆ GetShaderHash()

virtual FSHAHash FShaderCodeArchive::GetShaderHash ( int32  ShaderMapIndex,
int32  ShaderIndex 
)
inlineoverridevirtual

Implements FRHIShaderLibrary.

◆ GetShaderIndex()

virtual int32 FShaderCodeArchive::GetShaderIndex ( int32  ShaderMapIndex,
int32  i 
) const
inlineoverridevirtual

Implements FRHIShaderLibrary.

◆ GetShaderMapHash()

virtual FSHAHash FShaderCodeArchive::GetShaderMapHash ( int32  ShaderMapIndex) const
inlineoverridevirtual

Implements FRHIShaderLibrary.

◆ GetSizeBytes()

virtual uint32 FShaderCodeArchive::GetSizeBytes ( ) const
inlineoverridevirtual

Implements FRHIShaderLibrary.

◆ IsNativeLibrary()

virtual bool FShaderCodeArchive::IsNativeLibrary ( ) const
inlineoverridevirtual

Implements FRHIShaderLibrary.

◆ OnShaderPreloadFinished()

void FShaderCodeArchive::OnShaderPreloadFinished ( int32  ShaderIndex,
const IMemoryReadStreamRef PreloadData 
)

◆ PreloadShader()

bool FShaderCodeArchive::PreloadShader ( int32  ShaderIndex,
FGraphEventArray OutCompletionEvents 
)
overridevirtual

Reimplemented from FRHIShaderLibrary.

◆ PreloadShaderMap()

bool FShaderCodeArchive::PreloadShaderMap ( int32  ShaderMapIndex,
FGraphEventArray OutCompletionEvents 
)
overridevirtual

Reimplemented from FRHIShaderLibrary.

◆ ReleasePreloadedShader()

void FShaderCodeArchive::ReleasePreloadedShader ( int32  ShaderIndex)
overridevirtual

Reimplemented from FRHIShaderLibrary.

◆ Teardown()

void FShaderCodeArchive::Teardown ( )
overridevirtual

Reimplemented from FRHIShaderLibrary.

◆ WaitForPreload()

bool FShaderCodeArchive::WaitForPreload ( FShaderPreloadEntry ShaderPreloadEntry)
protected

Member Data Documentation

◆ DebugVisualizer

FShaderUsageVisualizer FShaderCodeArchive::DebugVisualizer
protected

debug visualizer - in Shipping compiles out to an empty struct with no-op functions

◆ FileCacheHandle

IFileCacheHandle* FShaderCodeArchive::FileCacheHandle
protected

◆ LibraryCodeOffset

int64 FShaderCodeArchive::LibraryCodeOffset
protected

◆ LibraryDir

FString FShaderCodeArchive::LibraryDir
protected

◆ SerializedShaders

FSerializedShaderArchive FShaderCodeArchive::SerializedShaders
protected

◆ ShaderPreloadLock

FRWLock FShaderCodeArchive::ShaderPreloadLock
protected

◆ ShaderPreloads

TArray<FShaderPreloadEntry> FShaderCodeArchive::ShaderPreloads
protected

The documentation for this class was generated from the following files: