Piszę układ cząsteczek i chciałbym znaleźć sposób na uzyskanie właściwego mieszania alfa bez sortowania cząstek, ponieważ:
- Każda cząstka jest duszkiem punktowym w pojedynczej siatce i nie mogę użyć zdolności wykresu sceny do sortowania przezroczystych węzłów. Węzeł systemowy powinien być jednak odpowiednio posortowany.
- Pozycja cząstek jest obliczana na module cieniującym na podstawie prędkości początkowej, przyspieszenia i czasu. Aby posortować system, musiałbym wykonać wszystkie te obliczenia na procesorze, czego chcę uniknąć.
- Sortując setki cząstek w zależności od pozycji kamery i przesyłając ją na GPU, każda ramka łączy się, aby była cicha i ciężka.
Testy alfa wydają się być wystarczająco szybkie w GLES 2.0 i działają dobrze w przypadku nieprzezroczystych, ale „zamaskowanych” tekstur. Nadal jednak nie wystarczy dla półprzezroczystych cząstek.
Jak sobie z tym poradzisz?
opengl
opengl-es
particles
transparency
Stepan Zastupov
źródło
źródło
Odpowiedzi:
Oto co bym zrobił.
Krok 1: Nie sortuj. Po prostu to zrób. Sprawdź, czy to problem. Najprawdopodobniej nie jest.
Krok 2: Ogranicz cząstki do takich, które tak naprawdę nie wymagają sortowania, takich jak:
Tylko bryły (z możliwymi krawędziami alfa do pokrycia)
Tylko bity addytywne
Krok 3: jeśli potrzeba więcej, podziel renderowanie cząstek na kawałki, które muszą znajdować się z przodu i reszty, i wykonaj renderowanie w kilku przejściach (na przykład może naprawić złożony dym)
Krok 4: jeśli nadal potrzeba więcej lub potrzebujesz ogólnego rozwiązania, jedną z rzeczy, które przychodzą na myśl, byłoby użycie MRT, aby uzyskać bardzo zgrubne sortowanie wiaderka N; renderuj cząstki na N powierzchni wyjściowych i komponuj je w osobnym przejściu.
Wszystko inne wymagałoby więcej informacji na temat konkretnego przypadku użycia. Ale jestem pewien, że tak naprawdę wcale nie potrzebujesz niezależności od zamówienia. Wystarczy użyć wystarczającej liczby losowych cząstek, a będzie dobrze =)
źródło
Po prostu nie zapisuj do bufora głębokości podczas renderowania cząstek. Umożliwi to ich renderowanie i łączenie ze sobą. Nadal powinieneś jednak przeprowadzać testy głębokości, aby mogły zostać poprawnie zasłonięte przez geometrię w scenie.
źródło
Stosowanie kolejności mieszania dodatków nie ma znaczenia:
Zakłada się, że tekstura duszka ma przezroczyste tło.
źródło