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

#include <ShaderCodeArchive.h>

+ Inheritance diagram for FIoStoreShaderCodeArchive:

Public Member Functions

virtual ~FIoStoreShaderCodeArchive ()
 
virtual bool IsNativeLibrary () const override
 
virtual uint32 GetSizeBytes () const override
 
virtual uint32 GetShaderSizeBytes (int32 ShaderIndex) 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 IsPreloading (int32 ShaderIndex, FGraphEventArray &OutCompletionEvents) override
 
virtual bool PreloadShader (int32 ShaderIndex, FGraphEventArray &OutCompletionEvents) override
 
virtual void AddRefPreloadedShaderGroup (int32 ShaderGroupIndex) override
 
virtual void ReleasePreloadedShaderGroup (int32 ShaderGroupIndex) override
 
virtual int32 GetGroupIndexForShader (int32 ShaderIndex) const override
 
virtual bool PreloadShaderMap (int32 ShaderMapIndex, FGraphEventArray &OutCompletionEvents) override
 
virtual bool PreloadShaderMap (int32 ShaderMapIndex, FCoreDelegates::FAttachShaderReadRequestFunc AttachShaderReadRequestFunc) override
 
virtual void ReleasePreloadedShader (int32 ShaderIndex) override
 
virtual TRefCountPtr< FRHIShaderCreateShader (int32 Index, bool bRequired=true) override
 
virtual void Teardown () override
 
- 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 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 RENDERCORE_API FIoChunkId GetShaderCodeArchiveChunkId (const FString &LibraryName, FName FormatName)
 
static RENDERCORE_API FIoChunkId GetShaderCodeChunkId (const FSHAHash &ShaderHash)
 
static RENDERCORE_API void CreateIoStoreShaderCodeArchiveHeader (const FName &Format, const FSerializedShaderArchive &SerializedShaders, FIoStoreShaderCodeArchiveHeader &OutHeader)
 
static RENDERCORE_API void SaveIoStoreShaderCodeArchive (const FIoStoreShaderCodeArchiveHeader &Header, FArchive &OutLibraryAr)
 
static FIoStoreShaderCodeArchiveCreate (EShaderPlatform InPlatform, const FString &InLibraryName, FIoDispatcher &InIoDispatcher)
 

Additional Inherited Members

- Protected Member Functions inherited from FRHIResource
virtual RHI_API ~FRHIResource ()
 
- Protected Attributes inherited from FRHIShaderLibrary
EShaderPlatform Platform
 
FString LibraryName
 
uint32 LibraryId
 

Constructor & Destructor Documentation

◆ ~FIoStoreShaderCodeArchive()

FIoStoreShaderCodeArchive::~FIoStoreShaderCodeArchive ( )
virtual

Member Function Documentation

◆ AddRefPreloadedShaderGroup()

void FIoStoreShaderCodeArchive::AddRefPreloadedShaderGroup ( int32  ShaderGroupIndex)
overridevirtual

Reimplemented from FRHIShaderLibrary.

◆ Create()

FIoStoreShaderCodeArchive * FIoStoreShaderCodeArchive::Create ( EShaderPlatform  InPlatform,
const FString &  InLibraryName,
FIoDispatcher InIoDispatcher 
)
static

◆ CreateIoStoreShaderCodeArchiveHeader()

void FIoStoreShaderCodeArchive::CreateIoStoreShaderCodeArchiveHeader ( const FName Format,
const FSerializedShaderArchive SerializedShaders,
FIoStoreShaderCodeArchiveHeader OutHeader 
)
static

This function creates the archive header, including splitting shaders into groups.

Third and last stage of processing the shader group. We actually add it here, and do the book-keeping.

Second stage of processing shader group. Here we potentially split the group into smaller ones (as equally as possible), striving to meet limit imposed by r.ShaderCodeLibrary.MaxShaderGroupSize

First stage of processing a streak of shaders all referenced by the same set of shadermaps. We begin with separating raytracing and non-raytracing shaders, so we can avoid preloading RTX in non-RT runs.

Tries to find whether NewIndices exist as a subsequence in ExistingIndices.Returns - 1 if not found.

◆ CreateShader()

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

Reimplemented from FRHIShaderLibrary.

◆ FindShaderIndex()

int32 FIoStoreShaderCodeArchive::FindShaderIndex ( const FSHAHash Hash)
overridevirtual

Implements FRHIShaderLibrary.

◆ FindShaderMapIndex()

int32 FIoStoreShaderCodeArchive::FindShaderMapIndex ( const FSHAHash Hash)
overridevirtual

Implements FRHIShaderLibrary.

◆ GetAllShaderIndices()

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

Reimplemented from FRHIShaderLibrary.

◆ GetGroupIndexForShader()

virtual int32 FIoStoreShaderCodeArchive::GetGroupIndexForShader ( int32  ShaderIndex) const
inlineoverridevirtual

Returns the index of shader group that a given shader belongs to.

Reimplemented from FRHIShaderLibrary.

◆ GetNumShaderMaps()

virtual int32 FIoStoreShaderCodeArchive::GetNumShaderMaps ( ) const
inlineoverridevirtual

Implements FRHIShaderLibrary.

◆ GetNumShaders()

virtual int32 FIoStoreShaderCodeArchive::GetNumShaders ( ) const
inlineoverridevirtual

Implements FRHIShaderLibrary.

◆ GetNumShadersForShaderMap()

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

Implements FRHIShaderLibrary.

◆ GetShaderCodeArchiveChunkId()

FIoChunkId FIoStoreShaderCodeArchive::GetShaderCodeArchiveChunkId ( const FString &  LibraryName,
FName  FormatName 
)
static

◆ GetShaderCodeChunkId()

FIoChunkId FIoStoreShaderCodeArchive::GetShaderCodeChunkId ( const FSHAHash ShaderHash)
static

◆ GetShaderHash()

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

Implements FRHIShaderLibrary.

◆ GetShaderIndex()

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

Implements FRHIShaderLibrary.

◆ GetShaderMapHash()

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

Implements FRHIShaderLibrary.

◆ GetShaderSizeBytes()

uint32 FIoStoreShaderCodeArchive::GetShaderSizeBytes ( int32  ShaderIndex) const
overridevirtual

Reimplemented from FRHIShaderLibrary.

◆ GetSizeBytes()

virtual uint32 FIoStoreShaderCodeArchive::GetSizeBytes ( ) const
inlineoverridevirtual

Implements FRHIShaderLibrary.

◆ IsNativeLibrary()

virtual bool FIoStoreShaderCodeArchive::IsNativeLibrary ( ) const
inlineoverridevirtual

Implements FRHIShaderLibrary.

◆ IsPreloading()

bool FIoStoreShaderCodeArchive::IsPreloading ( int32  ShaderIndex,
FGraphEventArray OutCompletionEvents 
)
overridevirtual

Reimplemented from FRHIShaderLibrary.

◆ PreloadShader()

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

Reimplemented from FRHIShaderLibrary.

◆ PreloadShaderMap() [1/2]

bool FIoStoreShaderCodeArchive::PreloadShaderMap ( int32  ShaderMapIndex,
FCoreDelegates::FAttachShaderReadRequestFunc  AttachShaderReadRequestFunc 
)
overridevirtual

Reimplemented from FRHIShaderLibrary.

◆ PreloadShaderMap() [2/2]

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

Reimplemented from FRHIShaderLibrary.

◆ ReleasePreloadedShader()

void FIoStoreShaderCodeArchive::ReleasePreloadedShader ( int32  ShaderIndex)
overridevirtual

Reimplemented from FRHIShaderLibrary.

◆ ReleasePreloadedShaderGroup()

void FIoStoreShaderCodeArchive::ReleasePreloadedShaderGroup ( int32  ShaderGroupIndex)
overridevirtual

Reimplemented from FRHIShaderLibrary.

◆ SaveIoStoreShaderCodeArchive()

void FIoStoreShaderCodeArchive::SaveIoStoreShaderCodeArchive ( const FIoStoreShaderCodeArchiveHeader Header,
FArchive OutLibraryAr 
)
static

◆ Teardown()

void FIoStoreShaderCodeArchive::Teardown ( )
overridevirtual

Reimplemented from FRHIShaderLibrary.


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