|
KarmaEngine
Game Engine for practical learning and research purposes
|
Vulkan specific implementation of Shader class. More...
#include <VulkanShader.h>
Public Member Functions | |
| VulkanShader (const std::string &vertexSrc, const std::string &fragmentSrc, std::shared_ptr< UniformBufferObject > ubo) | |
| Constructor that compiles vertex and fragment shaders from source code. | |
| virtual | ~VulkanShader () override |
| Destructor. | |
| virtual void | Bind () const override |
| Installs a shader (vertex + fragment) and uniform program object as part of current rendering state. | |
| virtual void | UnBind () const override |
| Undo the binding of shader program. | |
| std::vector< uint32_t > | Compile (const std::string &src, const std::string &source, EShLanguage lang) |
| Compiles GLSL source code to SPIR-V bytecode using GLSLANG. | |
| void | UploadUniformMat4 (const std::string &name, const glm::mat4 &matrix) |
| Uploads a 4x4 matrix uniform to the shader. | |
| const std::vector< uint32_t > & | GetVertSpirV () const |
| const std::vector< uint32_t > & | GetFragSpirV () const |
| std::shared_ptr< VulkanUniformBuffer > | GetUniformBufferObject () const |
| Public Member Functions inherited from Karma::Shader | |
| Shader (std::shared_ptr< UniformBufferObject > ubo) | |
| A constructor. | |
| virtual | ~Shader ()=default |
| Destructor. | |
| virtual void | Bind (const std::string &texShaderNames) const |
| Binding using name of texture. | |
| std::shared_ptr< UniformBufferObject > | GetUniformBufferObject () const |
| Getter for uniform buffer object. | |
| const std::string & | GetShaderName () const |
| Getter for shader name. | |
Additional Inherited Members | |
| Static Public Member Functions inherited from Karma::Shader | |
| static Shader * | Create (const std::string &vertexSrc, const std::string &fragmentSrc) |
| Instantiating shader object according to the programmer chosen API. | |
| static Shader * | Create (const std::string &vertexSrcFile, const std::string &fragmentSrcFile, std::shared_ptr< UniformBufferObject > ubo, const std::string &shaderName="NoNamedShader") |
| For instantiating shader object accodring to programer's chosen API. | |
| Protected Attributes inherited from Karma::Shader | |
| std::string | m_ShaderName |
Vulkan specific implementation of Shader class.
This class handles the compilation of GLSL shader source code to SPIR-V bytecode and manages the associated uniform buffer object.
| Karma::VulkanShader::VulkanShader | ( | const std::string & | vertexSrc, |
| const std::string & | fragmentSrc, | ||
| std::shared_ptr< UniformBufferObject > | ubo ) |
Constructor that compiles vertex and fragment shaders from source code.
GLSLANG is used to compile the GLSL source code into SPIR-V bytecode for Vulkan.
| vertexSrc | Path to vertex shader source file |
| fragmentSrc | Path to fragment shader source file |
| ubo | Shared pointer to the uniform buffer object |
|
overridevirtual |
Destructor.
Cleans up any allocated resources.
|
overridevirtual |
Installs a shader (vertex + fragment) and uniform program object as part of current rendering state.
Reimplemented from Karma::Shader.
| std::vector< uint32_t > Karma::VulkanShader::Compile | ( | const std::string & | src, |
| const std::string & | source, | ||
| EShLanguage | lang ) |
Compiles GLSL source code to SPIR-V bytecode using GLSLANG.
| src | Path to the (vertex or fragment) shader GLSL source file |
| source | The actual GLSL source code as a string (read from the file) |
| lang | Shader stage (vertex or fragment) |
|
overridevirtual |
Undo the binding of shader program.
Reimplemented from Karma::Shader.
| void Karma::VulkanShader::UploadUniformMat4 | ( | const std::string & | name, |
| const glm::mat4 & | matrix ) |
Uploads a 4x4 matrix uniform to the shader.