ok l'ho inserito nello shader che pero' e' anche quello che gestisce la shadowMap e' un po' difficile passarti tutto senza adeguate spiegazioni..
Diciamo che se hai un pixelshader qualsiasi puoi applicare questa tecnica:
dichiara queste variabili
float red = 0.06f;
float green = 0.15f;
float blue = 0.7f;
float Xsave=0.0f;
float4 Decay=0.0f;
quindi nel metodo del pixel shader inserisci:
float r1 = (0.0001f*(Xsave-5000));
float g1 = (0.0003f*(Xsave-5000));
float b1 = (0.001f*(Xsave-5000));
if( r1 < red && r1>0.0f) red = r1;
if( g1 < green && g1>0.0f) green = g1;
if( b1 < blue && b1>0.0f) blue = b1;
if(r1>0.0f || g1>0.0f || b1>0.0f) Decay = float4 (red,green,blue,0.0f);
Ora non ti resta che sommare Decay all'utput del duo pixelshader ed il colore virera' verso il celeste.
In pratica diciamo che se sull'asse X un modello si trova oltre la distanza 5000 il suo colore virerà verso i valori settati in red,green,blue, tuttavia e' una soluzione ad Hoc per il gioco e non so se ti tornera' utile in generale.
Ultima modifica effettuata da il pisano il 21/09/2008 alle 0:48 |