| @@ -0,0 +1,54 @@ | ||
| //----------------------------------------------------------------------------- | ||
| // 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" | ||
| #include "shaders/common/torque.hlsl" | ||
|
|
||
|
|
||
| float4 main( PFXVertToPix IN, | ||
| uniform sampler2D colorBufferTex : register(S0), | ||
| uniform sampler2D lightPrePassTex : register(S1), | ||
| uniform sampler2D matInfoTex : register(S2), | ||
| uniform sampler2D prepassTex : register(S3)) : COLOR0 | ||
| { | ||
| float4 lightBuffer = tex2D( lightPrePassTex, IN.uv0 ); | ||
| float4 colorBuffer = tex2D( colorBufferTex, IN.uv0 ); | ||
| float4 matInfo = tex2D( matInfoTex, IN.uv0 ); | ||
| float specular = saturate(lightBuffer.a); | ||
| float depth = prepassUncondition( prepassTex, IN.uv0 ).w; | ||
|
|
||
| if (depth>0.9999) | ||
| return float4(0,0,0,0); | ||
|
|
||
| // Diffuse Color Altered by Metalness | ||
| bool metalness = getFlag(matInfo.r, 3); | ||
| if ( metalness ) | ||
| { | ||
| colorBuffer *= (1.0 - colorBuffer.a); | ||
| } | ||
|
|
||
| colorBuffer *= float4(lightBuffer.rgb, 1.0); | ||
| colorBuffer += float4(specular, specular, specular, 1.0); | ||
|
|
||
| return hdrEncode( float4(colorBuffer.rgb, 1.0) ); | ||
| } |
| @@ -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 colorBufferTex; | ||
|
|
||
| out vec4 OUT_FragColor0; | ||
|
|
||
| void main() | ||
| { | ||
| OUT_FragColor0 = vec4(texture( colorBufferTex, uv0 ).rgb, 1.0); | ||
| } |
| @@ -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 matinfoTex; | ||
|
|
||
| out vec4 OUT_FragColor0; | ||
|
|
||
| void main() | ||
| { | ||
| float specular = texture( matinfoTex, uv0 ).a; | ||
| OUT_FragColor0 = vec4( specular, specular, specular, 1.0 ); | ||
| } |
| @@ -0,0 +1,40 @@ | ||
| //----------------------------------------------------------------------------- | ||
| // 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. | ||
| //----------------------------------------------------------------------------- | ||
|
|
||
| out vec4 OUT_col; | ||
| out vec4 OUT_col1; | ||
| out vec4 OUT_col2; | ||
|
|
||
| //----------------------------------------------------------------------------- | ||
| // Main | ||
| //----------------------------------------------------------------------------- | ||
| void main() | ||
| { | ||
| // Clear Prepass Buffer ( Normals/Depth ); | ||
| OUT_col = vec4(1.0, 1.0, 1.0, 1.0); | ||
|
|
||
| // Clear Color Buffer. | ||
| OUT_col1 = vec4(0.0, 0.0, 0.0, 1.0); | ||
|
|
||
| // Clear Material Info Buffer. | ||
| OUT_col2 = vec4(0.0, 0.0, 0.0, 1.0); | ||
| } |
| @@ -0,0 +1,59 @@ | ||
| //----------------------------------------------------------------------------- | ||
| // 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" | ||
| #include "../../../gl/torque.glsl" | ||
|
|
||
| uniform sampler2D colorBufferTex; | ||
| uniform sampler2D lightPrePassTex; | ||
| uniform sampler2D matInfoTex; | ||
| uniform sampler2D prepassTex; | ||
|
|
||
| out vec4 OUT_col; | ||
|
|
||
| void main() | ||
| { | ||
| float depth = prepassUncondition( prepassTex, uv0 ).w; | ||
| if (depth>0.9999) | ||
| { | ||
| OUT_col = vec4(0.0); | ||
| return; | ||
| } | ||
| vec4 lightBuffer = texture( lightPrePassTex, uv0 ); | ||
| vec4 colorBuffer = texture( colorBufferTex, uv0 ); | ||
| vec4 matInfo = texture( matInfoTex, uv0 ); | ||
| float specular = clamp(lightBuffer.a,0.0,1.0); | ||
|
|
||
| // Diffuse Color Altered by Metalness | ||
| bool metalness = getFlag(matInfo.r, 3); | ||
| if ( metalness ) | ||
| { | ||
| colorBuffer *= (1.0 - colorBuffer.a); | ||
| } | ||
|
|
||
| colorBuffer *= vec4(lightBuffer.rgb, 1.0); | ||
| colorBuffer += vec4(specular, specular, specular, 1.0); | ||
|
|
||
| OUT_col = hdrEncode( vec4(colorBuffer.rgb, 1.0) ); | ||
| } |