l

luma

v8deecc7library

No description provided.

0 stars0 forksUnknownupdated 5 days ago
Open repo

luma

luma is a toy renderer written in Odin and Vulkan. It has no external dependencies beyond the "vendor" libraries that ship with Odin, so it builds without any setup. It's mostly a place for me to try out rendering techniques I want to understand.

Scenes are exported from Blender via the tools/blender_export Python script, straight into a binary format the renderer reads directly.

Graphics techniques

  • GPU-driven rendering: an early pass at it. Draw data lives on the GPU, though there's no GPU frustum culling yet.

  • Rasterized visbuffer with shading in compute. This will be proven useful once there are multiple point lights to shade.

  • Frostbite BRDF shading, plus the usual essentials like normal mapping.

  • Ray traced directional hard shadows and ambient occlusion. Soft shadows and denoising will follow once motion vectors are in.

  • Physically correct bloom.

  • DDGI for global illumination, using irradiance probes. Radiance is stored as spherical harmonics, with the coefficients computed by shooting rays around each probe and integrating with Monte Carlo. Bounces accumulate over frames. Octahedral depth isn't implemented yet.

  • A sky shader baked into a cubemap. Not mine, borrowed.

Vulkan features

  • shader reloading with managed pipelines
  • bindless architecture
  • ray tracing
  • on-demand command handling

Building

You'll need the Odin compiler and the Vulkan SDK installed. With those in place:

mkdir build
odin run luma -out:build/luma
./build/luma
Package Info
Version
v8deecc7
License
Unknown
Author
@lucas-stallknecht
Type
library
Forks
0
Created
1 week ago
Updated
5 days ago
Health
maintained
has releases
has readme
has license
Activity
last 56 weeks