StevEngine
StevEngine is a customizable C++ game engine.
Loading...
Searching...
No Matches
StevEngine::Renderer::ShaderProgram Class Reference

Compiled and linked shader program. More...

#include <visuals/shaders/ShaderProgram.hpp>

Inheritance diagram for StevEngine::Renderer::ShaderProgram:
StevEngine::Renderer::ComputeShader

Public Member Functions

 ShaderProgram (ShaderType shaderType, bool useDefaultShaders=true)
 Create shader program.
 
 ShaderProgram (const std::vector< Shader > &shaders, bool useDefaultShaders=true)
 Create shader program.
 
 ShaderProgram (Utilities::Stream &stream)
 Create from serialized data.
 
 ShaderProgram ()
 Create empty program.
 
uint32_t AddShader (Shader shader)
 Add shader stage to program.
 
void RemoveShader (uint32_t location)
 Remove shader from program.
 
void RelinkProgram ()
 Relink program after shader changes.
 
void DeleteProgram ()
 Deletes program and all shaders from OpenGL.
 
void SetShaderUniform (const char *name, Utilities::Matrix4 value) const
 Set matrix uniform.
 
void SetShaderUniform (const char *name, Utilities::Color value) const
 Set color uniform.
 
void SetShaderUniform (const char *name, Utilities::Vector3 value) const
 Set vector3 uniform.
 
void SetShaderUniform (const char *name, Utilities::Vector2 value) const
 Set vector2 uniform.
 
void SetShaderUniform (const char *name, bool value) const
 Set boolean uniform.
 
void SetShaderUniform (const char *name, int32_t value) const
 Set integer uniform.
 
void SetShaderUniform (const char *name, uint32_t value) const
 Set unsigned integer uniform.
 
void SetShaderUniform (const char *name, float value) const
 Set float uniform.
 
void SetShaderUniform (const char *name, double value) const
 Set double uniform.
 
uint32_t GetLocation () const
 Get OpenGL program ID.
 
bool IsModified () const
 Check if program needs relinking.
 
ShaderType GetType () const
 Get program shader type.
 
Utilities::Stream Export (Utilities::StreamType type) const
 Serialize shader program to a stream.
 

Protected Attributes

uint32_t location
 OpenGL program ID.
 
ShaderType shaderType
 Type of shaders in program.
 
bool modified
 Whether program needs relinking.
 
std::map< uint32_t, Shadershaders
 Shaders by OpenGL ID.
 

Detailed Description

Compiled and linked shader program.

Manages multiple shader stages combined into a complete program. Handles uniform updates and shader program state.

Constructor & Destructor Documentation

◆ ShaderProgram() [1/3]

StevEngine::Renderer::ShaderProgram::ShaderProgram ( ShaderType shaderType,
bool useDefaultShaders = true )

Create shader program.

Parameters
shaderTypeType of shaders in program
useDefaultShadersAdd default engine shaders to program

◆ ShaderProgram() [2/3]

StevEngine::Renderer::ShaderProgram::ShaderProgram ( const std::vector< Shader > & shaders,
bool useDefaultShaders = true )

Create shader program.

The shader type will be inferred from the first shader in vector, any shader of different type will be ignored.

Parameters
shadersVector of shaders to initialize program with.
useDefaultShadersAdd default engine shaders to program

◆ ShaderProgram() [3/3]

StevEngine::Renderer::ShaderProgram::ShaderProgram ( Utilities::Stream & stream)

Create from serialized data.

Parameters
streamStream containing serialized component data

Member Function Documentation

◆ AddShader()

uint32_t StevEngine::Renderer::ShaderProgram::AddShader ( Shader shader)

Add shader stage to program.

Parameters
shaderShader to add
Returns
OpenGL shader ID

◆ Export()

Utilities::Stream StevEngine::Renderer::ShaderProgram::Export ( Utilities::StreamType type) const

Serialize shader program to a stream.

Parameters
typeType of stream to export to
Returns
Serialized stream

◆ GetLocation()

uint32_t StevEngine::Renderer::ShaderProgram::GetLocation ( ) const
inline

Get OpenGL program ID.

Returns
Program location in OpenGL

◆ GetType()

ShaderType StevEngine::Renderer::ShaderProgram::GetType ( ) const
inline

Get program shader type.

Returns
Type of shaders in program

◆ IsModified()

bool StevEngine::Renderer::ShaderProgram::IsModified ( ) const
inline

Check if program needs relinking.

Returns
true if shaders were modified

◆ RemoveShader()

void StevEngine::Renderer::ShaderProgram::RemoveShader ( uint32_t location)

Remove shader from program.

Parameters
locationOpenGL shader ID to remove

◆ SetShaderUniform() [1/9]

void StevEngine::Renderer::ShaderProgram::SetShaderUniform ( const char * name,
bool value ) const

Set boolean uniform.

Parameters
nameUniform name in shader
valueBoolean value

◆ SetShaderUniform() [2/9]

void StevEngine::Renderer::ShaderProgram::SetShaderUniform ( const char * name,
double value ) const

Set double uniform.

Parameters
nameUniform name in shader
valueDouble value

◆ SetShaderUniform() [3/9]

void StevEngine::Renderer::ShaderProgram::SetShaderUniform ( const char * name,
float value ) const

Set float uniform.

Parameters
nameUniform name in shader
valueFloat value

◆ SetShaderUniform() [4/9]

void StevEngine::Renderer::ShaderProgram::SetShaderUniform ( const char * name,
int32_t value ) const

Set integer uniform.

Parameters
nameUniform name in shader
valueInteger value

◆ SetShaderUniform() [5/9]

void StevEngine::Renderer::ShaderProgram::SetShaderUniform ( const char * name,
uint32_t value ) const

Set unsigned integer uniform.

Parameters
nameUniform name in shader
valueUnsigned integer value

◆ SetShaderUniform() [6/9]

void StevEngine::Renderer::ShaderProgram::SetShaderUniform ( const char * name,
Utilities::Color value ) const

Set color uniform.

Parameters
nameUniform name in shader
valueColor value

◆ SetShaderUniform() [7/9]

void StevEngine::Renderer::ShaderProgram::SetShaderUniform ( const char * name,
Utilities::Matrix4 value ) const

Set matrix uniform.

Parameters
nameUniform name in shader
valueMatrix value

◆ SetShaderUniform() [8/9]

void StevEngine::Renderer::ShaderProgram::SetShaderUniform ( const char * name,
Utilities::Vector2 value ) const

Set vector2 uniform.

Parameters
nameUniform name in shader
valueVector value

◆ SetShaderUniform() [9/9]

void StevEngine::Renderer::ShaderProgram::SetShaderUniform ( const char * name,
Utilities::Vector3 value ) const

Set vector3 uniform.

Parameters
nameUniform name in shader
valueVector value

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