[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