/DiRender

Not so tiny path tracer

Primary LanguageC++MIT LicenseMIT

DiRender

Not so tiny path tracer

  • Linux gcc-7 /clang-7 / gcc-10 / clang-10

Linux-CI

  • Windows MSVC 2019

CI

Note: This program is being modified to meet the requirements of the CSE168 course by Prof Ravi Ramamoorthi.

Features

❓ : partial, may not work, broken because of code evolution

✔️ : Complete

❌ : Not implemented but on the todolist

  • ❓ Debugger
  • Integrator
    • ✔️ Path tracing(Multiple Importance sampling, Russian Roulette and Shadow Ray)
    • ✔️ Direct Lighting
    • ✔️ Blinn-Phong Integrator(like that in OpenGL)
    • ❌ Photon Mapping
  • Material
    • ✔️ CookTorrance(with GGX importance sampling)
    • ✔️ Blinn-Phong(with importance sampling)
    • ✔️ Glass
    • ✔️ Dielectric
    • ✔️ lambertian(with cosine weighted sampling)
  • Accelerator
    • ✔️ Naive BVH
    • ❌ SAH BVH
    • ✔️ linear list(just for testing)
  • Sampler
    • ✔️ Naive sampler(std::mt19937)
    • ✔️ Halton sequence(no scramble)
    • ❌ Sobel sequence
  • Camera
    • ✔️ Naive camera
    • ❌ Motion blur
    • ❌ Depth of field
  • Shape
    • ✔️ Triangle
    • ✔️ Quad
    • ✔️ Sphere
  • Texture
    • ✔️ Constant Texture
    • ✔️ Checker Texture
    • ❌ loading image texture(It is a little trivial. Some work has been done for it but there is still a lot to do)
  • Parser
    • ✔️ TOML parser(see cornel_box.toml)
    • ✔️ Ravi parser(the format Prof Ravi defines in CSE168)
  • Math
    • ✔️ Vec3,Point3,Mat4
    • ✔️ AABB
    • ✔️ Transform

Milestone

  • Cornel Box (1200 x 1200 x 1024spp,about 35mins)

    Matte, dielectric, glass and Cook-Torrance material cornel_box

  • Debugger cornel_box debugger

  • QuadLight(640 x 480, 128spp, cosine weight sampling) quadlight

  • QuadLight(640 x 480, 128spp, Blinn-Phong importance sampling) This one looks much better. quadlight

  • Ajax(768 x 768, normal integrator) Not difficult but amazing. ajax