nukkeldev/garden
Welcome to my garden.
2cd45c30058bb32ae9c00fd8aea2a0ab17e3e0a7
e1d31f7bfd3e2995bbb84554c5721d893c0b16da
3ed62e53aecd9ffb28e44b9d35b7c09a8739e823
0f8ea84a0da616790b476912e1ccc641f36b463e
31bd433201d12d6aa700074d751a7db4555cdb0d
abbc35793e245510a9b33288cfdc2d68a894c535
A performance-focused multi-media engine.
Unfortunately, building is not as simple as zig build
.
sh build_deps.sh
- Builds all dependencies (NRI, Slang, etc.) with complex build steps. The artifacts of these are
saved into external/<lib>/*
. The dependency sources are pulled from tools/dependency-manager
which references build_config.zon
.zig build
- Builds everything else; will detect if step 1's dependencies haven't been built and run step 1 with
default settings if so.
Basic Rendering
Vulkan via SDL3 GPU
- Will eventually convert to either full Vulkan or WebGPU
- Ideally with an RHI
Swapchain rendering
ImGui Debug Window
Shader Compilation
Online shader compilation with slang's compilation API
Offline shader compilation (invoke in build.zig)
Dedicated thread with persistent compilation session
Engine Architecture
"Objects"
Imperative Usage
ECS(?)
- Not particularly a fan of the method, will need to benchmark against imperative.
Lights (but not well)
- A non-cohesive mess of objects.
Lighting
Reflectance Models
Single color (Lights)
Flat Shading (Surface normals)
Phong (Vertex normals)
Blinn-Phong
Models
Stable ABI/API
OBJ with tinyobjloader-c
GLTF
- Will require a rework of "objects"
LODs
Static
Dynamic
Materials