Class VulkanMaterial

Nested Relationships

Nested Types

Inheritance Relationships

Base Type

Class Documentation

class VulkanMaterial : public portal::renderer::Material

Vulkan material with descriptor set management and uniform storage.

Manages shader parameter binding through descriptor sets and uniform buffers. Automatically maps shader uniforms to CPU storage and GPU descriptors.

Public Functions

VulkanMaterial(const MaterialProperties &properties, const VulkanContext &context)

Constructs Vulkan material.

Parameters:
~VulkanMaterial() override
void set_pipeline(const Reference<VulkanPipeline> &new_pipeline)

Sets rendering pipeline.

Parameters:

new_pipeline – Vulkan pipeline

Reference<VulkanPipeline> get_pipeline() const

Gets rendering pipeline.

virtual void set(StringId bind_point, const ResourceReference<Texture> &texture) override

Binds texture (resource reference)

virtual void set(StringId bind_point, const Reference<Texture> &texture) override

Binds texture.

virtual void set(StringId bind_point, const Reference<Image> &image) override

Binds image.

virtual void set(StringId bind_point, const Reference<ImageView> &image) override

Binds image view.

virtual Reference<Texture> get_texture(StringId bind_point) override

Gets bound texture.

virtual Reference<Image> get_image(StringId bind_point) override

Gets bound image.

virtual Reference<ImageView> get_image_view(StringId bind_point) override

Gets bound image view.

virtual Reference<ShaderVariant> get_shader() override

Gets material shader.

vk::DescriptorSet get_descriptor_set(size_t index) const

Gets descriptor set at index.

Parameters:

index – Descriptor set index

Returns:

Vulkan descriptor set

bool operator==(const VulkanMaterial &other) const

Equality comparison.

template<typename T>
inline void set(const StringId bind_point, const T &t)

Binds scalar uniform (int, float, etc.)

Template Parameters:

T – Scalar type

Parameters:
  • bind_point – Uniform name

  • t – Value to bind

template<reflection::IsVec T>
inline void set(const StringId bind_point, const T &t)

Binds vector uniform (vec2, vec3, vec4)

Template Parameters:

T – Vector type

Parameters:
  • bind_point – Uniform name

  • t – Value to bind

template<reflection::IsMatrix T>
inline void set(const StringId bind_point, const T &t)

Binds matrix uniform (mat2, mat3, mat4)

Template Parameters:

T – Matrix type

Parameters:
  • bind_point – Uniform name

  • t – Value to bind

virtual void set(StringId bind_point, const ResourceReference<Texture> &texture) = 0

Binds texture (resource reference)

virtual void set(StringId bind_point, const Reference<Texture> &texture) = 0

Binds texture.

virtual void set(StringId bind_point, const Reference<Image> &image) = 0

Binds image.

virtual void set(StringId bind_point, const Reference<ImageView> &image) = 0

Binds image view.

template<typename T>
inline T &get(const StringId bind_point)

Gets scalar uniform value.

Template Parameters:

T – Scalar type

Parameters:

bind_point – Uniform name

Returns:

Reference to uniform value

template<reflection::IsVec T>
inline T &get(const StringId bind_point)

Gets vector uniform value.

Template Parameters:

T – Vector type

Parameters:

bind_point – Uniform name

Returns:

Reference to uniform value

template<reflection::IsMatrix T>
inline T &get(const StringId bind_point)

Gets matrix uniform value.

Template Parameters:

T – Matrix type

Parameters:

bind_point – Uniform name

Returns:

Reference to uniform value

Protected Functions

virtual void set_property(StringId bind_point, const reflection::Property &property) override

Sets property by reflection.

virtual bool get_property(StringId bind_point, reflection::Property &property) const override

Gets property by reflection.

struct UniformPointer

Maps bind point to shader uniform location.

Public Members

StringId bind_point
StringId buffer_name
shader_reflection::Uniform uniform