fancy-car-bump.png

An exotic car with ~2 million triangles and a variety of materials such as body panel, glass windshield, and tire/rim. Still has some minor noise. Simple Reinhard tone mapping applied.

The Narumi Renderer

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 sample based on visible NDF function.

  • 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.

Blog posts:​
 
Future roadmap
  • 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 Smith model."

    • 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 Frisvad, Jeppe Revall, Toshiya Hachisuka, and Thomas Kim Kjeldsen. "Directional dipole model for subsurface scattering."

  • Sorted raytracing / deferred shading.

  • 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).

Gallery

Above and below are some images rendered by Narumi demonstrating different features. Hopefully the gallery will keep growing ;)

Asset sources:

 

serapis-sss-25.png

A marble sculpture head featuring subsurface scattering (See more)

cornell-box-vol.png

Foggy Cornell Box

White matte surface

Perfect mirror surface

Rusted iron surface with mixed roughness and metalness

Anisotropic brushed metal surface (in U direction)

moriknob-newtransparent.png

Frost glass outside and mirror inside

cornellbox2.png

Original Cornell Box

3bunny.png

 Glass bunnies filled with different participant media

Left/Middle/Right: forward/isotropic/back-scattering

moriknob-array.png

A grid of instanced knobs rendered with

shallow depth of field

Limestone-like dielectric surface

Glass outside and perfect mirror inside

Streaked rough metal surface

Anisotropic brushed metal surface (in V direction)

moriknob-pavedstone.png

Bumpy paved stone surface

cornellbox-variant.png

Modified Cornell Box