blender/intern/cycles/bvh
Sergey Sharybin 819d52f3d2 GSplat: Initial rendering support for Cycles
Based on the "Stochastic ray tracing of transparent 3D Gaussians" paper
by Xin Sun et. al. The basic idea: perform stochastic intersection with
the Gaussian splat based on its transparency.

Gaussian splats are implemented as a dedicated primitive type, but it
shares the same layout for position and radius as points, so a lot of
existing functions (positions, attributes, etc) work for both points
and splats.

For the Embree and hardware intersection it is implemented as a custom
primitive type.

The choice of using bounding spheres mainly comes from a balance between
performance and memory usage. More ideal would be to use OBB, but it is
not supported for custom primitive types in Embree and GPU HW-RT on all
backends.

There is a known limitation that comes from the fact that the datasets
are trained in sRGB space and Cycles work in Linear space: areas with
low opacity and high radiance render noticeably differently from the
ground-truth implementation.

Ref #159470

Pull Request: https://projects.blender.org/blender/blender/pulls/163103
2026-09-16 16:52:10 +02:00
..
binning.cpp
binning.h
build.cpp GSplat: Initial rendering support for Cycles 2026-09-16 16:52:10 +02:00
build.h
bvh.cpp Fix: Cycles log levels conflict with macros on some platforms 2025-07-10 19:44:14 +02:00
bvh.h
bvh2.cpp GSplat: Initial rendering support for Cycles 2026-09-16 16:52:10 +02:00
bvh2.h Cleanup: remove unused function pack_triangle() 2026-03-03 16:42:03 +01:00
CMakeLists.txt Mesh: Use Embree for triangles BVH tree 2026-08-12 17:26:03 +02:00
embree.cpp GSplat: Initial rendering support for Cycles 2026-09-16 16:52:10 +02:00
embree.h GSplat: Initial rendering support for Cycles 2026-09-16 16:52:10 +02:00
hiprt.cpp Cycles: HIP-RT: Always use balanced build for BLAS 2026-07-14 09:17:45 +02:00
hiprt.h Cycles: HIP-RT: Always use balanced build for BLAS 2026-07-14 09:17:45 +02:00
metal.h
metal.mm
multi.cpp
multi.h
node.cpp
node.h
octree.cpp Fix #150521: Cycles missing includes for build on older Linux distributions 2026-02-03 17:44:22 +01:00
octree.h Fix #150521: Cycles missing includes for build on older Linux distributions 2026-02-03 17:44:22 +01:00
optix.cpp
optix.h
params.h Cleanup: blank space around C-style comments 2026-05-12 16:42:20 +10:00
sort.cpp
sort.h
split.cpp GSplat: Initial rendering support for Cycles 2026-09-16 16:52:10 +02:00
split.h
unaligned.cpp Refactor: Cycles: Use packed_float3 for arrays, accessors for geometry data 2026-05-27 22:01:24 +02:00
unaligned.h