Salle de bain by nacimus, rendered with Moonshine
- Binaries
- offline -- a headless offline renderer
- online -- a real-time windowed renderer, interactive features WIP
- Light Transport
- Global Illumination
- Direct light sampling with multiple importance sampling for all lights and materials
- Lights
- 360° environment maps
- Emissive meshes
- Materials
- Standard PBR with metallic + roughness
- Mirror
- Glass
- zig
0.12.0-dev.168+a31748b29
- DirectXShaderCompiler
- For the online (real-time) renderer:
- For Linux (Ubuntu, similar on others):
- For Wayland:
wayland-protocols
libwayland-dev
libxkbcommon-dev
- For X11:
libxcursor-dev
libxrandr-dev
libxinerama-dev
libxi-dev
- For Wayland:
- Should work on Windows without more dependencies
- For Linux (Ubuntu, similar on others):
- A GPU supporting Vulkan ray tracing
- Feature
- Bloom
- Tonemapping
- HDR display
- More camera models
- Orthographic
- Materials
- Metal
- Rough metal
- Rough glass
- Plastic
- Rough plastic
- Mix
- Layer
- Code
- Make sure we have all necessary
errdefer
s - Proper memory allocation interface
- Reduce unnecessary copying
- Make sure we have all necessary
- Asset system
- Currently, one can either construct a scene manually with code or very inefficiently import glb
- Ideal would be to have custom scene description format that can be quickly deserialzed
- An Blender export addon for this format, so other formats don't need to be supported in engine directly
- I think this custom format would make destinctions between scene stuff and staging stuff. It would only contain actual information about the world, but not stuff like camera position, that would be separate
- Light system
- Currently, only support skybox and mesh lights, which I think makes sense
- Both explicitly sampled using the alias method built on CPU
- But we'd like to have more dynamic meshes, which means we should mesh sampling build sampling stuff on GPU
- Not sure about proper route -- build inversion sampler on GPU in compute?
- Currently, only support skybox and mesh lights, which I think makes sense
- Memory management
- A lot of unncessary copying in scene construction at the moment
- Filesystem to RAM
- RAM to staging buffer
- Staging buffer to GPU
- Ideally this can be vastly minimized, depending on hardware
- At most should be doing filesystem to staging buffer
- On some machines, can do filesystem to GPU directly
- A lot of unncessary copying in scene construction at the moment
- Destruction queue needs work
+z
is up- phi is azimuthal angle (0-2pi) and theta is polar angle (0-pi)
- Importance sampling
- Explicit light sampling
- Multiple importance sampling
- Microfacets
- Actual materials - ton of BRDF examples, in CODE!
- Better sky
This project is licensed under the AGPL.