imgui.cpp

cross platform rendering playground

src/passes/imgui/imgui.cpp

1009 B
#include "imgui.h"

#include "passes/fg.h"
#include "pipelines.h"
#include "shaders/renderer_types.h"

namespace imgui_pass {

void record(
    rhi::Device &device, Pipelines &pipelines, rhi::ShaderCompiler &sc, FrameGraph &fg, rhi::ImageFormat output_format
) {
    rhi::RenderPipelineDesc pd;
    pd.device = &device;
    pd.set_shaders(sc, "src/passes/imgui/imgui.slang", "vsMain", "fsMain");
    pd.add_vertex_binding(0, VERTEX_STRIDE, false);
    pd.add_vertex_attribute(0, 0, rhi::ImageFormat::RG32_FLOAT, 0);
    pd.add_vertex_attribute(1, 0, rhi::ImageFormat::RG32_FLOAT, 8);
    pd.add_vertex_attribute(2, 0, rhi::ImageFormat::RGBA8_UNORM, 16);
    pd.set_input_topology(rhi::PipelineTopology::TRIANGLES);
    pd.set_depth_testing(false, false, rhi::PipelineCompareOp::ALWAYS);
    pd.set_blending();
    pd.set_cull_mode(rhi::PipelineCullMode::NONE, rhi::PipelineTriangleWindingOrder::CCW);
    pd.set_color_format(output_format);
    pipelines.add_render("ImGui", pd);
}

} // namespace imgui_pass