From d8618be49904f382ccdf77cdb04aa469cfd4663b Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Wed, 17 Dec 2025 18:22:26 -0600 Subject: [PATCH] hdr format caching sidesteps reinitialization we never actually turn hdr off. so drop a few assumptions about it starting in the disabled state fix HDRPostFX::minLuminace --- .../core/postFX/scripts/HDR/HDRPostFX.tscript | 25 +++++++++++-------- .../scripts/default.postfxpreset.tscript | 2 +- .../core/rendering/Core_Rendering.tscript | 1 + .../rendering/scripts/renderManager.tscript | 7 ++++-- .../levels/ExampleLevel.postfxpreset.tscript | 2 +- 5 files changed, 23 insertions(+), 14 deletions(-) diff --git a/Templates/BaseGame/game/core/postFX/scripts/HDR/HDRPostFX.tscript b/Templates/BaseGame/game/core/postFX/scripts/HDR/HDRPostFX.tscript index ff2586d20..f83b43a52 100644 --- a/Templates/BaseGame/game/core/postFX/scripts/HDR/HDRPostFX.tscript +++ b/Templates/BaseGame/game/core/postFX/scripts/HDR/HDRPostFX.tscript @@ -46,7 +46,7 @@ $PostFX::HDRPostFX::colorFilter = "1.0 1.0 1.0"; /// The minimum luninace value to allow when tone mapping /// the scene. Is particularly useful if your scene very /// dark or has a black ambient color in places. -$PostFX::HDRPostFX::minLuminace = 0.001; +$PostFX::HDRPostFX::minLuminace = 0.5; /// The rate of adaptation from the previous and new /// average scene luminance. @@ -241,7 +241,7 @@ singleton GFXStateBlockData( HDRStateBlock ) function HDRPostFX::setShaderConsts( %this ) { - %this.setShaderConst( "$g_fMiddleGray", $PostFX::HDRPostFX::keyValue ); + %this.setShaderConst( "$g_fMiddleGray", $PostFX::HDRPostFX::keyValue ); %minLuminace = $PostFX::HDRPostFX::minLuminace; if ( %minLuminace <= 0.0 ) @@ -357,17 +357,25 @@ function HDRPostFX::onEnabled( %this ) // disable this postFx. GammaPostFX.disable(); + if (%format $= %this.previousFormat) + return true; + // Set the right global shader define for HDR. if ( %format $= "GFXFormatR10G10B10A2" ) + { addGlobalShaderMacro( "TORQUE_HDR_RGB10" ); + removeGlobalShaderMacro( "TORQUE_HDR_RGB16" ); + } else if ( %format $= "GFXFormatR16G16B16A16F" ) + { addGlobalShaderMacro( "TORQUE_HDR_RGB16" ); - + removeGlobalShaderMacro( "TORQUE_HDR_RGB10" ); + } echo( "HDR FORMAT: " @ %format ); // Change the format of the offscreen surface // to an HDR compatible format. - %this.previousFormat = AL_FormatToken.format; + %this.previousFormat = %format; setReflectFormat( %format ); // Reset the light manager which will ensure the new @@ -390,10 +398,7 @@ function HDRPostFX::onDisabled( %this ) // Restore the non-HDR offscreen surface format. %format = %this.previousFormat; AL_FormatToken.format = %format; - setReflectFormat( %format ); - - removeGlobalShaderMacro( "TORQUE_HDR_RGB10" ); - removeGlobalShaderMacro( "TORQUE_HDR_RGB16" ); + setReflectFormat( %format ); // Reset the light manager which will ensure the new // hdr encoding takes effect in all the shaders. @@ -565,9 +570,9 @@ function HDRPostFX::SetupBloomFX( %this ) singleton PostEffect( HDRPostFX ) { - enabled = false; + enabled = true; allowReflectPass = false; - + previousFormat = AL_FormatToken.format; // Resolve the HDR before we render any editor stuff // and before we resolve the scene to the backbuffer. renderTime = "PFXBeforeBin"; diff --git a/Templates/BaseGame/game/core/postFX/scripts/default.postfxpreset.tscript b/Templates/BaseGame/game/core/postFX/scripts/default.postfxpreset.tscript index 1c0277d6e..14bddc0ca 100644 --- a/Templates/BaseGame/game/core/postFX/scripts/default.postfxpreset.tscript +++ b/Templates/BaseGame/game/core/postFX/scripts/default.postfxpreset.tscript @@ -6,7 +6,7 @@ $PostFX::HDRPostFX::saturationValue = 1; $PostFX::HDRPostFX::colorFilter = "1.0 1.0 1.0"; $PostFX::HDRPostFX::minLuminace = "0.5"; $PostFX::HDRPostFX::whiteCutoff = 1; -$PostFX::HDRPostFX::adaptRate = "0.134615391"; +$PostFX::HDRPostFX::adaptRate = "0.85"; $PostFX::HDRPostFX::tonemapMode = "ACES"; $PostFX::HDRPostFX::enableAutoExposure = "1"; $PostFX::HDRPostFX::keyValue = 0.5; diff --git a/Templates/BaseGame/game/core/rendering/Core_Rendering.tscript b/Templates/BaseGame/game/core/rendering/Core_Rendering.tscript index 8675e3168..b394683cb 100644 --- a/Templates/BaseGame/game/core/rendering/Core_Rendering.tscript +++ b/Templates/BaseGame/game/core/rendering/Core_Rendering.tscript @@ -71,4 +71,5 @@ function Core_Rendering::initClient(%this) // we can hide any splash screen we have, and show the canvas. // This keeps things looking nice, instead of having a blank window Canvas.showWindow(); + resetLightManager(); //make sure } \ No newline at end of file diff --git a/Templates/BaseGame/game/core/rendering/scripts/renderManager.tscript b/Templates/BaseGame/game/core/rendering/scripts/renderManager.tscript index a7ca0855f..44ab6e313 100644 --- a/Templates/BaseGame/game/core/rendering/scripts/renderManager.tscript +++ b/Templates/BaseGame/game/core/rendering/scripts/renderManager.tscript @@ -31,7 +31,7 @@ function initRenderManager() // PostEffect copies the result to the backbuffer. new RenderFormatToken(AL_FormatToken) { - enabled = "false"; + enabled = true; //When hdr is enabled this will be changed to the appropriate format format = "GFXFormatR16G16B16A16F"; @@ -46,6 +46,9 @@ function initRenderManager() // provided in $inTex resolveEffect = "AL_FormatCopy"; }; + addGlobalShaderMacro( "TORQUE_HDR_RGB16" ); + setReflectFormat( AL_FormatToken.format ); + DiffuseRenderPassManager.addManager( new RenderPassStateBin() { renderOrder = 0.001; stateToken = AL_FormatToken; } ); DiffuseRenderPassManager.addManager( new RenderProbeMgr(ProbeBin) { bintype = "Probes"; renderOrder = 0.019; processAddOrder = 0.019; } ); @@ -119,7 +122,7 @@ singleton PostEffect( AL_FormatCopy ) { // This PostEffect is used by 'AL_FormatToken' directly. It is never added to // the PostEffectManager. Do not call enable() on it. - enabled = false; + enabled = true; allowReflectPass = true; shader = PFX_PassthruShader; diff --git a/Templates/BaseGame/game/data/ExampleModule/levels/ExampleLevel.postfxpreset.tscript b/Templates/BaseGame/game/data/ExampleModule/levels/ExampleLevel.postfxpreset.tscript index e61beeae2..07ef6ef9b 100644 --- a/Templates/BaseGame/game/data/ExampleModule/levels/ExampleLevel.postfxpreset.tscript +++ b/Templates/BaseGame/game/data/ExampleModule/levels/ExampleLevel.postfxpreset.tscript @@ -4,7 +4,7 @@ $PostFX::HDRPostFX::whitePoint = 1; $PostFX::HDRPostFX::logContrast = 1; $PostFX::HDRPostFX::saturationValue = 1; $PostFX::HDRPostFX::colorFilter = "1.0 1.0 1.0"; -$PostFX::HDRPostFX::minLuminace = 0.001; +$PostFX::HDRPostFX::minLuminace = 0.5; $PostFX::HDRPostFX::whiteCutoff = 1; $PostFX::HDRPostFX::adaptRate = "0.85"; $PostFX::HDRPostFX::tonemapMode = "ACES";