blender/intern/cycles/kernel/device/metal
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
..
bvh.h Cleanup: Cycles: Redundant point_intersect() in Metal-RT 2026-08-19 10:15:13 +02:00
CMakeLists.txt Refactor: Split Cycles kernel CMakeLists.txt 2026-01-02 17:29:29 +01:00
compat.h Cycles: Add NVIDIA DLSS support for viewport denoising 2026-09-10 14:17:46 +02:00
context_begin.h Refactor: Cycles: More consistent naming of image functions and structs 2026-01-14 17:57:46 +01:00
context_end.h Cycles: Enable local shader sorting for CUDA/OptiX 2026-09-15 12:39:35 +02:00
function_constants.h Refactor: Cycles: Remove macOS 12 32-bit kernel feature split 2026-09-08 14:46:32 +02:00
globals.h Refactor: Cycles: Add writeable global GPU data arrays 2026-03-27 16:07:06 +01:00
kernel.metal GSplat: Initial rendering support for Cycles 2026-09-16 16:52:10 +02:00