32 const renderer::VulkanCore& core, vk::Format color_format, vk::Format depth_format, vk::Extent2D extent,
36 ~DebugPass()
override;
39 auto stage()
const -> RenderStage
override {
40 return RenderStage::overlay;
43 void record(vk::CommandBuffer cmd, uint32_t frame_index, uint32_t image_index)
override;
45 void update(uint32_t frame_index,
float dt)
override;
47 void setEditorPanelsEnabled(
bool enabled)
noexcept { m_editor_panels = enabled; }
50 auto name()
const -> std::string_view
override {
55 struct DrawPushConstants {
57 glm::vec4 tint {1.0f};
60 struct GizmoHandleRange {
61 uint32_t first_vertex = 0;
62 uint32_t vertex_count = 0;
63 glm::vec4 base_color {1.0f};
66 struct DynamicVertexBuffer {
67 vma::raii::Buffer buffer =
nullptr;
68 void* mapped =
nullptr;
69 vk::DeviceSize capacity_bytes = 0;
74 void initImGui(
const renderer::VulkanCore& core, vk::Format color_format, vk::Format depth_format);
82 void createBillboardResources(
83 const renderer::VulkanCore& core, vk::Format color_format, vk::Format depth_format, vk::Extent2D extent
86 auto billboardTextureSet(
const renderer::VulkanCore& core, vk::ImageView view) -> vk::DescriptorSet;
88 void ensureLineCapacity(
const renderer::VulkanCore& core, DynamicVertexBuffer& buffer,
size_t required_vertex_count);
95 std::vector<vk::raii::DescriptorSet> m_frame_descriptor_sets;
97 std::vector<DynamicVertexBuffer> m_line_vertex_buffers;
98 std::vector<uint32_t> m_line_vertex_counts;
99 std::vector<DynamicVertexBuffer> m_fill_vertex_buffers;
100 std::vector<uint32_t> m_fill_vertex_counts;
102 std::vector<uint32_t> m_fill_sort_order;
103 std::vector<float> m_fill_sort_depths;
105 vma::raii::Buffer m_gizmo_vertex_buffer =
nullptr;
106 uint32_t m_gizmo_vertex_count = 0;
108 vma::raii::Buffer m_translate_gizmo_vertex_buffer =
nullptr;
109 std::array<GizmoHandleRange, 7> m_translate_gizmo_handles;
111 vma::raii::Buffer m_rotate_gizmo_vertex_buffer =
nullptr;
112 std::array<GizmoHandleRange, 7> m_rotate_gizmo_handles;
114 vma::raii::Buffer m_scale_gizmo_vertex_buffer =
nullptr;
115 std::array<GizmoHandleRange, 7> m_scale_gizmo_handles;
117 vma::raii::Buffer m_size_gizmo_vertex_buffer =
nullptr;
118 uint32_t m_size_gizmo_vertex_count = 0;
122 struct BillboardPushConstants {
123 glm::vec4 center_size;
124 glm::vec4 tint {1.0f};
129 std::vector<vk::raii::DescriptorSet> m_billboard_frame_sets;
130 vk::raii::Sampler m_billboard_sampler =
nullptr;
131 std::unordered_map<VkImageView, vk::raii::DescriptorSet> m_billboard_texture_sets;
133 bool m_imgui_ready =
false;
134 bool m_editor_panels =
true;
136 std::unique_ptr<PerfWindow> m_perf;
138 std::unique_ptr<voxel_debug::Monitor> m_voxels;
142 float m_sky_intensity_ui = -1.0f;
144 std::array<char, 256> m_environment_uri_ui {};