/raytracer

CPU path tracer

Primary LanguageC++

RayTracer

CPU Ray Tracer

Author: planet620

Releases

  • Cornell box scene finalized
  • Static mesh rendering
    • Backface detection for transparency
    • No acceleration structude ofr triangles yet
    • No static mesh assets yet
  • ISPC integrated with the project and used for basic
  • Better compile times
  • CppCheck and BuildInsights pass
  • Huge code refactor
  • Better logging with spdlog

Example output

  • Full scene editor
    • Flying camera
    • Object selection and movement
    • Material editor

User interface

  • The same set of materials and primitives
  • Renderer interface, with example and reference CPU renderer, easy to hot-swap with another version
  • Simpler algorithm, no PDF in use
  • Refraction with smoothness
  • Coloured refraction
  • Gloss with smoothness

Example output

Based on books: Ray Tracing in One Weekend by Peter Shirley

User interface

  • Editor UI
    • Scene setup: spawn/delete/move/edit object properties
    • Render parameters
    • Settings
    • Real time output update
    • Save output to BMP file
  • Renderer
    • Monte Carlo based method, mix of light and surface cosine based probability density functions (PDF)
    • Multithreading: thread poll, PLL, none
    • Support for SIMD
    • DirectX 11 based display
    • Anti aliasing
    • No denoising
    • Starting code for the review: frame_renderer::render() and frame_renderer::ray_color()
  • Renderer variables
    • Resolution
    • Work distribution: stripes, chunks
    • Rays per pixel, ray bounces
  • Camera setup
    • Projections: Perspective/orthografic/blend
    • Focus distance
    • Aperture
    • Aspect ratio
  • Specular, diffuse, emissive materials:
    • Metal: copper, gold, silver, steel
    • Dialectric: glass, sapphire, moissanite, diamond, water
    • Texture: solid, checker
    • Lambertian: basic colors
    • Diffuse light: a few strength types
  • Primitives:
    • Sphere
    • XY rectangle
    • XZ rectangle
    • ZY rectangle

Example output

Build details

Project file: Visual Studio 2022

Windows SDK: 10.0

Toolset: v143

Language standard: ISO C++20

Third party dependencies

DirectX 11

ocornut/imgui v1.87

nlohmann/json v3.10.5

PIX for Windows v1.0.220124001

STB Image v2.27

Tiny obj v1.0.6

spdlog v1.x

ispc v1.19.0