mirror of
https://github.com/blender/blender
synced 2026-10-25 03:07:01 +03:00
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 |
||
|---|---|---|
| .. | ||
| binning.cpp | ||
| binning.h | ||
| build.cpp | ||
| build.h | ||
| bvh.cpp | ||
| bvh.h | ||
| bvh2.cpp | ||
| bvh2.h | ||
| CMakeLists.txt | ||
| embree.cpp | ||
| embree.h | ||
| hiprt.cpp | ||
| hiprt.h | ||
| metal.h | ||
| metal.mm | ||
| multi.cpp | ||
| multi.h | ||
| node.cpp | ||
| node.h | ||
| octree.cpp | ||
| octree.h | ||
| optix.cpp | ||
| optix.h | ||
| params.h | ||
| sort.cpp | ||
| sort.h | ||
| split.cpp | ||
| split.h | ||
| unaligned.cpp | ||
| unaligned.h | ||