Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: marcode en 30 de Agosto de 2006, 12:35:54 AM

Título: Mi primer shader, chispas
Publicado por: marcode en 30 de Agosto de 2006, 12:35:54 AM
Una vez solventado el problema de la inserción de shaders en mi terreno, me ha dao el ansia por hacer el efecto de niebla.

Pero antes de hacerle un copy&paste a Ralp o leerme su libro de scattering he preferido intentarlo a partir de los shader de niebla básicos, y este es el resultado:

Me "he ido" a los picos de Urbión para ver mejor el efecto.

(http://img64.imageshack.us/img64/5519/fogba4.jpg)

Éste es el fragment shader


uniform sampler2D tex;

void main()
{

  // calcular la luminosidad de la niebla
float fogLum = 1.0-exp(0.00003 * gl_FogFragCoord);
fogLum = clamp(fogLum, 0.4, 0.6);

  // calcular el color a partir de la luminosidad
vec4 fogColor = vec4( fogLum, fogLum*1.3, fogLum*1.6, 0.0 );

  // calcular la densidad
float fog = exp(0.0002 * (gl_FogFragCoord));
fog = clamp(fog, 0.1, 1.0);
 
  // mezclar los valores de color de niebla, color de pixel y densidad
gl_FragColor = mix( fogColor, gl_Color, fog );

  // y esto si no lo pongo no sale la niebla aunque no use texturas
texture2D(tex, gl_TexCoord[0].st);
}


Tendré que aprender más para mejorarlo pero de momento no queda mal, es el efecto que quería que clarea a mayor distancia y hace que se aprecie el perfil de las montañas.

Por cierto, la última línea me toca las narices.
Título: Mi primer shader, chispas
Publicado por: Pablo Zurita en 30 de Agosto de 2006, 04:11:25 AM
Tenes el sampler tex que no lo usas. Saca la definición del sampler y saca esa línea al final de tu shader.
Título: Mi primer shader, chispas
Publicado por: JL10 en 30 de Agosto de 2006, 08:55:02 AM
Es impresionante el efecto. Por favor nos vas comentando los progresos que hagas con muestras de código. Gracias. Creo que me voy a animar con los shaders.  :)
Título: Mi primer shader, chispas
Publicado por: marcode en 30 de Agosto de 2006, 03:48:37 PM
Cita de: "Pablo Zurita"Tenes el sampler tex que no lo usas. Saca la definición del sampler y saca esa línea al final de tu shader.
Lo hice y lo mismo, lo curioso es que cuando lo quito sale bien todo pero la niebla desaparece, me pasa cada cosa...


He sacado unas capturas para comparar la niebla típica y la del shader, la diferencia es evidente, he puesto también como se ve sin niebla (horrible).

(http://img83.imageshack.us/img83/2168/fogssh6.jpg)