Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Problemas con el specular

Iniciado por Drácula, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

Drácula

                                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?
                               
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

MChiz

                                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 >                                

Drácula

                                Lo he probado y no parece funcionar. Parece como si el specular tuviera SIEMPRE un Alpha de 255!!                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

Lord Trancos

                                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...                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

Drácula

                                Quiero utilizar el specular para que el sprite se ilumine!                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

Ithaqua

                                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

                               
thaqua^Stravaganza
http://ithaqua.stravaganza.org

BeRSeRKeR

                                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
                               
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Drácula

                                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?
                               
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

BeRSeRKeR

                                Joder...esto ya es casualidad :riendo:, hemos puesto el post al mismo tiempo xDDDD
                               
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Drácula

                                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!                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

BeRSeRKeR

                                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
                               
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

BeRSeRKeR

                                http://www.arrakis.es/~jonathan01/lightmapSpec.zip">Aquí pongo el código por si a alguien le interesa echarle un vistazo.

Un saludo.
                               
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.