8#ifdef VISUTWIN_HAS_VULKAN
11#include <vulkan/vulkan.h>
17 class VulkanShader :
public Shader
20 VulkanShader(GraphicsDevice* device,
const ShaderDefinition& definition,
21 const std::string& sourceCode =
"");
24 VulkanShader(GraphicsDevice* device,
const ShaderDefinition& definition,
25 const uint32_t* vertSpirv,
size_t vertWordCount,
26 const uint32_t* fragSpirv,
size_t fragWordCount);
28 ~VulkanShader()
override;
30 [[nodiscard]] VkShaderModule vertexModule()
const {
return _vertexModule; }
31 [[nodiscard]] VkShaderModule fragmentModule()
const {
return _fragmentModule; }
32 [[nodiscard]] VkShaderModule computeModule()
const {
return _computeModule; }
35 VkShaderModule createModule(
const uint32_t* spirv,
size_t wordCount);
37 VkDevice _vkDevice = VK_NULL_HANDLE;
38 VkShaderModule _vertexModule = VK_NULL_HANDLE;
39 VkShaderModule _fragmentModule = VK_NULL_HANDLE;
40 VkShaderModule _computeModule = VK_NULL_HANDLE;