Commit: 1c892e6814adf7431aa9abbe1bd560547f7144d2
Author: Stefan Werner
Date:   Mon Aug 17 16:04:01 2020 +0200
Branches: blender-v2.90-release
https://developer.blender.org/rB1c892e6814adf7431aa9abbe1bd560547f7144d2

Cycles: Fix local intersections in Embree for non-instancd geometry.

Embree's occlusion filter was checking against the wrong object ID
and not exiting correctly in case of a mismatch.

Fixes T79723

===================================================================

M       intern/cycles/bvh/bvh_embree.cpp

===================================================================

diff --git a/intern/cycles/bvh/bvh_embree.cpp b/intern/cycles/bvh/bvh_embree.cpp
index 17e1f86a589..4ef873634f0 100644
--- a/intern/cycles/bvh/bvh_embree.cpp
+++ b/intern/cycles/bvh/bvh_embree.cpp
@@ -126,9 +126,13 @@ static void rtc_filter_occluded_func(const 
RTCFilterFunctionNArguments *args)
       }
       else {
         kernel_embree_convert_hit(kg, ray, hit, &current_isect);
-        if (ctx->local_object_id != current_isect.object) {
+        int object = (current_isect.object == OBJECT_NONE) ?
+                         kernel_tex_fetch(__prim_object, current_isect.prim) :
+                         current_isect.object;
+        if (ctx->local_object_id != object) {
           /* This tells Embree to continue tracing. */
           *args->valid = 0;
+          break;
         }
       }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to