From 4a713b8d83638c505685892677e9df1d764043e6 Mon Sep 17 00:00:00 2001 From: Eugene Golushkov Date: Wed, 9 Oct 2024 18:26:13 +0200 Subject: [PATCH] Reduce shaders variability, avoiding writing to shader code lines like *** target_envprobe_map 1460524074 --- Components/Hlms/Pbs/src/OgreHlmsPbs.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Components/Hlms/Pbs/src/OgreHlmsPbs.cpp b/Components/Hlms/Pbs/src/OgreHlmsPbs.cpp index 5c262cbf02..930591bc02 100644 --- a/Components/Hlms/Pbs/src/OgreHlmsPbs.cpp +++ b/Components/Hlms/Pbs/src/OgreHlmsPbs.cpp @@ -1146,9 +1146,16 @@ namespace Ogre if( getProperty( tid, HlmsBaseProp::Pose ) > 0 ) setProperty( tid, HlmsBaseProp::VertexId, 1 ); - const int32 envProbeMapVal = getProperty( tid, PbsProperty::EnvProbeMap ); - const bool canUseManualProbe = - envProbeMapVal && envProbeMapVal != getProperty( tid, PbsProperty::TargetEnvprobeMap ); + const int32 envProbeMap = getProperty( tid, PbsProperty::EnvProbeMap ); + const int32 targetEnvProbeMap = getProperty( tid, PbsProperty::TargetEnvprobeMap ); + const bool canUseManualProbe = envProbeMap && envProbeMap != targetEnvProbeMap; + + // Reduce shaders variability, reset EnvProbeMap and TargetEnvprobeMap to 1 or 0 + // preserving outcome of predicate 'envprobe_map && envprobe_map != target_envprobe_map' + if( envProbeMap ) + setProperty( tid, PbsProperty::EnvProbeMap, 1 ); + setProperty( tid, PbsProperty::TargetEnvprobeMap, envProbeMap == targetEnvProbeMap ); + if( canUseManualProbe || getProperty( tid, PbsProperty::ParallaxCorrectCubemaps ) ) { setProperty( tid, PbsProperty::UseEnvProbeMap, 1 ); @@ -1368,8 +1375,6 @@ namespace Ogre } } - const int32 envProbeMap = getProperty( tid, PbsProperty::EnvProbeMap ); - const int32 targetEnvProbeMap = getProperty( tid, PbsProperty::TargetEnvprobeMap ); if( ( envProbeMap && envProbeMap != targetEnvProbeMap ) || parallaxCorrectCubemaps ) { if( !envProbeMap || envProbeMap == targetEnvProbeMap )