blender/intern/cycles/kernel/geom
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
..
attribute.h Cycles: Add Quaternion attribute type 2026-09-02 09:08:34 +02:00
curve.h Fix #160052: Cycles: Performance regression with CUDA + Blackwell + BVH2 2026-06-23 12:33:04 +02:00
curve_intersect.h Fix #160052: Cycles: Performance regression with CUDA + Blackwell + BVH2 2026-06-23 12:33:04 +02:00
geom_intersect.h Refactor: De-duplicate local intersection hit index calculation 2026-01-26 14:20:28 +01:00
gsplat.h GSplat: Initial rendering support for Cycles 2026-09-16 16:52:10 +02:00
gsplat_intersect.h GSplat: Initial rendering support for Cycles 2026-09-16 16:52:10 +02:00
motion_curve.h Fix #160052: Cycles: Performance regression with CUDA + Blackwell + BVH2 2026-06-23 12:33:04 +02:00
motion_gsplat.h GSplat: Initial rendering support for Cycles 2026-09-16 16:52:10 +02:00
motion_point.h GSplat: Initial rendering support for Cycles 2026-09-16 16:52:10 +02:00
motion_triangle.h Refactor: Cycles: Make some fields in KernelObject mesh/volume specific 2026-09-04 11:59:14 +02:00
motion_triangle_intersect.h Cycles: HIP-RT: Skip visibility check for primitives 2026-07-14 09:17:45 +02:00
motion_triangle_shader.h Refactor: Cycles: Mesh positions include motion, store kernel attribute 2026-05-27 22:01:25 +02:00
object.h Refactor: Cycles: Make some fields in KernelObject mesh/volume specific 2026-09-04 11:59:14 +02:00
point.h GSplat: Initial rendering support for Cycles 2026-09-16 16:52:10 +02:00
point_intersect.h GSplat: Initial rendering support for Cycles 2026-09-16 16:52:10 +02:00
primitive.h GSplat: Initial rendering support for Cycles 2026-09-16 16:52:10 +02:00
shader_data.h GSplat: Initial rendering support for Cycles 2026-09-16 16:52:10 +02:00
triangle.h Refactor: Cycles: Make some fields in KernelObject mesh/volume specific 2026-09-04 11:59:14 +02:00
triangle_intersect.h Cycles: HIP-RT: Skip visibility check for primitives 2026-07-14 09:17:45 +02:00
volume.h Cleanup: Cycles: Consistently call packed spherical harmonics rest 2026-09-03 11:27:09 +02:00