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/engines/eevee/shaders/default_world_frag.glsl')
-rw-r--r--source/blender/draw/engines/eevee/shaders/default_world_frag.glsl55
1 files changed, 28 insertions, 27 deletions
diff --git a/source/blender/draw/engines/eevee/shaders/default_world_frag.glsl b/source/blender/draw/engines/eevee/shaders/default_world_frag.glsl
index 7c00c9f3b73..0be2a8d6a12 100644
--- a/source/blender/draw/engines/eevee/shaders/default_world_frag.glsl
+++ b/source/blender/draw/engines/eevee/shaders/default_world_frag.glsl
@@ -13,50 +13,51 @@ uniform sampler2D image;
uniform float studioLightBackground = 1.0;
in vec3 viewPosition;
-#define M_PI 3.14159265358979323846
+# define M_PI 3.14159265358979323846
vec3 background_transform_to_world(vec3 viewvec)
{
- vec4 v = (ProjectionMatrix[3][3] == 0.0) ? vec4(viewvec, 1.0) : vec4(0.0, 0.0, 1.0, 1.0);
- vec4 co_homogenous = (ProjectionMatrixInverse * v);
+ vec4 v = (ProjectionMatrix[3][3] == 0.0) ? vec4(viewvec, 1.0) : vec4(0.0, 0.0, 1.0, 1.0);
+ vec4 co_homogenous = (ProjectionMatrixInverse * v);
- vec4 co = vec4(co_homogenous.xyz / co_homogenous.w, 0.0);
- return (ViewMatrixInverse * co).xyz;
+ vec4 co = vec4(co_homogenous.xyz / co_homogenous.w, 0.0);
+ return (ViewMatrixInverse * co).xyz;
}
float hypot(float x, float y)
{
- return sqrt(x * x + y * y);
+ return sqrt(x * x + y * y);
}
vec4 node_tex_environment_equirectangular(vec3 co, sampler2D ima)
{
- vec3 nco = normalize(co);
- float u = -atan(nco.y, nco.x) / (2.0 * M_PI) + 0.5;
- float v = atan(nco.z, hypot(nco.x, nco.y)) / M_PI + 0.5;
-
- /* Fix pole bleeding */
- float width = float(textureSize(ima, 0).x);
- float texel_width = 1.0 / width;
- v = clamp(v, texel_width, 1.0 - texel_width);
-
- /* Fix u = 0 seam */
- /* This is caused by texture filtering, since uv don't have smooth derivatives
- * at u = 0 or 2PI, hardware filtering is using the smallest mipmap for certain
- * texels. So we force the highest mipmap and don't do anisotropic filtering. */
- return textureLod(ima, vec2(u, v), 0.0);
+ vec3 nco = normalize(co);
+ float u = -atan(nco.y, nco.x) / (2.0 * M_PI) + 0.5;
+ float v = atan(nco.z, hypot(nco.x, nco.y)) / M_PI + 0.5;
+
+ /* Fix pole bleeding */
+ float width = float(textureSize(ima, 0).x);
+ float texel_width = 1.0 / width;
+ v = clamp(v, texel_width, 1.0 - texel_width);
+
+ /* Fix u = 0 seam */
+ /* This is caused by texture filtering, since uv don't have smooth derivatives
+ * at u = 0 or 2PI, hardware filtering is using the smallest mipmap for certain
+ * texels. So we force the highest mipmap and don't do anisotropic filtering. */
+ return textureLod(ima, vec2(u, v), 0.0);
}
#endif
-void main() {
- vec3 background_color;
+void main()
+{
+ vec3 background_color;
#ifdef LOOKDEV
- vec3 worldvec = background_transform_to_world(viewPosition);
- background_color = node_tex_environment_equirectangular(StudioLightMatrix * worldvec, image).rgb;
- background_color = mix(color, background_color, studioLightBackground);
+ vec3 worldvec = background_transform_to_world(viewPosition);
+ background_color = node_tex_environment_equirectangular(StudioLightMatrix * worldvec, image).rgb;
+ background_color = mix(color, background_color, studioLightBackground);
#else
- background_color = color;
+ background_color = color;
#endif
- FragColor = vec4(clamp(background_color, vec3(0.0), vec3(1e10)), 1.0) * backgroundAlpha;
+ FragColor = vec4(clamp(background_color, vec3(0.0), vec3(1e10)), 1.0) * backgroundAlpha;
}