Răsfoiți Sursa

Merge pull request #863 from Azaezel/GlowbufferVisualizer

glow buffer debug visualiser
Daniel Buckmaster 10 ani în urmă
părinte
comite
009bff7f88

+ 34 - 0
Templates/Full/game/core/scripts/client/lighting/advanced/lightViz.cs

@@ -84,6 +84,26 @@ function AL_DepthVisualize::onEnabled( %this )
    return true;
 }
 
+new ShaderData( AL_GlowVisualizeShader )
+{
+   DXVertexShaderFile = "shaders/common/postFx/postFxV.hlsl";
+   DXPixelShaderFile  = "shaders/common/lighting/advanced/dbgGlowVisualizeP.hlsl";
+   
+   OGLVertexShaderFile = "shaders/common/postFx/gl/postFxV.glsl";
+   OGLPixelShaderFile  = "shaders/common/lighting/advanced/gl/dbgGlowVisualizeP.glsl";
+
+   samplerNames[0] = "glowBuffer";
+   pixVersion = 2.0;
+};
+
+singleton PostEffect( AL_GlowVisualize )
+{   
+   shader = AL_GlowVisualizeShader;
+   stateBlock = AL_DefaultVisualizeState;
+   texture[0] = "#glowbuffer";
+   target = "$backBuffer";
+   renderPriority = 9999;
+};
 
 new ShaderData( AL_NormalsVisualizeShader )
 {
@@ -204,6 +224,20 @@ function toggleDepthViz( %enable )
       AL_DepthVisualize.disable();
 }
 
+/// Toggles the visualization of the AL depth buffer.
+function toggleGlowViz( %enable )
+{
+   if ( %enable $= "" )
+   {
+      $AL_GlowVisualizeVar = AL_GlowVisualize.isEnabled() ? false : true;
+      AL_GlowVisualize.toggle();
+   }
+   else if ( %enable )
+      AL_GlowVisualize.enable();
+   else if ( !%enable )
+      AL_GlowVisualize.disable();
+}
+
 /// Toggles the visualization of the AL normals buffer.
 function toggleNormalsViz( %enable )
 {

+ 31 - 0
Templates/Full/game/shaders/common/lighting/advanced/dbgGlowVisualizeP.hlsl

@@ -0,0 +1,31 @@
+//-----------------------------------------------------------------------------
+// Copyright (c) 2012 GarageGames, LLC
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to
+// deal in the Software without restriction, including without limitation the
+// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+// sell copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+// IN THE SOFTWARE.
+//-----------------------------------------------------------------------------
+
+#include "shadergen:/autogenConditioners.h"
+#include "../../postfx/postFx.hlsl"
+
+
+float4 main( PFXVertToPix IN,
+             uniform sampler2D glowBuffer : register(S0) ) : COLOR0
+{
+   return tex2D(glowBuffer, IN.uv0);
+}

+ 34 - 0
Templates/Full/game/shaders/common/lighting/advanced/gl/dbgGlowVisualizeP.glsl

@@ -0,0 +1,34 @@
+//-----------------------------------------------------------------------------
+// Copyright (c) 2012 GarageGames, LLC
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to
+// deal in the Software without restriction, including without limitation the
+// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+// sell copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+// IN THE SOFTWARE.
+//-----------------------------------------------------------------------------
+
+#include "../../../gl/hlslCompat.glsl"
+#include "shadergen:/autogenConditioners.h"
+#include "../../../postfx/gl/postFx.glsl"
+
+uniform sampler2D glowBuffer;
+
+out vec4 OUT_FragColor0;
+
+void main()
+{ 
+   OUT_FragColor0 = texture(glowBuffer, uv0);
+}

+ 1 - 0
Templates/Full/game/tools/worldEditor/main.cs

@@ -119,6 +119,7 @@ function initializeWorldEditor()
    EVisibility.addOption( "AL: Light Specular Viz", "$AL_LightSpecularVisualizeVar", "toggleLightSpecularViz" );
    EVisibility.addOption( "AL: Normals Viz", "$AL_NormalsVisualizeVar", "toggleNormalsViz" );
    EVisibility.addOption( "AL: Depth Viz", "$AL_DepthVisualizeVar", "toggleDepthViz" );
+   EVisibility.addOption( "AL: Glow Buffer", "$AL_GlowVisualizeVar", "toggleGlowViz" );
    EVisibility.addOption( "Frustum Lock", "$Scene::lockCull", "" );
    EVisibility.addOption( "Disable Zone Culling", "$Scene::disableZoneCulling", "" );
    EVisibility.addOption( "Disable Terrain Occlusion", "$Scene::disableTerrainOcclusion", "" );