summaryrefslogtreecommitdiff
path: root/indra/newview/app_settings/shaders/class1/deferred
diff options
context:
space:
mode:
authorGraham Linden <graham@lindenlab.com>2019-03-07 10:56:26 -0800
committerGraham Linden <graham@lindenlab.com>2019-03-07 10:56:26 -0800
commit423fa1ac297e39c9395f45490278b8751188b6db (patch)
tree35b1689b3121f59448e53d06ba22f7d4118df305 /indra/newview/app_settings/shaders/class1/deferred
parentf488e5855a310d0db55baac758da5c2f8621d2ee (diff)
SL-10618, SL-10698
Fix reflection/distortion map culling planes again. Fix broken handling of shadow disables in ALM forward shaders.
Diffstat (limited to 'indra/newview/app_settings/shaders/class1/deferred')
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl23
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl4
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/fullbrightShinyF.glsl4
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/materialF.glsl34
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/materialV.glsl22
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl15
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/waterF.glsl2
7 files changed, 35 insertions, 69 deletions
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
index 9191787273..a5076ef609 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
@@ -77,17 +77,11 @@ vec2 encode_normal (vec3 n);
vec3 scaleSoftClipFrag(vec3 l);
vec3 atmosFragLighting(vec3 light, vec3 additive, vec3 atten);
-#if defined(VERT_ATMOSPHERICS)
-vec3 getSunlitColor();
-vec3 getAmblitColor();
-vec3 getAdditiveColor();
-vec3 getAtmosAttenuation();
-void calcAtmospherics(vec3 inPositionEye, float ambFactor);
-#else
void calcFragAtmospherics(vec3 inPositionEye, float ambFactor, out vec3 sunlit, out vec3 amblit, out vec3 atten, out vec3 additive);
-#endif
+#ifdef HAS_SHADOW
float sampleDirectionalShadow(vec3 pos, vec3 norm, vec2 pos_screen);
+#endif
vec3 calcPointLightOrSpotLight(vec3 light_col, vec3 diffuse, vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight, float ambiance ,float shadow)
{
@@ -142,7 +136,11 @@ void main()
vec4 pos = vec4(vary_position, 1.0);
vec3 norm = vary_norm;
- float shadow = sampleDirectionalShadow(pos.xyz, norm.xyz, frag);
+ float shadow = 1.0f;
+
+#ifdef HAS_SHADOW
+ shadow = sampleDirectionalShadow(pos.xyz, norm.xyz, frag);
+#endif
#ifdef USE_INDEXED_TEX
vec4 diff = diffuseLookup(vary_texcoord0.xy);
@@ -184,14 +182,7 @@ void main()
vec3 additive;
vec3 atten;
-#if defined(VERT_ATMOSPHERICS)
- sunlit = getSunlitColor();
- amblit = getAmblitColor();
- additive = getAdditiveColor();
- atten = getAtmosAttenuation();
-#else
calcFragAtmospherics(pos.xyz, 1.0, sunlit, amblit, additive, atten);
-#endif
vec2 abnormal = encode_normal(norm.xyz);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
index 2db737a427..08ddaeceb3 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
@@ -33,7 +33,7 @@ out vec4 frag_color;
#define frag_color gl_FragColor
#endif
-#if !HAS_DIFFUSE_LOOKUP
+#if !defined(HAS_DIFFUSE_LOOKUP)
uniform sampler2D diffuseMap;
#endif
@@ -62,7 +62,7 @@ uniform float minimum_alpha;
void main()
{
-#if HAS_DIFFUSE_LOOKUP
+#ifdef HAS_DIFFUSE_LOOKUP
vec4 color = diffuseLookup(vary_texcoord0.xy);
#else
vec4 color = texture2D(diffuseMap, vary_texcoord0.xy);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightShinyF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightShinyF.glsl
index 30e560450b..4005d5064d 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightShinyF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightShinyF.glsl
@@ -31,7 +31,7 @@ out vec4 frag_color;
#define frag_color gl_FragColor
#endif
-#ifndef diffuseLookup
+#ifndef HAS_DIFFUSE_LOOKUP
uniform sampler2D diffuseMap;
#endif
@@ -46,7 +46,7 @@ vec3 fullbrightScaleSoftClip(vec3 light);
void main()
{
-#if HAS_DIFFUSE_LOOKUP
+#ifdef HAS_DIFFUSE_LOOKUP
vec4 color = diffuseLookup(vary_texcoord0.xy);
#else
vec4 color = texture2D(diffuseMap, vary_texcoord0.xy);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl
index 4db2b9ae54..dd691fb36b 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl
@@ -41,14 +41,7 @@ vec4 applyWaterFogView(vec3 pos, vec4 color);
vec3 atmosFragLighting(vec3 l, vec3 additive, vec3 atten);
vec3 scaleSoftClipFrag(vec3 l);
-#if defined(VERT_ATMOSPHERICS)
-vec3 getSunlitColor();
-vec3 getAmblitColor();
-vec3 getAdditiveColor();
-vec3 getAtmosAttenuation();
-#else
void calcFragAtmospherics(vec3 inPositionEye, float ambFactor, out vec3 sunlit, out vec3 amblit, out vec3 additive, out vec3 atten);
-#endif
vec3 srgb_to_linear(vec3 cs);
vec3 linear_to_srgb(vec3 cs);
@@ -61,7 +54,9 @@ out vec4 frag_color;
#define frag_color gl_FragColor
#endif
+#ifdef HAS_SUN_SHADOW
float sampleDirectionalShadow(vec3 pos, vec3 norm, vec2 pos_screen);
+#endif
uniform samplerCube environmentMap;
uniform sampler2D lightFunc;
@@ -172,11 +167,11 @@ out vec4 frag_data[3];
uniform sampler2D diffuseMap;
-#if HAS_NORMAL_MAP
+#ifdef HAS_NORMAL_MAP
uniform sampler2D bumpMap;
#endif
-#if HAS_SPECULAR_MAP
+#ifdef HAS_SPECULAR_MAP
uniform sampler2D specularMap;
VARYING vec2 vary_texcoord2;
@@ -189,7 +184,7 @@ uniform vec4 specular_color; // specular color RGB and specular exponent (gloss
uniform float minimum_alpha;
#endif
-#if HAS_NORMAL_MAP
+#ifdef HAS_NORMAL_MAP
VARYING vec3 vary_mat0;
VARYING vec3 vary_mat1;
VARYING vec3 vary_mat2;
@@ -221,14 +216,14 @@ void main()
vec3 gamma_diff = diffcol.rgb;
#endif
-#if HAS_SPECULAR_MAP
+#ifdef HAS_SPECULAR_MAP
vec4 spec = texture2D(specularMap, vary_texcoord2.xy);
spec.rgb *= specular_color.rgb;
#else
vec4 spec = vec4(specular_color.rgb, 1.0);
#endif
-#if HAS_NORMAL_MAP
+#ifdef HAS_NORMAL_MAP
vec4 norm = texture2D(bumpMap, vary_texcoord1.xy);
norm.xyz = norm.xyz * 2 - 1;
@@ -255,7 +250,7 @@ void main()
#endif
vec4 final_specular = spec;
-#if HAS_SPECULAR_MAP
+#ifdef HAS_SPECULAR_MAP
vec4 final_normal = vec4(encode_normal(normalize(tnorm)), env_intensity * spec.a, 0.0);
final_specular.a = specular_color.a * norm.a;
#else
@@ -268,8 +263,12 @@ void main()
//forward rendering, output just lit RGBA
vec3 pos = vary_position;
- float shadow = sampleDirectionalShadow(pos.xyz, norm.xyz, pos_screen);
+ float shadow = 1.0f;
+#ifdef HAS_SUN_SHADOW
+ shadow = sampleDirectionalShadow(pos.xyz, norm.xyz, pos_screen);
+#endif
+
spec = final_specular;
vec4 diffuse = final_color;
@@ -285,14 +284,7 @@ void main()
vec3 additive;
vec3 atten;
-#if defined(VERT_ATMOSPHERICS)
- sunlit = getSunlitColor();
- amblit = getAmblitColor();
- additive = getAdditiveColor();
- atten = getAtmosAttenuation();
-#else
calcFragAtmospherics(pos.xyz, 1.0, sunlit, amblit, additive, atten);
-#endif
vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
diff --git a/indra/newview/app_settings/shaders/class1/deferred/materialV.glsl b/indra/newview/app_settings/shaders/class1/deferred/materialV.glsl
index 393d1e69da..7e29ada205 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/materialV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/materialV.glsl
@@ -28,7 +28,7 @@
#define DIFFUSE_ALPHA_MODE_MASK 2
#define DIFFUSE_ALPHA_MODE_EMISSIVE 3
-#if HAS_SKIN
+#ifdef HAS_SKIN
uniform mat4 modelview_matrix;
uniform mat4 projection_matrix;
mat4 getObjectSkinnedTransform();
@@ -39,7 +39,7 @@ uniform mat4 modelview_projection_matrix;
#if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_BLEND)
-#if !HAS_SKIN
+#if !defined(HAS_SKIN)
uniform mat4 modelview_matrix;
#endif
@@ -55,7 +55,7 @@ ATTRIBUTE vec3 normal;
ATTRIBUTE vec2 texcoord0;
-#if HAS_NORMAL_MAP
+#ifdef HAS_NORMAL_MAP
ATTRIBUTE vec4 tangent;
ATTRIBUTE vec2 texcoord1;
@@ -68,7 +68,7 @@ VARYING vec2 vary_texcoord1;
VARYING vec3 vary_normal;
#endif
-#if HAS_SPECULAR_MAP
+#ifdef HAS_SPECULAR_MAP
ATTRIBUTE vec2 texcoord2;
VARYING vec2 vary_texcoord2;
#endif
@@ -78,7 +78,7 @@ VARYING vec2 vary_texcoord0;
void main()
{
-#if HAS_SKIN
+#ifdef HAS_SKIN
mat4 mat = getObjectSkinnedTransform();
mat = modelview_matrix * mat;
@@ -99,17 +99,17 @@ void main()
vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
-#if HAS_NORMAL_MAP
+#ifdef HAS_NORMAL_MAP
vary_texcoord1 = (texture_matrix0 * vec4(texcoord1,0,1)).xy;
#endif
-#if HAS_SPECULAR_MAP
+#ifdef HAS_SPECULAR_MAP
vary_texcoord2 = (texture_matrix0 * vec4(texcoord2,0,1)).xy;
#endif
-#if HAS_SKIN
+#ifdef HAS_SKIN
vec3 n = normalize((mat*vec4(normal.xyz+position.xyz,1.0)).xyz-pos.xyz);
-#if HAS_NORMAL_MAP
+#ifdef HAS_NORMAL_MAP
vec3 t = normalize((mat*vec4(tangent.xyz+position.xyz,1.0)).xyz-pos.xyz);
vec3 b = cross(n, t)*tangent.w;
@@ -121,7 +121,7 @@ vary_normal = n;
#endif //HAS_NORMAL_MAP
#else //HAS_SKIN
vec3 n = normalize(normal_matrix * normal);
-#if HAS_NORMAL_MAP
+#ifdef HAS_NORMAL_MAP
vec3 t = normalize(normal_matrix * tangent.xyz);
vec3 b = cross(n,t)*tangent.w;
//vec3 t = cross(b,n) * binormal.w;
@@ -137,7 +137,7 @@ vary_normal = n;
vertex_color = diffuse_color;
#if (DIFFUSE_ALPHA_MODE == DIFFUSE_ALPHA_MODE_BLEND)
-#if !HAS_SKIN
+#if !defined(HAS_SKIN)
vary_position = (modelview_matrix*vec4(position.xyz, 1.0)).xyz;
#endif
#endif
diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
index bd187ed5fc..07a24698a9 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
@@ -71,15 +71,7 @@ vec3 getNorm(vec2 pos_screen);
vec3 atmosFragLighting(vec3 l, vec3 additive, vec3 atten);
vec3 fullbrightAtmosTransportFrag(vec3 l, vec3 additive, vec3 atten);
-#if defined(VERT_ATMOSPHERICS)
-vec3 getPositionEye();
-vec3 getSunlitColor();
-vec3 getAmblitColor();
-vec3 getAdditiveColor();
-vec3 getAtmosAttenuation();
-#else
void calcFragAtmospherics(vec3 inPositionEye, float ambFactor, out vec3 sunlit, out vec3 amblit, out vec3 additive, out vec3 atten);
-#endif
vec3 scaleSoftClip(vec3 l);
vec3 fullbrightScaleSoftClip(vec3 l);
@@ -114,14 +106,7 @@ void main()
vec3 additive;
vec3 atten;
-#if defined(VERT_ATMOSPHERICS)
- sunlit = getSunlitColor();
- amblit = getAmblitColor();
- additive = getAdditiveColor();
- atten = getAtmosAttenuation();
-#else
calcFragAtmospherics(pos.xyz, 1.0, sunlit, amblit, additive, atten);
-#endif
float ambient = min(abs(da), 1.0);
ambient *= 0.5;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
index 628f73da59..be5e3538a7 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
@@ -167,8 +167,6 @@ void main()
vec3 screenspacewavef = normalize((norm_mat*vec4(wavef, 1.0)).xyz);
-color.rgb = max(fb.rgb, refcol.rgb);
-
frag_data[0] = vec4(color.rgb, 1); // diffuse
frag_data[1] = vec4(0); // speccolor, spec
frag_data[2] = vec4(encode_normal(screenspacewavef.xyz*0.5+0.5), 0.05, 0);// normalxy, 0, 0