necipfazil / raytracer

physically based path tracer

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Physically Based Path Tracer

A physically-based path tracer with many features, including:

  • Anti-Aliasing through Multi-Sampling
  • Refractive Object Shading
  • Smooth Shading
  • Distribution Ray Tracing
    • Area Light
    • Depth of Field
    • Glossy Reflection
    • Motion Blur
  • Texture Mapping, Bump mapping, Perlin noise
  • Different Lighting Methods
    • Point Light, Directional light, Spotlight
    • Object Lights (Sphere, Mesh), Visible Lights
    • Lighting through Environment Radiance Maps
  • High Dynamic Range Imaging
    • Generating high dynamic range image outputs
    • Tonemapping, generating tonemapped HDR outputs
  • BRDF (Bidirectional Reflectance Distribution Function)
    • Design that allows introducing any BRDF model easily
    • 7 different BRDF models
  • Path Tracing (Indirect Illumination) with Monte Carlo methods
  • Transformation and Instancing
  • Acceleration Techniques
    • Bounding Volume Hierarchy
    • Multi-Threading

The project had 13 milestones, first of which included the principal design and the implementation of the ray tracer. With others, a different challenge was addressed that improves varying aspects of the project including its output quality, performance, and usability.

Development Blog: Chase The Ray

Link to the blog: https://chasetheray.wordpress.com/

In each post, development of an additional feature was discussed briefly. Output images and performance evaluations were shared.

Contents

Sample Outputs

Cornellbox Path Traced: Direct + Indirect Lighting

Head Spherical Environment Light

Sponza Path Traced: Direct + Indirect Lighting

See more in the blog posts.

Acknowledgements

This project was developed while following the course: CENG795 Special Topics: Advanced Ray Tracing, which was offered by Assoc.Prof. Ahmet Oguz Akyuz at CENG METU.

About

physically based path tracer


Languages

Language:C++ 99.3%Language:C 0.6%Language:Makefile 0.2%