Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
Divide::ShaderProgram Class Reference

#include <ShaderProgram.h>

+ Inheritance diagram for Divide::ShaderProgram:

Classes

struct  BindingsPerSet
 
struct  LastRequestedShader
 
struct  LoadData
 
struct  ShaderQueueEntry
 

Public Types

using RenderTargets = std::array< bool, to_base(RTColourAttachmentSlot::COUNT)>
 
using ShaderLoadData = std::array< LoadData, to_base(ShaderType::COUNT)>
 
using ShaderProgramMap = eastl::fixed_vector< ShaderProgram *, U16_MAX, true >
 
using AtomMap = hashMap< U64, string >
 
using AtomInclusionMap = hashMap< U64, eastl::set< U64 > >
 
using ShaderQueue = eastl::stack< ShaderQueueEntry, vector< ShaderQueueEntry > >
 
using BindingsPerSetArray = std::array< BindingsPerSet, MAX_BINDINGS_PER_DESCRIPTOR_SET >
 
using SetUsageData = std::array< bool, to_base(DescriptorSetUsage::COUNT)>
 
using BindingSetData = std::array< BindingsPerSetArray, to_base(DescriptorSetUsage::COUNT)>
 
- Public Types inherited from Divide::GraphicsResource
enum class  Type : U8 {
  RENDER_TARGET , SHADER_BUFFER , BUFFER , SHADER ,
  SHADER_PROGRAM , TEXTURE , COUNT
}
 

Public Member Functions

 ShaderProgram (PlatformContext &context, const ResourceDescriptor< ShaderProgram > &descriptor)
 
 ~ShaderProgram () override
 
bool load (PlatformContext &context) override
 Loading and unloading interface.
 
bool postLoad () override
 
bool unload () override
 
bool recompile ()
 
bool recompile (bool &skipped)
 Rebuild the specified shader stages from source code.
 
virtual ShaderResult validatePreBind (bool rebind=true)
 
bool uploadUniformData (const UniformData &data, DescriptorSet &set, GFX::MemoryBarrierCommand &memCmdInOut)
 
const ShaderProgramDescriptordescriptor () const noexcept
 
 PROPERTY_RW (bool, highPriority, true)
 
 PROPERTY_RW (bool, useShaderCache, true)
 
 PROPERTY_R_IW (BindingsPerSetArray, perDrawDescriptorSetLayout)
 
 PROPERTY_R_IW (RenderTargets, fragmentOutputs)
 
 PROPERTY_R_IW (SetUsageData, setUsage)
 
- Public Member Functions inherited from Divide::CachedResource
 CachedResource (const ResourceDescriptorBase &descriptor, std::string_view typeName)
 
virtual bool load (PlatformContext &context)
 Loading and unloading interface.
 
virtual bool postLoad ()
 
virtual bool unload ()
 
void setState (ResourceState currentState) final
 
- Public Member Functions inherited from Divide::Resource
 Resource (std::string_view resourceName, std::string_view typeName)
 
ResourceState getState () const noexcept
 
 PROPERTY_R (Str< 32 >, typeName)
 
 PROPERTY_R (Str< 256 >, resourceName)
 
- Public Member Functions inherited from Divide::GUIDWrapper
 GUIDWrapper () noexcept
 
 GUIDWrapper (const GUIDWrapper &old) noexcept
 
 GUIDWrapper (GUIDWrapper &&old) noexcept
 
virtual ~GUIDWrapper ()=default
 
FORCE_INLINE I64 getGUID () const noexcept
 
GUIDWrapperoperator= (const GUIDWrapper &old)=delete
 
GUIDWrapperoperator= (GUIDWrapper &&other)=delete
 
- Public Member Functions inherited from Divide::GraphicsResource
virtual ~GraphicsResource ()
 
GFXDevicecontext () const noexcept
 
U64 nameHash () const noexcept
 
- Public Member Functions inherited from Divide::NonCopyable
 NonCopyable (const NonCopyable &)=delete
 
NonCopyableoperator= (const NonCopyable &)=delete
 
 NonCopyable (NonCopyable &&)=default
 
NonCopyableoperator= (NonCopyable &&)=default
 
- Public Member Functions inherited from Divide::NonMovable
 NonMovable (NonMovable &&)=delete
 
NonMovableoperator= (NonMovable &&)=delete
 
 NonMovable (const NonMovable &)=default
 
NonMovableoperator= (const NonMovable &)=default
 

Static Public Member Functions

static void Idle (PlatformContext &platformContext, bool fast)
 
static void InitStaticData ()
 
static void DestroyStaticData ()
 
static ErrorCode OnStartup (PlatformContext &context)
 
static bool OnShutdown ()
 
static void OnBeginFrame (GFXDevice &gfx)
 
static void OnEndFrame (GFXDevice &gfx)
 
static bool RecompileShaderProgram (const std::string_view name)
 Queue a shaderProgram recompile request.
 
static bool UnregisterShaderProgram (ShaderProgram *shaderProgram)
 Remove a shaderProgram from the program cache.
 
static void RegisterShaderProgram (ShaderProgram *shaderProgram)
 Add a shaderProgram to the program cache.
 
static void RebuildAllShaders ()
 
static vector< ResourcePathGetAllAtomLocations ()
 
static I32 ShaderProgramCount () noexcept
 
static void OnAtomChange (std::string_view atomName, FileUpdateEvent evt)
 
static U8 GetGLBindingForDescriptorSlot (DescriptorSetUsage usage, U8 slot) noexcept
 
static std::pair< DescriptorSetUsage, U8GetDescriptorSlotForGLBinding (U8 binding, DescriptorSetBindingType type) noexcept
 
static BindingSetDataGetBindingSetData () noexcept
 
static void RegisterSetLayoutBinding (DescriptorSetUsage usage, U8 slot, DescriptorSetBindingType type, ShaderStageVisibility visibility)
 
static ErrorCode SubmitSetLayouts (GFXDevice &gfx)
 
static U32 GetBindingCount (DescriptorSetUsage usage, DescriptorSetBindingType type)
 
- Static Public Member Functions inherited from Divide::GUIDWrapper
static I64 generateGUID () noexcept
 

Static Public Attributes

static constexpr const char * UNIFORM_BLOCK_NAME = "dvd_uniforms"
 
static U8 k_commandBufferID = U8_MAX - MAX_BINDINGS_PER_DESCRIPTOR_SET
 
static Mutex g_cacheLock
 

Protected Member Functions

virtual bool loadInternal (hashMap< U64, PerFileShaderData > &fileData, bool overwrite)
 
bool loadSourceCode (const ModuleDefines &defines, bool reloadExisting, LoadData &loadDataInOut, Reflection::UniformsSet &previousUniformsInOut, U8 &blockIndexInOut)
 
void loadAndParseGLSL (const ModuleDefines &defines, LoadData &loadDataInOut, Reflection::UniformsSet &previousUniformsInOut, U8 &blockIndexInOut, eastl::set< U64 > &atomIDsInOut)
 
void initDrawDescriptorSetLayout (const PerFileShaderData &loadData)
 
void initUniformUploader (const PerFileShaderData &loadData)
 
- Protected Member Functions inherited from Divide::CachedResource
 PROPERTY_RW (ResourcePath, assetLocation)
 
 PROPERTY_RW (Str< 256 >, assetName)
 
 PROPERTY_R (size_t, descriptorHash)
 
virtual void setState (ResourceState currentState)
 
- Protected Member Functions inherited from Divide::GraphicsResource
 GraphicsResource (GFXDevice &context, Type type, I64 GUID, U64 nameHash)
 
- Protected Member Functions inherited from Divide::NonCopyable
 NonCopyable ()=default
 
 ~NonCopyable ()=default
 
- Protected Member Functions inherited from Divide::NonMovable
 NonMovable ()=default
 
 ~NonMovable ()=default
 

Static Protected Member Functions

static bool SaveToCache (LoadData::ShaderCacheType cache, const LoadData &dataIn, const eastl::set< U64 > &atomIDsIn)
 
static bool LoadFromCache (LoadData::ShaderCacheType cache, LoadData &dataInOut, eastl::set< U64 > &atomIDsOut)
 
static void OnThreadCreated (const GFXDevice &gfx, const std::thread::id &threadID, bool isMainRenderThread)
 

Protected Attributes

const ShaderProgramDescriptor _descriptor
 
vector< UniformBlockUploader_uniformBlockBuffers
 
eastl::set< U64_usedAtomIDs
 
- Protected Attributes inherited from Divide::CachedResource
Mutex _callbackLock {}
 
- Protected Attributes inherited from Divide::Resource
std::atomic< ResourceState_resourceState
 
- Protected Attributes inherited from Divide::GUIDWrapper
const I64 _guid
 
- Protected Attributes inherited from Divide::GraphicsResource
GFXDevice_context
 

Static Protected Attributes

static ShaderQueue s_recompileQueue
 
static ShaderQueue s_recompileFailedQueue
 
static ShaderProgramMap s_shaderPrograms
 Shader program cache.
 
static eastl::fixed_vector< ShaderProgram *, U16_MAX, false > s_usedShaderPrograms
 
static LastRequestedShader s_lastRequestedShaderProgram = {}
 
static SharedMutex s_programLock
 
static std::atomic_int s_shaderCount
 
static I64 s_shaderFileWatcherID = -1
 
static Mutex s_atomLock
 Shaders loaded from files are kept as atoms.
 
static AtomMap s_atoms
 
static AtomInclusionMap s_atomIncludes
 
static ResourcePath shaderAtomLocationPrefix [to_base(ShaderType::COUNT)+1]
 
static Str< 8 > shaderAtomExtensionName [to_base(ShaderType::COUNT)+1]
 
static U64 shaderAtomExtensionHash [to_base(ShaderType::COUNT)+1]
 
static BindingSetData s_bindingsPerSet
 

Static Private Member Functions

static void EraseAtom (const U64 atomHash)
 
static void EraseAtomLocked (const U64 atomHash)
 
static const stringShaderFileRead (const ResourcePath &filePath, std::string_view atomName, bool recurse, eastl::set< U64 > &foundAtomIDsInOut, bool &wasParsed)
 
static const stringShaderFileReadLocked (const ResourcePath &filePath, std::string_view atomName, bool recurse, eastl::set< U64 > &foundAtomIDsInOut, bool &wasParsed)
 Open the file found at 'filePath' matching 'atomName' and return it's source code.
 
static void PreprocessIncludes (std::string_view name, string &sourceInOut, I32 level, eastl::set< U64 > &foundAtomIDsInOut, bool lock)
 

Friends

template<typename T >
class ImplResourceLoader
 
class PlatformContext
 

Detailed Description

Definition at line 117 of file ShaderProgram.h.

Member Typedef Documentation

◆ AtomInclusionMap

Definition at line 169 of file ShaderProgram.h.

◆ AtomMap

Definition at line 168 of file ShaderProgram.h.

◆ BindingSetData

◆ BindingsPerSetArray

◆ RenderTargets

Definition at line 163 of file ShaderProgram.h.

◆ SetUsageData

Definition at line 179 of file ShaderProgram.h.

◆ ShaderLoadData

Definition at line 164 of file ShaderProgram.h.

◆ ShaderProgramMap

using Divide::ShaderProgram::ShaderProgramMap = eastl::fixed_vector<ShaderProgram*, U16_MAX, true>

Definition at line 166 of file ShaderProgram.h.

◆ ShaderQueue

Definition at line 170 of file ShaderProgram.h.

Constructor & Destructor Documentation

◆ ShaderProgram()

Divide::ShaderProgram::ShaderProgram ( PlatformContext context,
const ResourceDescriptor< ShaderProgram > &  descriptor 
)
explicit

Definition at line 882 of file ShaderProgram.cpp.

◆ ~ShaderProgram()

Divide::ShaderProgram::~ShaderProgram ( )
override

Definition at line 903 of file ShaderProgram.cpp.

Member Function Documentation

◆ descriptor()

const ShaderProgramDescriptor & Divide::ShaderProgram::descriptor ( ) const
inlinenoexcept

Definition at line 229 of file ShaderProgram.h.

◆ DestroyStaticData()

void Divide::ShaderProgram::DestroyStaticData ( )
static

Definition at line 1024 of file ShaderProgram.cpp.

◆ EraseAtom()

void Divide::ShaderProgram::EraseAtom ( const U64  atomHash)
staticprivate

Definition at line 2077 of file ShaderProgram.cpp.

◆ EraseAtomLocked()

void Divide::ShaderProgram::EraseAtomLocked ( const U64  atomHash)
staticprivate

Definition at line 2084 of file ShaderProgram.cpp.

◆ GetAllAtomLocations()

vector< ResourcePath > Divide::ShaderProgram::GetAllAtomLocations ( )
static

Definition at line 1327 of file ShaderProgram.cpp.

◆ GetBindingCount()

U32 Divide::ShaderProgram::GetBindingCount ( DescriptorSetUsage  usage,
DescriptorSetBindingType  type 
)
static

Definition at line 1229 of file ShaderProgram.cpp.

◆ GetBindingSetData()

ShaderProgram::BindingSetData & Divide::ShaderProgram::GetBindingSetData ( )
staticnoexcept

Definition at line 1191 of file ShaderProgram.cpp.

◆ GetDescriptorSlotForGLBinding()

std::pair< DescriptorSetUsage, U8 > Divide::ShaderProgram::GetDescriptorSlotForGLBinding ( U8  binding,
DescriptorSetBindingType  type 
)
staticnoexcept

Definition at line 1173 of file ShaderProgram.cpp.

◆ GetGLBindingForDescriptorSlot()

U8 Divide::ShaderProgram::GetGLBindingForDescriptorSlot ( DescriptorSetUsage  usage,
U8  slot 
)
staticnoexcept

Definition at line 1168 of file ShaderProgram.cpp.

◆ Idle()

void Divide::ShaderProgram::Idle ( PlatformContext platformContext,
bool  fast 
)
static

Definition at line 977 of file ShaderProgram.cpp.

◆ initDrawDescriptorSetLayout()

void Divide::ShaderProgram::initDrawDescriptorSetLayout ( const PerFileShaderData loadData)
protected

Definition at line 1724 of file ShaderProgram.cpp.

◆ InitStaticData()

void Divide::ShaderProgram::InitStaticData ( )
static

Definition at line 1019 of file ShaderProgram.cpp.

◆ initUniformUploader()

void Divide::ShaderProgram::initUniformUploader ( const PerFileShaderData loadData)
protected

Definition at line 1795 of file ShaderProgram.cpp.

◆ load()

bool Divide::ShaderProgram::load ( PlatformContext context)
overridevirtual

Loading and unloading interface.

Reimplemented from Divide::CachedResource.

Definition at line 909 of file ShaderProgram.cpp.

◆ loadAndParseGLSL()

void Divide::ShaderProgram::loadAndParseGLSL ( const ModuleDefines defines,
LoadData loadDataInOut,
Reflection::UniformsSet previousUniformsInOut,
U8 blockIndexInOut,
eastl::set< U64 > &  atomIDsInOut 
)
protected

Definition at line 1950 of file ShaderProgram.cpp.

◆ LoadFromCache()

bool Divide::ShaderProgram::LoadFromCache ( LoadData::ShaderCacheType  cache,
LoadData dataInOut,
eastl::set< U64 > &  atomIDsOut 
)
staticprotected

Definition at line 1575 of file ShaderProgram.cpp.

◆ loadInternal()

bool Divide::ShaderProgram::loadInternal ( hashMap< U64, PerFileShaderData > &  fileData,
bool  overwrite 
)
protectedvirtual

Reimplemented in Divide::glShaderProgram, and Divide::vkShaderProgram.

Definition at line 1650 of file ShaderProgram.cpp.

◆ loadSourceCode()

bool Divide::ShaderProgram::loadSourceCode ( const ModuleDefines defines,
bool  reloadExisting,
LoadData loadDataInOut,
Reflection::UniformsSet previousUniformsInOut,
U8 blockIndexInOut 
)
protected

Definition at line 1852 of file ShaderProgram.cpp.

◆ OnAtomChange()

void Divide::ShaderProgram::OnAtomChange ( std::string_view  atomName,
FileUpdateEvent  evt 
)
static

Definition at line 2112 of file ShaderProgram.cpp.

◆ OnBeginFrame()

void Divide::ShaderProgram::OnBeginFrame ( GFXDevice gfx)
static

Definition at line 1259 of file ShaderProgram.cpp.

◆ OnEndFrame()

void Divide::ShaderProgram::OnEndFrame ( GFXDevice gfx)
static

Definition at line 1264 of file ShaderProgram.cpp.

◆ OnShutdown()

bool Divide::ShaderProgram::OnShutdown ( )
static

Definition at line 1139 of file ShaderProgram.cpp.

◆ OnStartup()

ErrorCode Divide::ShaderProgram::OnStartup ( PlatformContext context)
static

Definition at line 1060 of file ShaderProgram.cpp.

◆ OnThreadCreated()

void Divide::ShaderProgram::OnThreadCreated ( const GFXDevice gfx,
const std::thread::id &  threadID,
bool  isMainRenderThread 
)
staticprotected

Definition at line 967 of file ShaderProgram.cpp.

◆ postLoad()

bool Divide::ShaderProgram::postLoad ( )
overridevirtual

Reimplemented from Divide::CachedResource.

Definition at line 922 of file ShaderProgram.cpp.

◆ PreprocessIncludes()

void Divide::ShaderProgram::PreprocessIncludes ( std::string_view  name,
string sourceInOut,
I32  level,
eastl::set< U64 > &  foundAtomIDsInOut,
bool  lock 
)
staticprivate

Definition at line 1361 of file ShaderProgram.cpp.

◆ PROPERTY_R_IW() [1/3]

Divide::ShaderProgram::PROPERTY_R_IW ( BindingsPerSetArray  ,
perDrawDescriptorSetLayout   
)

◆ PROPERTY_R_IW() [2/3]

Divide::ShaderProgram::PROPERTY_R_IW ( RenderTargets  ,
fragmentOutputs   
)

◆ PROPERTY_R_IW() [3/3]

Divide::ShaderProgram::PROPERTY_R_IW ( SetUsageData  ,
setUsage   
)

◆ PROPERTY_RW() [1/2]

Divide::ShaderProgram::PROPERTY_RW ( bool  ,
highPriority  ,
true   
)

◆ PROPERTY_RW() [2/2]

Divide::ShaderProgram::PROPERTY_RW ( bool  ,
useShaderCache  ,
true   
)

◆ RebuildAllShaders()

void Divide::ShaderProgram::RebuildAllShaders ( )
static

Definition at line 1317 of file ShaderProgram.cpp.

◆ recompile() [1/2]

bool Divide::ShaderProgram::recompile ( )
inline

Definition at line 191 of file ShaderProgram.h.

◆ recompile() [2/2]

bool Divide::ShaderProgram::recompile ( bool &  skipped)

Rebuild the specified shader stages from source code.

Definition at line 942 of file ShaderProgram.cpp.

◆ RecompileShaderProgram()

bool Divide::ShaderProgram::RecompileShaderProgram ( const std::string_view  name)
static

Queue a shaderProgram recompile request.

Calling this will force a recompilation of all shader stages for the program that matches the name specified.

Definition at line 1030 of file ShaderProgram.cpp.

◆ RegisterSetLayoutBinding()

void Divide::ShaderProgram::RegisterSetLayoutBinding ( DescriptorSetUsage  usage,
U8  slot,
DescriptorSetBindingType  type,
ShaderStageVisibility  visibility 
)
static

Definition at line 1196 of file ShaderProgram.cpp.

◆ RegisterShaderProgram()

void Divide::ShaderProgram::RegisterShaderProgram ( ShaderProgram shaderProgram)
static

Add a shaderProgram to the program cache.

Whenever a new program is created, it's registered with the manager.

Definition at line 1283 of file ShaderProgram.cpp.

◆ SaveToCache()

bool Divide::ShaderProgram::SaveToCache ( LoadData::ShaderCacheType  cache,
const LoadData dataIn,
const eastl::set< U64 > &  atomIDsIn 
)
staticprotected

Definition at line 1502 of file ShaderProgram.cpp.

◆ ShaderFileRead()

const string & Divide::ShaderProgram::ShaderFileRead ( const ResourcePath filePath,
std::string_view  atomName,
bool  recurse,
eastl::set< U64 > &  foundAtomIDsInOut,
bool &  wasParsed 
)
staticprivate

Definition at line 1355 of file ShaderProgram.cpp.

◆ ShaderFileReadLocked()

const string & Divide::ShaderProgram::ShaderFileReadLocked ( const ResourcePath filePath,
std::string_view  atomName,
bool  recurse,
eastl::set< U64 > &  foundAtomIDsInOut,
bool &  wasParsed 
)
staticprivate

Open the file found at 'filePath' matching 'atomName' and return it's source code.

Definition at line 1455 of file ShaderProgram.cpp.

◆ ShaderProgramCount()

static I32 Divide::ShaderProgram::ShaderProgramCount ( )
inlinestaticnoexcept

Definition at line 224 of file ShaderProgram.h.

◆ SubmitSetLayouts()

ErrorCode Divide::ShaderProgram::SubmitSetLayouts ( GFXDevice gfx)
static

Definition at line 1127 of file ShaderProgram.cpp.

◆ unload()

bool Divide::ShaderProgram::unload ( )
overridevirtual

Reimplemented from Divide::CachedResource.

Definition at line 928 of file ShaderProgram.cpp.

◆ UnregisterShaderProgram()

bool Divide::ShaderProgram::UnregisterShaderProgram ( ShaderProgram shaderProgram)
static

Remove a shaderProgram from the program cache.

Unloading/Deleting a program will unregister it from the manager.

Definition at line 1300 of file ShaderProgram.cpp.

◆ uploadUniformData()

bool Divide::ShaderProgram::uploadUniformData ( const UniformData data,
DescriptorSet set,
GFX::MemoryBarrierCommand memCmdInOut 
)

Definition at line 1833 of file ShaderProgram.cpp.

◆ validatePreBind()

ShaderResult Divide::ShaderProgram::validatePreBind ( bool  rebind = true)
virtual

Reimplemented in Divide::glShaderProgram, and Divide::vkShaderProgram.

Definition at line 962 of file ShaderProgram.cpp.

Friends And Related Function Documentation

◆ ImplResourceLoader

template<typename T >
friend class ImplResourceLoader
friend

Definition at line 306 of file ShaderProgram.h.

◆ PlatformContext

friend class PlatformContext
friend

Definition at line 311 of file ShaderProgram.h.

Member Data Documentation

◆ _descriptor

const ShaderProgramDescriptor Divide::ShaderProgram::_descriptor
protected

Definition at line 308 of file ShaderProgram.h.

◆ _uniformBlockBuffers

vector<UniformBlockUploader> Divide::ShaderProgram::_uniformBlockBuffers
protected

Definition at line 315 of file ShaderProgram.h.

◆ _usedAtomIDs

eastl::set<U64> Divide::ShaderProgram::_usedAtomIDs
protected

Definition at line 316 of file ShaderProgram.h.

◆ g_cacheLock

NO_DESTROY Mutex Divide::ShaderProgram::g_cacheLock
static

Definition at line 251 of file ShaderProgram.h.

◆ k_commandBufferID

U8 Divide::ShaderProgram::k_commandBufferID = U8_MAX - MAX_BINDINGS_PER_DESCRIPTOR_SET
static

Definition at line 123 of file ShaderProgram.h.

◆ s_atomIncludes

NO_DESTROY ShaderProgram::AtomInclusionMap Divide::ShaderProgram::s_atomIncludes
staticprotected

Definition at line 326 of file ShaderProgram.h.

◆ s_atomLock

NO_DESTROY Mutex Divide::ShaderProgram::s_atomLock
staticprotected

Shaders loaded from files are kept as atoms.

Definition at line 324 of file ShaderProgram.h.

◆ s_atoms

NO_DESTROY ShaderProgram::AtomMap Divide::ShaderProgram::s_atoms
staticprotected

Definition at line 325 of file ShaderProgram.h.

◆ s_bindingsPerSet

ShaderProgram::BindingSetData Divide::ShaderProgram::s_bindingsPerSet
staticprotected

Definition at line 333 of file ShaderProgram.h.

◆ s_lastRequestedShaderProgram

ShaderProgram::LastRequestedShader Divide::ShaderProgram::s_lastRequestedShaderProgram = {}
staticprotected

Definition at line 270 of file ShaderProgram.h.

◆ s_programLock

SharedMutex Divide::ShaderProgram::s_programLock
staticprotected

Definition at line 271 of file ShaderProgram.h.

◆ s_recompileFailedQueue

NO_DESTROY ShaderProgram::ShaderQueue Divide::ShaderProgram::s_recompileFailedQueue
staticprotected

Definition at line 260 of file ShaderProgram.h.

◆ s_recompileQueue

NO_DESTROY ShaderProgram::ShaderQueue Divide::ShaderProgram::s_recompileQueue
staticprotected

Definition at line 259 of file ShaderProgram.h.

◆ s_shaderCount

std::atomic_int Divide::ShaderProgram::s_shaderCount
staticprotected

Definition at line 319 of file ShaderProgram.h.

◆ s_shaderFileWatcherID

I64 Divide::ShaderProgram::s_shaderFileWatcherID = -1
staticprotected

Definition at line 321 of file ShaderProgram.h.

◆ s_shaderPrograms

ShaderProgram::ShaderProgramMap Divide::ShaderProgram::s_shaderPrograms
staticprotected

Shader program cache.

Definition at line 262 of file ShaderProgram.h.

◆ s_usedShaderPrograms

eastl::fixed_vector< ShaderProgram *, U16_MAX, false > Divide::ShaderProgram::s_usedShaderPrograms
staticprotected

Definition at line 263 of file ShaderProgram.h.

◆ shaderAtomExtensionHash

U64 Divide::ShaderProgram::shaderAtomExtensionHash
staticprotected

Definition at line 331 of file ShaderProgram.h.

◆ shaderAtomExtensionName

NO_DESTROY Str< 8 > Divide::ShaderProgram::shaderAtomExtensionName
staticprotected

Definition at line 330 of file ShaderProgram.h.

◆ shaderAtomLocationPrefix

NO_DESTROY ResourcePath Divide::ShaderProgram::shaderAtomLocationPrefix
staticprotected

Definition at line 329 of file ShaderProgram.h.

◆ UNIFORM_BLOCK_NAME

constexpr const char* Divide::ShaderProgram::UNIFORM_BLOCK_NAME = "dvd_uniforms"
staticconstexpr

Definition at line 121 of file ShaderProgram.h.


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