Triad - Custom Renderer

Triad triangle sweep animation

Triad

I built Triad while learning about graphics programming. I originally wanted it to serve as a triangle splatting renderer to be used in some sort of autonomy stack. CUDA fits that role much better though. May repurpose Triad into a triangle splatting application at some point.

Triad Showcase Image
Goat skull PLY model in triad

Architecture

Currently the renderer uses a frame graph to order render passes and share GPU resources with a DAG. The goal is to keep passes very explicit, avoid global state, and leave room to add on compute stages.

flowchart LR
    subgraph resources[Resources]
        direction TB
        VB[Vertex Buffer]
        IB[Index Buffer]
        UB[Uniform Buffer]
        TX[Textures]
    end

    subgraph graph[Frame Graph]
        direction TB
        P1[Pass A] --> P2[Pass B]
        P2 --> P3[Pass C]
    end

    VB & IB -.-> P1
    UB -.-> P1 & P2 & P3
    TX -.-> P2
    P3 --> O[Swapchain]