Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/intern/shaders/common_math_lib.glsl
| Show First 20 Lines • Show All 66 Lines • ▼ Show 20 Lines | |||||
| float sum(vec2 v) { return dot(vec2(1.0), v); } | float sum(vec2 v) { return dot(vec2(1.0), v); } | ||||
| float sum(vec3 v) { return dot(vec3(1.0), v); } | float sum(vec3 v) { return dot(vec3(1.0), v); } | ||||
| float sum(vec4 v) { return dot(vec4(1.0), v); } | float sum(vec4 v) { return dot(vec4(1.0), v); } | ||||
| float avg(vec2 v) { return dot(vec2(1.0 / 2.0), v); } | float avg(vec2 v) { return dot(vec2(1.0 / 2.0), v); } | ||||
| float avg(vec3 v) { return dot(vec3(1.0 / 3.0), v); } | float avg(vec3 v) { return dot(vec3(1.0 / 3.0), v); } | ||||
| float avg(vec4 v) { return dot(vec4(1.0 / 4.0), v); } | float avg(vec4 v) { return dot(vec4(1.0 / 4.0), v); } | ||||
| float sqr(float v) { return v * v; } | |||||
| /* clang-format on */ | /* clang-format on */ | ||||
| #define saturate(a) clamp(a, 0.0, 1.0) | #define saturate(a) clamp(a, 0.0, 1.0) | ||||
| float distance_squared(vec2 a, vec2 b) | float distance_squared(vec2 a, vec2 b) | ||||
| { | { | ||||
| a -= b; | a -= b; | ||||
| return dot(a, a); | return dot(a, a); | ||||
| } | } | ||||
| float distance_squared(vec3 a, vec3 b) | float distance_squared(vec3 a, vec3 b) | ||||
| { | { | ||||
| a -= b; | a -= b; | ||||
| return dot(a, a); | return dot(a, a); | ||||
| } | } | ||||
| float len_squared(vec3 a) | float len_squared(vec3 a) | ||||
| { | { | ||||
| return dot(a, a); | 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; | |||||
| } | |||||
| /** \} */ | /** \} */ | ||||
| /* ---------------------------------------------------------------------- */ | /* ---------------------------------------------------------------------- */ | ||||
| /** \name Fast Math | /** \name Fast Math | ||||
| * \{ */ | * \{ */ | ||||
| /* [Drobot2014a] Low Level Optimizations for GCN */ | /* [Drobot2014a] Low Level Optimizations for GCN */ | ||||
| float fast_sqrt(float v) | float fast_sqrt(float v) | ||||
| Show All 27 Lines | |||||