Mam na myśli dwa pomysły:
1) Scena jest renderowana do niewidocznego bufora, przy użyciu modeli o niskiej rozdzielczości i niskiej liczbie wielokątów (lub nawet przy użyciu tylko ograniczających objętości, takich jak kostki lub kule). Bufor jest następnie sprawdzany, aby wiedzieć, co jest widoczne, czy nie. Przed renderowaniem sceny o niskiej rozdzielczości można zastosować wygładzanie fragmentów w celu usunięcia jak największej liczby obiektów.
2) Narzędzie jest uruchomione na mapie statycznej i wykona złożone (a zatem wolne) śledzenie promieni, aby wiedzieć dla niektórych pozycji 3D na mapie, co jest widoczne, a co nie. Wszystkie te informacje są następnie przechowywane w efektywny sposób, który może być później używany przez użytkownika w czasie wykonywania (np .: oktawa). To rozwiązanie działałoby tylko w przypadku siatek statycznych (np. Budowanie) nieporuszających się obiektów.
Odpowiedzi:
Odpowiedź Jovana jest świetna, ale chciałem tylko dodać, że czasami istnieje wsparcie sprzętowe do zadawania pytania „Czy ta geometria faktycznie renderowała jakieś piksele?” (Twój pomysł # 1) Są to tak zwane zapytań okluzji - to jest dobry artykuł GPU Gems o nich tutaj
Jest to dość podobne do twojego pomysłu nr 1, z tym wyjątkiem, że nie potrzebujesz niewidocznego bufora i może być bardziej wydajne lub prostsze niż sprawdzanie bufora. Artykuł z linkami wykonuje świetną robotę, dogłębnie omawiając działanie kwerend okluzji sprzętowej.
Unreal Engine wykorzystuje kwerendy dotyczące okluzji sprzętu na platformach, które ją obsługują, a także inne techniki, takie jak przeglądanie wycięcia frustum i wstępne obliczanie zablokowanej geometrii statycznej.
źródło
Ta technika jest używana przez Killzone i jest szczegółowo opisana w prezentacji Praktyczne wycinanie okluzji na PS3 . Używają również portali do wnętrz.
Przy dużych mapach zewnętrznych należy pamiętać o tym, że uproszczenie siatki jest tak samo ważne jak eliminacja okluzji, dlatego często stosuje się różne warianty pól wysokości z mapowaniem geometrii. Oto dobry papier, który obejmuje również ubijanie. GPU Gems 2 ma tę implementację .
źródło
Przynajmniej dwie pierwsze gry Quake używały strategii 2; Nie wiem, czy silniki idTech nadal go używają. Świat osiągalny jest podzielony na wypukłe przestrzenie zorganizowane w strukturę danych drzewa („partycja przestrzeni binarnej”), a dla każdego węzła w drzewie znajduje się wektor bitowy reprezentujący, które inne węzły są widoczne z tego węzła („potencjalnie widoczny zestaw”).
źródło