Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/intern
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2015-08-24 22:21:30 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2015-08-24 22:23:49 +0300
commit2fb639deedbdb0b0a821eb04ef69a7dd0080ea94 (patch)
tree3c246f984de6305fcf5d0145a0caa9d341188d78 /intern
parent3633499f4ea93ad3313afd19a122c5e04b59b066 (diff)
Fix T45778: Objects scaled to 0 cause black artifacts with Static BVH
The issue was caused by some numeric instability in triangle intersection which was visible on avx2 CPUs and GPUs (at least sm_20 here) but maybe some others too. Committing rather a workaround for now to be safe for the release, still need some investigation. From tests with grass field from Gooseberry project didn't see measurable slowdown.
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/kernel/geom/geom_triangle_intersect.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/intern/cycles/kernel/geom/geom_triangle_intersect.h b/intern/cycles/kernel/geom/geom_triangle_intersect.h
index 3ef918dc842..7ca046f565b 100644
--- a/intern/cycles/kernel/geom/geom_triangle_intersect.h
+++ b/intern/cycles/kernel/geom/geom_triangle_intersect.h
@@ -173,6 +173,9 @@ ccl_device_inline bool triangle_intersect(KernelGlobals *kg,
if(kernel_tex_fetch(__prim_visibility, triAddr) & visibility)
#endif
{
+ if(len_squared(cross(tri_a, tri_b)) < 1e-14f) {
+ return false;
+ }
/* Normalize U, V, W, and T. */
const float inv_det = 1.0f / det;
isect->prim = triAddr;