Cycles: Add finite checks for float4 and transforms
Currently unused, preparing for an upcoming development.
This commit is contained in:
parent
9306037ed3
commit
7f6530e5bd
|
@ -477,6 +477,24 @@ ccl_device_inline float4 safe_divide_float4_float(const float4 a, const float b)
|
|||
return (b != 0.0f) ? a / b : make_float4(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
}
|
||||
|
||||
ccl_device_inline bool isfinite4_safe(float4 v)
|
||||
{
|
||||
return isfinite_safe(v.x) && isfinite_safe(v.y) && isfinite_safe(v.z) && isfinite_safe(v.w);
|
||||
}
|
||||
|
||||
ccl_device_inline float4 ensure_finite4(float4 v)
|
||||
{
|
||||
if (!isfinite_safe(v.x))
|
||||
v.x = 0.0f;
|
||||
if (!isfinite_safe(v.y))
|
||||
v.y = 0.0f;
|
||||
if (!isfinite_safe(v.z))
|
||||
v.z = 0.0f;
|
||||
if (!isfinite_safe(v.w))
|
||||
v.w = 0.0f;
|
||||
return v;
|
||||
}
|
||||
|
||||
CCL_NAMESPACE_END
|
||||
|
||||
#endif /* __UTIL_MATH_FLOAT4_H__ */
|
||||
|
|
|
@ -466,6 +466,17 @@ ccl_device void transform_motion_array_interpolate(Transform *tfm,
|
|||
transform_compose(tfm, &decomp);
|
||||
}
|
||||
|
||||
ccl_device_inline bool transform_isfinite_safe(Transform *tfm)
|
||||
{
|
||||
return isfinite4_safe(tfm->x) && isfinite4_safe(tfm->y) && isfinite4_safe(tfm->z);
|
||||
}
|
||||
|
||||
ccl_device_inline bool transform_decomposed_isfinite_safe(DecomposedTransform *decomp)
|
||||
{
|
||||
return isfinite4_safe(decomp->x) && isfinite4_safe(decomp->y) && isfinite4_safe(decomp->z) &&
|
||||
isfinite4_safe(decomp->w);
|
||||
}
|
||||
|
||||
#ifndef __KERNEL_GPU__
|
||||
|
||||
class BoundBox2D;
|
||||
|
|
Loading…
Reference in New Issue