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

A renderer shader. More...

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

Inheritance diagram for CeresEngine::RendererShader:
CeresEngine::RefCounted< RendererShader >

Public Member Functions

 RendererShader (RendererShaderManager &manager, StringView name, const ShaderPtr &shader)
 
 RendererShader (RendererShaderManager &manager, StringView name, const GPUShaderProgramDescriptor &baseDescriptor)
 
 ~RendererShader ()
 
GPUShaderProgramPtr getProgram (const RendererShaderSpecialization &specialization) const
 Gets the compiled shader program for the given parameters.
 
GPUShaderProgramPtr getProgram () const
 Gets the compiled shader program for the given parameters.
 
const StringgetName () const noexcept
 A human-readable name for the shader.
 
const ShaderPtrgetShader () const noexcept
 A pointer to the shader resource object that will be used as base for compilation.
 
- Public Member Functions inherited from CeresEngine::RefCounted< RendererShader >
 RefCounted (Args &&... args)
 Creates a new RefCounted object and constructs a new Deleter by forwarding Args to it.
 
void retain () noexcept
 Retains the object by increment it's reference count by one.
 
bool release () noexcept
 Relases the object by decrementing it's reference count by one.
 

Private Attributes

RendererShaderManagermManager
 The renderer shader manager that owns this shader object.
 
String mName
 A human-readable name for the shader.
 
ShaderPtr mShader = nullptr
 A pointer to the shader resource object that will be used as base for compilation.
 
HashMap< UInt64, GPUShaderProgramPtrmPrograms
 The shader programs, indexed by their parameters hash.
 

Friends

class RendererShaderManager
 

Detailed Description

A renderer shader.

This is similar to a GPUShaderProgram but is managed by the renderer and allows mutation of certain parameters on runtime with automatic specialization by the renderer.

Constructor & Destructor Documentation

◆ RendererShader() [1/2]

CeresEngine::RendererShader::RendererShader ( RendererShaderManager manager,
StringView  name,
const ShaderPtr shader 
)
explicit

◆ RendererShader() [2/2]

CeresEngine::RendererShader::RendererShader ( RendererShaderManager manager,
StringView  name,
const GPUShaderProgramDescriptor baseDescriptor 
)
explicit

◆ ~RendererShader()

CeresEngine::RendererShader::~RendererShader ( )

Member Function Documentation

◆ getName()

const String & CeresEngine::RendererShader::getName ( ) const
inlinenoexcept

A human-readable name for the shader.

Will be displayed on debugging utilities.

◆ getProgram() [1/2]

GPUShaderProgramPtr CeresEngine::RendererShader::getProgram ( ) const
inline

Gets the compiled shader program for the given parameters.

◆ getProgram() [2/2]

GPUShaderProgramPtr CeresEngine::RendererShader::getProgram ( const RendererShaderSpecialization specialization) const

Gets the compiled shader program for the given parameters.

Parameters
specializationThe shader specialization parameters.

◆ getShader()

const ShaderPtr & CeresEngine::RendererShader::getShader ( ) const
inlinenoexcept

A pointer to the shader resource object that will be used as base for compilation.

Friends And Related Symbol Documentation

◆ RendererShaderManager

Member Data Documentation

◆ mManager

RendererShaderManager& CeresEngine::RendererShader::mManager
private

The renderer shader manager that owns this shader object.

◆ mName

String CeresEngine::RendererShader::mName
private

A human-readable name for the shader.

Will be displayed on debugging utilities.

◆ mPrograms

HashMap<UInt64, GPUShaderProgramPtr> CeresEngine::RendererShader::mPrograms
mutableprivate

The shader programs, indexed by their parameters hash.

◆ mShader

ShaderPtr CeresEngine::RendererShader::mShader = nullptr
private

A pointer to the shader resource object that will be used as base for compilation.


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