|
|
@@ -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";
|