Mountain  1.0.0
Simple C++ 2D Game Framework
Mountain::Shader Class Referencefinal

Encapsulates a GPU shader. More...

#include <shader.hpp>

+ Inheritance diagram for Mountain::Shader:
+ Collaboration diagram for Mountain::Shader:

Public Member Functions

MOUNTAIN_API bool_t SetSourceData (const Pointer< File > &shader) override
 Loads a single shader file. More...
 
MOUNTAIN_API bool_t Load (const char_t *buffer, int64_t length, Graphics::ShaderType type)
 Loads raw shader code. More...
 
MOUNTAIN_API void Load () override
 Creates the shader in OpenGL.
 
MOUNTAIN_API void Unload () override
 Destroys the shader in OpenGL.
 
MOUNTAIN_API void ResetSourceData () override
 Unloads the shader.
 
MOUNTAIN_API bool_t Reload (bool_t reloadInBackend=true) override
 
MOUNTAIN_API bool_t Reload (const Pointer< File > &file, bool_t reloadInBackend=true) override
 
MOUNTAIN_API std::array< Pointer< File >, magic_enum::enum_count< Graphics::ShaderType >)> & GetFiles ()
 
MOUNTAIN_API const std::array< Pointer< File >, magic_enum::enum_count< Graphics::ShaderType >)> & GetFiles () const
 
MOUNTAIN_API std::array< ShaderCode, magic_enum::enum_count< Graphics::ShaderType >)> & GetCode ()
 
MOUNTAIN_API const std::array< ShaderCode, magic_enum::enum_count< Graphics::ShaderType >)> & GetCode () const
 
MOUNTAIN_API void Use () const
 Binds the shader for use.
 
MOUNTAIN_API void Unuse () const
 Unbinds the shader.
 
- Public Member Functions inherited from Mountain::ShaderBase
MOUNTAIN_API void SetUniform (const char_t *keyName, int32_t value) const
 Sets an int (signed, 32 bits) variable in a shader.
 
MOUNTAIN_API void SetUniform (const char_t *keyName, uint32_t value) const
 Sets an uint (unsigned, 32 bits) variable in a shader.
 
MOUNTAIN_API void SetUniform (const char_t *keyName, bool_t value) const
 Sets a bool (signed, 32 bits) variable in a shader.
 
MOUNTAIN_API void SetUniform (const char_t *keyName, float_t value) const
 Sets a float (32 bits) variable in a shader.
 
MOUNTAIN_API void SetUniform (const char_t *keyName, Vector2i value) const
 Sets a Vector2 (2 floats, 64 bits) variable in a shader.
 
MOUNTAIN_API void SetUniform (const char_t *keyName, Vector2 value) const
 Sets a Vector2 (2 floats, 64 bits) variable in a shader.
 
MOUNTAIN_API void SetUniform (const char_t *keyName, const Vector3 &value) const
 Sets a Vector3 (3 floats, 96 bits) variable in a shader.
 
MOUNTAIN_API void SetUniform (const char_t *keyName, const Vector4 &value) const
 Sets a Vector4 (4 floats, 128 bits) variable in a shader.
 
MOUNTAIN_API void SetUniform (const char_t *keyName, const Color &value) const
 Sets a Color (4 floats, 128 bits) variable in a shader.
 
MOUNTAIN_API void SetUniform (const char_t *keyName, const Matrix2 &value) const
 Sets a Matrix2 (4 floats, 128 bits) variable in a shader.
 
MOUNTAIN_API void SetUniform (const char_t *keyName, const Matrix3 &value) const
 Sets a Matrix3 (9 floats, 288 bits) variable in a shader.
 
MOUNTAIN_API void SetUniform (const char_t *keyName, const Matrix &value) const
 Sets a Matrix (16 floats, 512 bits) variable in a shader.
 
MOUNTAIN_API uint32_t GetId () const
 Gets the internal id of the shader.
 

Static Public Member Functions

static Graphics::ShaderType FileExtensionToType (const std::string &extension)
 Gets the shader type via a file extension. More...
 

Static Public Attributes

static MOUNTAIN_API constexpr std::array VertexFileExtensions
 Allowed extensions for vertex shaders. More...
 
static MOUNTAIN_API constexpr std::array FragmentFileExtensions
 Allowed extensions for fragment shaders. More...
 

Additional Inherited Members

- Public Attributes inherited from Mountain::ShaderBase
std::unordered_set< std::filesystem::path > dependentShaderFiles
 List of files that are included in this shader file.
 
- Protected Member Functions inherited from Mountain::ShaderBase
bool_t CheckCompileError (uint32_t id, std::string_view type, const std::string &code) const
 
bool_t CheckLinkError () const
 
int32_t GetUniformLocation (const char_t *keyName) const
 
- Static Protected Member Functions inherited from Mountain::ShaderBase
static void ReplaceIncludes (std::string &code, const std::filesystem::path &path, std::unordered_set< std::filesystem::path > &replacedFiles)
 
- Protected Attributes inherited from Mountain::ShaderBase
uint32_t m_Id = 0
 

Detailed Description

Encapsulates a GPU shader.

Definition at line 27 of file shader.hpp.

Member Function Documentation

◆ FileExtensionToType()

static Graphics::ShaderType Mountain::Shader::FileExtensionToType ( const std::string &  extension)
static

Gets the shader type via a file extension.

Parameters
extensionFile extension
Returns
ShaderType type
Exceptions
std::invalid_argumentIf the extension isn't valid

◆ Load()

MOUNTAIN_API bool_t Mountain::Shader::Load ( const char_t *  buffer,
int64_t  length,
Graphics::ShaderType  type 
)

Loads raw shader code.

Parameters
bufferRaw data
lengthRaw data length
typeShader type

◆ SetSourceData()

MOUNTAIN_API bool_t Mountain::Shader::SetSourceData ( const Pointer< File > &  shader)
override

Loads a single shader file.

Parameters
shaderFile
Returns
Whether the load succeeded

Member Data Documentation

◆ FragmentFileExtensions

MOUNTAIN_API constexpr std::array Mountain::Shader::FragmentFileExtensions
static
Initial value:
{
".frag",
".fragment",
".fs"
}

Allowed extensions for fragment shaders.

Definition at line 40 of file shader.hpp.

◆ VertexFileExtensions

MOUNTAIN_API constexpr std::array Mountain::Shader::VertexFileExtensions
static
Initial value:
{
".vert",
".vertex",
".vs"
}

Allowed extensions for vertex shaders.

Definition at line 32 of file shader.hpp.


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