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.
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]