KarmaEngine
Game Engine for practical learning and research purposes
Loading...
Searching...
No Matches
VulkanShader.h
Go to the documentation of this file.
1
10#pragma once
11
12#include "krpch.h"
13
15#include "glslang/Public/ShaderLang.h"
17
18namespace Karma
19{
21
30 {
38 enum Vkenum
39 {
41 VK_VERTEX_SHADER = 0,
42
44 VK_FRAGMENT_SHADER
45 };
46
47 public:
48
61 VulkanShader(const std::string& vertexSrc, const std::string& fragmentSrc, std::shared_ptr<UniformBufferObject> ubo);
62
70 virtual ~VulkanShader() override;
71
72 virtual void Bind() const override;
73 virtual void UnBind() const override;
74
86 std::vector<uint32_t> Compile(const std::string& src, const std::string& source, EShLanguage lang);
87
94 void UploadUniformMat4(const std::string& name, const glm::mat4& matrix);
95
96 //Getters
97 const std::vector<uint32_t>& GetVertSpirV() const { return vertSpirV; }
98 const std::vector<uint32_t>& GetFragSpirV() const { return fragSpirV; }
99 std::shared_ptr<VulkanUniformBuffer> GetUniformBufferObject() const { return m_UniformBufferObject; }
100
101 private:
102 std::vector<uint32_t> vertSpirV;
103 std::vector<uint32_t> fragSpirV;
104 std::shared_ptr<VulkanUniformBuffer> m_UniformBufferObject;
105 };
106
107}
#define KARMA_API
Defining Karma's API macro for storage class information.
Definition Core.h:41
This file contains various classes and functions for various Karma's utilities.
This file contains the Shader class.
Shader(std::shared_ptr< UniformBufferObject > ubo)
A constructor.
Definition Shader.h:31
VulkanShader(const std::string &vertexSrc, const std::string &fragmentSrc, std::shared_ptr< UniformBufferObject > ubo)
Constructor that compiles vertex and fragment shaders from source code.
Definition VulkanShader.cpp:8
virtual void UnBind() const override
Undo the binding of shader program.
Definition VulkanShader.cpp:95
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.
Definition VulkanShader.cpp:24
virtual void Bind() const override
Installs a shader (vertex + fragment) and uniform program object as part of current rendering state.
Definition VulkanShader.cpp:92
void UploadUniformMat4(const std::string &name, const glm::mat4 &matrix)
Uploads a 4x4 matrix uniform to the shader.
Definition VulkanShader.cpp:98
The actual uniform buffer class with implemented function using Vulkan API.
Definition VulkanBuffer.h:292