Skip to content

nukkeldev/garden

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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/<lib>/*. 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

  • 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
    • 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)
  • Debugging
    • Tracy Zones / Allocation Tracking
    • Validation Layers

About

Welcome to my garden.

Topics

Resources

Stars

Watchers

Forks