KarmaEngine
Game Engine for practical learning and research purposes
Loading...
Searching...
No Matches
VulkanShader.h
1#pragma once
2
3#include "krpch.h"
4
6#include "glslang/Public/ShaderLang.h"
8
9namespace Karma
10{
12 class KARMA_API VulkanShader : public Shader
13 {
14 enum Vkenum
15 {
16 VK_VERTEX_SHADER = 0,
17 VK_FRAGMENT_SHADER
18 };
19
20 public:
21 VulkanShader(const std::string& vertexSrc, const std::string& fragmentSrc, std::shared_ptr<UniformBufferObject> ubo);
22 virtual ~VulkanShader() override;
23
24 virtual void Bind() const override;
25 virtual void UnBind() const override;
26
27 std::vector<uint32_t> Compile(const std::string& src, const std::string& source, EShLanguage lang);
28
29 void UploadUniformMat4(const std::string& name, const glm::mat4& matrix);
30
31 //Getters
32 const std::vector<uint32_t>& GetVertSpirV() const { return vertSpirV; }
33 const std::vector<uint32_t>& GetFragSpirV() const { return fragSpirV; }
34 std::shared_ptr<VulkanUniformBuffer> GetUniformBufferObject() const { return m_UniformBufferObject; }
35
36 private:
37 std::vector<uint32_t> vertSpirV;
38 std::vector<uint32_t> fragSpirV;
39 std::shared_ptr<VulkanUniformBuffer> m_UniformBufferObject;
40 };
41
42}
#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
virtual void UnBind() const override
Undo the binding of shader program.
Definition VulkanShader.cpp:95
virtual void Bind() const override
Installs a shader (vertex + fragment) and uniform program object as part of current rendering state.
Definition VulkanShader.cpp:92
The actual uniform buffer class with implemented function using Vulkan API.
Definition VulkanBuffer.h:292