diff options
| author | Graham Linden <graham@lindenlab.com> | 2019-03-28 13:23:59 -0700 | 
|---|---|---|
| committer | Graham Linden <graham@lindenlab.com> | 2019-03-28 13:23:59 -0700 | 
| commit | 03426a7ddbf1b3bb8349241d3b52962026f7504a (patch) | |
| tree | c5b91aab3a61a95e2c667dbe9cda18f658b678d9 | |
| parent | 2bbb6c7e027ae12d18bef5db2cdc3e7ba41e8630 (diff) | |
SL-10829, SL-10830
Replace old spot prio calc.
Replace fudge factors on light radius and falloff for deferred lights.
9 files changed, 17 insertions, 21 deletions
| diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl index 3364d5b5fc..57916eb3e5 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl @@ -158,7 +158,7 @@ void main()  	proj_tc.xyz /= proj_tc.w; -	float fa = (falloff * 0.5)+1.0; +	float fa = falloff+1.0;  	float dist_atten = min(1.0-(dist-1.0*(1.0-fa))/fa, 1.0);  	dist_atten *= dist_atten;  	dist_atten *= 2.0; diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl index 55410c1ed7..f8264d971c 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl @@ -89,7 +89,7 @@ void main()      float noise = texture2D(noiseMap, frag.xy/128.0).b;      vec3 col = texture2DRect(diffuseRect, frag.xy).rgb; -    float fa = (falloff * 0.5)+1.0; +    float fa = falloff+1.0;      float dist_atten = clamp(1.0-(dist-1.0*(1.0-fa))/fa, 0.0, 1.0);      dist_atten *= dist_atten;      dist_atten *= 2.0; diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl index b546519a7d..d09bc25334 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl @@ -155,7 +155,7 @@ void main()  	proj_tc.xyz /= proj_tc.w; -	float fa = (falloff * 0.5)+1.0; +	float fa = falloff+1.0;  	float dist_atten = min(1.0-(dist-1.0*(1.0-fa))/fa, 1.0);  	dist_atten *= dist_atten;  	dist_atten *= 2.0; diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl index f817817f37..9e14c03a96 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl @@ -156,8 +156,8 @@ void main()      {          vec4 shd = texture2DRect(lightMap, frag.xy);          shadow = (proj_shadow_idx==0)?shd.b:shd.a; -        shadow = clamp(shadow, 0.0, 1.0);          shadow += shadow_fade; +        shadow = clamp(shadow, 0.0, 1.0);              }      vec3 norm = texture2DRect(normalMap, frag.xy).xyz; @@ -177,7 +177,7 @@ void main()      proj_tc.xyz /= proj_tc.w; -    float fa = (falloff * 0.5)+1.0; +    float fa = falloff+1.0;      float dist_atten = min(1.0-(dist-1.0*(1.0-fa))/fa, 1.0);      dist_atten *= dist_atten;      dist_atten *= 2.0; diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl index 510d1ca9fd..93b55ab9c1 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl @@ -156,8 +156,8 @@ void main()  	{  		vec4 shd = texture2DRect(lightMap, frag.xy);          shadow = (proj_shadow_idx == 0) ? shd.b : shd.a; -		shadow = clamp(shadow, 0.0, 1.0);          shadow += shadow_fade; +		shadow = clamp(shadow, 0.0, 1.0);          	}  	vec3 norm = texture2DRect(normalMap, frag.xy).xyz; @@ -175,7 +175,7 @@ void main()  	proj_tc.xyz /= proj_tc.w; -	float fa = (falloff * 0.5) + 1.0; +	float fa = falloff + 1.0;  	float dist_atten = min(1.0 - (dist - 1.0 * (1.0 - fa)) / fa, 1.0);  	dist_atten *= dist_atten;  	dist_atten *= 2.0; diff --git a/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl index dec9afcfb7..abb6a3a5d8 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/multiSpotLightF.glsl @@ -157,8 +157,8 @@ void main()      {          vec4 shd = texture2DRect(lightMap, frag.xy);          shadow = (proj_shadow_idx == 0) ? shd.b : shd.a; -        shadow = clamp(shadow, 0.0, 1.0);          shadow += shadow_fade; +        shadow = clamp(shadow, 0.0, 1.0);              }      vec3 norm = texture2DRect(normalMap, frag.xy).xyz; diff --git a/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl index 6a813cac15..afc542b8bc 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/spotLightF.glsl @@ -157,8 +157,8 @@ void main()      {          vec4 shd = texture2DRect(lightMap, frag.xy);          shadow = (proj_shadow_idx == 0) ? shd.b : shd.a; -        shadow = clamp(shadow, 0.0, 1.0);          shadow += shadow_fade; +        shadow = clamp(shadow, 0.0, 1.0);      }      vec3 norm = texture2DRect(normalMap, frag.xy).xyz; diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 4ddd9c4568..b4b3e19abc 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -3278,18 +3278,14 @@ void LLVOVolume::updateSpotLightPriority()      F32 r = getLightRadius();  	LLVector3 pos = mDrawable->getPositionAgent(); -#if OLD_SPOT_PRIO_CALC  	LLVector3 at(0,0,-1);  	at *= getRenderRotation();  	pos += at * r;  	at = LLViewerCamera::getInstance()->getAtAxis();  	pos -= at * r; -	 +  	mSpotLightPriority = gPipeline.calcPixelArea(pos, LLVector3(r,r,r), *LLViewerCamera::getInstance()); -#else -    mSpotLightPriority = (gAgent.getPositionAgent() - pos).length() + r; -#endif  	if (mLightTexture.notNull())  	{ diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 658410fd3d..4c93d16fb1 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -8703,7 +8703,7 @@ void LLPipeline::renderDeferredLighting(LLRenderTarget* screen_target)                      LLVector4a center;                      center.load3(drawablep->getPositionAgent().mV);                      const F32* c = center.getF32ptr(); -                    F32 s = volume->getLightRadius(); +                    F32 s = volume->getLightRadius()*1.5f;                      LLColor3 col = volume->getLightColor(); @@ -8750,7 +8750,7 @@ void LLPipeline::renderDeferredLighting(LLRenderTarget* screen_target)                              gDeferredLightProgram.uniform3fv(LLShaderMgr::LIGHT_CENTER, 1, c);                              gDeferredLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, s);                              gDeferredLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, col.mV); -                            gDeferredLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()); +                            gDeferredLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()*0.5f);                              gGL.syncMatrices();                              mCubeVB->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, get_box_fan_indices(camera, center)); @@ -8770,7 +8770,7 @@ void LLPipeline::renderDeferredLighting(LLRenderTarget* screen_target)                          mat.mult_matrix_vec(tc);                          fullscreen_lights.push_back(LLVector4(tc.v[0], tc.v[1], tc.v[2], s)); -                        light_colors.push_back(LLVector4(col.mV[0], col.mV[1], col.mV[2], volume->getLightFalloff())); +                        light_colors.push_back(LLVector4(col.mV[0], col.mV[1], col.mV[2], volume->getLightFalloff()*0.5f));                      }                  }                  unbindDeferredShader(gDeferredLightProgram); @@ -8795,7 +8795,7 @@ void LLPipeline::renderDeferredLighting(LLRenderTarget* screen_target)                      LLVector4a center;                      center.load3(drawablep->getPositionAgent().mV);                      const F32* c = center.getF32ptr(); -                    F32 s = volume->getLightRadius(); +                    F32 s = volume->getLightRadius()*1.5f;                      sVisibleLightCount++; @@ -8809,7 +8809,7 @@ void LLPipeline::renderDeferredLighting(LLRenderTarget* screen_target)                      gDeferredSpotLightProgram.uniform3fv(LLShaderMgr::LIGHT_CENTER, 1, c);                      gDeferredSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, s);                      gDeferredSpotLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, col.mV); -                    gDeferredSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()); +                    gDeferredSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()*0.5f);                      gGL.syncMatrices();                      mCubeVB->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, get_box_fan_indices(camera, center)); @@ -8888,7 +8888,7 @@ void LLPipeline::renderDeferredLighting(LLRenderTarget* screen_target)                      LLVector3 center = drawablep->getPositionAgent();                      F32* c = center.mV; -                    F32 s = volume->getLightRadius(); +                    F32 s = volume->getLightRadius()*1.5f;                      sVisibleLightCount++; @@ -8906,7 +8906,7 @@ void LLPipeline::renderDeferredLighting(LLRenderTarget* screen_target)                      gDeferredMultiSpotLightProgram.uniform3fv(LLShaderMgr::LIGHT_CENTER, 1, tc.v);                      gDeferredMultiSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, s);                      gDeferredMultiSpotLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, col.mV); -                    gDeferredMultiSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()); +                    gDeferredMultiSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()*0.5f);                      mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3);                  } | 
