summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGraham Linden <graham@lindenlab.com>2019-05-04 09:11:59 -0700
committerGraham Linden <graham@lindenlab.com>2019-05-04 09:11:59 -0700
commit42397056089245da248d1aae6318239e90fbf866 (patch)
tree8ac6dc7ea7160a12f8b82216d474cb9470870ac4
parent24acb7d5c3b6c3af4d7d814b8ccb0b9652eb38d3 (diff)
Fix broken water reflection/refraction mix.
Restore 1.0 alpha to prevent atmo being applied directly to water. Fix broken shadow frust generation.
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/waterF.glsl6
-rw-r--r--indra/newview/pipeline.cpp3
2 files changed, 4 insertions, 5 deletions
diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
index e72b36f28a..8fea4e5d27 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
@@ -149,14 +149,14 @@ void main()
vec4 fb = texture2D(screenTex, distort2);
//mix with reflection
- color.rgb = fb.rgb;
- color.rgb += refcol.rgb * df1;
+ // Note we actually want to use just df1, but multiplying by 0.999999 gets around an nvidia compiler bug
+ color.rgb = mix(fb.rgb, refcol.rgb, df1 * 0.99999);
vec4 pos = vary_position;
vec3 screenspacewavef = normalize((norm_mat*vec4(wavef, 1.0)).xyz);
- frag_data[0] = vec4(color.rgb, 0.25); // diffuse
+ frag_data[0] = vec4(color.rgb, 0); // diffuse
frag_data[1] = vec4(specular * 0.15, 0.5); // speccolor, spec
frag_data[2] = vec4(encode_normal(screenspacewavef.xyz), 0.05, 0);// normalxy, 0, 0
}
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 9d8f5721d2..f1a75f1277 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -10181,8 +10181,7 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
//LLVector3 n = RenderShadowNearDist;
//F32 nearDist[] = { n.mV[0], n.mV[1], n.mV[2], n.mV[2] };
- LLVector3 caster_dir(environment.getIsSunUp() ? LLVector3(environment.getClampedSunNorm()) :
- environment.getIsMoonUp() ? LLVector3(environment.getClampedMoonNorm()) : LLVector3(0,0,1));
+ LLVector3 caster_dir(environment.getIsSunUp() ? mSunDir : mMoonDir);
//put together a universal "near clip" plane for shadow frusta
LLPlane shadow_near_clip;