From 1761d65b25d7161e8597bae9fa0ae7b0cf93c17f Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 18 Feb 2020 00:04:21 +0100 Subject: [PATCH] Fix Cycles Embree test failures with shadow catcher Ref T73778 --- intern/cycles/bvh/bvh_embree.cpp | 6 +++--- intern/cycles/kernel/bvh/bvh.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/intern/cycles/bvh/bvh_embree.cpp b/intern/cycles/bvh/bvh_embree.cpp index 35c1b463b49..2d3cc622891 100644 --- a/intern/cycles/bvh/bvh_embree.cpp +++ b/intern/cycles/bvh/bvh_embree.cpp @@ -589,7 +589,7 @@ void BVHEmbree::add_instance(Object *ob, int i) pack.prim_tri_index.push_back_slow(-1); rtcSetGeometryUserData(geom_id, (void *)instance_bvh->scene); - rtcSetGeometryMask(geom_id, ob->visibility); + rtcSetGeometryMask(geom_id, ob->visibility_for_tracing()); rtcCommitGeometry(geom_id); rtcAttachGeometryByID(scene, geom_id, i * 2); @@ -653,7 +653,7 @@ void BVHEmbree::add_triangles(const Object *ob, const Mesh *mesh, int i) rtcSetGeometryUserData(geom_id, (void *)prim_offset); rtcSetGeometryIntersectFilterFunction(geom_id, rtc_filter_func); rtcSetGeometryOccludedFilterFunction(geom_id, rtc_filter_occluded_func); - rtcSetGeometryMask(geom_id, ob->visibility); + rtcSetGeometryMask(geom_id, ob->visibility_for_tracing()); rtcCommitGeometry(geom_id); rtcAttachGeometryByID(scene, geom_id, i * 2); @@ -841,7 +841,7 @@ void BVHEmbree::add_curves(const Object *ob, const Hair *hair, int i) rtcSetGeometryUserData(geom_id, (void *)prim_offset); rtcSetGeometryIntersectFilterFunction(geom_id, rtc_filter_func); rtcSetGeometryOccludedFilterFunction(geom_id, rtc_filter_occluded_func); - rtcSetGeometryMask(geom_id, ob->visibility); + rtcSetGeometryMask(geom_id, ob->visibility_for_tracing()); rtcCommitGeometry(geom_id); rtcAttachGeometryByID(scene, geom_id, i * 2 + 1); diff --git a/intern/cycles/kernel/bvh/bvh.h b/intern/cycles/kernel/bvh/bvh.h index 8e17ab9af7a..75081085af5 100644 --- a/intern/cycles/kernel/bvh/bvh.h +++ b/intern/cycles/kernel/bvh/bvh.h @@ -439,7 +439,7 @@ ccl_device_intersect bool scene_intersect_shadow_all(KernelGlobals *kg, ctx.num_hits = 0; IntersectContext rtc_ctx(&ctx); RTCRay rtc_ray; - kernel_embree_setup_ray(*ray, rtc_ray, PATH_RAY_SHADOW); + kernel_embree_setup_ray(*ray, rtc_ray, visibility); rtcOccluded1(kernel_data.bvh.scene, &rtc_ctx.context, &rtc_ray); if (ctx.num_hits > max_hits) {