Usando a seguinte configuração para o efeito de partícula OpenGL:
SRC: GL_SRC_ALPHA
DST: GL_ONE
Cria uma mistura aditiva, que parece espetacular em um fundo preto, mas terrível em cores mais brilhantes, pois começa a desbotar para o branco.
Eu então usei a mistura alfa:
SRC: GL_SRC_ALPHA
DST: GL_ONE_MINUS_SRC_ALPHA
Isso permite que outros fundos sejam usados sem afetar a cor das partículas, mas as próprias partículas parecem opacas em comparação com a mistura aditiva. Como posso obter um bom efeito de fogo com mistura alfa e partículas?
Aditivo:
Alfa:
ATUALIZAR:
Seguindo o conselho de David abaixo, criei uma textura separada e depois usei a mistura aditiva no efeito de partículas antes de desenhar na textura. O problema disso é que desenhar uma textura alfa = 0 resultou apenas nas partes coloridas da partícula aparecendo na frente do meu mapa do mundo, pois normalmente você tem um fundo preto. O truque era usar duas texturas. Eu criei uma textura preta e desenhei as partículas nela. Em seguida, removi a camada alfa das partículas dessa textura, removendo efetivamente todo o preto sólido ao redor e esmaecendo as partículas parcialmente visíveis, deixando o preto subjacente como seria de esperar ao criar partículas de mistura aditiva em um fundo preto. Em suma, um processo cansativo, mas cheguei lá eventualmente:
Aqui está o tópico em que postei meu processo: http://www.cocos2d-iphone.org/forum/topic/28707?replies=8#post-141528
Dê uma olhada no alfa pré-multiplicado.
http://blogs.msdn.com/b/shawnhar/archive/2009/11/07/premultiplied-alpha-and-image-composition.aspx
fonte
Como David Gouveia apontou, não há substituto satisfatório para a mistura de aditivos em fundos brilhantes. O melhor efeito que encontrei (que não requer algo como renderizar para um backbuffer) é usar o seguinte modo de mistura GL:
Não é tão bom quanto a mistura aditiva, mas muito melhor que isso
GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
. Se você ajustar um pouco os valores alfa e de cor inicial e final, poderá obter resultados realmente próximos da mistura aditiva.Na imagem acima,
GL_SRC_ALPHA, GL_ONE
à esquerda, no meio,GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
e à direita, você pode ver o modo de mesclagem que eu proporia para essa configuração.fonte
Você já tentou usar os dois? Aplique camadas de algumas partículas com mistura alfa, que devem ter as cores do jeito que você deseja, depois volte com algumas combinações aditivas para obter o melhor destaque que você está procurando.
fonte
Bem, primeiro, as imagens de partículas que você está usando parecem ter um fundo preto, resultando nas franjas escuras da segunda imagem. Não faça isso; isto é, não desenhe a forma da partícula nos canais de cores. Em vez disso, a imagem deve ser solidamente colorida e definir apenas a forma no canal alfa.
Isso melhorará consideravelmente a aparência da transparência alfa. Em seguida, você pode melhorar ainda mais a aparência do efeito geral, fazendo com que as partículas mudem de cor ao longo da vida útil. Assim, a imagem base é muito clara, fornecendo a área central amarela brilhante. Em seguida, tinja as partículas de laranja avermelhado e aumente a tonalidade com o tempo. Dessa forma, as partículas vão escurecer à medida que se afastam do centro.
fonte