@@ -41,33 +41,42 @@ void VulkanRenderer::setup_render_graph() {
4141 offsetof (gltf::ModelVertex, color)); // NOLINT
4242 m_gltf_vertex_buffer->upload_data (m_gltf_vertices);
4343
44+ auto *gltf_stage = m_render_graph->add <GraphicsStage>(" gltf stage" );
45+ gltf_stage->writes_to (m_back_buffer);
46+ gltf_stage->writes_to (depth_buffer);
47+ gltf_stage->reads_from (m_gltf_index_buffer);
48+ gltf_stage->reads_from (m_gltf_vertex_buffer);
49+ gltf_stage->bind_buffer (m_gltf_vertex_buffer, 0 );
50+ gltf_stage->set_clears_screen (true );
51+ gltf_stage->set_depth_options (true , true );
52+ gltf_stage->set_on_record ([&](const PhysicalStage &physical, const wrapper::CommandBuffer &cmd_buf) {
53+ // Render glTF2 models
54+ cmd_buf.bind_descriptor (m_descriptors[1 ], physical.pipeline_layout ());
55+ cmd_buf.draw_indexed (m_gltf_indices.size ());
56+ });
57+
4458 auto *main_stage = m_render_graph->add <GraphicsStage>(" main stage" );
4559 main_stage->writes_to (m_back_buffer);
4660 main_stage->writes_to (depth_buffer);
4761 main_stage->reads_from (m_octree_index_buffer);
4862 main_stage->reads_from (m_octree_vertex_buffer);
4963 main_stage->bind_buffer (m_octree_vertex_buffer, 0 );
50- main_stage->reads_from (m_gltf_index_buffer);
51- main_stage->reads_from (m_gltf_vertex_buffer);
52- main_stage->bind_buffer (m_gltf_vertex_buffer, 1 );
53- main_stage->set_clears_screen (true );
5464 main_stage->set_depth_options (true , true );
5565 main_stage->set_on_record ([&](const PhysicalStage &physical, const wrapper::CommandBuffer &cmd_buf) {
5666 // Render octrees
5767 cmd_buf.bind_descriptor (m_descriptors[0 ], physical.pipeline_layout ());
5868 cmd_buf.draw_indexed (m_octree_indices.size ());
59-
60- // Render glTF2 models
61- cmd_buf.bind_descriptor (m_descriptors[1 ], physical.pipeline_layout ());
62- cmd_buf.draw_indexed (m_gltf_indices.size ());
6369 });
6470
71+ for (const auto &shader : m_shaders) {
72+ gltf_stage->uses_shader (shader);
73+ }
6574 for (const auto &shader : m_shaders) {
6675 main_stage->uses_shader (shader);
6776 }
6877
6978 main_stage->add_descriptor_layout (m_descriptors[0 ].descriptor_set_layout ());
70- main_stage ->add_descriptor_layout (m_descriptors[1 ].descriptor_set_layout ());
79+ gltf_stage ->add_descriptor_layout (m_descriptors[1 ].descriptor_set_layout ());
7180}
7281
7382void VulkanRenderer::generate_octree_indices () {
0 commit comments