https://github.com/nukkeldev/garden
Welcome to my garden.
https://github.com/nukkeldev/garden
game-engine sokol zig
Last synced: 8 months ago
JSON representation
Welcome to my garden.
- Host: GitHub
- URL: https://github.com/nukkeldev/garden
- Owner: nukkeldev
- Created: 2025-05-07T01:17:58.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-10T04:19:50.000Z (about 1 year ago)
- Last Synced: 2025-06-10T05:24:54.948Z (about 1 year ago)
- Topics: game-engine, sokol, zig
- Language: Zig
- Homepage:
- Size: 57.6 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Garden
A performance-focused multi-media engine.
## Building
Unfortunately, building is not as simple as `zig build`.
1. `sh build_deps.sh` - Builds all dependencies (NRI, Slang, etc.) with complex build steps. The artifacts of these are
saved into `external//*`. The dependency sources are pulled from `tools/dependency-manager`
which references `build_config.zon`.
2. `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.
## TODO
- [x] Basic Rendering
- [x] Vulkan via SDL3 GPU
- Will eventually convert to either full Vulkan or WebGPU
- Ideally with an RHI
- [x] Swapchain rendering
- [x] ImGui Debug Window
- [ ] Shader Compilation
- [x] Online shader compilation with slang's compilation API
- [ ] Offline shader compilation (invoke in build.zig)
- [ ] Dedicated thread with persistent compilation session
- [ ] Engine Architecture
- [x] "Objects"
- [x] Imperative Usage
- [ ] ECS(?)
- Not particularly a fan of the method, will need to benchmark against imperative.
- [x] Lights (but not well)
- A non-cohesive mess of objects.
- [ ] Lighting
- [ ] Reflectance Models
- [x] Single color (Lights)
- [x] Flat Shading (Surface normals)
- [x] Phong (Vertex normals)
- [ ] Blinn-Phong
- [ ] Models
- [ ] Stable ABI/API
- [ ] OBJ with `tinyobjloader-c`
- [ ] GLTF
- Will require a rework of "objects"
- [ ] LODs
- [ ] Static
- [ ] Dynamic
- [ ] Materials
- Per OBJ Material Descriptions
- [x] Ambient
- [x] Color
- [ ] Map/Texture
- [x] Diffuse
- [x] Color
- [x] Map/Texture
- [x] Specular
- [x] Color
- [ ] Map/Texture
- [x] Highlight/Exponent/Shininess
- [ ] Map/Texture
- [ ] Transmittance
- [ ] Emission
- [ ] IOR
- [ ] Dissolve
- [ ] Illum
- [ ] Bump Map
- [ ] Displacement Map
- [ ] Alpha Map
- [ ] Textures
- [x] Online
- [ ] Offline
- [ ] Some textures are appearing on the back of meshes when they are shown on both sides in blender.
- [ ] Streaming
- [ ] Binary Resource Cache
- Can be loaded with runtime-loaded and embedded data.
- [ ] Post-processing
- [ ] HDR
- [ ] Bloom
- [ ] AA
- [ ] Gamma Correction
- [ ] Skybox
- [ ] Environment Lighting
- [ ] Scene
- [ ] Frustum culling (AABB/Compute)
- [ ] BVH
- [ ] Audio
- [ ] Mono/Stereo
- [ ] Spatial
- [ ] Physics
- [ ] Assets
- [ ] Offline Compression
- [ ] Streaming
- [ ] Multi-threading
- [ ] Hot-reloading
- [x] Shader recompilation
- [ ] Needs caching
- [ ] Models
- [ ] Lights
- [ ] Perhaps a better scene description format (OpenUSD)
- [ ] Debugging
- [x] Tracy Zones / Allocation Tracking
- [ ] Validation Layers