|
Pyrogenesis
13997
|
Shader manager: loads and caches shader programs. More...
#include <ShaderManager.h>
Classes | |
| struct | CacheKey |
| struct | EffectCacheKey |
| Key for effect cache lookups. More... | |
| struct | EffectCacheKeyHash |
Public Member Functions | |
| CShaderManager () | |
| ~CShaderManager () | |
| CShaderProgramPtr | LoadProgram (const char *name, const CShaderDefines &defines) |
| Load a shader program. More... | |
| CShaderTechniquePtr | LoadEffect (CStrIntern name, const CShaderDefines &defines1, const CShaderDefines &defines2) |
| Load a shader effect. More... | |
| CShaderTechniquePtr | LoadEffect (CStrIntern name) |
| Load a shader effect, with default system defines (from CRenderer::GetSystemShaderDefines). More... | |
| size_t | GetNumEffectsLoaded () |
| Returns the number of shader effects that are currently loaded. More... | |
Private Types | |
| typedef boost::unordered_map < EffectCacheKey, CShaderTechniquePtr, EffectCacheKeyHash > | EffectCacheMap |
| typedef boost::unordered_map < VfsPath, std::set < boost::weak_ptr < CShaderProgram > > > | HotloadFilesMap |
Private Member Functions | |
| bool | NewProgram (const char *name, const CShaderDefines &defines, CShaderProgramPtr &program) |
| bool | NewEffect (const char *name, const CShaderDefines &defines, CShaderTechniquePtr &tech) |
| Status | ReloadChangedFile (const VfsPath &path) |
Static Private Member Functions | |
| static Status | ReloadChangedFileCB (void *param, const VfsPath &path) |
Private Attributes | |
| std::map< CacheKey, CShaderProgramPtr > | m_ProgramCache |
| EffectCacheMap | m_EffectCache |
| HotloadFilesMap | m_HotloadFiles |
| RelaxNGValidator | m_Validator |
Shader manager: loads and caches shader programs.
For a high-level overview of shaders and materials, see http://trac.wildfiregames.com/wiki/MaterialSystem
Definition at line 42 of file ShaderManager.h.
|
private |
Definition at line 117 of file ShaderManager.h.
|
private |
Definition at line 121 of file ShaderManager.h.
| CShaderManager::CShaderManager | ( | ) |
Definition at line 44 of file ShaderManager.cpp.
| CShaderManager::~CShaderManager | ( | ) |
Definition at line 64 of file ShaderManager.cpp.
| size_t CShaderManager::GetNumEffectsLoaded | ( | ) |
Returns the number of shader effects that are currently loaded.
Definition at line 552 of file ShaderManager.cpp.
| CShaderTechniquePtr CShaderManager::LoadEffect | ( | CStrIntern | name, |
| const CShaderDefines & | defines1, | ||
| const CShaderDefines & | defines2 | ||
| ) |
Load a shader effect.
Effects can be implemented via many techniques; this returns the best usable technique.
| name | name of effect XML specification (file is loaded from shaders/effects/${name}.xml) |
| defines1,defines2 | key/value set of preprocessor definitions; defines2 has higher precedence |
Definition at line 355 of file ShaderManager.cpp.
| CShaderTechniquePtr CShaderManager::LoadEffect | ( | CStrIntern | name | ) |
Load a shader effect, with default system defines (from CRenderer::GetSystemShaderDefines).
Definition at line 350 of file ShaderManager.cpp.
| CShaderProgramPtr CShaderManager::LoadProgram | ( | const char * | name, |
| const CShaderDefines & | defines | ||
| ) |
Load a shader program.
| name | name of shader XML specification (file is loaded from shaders/${name}.xml) |
| defines | key/value set of preprocessor definitions |
Definition at line 69 of file ShaderManager.cpp.
|
private |
Definition at line 380 of file ShaderManager.cpp.
|
private |
Definition at line 114 of file ShaderManager.cpp.
Definition at line 562 of file ShaderManager.cpp.
Definition at line 557 of file ShaderManager.cpp.
|
private |
Definition at line 118 of file ShaderManager.h.
|
private |
Definition at line 122 of file ShaderManager.h.
|
private |
Definition at line 94 of file ShaderManager.h.
|
private |
Definition at line 125 of file ShaderManager.h.
1.8.5