Pamiętam, jak John Carmack opowiadał o tym, jak początkowo wykorzystali Megatexturing do Quake Wars: Enemy Territory. Od tego czasu technologia znacznie się rozwinęła w Rage.
Zastanawiałem się, czy ktoś tutaj może podać szczegółowe informacje techniczne na temat tego, co i jak ewoluowało od tego czasu.
Polecam sprawdzić artykuł „Virtual Texture Mapping 101” na temat klejnotów GPU. Zasadniczo dzieli oryginalną teksturę (która zwykle jest ogromna) na mniejsze kafelki i w razie potrzeby ładuje je do pamięci GPU. Ten sam pomysł można wykorzystać do renderowania ogromnych i bardzo szczegółowych terenów.
źródło
Na początek, Beyond3D ma miły krótki opis technicznych ciekawostek zebranych podczas wywiadu z dyrektorem technicznym Splash Damage Arnoutem van Meerem, a także starszym programistą grafiki Mike'em Armstrongiem. Ten sam artykuł konkretnie wskazuje na pewne wady dotyczące MegaTeksturowania w jego ówczesnej iteracji na stronie 5. Wskazuje na to, że John Carmack naprawił już niektóre z nich w późniejszej wersji, a także sposoby naprawienia innych, które nie były wówczas opłacalne.
Godne uwagi przykłady to:
Również w tym wywiadzie John Carmack stwierdza, że niektóre niedociągnięcia technologii stosowanej w Quake Wars zostały już naprawione w wewnętrznych kompilacjach - na przykład zastosowanie MegaTekstur do dowolnej geometrii, w tym postaci i pojazdów.
źródło
Prezentacja Seana Barreta GDC 2008 Sparse Virtual Texture była jego próbą odtworzenia tego, co robił Carmack w tym czasie. Jest też źródło. Od tego czasu istnieje korespondencja między Carmackiem a Barrettem.
(Prezentacja jest trochę gęsta, ale warto poświęcić czas na zrozumienie - spędziłem kilka godzin sesji z tablicą po obejrzeniu jej dwa razy w ciągu dwóch dni i ostatecznie doszedłem do punktu, w którym myślę, że zrozumiałem to wszystko. O wiele łatwiej, jeśli masz tło shadera fragmentów, czego wtedy nie miałem. To naprawdę fajne, że prezentacja jest wersją demonstracyjną.)
+1 dla zacharmarz za wzmiankę o doskonałej prezentacji GDC2011 Mega Meshes przez ludzi Lionhead pracujących nad Milo i Kate. Wspomniano tam wiele bardzo praktycznych rozwiązań, na przykład: renderowanie każdej innej klatki w różnych lokalizacjach (punkty aktywne, obroty o 180 stopni, powiększenia, dalej wzdłuż splajnu kontrolnego itp.) W celu określenia widoczności tekstury i poziomów mipu oraz przekazywania wyników do „pamięci podręcznej L2”, aby rozwiązać niektóre problemy z przesyłaniem tekstur. Niekoniecznie proste, ale mimo to eleganckie w swojej bezpośredniości.
źródło