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, ¤t_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