I am writing a path tracer in Go. The Go gopher below was rendered using it, and here's the code that was used to do it. It's 2560x1440px... so you can make it your wallpaper! The gopher 3D model was found here.
Disclaimer: This is my first time using Go.
go run examples/gopher.go
- Supports OBJ, Binary STL and ASCII STL
- Supports textures, bump maps and normal maps
- Uses k-d trees to accelerate ray intersection tests
- Supports various material properties
- Light sources with configurable attenuation
- Supports configurable depth of field
- Supports iterative rendering
- Uses all CPU cores in parallel
Here are things that I'm planning, or at least hoping, to do.
- subsurface scattering
- atmosphere
- constructive solid geometry
- input files to define scene
- animation support?
Here are some resources that I have found useful.
- WebGL Path Tracing - Evan Wallace
- Global Illumination in a Nutshell
- Simple Path Tracing - Iñigo Quilez
- Realistic Raytracing - Zack Waters
- Reflections and Refractions in Ray Tracing - Bram de Greve
- Better Sampling - Rory Driscoll
- Ray Tracing for Global Illumination - Nelson Max at UC Davis
- Physically Based Rendering - Matt Pharr, Greg Humphreys