Skip to content

A C# Pathtracer, with as goal to compare distinct parts of unbiased monte carlo importance sampling algorithms on convergence rate.

Notifications You must be signed in to change notification settings

atharkes/raytracer

Repository files navigation

Pathtracing Workbench

by Theo Harkes

Disclaimer: This framework is by no means efficient at pathtracing. It's main goal is to be general enough to be able to support a multitude of different (monte carlo) rendering algorithms, while breaking them into smaller pieces to avoid blobs and code duplication.

Required:

Visual Studio 2021 with:

  • .Net 6

Features:

  • Pathtracing architecture
  • Camera: Position, Rotation, FOV, Aspect ratio
  • Input handling: see controls
  • Primitives: Planes, Spheres, Triangles, etc.
  • Materials: Profiled to allow for modular designs
  • Density Profiles: Uniform (volumetric), Delta (surface), Exponential (surface with depth)
  • Orientation Profiles: Flat (surface), Uniform (volumetric), surface-GGX, surface-SGGX
  • Reflection Profiles: Diffuse, Specular
  • Acceleration Structure: SBVH, BVH (SAH, Binning, Split-Ordered-Traversal & BVH rendering)
  • Multithreading: Threadpool with worker threads

Game Window Controls:

  • Arrow keys: Rotate Camera
  • W,A,S,D: Move Camera
  • Space: Move Camera Up
  • Shift: Move Camera Down
  • L: Lock Camera Movement
  • F1: Cycle through Viewing Mode
  • F2: Cycle through Debug information
  • F3: Cycle through Debug information color
  • =: Increase FOV
  • -: Decrease FOV
  • ESC: Exit the application

References:

About

A C# Pathtracer, with as goal to compare distinct parts of unbiased monte carlo importance sampling algorithms on convergence rate.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published