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

#include <VulkanResources.h>

+ Inheritance diagram for FVulkanShader:

Classes

class  FSpirvCode
 
class  FSpirvContainer
 

Public Member Functions

virtual ~FVulkanShader ()
 
void PurgeShaderModules ()
 
TRefCountPtr< FVulkanShaderModuleGetOrCreateHandle ()
 
TRefCountPtr< FVulkanShaderModuleGetOrCreateHandle (const FVulkanLayout *Layout, uint32 LayoutHash)
 
TRefCountPtr< FVulkanShaderModuleGetOrCreateHandle (const FGfxPipelineDesc &Desc, const FVulkanLayout *Layout, uint32 LayoutHash)
 
const FString & GetDebugName () const
 
void GetEntryPoint (ANSICHAR *Name, int32 NameLength) const
 
FORCEINLINE const FVulkanShaderHeaderGetCodeHeader () const
 
uint64 GetShaderKey () const
 
FSpirvCode GetSpirvCode () const
 
FSpirvCode GetPatchedSpirvCode (const FGfxPipelineDesc &Desc, const FVulkanLayout *Layout)
 
void SetUsesBindless (bool bValue)
 
bool UsesBindless () const
 
- Public Member Functions inherited from IRefCountedObject
virtual ~IRefCountedObject ()
 
virtual FReturnedRefCountValue AddRef () const =0
 
virtual uint32 Release () const =0
 
virtual uint32 GetRefCount () const =0
 

Public Attributes

TArray< FUniformBufferStaticSlot > & StaticSlots
 

Protected Member Functions

TRefCountPtr< FVulkanShaderModuleCreateHandle (const FVulkanLayout *Layout, uint32 LayoutHash)
 
TRefCountPtr< FVulkanShaderModuleCreateHandle (const FGfxPipelineDesc &Desc, const FVulkanLayout *Layout, uint32 LayoutHash)
 
bool NeedsSpirvInputAttachmentPatching (const FGfxPipelineDesc &Desc) const
 
 FVulkanShader (FVulkanDevice *InDevice, EShaderFrequency InFrequency, FVulkanShaderHeader &&InCodeHeader, FSpirvContainer &&InSpirvContainer, uint64 InShaderKey, TArray< FUniformBufferStaticSlot > &InStaticSlots)
 

Static Protected Member Functions

static FSpirvCode PatchSpirvInputAttachments (FSpirvCode &SpirvCode)
 
static FSpirvCode GetSpirvCode (const FSpirvContainer &Container)
 

Protected Attributes

uint64 ShaderKey
 
FVulkanShaderHeader CodeHeader
 
TMap< uint32, TRefCountPtr< FVulkanShaderModule > > ShaderModules
 
const EShaderFrequency Frequency
 
bool bUsesBindless = false
 
VkPipeline PipelineLibrary = VK_NULL_HANDLE
 
class FVulkanShader::FSpirvContainer SpirvContainer
 
FVulkanDeviceDevice
 

Static Protected Attributes

static FCriticalSection VulkanShaderModulesMapCS
 

Friends

class FVulkanCommandListContext
 
class FVulkanPipelineStateCacheManager
 
class FVulkanComputeShaderState
 
class FVulkanComputePipeline
 
class FVulkanShaderFactory
 
FArchiveoperator<< (FArchive &Ar, class FVulkanShader::FSpirvContainer &SpirvContainer)
 

Constructor & Destructor Documentation

◆ ~FVulkanShader()

FVulkanShader::~FVulkanShader ( )
virtual

◆ FVulkanShader()

FVulkanShader::FVulkanShader ( FVulkanDevice InDevice,
EShaderFrequency  InFrequency,
FVulkanShaderHeader &&  InCodeHeader,
FSpirvContainer &&  InSpirvContainer,
uint64  InShaderKey,
TArray< FUniformBufferStaticSlot > &  InStaticSlots 
)
protected

Member Function Documentation

◆ CreateHandle() [1/2]

TRefCountPtr< FVulkanShaderModule > FVulkanShader::CreateHandle ( const FGfxPipelineDesc Desc,
const FVulkanLayout Layout,
uint32  LayoutHash 
)
protected

◆ CreateHandle() [2/2]

TRefCountPtr< FVulkanShaderModule > FVulkanShader::CreateHandle ( const FVulkanLayout Layout,
uint32  LayoutHash 
)
protected

◆ GetCodeHeader()

FORCEINLINE const FVulkanShaderHeader & FVulkanShader::GetCodeHeader ( ) const
inline

◆ GetDebugName()

const FString & FVulkanShader::GetDebugName ( ) const
inline

◆ GetEntryPoint()

void FVulkanShader::GetEntryPoint ( ANSICHAR Name,
int32  NameLength 
) const
inline

◆ GetOrCreateHandle() [1/3]

TRefCountPtr< FVulkanShaderModule > FVulkanShader::GetOrCreateHandle ( )

◆ GetOrCreateHandle() [2/3]

TRefCountPtr< FVulkanShaderModule > FVulkanShader::GetOrCreateHandle ( const FGfxPipelineDesc Desc,
const FVulkanLayout Layout,
uint32  LayoutHash 
)
inline

◆ GetOrCreateHandle() [3/3]

TRefCountPtr< FVulkanShaderModule > FVulkanShader::GetOrCreateHandle ( const FVulkanLayout Layout,
uint32  LayoutHash 
)
inline

◆ GetPatchedSpirvCode()

FVulkanShader::FSpirvCode FVulkanShader::GetPatchedSpirvCode ( const FGfxPipelineDesc Desc,
const FVulkanLayout Layout 
)

◆ GetShaderKey()

uint64 FVulkanShader::GetShaderKey ( ) const
inline

◆ GetSpirvCode() [1/2]

FSpirvCode FVulkanShader::GetSpirvCode ( ) const
inline

◆ GetSpirvCode() [2/2]

FVulkanShader::FSpirvCode FVulkanShader::GetSpirvCode ( const FSpirvContainer Container)
staticprotected

◆ NeedsSpirvInputAttachmentPatching()

bool FVulkanShader::NeedsSpirvInputAttachmentPatching ( const FGfxPipelineDesc Desc) const
protected

◆ PatchSpirvInputAttachments()

FVulkanShader::FSpirvCode FVulkanShader::PatchSpirvInputAttachments ( FVulkanShader::FSpirvCode SpirvCode)
staticprotected

◆ PurgeShaderModules()

void FVulkanShader::PurgeShaderModules ( )

◆ SetUsesBindless()

void FVulkanShader::SetUsesBindless ( bool  bValue)
inline

◆ UsesBindless()

bool FVulkanShader::UsesBindless ( ) const
inline

Friends And Related Symbol Documentation

◆ FVulkanCommandListContext

◆ FVulkanComputePipeline

◆ FVulkanComputeShaderState

friend class FVulkanComputeShaderState
friend

◆ FVulkanPipelineStateCacheManager

◆ FVulkanShaderFactory

◆ operator<<

FArchive & operator<< ( FArchive Ar,
class FVulkanShader::FSpirvContainer SpirvContainer 
)
friend

Member Data Documentation

◆ bUsesBindless

bool FVulkanShader::bUsesBindless = false
protected

◆ CodeHeader

FVulkanShaderHeader FVulkanShader::CodeHeader
protected

External bindings for this shader.

◆ Device

FVulkanDevice* FVulkanShader::Device
protected

◆ Frequency

const EShaderFrequency FVulkanShader::Frequency
protected

◆ PipelineLibrary

VkPipeline FVulkanShader::PipelineLibrary = VK_NULL_HANDLE
protected

◆ ShaderKey

uint64 FVulkanShader::ShaderKey
protected

◆ ShaderModules

TMap<uint32, TRefCountPtr<FVulkanShaderModule> > FVulkanShader::ShaderModules
protected

◆ SpirvContainer

class FVulkanShader::FSpirvContainer FVulkanShader::SpirvContainer
protected

◆ StaticSlots

TArray<FUniformBufferStaticSlot>& FVulkanShader::StaticSlots

◆ VulkanShaderModulesMapCS

FCriticalSection FVulkanShader::VulkanShaderModulesMapCS
staticprotected

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