Attempt to fix GLSL errors on Blender startup.
authorBrecht Van Lommel <brechtvanlommel@gmail.com>
Tue, 15 Aug 2017 15:52:58 +0000 (17:52 +0200)
committerBrecht Van Lommel <brechtvanlommel@gmail.com>
Tue, 15 Aug 2017 16:52:25 +0000 (18:52 +0200)
I couldn't reproduce either, but calling min() with different argument
data types and indexing vectors with an index not known at compile time
seem likely to cause problems.

Ref T52404, T52404.

source/blender/draw/engines/eevee/shaders/ambient_occlusion_lib.glsl
source/blender/draw/modes/shaders/object_particle_prim_vert.glsl

index 6dc02d26321c68a93f18952d5a641bb9befa79a1..97f27ea96d6bfd613574b54e88c7fc5edec23442 100644 (file)
@@ -55,7 +55,7 @@ void get_max_horizon_grouped(vec4 co1, vec4 co2, vec3 x, float lod, inout float
 }
 
 #define MAX_ITER 16
-#define MAX_LOD 6
+#define MAX_LOD 6.0
 #define QUALITY 0.75
 vec2 search_horizon_sweep(vec2 t_phi, vec3 pos, vec2 uvs, float jitter, vec2 max_dir)
 {
index a950a9b86ba9f663145e2d5baee9ab2da172f8d9..54ae319307a0ae3b3e2111f12b5e9fb2ba80d24c 100644 (file)
@@ -39,16 +39,18 @@ void main()
        }
 
 #ifdef USE_AXIS
-       finalColor.rgb = vec3(0.0);
-       finalColor[axis] = 1.0;
+       if (axis == 0)
+               finalColor = vec4(1.0, 0.0, 0.0, 1.0);
+       else if (axis == 1)
+               finalColor = vec4(0.0, 1.0, 0.0, 1.0);
+       else
+               finalColor = vec4(0.0, 0.0, 1.0, 1.0);
 #else
        if (val < 0.0) {
-               finalColor.rgb = color;
+               finalColor = vec4(color, 1.0);
        }
        else {
-               finalColor.rgb = texture(ramp, val).rgb;
+               finalColor = vec4(texture(ramp, val).rgb, 1.0);
        }
 #endif
-
-       finalColor.a = 1.0;
 }