Skip to content

MatheoJ/RaytracingRenderer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RaytracingRenderer

Overview

This project is a C++ Ray Tracing Engine developed as part of a ray tracing course. The base project, including scene management, was provided by the professor.

The implementation follows a physically-based rendering (PBR) approach and covers essential techniques for ray tracing, including intersection calculations, material shading, and advanced sampling methods.

Final Render Some materials

In this engine I implemented the following features:

Features Implemented

  • Ray Generation & Camera Transformations
    • Perspective camera model
    • Homogeneous coordinate transformations
  • Basic Shape Intersections
    • Spheres
    • Triangles (Möller–Trumbore Algorithm)
    • Meshes with BVH acceleration
  • Materials & Shading Models
    • Lambertian (Diffuse)
    • Specular Reflection (Metallic)
    • Dielectric (Glass-like materials)
    • Fresnel Blending
  • Texture Mapping
    • UV Coordinate mapping
    • Procedural textures (Checkerboard, Perlin Noise)
  • Light Transport
    • Direct Lighting with Multiple Importance Sampling (MIS)
    • Path Tracing
    • Emissive materials
  • Sampling Techniques
    • Hemisphere sampling (Cosine-weighted, uniform, Phong)
    • BSDF importance sampling
    • Light source sampling (Quad, Sphere, Triangle)
    • Monte Carlo integration

On top of those features, I implemented Ray bending from the air refraction, this allowed to render mirage, As well as Instancing and procedural Dune generation

About

RaytracingRenderer

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published