Pyrogenesis  13997
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
CShaderManager Class Reference

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
 

Detailed Description

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.

Member Typedef Documentation

Definition at line 117 of file ShaderManager.h.

typedef boost::unordered_map<VfsPath, std::set<boost::weak_ptr<CShaderProgram> > > CShaderManager::HotloadFilesMap
private

Definition at line 121 of file ShaderManager.h.

Constructor & Destructor Documentation

CShaderManager::CShaderManager ( )

Definition at line 44 of file ShaderManager.cpp.

CShaderManager::~CShaderManager ( )

Definition at line 64 of file ShaderManager.cpp.

Member Function Documentation

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.

Parameters
namename of effect XML specification (file is loaded from shaders/effects/${name}.xml)
defines1,defines2key/value set of preprocessor definitions; defines2 has higher precedence
Returns
loaded technique, or empty technique on error

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.

Parameters
namename of shader XML specification (file is loaded from shaders/${name}.xml)
defineskey/value set of preprocessor definitions
Returns
loaded program, or null pointer on error

Definition at line 69 of file ShaderManager.cpp.

bool CShaderManager::NewEffect ( const char *  name,
const CShaderDefines defines,
CShaderTechniquePtr tech 
)
private

Definition at line 380 of file ShaderManager.cpp.

bool CShaderManager::NewProgram ( const char *  name,
const CShaderDefines defines,
CShaderProgramPtr program 
)
private

Definition at line 114 of file ShaderManager.cpp.

Status CShaderManager::ReloadChangedFile ( const VfsPath path)
private

Definition at line 562 of file ShaderManager.cpp.

Status CShaderManager::ReloadChangedFileCB ( void *  param,
const VfsPath path 
)
staticprivate

Definition at line 557 of file ShaderManager.cpp.

Member Data Documentation

EffectCacheMap CShaderManager::m_EffectCache
private

Definition at line 118 of file ShaderManager.h.

HotloadFilesMap CShaderManager::m_HotloadFiles
private

Definition at line 122 of file ShaderManager.h.

std::map<CacheKey, CShaderProgramPtr> CShaderManager::m_ProgramCache
private

Definition at line 94 of file ShaderManager.h.

RelaxNGValidator CShaderManager::m_Validator
private

Definition at line 125 of file ShaderManager.h.


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