blender/intern
Brecht Van Lommel 79f1cc601c Cycles: improve ray tracing precision near triangle edges
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
2022-08-09 18:42:01 +02:00
..
atomic Intern/atomic: Fix const qualifier for atomic_load_ptr. 2022-05-31 21:05:15 +08:00
audaspace CMake: fix AUDASPACE disabling WITH_PYTHON for Blender 2022-05-20 11:18:49 +10:00
clog File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
cycles Cycles: improve ray tracing precision near triangle edges 2022-08-09 18:42:01 +02:00
dualcon Cleanup: Compilation warnings 2022-03-18 12:07:08 +01:00
eigen File headers: manually convert files to use SPDX headers 2022-02-11 15:15:49 +11:00
ffmpeg Merge branch 'blender-v3.1-release' 2022-02-22 17:34:07 +01:00
ghost Cleanup: spelling in comments 2022-07-26 13:21:21 +10:00
glew-mx File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
guardedalloc Cleanup: early exit MEM_lockfree_freeN when called with NULL pointer 2022-07-16 17:23:42 +10:00
iksolver Cleanup: spelling in comments, capitalize tags 2022-05-13 09:29:25 +10:00
itasc Cleanup: remove argument to doxygen \file 2022-03-25 12:10:30 +11:00
libc_compat File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
libmv Cleanup: spelling in comments, capitalize tags 2022-05-13 09:29:25 +10:00
locale File headers: add missing copyright, add MIT to SPDX licenses 2022-02-11 14:56:03 +11:00
mantaflow Mantaflow: disable call to MANTA::terminateMantaflow 2022-06-29 17:34:39 +10:00
memutil File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
mikktspace Mikktspace: Reduce number of data queries to caller 2022-04-23 15:09:41 +02:00
opencolorio Cleanup: clarify what is scene linear color space in conversion conversion 2022-05-23 15:34:50 +02:00
opensubdiv Cleanup: quiet compiler warnings 2022-07-19 13:32:53 +10:00
openvdb File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
quadriflow File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
rigidbody Cleanup: spelling in comments, capitalize tags 2022-05-13 09:29:25 +10:00
sky Cleanup: spelling in comments 2022-06-30 12:14:22 +10:00
utfconv Cleanup: use C++ comments for disabled code 2022-04-13 13:47:04 +10:00
wayland_dynload GHOST/Wayland: support dynamic loading libraries for Wayland 2022-07-06 15:30:47 +10:00
CMakeLists.txt GHOST/Wayland: support dynamic loading libraries for Wayland 2022-07-06 15:30:47 +10:00