Releases: Enigmatisms/cuda-pt
v1.3.3
- Vertex reordering is implemented. Vertices will be reordered according to the BVH leaf nodes, therefore now, BVH leaf nodes do not need an extra index to look up for the primitive. This leads to minor runtime improvements (3-4% on average).
- Minor bugs related to shading normal and UV coords are fixed.
- The non-symmetric scattering for refraction is considered.
v1.3.2
v1.3.1
What's Changed
- Major code structure changes and profiled optimization. by @Enigmatisms in #6
Full Changelog: v1.3...v1.3.1
Naive caustics rendering via light tracing
Light tracing is implemented, where photons (infinitesimal) are traced and splat onto the canvas for better caustics rendering in scenes with multi-layer specular materials. This can be further improved, by splatting the anisotropic photons (like, Gaussians). The implementation is not profiled, and it is a naive algorithm currently.
No caustics | Blend light tracing with path tracing | Caustics |
---|---|---|
ImGui based online Rendering Visualization
Well, simple stuff: create pixel buffer object in OpenGL and map cuda buffer to it, so that the GPGPU path tracing code can directly write to the image buffer without having to transport it back to CPU end, simple enough. The following UI is currently supported:
- Orthogonal camera
- Camera rotation (mouse, roll-locked) and position (keyboard)
- Screen frame capture
- FoV
Software BVH and Wavefront Path Tracing
- Device-side software surface-area heuristic BVH (stackless)
- Wavefront path tracing: SoA path payload for less lg-throttle.
Up coming: imgui
related updates. Several blog posts are to be written, to summarize some good practices & interesting profiling results & benchmarking for CUDA software path tracing. See the README.md for more info.
CUDA path tracer base release
Unidirectional path tracer implemented in templated CUDA C++. Currently, this repo supports:
- Scene parsing from xml file (similar to my AdaPT renderer).
- Shared mem accelerated ray-scene intersection.
- CUDA virtual function based BSDF (Lambertian, Specular and Translucent)
-
variant
based primitive types - Simple next event estimation for point emitters and area emitters.
Next step: Incorporate Nvidia OptiX for further accelerated ray tracing.