Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/draw/intern/shaders/common_math_lib.glsl')
-rw-r--r--source/blender/draw/intern/shaders/common_math_lib.glsl10
1 files changed, 10 insertions, 0 deletions
diff --git a/source/blender/draw/intern/shaders/common_math_lib.glsl b/source/blender/draw/intern/shaders/common_math_lib.glsl
index 9cb1723346d..0213ba2622b 100644
--- a/source/blender/draw/intern/shaders/common_math_lib.glsl
+++ b/source/blender/draw/intern/shaders/common_math_lib.glsl
@@ -96,6 +96,7 @@ float len_squared(vec2 a) { return dot(a, a); }
#define weighted_sum(val0, val1, val2, val3, weights) ((val0 * weights[0] + val1 * weights[1] + val2 * weights[2] + val3 * weights[3]) * safe_rcp(sum(weights)));
#define weighted_sum_array(val, weights) ((val[0] * weights[0] + val[1] * weights[1] + val[2] * weights[2] + val[3] * weights[3]) * safe_rcp(sum(weights)));
+
/* clang-format on */
#define saturate(a) clamp(a, 0.0, 1.0)
@@ -112,6 +113,15 @@ float distance_squared(vec3 a, vec3 b)
return dot(a, a);
}
+vec3 safe_normalize(vec3 v)
+{
+ float len = length(v);
+ if (isnan(len) || len == 0.0) {
+ return vec3(1.0, 0.0, 0.0);
+ }
+ return v / len;
+}
+
/** \} */
/* ---------------------------------------------------------------------- */