Rend-a-Pixel Raytracer

A physically-based renderer implementing various ray tracing techniques.

A physically-based renderer implementing various ray tracing techniques. Features include image denoising, normal mapping, multiple importance sampling, support for various material, texture types and lighting conditions, and many more.

By: Camilo Martínez

View on GitHub

Rend-a-Pixel is a raytracing rendering engine developed on top of the Lightwave Framework as the final project for the Computer Graphics course at Saarland University lectured by Prof. Dr.-Ing. Philipp Slusallek during the Winter Semester 2023/2024. Some of the implemented features are showcased below:

Area Lights

No area lights Uniform sphere sampling Cosine-weighted sampling Subtended-cone sampling

Shading Normals

No normal mapping Normal mapping

A Thinlens Camera Model

Perspective Perspective with Thinlens

Alpha Masking

No alpha masking Alpha masking

Image Denoising

Noisy Denoised

Halton Sampler

Independent sampling Normal Halton sampling Digit-permutated Halton sampling Owen-scrambled Halton sampling
Independent sampling Normal Halton sampling Digit-permutated Halton sampling Owen-scrambled Halton sampling

Multiple Importance Sampling (MIS)

BSDF sampling Next Event Estimation (NEE) Multiple Importance Sampling (MIS)

Every single image rendered with 128spp. The further improvement on the noise is not because of having done 128spp (all three images were rendered with the same spp's), but because of the Subtended-Cone Sampling.

Summary of Features

  • ✓ Camera Models
    • ✓ Basic Perspective Camera
    • ✓ Thinlens Camera
  • ✓ Basic Primitives
    • ✓ Sphere
    • ✓ Rectangles
    • ✓ Triangle/Generic Meshes
  • ✓ Integrators
    • ✓ Albedo
    • ✓ Normals
    • ✓ Direct Lighting
    • ✓ Path Tracing
  • ✓ BSDFs & Lighting Models:
    • ✓ Materials:
      • ✓ Diffuse
      • ✓ Conductor
      • ✓ Rough Conductor
      • ✓ Dielectric
      • ✓ Principled
    • ✓ Lambertian Emission
  • ✓ Textures:
    • ✓ Checkerboard Texture
    • ✓ Image Texture
  • ✓ Lights:
    • ✓ Environment Map
    • ✓ Area Lights
      • ✓ Uniform Sphere Sampling
      • ✓ Cosine-Weighted Sampling
      • ✓ Subtended-Cone Sampling
    • ✓ Point Light
    • ✓ Directional Light
  • ✓ Sampling:
    • ✓ BSDF Sampling
    • ✓ Next Event Estimation (NEE)
    • ✓ Multiple Importance Sampling (MIS)
  • ✓ Image denoising using Intel® Open Image Denoise
  • ✓ Acceleration Structures:
    • ✓ SAH Bounding Volume Hierarchy
  • ✓ Shading Normals
  • ✓ Alpha Masking
  • ✓ Custom Bokeh Shapes

© The Lightwave Framework was written by Alexander Rath, with contributions from Ömercan Yazici and Philippe Weier. Their support was invaluable in the coding of these features. The scenes showcasing the features were provided by their team, and should be used under permission. Many textures and models were taken from Poly Haven's extensive library. Many thanks to the team behind Tev used extensively throughout this project as an EXR viewer.

For more details, please refer to the project's GitHub repository.