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_geom_lib.glsl')
-rw-r--r--source/blender/draw/intern/shaders/common_math_geom_lib.glsl17
1 files changed, 17 insertions, 0 deletions
diff --git a/source/blender/draw/intern/shaders/common_math_geom_lib.glsl b/source/blender/draw/intern/shaders/common_math_geom_lib.glsl
index 643d7e7d942..7b701d1d81b 100644
--- a/source/blender/draw/intern/shaders/common_math_geom_lib.glsl
+++ b/source/blender/draw/intern/shaders/common_math_geom_lib.glsl
@@ -83,6 +83,13 @@ float line_unit_box_intersect_dist(vec3 lineorigin, vec3 linedirection)
return min_v3(furthestplane);
}
+float line_unit_box_intersect_dist_safe(vec3 lineorigin, vec3 linedirection)
+{
+ vec3 safe_linedirection = max(vec3(1e-8), abs(linedirection)) *
+ mix(vec3(1.0), -vec3(1.0), lessThan(linedirection, vec3(0.0)));
+ return line_unit_box_intersect_dist(lineorigin, safe_linedirection);
+}
+
/** \} */
/* ---------------------------------------------------------------------- */
@@ -116,4 +123,14 @@ vec3 normal_decode(vec2 enc, vec3 view)
return n;
}
+vec3 tangent_to_world(vec3 vector, vec3 N, vec3 T, vec3 B)
+{
+ return T * vector.x + B * vector.y + N * vector.z;
+}
+
+vec3 world_to_tangent(vec3 vector, vec3 N, vec3 T, vec3 B)
+{
+ return vec3(dot(T, vector), dot(B, vector), dot(N, vector));
+}
+
/** \} */