18 #ifndef INCLUDED_SHADERMANAGER 19 #define INCLUDED_SHADERMANAGER 29 #include <unordered_map> 78 if (name < k.
name)
return true;
79 if (k.
name < name)
return false;
110 using EffectCacheMap = std::unordered_map<EffectCacheKey, CShaderTechniquePtr, EffectCacheKeyHash>;
117 std::set<std::weak_ptr<T>, std::owner_less<std::weak_ptr<T>>>>;
145 #endif // INCLUDED_SHADERMANAGER ~CShaderManager()
Definition: ShaderManager.cpp:65
Definition: ShaderManager.h:105
CShaderProgramPtr LoadProgram(const CStr &name, const CShaderDefines &defines)
Load a shader program.
Definition: ShaderManager.cpp:70
HotloadFilesMap< CShaderTechnique > m_HotloadTechniques
Definition: ShaderManager.h:118
std::unordered_map< VfsPath, std::set< std::weak_ptr< T >, std::owner_less< std::weak_ptr< T > >> > HotloadFilesMap
Definition: ShaderManager.h:117
bool operator==(const FCDJointWeightPair &a, const FCDJointWeightPair &b)
Definition: GeomReindex.cpp:59
CShaderDefines defines
Definition: ShaderManager.h:74
std::string name
Definition: ShaderManager.h:73
Key for effect cache lookups.
Definition: ShaderManager.h:97
std::map< CacheKey, CShaderProgramPtr > m_ProgramCache
Definition: ShaderManager.h:88
Status ReloadChangedFile(const VfsPath &path)
Definition: ShaderManager.cpp:465
HotloadFilesMap< CShaderProgram > m_HotloadPrograms
Definition: ShaderManager.h:119
void AddProgramFileDependency(const CShaderProgramPtr &program, const VfsPath &path)
Associates the file with the program to be reloaded if the file has changed.
Definition: ShaderManager.cpp:499
Interned 8-bit strings.
Definition: CStrIntern.h:37
CShaderManager()
Definition: ShaderManager.cpp:50
bool LoadTechnique(CShaderTechniquePtr &tech)
Definition: ShaderManager.cpp:146
EffectCacheMap m_EffectCache
Definition: ShaderManager.h:111
bool operator<(const CacheKey &k) const
Definition: ShaderManager.h:76
pthread_key_t key
Definition: wpthread.cpp:140
Definition: ShaderManager.h:71
size_t GetNumEffectsLoaded() const
Returns the number of shader effects that are currently loaded.
Definition: ShaderManager.cpp:455
void AddTechniqueFileDependency(const CShaderTechniquePtr &technique, const VfsPath &path)
Associates the file with the technique to be reloaded if the file has changed.
Definition: ShaderManager.cpp:494
i64 Status
Error handling system.
Definition: status.h:169
std::unordered_map< EffectCacheKey, CShaderTechniquePtr, EffectCacheKeyHash > EffectCacheMap
Definition: ShaderManager.h:110
static Status ReloadChangedFileCB(void *param, const VfsPath &path)
Definition: ShaderManager.cpp:460
Represents a mapping of name strings to value strings, for use with #if and #ifdef and similar condit...
Definition: ShaderDefines.h:146
CShaderTechnique::PipelineStateDescCallback PipelineStateDescCallback
Load a shader effect with the pipeline state description overwriting.
Definition: ShaderManager.h:61
std::shared_ptr< CShaderTechnique > CShaderTechniquePtr
Definition: ShaderTechniquePtr.h:27
CShaderTechniquePtr LoadEffect(CStrIntern name, const CShaderDefines &defines)
Load a shader effect.
Definition: ShaderManager.cpp:110
std::function< void(Renderer::Backend::SGraphicsPipelineStateDesc &pipelineStateDesc)> PipelineStateDescCallback
Definition: ShaderTechnique.h:63
CStrIntern name
Definition: ShaderManager.h:99
std::shared_ptr< CShaderProgram > CShaderProgramPtr
Definition: ShaderProgramPtr.h:25
Shader manager: loads and caches shader programs.
Definition: ShaderManager.h:37
CShaderDefines defines
Definition: ShaderManager.h:100
Path VfsPath
Definition: HeightMipmap.h:30