#define D 128 //#define Dper4Pi 14.33 struct VertexOut { float4 Position :POSITION; float4 Color :COLOR0; float2 TexCoord :TEXCOORD; int ID :TEXCOORD1; }; VertexOut VertexProgram( float4 Position : POSITION, float2 TexCoord : TEXCOORD0, float4 Color : COLOR0, uniform float4x4 ModelViewProj:state.matrix.mvp ) { VertexOut Out; Out.TexCoord=TexCoord; //Out.Position=mul(ModelViewProj, Position); Out.Position=Position; Out.ID=TexCoord.x; return Out; } float4 FragmentProgram(VertexOut In, uniform samplerRECT IllumTexture, uniform samplerRECT TauTexture, uniform samplerRECT VisMap, uniform samplerRECT DirectIllumTexture, uniform samplerRECT Phase, uniform float4 EyeDirsWeights , uniform float3 Alb_Op) : COLOR { float4 Color=float4(0,0,0,1); int particle=In.ID; int direction=floor(EyeDirsWeights.x); float4 I; float ds=texRECT(VisMap,float2(particle,direction)).g; float tau=texRECT(TauTexture,float2(particle,1)).r; float alpha=1-exp(-ds*tau); //float alpha=Alb_Op.y; I=texRECT(IllumTexture,float2(particle,direction)); Color=texRECT(DirectIllumTexture,float2(particle,direction))+(1-alpha)*I; for(int d=0;d