20#include "shaderc/shaderc.hpp"
33 VkDescriptorSetLayout vk_descriptor_set_layout_ = VK_NULL_HANDLE;
40 VkPipeline vk_pipeline_base_ = VK_NULL_HANDLE;
42 bool is_compute_shader_ =
false;
43 bool is_static_shader_ =
false;
44 bool use_batch_compilation_ =
false;
82 void uniform_float(
int location,
int comp_len,
int array_size,
const float *
data)
override;
83 void uniform_int(
int location,
int comp_len,
int array_size,
const int *
data)
override;
109 return vk_descriptor_set_layout_ != VK_NULL_HANDLE;
114 return vk_descriptor_set_layout_;
119 shaderc_shader_kind stage,
121 bool finalize_shader_module(
VKShaderModule &shader_module,
const char *stage_name);
122 bool finalize_descriptor_set_layouts(
VKDevice &vk_device,
BMesh const char void * data
VKShaderModule compute_module
std::string fragment_interface_declare(const shader::ShaderCreateInfo &info) const override
bool compilation_finished
VkPipeline ensure_and_get_graphics_pipeline(GPUPrimType primitive, VKVertexAttributeObject &vao, VKStateManager &state_manager, VKFrameBuffer &framebuffer, shader::SpecializationConstants &constants_state)
void geometry_shader_from_glsl(MutableSpan< StringRefNull > sources) override
VkPipeline ensure_and_get_compute_pipeline(const shader::SpecializationConstants &constants_state)
VKShaderModule fragment_module
void vertex_shader_from_glsl(MutableSpan< StringRefNull > sources) override
std::string geometry_interface_declare(const shader::ShaderCreateInfo &info) const override
void warm_cache(int limit) override
VKPushConstants push_constants
void compute_shader_from_glsl(MutableSpan< StringRefNull > sources) override
std::string resources_declare(const shader::ShaderCreateInfo &info) const override
std::string compute_layout_declare(const shader::ShaderCreateInfo &info) const override
bool has_descriptor_set() const
VkPipelineLayout vk_pipeline_layout
void uniform_int(int location, int comp_len, int array_size, const int *data) override
void fragment_shader_from_glsl(MutableSpan< StringRefNull > sources) override
VKShader(const char *name)
VKShaderModule vertex_module
void bind(const shader::SpecializationConstants *constants_state) override
VKShaderModule geometry_module
std::string geometry_layout_declare(const shader::ShaderCreateInfo &info) const override
void uniform_float(int location, int comp_len, int array_size, const float *data) override
const VKShaderInterface & interface_get() const
VkDescriptorSetLayout vk_descriptor_set_layout_get() const
bool finalize(const shader::ShaderCreateInfo *info=nullptr) override
std::string vertex_interface_declare(const shader::ShaderCreateInfo &info) const override
static Context * unwrap(GPUContext *ctx)
Describe inputs & outputs, stage interfaces, resources and sources of a shader. If all data is correc...