🚧 This is a learning-focused renderer under construction — built with love and low-level code.
Yet another renderer engine without title. This built from the ground up using DirectX 11 and JAI — focused on lighting, performance, and GPU-driven workflows. This project serves as a personal exploration of engine architecture, graphics programming, and system-level design without relying on third-party game engines.
- 🧵 glTF Model Viewer
- Loads static glTF/glb files (geometry data)
- Custom vertex layout and GPU upload pipeline
- 💡 Forward Lighting Pass
- Directional light with Blinn-Phong highlights
- Hemispheric ambient light (simple ambient approximation)
- Per-material lighting logic in HLSL
- 🧰 2D Sprite Batching
- Dynamic batching system using indexed quads
- Ideal for UI overlays or debug rendering
- 🎨 Material System
- GPU-side
StructuredBuffer<Material>
with ID-based lookup - Per-object constant buffer contains material index and transform
- GPU-side
- ⚙️ DirectX 11 Backend
- Manually managed device, states, buffers, and draw calls
- Shader-driven rendering with clean buffer separation
This project is not yet real-time or optimized. It's a renderer under active development, intended to test core features and rendering workflows.
Current focus areas:
- Building a simple scene/instance system
- Improving GPU material lookup and buffer management
- Adding debug overlays and shader hot-reloading (planned)
I'm an aspiring graphics programmer focused on understanding the low-level foundations of rendering engines. This project reflects my hands-on approach to learning modern GPU pipelines, lighting models, and rendering techniques from scratch.
- Language: Jai
- Graphics API: DirectX 11
- Shader Language: HLSL
- Rendering: Forward pass with lighting
- Model Format: glTF 2.0 (geometry/material only)
- Build a functional forward rendering/ deferred rendering pipeline
- Showcase lighting and structured GPU material design
- Prepare a foundation for real-time rendering in the future
- Jai compiler (private beta)
- Windows OS with DirectX 11.1
- GPU supporting Direct3D Feature Level 11_0 or higher
- Terminal or shell that supports running
jai
commands
-
Install the Jai compiler
- This project requires the Jai language compiler, which is currently in closed early access.
-
Open a terminal in the project directory
-
Generate Bindings for ImGui
- This project uses Dear ImGui as the UI layer. You'll need to generate static bindings before building the engine.
- Navigate to the ImGui vendor folder:
cd vendor/imgui
- Run the following Jai commands:
jai generate.jai -- -compile jai generate.jai -- -backend_d3d11
- This will generate the necessary static library and backend-specific bindings for DirectX 11.
-
Compile the project
jai first.jai