Utilisation du paramètre suivant pour l'effet de particule OpenGL:
SRC: GL_SRC_ALPHA
DST: GL_ONE
Crée un mélange additif, qui a un aspect spectaculaire sur un fond noir mais qui est terrible pour des couleurs plus vives, car il commence à passer au blanc.
J'ai ensuite utilisé le mélange alpha:
SRC: GL_SRC_ALPHA
DST: GL_ONE_MINUS_SRC_ALPHA
Cela permet d'utiliser d'autres fonds sans affecter la couleur des particules, mais les particules elles-mêmes ont un aspect terne par rapport au mélange additif. Comment obtenir un bon effet de feu avec le mélange alpha et les particules?
Additif:
Alpha:
MISE À JOUR:
Suivant les conseils de David ci-dessous, j'ai créé une texture séparée, puis utilisé un mélange additif sur l'effet de particules avant de dessiner sur la texture. Le problème avec cela est que le fait de dessiner sur une texture alpha = 0 a pour résultat que seules les parties colorées de la particule apparaissent devant ma carte du monde, car normalement, vous avez plutôt un fond noir. L'astuce consistait à utiliser deux textures. J'ai créé une texture noire et puis j'ai attiré les particules. Ensuite, j'ai retiré la couche alpha des particules de cette texture, en éliminant efficacement tout le noir environnant et en atténuant les particules partiellement visibles, tout en laissant le noir sous-jacent comme vous le souhaiteriez lorsque vous créez des particules de mélange additives sur un fond noir. En bref, un processus exténuant, mais j'y suis finalement arrivé:
Voici le fil où j'ai posté mon processus: http://www.cocos2d-iphone.org/forum/topic/28707?replies=8#post-141528
Jetez un coup d'œil à l'alpha prémultiplié.
http://blogs.msdn.com/b/shawnhar/archive/2009/11/07/premultiplied-alpha-and-image-composition.aspx
la source
Comme l'a souligné David Gouveia, il n'y a pas de solution de remplacement satisfaisante aux mélanges d'additifs sur des arrière-plans clairs. Le meilleur effet que j'ai trouvé (qui n'exige pas de rendu similaire à celui d'un backbuffer) est d'utiliser le mode de fusion GL suivant:
Ce n'est pas aussi beau qu'un mélange additif, mais bien meilleur que
GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
. Si vous ajustez un peu les valeurs de début et de fin de l'alpha et de la couleur, vous obtiendrez peut-être des résultats très proches du mélange additif.Dans l'image ci-dessus, il y a
GL_SRC_ALPHA, GL_ONE
à gauche, au centreGL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
et à droite, vous pouvez voir le mode de fusion que je proposerais pour cette configuration.la source
Avez-vous essayé d'utiliser les deux? Couchez certaines particules avec le mélange alpha, qui devrait obtenir vos couleurs comme vous le souhaitez, puis revenez avec un mélange additif pour obtenir la mise en valeur que vous recherchez.
la source
Tout d’abord, les images de particules que vous utilisez semblent avoir un fond noir, ce qui donne des franges sombres à la seconde image. Ne fais pas ça c'est-à-dire, ne dessinez pas la forme de la particule sur les canaux de couleur. Au lieu de cela, l'image doit être solidement colorée et définir uniquement la forme dans le canal alpha.
Cela améliorera considérablement l’aspect de la transparence alpha. Vous pouvez ensuite améliorer l'aspect général de l'effet en faisant en sorte que les particules changent de couleur au cours de leur durée de vie. Comme, l'image de base est très lumineuse, vous donnant cette zone jaune vif centrale. Puis colorez les particules orange rougeâtre et augmentez la teinte avec le temps. De cette façon, les particules s’obscurciront à mesure qu’elles s’éloignent du centre.
la source