Noora is a ray tracer began as a deep dive into the algorithms that bring virtual scenes to life. Starting with Peter Shirley’s accessible guides, I built a functional Monte Carlo path tracer—an offline renderer that simulates complex lighting effects like caustics and diffuse inter-reflection by tracing the path of light through a scene.

Currently, it is an offline renderer capable of producing images with global illumination, soft shadows, and realistic materials, but I am developing a GPU-accelerated, real-time version to explore the performance and algorithmic trade-offs between offline and interactive rendering.

Key Features

  • Core Features: Accurate global illumination, anti-aliasing, depth-of-field, and support for various geometric primitives.

  • Material Model: Diffuse, metallic, and dielectric (glass) surfaces with configurable roughness.

  • Acceleration: A bounding volume hierarchy (BVH) for significantly faster ray-intersection tests.

Center of the map

Future Works

  • A Formal Monte Carlo Integration Framework
  • Importance Sampling with Probability Density Functions (PDFs)
  • Direct and Explicit Light Source Sampling
  • Advanced PDF Management for Path Weights
  • Orthonormal Basis (ONB) Generation for Sampling
  • Implementing a True Scattering PDF for Materials
  • Cosine-Weighted Sampling for Diffuse Surfaces
  • Mixture Densities for Combined BRDF & Light Sampling
  • Rendering Equation Mathematical Foundation
  • Production-Ready Unbiased Path Tracer Architecture
  • Change its backend to support CUDA, OpenGL or Vulkan.