![]()  | 
  
    Pyrogenesis HEAD
    
   Pyrogenesis, a RTS Engine 
   | 
 
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 Types | |
| using | PipelineStateDescCallback = CShaderTechnique::PipelineStateDescCallback | 
| Load a shader effect with the pipeline state description overwriting.  More... | |
Public Member Functions | |
| CShaderManager (Renderer::Backend::IDevice *device) | |
| ~CShaderManager () | |
| CShaderTechniquePtr | LoadEffect (CStrIntern name, const CShaderDefines &defines) | 
| Load a shader effect.  More... | |
| CShaderTechniquePtr | LoadEffect (CStrIntern name) | 
| Load a shader effect, with empty defines.  More... | |
| CShaderTechniquePtr | LoadEffect (CStrIntern name, const CShaderDefines &defines, const PipelineStateDescCallback &callback) | 
| size_t | GetNumEffectsLoaded () const | 
| Returns the number of shader effects that are currently loaded.  More... | |
Private Types | |
| using | EffectCacheMap = std::unordered_map< EffectCacheKey, CShaderTechniquePtr, EffectCacheKeyHash > | 
| template<typename T > | |
| using | HotloadFilesMap = std::unordered_map< VfsPath, std::set< std::weak_ptr< T >, std::owner_less< std::weak_ptr< T > > > > | 
Private Member Functions | |
| CShaderProgramPtr | LoadProgram (const CStr &name, const CShaderDefines &defines) | 
| Load a shader program.  More... | |
| bool | LoadTechnique (CShaderTechniquePtr &tech) | 
| Status | ReloadChangedFile (const VfsPath &path) | 
| void | AddTechniqueFileDependency (const CShaderTechniquePtr &technique, const VfsPath &path) | 
| Associates the file with the technique to be reloaded if the file has changed.  More... | |
| void | AddProgramFileDependency (const CShaderProgramPtr &program, const VfsPath &path) | 
| Associates the file with the program to be reloaded if the file has changed.  More... | |
Static Private Member Functions | |
| static Status | ReloadChangedFileCB (void *param, const VfsPath &path) | 
Private Attributes | |
| Renderer::Backend::IDevice * | m_Device = nullptr | 
| std::map< CacheKey, CShaderProgramPtr > | m_ProgramCache | 
| EffectCacheMap | m_EffectCache | 
| HotloadFilesMap< CShaderTechnique > | m_HotloadTechniques | 
| HotloadFilesMap< CShaderProgram > | m_HotloadPrograms | 
Shader manager: loads and caches shader programs.
For a high-level overview of shaders and materials, see http://trac.wildfiregames.com/wiki/MaterialSystem
      
  | 
  private | 
      
  | 
  private | 
Load a shader effect with the pipeline state description overwriting.
TODO: we should set all needed states in XML.
| CShaderManager::CShaderManager | ( | Renderer::Backend::IDevice * | device | ) | 
| CShaderManager::~CShaderManager | ( | ) | 
      
  | 
  private | 
Associates the file with the program to be reloaded if the file has changed.
      
  | 
  private | 
Associates the file with the technique to be reloaded if the file has changed.
| size_t CShaderManager::GetNumEffectsLoaded | ( | ) | const | 
Returns the number of shader effects that are currently loaded.
| CShaderTechniquePtr CShaderManager::LoadEffect | ( | CStrIntern | name | ) | 
Load a shader effect, with empty defines.
| CShaderTechniquePtr CShaderManager::LoadEffect | ( | CStrIntern | name, | 
| const CShaderDefines & | defines | ||
| ) | 
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) | 
| defines | key/value set of preprocessor definitions | 
| CShaderTechniquePtr CShaderManager::LoadEffect | ( | CStrIntern | name, | 
| const CShaderDefines & | defines, | ||
| const PipelineStateDescCallback & | callback | ||
| ) | 
      
  | 
  private | 
Load a shader program.
| name | name of shader XML specification (file is loaded from shaders/${name}.xml) | 
| defines | key/value set of preprocessor definitions | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private |