This is a playground repository for ray tracing-related experiments. The implementation is done from scratch, using CPU, and referencing various resources, especially Physically Based Rendering From Theory to Implementation.
- Support for acceleration with CPU SIMD
- Architectures
- Arm Neon
- SSE/AVX (No support for AVX-512)
- Computations
- N rays - triangle intersection
- Ray - N triangles intersection
- N rays - BBox intersection
- Ray - BBox intersection
- Bilinear filtering
- Architectures
- Acceleration structures
- BVH for triangle mesh
- Two children, and multiple triangles in leaf node
- BVH for triangle mesh
- Ray packet tracing
- Primary rays
- Occlude rays
- Secondary rays/binning
- Compaction
- Path tracing
- Indirect diffuse
- Perfect specular
- Emissive
- BSDF
- Refraction
- Volumetric
- Direct lights
- Directional light
- Infinite area light
- Point light
- Spot light
- Texture mapping
- Diffuse
- Alpha mask
- Bump
- Bilinear filtering
- Mipmapping
- Tiled access
- Camera
The code is developed primarily on macOS, but should work on other platforms.
- macOS x86/Apple M1
- Windows/ARM/x64
- Raspberry Pi
Use CMake to build
san-miguel-low-poly from https://casual-effects.com/data/
Crytek Sponza from https://casual-effects.com/data/