/Ilum

Ilum graphics playground for learning

Primary LanguageC++MIT LicenseMIT

Ilum(WIP)

Windows Codacy Badge

Ilum Graphics Playground, name after Planet Ilum from star wars.

A framework for computer graphics learning and practice (It's not a game engine!)
bilibili: Project demo video

image-20230212023548756

Install

Platform

  • Windows 10
  • Visual Studio 2022
  • xmake >= v2.7.5
  • [optional] CUDA >= 11.7

Build

Ilum uses xmake for building. You can compile the whole project by simply run command:

xmake -y

or you can open the project in Visual Studio by generating .sln file:

xmake project -k vsxmake

Feature

Cross-Platform RHI

  • Vulkan

    • Mesh Shading
    • Dynamic Rendering
    • Ray Tracing Pipeline
    • Draw/Dispatch Indirect
    • Bindless Resource
  • CUDA

    • CUDA & Vulkan Interop

Resource Manager

Scene Graph

Shader Compilation

shader

Render Graph

  • Static compilation
  • Automatic resource state tracking and transition
  • Texture memory aliasing
  • Seamless interoperation between Graphics API and CUDA
  • Easy to customize render pass

Render Pass

  • Visibility Deferred Shading Pipeline

    • Visibility Geometry Pass

      • Mesh shading with meshlet frustum culling (if device support mesh_shader)
      • Usual rasterization without optimization
    • Visibility Buffer Visualization

      • Visualize visibility buffer: instance and primitive
    • Visibility Buffer Lighting Pass

      • Indirect dispatch to support multiple material graphs
      • Generate lighting result and GBuffer
  • Shadow

    • Classic Shadow Map (Spot Light)
    • Omnidirectional Shadow Map (Point Light)
    • Cascade Shadow Map (Directional Light)
  • Ambient Occlusion

    • SSAO
  • IBL

    • Spherical Harmonic Encoding Diffuse
    • Pre-Filter For Specular
  • Ray Tracing

    • Path Tracing
  • Post Process

    • Tone Mapping
    • Bloom
    • FXAA

TODO

  • Resource Pool
  • Runtime compilation maybe
  • Multi-threading

Material Graph

Feature

  • Static compilation and HLSL generation
  • Easy to customize material node
  • Support usual BSDF models

Plugins

You can extend the renderer features by adding these plugins:

  • RHI
  • Render Pass
  • Material Node
  • Importer
  • Editor

Customize Render Pass

Customize Material Node

Gallery

Render Graph Editor

image-20230210193225994

Material Graph Editor

image-20230210194028080

Path Tracing

Reference