color transaparente en bennu

Started by Soviet, November 29, 2013, 05:07:16 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

laghengar

Quote from: Drumpi on December 02, 2013, 03:01:06 PM
Quote from: laghengar on December 02, 2013, 12:07:20 AM
Quote from: SplinterGU on December 01, 2013, 09:57:36 PM
no es rgb sino 0.

No lo he entendido o_O

Creo que quiere decir que da igual que sea un color RGB(0,0,0), BRG(0,0,0), YCMK(0,0,0,0) o patatalimónpera(0,0,0), Bennu (y Fénix) interpretan como transparente un pixel con el valor cero, independientemente de cómo se interprete la cadena de bytes o de que el pixel ocupe 1, 2, 3 ó 4 Bytes.

Osea, color 0 en 8bits = 0

color rgb(0,0,0) en 16 bits = 0

color rgb(0,0,0,0) en 32 bits = 0

Para todos los pcs, es eso?
!!!Blender Blender Blender yuhuuuuuuu¡¡¡ novato o_O

Drumpi

Sí, pero no has entendido bien lo que quería decir: cuando usas rgb (o rgba), bennu llama a la tarjeta gráfica para que transforme las componentes en un color, y esta devuelve un valor que vale entre 0 y 2¹⁶ (o 0 y 2³² si es de 32 bits). Si usas el valor 0 directamente, no se realiza esta operación.
Obviamente, en un gráfico fuera de Bennu no puedes poner un 0 de forma directa, sin usar un editor hexadecimal: tienes que usar una herramienta que, dado unos valores concretos, escriba cero en esa posición.

Puedes usar map_put_pixel(0) para poner un pixel transparente, independientemente del modo gráfico, no hace falta hacer map_put_pixel(rgb(0,0,0)).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Soviet

Quote from: Drumpi on December 04, 2013, 12:14:53 AM
Sí, pero no has entendido bien lo que quería decir: cuando usas rgb (o rgba), bennu llama a la tarjeta gráfica para que transforme las componentes en un color, y esta devuelve un valor que vale entre 0 y 2¹⁶ (o 0 y 2³² si es de 32 bits). Si usas el valor 0 directamente, no se realiza esta operación.
Obviamente, en un gráfico fuera de Bennu no puedes poner un 0 de forma directa, sin usar un editor hexadecimal: tienes que usar una herramienta que, dado unos valores concretos, escriba cero en esa posición.

Puedes usar map_put_pixel(0) para poner un pixel transparente, independientemente del modo gráfico, no hace falta hacer map_put_pixel(rgb(0,0,0)).
entonces puedes tomar aquel color con map_get_pixel y luego hacerlo transparente con map_put_pixel(0), cierto?

SplinterGU

Quote from: Drumpi on December 04, 2013, 12:14:53 AM
Sí, pero no has entendido bien lo que quería decir: cuando usas rgb (o rgba), bennu llama a la tarjeta gráfica para que transforme las componentes en un color, y esta devuelve un valor que vale entre 0 y 2¹⁶ (o 0 y 2³² si es de 32 bits). Si usas el valor 0 directamente, no se realiza esta operación.
Obviamente, en un gráfico fuera de Bennu no puedes poner un 0 de forma directa, sin usar un editor hexadecimal: tienes que usar una herramienta que, dado unos valores concretos, escriba cero en esa posición.

Puedes usar map_put_pixel(0) para poner un pixel transparente, independientemente del modo gráfico, no hace falta hacer map_put_pixel(rgb(0,0,0)).

bennu no llama a la tarjeta grafica para esto.

en 16 bits, rgb0,0,0 es rgb0,0,1 nunca es transparente, en cambio, si usamos el valor directamente en lugar de rgb (que rgb no es mas que una funcion que devuelve un entero), o sea, ponemos directamente 0, hacemos el color transparente.

en 32bits rgb(0,0,0) es rgba(0,0,0,255), rgba(0,0,0,0) es 0... pero es mejor poner directamente 0.

ahora si hacemos desde un programa grafico y creamos un png, lo que tenemos que hacer es poner el canal alpha al png y usar las transparencias segun el editor (usando el canal alpha para eso)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Quote from: Soviet on December 04, 2013, 01:17:03 AM
Quote from: Drumpi on December 04, 2013, 12:14:53 AM
Sí, pero no has entendido bien lo que quería decir: cuando usas rgb (o rgba), bennu llama a la tarjeta gráfica para que transforme las componentes en un color, y esta devuelve un valor que vale entre 0 y 2¹⁶ (o 0 y 2³² si es de 32 bits). Si usas el valor 0 directamente, no se realiza esta operación.
Obviamente, en un gráfico fuera de Bennu no puedes poner un 0 de forma directa, sin usar un editor hexadecimal: tienes que usar una herramienta que, dado unos valores concretos, escriba cero en esa posición.

Puedes usar map_put_pixel(0) para poner un pixel transparente, independientemente del modo gráfico, no hace falta hacer map_put_pixel(rgb(0,0,0)).
entonces puedes tomar aquel color con map_get_pixel y luego hacerlo transparente con map_put_pixel(0), cierto?

si quieres ponerlo a 0, para que quieres tomarlo? (no lei todo el hilo, asi que quizas estoy preguntando alguna tonteria)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Soviet

Quote from: SplinterGU on December 04, 2013, 03:03:26 AM
Quote from: Soviet on December 04, 2013, 01:17:03 AM
Quote from: Drumpi on December 04, 2013, 12:14:53 AM
Sí, pero no has entendido bien lo que quería decir: cuando usas rgb (o rgba), bennu llama a la tarjeta gráfica para que transforme las componentes en un color, y esta devuelve un valor que vale entre 0 y 2¹⁶ (o 0 y 2³² si es de 32 bits). Si usas el valor 0 directamente, no se realiza esta operación.
Obviamente, en un gráfico fuera de Bennu no puedes poner un 0 de forma directa, sin usar un editor hexadecimal: tienes que usar una herramienta que, dado unos valores concretos, escriba cero en esa posición.

Puedes usar map_put_pixel(0) para poner un pixel transparente, independientemente del modo gráfico, no hace falta hacer map_put_pixel(rgb(0,0,0)).
entonces puedes tomar aquel color con map_get_pixel y luego hacerlo transparente con map_put_pixel(0), cierto?

si quieres ponerlo a 0, para que quieres tomarlo? (no lei todo el hilo, asi que quizas estoy preguntando alguna tonteria)
me refiero a que si el color no es transaprente, puedes hacerlo transparente por medio de esa funcion, es lo que queria saber

laghengar

Como trabajas a 32 bits, con que le pongas su alfa a cero es suficiente. Ahora, el único color que no es detectable en colisiones es el 0 absoluto, que para 32 bits es el (0,0,0,0). Lo que comentan Drumpi y Splinter es que (0,0,0,0) = 0.

Ahora, cualquier color (32,231,43,0) (23,56,32,0) (34,78,23,0).... que tenga el alfa a cero es invisible. Imagino que sabes que para diferentes niveles de transparencia tienes 256, ya que alfa puede tener un valor de 0 a 255. Y que todo eso lo puedes poner en el gráfico en un editor.
!!!Blender Blender Blender yuhuuuuuuu¡¡¡ novato o_O

Drumpi

Quote from: SplinterGU on December 04, 2013, 03:02:41 AM
Quote from: Drumpi on December 04, 2013, 12:14:53 AM
Sí, pero no has entendido bien lo que quería decir: cuando usas rgb (o rgba), bennu llama a la tarjeta gráfica para que transforme las componentes en un color, y esta devuelve un valor que vale entre 0 y 2¹⁶ (o 0 y 2³² si es de 32 bits). Si usas el valor 0 directamente, no se realiza esta operación.
Obviamente, en un gráfico fuera de Bennu no puedes poner un 0 de forma directa, sin usar un editor hexadecimal: tienes que usar una herramienta que, dado unos valores concretos, escriba cero en esa posición.

Puedes usar map_put_pixel(0) para poner un pixel transparente, independientemente del modo gráfico, no hace falta hacer map_put_pixel(rgb(0,0,0)).

bennu no llama a la tarjeta grafica para esto.

¿Seguro? ¿Entonces por qué en 16 bits no todas las tarjetas de video devuelven el mismo color? ¿No lo hace Bennu a través de SDL, que es la responsable de este comportamiento?

Pero bueno, es más que nada para ilustrar la diferencia entre usar la función RGB y poner un valor directamente ;)
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

quien te dijo que no devuelven el mismo color???!!! de donde sacaste eso???!!!

incluso si usaran SDL, tampoco llaman a la tarjeta.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

laghengar

Entonces, por lo que estoy entendiendo, el entero que representa el color es el mismo en cualquier pc. La ventaja de usar rgb es que con el entero -1532345 uno no sabe que color puede ser, pero si ve rgb(0,10,0,5) es más fácil de imaginar.
!!!Blender Blender Blender yuhuuuuuuu¡¡¡ novato o_O

Drumpi

Quote from: SplinterGU on December 06, 2013, 12:59:17 PM
quien te dijo que no devuelven el mismo color???!!! de donde sacaste eso???!!!

incluso si usaran SDL, tampoco llaman a la tarjeta.

En toda la documentación existente en Fenix. No me hagas buscarte la referencia concreta, porque ahora no la encuentro y voy con prisas urgentes, pero es la principal razón por el que se desaconsejaba la creación de mapas de durezas de 16 bits.
A menos que al reescribir código en Bennu hayas modificado este comportamiento, eso se seguiría dando hoy día.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

#26
pues no es asi... creo que te confundes en que un valor A->B->C (siendo A rgb16, B int16, C rgb16) no siempre es A = C, y eso es simplemente por una cuestion logica, no puedes meter 24 bits en 16 sin perdida... de cada componente RGB16 solo se toman 565 bits (R5G6B5).

lo que dices no es correcto... los rgb16 no varian dependiendo de la placa de video o el hardware... varian dependiendo si se pierden o no bits en la conversion.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Bueno, Splinter, si no me crees, quizás creas a la wiki de divsite:
http://fenix.divsite.net/docs/xml/pal/rgb.xml
QuoteLa codificación de un color depende completamente de la tarjeta
       gráfica
. Es posible que algunas tarjetas gráficas no dispongan
       de un modo de 16 bits y Fenix se ejecute en uno de 15 bits en
       su lugar, por ejemplo.

A tu favor diré que ignoraba la razón, pues teniendo ayuda offline, rara vez acudo a las fuentes en red, por lo que la razón, que quedó de manifiesto en algna de las actualizaciones, no la conocía.
Otra cosa es que ahora hagas la conversión por software con bennu.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

#28
la wiki es una descripcion muy generica... no es correcto lo que dice...

aca se usan mapas 16 bits rgb 565, y se dibujan sobre un mapa similar... si luego sdl lo renderea a una pantalla 32bits o una de 16bits rgba 5551 o lo que sea, no nos interesa... nuestros pixels siguen siendo 565.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2