| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- //////////////////////////////////////////////////////////////////////////////
- // ©2005 Electronic Arts Inc
- //
- // FX Shader for particles
- //////////////////////////////////////////////////////////////////////////////
- #include "Common.fxh"
- SAMPLER_2D_BEGIN(ParticleTexture,
- string UIWidget = "None";
- string SasBindAddress = "Particle.Draw.Texture";
- )
- MinFilter = Linear;
- MagFilter = Linear;
- MipFilter = Linear;
- AddressU = Clamp;
- AddressV = Clamp;
- SAMPLER_2D_END
- // Transformations
- float4x4 Projection : Projection;
- struct VSOutput
- {
- float4 Position : POSITION;
- float4 DiffuseColor : COLOR0;
- float2 BaseTexCoord : TEXCOORD0;
- };
- VSOutput VS(float3 Position : POSITION, float2 TexCoord0 : TEXCOORD0, float4 VertexColor : COLOR0)
- {
- VSOutput Out;
-
- // Note: The incoming geometry is already transformed to view space, so only apply Projection, not WorldViewProjection
- Out.Position = mul(float4(Position, 1), Projection);
- // Unlit colorization
- Out.DiffuseColor = VertexColor;
-
- Out.BaseTexCoord = TexCoord0;
-
- return Out;
- }
- float4 PS(VSOutput In) : COLOR
- {
- float4 color = In.DiffuseColor;
-
- // Apply texture
- color *= tex2D(SAMPLER(ParticleTexture), In.BaseTexCoord);
- return color;
- }
- technique AdditiveSpriteShader
- {
- pass P0
- {
- VertexShader = compile vs_1_1 VS();
- PixelShader = compile ps_1_1 PS();
- ZEnable = true;
- ZFunc = ZFUNC_INFRONT;
- ZWriteEnable = false;
- CullMode = None;
-
- AlphaBlendEnable = true;
- SrcBlend = One;
- DestBlend = One;
-
- AlphaTestEnable = false;
- }
- }
- technique AdditiveAlphaTestSpriteShader
- {
- pass P0
- {
- VertexShader = compile vs_1_1 VS();
- PixelShader = compile ps_1_1 PS();
- ZEnable = true;
- ZFunc = ZFUNC_INFRONT;
- ZWriteEnable = false;
- CullMode = None;
-
- AlphaBlendEnable = true;
- SrcBlend = One;
- DestBlend = One;
-
- AlphaTestEnable = true;
- AlphaFunc = GreaterEqual;
- AlphaRef = DEFAULT_ALPHATEST_THRESHOLD;
- }
- }
- technique AlphaSpriteShader
- {
- pass P0
- {
- VertexShader = compile vs_1_1 VS();
- PixelShader = compile ps_1_1 PS();
- ZEnable = true;
- ZFunc = ZFUNC_INFRONT;
- ZWriteEnable = false;
- CullMode = None;
-
- AlphaBlendEnable = true;
- SrcBlend = SrcAlpha;
- DestBlend = InvSrcAlpha;
-
- AlphaTestEnable = false;
- }
- }
- technique ATestSpriteShader
- {
- pass P0
- {
- VertexShader = compile vs_1_1 VS();
- PixelShader = compile ps_1_1 PS();
-
- ZEnable = true;
- ZFunc = ZFUNC_INFRONT;
- ZWriteEnable = false;
- CullMode = None;
-
- AlphaBlendEnable = false;
-
- AlphaTestEnable = true;
- AlphaFunc = GreaterEqual;
- AlphaRef = DEFAULT_ALPHATEST_THRESHOLD;
- }
- }
- technique MultiplicativeSpriteShader
- {
- pass P0
- {
- VertexShader = compile vs_1_1 VS();
- PixelShader = compile ps_1_1 PS();
- ZEnable = true;
- ZFunc = ZFUNC_INFRONT;
- ZWriteEnable = false;
- CullMode = None;
-
- AlphaBlendEnable = true;
- SrcBlend = DestColor;
- DestBlend = Zero;
-
- AlphaTestEnable = false;
- }
- }
- technique Additive2DShader
- {
- pass P0
- {
- VertexShader = compile vs_1_1 VS();
- PixelShader = compile ps_1_1 PS();
- ZEnable = false;
- ZWriteEnable = false;
- CullMode = None;
-
- AlphaBlendEnable = true;
- SrcBlend = One;
- DestBlend = One;
-
- AlphaTestEnable = false;
- }
- }
- technique Alpha2DShader
- {
- pass P0
- {
- VertexShader = compile vs_1_1 VS();
- PixelShader = compile ps_1_1 PS();
- ZEnable = false;
- ZWriteEnable = false;
- CullMode = None;
-
- AlphaBlendEnable = true;
- SrcBlend = SrcAlpha;
- DestBlend = InvSrcAlpha;
-
- AlphaTestEnable = false;
- }
- }
|