Fix T49003: Cycles volumes have wrong results after recent microdisp commits
authorMai Lavelle <mai.lavelle@gmail.com>
Tue, 2 Aug 2016 19:27:41 +0000 (15:27 -0400)
committerMai Lavelle <mai.lavelle@gmail.com>
Tue, 2 Aug 2016 19:28:07 +0000 (15:28 -0400)
Problem was that sd->prim can be -1 for volumes and was causing check in subd
code to access out of bounds

intern/cycles/kernel/geom/geom_subd_triangle.h

index e4597aba56e0f15478472a5cad469aeca2173db5..bf9be1823451bd097476ad7ca5829b8cfbcb1afe 100644 (file)
@@ -22,7 +22,7 @@ CCL_NAMESPACE_BEGIN
 
 ccl_device_inline uint subd_triangle_patch(KernelGlobals *kg, const ShaderData *sd)
 {
-       return kernel_tex_fetch(__tri_patch, ccl_fetch(sd, prim));
+       return (ccl_fetch(sd, prim) != PRIM_NONE) ? kernel_tex_fetch(__tri_patch, ccl_fetch(sd, prim)) : ~0;
 }
 
 /* UV coords of triangle within patch */