
float4 PSMain(VSOutput input) : COLOR0
{
float height=pow((200-input.viewVec.y)/200,2);
//цвет у горизонта 222 251 255
//цвет в зените 87 124 179
float red=(87+135*height)/255;
float green=(124+127*height)/255;
float blue=(179+76*height)/255;
float4 diffuse =float4(red,green,blue,1);
//the sun
float3 sunpos=lightDirection;
float3 pos=normalize(input.viewVec.xyz);
float grad=dot(pos,-sunpos);
float4 sunc=float4(0,0,0,0);
if(grad>0.998){sunc=float4(1,0,0,0);}
//**********************************
float3 ntexcoor=normalize(input.viewVec.xyz);
float leng=length(ntexcoor.xz);
float2 textcoor = ntexcoor.xz*(1.4-ntexcoor.y)+0.03*float2(time,time);
//**********************************
//читаю из текстуры облакаж
float4 cloud=pow(1.35*tex2D(diffuseSampler,textcoor),4);
float mixfactor=2*frac(time/50);
if(mixfactor<=1){red=0.7*lerp(cloud.x,cloud.y,mixfactor);}
if(mixfactor>1){red=0.7*lerp(cloud.x,cloud.y,2-mixfactor);}
if(leng>0.949){red=lerp(1,red,20*(0.999-leng));}
if(leng>0.999){red=1;}
float4 cloud1=float4(1,1,1,1)-min(float4(red,red,red,0),diffuse);
float4 result=max(cloud1,diffuse);
// возвращаем результирующий цвет пиксела
return result+2*sunc;
(output.viewVec=input.position;)
}
Прикольные текстурные координаты создающие впечатление плоскости при рисовании на сфере.