Fix Cycles crash rendering mix of instanced and non-instanced volumes.

This commit is contained in:
Brecht Van Lommel
2018-08-05 11:58:31 +02:00
parent a56ec3dfe3
commit 5261cd233c
2 changed files with 28 additions and 20 deletions

View File

@@ -212,6 +212,7 @@ uint BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
isect_array->t = isect_t;
if(num_hits == max_hits) {
#if BVH_FEATURE(BVH_INSTANCING)
if(object != OBJECT_NONE) {
# if BVH_FEATURE(BVH_MOTION)
float t_fac = 1.0f / len(transform_direction(&ob_itfm, dir));
# else
@@ -221,6 +222,7 @@ uint BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
for(int i = 0; i < num_hits_in_instance; i++) {
(isect_array-i-1)->t *= t_fac;
}
}
#endif /* BVH_FEATURE(BVH_INSTANCING) */
return num_hits;
}
@@ -257,6 +259,7 @@ uint BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
isect_array->t = isect_t;
if(num_hits == max_hits) {
# if BVH_FEATURE(BVH_INSTANCING)
if(object != OBJECT_NONE) {
# if BVH_FEATURE(BVH_MOTION)
float t_fac = 1.0f / len(transform_direction(&ob_itfm, dir));
# else
@@ -266,6 +269,7 @@ uint BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
for(int i = 0; i < num_hits_in_instance; i++) {
(isect_array-i-1)->t *= t_fac;
}
}
# endif /* BVH_FEATURE(BVH_INSTANCING) */
return num_hits;
}

View File

@@ -279,6 +279,7 @@ ccl_device uint BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
isect_array->t = isect_t;
if(num_hits == max_hits) {
#if BVH_FEATURE(BVH_INSTANCING)
if(object != OBJECT_NONE) {
# if BVH_FEATURE(BVH_MOTION)
float t_fac = 1.0f / len(transform_direction(&ob_itfm, dir));
# else
@@ -288,6 +289,7 @@ ccl_device uint BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
for(int i = 0; i < num_hits_in_instance; i++) {
(isect_array-i-1)->t *= t_fac;
}
}
#endif /* BVH_FEATURE(BVH_INSTANCING) */
return num_hits;
}
@@ -317,6 +319,7 @@ ccl_device uint BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
isect_array->t = isect_t;
if(num_hits == max_hits) {
# if BVH_FEATURE(BVH_INSTANCING)
if(object != OBJECT_NONE) {
# if BVH_FEATURE(BVH_MOTION)
float t_fac = 1.0f / len(transform_direction(&ob_itfm, dir));
# else
@@ -326,6 +329,7 @@ ccl_device uint BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
for(int i = 0; i < num_hits_in_instance; i++) {
(isect_array-i-1)->t *= t_fac;
}
}
# endif /* BVH_FEATURE(BVH_INSTANCING) */
return num_hits;
}