Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/intern/shaders/common_math_lib.glsl
| Show First 20 Lines • Show All 80 Lines • ▼ Show 20 Lines | |||||
| 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 safe_rcp(float a) { return (a != 0.0) ? (1.0 / a) : 0.0; } | float safe_rcp(float a) { return (a != 0.0) ? (1.0 / a) : 0.0; } | ||||
| vec2 safe_rcp(vec2 a) { return mix(vec2(0.0), (1.0 / a), notEqual(a, vec2(0.0))); } | vec2 safe_rcp(vec2 a) { return mix(vec2(0.0), (1.0 / a), notEqual(a, vec2(0.0))); } | ||||
| vec4 safe_rcp(vec4 a) { return mix(vec4(0.0), (1.0 / a), notEqual(a, vec4(0.0))); } | vec4 safe_rcp(vec4 a) { return mix(vec4(0.0), (1.0 / a), notEqual(a, vec4(0.0))); } | ||||
| float safe_sqrt(float a) { return sqrt(max(a, 0.0)); } | |||||
| float sqr(float a) { return a * a; } | float sqr(float a) { return a * a; } | ||||
| vec2 sqr(vec2 a) { return a * a; } | vec2 sqr(vec2 a) { return a * a; } | ||||
| vec3 sqr(vec3 a) { return a * a; } | vec3 sqr(vec3 a) { return a * a; } | ||||
| vec4 sqr(vec4 a) { return a * a; } | vec4 sqr(vec4 a) { return a * a; } | ||||
| /* Use manual powers for fixed powers. pow() can have unpredicatble results on some implementations. | /* Use manual powers for fixed powers. pow() can have unpredicatble results on some implementations. | ||||
| * (see T87369, T87541) */ | * (see T87369, T87541) */ | ||||
| float pow6(float x) { return sqr(sqr(x) * x); } | float pow6(float x) { return sqr(sqr(x) * x); } | ||||
| ▲ Show 20 Lines • Show All 91 Lines • Show Last 20 Lines | |||||