Ver Fonte

Bloom Tweaks

Samuel Skiff há 3 anos atrás
pai
commit
633053a307

+ 153 - 155
Templates/BaseGame/game/core/postFX/scripts/Bloom/BloomPostFX.tscript

@@ -28,55 +28,53 @@ $PostFX::BloomPostFX::dirtEnabled = true;
 $PostFX::BloomPostFX::dirtScale = 2048.0;
 $PostFX::BloomPostFX::dirtScale = 2048.0;
 $PostFX::BloomPostFX::dirtIntensity = 7.0;
 $PostFX::BloomPostFX::dirtIntensity = 7.0;
 
 
-$mipsCount = 4;
-
 singleton ShaderData( PFX_BloomThreshold_Shader )
 singleton ShaderData( PFX_BloomThreshold_Shader )
 {
 {
    DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
    DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
-	 DXPixelShaderFile  = "./bloomThresholdP.hlsl";
-	 
-	 samplerNames[0] = "$inputTex";
-	 
-	 pixVersion = 3.0;
+   DXPixelShaderFile  = "./bloomThresholdP.hlsl";
+   
+   samplerNames[0] = "$inputTex";
+   
+   pixVersion = 3.0;
 };
 };
 
 
 singleton ShaderData( PFX_BloomDownSample_Shader )
 singleton ShaderData( PFX_BloomDownSample_Shader )
 {
 {
    DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
    DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
-	 DXPixelShaderFile  = "./downSampleP.hlsl";
-	 
-	 samplerNames[0] = "$inputTex";
-	 
-	 pixVersion = 3.0;
+   DXPixelShaderFile  = "./downSampleP.hlsl";
+   
+   samplerNames[0] = "$inputTex";
+   
+   pixVersion = 3.0;
 };
 };
 
 
 singleton ShaderData( PFX_BloomUpSample_Shader )
 singleton ShaderData( PFX_BloomUpSample_Shader )
 {
 {
    DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
    DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
-	 DXPixelShaderFile  = "./upSampleP.hlsl";
-	 
-	 samplerNames[0] = "$nxtTex";
-	 samplerNames[1] = "$mipTex";
-	 
-	 pixVersion = 3.0;
+   DXPixelShaderFile  = "./upSampleP.hlsl";
+   
+   samplerNames[0] = "$nxtTex";
+   samplerNames[1] = "$mipTex";
+   
+   pixVersion = 3.0;
 };
 };
 
 
 singleton ShaderData( PFX_BloomStrength_Shader )
 singleton ShaderData( PFX_BloomStrength_Shader )
 {
 {
    DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
    DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
-	 DXPixelShaderFile  = "./bloomStrengthP.hlsl";
-	 
-	 samplerNames[0] = "$inputTex";
-	 samplerNames[1] = "$dirtTex";
-	 
-	 pixVersion = 3.0;
+   DXPixelShaderFile  = "./bloomStrengthP.hlsl";
+   
+   samplerNames[0] = "$inputTex";
+   samplerNames[1] = "$dirtTex";
+   
+   pixVersion = 3.0;
 };
 };
 
 
 singleton GFXStateBlockData( BloomPostFX_SampleStateBlock : PFX_DefaultStateBlock )
 singleton GFXStateBlockData( BloomPostFX_SampleStateBlock : PFX_DefaultStateBlock )
 {
 {
    samplersDefined = true;
    samplersDefined = true;
    samplerStates[0] = SamplerClampLinear;
    samplerStates[0] = SamplerClampLinear;
-	 samplerStates[1] = SamplerClampLinear;
+   samplerStates[1] = SamplerClampLinear;
 };
 };
 
 
 singleton GFXStateBlockData( BloomPostFX_Add_SampleStateBlock : PFX_DefaultStateBlock )
 singleton GFXStateBlockData( BloomPostFX_Add_SampleStateBlock : PFX_DefaultStateBlock )
@@ -92,120 +90,119 @@ singleton GFXStateBlockData( BloomPostFX_Add_SampleStateBlock : PFX_DefaultState
    blendSrc = GFXBlendOne;
    blendSrc = GFXBlendOne;
    blendDest = GFXBlendOne;
    blendDest = GFXBlendOne;
 
 
-	 samplersDefined = true;
+   samplersDefined = true;
    samplerStates[0] = SamplerClampLinear;
    samplerStates[0] = SamplerClampLinear;
-	 samplerStates[1] = SamplerWrapLinear;
+   samplerStates[1] = SamplerWrapLinear;
 };
 };
 
 
 function BloomPostFX::setShaderConsts( %this )
 function BloomPostFX::setShaderConsts( %this )
 {
 {
-	%this.setShaderConst("$threshold", $PostFX::BloomPostFX::threshold);
-	
-	%blur = %this->bloomBlur;
-	for (%idx = 0; %idx < $mipsCount; %idx++)
-	{
-		%mip = %blur.getObject($mipsCount + %idx);
-		%mip.setShaderConst("$filterRadius", $PostFX::BloomPostFX::radius);
-	}
-	
-	%final = %this->bloomFinal;
-	%final.setShaderConst("$strength", $PostFX::BloomPostFX::intensity);
-	
-	%dirtScale = $PostFX::BloomPostFX::dirtScale;
-	%dirtIntensity = $PostFX::BloomPostFX::dirtIntensity;
-	%final.setShaderConst("$dirtParams", %dirtScale SPC %dirtScale SPC %dirtIntensity);
+   %this.setShaderConst("$threshold", $PostFX::BloomPostFX::threshold);
+   
+   %blur = %this->bloomBlur;
+   for (%idx = 0; %idx < %this.mipsCount; %idx++)
+   {
+     %mip = %blur.getObject(%this.mipsCount + %idx);
+     %mip.setShaderConst("$filterRadius", $PostFX::BloomPostFX::radius);
+   }
+   
+   %final = %this->bloomFinal;
+   %final.setShaderConst("$strength", $PostFX::BloomPostFX::intensity);
+   
+   %dirtScale = $PostFX::BloomPostFX::dirtScale;
+   %dirtIntensity = $PostFX::BloomPostFX::dirtIntensity;
+   %final.setShaderConst("$dirtParams", %dirtScale SPC %dirtScale SPC %dirtIntensity);
 }
 }
 
 
 function BloomPostFX::preProcess( %this )
 function BloomPostFX::preProcess( %this )
 {
 {
-	if (%this.dirtEnabled != $PostFX::BloomPostFX::dirtEnabled)
-	{
-		%this.dirtEnabled = $PostFX::BloomPostFX::dirtEnabled;
-		
-		%final = %this->bloomFinal;
-		if (%this.dirtEnabled)
-		{
-			%final.setShaderMacro("USE_DIRT");
-		} else {
-			%final.removeShaderMacro("USE_DIRT");
-		}
-	}
-	
-	if($PostFX::BloomPostFX::dirtImage $= "")
-	{
+  if (%this.dirtEnabled != $PostFX::BloomPostFX::dirtEnabled)
+  {
+     %this.dirtEnabled = $PostFX::BloomPostFX::dirtEnabled;
+     
+     %final = %this->bloomFinal;
+     if (%this.dirtEnabled)
+     {
+       %final.setShaderMacro("USE_DIRT");
+     } else {
+       %final.removeShaderMacro("USE_DIRT");
+     }
+  }
+  
+  if($PostFX::BloomPostFX::dirtImage $= "")
+  {
     $PostFX::BloomPostFX::dirtImage = "core/postFX/images/lensDirt.png";
     $PostFX::BloomPostFX::dirtImage = "core/postFX/images/lensDirt.png";
-	}
-	
-	if($PostFX::BloomPostFX::dirtImage !$= "")
-	{
-		%final = %this->bloomFinal;
-		%final.setTexture(1, $PostFX::BloomPostFX::dirtImage);
-	}
+  }
+  
+  if($PostFX::BloomPostFX::dirtImage !$= "")
+  {
+    %final = %this->bloomFinal;
+    %final.setTexture(1, $PostFX::BloomPostFX::dirtImage);
+  }
 }
 }
 
 
 // This function sets up s sort of "mip-chain" for the bloom effect
 // This function sets up s sort of "mip-chain" for the bloom effect
 // Not really "optimal" but it works well enough
 // Not really "optimal" but it works well enough
-function SetupBlurFX()
+function BloomPostFX::SetupBlurFX( %this )
 {
 {
-	%blurFX = new PostEffect()
-	{
-	   internalName = "bloomBlur";
-	   allowReflectPass = false;
-		 shader = PFX_BloomDownSample_Shader;
-  	 stateBlock = BloomPostFX_SampleStateBlock;
-		 texture[0] = "#threshold";
-  	 target = "#bloom_0";
-		 targetFormat = "GFXFormatR16G16B16A16F";
-	};
-	
-  %textureName = "#bloom_0";
-  for (%idx = 0; %idx < $mipsCount; %idx++)
-  {
-  	%mipName = "bloom_" @ (%idx + 1);
-  	%mipFX = new PostEffect()
-  	{ 
-  		internalName = %mipName;
-  		allowReflectPass = false;
-  		shader = PFX_BloomDownSample_Shader;
-  		stateBlock = BloomPostFX_SampleStateBlock;
-  		texture[0] = %textureName;
-  		target = "#" @ %mipName;
-			targetScale = "0.5 0.5";
-  		targetFormat = "GFXFormatR16G16B16A16F";
-  	};
-  	
-  	%blurFX.add(%mipFX);
-		%textureName = "#" @ %mipName;
-  }
-	
-	for (%idx = $mipsCount; %idx > 0; %idx--)
-	{
-		%nxt = "#bloom_" @ (%idx - 1);
-		%mipName = "upsample_" @ (%idx - 1);
-		echo(%mipName SPC %textureName SPC %nxt);
-		
-		%mipFX = new PostEffect()
-  	{
-			internalName = %mipName;
-			allowReflectPass = false;
-			shader = PFX_BloomUpSample_Shader;
-			stateBlock = BloomPostFX_SampleStateBlock;
-			texture[0] = %nxt;
-			texture[1] = %textureName;
-			target = "#" @ %mipName;
-		};
-		
-		%blurFX.add(%mipFX);
-		%textureName = "#" @ %mipName;
-	}
-	
-	return %blurFX;
+   %blurFX = new PostEffect()
+   {
+     internalName = "bloomBlur";
+     allowReflectPass = false;
+     shader = PFX_BloomDownSample_Shader;
+     stateBlock = BloomPostFX_SampleStateBlock;
+     texture[0] = "#threshold";
+     target = "#bloom_0";
+     targetFormat = "GFXFormatR16G16B16A16F";
+   };
+  
+   %textureName = "#bloom_0";
+   for (%idx = 0; %idx < %this.mipsCount; %idx++)
+   {
+     %mipName = "bloom_" @ (%idx + 1);
+     %mipFX = new PostEffect()
+     { 
+       internalName = %mipName;
+       allowReflectPass = false;
+       shader = PFX_BloomDownSample_Shader;
+       stateBlock = BloomPostFX_SampleStateBlock;
+       texture[0] = %textureName;
+       target = "#" @ %mipName;
+       targetScale = "0.5 0.5";
+       targetFormat = "GFXFormatR16G16B16A16F";
+     };
+     
+     %blurFX.add(%mipFX);
+     %textureName = "#" @ %mipName;
+   }
+   
+   for (%idx = %this.mipsCount; %idx > 0; %idx--)
+   {
+     %nxt = "#bloom_" @ (%idx - 1);
+     %mipName = "upsample_" @ (%idx - 1);
+     echo(%mipName SPC %textureName SPC %nxt);
+     
+     %mipFX = new PostEffect()
+     {
+       internalName = %mipName;
+       allowReflectPass = false;
+       shader = PFX_BloomUpSample_Shader;
+       stateBlock = BloomPostFX_SampleStateBlock;
+       texture[0] = %nxt;
+       texture[1] = %textureName;
+       target = "#" @ %mipName;
+     };
+     
+     %blurFX.add(%mipFX);
+     %textureName = "#" @ %mipName;
+   }
+   
+   %this.add(%blurFX);
 }
 }
 
 
 function BloomPostFX::onAdd(%this)
 function BloomPostFX::onAdd(%this)
 {
 {
-	 %this.add(SetupBlurFX());
-	 
+   %this.SetupBlurFX();
    //Register the postFX with the manager
    //Register the postFX with the manager
    PostFXManager.registerPostEffect(%this);
    PostFXManager.registerPostEffect(%this);
 }
 }
@@ -227,17 +224,17 @@ function BloomPostFX::populatePostFXSettings(%this)
 {
 {
    PostEffectEditorInspector.startGroup("BloomPostFX - General");
    PostEffectEditorInspector.startGroup("BloomPostFX - General");
    PostEffectEditorInspector.addCallbackField("$PostFX::BloomPostFX::Enabled", "Enabled", "bool", "", $PostFX::BloomPostFX::Enabled, "", "toggleBloomPostFX");
    PostEffectEditorInspector.addCallbackField("$PostFX::BloomPostFX::Enabled", "Enabled", "bool", "", $PostFX::BloomPostFX::Enabled, "", "toggleBloomPostFX");
-	 PostEffectEditorInspector.addField("$PostFX::BloomPostFX::threshold", "Threshold", "range", "", $PostFX::BloomPostFX::threshold, "0 1 10");
-	 PostEffectEditorInspector.addField("$PostFX::BloomPostFX::intensity", "Intensity", "range", "", $PostFX::BloomPostFX::intensity, "0 2 10");
-	 PostEffectEditorInspector.addField("$PostFX::BloomPostFX::radius", "Radius", "float", "", $PostFX::BloomPostFX::radius, "");
+   PostEffectEditorInspector.addField("$PostFX::BloomPostFX::threshold", "Threshold", "range", "", $PostFX::BloomPostFX::threshold, "0 1 10");
+   PostEffectEditorInspector.addField("$PostFX::BloomPostFX::intensity", "Intensity", "range", "", $PostFX::BloomPostFX::intensity, "0 2 10");
+   PostEffectEditorInspector.addField("$PostFX::BloomPostFX::radius", "Radius", "float", "", $PostFX::BloomPostFX::radius, "");
+   PostEffectEditorInspector.endGroup();
+   
+   PostEffectEditorInspector.startGroup("BloomPostFX - Lens Dirt");
+   PostEffectEditorInspector.addField("$PostFX::BloomPostFX::dirtEnabled", "Enable Dirt", "bool", "", $PostFX::BloomPostFX::dirtEnabled, "");
+   PostEffectEditorInspector.addField("$PostFX::BloomPostFX::dirtScale", "Scale", "float", "", $PostFX::BloomPostFX::dirtScale, "");
+   PostEffectEditorInspector.addField("$PostFX::BloomPostFX::dirtIntensity", "Intensity", "float", "", $PostFX::BloomPostFX::dirtIntensity, "");
+   PostEffectEditorInspector.addField("$PostFX::BloomPostFX::dirtImage", "Dirt Image", "image", "", $PostFX::BloomPostFX::dirtImage, "");
    PostEffectEditorInspector.endGroup();
    PostEffectEditorInspector.endGroup();
-	 
-	 PostEffectEditorInspector.startGroup("BloomPostFX - Dirt");
-	 PostEffectEditorInspector.addField("$PostFX::BloomPostFX::dirtEnabled", "Enable Dirt", "bool", "", $PostFX::BloomPostFX::dirtEnabled, "");
-	 PostEffectEditorInspector.addField("$PostFX::BloomPostFX::dirtScale", "Scale", "float", "", $PostFX::BloomPostFX::dirtScale, "");
-	 PostEffectEditorInspector.addField("$PostFX::BloomPostFX::dirtIntensity", "Intensity", "float", "", $PostFX::BloomPostFX::dirtIntensity, "");
-	 PostEffectEditorInspector.addField("$PostFX::BloomPostFX::dirtImage", "Dirt Image", "image", "", $PostFX::BloomPostFX::dirtImage, "");
-	 PostEffectEditorInspector.endGroup();
 }
 }
 
 
 //This is called back from our callbackField defined in populatePostFXSettings to
 //This is called back from our callbackField defined in populatePostFXSettings to
@@ -264,41 +261,42 @@ function BloomPostFX::applyFromPreset(%this)
 function BloomPostFX::savePresetSettings(%this)
 function BloomPostFX::savePresetSettings(%this)
 {
 {
    PostFXManager::savePresetSetting("$PostFX::BloomPostFX::Enabled");
    PostFXManager::savePresetSetting("$PostFX::BloomPostFX::Enabled");
-	 PostFXManager::savePresetSetting("$PostFX::BloomPostFX::threshold");
-	 PostFXManager::savePresetSetting("$PostFX::BloomPostFX::intensity");
-	 PostFXManager::savePresetSetting("$PostFX::BloomPostFX::radius");
-	 
-	 PostFXManager::savePresetSetting("$PostFX::BloomPostFX::dirtEnabled");
-	 PostFXManager::savePresetSetting("$PostFX::BloomPostFX::dirtScale");
-	 PostFXManager::savePresetSetting("$PostFX::BloomPostFX::dirtIntensity");
-	 PostFXManager::savePresetSetting("$PostFX::BloomPostFX::dirtImage");
+   PostFXManager::savePresetSetting("$PostFX::BloomPostFX::threshold");
+   PostFXManager::savePresetSetting("$PostFX::BloomPostFX::intensity");
+   PostFXManager::savePresetSetting("$PostFX::BloomPostFX::radius");
+   
+   PostFXManager::savePresetSetting("$PostFX::BloomPostFX::dirtEnabled");
+   PostFXManager::savePresetSetting("$PostFX::BloomPostFX::dirtScale");
+   PostFXManager::savePresetSetting("$PostFX::BloomPostFX::dirtIntensity");
+   PostFXManager::savePresetSetting("$PostFX::BloomPostFX::dirtImage");
 }
 }
 
 
 //Our actual postFX
 //Our actual postFX
 singleton PostEffect( BloomPostFX )
 singleton PostEffect( BloomPostFX )
 {
 {
+   mipsCount = 4;
    enabled = false;
    enabled = false;
-	 allowReflectPass = false;
+   allowReflectPass = false;
    
    
    renderTime = "PFXBeforeBin";
    renderTime = "PFXBeforeBin";
-	 renderBin = "EditorBin";
-   renderPriority = 9999; 
-	 
+   renderBin = "EditorBin";
+   renderPriority = 9998; 
+   
    shader = PFX_BloomThreshold_Shader;
    shader = PFX_BloomThreshold_Shader;
    stateBlock = BloomPostFX_SampleStateBlock;
    stateBlock = BloomPostFX_SampleStateBlock;
    texture[0] = "$backBuffer";
    texture[0] = "$backBuffer";
    target = "#threshold";
    target = "#threshold";
-	 targetFormat = "GFXFormatR16G16B16A16F";
-	 targetClear = PFXTargetClear_OnDraw;
-	 targetClearColor = "0 0 0 0";
-	 
-	 new PostEffect()
-	 {
-	  internalName = "bloomFinal";
-		allowReflectPass = false;
-		shader = PFX_BloomStrength_Shader;
-		stateBlock = BloomPostFX_Add_SampleStateBlock;
-		texture[0] = "#upsample_0";
-		target = "$backBuffer";
-	 };
+   targetFormat = "GFXFormatR16G16B16A16F";
+   targetClear = PFXTargetClear_OnDraw;
+   targetClearColor = "0 0 0 0";
+   
+   new PostEffect()
+   {
+    internalName = "bloomFinal";
+    allowReflectPass = false;
+    shader = PFX_BloomStrength_Shader;
+    stateBlock = BloomPostFX_Add_SampleStateBlock;
+    texture[0] = "#upsample_0";
+    target = "$backBuffer";
+   };
 };
 };

+ 1 - 1
Templates/BaseGame/game/core/postFX/scripts/Bloom/bloomThresholdP.hlsl

@@ -31,6 +31,6 @@ float4 main(PFXVertToPix IN) : TORQUE_TARGET0
 	float brightness = max(screenColor.r, max(screenColor.g, screenColor.b));
 	float brightness = max(screenColor.r, max(screenColor.g, screenColor.b));
 	float contribution = max(brightness - threshold, 0);
 	float contribution = max(brightness - threshold, 0);
 	contribution /= max(brightness, 0.0001f);
 	contribution /= max(brightness, 0.0001f);
-	clip(contribution > 0.00001f ? 1 : -1);
+	clip(contribution > 0.0001f ? 1 : -1);
 	return screenColor * contribution;
 	return screenColor * contribution;
 }
 }

+ 3 - 3
Templates/BaseGame/game/core/postFX/scripts/default.postfxpreset.tscript

@@ -1,6 +1,6 @@
 $PostFX::BloomPostFX::Enabled = "1";
 $PostFX::BloomPostFX::Enabled = "1";
-$PostFX::BloomPostFX::threshold = "0.5";
-$PostFX::BloomPostFX::intensity = "0.5";
+$PostFX::BloomPostFX::threshold = "0.394230783";
+$PostFX::BloomPostFX::intensity = "0.192307696";
 $PostFX::BloomPostFX::radius = "8";
 $PostFX::BloomPostFX::radius = "8";
 $PostFX::BloomPostFX::dirtEnabled = "1";
 $PostFX::BloomPostFX::dirtEnabled = "1";
 $PostFX::BloomPostFX::dirtScale = "2048";
 $PostFX::BloomPostFX::dirtScale = "2048";
@@ -11,7 +11,7 @@ $PostFX::HDRPostFX::exposureValue = 1;
 $PostFX::HDRPostFX::minLuminace = 0.001;
 $PostFX::HDRPostFX::minLuminace = 0.001;
 $PostFX::HDRPostFX::whiteCutoff = 1;
 $PostFX::HDRPostFX::whiteCutoff = 1;
 $PostFX::HDRPostFX::adaptRate = "1";
 $PostFX::HDRPostFX::adaptRate = "1";
-$PostFX::HDRPostFX::tonemapMode = "ACES";
+$PostFX::HDRPostFX::tonemapMode = "Filmic";
 $PostFX::HDRPostFX::enableBloom = "0";
 $PostFX::HDRPostFX::enableBloom = "0";
 $PostFX::HDRPostFX::brightPassThreshold = 1;
 $PostFX::HDRPostFX::brightPassThreshold = 1;
 $PostFX::HDRPostFX::gaussMultiplier = 0.3;
 $PostFX::HDRPostFX::gaussMultiplier = 0.3;