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 intoexternal/<lib>/*. The dependency sources are pulled fromtools/dependency-managerwhich referencesbuild_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
- Will eventually convert to either full Vulkan or WebGPU
- Swapchain rendering
- ImGui Debug Window
- Vulkan via SDL3 GPU
- 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.
- "Objects"
- Lighting
- Reflectance Models
- Single color (Lights)
- Flat Shading (Surface normals)
- Phong (Vertex normals)
- Blinn-Phong
- Reflectance Models
- Models
- Stable ABI/API
- OBJ with
tinyobjloader-c - GLTF
- Will require a rework of "objects"
- LODs
- Static
- Dynamic
- Materials
- Per OBJ Material Descriptions
- Ambient
- Color
- Map/Texture
- Diffuse
- Color
- Map/Texture
- Specular
- Color
- Map/Texture
- Highlight/Exponent/Shininess
- Map/Texture
- Transmittance
- Emission
- IOR
- Dissolve
- Illum
- Bump Map
- Displacement Map
- Alpha Map
- Textures
- 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
- Shader recompilation
- Needs caching
- Models
- Lights
- Perhaps a better scene description format (OpenUSD)
- Shader recompilation
- Debugging
- Tracy Zones / Allocation Tracking
- Validation Layers