diff options
author | Sergey Sharybin <sergey@blender.org> | 2021-05-12 11:16:01 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey@blender.org> | 2021-05-12 11:16:01 +0300 |
commit | 2e750a42a120881e4d1382ef7be5fce9e003e827 (patch) | |
tree | 9d9a6c535649335cbf057e1e4474d89bf3afa8cd /intern/cycles/kernel | |
parent | 93b7c9595b56d65bb8acb47fc418b423d8af8fe2 (diff) | |
parent | 7e823969b59487c5dc2f032424a12365aa95145c (diff) |
Merge branch 'blender-v2.93-release'
Diffstat (limited to 'intern/cycles/kernel')
-rw-r--r-- | intern/cycles/kernel/closure/alloc.h | 4 | ||||
-rw-r--r-- | intern/cycles/kernel/svm/svm_tex_coord.h | 9 |
2 files changed, 10 insertions, 3 deletions
diff --git a/intern/cycles/kernel/closure/alloc.h b/intern/cycles/kernel/closure/alloc.h index 5b74a868e72..99a5a675976 100644 --- a/intern/cycles/kernel/closure/alloc.h +++ b/intern/cycles/kernel/closure/alloc.h @@ -57,6 +57,8 @@ ccl_device ccl_addr_space void *closure_alloc_extra(ShaderData *sd, int size) ccl_device_inline ShaderClosure *bsdf_alloc(ShaderData *sd, int size, float3 weight) { + kernel_assert(isfinite3_safe(weight)); + const float sample_weight = fabsf(average(weight)); /* Use comparison this way to help dealing with non-finite weight: if the average is not finite @@ -81,6 +83,8 @@ ccl_device_inline ShaderClosure *bsdf_alloc_osl(ShaderData *sd, float3 weight, void *data) { + kernel_assert(isfinite3_safe(weight)); + const float sample_weight = fabsf(average(weight)); /* Use comparison this way to help dealing with non-finite weight: if the average is not finite diff --git a/intern/cycles/kernel/svm/svm_tex_coord.h b/intern/cycles/kernel/svm/svm_tex_coord.h index 4fe940f1a67..fc46bb584be 100644 --- a/intern/cycles/kernel/svm/svm_tex_coord.h +++ b/intern/cycles/kernel/svm/svm_tex_coord.h @@ -370,10 +370,13 @@ ccl_device void svm_node_tangent(KernelGlobals *kg, ShaderData *sd, float *stack if (direction_type == NODE_TANGENT_UVMAP) { /* UV map */ - if (desc.offset == ATTR_STD_NOT_FOUND) - tangent = make_float3(0.0f, 0.0f, 0.0f); - else + if (desc.offset == ATTR_STD_NOT_FOUND) { + stack_store_float3(stack, tangent_offset, zero_float3()); + return; + } + else { tangent = attribute_value; + } } else { /* radial */ |