CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::RendererShaderManager Class Reference

The renderer shader manager that is responsible for managing and re-using GPU shaders. More...

#include <CeresEngine/Renderer/Resources/RendererShader.hpp>

Classes

struct  ShaderInfo
 

Public Member Functions

 RendererShaderManager (Renderer &renderer)
 Creates a new Shader Manager instance.
 
RendererShaderPtr get (StringView name, const GPUShaderProgramDescriptor &descriptor)
 Gets (or creates) a new RendererShader from a shader shader program descriptor.
 
RendererShaderPtr get (const GPUShaderProgramDescriptor &descriptor)
 Gets (or creates) a new RendererShader from a shader shader program descriptor.
 
RendererShaderPtr get (StringView name, const ShaderPtr &shader)
 Gets (or creates) a new RendererShader from a shader.
 
RendererShaderPtr get (const ShaderPtr &shader)
 Gets (or creates) a new RendererShader from a shader.
 
RendererShaderPtr get (const HShader &shader)
 Gets (or creates) a new RendererShader from a shader.
 
RendererShaderPtr get (const StringView name, const HShader &shader)
 Gets (or creates) a new RendererShader from a shader.
 

Private Member Functions

RendererShaderPtr getOrCreate (StringView name, const GPUShaderProgramDescriptor &descriptor)
 Gets an existing or creates a new renderer shader instance for the given base descriptor.
 
RendererShaderPtr getOrCreate (StringView name, const ShaderPtr &shader)
 Gets an existing or creates a new renderer shader instance for the given shader.
 
void notifyDestroy (const RendererShader *shader) noexcept
 Notifies the manager that the renderer shader is being destroyed.
 

Private Attributes

RenderermRenderer
 The renderer that owns this manager instance.
 
HashMap< UInt64, ShaderInfomShaders
 A map that holds shader information for each base shader descriptor.
 

Friends

class RendererShader
 

Detailed Description

The renderer shader manager that is responsible for managing and re-using GPU shaders.

Constructor & Destructor Documentation

◆ RendererShaderManager()

CeresEngine::RendererShaderManager::RendererShaderManager ( Renderer renderer)
explicit

Creates a new Shader Manager instance.

Parameters
rendererThe renderer that owns this manager instance.

Member Function Documentation

◆ get() [1/6]

RendererShaderPtr CeresEngine::RendererShaderManager::get ( const GPUShaderProgramDescriptor descriptor)
inline

Gets (or creates) a new RendererShader from a shader shader program descriptor.

Parameters
descriptorThe base descriptor that describes the shader that should be managed by the renderer.

◆ get() [2/6]

RendererShaderPtr CeresEngine::RendererShaderManager::get ( const HShader shader)
inline

Gets (or creates) a new RendererShader from a shader.

Parameters
shaderThe shader to be compiled and used to create the shader program.

◆ get() [3/6]

RendererShaderPtr CeresEngine::RendererShaderManager::get ( const ShaderPtr shader)
inline

Gets (or creates) a new RendererShader from a shader.

Parameters
shaderThe shader to be compiled and used to create the shader program.

◆ get() [4/6]

RendererShaderPtr CeresEngine::RendererShaderManager::get ( const StringView  name,
const HShader shader 
)
inline

Gets (or creates) a new RendererShader from a shader.

Parameters
shaderThe shader to be compiled and used to create the shader program.

◆ get() [5/6]

RendererShaderPtr CeresEngine::RendererShaderManager::get ( StringView  name,
const GPUShaderProgramDescriptor descriptor 
)

Gets (or creates) a new RendererShader from a shader shader program descriptor.

Parameters
descriptorThe base descriptor that describes the shader that should be managed by the renderer.

◆ get() [6/6]

RendererShaderPtr CeresEngine::RendererShaderManager::get ( StringView  name,
const ShaderPtr shader 
)

Gets (or creates) a new RendererShader from a shader.

Parameters
shaderThe shader to be compiled and used to create the shader program.

◆ getOrCreate() [1/2]

RendererShaderPtr CeresEngine::RendererShaderManager::getOrCreate ( StringView  name,
const GPUShaderProgramDescriptor descriptor 
)
private

Gets an existing or creates a new renderer shader instance for the given base descriptor.

◆ getOrCreate() [2/2]

RendererShaderPtr CeresEngine::RendererShaderManager::getOrCreate ( StringView  name,
const ShaderPtr shader 
)
private

Gets an existing or creates a new renderer shader instance for the given shader.

◆ notifyDestroy()

void CeresEngine::RendererShaderManager::notifyDestroy ( const RendererShader shader)
privatenoexcept

Notifies the manager that the renderer shader is being destroyed.

Friends And Related Symbol Documentation

◆ RendererShader

Member Data Documentation

◆ mRenderer

Renderer& CeresEngine::RendererShaderManager::mRenderer
private

The renderer that owns this manager instance.

◆ mShaders

HashMap<UInt64, ShaderInfo> CeresEngine::RendererShaderManager::mShaders
private

A map that holds shader information for each base shader descriptor.


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