79f1cc601c
Detect cases where a ray-intersection would miss the current triangle, which if the intersection is strictly watertight, implies that a neighboring triangle would incorrectly be hit instead. When that is detected, apply a ray-offset. The idea being that we only want to introduce potential error from ray offsets if we really need to. This work for BVH2 and Embree, as we are able to match the ray-interesction bit-for-bit, though doing so for Embree requires ugly hacks. Tiny differences like fused-multiply-add or dot product intrinstics in matrix inversion and ray intersection needed to be matched exactly, so this is fragile. Unfortunately we're not able to do the same for OptiX or MetalRT, since those implementations are unknown (and possibly impossible to match as hardware instructions). Still artifacts are much reduced, though not eliminated. Ref T97259 Differential Revision: https://developer.blender.org/D15559 |
||
---|---|---|
.. | ||
atomic | ||
audaspace | ||
clog | ||
cycles | ||
dualcon | ||
eigen | ||
ffmpeg | ||
ghost | ||
glew-mx | ||
guardedalloc | ||
iksolver | ||
itasc | ||
libc_compat | ||
libmv | ||
locale | ||
mantaflow | ||
memutil | ||
mikktspace | ||
opencolorio | ||
opensubdiv | ||
openvdb | ||
quadriflow | ||
rigidbody | ||
sky | ||
utfconv | ||
wayland_dynload | ||
CMakeLists.txt |