[Bf-blender-cvs] [31f2f1b5f22] blender2.8: Eevee: Fix compilation issue on certain driver.

Clément Foucault noreply at git.blender.org
Fri May 5 12:57:38 CEST 2017


Commit: 31f2f1b5f2243b1338e25b617bc783c2edf18e7d
Author: Clément Foucault
Date:   Fri May 5 12:10:59 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB31f2f1b5f2243b1338e25b617bc783c2edf18e7d

Eevee: Fix compilation issue on certain driver.

===================================================================

M	source/blender/draw/engines/eevee/shaders/background_vert.glsl
M	source/blender/gpu/shaders/gpu_shader_material.glsl

===================================================================

diff --git a/source/blender/draw/engines/eevee/shaders/background_vert.glsl b/source/blender/draw/engines/eevee/shaders/background_vert.glsl
index ef94c775336..e70ffe4d2f0 100644
--- a/source/blender/draw/engines/eevee/shaders/background_vert.glsl
+++ b/source/blender/draw/engines/eevee/shaders/background_vert.glsl
@@ -6,7 +6,10 @@ in vec2 pos;
 out vec3 varposition;
 out vec3 varnormal;
 out vec3 viewPosition;
+
+/* necessary for compilation*/
 out vec3 worldPosition;
+out vec3 worldNormal;
 
 void main()
 {
diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl
index 6e38844ead3..99186064969 100644
--- a/source/blender/gpu/shaders/gpu_shader_material.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_material.glsl
@@ -176,9 +176,12 @@ void color_to_blender_normal_new_shading(vec3 color, out vec3 normal)
 	normal.y = -2.0 * ((color.g) - 0.5);
 	normal.z = -2.0 * ((color.b) - 0.5);
 }
-
+#ifndef M_PI
 #define M_PI 3.14159265358979323846
+#endif
+#ifndef M_1_PI
 #define M_1_PI 0.318309886183790671538
+#endif
 
 /*********** SHADER NODES ***************/
 
@@ -2583,6 +2586,24 @@ vec3 rotate_vector(vec3 p, vec3 n, float theta) {
 
 #define NUM_LIGHTS 3
 
+#if __VERSION__ > 120
+struct glLight {
+	vec4 position;
+	vec4 diffuse;
+	vec4 specular;
+	vec4 halfVector;
+};
+
+layout(std140) uniform lightSource {
+	glLight glLightSource[NUM_LIGHTS];
+};
+
+#define gl_NormalMatrix NormalMatrix
+
+#else
+#define glLightSource gl_LightSource
+#endif
+
 /* bsdfs */
 
 void node_bsdf_diffuse(vec4 color, float roughness, vec3 N, out vec4 result)
@@ -2592,8 +2613,8 @@ void node_bsdf_diffuse(vec4 color, float roughness, vec3 N, out vec4 result)
 
 	/* directional lights */
 	for (int i = 0; i < NUM_LIGHTS; i++) {
-		vec3 light_position = gl_LightSource[i].position.xyz;
-		vec3 light_diffuse = gl_LightSource[i].diffuse.rgb;
+		vec3 light_position = glLightSource[i].position.xyz;
+		vec3 light_diffuse = glLightSource[i].diffuse.rgb;
 
 		float bsdf = max(dot(N, light_position), 0.0);
 		L += light_diffuse * bsdf;
@@ -2609,10 +2630,10 @@ void node_bsdf_glossy(vec4 color, float roughness, vec3 N, out vec4 result)
 
 	/* directional lights */
 	for (int i = 0; i < NUM_LIGHTS; i++) {
-		vec3 light_position = gl_LightSource[i].position.xyz;
-		vec3 H = gl_LightSource[i].halfVector.xyz;
-		vec3 light_diffuse = gl_LightSource[i].diffuse.rgb;
-		vec3 light_specular = gl_LightSource[i].specular.rgb;
+		vec3 light_position = glLightSource[i].position.xyz;
+		vec3 H = glLightSource[i].halfVector.xyz;
+		vec3 light_diffuse = glLightSource[i].diffuse.rgb;
+		vec3 light_specular = glLightSource[i].specular.rgb;
 
 		/* we mix in some diffuse so low roughness still shows up */
 		float bsdf = 0.5 * pow(max(dot(N, H), 0.0), 1.0 / roughness);
@@ -2683,12 +2704,12 @@ void node_bsdf_principled(vec4 base_color, float subsurface, vec3 subsurface_rad
 
 	/* directional lights */
 	for (int i = 0; i < NUM_LIGHTS; i++) {
-		vec3 light_position_world = gl_LightSource[i].position.xyz;
+		vec3 light_position_world = glLightSource[i].position.xyz;
 		vec3 light_position = normalize(gl_NormalMatrix * light_position_world);
 
 		vec3 H = normalize(light_position + V);
 
-		vec3 light_specular = gl_LightSource[i].specular.rgb;
+		vec3 light_specular = glLightSource[i].specular.rgb;
 
 		float NdotL = dot(N, light_position);
 		float NdotV = dot(N, V);




More information about the Bf-blender-cvs mailing list