18 #ifndef INCLUDED_RENDERER_BACKEND_VULKAN_SHADERPROGRAM 19 #define INCLUDED_RENDERER_BACKEND_VULKAN_SHADERPROGRAM 26 #include <glad/vulkan.h> 28 #include <unordered_map> 51 static uint32_t m_LastAvailableUID = 1;
52 m_UID = m_LastAvailableUID++;
56 ENSURE(attribute.stride > 0);
84 int32_t GetBindingSlot(
const CStrIntern name)
const override;
86 std::vector<VfsPath> GetFileDependencies()
const override;
90 const std::vector<VkPipelineShaderStageCreateInfo>&
GetStages()
const {
return m_Stages; }
94 void PreDraw(VkCommandBuffer commandBuffer);
100 const int32_t bindingSlot,
103 const int32_t bindingSlot,
104 const float valueX,
const float valueY);
106 const int32_t bindingSlot,
107 const float valueX,
const float valueY,
110 const int32_t bindingSlot,
111 const float valueX,
const float valueY,
112 const float valueZ,
const float valueW);
115 void SetTexture(
const int32_t bindingSlot,
CTexture* texture);
128 std::pair<std::byte*, uint32_t> GetUniformData(
129 const int32_t bindingSlot,
const uint32_t dataSize);
131 static std::unique_ptr<CShaderProgram> Create(
134 void UpdateActiveDescriptorSet(
135 VkCommandBuffer commandBuffer);
140 std::vector<VkPipelineShaderStageCreateInfo>
m_Stages;
141 VkPipelineLayout m_PipelineLayout = VK_NULL_HANDLE;
160 bool m_MaterialConstantsDataOutdated =
false;
170 bool m_BoundTexturesOutdated =
false;
172 VkDescriptorSetLayout m_TexturesDescriptorSetLayout = VK_NULL_HANDLE;
175 VkDescriptorSet m_ActiveTexturesDescriptorSet = VK_NULL_HANDLE;
187 #endif // INCLUDED_RENDERER_BACKEND_VULKAN_SHADERPROGRAM VkPipelineBindPoint GetPipelineBindPoint() const
Definition: ShaderProgram.h:97
uint32_t offset
Definition: ShaderProgram.h:148
const std::vector< VkPipelineShaderStageCreateInfo > & GetStages() const
Definition: ShaderProgram.h:90
std::unordered_map< VertexAttributeStream, uint32_t > m_StreamLocations
Definition: ShaderProgram.h:178
std::unordered_map< CStrIntern, uint32_t > m_TextureMapping
Definition: ShaderProgram.h:176
VertexAttributeStream
Definition: IShaderProgram.h:32
#define ENSURE(expr)
ensure the expression <expr> evaluates to non-zero.
Definition: debug.h:290
uint32_t size
Definition: ShaderProgram.h:149
std::byte * GetMaterialConstantsData() const
Definition: ShaderProgram.h:120
Interned 8-bit strings.
Definition: CStrIntern.h:37
std::unordered_map< CStrIntern, uint32_t > m_UniformMapping
Definition: ShaderProgram.h:166
std::vector< VfsPath > m_FileDependencies
Definition: ShaderProgram.h:143
void UpdateMaterialConstantsData()
Definition: ShaderProgram.h:119
VkShaderStageFlags stageFlags
Definition: ShaderProgram.h:150
std::vector< CTexture * > m_BoundTextures
Definition: ShaderProgram.h:173
std::array< std::byte, 128 > m_PushConstantData
Definition: ShaderProgram.h:161
std::vector< VkShaderModule > m_ShaderModules
Definition: ShaderProgram.h:139
std::vector< CTexture::UID > m_BoundTexturesUID
Definition: ShaderProgram.h:174
VkPipelineLayout GetPipelineLayout() const
Definition: ShaderProgram.h:96
IShaderProgram is a container for multiple shaders of different types.
Definition: IShaderProgram.h:80
Backend
Definition: Backend.h:27
Represents a mapping of name strings to value strings, for use with #if and #ifdef and similar condit...
Definition: ShaderDefines.h:146
std::array< VkShaderStageFlags, 32 > m_PushConstantDataFlags
Definition: ShaderProgram.h:163
unsigned int uint32_t
Definition: wposix_types.h:53
Definition: VideoMode.h:28
std::unique_ptr< std::byte[]> m_MaterialConstantsData
Definition: ShaderProgram.h:158
uint32_t GetMaterialConstantsDataSize() const
Definition: ShaderProgram.h:121
std::vector< Uniform > m_Uniforms
Definition: ShaderProgram.h:165
Definition: ShaderProgram.h:77
std::vector< PushConstant > m_PushConstants
Definition: ShaderProgram.h:164
CStrIntern name
Definition: ShaderProgram.h:147
std::vector< VkPipelineShaderStageCreateInfo > m_Stages
Definition: ShaderProgram.h:140
Definition: ShaderProgram.h:145
std::unordered_map< CStrIntern, uint32_t > m_PushConstantMapping
Definition: ShaderProgram.h:167
Simplifed version of std::span (C++20) as we don't support the original one yet.
Definition: Span.h:36
bool IsMaterialConstantsDataOutdated() const
Definition: ShaderProgram.h:118