{"id":28565407,"url":"https://github.com/nukkeldev/garden","last_synced_at":"2025-10-13T09:47:39.443Z","repository":{"id":291916158,"uuid":"979085222","full_name":"nukkeldev/garden","owner":"nukkeldev","description":"Welcome to my garden.","archived":false,"fork":false,"pushed_at":"2025-06-10T04:19:50.000Z","size":59,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-10T05:24:54.948Z","etag":null,"topics":["game-engine","sokol","zig"],"latest_commit_sha":null,"homepage":"","language":"Zig","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nukkeldev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-07T01:17:58.000Z","updated_at":"2025-06-10T04:19:54.000Z","dependencies_parsed_at":"2025-06-10T05:35:32.660Z","dependency_job_id":null,"html_url":"https://github.com/nukkeldev/garden","commit_stats":null,"previous_names":["nukkeldev/game-engine","nukkeldev/garden"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nukkeldev%2Fgarden","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nukkeldev%2Fgarden/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nukkeldev%2Fgarden/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nukkeldev%2Fgarden/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nukkeldev","download_url":"https://codeload.github.com/nukkeldev/garden/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nukkeldev%2Fgarden/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259090425,"owners_count":22803678,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["game-engine","sokol","zig"],"created_at":"2025-06-10T14:15:32.740Z","updated_at":"2025-10-13T09:47:39.438Z","avatar_url":"https://github.com/nukkeldev.png","language":"Zig","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Garden\r\n\r\nA performance-focused multi-media engine.\r\n\r\n## Building\r\n\r\nUnfortunately, building is not as simple as `zig build`.\r\n\r\n1. `sh build_deps.sh` - Builds all dependencies (NRI, Slang, etc.) with complex build steps. The artifacts of these are\r\n                        saved into `external/\u003clib\u003e/*`. The dependency sources are pulled from `tools/dependency-manager` \r\n                        which references `build_config.zon`.\r\n2. `zig build` - Builds everything else; will detect if step 1's dependencies haven't been built and run step 1 with\r\n                 default settings if so.\r\n\r\n## TODO\r\n\r\n- [x] Basic Rendering\r\n  - [x] Vulkan via SDL3 GPU\r\n    - Will eventually convert to either full Vulkan or WebGPU\r\n      - Ideally with an RHI\r\n  - [x] Swapchain rendering\r\n  - [x] ImGui Debug Window \r\n- [ ] Shader Compilation\r\n  - [x] Online shader compilation with slang's compilation API\r\n  - [ ] Offline shader compilation (invoke in build.zig)\r\n  - [ ] Dedicated thread with persistent compilation session\r\n- [ ] Engine Architecture\r\n  - [x] \"Objects\"\r\n    - [x] Imperative Usage\r\n    - [ ] ECS(?)\r\n      - Not particularly a fan of the method, will need to benchmark against imperative. \r\n  - [x] Lights (but not well)\r\n    - A non-cohesive mess of objects.\r\n- [ ] Lighting\r\n  - [ ] Reflectance Models\r\n    - [x] Single color (Lights)\r\n    - [x] Flat Shading (Surface normals)\r\n    - [x] Phong (Vertex normals)\r\n    - [ ] Blinn-Phong\r\n- [ ] Models\r\n  - [ ] Stable ABI/API\r\n  - [ ] OBJ with `tinyobjloader-c`\r\n  - [ ] GLTF\r\n    - Will require a rework of \"objects\"\r\n  - [ ] LODs\r\n    - [ ] Static\r\n    - [ ] Dynamic\r\n- [ ] Materials\r\n  - Per OBJ Material Descriptions\r\n  - [x] Ambient\r\n    - [x] Color\r\n    - [ ] Map/Texture\r\n  - [x] Diffuse\r\n    - [x] Color\r\n    - [x] Map/Texture\r\n  - [x] Specular\r\n    - [x] Color\r\n    - [ ] Map/Texture\r\n    - [x] Highlight/Exponent/Shininess\r\n      - [ ] Map/Texture\r\n  - [ ] Transmittance\r\n  - [ ] Emission\r\n  - [ ] IOR\r\n  - [ ] Dissolve\r\n  - [ ] Illum\r\n  - [ ] Bump Map\r\n  - [ ] Displacement Map\r\n  - [ ] Alpha Map\r\n  - [ ] Textures\r\n    - [x] Online\r\n    - [ ] Offline\r\n    - [ ] Some textures are appearing on the back of meshes when they are shown on both sides in blender.\r\n    - [ ] Streaming\r\n- [ ] Binary Resource Cache\r\n  - Can be loaded with runtime-loaded and embedded data.\r\n- [ ] Post-processing\r\n  - [ ] HDR\r\n  - [ ] Bloom\r\n  - [ ] AA\r\n  - [ ] Gamma Correction\r\n- [ ] Skybox\r\n  - [ ] Environment Lighting\r\n- [ ] Scene\r\n  - [ ] Frustum culling (AABB/Compute)\r\n  - [ ] BVH\r\n- [ ] Audio\r\n  - [ ] Mono/Stereo\r\n  - [ ] Spatial\r\n- [ ] Physics\r\n- [ ] Assets\r\n  - [ ] Offline Compression\r\n  - [ ] Streaming\r\n  - [ ] Multi-threading\r\n- [ ] Hot-reloading\r\n  - [x] Shader recompilation\r\n    - [ ] Needs caching\r\n  - [ ] Models\r\n  - [ ] Lights\r\n  - [ ] Perhaps a better scene description format (OpenUSD)\r\n- [ ] Debugging\r\n  - [x] Tracy Zones / Allocation Tracking\r\n  - [ ] Validation Layers","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnukkeldev%2Fgarden","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnukkeldev%2Fgarden","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnukkeldev%2Fgarden/lists"}