Cycles: principled absorption color now has more effect at lower values.
[blender.git] / intern / cycles / util / util_math_float3.h
index e73e5bc17a225cd9b38f7e288dfb7fd82277f509..a0a62ae95df1926869e3642288501b676714fe17 100644 (file)
@@ -57,8 +57,10 @@ ccl_device_inline float3 clamp(const float3& a, const float3& mn, const float3&
 ccl_device_inline float3 fabs(const float3& a);
 ccl_device_inline float3 mix(const float3& a, const float3& b, float t);
 ccl_device_inline float3 rcp(const float3& a);
+ccl_device_inline float3 sqrt(const float3& a);
 #endif  /* !__KERNEL_OPENCL__ */
 
+ccl_device_inline float min3(float3 a);
 ccl_device_inline float max3(float3 a);
 ccl_device_inline float len(const float3 a);
 ccl_device_inline float len_squared(const float3 a);
@@ -269,6 +271,15 @@ ccl_device_inline float3 fabs(const float3& a)
 #endif
 }
 
+ccl_device_inline float3 sqrt(const float3& a)
+{
+#ifdef __KERNEL_SSE__
+       return float3(_mm_sqrt_ps(a));
+#else
+       return make_float3(sqrtf(a.x), sqrtf(a.y), sqrtf(a.z));
+#endif
+}
+
 ccl_device_inline float3 mix(const float3& a, const float3& b, float t)
 {
        return a + t*(b - a);
@@ -285,6 +296,11 @@ ccl_device_inline float3 rcp(const float3& a)
 }
 #endif  /* !__KERNEL_OPENCL__ */
 
+ccl_device_inline float min3(float3 a)
+{
+       return min(min(a.x, a.y), a.z);
+}
+
 ccl_device_inline float max3(float3 a)
 {
        return max(max(a.x, a.y), a.z);