Pyrogenesis  trunk
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, EffectCacheKeyHashEffectCacheMap
 
typedef boost::unordered_map< VfsPath, std::set< std::weak_ptr< CShaderProgram >, std::owner_less< std::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, CShaderProgramPtrm_ProgramCache
 
EffectCacheMap m_EffectCache
 
HotloadFilesMap m_HotloadFiles
 

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

Member Typedef Documentation

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

Constructor & Destructor Documentation

CShaderManager::CShaderManager ( )
CShaderManager::~CShaderManager ( )

Member Function Documentation

size_t CShaderManager::GetNumEffectsLoaded ( )

Returns the number of shader effects that are currently loaded.

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
CShaderTechniquePtr CShaderManager::LoadEffect ( CStrIntern  name)

Load a shader effect, with default system defines (from CRenderer::GetSystemShaderDefines).

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
bool CShaderManager::NewEffect ( const char *  name,
const CShaderDefines defines,
CShaderTechniquePtr tech 
)
private
bool CShaderManager::NewProgram ( const char *  name,
const CShaderDefines defines,
CShaderProgramPtr program 
)
private
Status CShaderManager::ReloadChangedFile ( const VfsPath path)
private
Status CShaderManager::ReloadChangedFileCB ( void *  param,
const VfsPath path 
)
staticprivate

Member Data Documentation

EffectCacheMap CShaderManager::m_EffectCache
private
HotloadFilesMap CShaderManager::m_HotloadFiles
private
std::map<CacheKey, CShaderProgramPtr> CShaderManager::m_ProgramCache
private

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