struct VertexOut { float4 Position :POSITION; float2 TexCoord :TEXCOORD0; float ID :TEXCOORD2; float4 Depth :TEXCOORD1; float PSize :PSIZE; }; VertexOut VertexProgram( float4 Position : POSITION, float2 TexCoord : TEXCOORD0, float4 Color : COLOR0, uniform float4 PSize : state.point.size, uniform float4x4 modelViewProj:state.matrix.mvp ) { VertexOut Out; Out.ID=TexCoord.x; Out.PSize =PSize.x*TexCoord.y; Out.Position = mul(modelViewProj, Position); // Out.Depth=Out.Position.z/2+0.5; return Out; } void FragmentProgram( VertexOut In, uniform sampler2D BbTexture, out float4 Color: COLOR//, //out float Depth:DEPTH ) { int intensity=round(In.ID); if(intensity<0)intensity=0; float thecolor=intensity; Color=float4(thecolor,thecolor,thecolor,tex2D(BbTexture,In.TexCoord).r); /* if(tex2D(BbTexture,In.TexCoord).r==0) { Depth=1; } else { Depth=In.Depth; } */ }