#define D 128 #define N 512 struct VertexOut { float4 VertexPosition :POSITION; float2 TexCoord :TEXCOORD; }; /* Vertex program for cloud rendering */ VertexOut VertexProgram( float4 Position :POSITION, float2 Texcoord: TEXCOORD ) { VertexOut Out; Out.VertexPosition=Position; Out.TexCoord=Texcoord; return Out; } /* Fragment program for cloud rendering */ float3 FragmentProgram( VertexOut In, uniform samplerRECT IllumTexture, uniform samplerRECT TauTexture, uniform samplerRECT VisMap, uniform samplerRECT DirectIllum, uniform samplerRECT Phase, uniform float3 Alb_Op, uniform float3 SkyColor ):COLOR { float3 Color=float3(0,0,0); int particle=floor(In.TexCoord.x); int direction=floor(In.TexCoord.y); int vp=floor(texRECT(VisMap,float2(particle,direction)).r); if(vp