diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 2 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl | 11 | ||||
| -rw-r--r-- | indra/newview/llheroprobemanager.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llviewershadermgr.cpp | 5 | ||||
| -rw-r--r-- | indra/newview/pipeline.cpp | 14 | ||||
| -rw-r--r-- | indra/newview/pipeline.h | 1 | 
6 files changed, 23 insertions, 12 deletions
| diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 493ccec560..242e274daf 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -9206,7 +9206,7 @@      <key>Type</key>      <string>Boolean</string>      <key>Value</key> -    <integer>1</integer> +    <integer>0</integer>    </map>    <key>RenderScreenSpaceReflections</key>    <map> diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl index f5541df227..79d9000482 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl @@ -34,11 +34,13 @@ uniform sampler2D emissiveRect; // PBR linear packed Occlusion, Roughness, Metal  uniform samplerCubeArray   heroProbes; +#if defined(HERO_PROBES)  layout (std140) uniform HeroProbeData  {      vec4 heroPosition[1];      int heroProbeCount;  }; +#endif  const float M_PI = 3.14159265; @@ -196,15 +198,12 @@ void main()          vec3 v = -normalize(pos.xyz);          color = pbrBaseLight(diffuseColor, specularColor, metallic, v, norm.xyz, perceptualRoughness, light_dir, sunlit_linear, scol, radiance, irradiance, colorEmissive, ao, additive, atten); +        #ifdef HERO_PROBES          vec3 refnormpersp = reflect(pos.xyz, norm.xyz);          if (GET_GBUFFER_FLAG(GBUFFER_FLAG_HAS_MIRROR))              color = textureLod(heroProbes, vec4(env_mat * refnormpersp, 0), (1.0 - gloss) * 11).xyz * specularColor; -         -        if (do_atmospherics) -        { -            color = atmosFragLightingLinear(color, additive, atten); -        } +        #endif      }      else if (!GET_GBUFFER_FLAG(GBUFFER_FLAG_HAS_ATMOS))      { @@ -263,7 +262,9 @@ void main()              // add radiance map              applyGlossEnv(color, glossenv, spec, pos.xyz, norm.xyz); +            #ifdef HERO_PROBES              color = textureLod(heroProbes, vec4(env_mat * refnormpersp, 0), (1.0 - spec.a) * 11).xyz * spec.rgb; +            #endif          } diff --git a/indra/newview/llheroprobemanager.cpp b/indra/newview/llheroprobemanager.cpp index b6db123cd9..fdf782adee 100644 --- a/indra/newview/llheroprobemanager.cpp +++ b/indra/newview/llheroprobemanager.cpp @@ -67,7 +67,7 @@ LLHeroProbeManager::LLHeroProbeManager()  // helper class to seed octree with probes  void LLHeroProbeManager::update()  { -    if (!LLPipeline::sReflectionProbesEnabled || gTeleportDisplay || LLStartUp::getStartupState() < STATE_PRECACHE) +    if (!LLPipeline::RenderMirrors || gTeleportDisplay || LLStartUp::getStartupState() < STATE_PRECACHE)      {          return;      } diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index 693297d1e1..48c54f3dcc 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -1805,7 +1805,10 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()              gDeferredSoftenProgram.addPermutation("HAS_SUN_SHADOW", "1");          } -        gDeferredSoftenProgram.addPermutation("HERO_PROBES", "1"); +		if (LLPipeline::RenderMirrors) +		{ +            gDeferredSoftenProgram.addPermutation("HERO_PROBES", "1"); +		}  		if (gSavedSettings.getBOOL("RenderDeferredSSAO"))  		{ //if using SSAO, take screen space light map into account as if shadows are enabled diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 9e6af24f80..94f2dc4a2a 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -199,6 +199,7 @@ F32 LLPipeline::RenderScreenSpaceReflectionDepthRejectBias;  F32 LLPipeline::RenderScreenSpaceReflectionAdaptiveStepMultiplier;  S32 LLPipeline::RenderScreenSpaceReflectionGlossySamples;  S32 LLPipeline::RenderBufferVisualization; +bool LLPipeline::RenderMirrors;  LLTrace::EventStatHandle<S64> LLPipeline::sStatBatchSize("renderbatchsize");  const U32 LLPipeline::MAX_BAKE_WIDTH = 512; @@ -559,6 +560,7 @@ void LLPipeline::init()      connectRefreshCachedSettingsSafe("RenderScreenSpaceReflectionAdaptiveStepMultiplier");      connectRefreshCachedSettingsSafe("RenderScreenSpaceReflectionGlossySamples");  	connectRefreshCachedSettingsSafe("RenderBufferVisualization"); +    connectRefreshCachedSettingsSafe("RenderMirrors");  	gSavedSettings.getControl("RenderAutoHideSurfaceAreaLimit")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));  } @@ -1058,6 +1060,7 @@ void LLPipeline::refreshCachedSettings()      RenderScreenSpaceReflectionAdaptiveStepMultiplier = gSavedSettings.getF32("RenderScreenSpaceReflectionAdaptiveStepMultiplier");      RenderScreenSpaceReflectionGlossySamples = gSavedSettings.getS32("RenderScreenSpaceReflectionGlossySamples");  	RenderBufferVisualization = gSavedSettings.getS32("RenderBufferVisualization"); +    RenderMirrors = gSavedSettings.getBOOL("RenderMirrors");      sReflectionProbesEnabled = LLFeatureManager::getInstance()->isFeatureAvailable("RenderReflectionsEnabled") && gSavedSettings.getBOOL("RenderReflectionsEnabled");  	RenderSpotLight = nullptr; @@ -8645,11 +8648,14 @@ void LLPipeline::bindReflectionProbes(LLGLSLShader& shader)          bound = true;      } -    channel = shader.enableTexture(LLShaderMgr::HERO_PROBE, LLTexUnit::TT_CUBE_MAP_ARRAY); -    if (channel > -1 && mHeroProbeManager.mTexture.notNull()) +	if (RenderMirrors)      { -        mHeroProbeManager.mTexture->bind(channel); -        bound = true; +        channel = shader.enableTexture(LLShaderMgr::HERO_PROBE, LLTexUnit::TT_CUBE_MAP_ARRAY); +        if (channel > -1 && mHeroProbeManager.mTexture.notNull()) +        { +            mHeroProbeManager.mTexture->bind(channel); +            bound = true; +        }      } diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index 30bc95ad19..21c1d9a25d 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -1051,6 +1051,7 @@ public:  	static F32 RenderScreenSpaceReflectionAdaptiveStepMultiplier;  	static S32 RenderScreenSpaceReflectionGlossySamples;  	static S32 RenderBufferVisualization; +	static bool RenderMirrors;  };  void render_bbox(const LLVector3 &min, const LLVector3 &max); | 
