Eevee: Fix compilation issue on certain driver.
This commit is contained in:
parent
8b8792e7b8
commit
31f2f1b5f2
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue