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.