anx.framework/shader/GL3/AlphaTest.fx
SND\AstrorEnales_cp 73b50ab6c3 - Translated the AlphaTest shader to GLSL (needs some more testing)
- Added a bunch of Development attributes
- Fixed a class file name that was different from the class name itself
2015-03-15 01:11:46 +01:00

174 lines
3.7 KiB
HLSL

// This file is part of the ANX.Framework created by the
// "ANX.Framework developer group" and released under the Ms-PL license.
// For details see: http://anxframework.codeplex.com/license
vertexglobal
{
uniform vec4 DiffuseColor;
uniform mat4 WorldViewProj;
uniform vec4 FogVector;
attribute vec4 pos;
attribute vec4 col;
attribute vec2 tex;
varying vec2 diffuseTexCoord;
varying vec4 diffuseColor;
varying vec4 specular;
}
vertexshaders
{
shader "VSAlphaTest"
{
void main( )
{
gl_Position = WorldViewProj * pos;
diffuseTexCoord = tex;
diffuseColor = DiffuseColor;
specular = vec4(0, 0, 0, saturate(dot(pos, FogVector)));
}
}
shader "VSAlphaTestNoFog"
{
void main( )
{
gl_Position = WorldViewProj * pos;
diffuseTexCoord = tex;
diffuseColor = DiffuseColor;
}
}
shader "VSAlphaTestVertexColor"
{
void main( )
{
gl_Position = WorldViewProj * pos;
diffuseTexCoord = tex;
diffuseColor = DiffuseColor * col;
specular = vec4(0, 0, 0, saturate(dot(pos, FogVector)));
}
}
shader "VSAlphaTestVertexColorNoFog"
{
void main( )
{
gl_Position = WorldViewProj * pos;
diffuseTexCoord = tex;
diffuseColor = DiffuseColor * col;
}
}
}
fragmentglobal
{
uniform sampler2D Texture;
uniform vec4 AlphaTest;
uniform vec3 FogColor;
varying vec2 diffuseTexCoord;
varying vec4 diffuseColor;
varying vec4 specular;
}
fragmentshaders
{
shader "PSAlphaTestLtGt"
{
void main( )
{
vec4 color = texture2D(Texture, diffuseTexCoord) * diffuseColor;
if(((abs(color.a - AlphaTest.x) < AlphaTest.y) ? AlphaTest.z : AlphaTest.w) < 0)
discard;
color.rgb = mix(color.rgb, FogColor * color.a, specular.w);
gl_FragColor = color;
}
}
shader "PSAlphaTestLtGtNoFog"
{
void main( )
{
vec4 color = texture2D(Texture, diffuseTexCoord) * diffuseColor;
if(((abs(color.a - AlphaTest.x) < AlphaTest.y) ? AlphaTest.z : AlphaTest.w) < 0)
discard;
gl_FragColor = color;
}
}
shader "PSAlphaTestEqNe"
{
void main( )
{
vec4 color = texture2D(Texture, diffuseTexCoord) * diffuseColor;
if(((abs(color.a - AlphaTest.x) < AlphaTest.y) ? AlphaTest.z : AlphaTest.w) < 0)
discard;
color.rgb = mix(color.rgb, FogColor * color.a, specular.w);
gl_FragColor = color;
}
}
shader "PSAlphaTestEqNeNoFog"
{
void main( )
{
vec4 color = texture2D(Texture, diffuseTexCoord) * diffuseColor;
if(((abs(color.a - AlphaTest.x) < AlphaTest.y) ? AlphaTest.z : AlphaTest.w) < 0)
discard;
gl_FragColor = color;
}
}
}
techniques
{
technique "AlphaTestLtGt"
{
vertex "VSAlphaTest";
fragment "PSAlphaTestLtGt";
}
technique "AlphaTestNoFogLtGt"
{
vertex "VSAlphaTestNoFog"
fragment "PSAlphaTestLtGtNoFog"
}
technique "AlphaTestVertexColorLtGt"
{
vertex "VSAlphaTestVertexColor"
fragment "PSAlphaTestLtGt"
}
technique "AlphaTestVertexColorNoFogLtGt"
{
vertex "VSAlphaTestVertexColorNoFog"
fragment "PSAlphaTestLtGtNoFog"
}
technique "AlphaTestEqNe"
{
vertex "VSAlphaTest"
fragment "PSAlphaTestEqNe"
}
technique "AlphaTestNoFogEqNe"
{
vertex "VSAlphaTestNoFog"
fragment "PSAlphaTestEqNeNoFog"
}
technique "AlphaTestVertexColorEqNe"
{
vertex "VSAlphaTestVertexColor"
fragment "PSAlphaTestEqNe"
}
technique "AlphaTestVertexColorNoFogEqNe"
{
vertex "VSAlphaTestVertexColorNoFog"
fragment "PSAlphaTestEqNeNoFog"
}
}