Jeśli grafika jest renderowana z dużym kątem widzenia (np. Bardzo duży telewizor lub zestaw VR), widz nie może skupić się na całym obrazie, tylko na jego części. (W rzeczywistości dotyczy to również ekranów o zwykłych rozmiarach.)
W połączeniu ze sposobem śledzenia oczu widza (co wydaje się, że jest to najbardziej opłacalne w VR), możesz teoretycznie to wykorzystać i odciągnąć grafikę od koncentracji widza z stopniowo mniejszą ilością szczegółów i rozdzielczości, zyskując wydajność, nie tracąc postrzeganej jakości.
Czy istnieją obecnie jakieś dostępne lub opracowywane techniki?
opengl
directx
rendering
virtual-reality
Bart van Heukelom
źródło
źródło
Odpowiedzi:
Istnieją przykłady takich efektów, o których mówisz w wielu grach. Po pierwsze, istnieje głębia ostrości , która sprawia, że obiekt z odległości wygląda rozmazany, tak jakby aparat ustawiał ostrość tylko na obiektach znajdujących się blisko niego, jak w tym przykładzie. Możesz zbadać więcej związanych z tym przykładów w pakiecie DirectX SDK - one również mają tam przykładowy kod. W przypadku OpenGL znajdziesz je w sieci, jeśli będziesz szukać.
Drugą rzeczą, którą możesz chcieć zobaczyć, może być tak zwana Geometry MipMaping lub Progressive Meshes, która, jak sama nazwa wskazuje, jest podobna do mapowania mipów tekstur, ale w przypadku geometrii. Liczba wielokątów w siatce zmniejsza się w miarę oddalania się obiektu od aparatu. Pomaga to w zwiększeniu wydajności. W D3D istnieje funkcja, która pomoże automatycznie wygenerować siatki progresywne. Oto on:
Oto przykład:
EDYCJA: Rozważ następujący obraz-
To jest wybrzuszony fragment aparatu. Linia przechodząca przez środek jest wektorem LookAt. Teraz, zakładając, że gracz zawsze będzie chciał skupić się na środku ekranu, definiujesz kąt x. Każdy obiekt, który zostanie ustawiony pod kątem większym niż określony x, będzie renderowany w niskiej rozdzielczości, a te, które znajdują się w tym kącie, będą renderowane ze szczegółami. W ten sposób obiekty na środku ekranu będą bardziej szczegółowe niż te po bokach. Bo jeśli gracz nie patrzy na środek, po prostu dostosuj tę linię środkową do kierunku, w którym gracz patrzy. (lub może obróć całą kamerę w tym kierunku).
źródło
Tak, Foveated Rendering wykorzystuje śledzenie wzroku, aby renderować tylko to, na co patrzy użytkownik. Cała reszta może być renderowana w niższych szczegółach.
Chociaż jest to dość oczywiste, patrząc na taki zrzut ekranu, jest podobno niewidoczny dla użytkownika w VR.
Istniejące zestawy słuchawkowe głównego nurtu (jeszcze) nie obejmują śledzenia wzroku, ale istnieje kilka posprzedażowych rozwiązań, które umożliwiają dodanie śledzenia wzroku. Ponadto do renderowania wymagana jest niewielka ilość dodatkowego przetwarzania. Korzyści są jednak znaczące. Po wdrożeniu zaawansowanego renderowania tylko bardzo mały procent pola widzenia musi być renderowany z dużą szczegółowością, co może skutkować radykalnie wyższą liczbą klatek na sekundę. Dokładne liczby zależą od implementacji.
Co więcej, nie ogranicza się to nawet do zestawów VR. Można go również stosować na monitorach stacjonarnych (z dodanym śledzeniem wzroku i bardziej ograniczonym efektem).
źródło
Rozwijając odpowiedź Byte56, tak, coś takiego jest rozwijane w branży. Naprawiono Foveated Rendering to technika zastosowana przez Valve w demo naprawy robota ( https://youtu.be/DdL3WC_oBO4?t=769 ) oraz w kilku komercyjnych grach (Resident Evil VII na PSVR). Naprawiono Foveated Rendering nie wykorzystuje śledzenia wzroku, ale oznacza to, że działa dobrze z obecnymi wersjami zestawów VR, które obecnie nie mają żadnych możliwości śledzenia wzroku. Chociaż w tej chwili Vive ma otrzymać zestaw aktualizacyjny do śledzenia wzroku, więc możesz zobaczyć, że niektóre tytuły AAA VR wykorzystują to.
Nie znajdziesz wielu dostępnych przykładów kodu związanych z tego rodzaju rzeczami, ale Nvidia ma pewne rozszerzenia sprzętowe, które są porządnie udokumentowane. Wiele rozdzielczości jest dość dobrze wyjaśnione, ale jest to funkcja związana z ich sprzętem.
źródło