ky icon indicating copy to clipboard operation
ky copied to clipboard

single file, pbrt style, educational ray tracing renderer🖼️

ky

中文讲解

single file ray tracing renderer, 100/300/1000/4000 lines of C++20, PBRT-like architecture, step-by-step integrator.

the name ky is meaningless, you can call this project structured smallpt, smallpbrt etc.

feature

render_debug():

render_lighting_enum():

render_mis_scene():

render_multiple_scene():

course&renderer

  • Ray Tracing in One Weekend https://raytracing.github.io/books/RayTracingInOneWeekend.html

  • Scratchapixel https://www.scratchapixel.com

  • Advanced Computer Graphics | RGL http://rgl.epfl.ch/courses/ACG20

    • Nori https://wjakob.github.io/nori/
  • Realistic (& Advanced) Image Synthesis http://www.cim.mcgill.ca/~derek/ecse446.html

    • ecsex46/fall-2019: ECSE 446/546 & COMP 598/599: Realistic/Advanced Image Synthesis https://github.com/ecsex46/fall-2019
  • COMPUTER GRAPHICS(CMU 15-462/662) http://15462.courses.cs.cmu.edu

    • CMU-Graphics/Scotty3D: Base code for 15-462/662: Computer Graphics at Carnegie Mellon University https://github.com/CMU-Graphics/Scotty3D

resources

  • smallpt: Global Illumination in 99 lines of C++ http://www.kevinbeason.com/smallpt/

    • C# vs C++ 全局照明渲染性能比试 https://www.cnblogs.com/miloyip/archive/2010/06/23/cpp_vs_cs_GI.html

  • SmallVCM/SmallVCM: A (not too) small physically based renderer that implements the vertex connection and merging algortihm https://github.com/SmallVCM/SmallVCM

  • ouj/safegi: implementation of safegi: an rendering system with dimensional analysis. https://github.com/ouj/safegi

  • hi2p-perim/minpt: A path tracer in 300 lines of C++ https://github.com/hi2p-perim/minpt

  • xelatihy/yocto-gl: Yocto/GL: Tiny C++ Libraries for Data-Driven Physically-based Graphics https://github.com/xelatihy/yocto-gl

  • mmp/pbrt-v3: Source code for pbrt, the renderer described in the third edition of "Physically Based Rendering: From Theory To Implementation", by Matt Pharr, Wenzel Jakob, and Greg Humphreys. https://github.com/mmp/pbrt-v3

  • mmp/pbrt-v4: Source code to pbrt, the ray tracer described in the forthcoming 4th edition of the "Physically Based Rendering: From Theory to Implementation" book. https://github.com/mmp/pbrt-v4

  • mitsuba-renderer/mitsuba3: Mitsuba 3: A Retargetable Forward and Inverse Renderer https://github.com/mitsuba-renderer/mitsuba3

  • LuisaGroup/LuisaRender: High-Performance Cross-Platform Monte Carlo Renderer Based on LuisaCompute https://github.com/LuisaGroup/LuisaRender

  • Source/Render/Cycles - Blender Developer Wiki https://wiki.blender.org/wiki/Source/Render/Cycles

milestone

  • [x] run smallpt

  • [x] rewrite smallpt

    • [x] geometry
    • [x] shape
      • [x] disk
      • [x] triangle
      • [x] rectangle
      • [x] sphere
    • [x] scene
    • [x] camera
    • [x] material
    • [x] light
    • [x] integrator
    • [ ] cmd
  • [ ] step-by-step integrator

    • [x] render depth, normal
    • [ ] render point light
    • [ ] render spuclar material
    • [x] render direct lighting(sampling brdf, sampling lighting)
    • [x] MIS
    • [x] recursion style path tracing
    • [x] iterative style path tracing
  • [x] bsdf/material

    • [x] Phong
  • [x] scene

    • [x] mis scene