Usando la siguiente configuración para el efecto de partículas OpenGL:
SRC: GL_SRC_ALPHA
DST: GL_ONE
Crea una mezcla aditiva, que se ve espectacular en un fondo negro pero terrible en colores más brillantes, ya que comienza a desvanecerse en blanco.
Luego usé la mezcla alfa:
SRC: GL_SRC_ALPHA
DST: GL_ONE_MINUS_SRC_ALPHA
Esto permite que se utilicen otros fondos sin afectar el color de las partículas, pero las partículas en sí mismas se ven opacas en comparación con la mezcla de aditivos. ¿Cómo puedo lograr un buen efecto de fuego con la mezcla alfa y las partículas?
Aditivo:
Alfa:
ACTUALIZAR:
Siguiendo los consejos de David a continuación, creé una textura separada y luego usé una mezcla aditiva en el efecto de partículas antes de dibujar sobre la textura. El problema con eso es que dibujar en una textura alfa = 0 resultó en que solo las partes coloreadas de la partícula aparecieran frente a mi mapa mundial, ya que normalmente tienes un fondo negro. El truco consistía en usar dos texturas. Creé una textura negra y luego dibujé las partículas sobre ella. Luego eliminé la capa alfa de las partículas de esta textura, eliminando efectivamente todo el negro sólido circundante y desvaneciendo las partículas parcialmente visibles, mientras dejaba el negro subyacente como era de esperar al hacer partículas de mezcla aditiva sobre un fondo negro. En resumen, un proceso agotador, pero finalmente llegué allí:
Aquí está el hilo donde publiqué mi proceso: http://www.cocos2d-iphone.org/forum/topic/28707?replies=8#post-141528
Echa un vistazo al alfa premultiplicado.
http://blogs.msdn.com/b/shawnhar/archive/2009/11/07/premultiplied-alpha-and-image-composition.aspx
fuente
Como señaló David Gouveia, no hay un reemplazo satisfactorio para la mezcla de aditivos en fondos brillantes. El mejor efecto que encontré (que no requiere algo como renderizar en un backbuffer) es usar el siguiente modo de mezcla GL:
No es tan bueno como la mezcla de aditivos, pero mucho mejor que
GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
. Si modifica un poco los valores iniciales y finales de alfa y color, puede obtener resultados muy cercanos a la combinación de aditivos.En la imagen de arriba hay
GL_SRC_ALPHA, GL_ONE
a la izquierda, en el medio hayGL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
y a la derecha puedes ver el modo de fusión que propondría para esta configuración.fuente
¿Has intentado usar ambos? Capa en algunas partículas con mezcla alfa, que debería obtener sus colores de la manera que desee, luego regrese con una mezcla aditiva para obtener el bonito resaltado que está buscando.
fuente
En primer lugar, las imágenes de partículas que está utilizando parecen tener un fondo negro, lo que da como resultado franjas oscuras en esa segunda imagen. No hagas eso; es decir, no dibuje la forma de la partícula en los canales de color. En cambio, la imagen debe tener un color sólido y solo definir la forma en el canal alfa.
Hacer eso mejorará considerablemente el aspecto de la transparencia alfa. Luego, puede mejorar aún más el aspecto del efecto general haciendo que las partículas cambien de color a lo largo de su vida útil. Al igual, la imagen base es muy brillante, dándote esa área central de color amarillo brillante. Luego tiñe las partículas de naranja rojizo y aumenta el tono con el tiempo. De esa manera, las partículas se oscurecerán a medida que se muevan desde el centro.
fuente