[Bf-blender-cvs] [ca72ff599a9] master: Fix Cycles Embree crash with AO shader local only option

Brecht Van Lommel noreply at git.blender.org
Tue Feb 18 00:47:02 CET 2020


Commit: ca72ff599a96b64e6159e8e8f891f9649c0717a3
Author: Brecht Van Lommel
Date:   Tue Feb 18 00:20:58 2020 +0100
Branches: master
https://developer.blender.org/rBca72ff599a96b64e6159e8e8f891f9649c0717a3

Fix Cycles Embree crash with AO shader local only option

Ref T73778

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

M	intern/cycles/kernel/bvh/bvh.h

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

diff --git a/intern/cycles/kernel/bvh/bvh.h b/intern/cycles/kernel/bvh/bvh.h
index 75081085af5..b3992c03a9a 100644
--- a/intern/cycles/kernel/bvh/bvh.h
+++ b/intern/cycles/kernel/bvh/bvh.h
@@ -336,7 +336,9 @@ ccl_device_intersect bool scene_intersect_local(KernelGlobals *kg,
     ctx.lcg_state = lcg_state;
     ctx.max_hits = max_hits;
     ctx.local_isect = local_isect;
-    local_isect->num_hits = 0;
+    if (local_isect) {
+      local_isect->num_hits = 0;
+    }
     ctx.local_object_id = local_object;
     IntersectContext rtc_ctx(&ctx);
     RTCRay rtc_ray;
@@ -373,7 +375,9 @@ ccl_device_intersect bool scene_intersect_local(KernelGlobals *kg,
       rtcOccluded1(kernel_data.bvh.scene, &rtc_ctx.context, &rtc_ray);
     }
 
-    return local_isect->num_hits > 0;
+    /* rtcOccluded1 sets tfar to -inf if a hit was found. */
+    return (local_isect && local_isect->num_hits > 0) || (rtc_ray.tfar < 0);
+    ;
   }
 #    endif /* __EMBREE__ */



More information about the Bf-blender-cvs mailing list