Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Drácula en 01 de Enero de 1970, 01:00:00 AM

Título: Problemas con el specular
Publicado por: Drácula en 01 de Enero de 1970, 01:00:00 AM
                                Bien, una vez resuelto el blending para que el sprite me ilumine el fondo, he decidido utilizar el Specular para darle más fuerza.
Según tengo entendido, para que veamos un color, DX8 calcular primero el valor del texel realizando la operación que le indicamos, normalmente modular textura y diffuse, y después le suma el Specular. Algo así:

Texel Final=(Texel Modulate Diffuse)+Specular


Por eso, si queremos iluminar un sprite, debemos aumentar su specular, y si queremos oscurecerlo, disminuimos su diffuse.

Esto funciona, pero...Si utilizo el specular siguiente:

Specular=ARGB(0,255,255,255)

Ocurre un problema, y es que no me respeta el Alpha, y el sprite en lugar de aparecer con la forma del foco de luz, me aparece un rectángulo, como si no tuviera transparencia. Y eso sí, me sale más iluminado...

¿Alguien sabe qué hago mal o qué puedo hacer para solventar el problema?
                               
Título: Problemas con el specular
Publicado por: MChiz en 01 de Enero de 1970, 01:00:00 AM
                                Hola Dracula!! :sonriendo:
Pues la única solución que veo para tu problema es usar AlphaTest. Como haces blending aditivo, el lugar donde no se debe ver la especular sera en el negro puro, no? Aunque haya un pixel que tenga RGB111, por lógica ya debería tener la especular. Yo pondría un:
glAlphaFunc( GL_NOTEQUAL, 0.0f );

Siento no saber el código en DirectX ^_^'
En fin, espero haberte ayudado.
Un saludete!!

< MChiz >                                
Título: Problemas con el specular
Publicado por: Drácula en 01 de Enero de 1970, 01:00:00 AM
                                Lo he probado y no parece funcionar. Parece como si el specular tuviera SIEMPRE un Alpha de 255!!                                
Título: Problemas con el specular
Publicado por: Lord Trancos en 01 de Enero de 1970, 01:00:00 AM
                                Yo he tenido el mismo problema trabajando en 3D. Parece ser que las transparencias y el specular no se llevan bien. De todos modos, ¿no se supone que la luz specular depende del angulo de la camara y las superficies? si estas trabajando en 2D no entiendo pq intentas usar el specular...                                
Título: Problemas con el specular
Publicado por: Drácula en 01 de Enero de 1970, 01:00:00 AM
                                Quiero utilizar el specular para que el sprite se ilumine!                                
Título: Problemas con el specular
Publicado por: Ithaqua en 01 de Enero de 1970, 01:00:00 AM
                                No puedes usar el specular para generar transparencias. ¿Por que no usas un canal alpha para el sprite? Sería lo mas lógico.

Saludos, Ithaqua.

http://ithaqua.stravaganza.org

                               
Título: Problemas con el specular
Publicado por: BeRSeRKeR en 01 de Enero de 1970, 01:00:00 AM
                                Hmm creo que la componente alpha del specular no entra en juego a la hora de calcular el valor final del color...más bien el problema puede estar al haber una saturación de color al especificar el color blanco puro para el specular. ¿Te pasa lo mismo si utilizas por ejemplo (128, 128, 128)?

Por ahora eso es todo lo que puedo decir...

Un saludo
                               
Título: Problemas con el specular
Publicado por: Drácula en 01 de Enero de 1970, 01:00:00 AM
                                No ithaqua, yo tengo solucionado el problema de la transparencia con un canal alpha en la textura.

El problema es que al usar el specular, parece que se desentiende totalmente del alpha de la textura, cuando no debería ser así!
En cambio si quito el specular todo funciona bien.

¿ideas?
                               
Título: Problemas con el specular
Publicado por: BeRSeRKeR en 01 de Enero de 1970, 01:00:00 AM
                                Joder...esto ya es casualidad :riendo:, hemos puesto el post al mismo tiempo xDDDD
                               
Título: Problemas con el specular
Publicado por: Drácula en 01 de Enero de 1970, 01:00:00 AM
                                Jejeej...

Sí que me pasa bajando los valores. Da la sensación de que al usar el Specular, NO respeta el Alpha que había en ese momento.

Pero...¡no tiene sentido!                                
Título: Problemas con el specular
Publicado por: BeRSeRKeR en 01 de Enero de 1970, 01:00:00 AM
                                Es extraño...he probado a ponerle el specular al codigo que puse aquí y funciona casi bien...la única diferencia con el anterior es que al lightmap le meto un canal alpha. Lo que pasa es que si le meto un valor specular cercano al blanco, a parte de que no se ve nada (sólo el blanco del foco de luz), pues se puede distinguir un poco los bordes del polígono que contiene el lightmap...

Un saludo
                               
Título: Problemas con el specular
Publicado por: BeRSeRKeR en 01 de Enero de 1970, 01:00:00 AM
                                Aquí pongo el código por si a alguien le interesa echarle un vistazo.

Un saludo.