cae  0.0.0
Cross-API graphics engine
Loading...
Searching...
No Matches
cae::ShaderManager Class Reference

Class for managing shaders. More...

#include <ShaderManager.hpp>

+ Collaboration diagram for cae::ShaderManager:

Public Member Functions

 ShaderManager (const std::vector< std::function< std::shared_ptr< IShaderFrontend >()> > &shaderFrontendFactories, const std::function< std::shared_ptr< IShaderIR >()> &shaderIRFactory=nullptr)
 
 ~ShaderManager ()=default
 
 ShaderManager (const ShaderManager &)=delete
 
ShaderManageroperator= (const ShaderManager &)=delete
 
 ShaderManager (ShaderManager &&)=delete
 
ShaderManageroperator= (ShaderManager &&)=delete
 
std::unordered_map< ShaderID, ShaderIRModulebuild (const std::vector< ShaderSourceDesc > &sources, const ShaderSourceType targetIR) const
 
template<std::ranges::input_range R>
void optimizeAll (const ShaderSourceType irType, R &&modules) const
 

Private Member Functions

void registerFrontend (const std::shared_ptr< IShaderFrontend > &f)
 
void registerIR (const std::shared_ptr< IShaderIR > &ir)
 

Private Attributes

std::unordered_map< ShaderSourceType, std::shared_ptr< IShaderFrontend > > m_frontends
 
std::unordered_map< ShaderSourceType, std::shared_ptr< IShaderIR > > m_irs
 

Detailed Description

Class for managing shaders.

Definition at line 20 of file ShaderManager.hpp.

Constructor & Destructor Documentation

◆ ShaderManager() [1/3]

cae::ShaderManager::ShaderManager ( const std::vector< std::function< std::shared_ptr< IShaderFrontend >()> > & shaderFrontendFactories,
const std::function< std::shared_ptr< IShaderIR >()> & shaderIRFactory = nullptr )
inlineexplicit

Definition at line 23 of file ShaderManager.hpp.

References registerFrontend(), and registerIR().

+ Here is the call graph for this function:

◆ ~ShaderManager()

cae::ShaderManager::~ShaderManager ( )
default

◆ ShaderManager() [2/3]

cae::ShaderManager::ShaderManager ( const ShaderManager & )
delete

◆ ShaderManager() [3/3]

cae::ShaderManager::ShaderManager ( ShaderManager && )
delete

Member Function Documentation

◆ build()

std::unordered_map< ShaderID, ShaderIRModule > cae::ShaderManager::build ( const std::vector< ShaderSourceDesc > & sources,
const ShaderSourceType targetIR ) const
inline

Definition at line 44 of file ShaderManager.hpp.

References m_frontends, and m_irs.

◆ operator=() [1/2]

ShaderManager & cae::ShaderManager::operator= ( const ShaderManager & )
delete

◆ operator=() [2/2]

ShaderManager & cae::ShaderManager::operator= ( ShaderManager && )
delete

◆ optimizeAll()

template<std::ranges::input_range R>
void cae::ShaderManager::optimizeAll ( const ShaderSourceType irType,
R && modules ) const
inline

Definition at line 61 of file ShaderManager.hpp.

References m_irs.

◆ registerFrontend()

void cae::ShaderManager::registerFrontend ( const std::shared_ptr< IShaderFrontend > & f)
inlineprivate

Definition at line 88 of file ShaderManager.hpp.

References m_frontends.

Referenced by ShaderManager().

+ Here is the caller graph for this function:

◆ registerIR()

void cae::ShaderManager::registerIR ( const std::shared_ptr< IShaderIR > & ir)
inlineprivate

Definition at line 89 of file ShaderManager.hpp.

References m_irs.

Referenced by ShaderManager().

+ Here is the caller graph for this function:

Member Data Documentation

◆ m_frontends

std::unordered_map<ShaderSourceType, std::shared_ptr<IShaderFrontend> > cae::ShaderManager::m_frontends
private

Definition at line 91 of file ShaderManager.hpp.

Referenced by build(), and registerFrontend().

◆ m_irs

std::unordered_map<ShaderSourceType, std::shared_ptr<IShaderIR> > cae::ShaderManager::m_irs
private

Definition at line 92 of file ShaderManager.hpp.

Referenced by build(), optimizeAll(), and registerIR().


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