29 void set_geometry_shader(
const std::string& geometry_path);
30 void set_tess_control_shader(
const std::string& tess_control_path);
31 void set_tess_eval_shader(
const std::string& tess_eval_path);
32 void set_fragment_shader(
const std::string& fragment_path);
33 void set_target_window(
const std::shared_ptr<Core::Window>& window,
const std::shared_ptr<VKBuffer>& buffer);
37 void on_attach(
const std::shared_ptr<Buffer>& buffer)
override;
42 m_primitive_topology = topology;
43 m_needs_pipeline_rebuild =
true;
49 m_polygon_mode = mode;
50 m_needs_pipeline_rebuild =
true;
57 m_needs_pipeline_rebuild =
true;
68 const std::shared_ptr<Core::VKImage>& texture,
69 vk::Sampler sampler =
nullptr);
78 const std::string& descriptor_name,
79 const std::shared_ptr<Core::VKImage>& texture,
80 vk::Sampler sampler =
nullptr);
85 bool is_pipeline_ready()
const {
return m_pipeline_id != Portal::Graphics::INVALID_RENDER_PIPELINE; }
98 void set_vertex_range(uint32_t first_vertex, uint32_t vertex_count);
109 void set_buffer_vertex_layout(
110 const std::shared_ptr<VKBuffer>& buffer,
119 m_blend_attachment = config;
120 m_needs_pipeline_rebuild =
true;
124 void enable_alpha_blending();
154 void initialize_pipeline(
const std::shared_ptr<VKBuffer>& buffer)
override;
155 void execute_shader(
const std::shared_ptr<VKBuffer>& buffer)
override;
156 void initialize_descriptors(
const std::shared_ptr<VKBuffer>& buffer)
override;
160 void cleanup()
override;
165 bool use_reflection {};
192 bool m_depth_enabled {};
193 uint32_t m_first_vertex { 0 };
194 uint32_t m_vertex_count { 0 };
200 std::unordered_map<std::shared_ptr<VKBuffer>,
VertexInfo>& buffer_info,
201 const std::shared_ptr<VKBuffer>& buffer);
std::shared_ptr< Core::VKImage > texture