Тема: Странное.
Показать сообщение отдельно
Старый 10.12.2011, 20:48   #317
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Странное.



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;)

Прикольные текстурные координаты создающие впечатление плоскости при рисовании на сфере.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
tormoz (10.12.2011)