struct VertexOut { float4 VertexPosition :POSITION; float2 TexCoord :TEXCOORD; float4 Position :TEXCOORD1; float4 EyePosition :TEXCOORD2; float2 BbSizeAngleCos :TEXCOORD3; float4 LightSpacePos :TEXCOORD4; float4 Color :COLOR0; }; // // Vertex program for displaying particle system with rectangle rendertexture // VertexOut VertexProgram( float4 Position :POSITION, float4 Texcoord: TEXCOORD, float4 Color:COLOR0, uniform float4x4 ModelViewProj :state.matrix.mvp ) { VertexOut Out; Out.Color=Color; Out.VertexPosition=mul(ModelViewProj, Position); Out.TexCoord=Texcoord.xy; return Out; } // // Fragment program for displaying particle system with rectangle rendertexture // void FragmentProgram( VertexOut In, uniform samplerRECT FrontTexture, uniform float Transparency, uniform float3 LightColor, float4 out Color:COLOR ) { float density=texRECT(FrontTexture,In.TexCoord*256).a*Transparency; Color=float4(LightColor*density*In.Color.rgb,1-density); }