Jak mogę stworzyć mgiełkę objętościową opartą na wysokości?

10

Ostatnio szukałem technik tworzenia mgły wolumetrycznej na pewnym poziomie pozycji Y świata gry. Ale wszystko, co znalazłem, to mgła wykonana za pomocą układu cząstek lub wbudowanej mgły silnikowej, która tak naprawdę nie pasuje do tego, czego szukam.

W moim przypadku potrzebuję mgły, która jest zarówno wydajna, jak i gęsta. Powinno być na całym świecie gry, ale oczywiście ze względów wydajnościowych może być renderowane tylko jako część kamery lub shadera i wygląda na to, że się porusza, ale to tylko złudzenie. Mógłbym ustawić układ cząsteczkowy, jeśli jest to najlepszy wybór, podłączyć go do kamery i poruszać.

Pozostaje więc główne pytanie - jak mogę wdrożyć mgiełkę objętościową, która jest zarówno gęsta, jak i wydajna?

Jako szczególny silnik, którego używam, jest Unity.

Jako przykład mam na myśli link do gry z efektem, którego szukam: Astromike

Przykładowy zrzut ekranu z gry z gęstą mgłą opartą na wysokości.

Candid Moon _Max_
źródło
Trochę tutaj GLOB-noob, ale co powiesz na zabarwienie pikseli w module cieniującym fragmenty w oparciu o ich współrzędną Y, którą pobrałbyś z modułu cieniującego wierzchołki?
Quentin
2
Czy przeczytałeś przemówienie Unity na temat „Efekty specjalne z głębią” ? Choć ma już kilka lat, zasady nadal obowiązują. Obejmują one zarówno mgły oparte na wysokości, jak i „puszyste mgły”, które gromadzą się w pustych przestrzeniach i cienkie wokół przeszkód, a ponieważ wszystkie przykłady to Jedność, powinno być łatwe do zastosowania.
DMGregory
@Quentin tak, dobry pomysł, ale czy będzie to moduł cieniujący na obiekt, prawda? Wtedy wymagałoby to zmiany wielu shaderów. Również jestem programistą w dziedzinie shaderów, więc mogłem napisać jakieś bzdury. Ale o ile wiem, shadery wierzchołków dotyczą obiektów. Kolorowanie może nie dać efektu ruchu. Rozumiem, że jeśli chcę ruchu, każda drobna rzecz, która porusza się w środku, powinna być przedmiotem, więc układ cząstek może być najlepszą drogą.
Candid Moon _Max_
@wondra tak, to może nie być najlepsze podejście, jeśli to prawda, przejrzystość ma duży wpływ na wydajność.
Candid Moon _Max_
1
Listy również nie pasują do naszego formatu pytań i odpowiedzi, ponieważ kiedy lista jest kompletna? Ile „różnych sytuacji” wystarczy? Według jakich wskaźników oceniamy jako „najlepsze”? Generalnie ten format najlepiej radzi sobie z jasno ukierunkowanymi pytaniami i odpowiedziami, które można zweryfikować. Więc jeśli uważasz, że masz odpowiedź, która odpowiada Twoim potrzebom, lepiej jest edytować swoje pytanie, aby zawęzić je do tego, czego naprawdę potrzebujesz, zamiast pozostawić zbyt szerokie i niepełne odpowiedzi. Inni użytkownicy mogą zawsze zadawać inne pytania dotyczące innych aspektów, uzyskując bardziej ukierunkowane odpowiedzi dotyczące ich przypadku
DMGregory

Odpowiedzi:

24

Jestem twórcą Astromike. :)

Właściwie używam dość prostej sztuczki, aby wyglądała jak mgła. Tworzę Astromike za pomocą Unity, więc jeśli używasz Unity, możesz zrobić to samo. Ale zakładam, że możesz również odtworzyć ten sam moduł cieniujący dla innych silników.

To, co robię, to ustawienie samolotu na mgłę i dodanie materiału z włączonym shaderem Particle / Alpha Blended z Soft Particle Factor (w moim przypadku 0,32). Otóż ​​to.

Samolot przeciwmgielny: http://imgur.com/a/MAEFW

Ustawienia: http://imgur.com/NJVAaIQ

Działa to ze względu na kąt kamery i może nie działać dla innych osób.

Reszta to po prostu stos efektów (Bloom, Winieta itp.). Mam nadzieję, że to pomaga. Twoje zdrowie.

Mikea15
źródło
1
Łał! Fajnie, dziękuję za udostępnienie! Gra jest niesamowita :)
Candid Moon _Max_
Wygląda niesamowicie i tak prosto, próbowałem zrobić to w moim projekcie. Wydaje się, że działa tylko przy użyciu kamery perspektywicznej (nasza gra jest ortograficzna).
Jeff
to jest zbyt piękne, aby mogło być prawdziwe haha ​​nice
Lestat
Cześć @ Mikea15, bardzo ładna gra! Niestety nie udało mi się odtworzyć efektu, o którym wspomniałeś - dodałem Blooma do stosu przetwarzania końcowego, jednak rozprzestrzenia się on na obiekty, nawet jeśli płaszczyzna mgły znajduje się za nimi (co nie jest zaskakujące), podczas gdy w twoim demie wydaje się, że pionowe krawędzie kolumny są czyste z efektu rozkwitu. Również w moim Soft Particle Factor nic nie zmienia, niezależnie od wartości. Byłoby wspaniale, gdybyś mógł przedstawić małą scenę demonstracyjną, która by to pokazała. Dzięki!
Dawid
@Dawid wiem, że jest już późno, ale musisz ustawić ścieżkę renderowania kamery na odroczoną i upewnić się, że miękkie cząstki są sprawdzane pod kątem jakości w ustawieniach projektu
Rito Ramos