Commit: 5eb156e7692b9ab24338c73f82360338396cdbe1 Author: Brecht Van Lommel Date: Thu Jun 27 12:39:10 2019 +0200 Branches: master https://developer.blender.org/rB5eb156e7692b9ab24338c73f82360338396cdbe1
Fix T66171: Cycles OSL trace() crashing in displacement shaders This is not supported, meshes do not exist in the BVH before displacement. =================================================================== M intern/cycles/kernel/osl/osl_services.cpp =================================================================== diff --git a/intern/cycles/kernel/osl/osl_services.cpp b/intern/cycles/kernel/osl/osl_services.cpp index 9196caad1b3..316d24b0954 100644 --- a/intern/cycles/kernel/osl/osl_services.cpp +++ b/intern/cycles/kernel/osl/osl_services.cpp @@ -1392,9 +1392,16 @@ bool OSLRenderServices::trace(TraceOpt &options, tracedata->init = true; tracedata->sd.osl_globals = sd->osl_globals; + KernelGlobals *kg = sd->osl_globals; + + /* Can't raytrace from shaders like displacement, before BVH exists. */ + if (kernel_data.bvh.bvh_layout == BVH_LAYOUT_NONE) { + return false; + } + /* Raytrace, leaving out shadow opaque to avoid early exit. */ uint visibility = PATH_RAY_ALL_VISIBILITY - PATH_RAY_SHADOW_OPAQUE; - return scene_intersect(sd->osl_globals, ray, visibility, &tracedata->isect); + return scene_intersect(kg, ray, visibility, &tracedata->isect); } bool OSLRenderServices::getmessage(OSL::ShaderGlobals *sg, _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs