Ilum Graphics Playground, name after Planet Ilum from [Star Wars](
- Windows 10
- Visual Studio 2022
- C++17
- CMake 3.14+
Run script build.bat
NVIDIA Turing GPUs (GeForce RTX 30/20 Series, GeForce GTX 16 Series) are the best, due to supporting for
- Mesh Shader
- Ray Tracing Pipeline
- GPU Acceleration Structure
- Descriptor Indexing
-
Architecture
- Render Dependency Graph
- Customize Render Pass (Graphics, Compute, Ray Tracing)
- Render Pass Visualization
- Auto Resource Transition
- Runtime Shader Compilation and Reflection
- GLSL ->
glslang
-> SPIR-V - HLSL ->
DXC
-> SPIR-V - SPIR-V ->
spirv-cross
-> Reflection Info
- GLSL ->
- Entity Component System
- Asynchronous Resource Loading
- Scene Serialization
- Render Dependency Graph
-
Rendering
-
Mesh Shading Pipeline
- Meshlet Rendering
- GPU Frustum Culling
- GPU Back-Face Cone Culling
- Bindless Texture
- GPU Hierarchy Z Buffer Occlusion Culling (Deprecated)
-
Deferred Shading
GBuffer Format R G B A 0
RGBA8U
Albedo.r
Albedo.g
Albedo.b
Metallic
1
RGBA16F
Normal.x
Normal.y
Normal.z
Linear Depth
2
RGBA8U
Emissive.r
Emissive.g
Emissive.b
Roughness
3
RGBA16F
Entity ID
Instance ID
Motion Vector.x
Motion Vector.y
-
Material
- For Real Time
- Lambert Diffuse BRDF
- Lambertian Reflection
- Matte BRDF
- Oren Nayar Reflection
- Lambertian Reflection
- Disney Principle BRDF
- Kulla-Conty Approximation for Multi-Bounce Correction
- Lambert Diffuse BRDF
- For Offline
- Matte BRDF
- Oren Nayar Reflection
- Lambertian Reflection
- Plastic BRDF
- Microfacet Reflection
- Lambertian Reflection
- Metal BRDF
- Microfacet Reflection
- Mirror BRDF
- Specular Reflection
- Glass BSDF
- Fresnel Specular
- Microfacet Reflection
- Microfacet Transmission
- Disney Principle BSDF
- Disney Diffuse
- Disney Fake Subsurface Scattering
- Specular Transmission
- Disney Retro
- Disney Sheen
- Disney Clearcoat
- Microfacet Reflection
- Microfacet Transmission
- Lambertian Transmission
- Matte BRDF
- For Real Time
-
Image Based Lighting
- Diffuse Term: Spherical Harmonics Projection
- Specular Term: Split Sum Method
-
Shadow Mapping
- Spot Light: Shadow Map
- Directional Light: Cascade Shadow Map
- Point Light: Omnidirectional Shadow Map
-
Soft Shadow
- Percentage Closer Filtering (PCF)
- Percentage Closer Soft Shadows (PCSS)
-
Anti-Aliasing
- Fast approximate Anti-Aliasing (FXAA)
-
Path Tracing
- Next Event Estimation
- Light Source & BSDF Importance Sampling
- Multi Importance Sampling
- Russian Roulette
-
-
Geometry
- Curve Modeling
- Bézier Curve
- Cubic Spline Curve
- B Spline Curve
- Rational Bézier Curve
- Rational B Spline Curve
- Tensor Product Surface Modeling
- Bézier Surface
- B Spline Surface
- Rational Bézier Surface
- Rational B Spline Surface
- Triangle Mesh Processing
- Data Structure
- Face Based Mesh
- Edge Based Mesh
- Half-Edge Mesh
- Subdivision
- Loop Subdivision
- Data Structure
- Curve Modeling
Render Pass Visualization
Mesh Shading
Hierarchy Z Buffer Generation
Deferred Shading
GBuffer0 | GBuffer1 | GBuffer2 | Result |
---|---|---|---|
Shadow Map(Spot Light Shadow)
Cascade Shadow Map(Directional Light Shadow)
Omnidirectional Shadow Map(Point Light Shadow)
Percentage Closer Filtering
PCF OFF | Uniform Sampling | Poisson Sampling |
---|---|---|
Percentage Closer Soft Shadows
PCSS OFF | Uniform Sampling | Poisson Sampling |
---|---|---|
Image Based Lighting
Spherical Harmonic Projection
Split Sum
Roughness=0.8 | Roughness=0.6 | Roughness=0.4 | Roughness=0.2 | Roughness=0.0 |
---|---|---|---|---|
Path Tracing (Render in 1000 SPP)
Matte | Metal | Plastic | Mirror |
---|---|---|---|
Substrate | Glass | Disney |
---|---|---|
Bloom
Bloom OFF | Bloom ON |
---|---|
Fast Approximate Anti-Aliasing (FXAA)
FXAA OFF | FXAA ON |
---|---|
Curve Modeling
Surface Modeling
Loop Subdivision
Origin | Iteration #1 | Iteration #2 | Iteration #3 | Iteration #4 |
---|---|---|---|---|
Minimum Surface
Origin | Minimum Surface |
---|---|
Tutte Parameterization
Origin Mesh
UV Visualization | Parameterization Visualization | |
---|---|---|
Circle Boundary + Uniform Weight | ||
Rectangle Boundary + Uniform Weight | ||
Circle Boundary + Cotangent Weight | ||
Rectangle Boundary + Cotangent Weight |
- ImFileDialog
- ImGuizmo
- assimp
- cereal
- DirectXCompiler
- eigen
- entt
- glm
- glslang
- imgui
- imgui-node-editor
- stb
- VulkanMemoryAllocator
- volk
- Vulkan-Headers
- oneTBB
- meshoptimizer
- spdlog
- SDL
- SPIRV-Cross
- https://www.pbr-book.org/
- http://www.realtimerendering.com/
- https://learnopengl-cn.github.io/
- https://hazelengine.com/
- https://advances.realtimerendering.com/s2015/aaltonenhaar_siggraph2015_combined_final_footer_220dpi.pdf
- https://www.gdcvault.com/play/1024612/FrameGraph-Extensible-Rendering-Architecture-in
- https://github.com/SaschaWillems/Vulkan
- https://github.com/KhronosGroup/Vulkan-Samples
- https://github.com/wdas/brdf
- http://blog.selfshadow.com/publications/s2015-shading-course/burley/s2015_pbs_disney_bsdf_notes.pdf.
- https://www.froyok.fr/blog/2021-12-ue4-custom-bloom/