Używając następującego ustawienia dla efektu cząstek OpenGL:
SRC: GL_SRC_ALPHA
DST: GL_ONE
Tworzy mieszankę dodatków, która wygląda spektakularnie na czarnym tle, ale straszna w jaśniejszych kolorach, ponieważ zaczyna blaknąć do bieli.
Następnie użyłem mieszania alfa:
SRC: GL_SRC_ALPHA
DST: GL_ONE_MINUS_SRC_ALPHA
Pozwala to na użycie innych środowisk bez wpływu na kolor cząstek, ale same cząstki wyglądają matowo w porównaniu do mieszanki dodatków. Jak mogę uzyskać dobry efekt ognia dzięki mieszaniu alfa i cząsteczkom?
Przyłączeniowy:
Alfa:
AKTUALIZACJA:
Postępując zgodnie z radą Davida poniżej, stworzyłem osobną teksturę, a następnie zastosowałem mieszankę dodatków do efektu cząstek przed narysowaniem na fakturze. Problem polega na tym, że narysowanie tekstury alfa = 0 spowodowało pojawienie się tylko kolorowych części cząsteczki przed moją mapą świata, ponieważ zwykle zamiast tego masz czarne tło. Sztuką było użycie dwóch tekstur. Stworzyłem czarną teksturę, a następnie narysowałem na niej cząsteczki. Następnie usunąłem warstwę alfa cząstek z tej tekstury, skutecznie usuwając całą otaczającą jednolitą czerń i zanikając częściowo widoczne cząstki, pozostawiając leżącą pod spodem czerń, jak można się spodziewać podczas tworzenia dodatków mieszających cząstki na czarnym tle. Krótko mówiąc, wyczerpujący proces, ale w końcu dotarłem:
Oto wątek, w którym opublikowałem mój proces: http://www.cocos2d-iphone.org/forum/topic/28707?replies=8#post-141528
Spójrz na wstępnie pomnożoną alfa.
http://blogs.msdn.com/b/shawnhar/archive/2009/11/07/premultiplied-alpha-and-image-composition.aspx
źródło
Jak zauważył David Gouveia, nie ma satysfakcjonującego zamiennika dla mieszania dodatków na jasnym tle. Najlepszy efekt jaki znalazłem (który nie wymaga renderowania w backbufferze) to użycie następującego trybu mieszania GL:
Nie jest tak przyjemny jak mieszanie dodatków, ale o wiele lepszy niż
GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
. Jeśli nieco poprawisz początkową i końcową wartość alfa i koloru, możesz uzyskać wyniki, które są bardzo zbliżone do mieszania addytywnego.Na powyższym obrazku jest
GL_SRC_ALPHA, GL_ONE
po lewej stronie, na środku jest,GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
a po prawej widać tryb mieszania, który zaproponowałbym dla tej konfiguracji.źródło
Próbowałeś używać obu? Nakładaj na cząsteczki mieszanie alfa, które powinno uzyskać twoje kolory tak, jak chcesz, a następnie wróć z mieszaniem dodatkowym, aby uzyskać przyjemny efekt, którego szukasz.
źródło
Po pierwsze, obrazy cząsteczek, których używasz, wydają się mieć czarne tło, co powoduje powstawanie ciemnych obwódek na tym drugim obrazie. Nie rób tego; to znaczy nie rysuj kształtu cząsteczki na kanałach kolorów. Zamiast tego obraz powinien być jednolicie pokolorowany i określać tylko kształt w kanale alfa.
Takie działanie znacznie poprawi wygląd przezroczystości alfa. Następnie możesz dalej poprawić wygląd ogólnego efektu, zmieniając kolor cząsteczek przez cały okres ich użytkowania. Podobnie, podstawowy obraz jest bardzo jasny, co daje centralnie jasny żółty obszar. Następnie odcień cząsteczek czerwonawo-pomarańczowy i z czasem zwiększaj odcień. W ten sposób cząstki ciemnieją, gdy wychodzą z centrum.
źródło