**The Narumi Renderer**
![An exotic car with ~2 million triangles and a variety of materials such as body panel, glass
windshield, and tire/rim. Simple Reinhard tone mapping applied.](images/gallery/pngs/fancy-car-unified.png)
The Narumi renderer is an offline physically based renderer for research and self-education purpose. Narumi was created
almost completely from scratch (except for the building blocks of asset loading). Currently it covers a relatively basic
set of features. However, once the foundation has been laid, I should be ready to implement a lot of more advanced
techniques. Integration with the recent real-time raytracing technologies is also on the roadmap.
Current Feature Set
- Bounding volume hierarchy (BVH): Hierarchical Linear BVH and binned-SAH BVH.
- Quasi Monte Carlo samplers.
- Direct lighting integrator.
- Incremental path tracing integrator with Russian roulette.
- Bidirectional path tracing integrator (with multiple importance sampling).
- Volumetric path tracing integrator.
- Area lights (polygonal mesh) and punctual lights.
- Image-based lighting.
- Basic matte, mirror (specular reflection) and glass (specular transmission) material.
- Microfacet-based material (GGX), both reflection and transmission. Importance sampling based on visible NDF
- Unified material model based on the Disney 2015 BSDF.
- Texturing with ray differential anti-aliasing; Bump mapping.
- Homogeneous participant media with common phase functions (isotropic / Henyey-Greenstein).
- Subsurface scattering support based on photon beam diffusion.
- Object instancing.
- CPU parallelization via multithreading.
- Custom scene representation to define everything including integrator, camera, geometry, lighting, and material.
Conversion between source asset and custom representation is provided.
- [Notes on the implementation of the unified material model.](blog-unified-material.html)
- [Subsurface scattering implementation in Narumi.](blog-sss.html)
Above and below are some images rendered by Narumi demonstrating different features. Hopefully the gallery will keep growing ;)
- More advanced integrators such as VCM and MLT (Multiplexed MLT).
- More advanced material such as:
- Specular microstructure, such as Yan, Ling-Qi, et al. "Position-normal distributions for efficient
rendering of specular microstructure."
- Multiple-scattering material, such as Heitz, Eric, et al. "Multiple-scattering microfacet BSDFs with the
- Layered material, such as Belcour Laurent, "Efficient Rendering of Layered Materials using an Atomic
Decomposition with Statistical Operators".
- More (heterogeneous) participant media. Possibly OpenVDB integration.
- More subsurface scattering, such as pathtraced subsurface scattering, and Frisvad, Jeppe Revall,
Toshiya Hachisuka, and Thomas Kim Kjeldsen. "Directional dipole model for subsurface scattering."
- Sorted raytracing / deferred shading.
- Subdivision and displacement map.
- Adaptive sampling.
- Monte Carlo denoising, such as Schied, Christoph, et al. "Spatiotemporal variance-guided filtering:
real-time reconstruction for path-traced global illumination."
- Real-time ray-tracing (Direct 12 DXR / Nvidia RTX).
- Testing "knob" modified from .
- Textures from FreePBR ().
- HDR Environment maps from .
- Cornell box, bunny, sculpture head modified from McGuire Computer Graphics Archive ().
- Exotic car purchased from Turbosquid.
|![A marble sculpture head featuring subsurface scattering ([See more](blog-sss.html))](images/gallery/serapis-sss/pngs/serapis-sss-50.png)
||![Glass bunnies filled with different media. Left/middle/right: forward/isotropic/back-scattering](images/gallery/pngs/3bunny.png)
|![Foggy Cornell Box](images/gallery/pngs/cornell-box-vol.png)
||![A grid of instanced knobs rendered with shallow depth of field](images/gallery/pngs/moriknob-array.png)
|![White matte surface](images/gallery/pngs/moriknob-matte.png)
|![Perfect mirror surface](images/gallery/pngs/moriknob-mirror.png)
||![Glass outside and perfect mirror inside](images/gallery/pngs/moriknob-glass.png)
|![Rusted iron surface with mixed roughness and metalness](images/gallery/pngs/moriknob-rustediron.png)
||![Streaked rough metal surface](images/gallery/pngs/moriknob-streakedmetal.png)
|![Anisotropic brushed metal surface (in U direction)](images/gallery/pngs/moriknob-brushedmetal1.png)
||![Anisotropic brushed metal surface (in V direction)](images/gallery/pngs/moriknob-brushedmetal2.png)
|![Frost glass outside and mirror inside](images/gallery/pngs/moriknob-newtransparent.png)
||![Bumpy paved stone surface](images/gallery/pngs/moriknob-pavedstone.png)
|![Original Cornell Box](images/gallery/pngs/cornellbox2.png)
||![Modified Cornell Box](images/gallery/pngs/cornellbox-variant.png)