Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Glow Con Opengl

Iniciado por Lord Trancos 2, 17 de Febrero de 2004, 08:23:23 PM

« anterior - próximo »

Lord Trancos 2

 :lol: Eiiiiii!! Hacia un monton que no me pasaba por aqui, asi que aprovecho el post pa saludar afectuosamente a todos los compis que me conoceis de tiempos pasados, y desmentir los rumores de mi abduccion por estraterrestres de gaminedes.

No creo que vuelva a tener el elevado nivel de posts de mi vida pasada, pero intentare paserme de cuando en cuando por aqui ;)

Y ahora al grano;

 Desde que vi el efecto "glow" cuando jugue al splinter cell, tenia ganas de implementar algo asin; y aunque se como se hace (He encontrado varios sitios donde se explica). Ninguna de esas formas me sirve ya que para "blurear" (desenfocar) la textura suelen usar "pixel shaders" (mi tarjeta [GfMX440] no tiene de eso).

 Tambien he visto que se puede lograr usando "convolutions" pero mi tarjeta tampoco soporta la extension esa, ni tiene accumulation buffer (como la mayoria).

 En resumen;
  - ¿Alguien sabe como hacer el efecto "glow" sin usar pixels shaders, accumulation buffer ni la GL_EXT_Convolution (o como se llame)?
  - O en su defecto, ¿Alguien sabe como "blurear" una textura?

 Se que mi tarjeta puede hacer cosas asi, pq ademas del splinter cell he visto alguna demo que lo hacia...

En fins, cualquier ayuda en este sentido seria genial.

Por si alguien no sabe que es el efecto glow o tiene la suerte de tener soporte para "pixel shaders", en esta web hay un ejemplo http://esprit.campus.luth.se/~humus/
http://esprit.campus.luth.se/~humus/3D/ind...=OpenGL&start=8
(tiene muchas otras demos interesantes)

Weno, eso es todo.
No leemos ;)
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

BeRSeRKeR

 ¡Dios, Lord Trancos. Cuánto me alegro de verte por aquí! :)

Pues verás, en la web de ATI tienes un ejemplo de cómo hacer glow con la fixed pipeline. Lo puedes encontrar aquí.

Decir que la demo esta utiliza Direct3D. Para OpenGL también recuerdo haber visto algo pero el funcionamiento es el mismo.

Bueno, pues a ver si te sirve. Cuéntate algo. ¿Has hecho algo más sobre temas de 3D?. Lo último que supe de tí fue el creador de lightmaps.

Ale, nos leemos.

PD: por cierto, ¿es que no te acuerdas de la contraseña de tu nick anterior? :D
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

ethernet

 lord ;@@@@@@@@@

Hablando un dia con el gaylon de ithaqua sobre una demo de farbraush creo que me dijo que lo hacia de la siguiente forma:

renderizaba la parte que queria "difuminar" a una textura de tamaño pequeño y despues la renderizaba a tamaño grande (con el viewport normal). A mi se me ocurre algo similar, hacer render to texture de la parte interesada y despues hacer el tipico escalado.

quizas ithqua pueda matizar mas, ed todas formas las imagenes de las q hablabamos estan el la iotd de flipcode (http://www.flipcode.com/cgi-bin/msg.cgi?showThread=06-19-2003&forum=iotd&id=-1)

EDIT: Vaya por dios, el documento de ATI explica como se hace de la forma q yo digo :)

saludos ;***

Lord Trancos 2

 Yo tambien me alegro de "veros" :D

Gracias por el ejemplo de glow, el otro dia estuve en la web de ATI buscando cosas de OpenGL y no lo vi (lógico; es DX). Lo he probado y no me va (ni con mi Geforce4 MX440, ni con la Geforce2 MX de mi hermano). Pero da igual; ya me las apañare (o eso espero); aunque ya estaba usando algo parecido y no me convencia (pero en las fotos se ve mejor de lo que a mi me salia).

Respecto a que "cojone" he estado haciendo, se resume en poca cosa; desapareci de los foros mas o menos un poco antes de ponerme a trabajar, y como mi trabajo consiste en programar 8 horas al dia (VB+BD sucks) pues no tenia muchas ganas de continuar programando cuando llegaba a casa, asi que basicamente me he dedicado a otras cosas. Lo poco que he hecho a sido probar a programar OpenGL en linux, empezar un matamarcianos en OpenGL (que seguramente nunca acabare) y alguna cosilla mas...  

Pero ultimamente parece que me voy animando ha hacer cosas, y en un par de semanas he hecho mas cosillas que en varios meses juntos, ya veremos cuanto dura la racha :) con un poco de suerte hasta termino algun juego y todo. :D

Respecto a mi contraseña; me acordaba e incluso la tengo apuntada, pero no funciona... O_O? Deberia de ser practicamente la misma que uso ahora... pero weno... me da igual tener un 2 detras del nick; quien sabe, en un dia de niebla, a lo mejor incluso me puedo hacer pasar por colson. ;)

-------------------------------------------------

ethernet ;**************
me alegra ver que no has cambiado :P

por cierto ya habia intentado algo asi, pero se me notan demasiado los texels.
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

BeRSeRKeR

 
Cita de: "Lord Trancos 2"y como mi trabajo consiste en programar 8 horas al dia (VB+BD sucks) pues no tenia muchas ganas de continuar programando cuando llegaba a casa
Sé lo que quieres decir...  :D

Por cierto, he encontrado otra demo sobre cómo crear glares/glows aquí. En esta ocasión en OpenGL.

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

Lord Trancos 2

 Aqui os dejo lo mejor que consegui hacer hasta dia de ayer.
http://personal.telefonica.terra.es/web/af...tools/temp.html

Como podeis ver me falta mas "blur" y que no se noten los golpecitos esos que da.

La textura que uso es de 128x128

Tambien intente hacer lo de varias texturas a la vez 256, 128, 64, 32 pero no me salia tampoco muy "cool". Veremos si entre la demo de ati y la de los chicos de la "scene" me inspiro.
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

Ithaqua

 Yo he estado algún tiempo investigando esas cosillas y he conseguido hacer bastantes cosas en una geforce 4MX. Hasta Depth of Field progresivo con focus variable ;)

Para hacer glows actualmente hago lo siguiente:

   1-Renderizar escena a textura
   2-Extraer de la textura los hilights, solo permanecerán valores intensos
   3-Blurrear la textura
   4-Renderizar la escena
   5-Aplicar un quad con aditivo por encima de la escena.

Y los resultados son realmente buenos.

He visto hacerlo más cutremente, como por ejemplo eliminar el paso 2) y 3) y usar simplemente una textura con baja resolución. Sirve pero queda muchísimo más cutre.

Y hay formas de aplicar un box blur con precisión por pixel a una textura. Te doy una pista: puedes hacerlo siempre y cuando el radio del blur (en pixels) sea potencia de dos :)

Te recomendaría ver la FR-025 (la URL que posteó ethy) para ver los resultados en movimiento.
thaqua^Stravaganza
http://ithaqua.stravaganza.org

Lord Trancos 2

Cita de: "BeRSeRKeR"
Cita de: "Lord Trancos 2"y como mi trabajo consiste en programar 8 horas al dia (VB+BD sucks) pues no tenia muchas ganas de continuar programando cuando llegaba a casa
Sé lo que quieres decir...  :D

Por cierto, he encontrado otra demo sobre cómo crear glares/glows aquí. En esta ocasión en OpenGL.

Saludos.
(uoh)  Gracias BeRSeRKeR!!!! Eres mi idolo!! ;@@@@@@@@

Funciona muy bien (tanto de velocidad como de apariencia; weno la textura a lo mejor es demasiado pequeña...). Me muero de ganas por meterle mano al codigo, pero a estas horas casi mejor que lo dejo pa mañana
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

Lord Trancos 2

Cita de: "Ithaqua"Y hay formas de aplicar un box blur con precisión por pixel a una textura. Te doy una pista: puedes hacerlo siempre y cuando el radio del blur (en pixels) sea potencia de dos :)

Te recomendaría ver la FR-025 (la URL que posteó ethy) para ver los resultados en movimiento.
"Depth of Field progresivo con focus variable "  :blink:  ostia que bien suena.  (genial)  ya contaras algun dia como lo hiciste ;)

Imagino que el truco para hacer el box blur ese tiene algo que ver con los mipmaps, no? generar mipmaps tal vez? es algo que me quedaba por probar.

Ya habia visto la demo; visito habitualmente flipcode (incluso ahora). Y hoy la habia vuelto a bajar y a ver. Queda muy "cool" :D yo quero.
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

Ithaqua

 No, no van los tiros por los mipmaps :)

El truco está en renderizar a textura, y luego realizar n pasadas donde:

1-Se dibuja el quad 1 pixel a la izquierda y un pixel a la derecha del actual
2-Se copia eso de nuevo a la textura
3-Se dibuja otro quad 1 pixel arriba y un pixel abajo

Total, que ahora tienes los 9 pixels de alrededor
Pues para la siguiente pasada repites el proceso pero con radio 2, luego 4, luego 8...

La ventaja es que como digo la precisión es absoluta (nada de cutreces replicando quads con diferentes radios), y queda perfecto.
Ah, y en una gf4mx va rápido incluso con radios altos (256, aunque con 4-16 ya vas que chutas)
thaqua^Stravaganza
http://ithaqua.stravaganza.org

ethernet

 
Cita de: "Ithaqua"1-Renderizar escena a textura
    2-Extraer de la textura los hilights, solo permanecerán valores intensos
    3-Blurrear la textura
    4-Renderizar la escena
    5-Aplicar un quad con aditivo por encima de la escena.
Como extraes de la textura los  hilights?

Cuando en el primer paso pones lo de renderizar la escena a textura supongo que te referiras a la parte de la que quieres hacer el efecto (en este caso la ventana)


La demo esa que habeis posteado no rula en ATI, usa register combiners.

EDIT: por cierto, creo que una intro de fuzion "parodia" a esa demo de FR aunque ya no recuerdo si paridiaban tb el efecto (otra vez me remito a ithaqua)

saludos

Ithaqua

 Ethernet:

Con el método de sacar los hilights no necesitas renderizar solamente la parte de la que quieres glow, aunque si te puedes permitir hacerlo mejor que mejor. El paso 2) es para cuando el paso 1) renderiza toda la escena, no solo los elementos de los que quieres glow.
Lo que hago es en un primer paso oscurecer la textura, y luego volver a aumentarle brillo. En el primer paso 'capo' hasta cierto nivel de intensidad y en el segundo vuelvo a aumentarle los niveles para restaurar el color de los brillos que permanecieron. Todo eso se puede hacer con un par de quads y el blending apropiado.

Ah, y la intro de Fuzzion que la parodia es:
http://www.pouet.net/prod.php?which=10394

En 4kb, la escena más famosa :)
thaqua^Stravaganza
http://ithaqua.stravaganza.org

ethernet

 Ithaqua: cuando hablas de anadir un pixel supongo que te referiras a dibujar un quad del tamaño de la pantalla (con orto) de tamaño un pixel mas grande que la propia pantalla.

saludos

Ithaqua

 Sí, estableciendo una proyección ortonormal con límites los del tamaño de la textura.
thaqua^Stravaganza
http://ithaqua.stravaganza.org

tamat

 Pero haciendo eso estas aumentando la iluminación de toda la escena, no? porque cada quad aditivo sobre toda la escena añade más luz, compensais eso reduciendo la luz general de la escena o hay algun modo de que al hacer el render aditivo del quad normalice?
Por un stratos menos tenso