Vibe-coded toy renderer.
VCTR is a compact renderer playground built to explore how far an AI coding agent can collaborate on real-time graphics work: project setup, API abstraction, rendering features, debugging, and iteration inside a Visual Studio/CMake workflow. The codebase is intentionally small enough to move quickly, but structured like the beginning of a real engine so each milestone exercises practical engineering decisions rather than isolated demos.
The renderer currently targets D3D12 and Vulkan through a deliberately thin RHI layer, with glTF loading, ImGui tooling, camera controls, and a growing path toward deferred PBR rendering.
Milestone 8: Runtime render API switching and geometry parity between D3D12 and Vulkan.
The Vulkan backend currently creates a Vulkan instance/device, Win32 surface, swapchain, render pass, framebuffers, synchronization, graphics pipeline, depth buffer, uniform/texture descriptors, ImGui overlay, and the same triangle/cube/glTF Duck scene controls as D3D12.
assets/Duck/Duck.glb is from the Khronos glTF Sample Models repository.
Open this folder in Visual Studio 2022 and select the x64-debug CMake preset, or build from a Developer PowerShell:
cmake --preset x64-debug
cmake --build --preset x64-debugRuntime validation is opt-in per backend:
VCTR.exe --d3d12-debug
VCTR.exe --vulkan-validation
VCTR.exe --d3d12-debug --vulkan-validation
VCTR.exe --backend=vulkan --vulkan-validation--d3d12-debug enables the D3D12/DXGI debug layer when the D3D12 backend is active. --vulkan-validation enables VK_LAYER_KHRONOS_validation and a Vulkan debug messenger when the Vulkan backend is active; messages are written to the Visual Studio Output window and vulkan-validation.log. --backend=d3d12 or --backend=vulkan selects the startup renderer.
- Win32 window and app loop
- D3D12-backed RHI skeleton
- Swapchain and clear-screen frame
- ImGui overlay
- Basic geometry
- glTF loading
- Deferred shading
- Direct-light PBR