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
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
-
Vulkan
- Mesh Shading
- Dynamic Rendering
- Ray Tracing Pipeline
- Draw/Dispatch Indirect
- Bindless Resource
-
CUDA
- CUDA & Vulkan Interop
- 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
- Mesh shading with meshlet frustum culling (if device support
-
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
Feature
- Static compilation and HLSL generation
- Easy to customize material node
- Support usual BSDF models
You can extend the renderer features by adding these plugins:
- RHI
- Render Pass
- Material Node
- Importer
- Editor