Merge branch 'master' into blender2.8
[blender.git] / source / blender / gpu / shaders / gpu_shader_material.glsl
index 4aaaab2c5ad6a123333765d2ac61f6701ea4702f..5d0ca35cc1f4f54c813d98e09fc5447191fc8bdf 100644 (file)
@@ -3348,7 +3348,10 @@ float calc_gradient(vec3 p, int gradient_type)
                return atan(y, x) / (M_PI * 2) + 0.5;
        }
        else {
-               float r = max(1.0 - sqrt(x * x + y * y + z * z), 0.0);
+               /* Bias a little bit for the case where p is a unit length vector,
+                * to get exactly zero instead of a small random value depending
+                * on float precision. */
+               float r = max(0.999999 - sqrt(x * x + y * y + z * z), 0.0);
                if (gradient_type == 5) {  /* quadratic sphere */
                        return r * r;
                }