Jakie są zastosowania rasteryzacji oprogramowania we współczesnych silnikach gier?

9

W tym kwartale biorę kurs grafiki komputerowej. Jeden z naszych projektów laboratoryjnych dotyczy rasteryzacji oprogramowania.

Teraz planuję propozycję projektu i zastanawiam się, jak uczynić ją przydatną dla innych osób we współczesnym tworzeniu gier.

Po krótkich poszukiwaniach nauczyłem się techniki o nazwie Software Culling. Robi rasteryzację oprogramowania na buforach o różnych rozdzielczościach. Możemy zapytać o okluzję za pomocą hierarchicznych buforów Z.

Moje pytanie : Jakie są zastosowania rasteryzacji oprogramowania we współczesnych silnikach gier oprócz Software Culling?

TheBusyTypist
źródło

Odpowiedzi:

4

Według mojej wiedzy, programowanie okluzji oprogramowania (o którym już wspomniałeś) jest właściwie jedyną rzeczą, do której program rasterizer byłby nadal używany. Procworld wykorzystuje podobną technikę do wyświetlania swoich ogromnych środowisk wokselowych.

Większość innych metod wycinania, takich jak wycinanie fragmentów, działa na procesorze, ale, zgodnie z przykładem, test na wycinanie odbywa się na poziomie obiektu, prawdopodobnie z ramką ograniczającą osi (AABB). Ten test skrzyżowania jest o wiele prostszy niż użycie pełnowymiarowego oprogramowania rasterizującego.

W niektórych przypadkach rasteryzacja oprogramowania może być używana do wybierania obiektów myszą. W silnikach gier często rozwiązuje się to za pomocą silnika fizyki i zderzenia trójkąta promieniowego z uproszczoną siatką.

Ponieważ procesor jest bezczynny podczas oczekiwania na procesor graficzny w nowoczesnych interaktywnych aplikacjach 3D, można pomyśleć, że korzystne może być użycie tych bezczynnych cykli do renderowania na procesorze za pomocą rastratora programowego. Problemem tutaj, poza tym, że renderowanie staje się strasznie złożone i skomplikowane, często jest przepustowość. Obrazy renderowane na CPU muszą zostać przesłane do GPU przed wyświetleniem, co może anulować korzyść.

David Kuri
źródło
0

Gry z koncepcją „mgły wojny” często mają siatkę widoczności, która określa stan mgły wojny w każdym miejscu. Rasteryzacja jest czasami używana do modyfikowania stanu mgły wojennej dla określonych kształtów na siatce.

Na przykład użycie umiejętności, która odsłania okrąg mapy o określonym promieniu lub może coś, co odsłania kwadrat.

Nie jest to ściśle związane z grafiką, ale zdecydowanie wykorzystanie rasteryzacji we współczesnych grach i technika, którą widziałem w RTS-ach.

Inne dane oparte na siatce w grach mogłyby wykorzystywać rasteryzację w podobnych sytuacjach.

Alan Wolfe
źródło
-2

Rasteryzacja to ogromny temat z wieloma częściami i nie jestem programistą silnika, ale zrobię co w mojej mocy, aby dać pewien przegląd (będzie to daleko od pełnej listy!).

Niektóre bardzo podstawowe rzeczy o niskim poziomie obejmują:

  • Usuwanie frustrum: wyrzuca wszystko poza frustrację kamery (pomyśl o tym jako o polu widzenia kamery).
  • Osłona tylna: wyrzuć każdy wielokąt, który nie jest skierowany do kamery.
  • Algorytm malarza: rysuj obiekty w kolejności ich odległości od kamery, zacznij od obiektów znajdujących się daleko, a następnie idź w kierunku kamery.

Bardziej zaawansowane rzeczy używane w grach to między innymi:

  • Tesselacja : właściwie bardzo podobnie do LOD (patrz poniżej), ale teraz najnowsze wersje DirectX wprowadziły teselację, która zapewnia automatyczny podział lub redukcję siatki. Daje to ogromną poprawę wydajności grafiki, ponieważ możesz zdobyć polisy, jeśli ich potrzebujesz, i pozbyć się ich, jeśli już ich nie chcesz.
  • LOD : System szczegółowości zastępuje siatkę obiektu na podstawie odległości między obiektem a kamerą. na przykład twoja postać ma trzy oczka: jeden z 10 000, jeden z 5000 i drugi z 1000 polis. jeśli staniesz tuż przed nim, zostanie wyświetlona siatka wysokiej rozdzielczości (10 000 polis), jeśli się odsuniesz, po 100 m postać zostanie zastąpiona siatką średnią, a po kolejnych 100 m zostanie zastąpiona siatką niskiej rozdzielczości. Zamiast zastępować siatkę, możesz ją zmniejszyć, ale kodowanie byłoby bardziej skomplikowane.
  • partycje przestrzeni binarnej : przestrzeń jest podzielona na dwa tomy. będzie to powtarzane, aż osiągniesz swój cel, np. dopóki przestrzeń nie będzie zawierała tylko biegunów, które powinny zostać narysowane na ekranie
  • Portale i komórki : (zwane także „ubijaniem portalu”) są używane w scenach wewnętrznych i / lub strzelankach FPS. Scena jest podzielona na komórki (np. Pokoje budynku), które są połączone portalami do rzucania (np. Drzwi). możesz ustawić portale na otwieranie i zamykanie.

Zakładając, że masz podstawową wiedzę na temat potoku graficznego, starałem się skupić na rasteryzacji. możesz także przyjrzeć się oświetleniu, cieniowaniu lub innym rzeczom ...

Obejmują one tylko kilka możliwych technologii, które można uwzględnić w projekcie. ponieważ nie mam wystarczającej reputacji na stackexchange, nie mogę podać wielu linków, ale wszystkie te rzeczy znajdziesz w Google :)

Micha Grandel
źródło
2
Pytanie dotyczy rasteryzacji programowej (czytaj: CPU). Niektóre z podanych przez ciebie informacji dotyczą ogólnie rasteryzacji, niektóre techniki - w mojej książce - wcale nie mają nic wspólnego z rasteryzacją. Czy mógłbyś wyjaśnić w swojej odpowiedzi, w jaki sposób techniki wykorzystują lub korzystają z rasteryzacji oprogramowania?
David Kuri