Tekstury w grze mają określone wymagania dotyczące prawidłowego renderowania w grze. Podczas tworzenia tekstur w Unreal Editor dla Fortnite (UEFN) za pomocą importowanych obrazów upewnij się, że źródłowy plik obrazu używa potęgi dwójki dla wysokości i szerokości. Zwiększa to kompatybilność i stabilność wyspy na różnych platformach.
Formaty skompresowanych plików dla procesorów graficznych (GPU) muszą wykorzystywać tekstury, których rozdzielczość jest potęgą dwójki, dla wszystkich konsol, komputerów PC i urządzeń mobilnych. Tekstury, które nie są zgodne z zasadą potęgi dwójki, staną się niestabilne na platformach o niższej wydajności i mogą powodować zawieszanie się gry. Potęga dwójki jest również wykorzystywana w streamingu tekstur w celu obniżenia rozdzielczości tekstur na platformach z mniejszą ilością pamięci.
Streaming tekstur pomaga w:
-
Zmianie rozdzielczości tekstury.
-
Określeniu szybkości ładowania gry.
-
Zwiększeniu jakości wizualnej gry.
-
Oszczędzaniu pamięci GPU.
Czym jest potęga dwójki
Komputery i konsole przetwarzają dane i zarządzają nimi w ograniczonych fragmentach, a nie wszystkimi naraz. Jest to zasada podobna do renderowania tła przy użyciu World Partition.
Kiedy fragmenty danych gry są zgodne z zasadą potęgi dwójki, fragmenty danych tworzą zestaw zakodowanych na stałe, fizycznych ograniczeń dla multimediów. Jeśli te ograniczenia nie zostaną spełnione, silnik gry będzie marnował zasoby, próbując poprawnie renderować zasoby.
Potęga dwójki to sposób na optymalizację danych gry i renderowanie obrazów w celu wydajnego wyświetlania efektów wizualnych.
Przykłady dopuszczalnych rozmiarów obrazów to: 256x256, 512x512 lub 1024x2048. Tekstury, które nie stosują potęgi dwójki, nie zostaną zoptymalizowane i spowodują zarówno niestabilność, jak i słabą wydajność wyspy.
Tekstury wykorzystujące potęgę dwójki pozwalają UEFN na korzystanie z trzech kluczowych funkcji:
-
Kompresja tekstur: Zmniejsza rozmiar pamięci około ośmiokrotnie przy minimalnym koszcie wizualnym.
-
Mipmapping: Automatyczne generowanie wariantów o niższej rozdzielczości
-
Streaming tekstur: Wyświetla wariant o niższej rozdzielczości, zanim dane o wyższej rozdzielczości zostaną przesłane do pamięci.
Wspólnie funkcje te pozwalają na renderowanie nawet wysokiej klasy zasobów z teksturami 4K na dowolnej platformie. Dzieje się tak, ponieważ tekstury będą miały wysokiej jakości warianty w zmniejszonej rozdzielczości.
Na przykład tekstura o rozdzielczości 4000x4000 bez warstwy alfa wymagałaby 64 megabajtów pamięci. Taka tekstura musiałaby zostać załadowana od razu, a i tak byłaby wyświetlana w rozdzielczości 4000x4000, nawet jeśli powodowałoby aliasing na małym billboardzie, daleko od gracza. Tekstury o zbyt dużych rozmiarach mogą spowodować awarię urządzeń, które nie mają wystarczającej ilości pamięci.
Z kolei wersja tekstury 4096x4096 wykorzystująca domyślną kompresję zajmie tylko 8 megabajtów, będzie streamowana progresywnie i będzie powodować mniejszy aliasing na odległość. Tekstury o zbyt dużych rozmiarach również zwiększą rozmiar pakietu, ale nie spowodują zawieszenia się gry.
Wymagania dotyczące rozmiaru tekstury dla UEFN
Celem zapewnienia, że wszystkie wyspy będą działać prawidłowo na wszystkich platformach docelowych, UEFN narzuca określone wymagania dotyczące zasobów tekstur.
Jeśli Twój projekt zawiera zasoby tekstur, które nie spełniają tych wymagań, tekstury te nie przejdą pomyślnie weryfikacji i nie będzie możliwe przesłanie twojego projektu.
-
Jeśli Twoja tekstura jest przypisana do grupy tekstur interfejsu użytkownika, jej wymiary muszą być mniejsze od rozmiaru maksymalnego 2048x2048. Wymiary tekstury nie muszą być jednak potęgami liczby 2. (Tekstury interfejsu użytkownika zwykle nie są streamowane, więc zawsze będą wyglądać tak ostro, jak tylko jest to możliwe).
-
Jeśli Twoja tekstura nie jest _przypisana do grupy tekstur interfejsu użytkownika, jej wymiary muszą być mniejsze od rozmiaru maksymalnego 4096x4096. Ponadto, jeśli obraz zawiera więcej pikseli niż minimalna wartość progowa (1024x1024 lub 1048576), musi nadawać się do streamowania. Oznacza to, że;
-
Każdy z wymiarów musi być potęgą liczby dwa (na przykład, 256x256, 512x512, 1024x1024 i tak dalej).
Obraz nie musi być kwadratowy, ale każdy wymiar musi być potęgą liczby dwa. Na przykład 256x512, 512x1024, 256x1024 itd.
-
-
Właściwość tego Nigdy nie streamować musi być wyłączona.
-
Musi to być ustawione na generowanie mipmap.
-
Całkowity koszt pamięci dla wszystkich tekstur bez streamingu w projekcie musi być mniejszy od ustawienia wstępnego maksymalnego budżetu. Koszt pamięci dla Twojego projektu jest ustalany przez zsumowanie kosztu pamięci wszystkich tekstur, dla których włączona jest właściwość Nigdy nie streamować. Obejmuje to:
-
Wszystkie tekstury, których wymiary nie są potęgami liczby dwa (i które nie zostały uzupełnione lub powiększone (rozciągnięte) do potęg liczby dwa za pomocą właściwości Wypełnienie i Zmiana rozmiaru). Właściwość Nigdy nie streamować jest zawsze automatycznie włączona dla tych tekstur.
-
Wszystkie inne tekstury, dla których właściwość Nigdy nie streamować została włączona ręcznie.
-
Każda tekstura posiada ustawienie grupy tekstur, które wskazuje jej przewidywane zastosowanie. Możesz ustawić tę grupę i inne właściwości tekstury, które zostały wspomniane powyżej, klikając dwukrotnie zasób tekstury w Przeglądarce zawartości w celu otwarcia Edytora tekstur.
Zmiana wielkości tekstur
W UEFN stare zaimportowane tekstury, które używają nierównych wymiarów lub zawyżonych rozmiarów, mogą być skalowane zgodnie z potęgą dwójki. Znajdź i napraw wadliwe tekstury, wykonując poniższe czynności:
-
Otwórz Szufladę zawartości lub Przeglądarkę zawartości i wybierz główny folder zawartości swojego projektu, znajdujący się w FortniteGame w panelu drzewa plików po lewej stronie.
-
W obszarze Wszystkie znajdź folder o nazwie Zawartość NazwaTwojegoProjektu.
-
Na pasku wyszukiwania u góry Szuflady zawartości wpisz
NeverStream==true&&TextureGroup!=UI
. Spowoduje to uruchomienie zapytania w celu zidentyfikowania wszelkich zasobów, których to dotyczy.
Wszystkie zasoby, które pojawiają się w tym przefiltrowanym widoku, wymagają naprawienia. Mimo że naprawienie ich wymaga trochę czasu, poprawi to wydajność twojego poziomu.
Istnieją dwa sposoby aktualizacji tekstur, które nie należą do grupy UI.
Opcja A wykorzystuje możliwości edycji zbiorczej UEFN do grupowania tekstur i edytowania ich w jednym kroku. Jest to najszybszy sposób na automatyczną korektę tekstur poprzez zwiększenie ich odstępów wewnętrznych do uzyskania właściwych proporcji obrazu, jednak może to spowodować niepotrzebne zużycie pamięci.
Opcja B zajmuje nieco więcej czasu, ale zapewnia najlepsze wykorzystanie budżetu pamięci, jeśli potrzebujesz naprawić wiele uszkodzonych tekstur. Ta opcja pozwala edytować i ponownie przesyłać tekstury, aby uniknąć niepotrzebnego dodawania odstępów wewnętrznych.
Opcja A
-
Kliknij ikonę menu w Przeglądarce zawartości obok paska wyszukiwania i wybierz Tekstury. Wszystkie tekstury są wydzielone w Przeglądarce zawartości.
-
Kliknij ikonę Ustawienia i włącz Kolumny. Wszystkie tekstury są teraz wyświetlane w Przeglądarce zawartości w kolumnach.
-
Przeszukaj kolumnę Wymiary pod kątem dowolnego zasobu o rozmiarze, który nie używa potęgi dwójki.
-
Zaznacz wszystkie tekstury, które nie są zgodne z zasadą potęgi dwójki.
-
Prawym przyciskiem myszy kliknij Przeglądarkę zawartości i wybierz Akcje zasobu > Edytuj wybór w matrycy właściwości. Spowoduje to otwarcie narzędzia edycji zbiorczej, w którym wszystkie wybrane tekstury zostaną wyszczególnione na karcie Edytor komponentów.
-
Zaznacz wszystkie nazwy plików tekstur w sekcji Komponent główny.
Kliknij obraz, aby go powiększyć.
-
Otwórz opcję Tekstura na karcie Przypięte kolumny.
-
Wybierz Zaokrąglaj do potęgi dwójki z menu rozwijanego Tryb potęgi dwójki. W dolnej części okna edytora pojawi się pasek postępu.
Wszystkie tekstury zostaną przekonwertowane do potęgi dwójki i będą teraz działać na wszystkich platformach.
Opcja B
-
Kliknij dwukrotnie teksturę, aby otworzyć edytor tekstur.
-
Na pasku wyszukiwania u góry panelu Szczegóły wprowadź nazwę swojego pliku źródłowego. W rezultacie wyświetlona zostanie ścieżka do pliku na komputerze, który zostanie użyty jako oryginalny plik źródłowy tekstury.
Kliknij obraz, aby go powiększyć.
-
Zmień rozmiar tekstury, zaokrąglając go do najbliższej potęgi dwójki za pomocą edytora obrazów, takiego jak GIMP lub Paint.NET 5. Możesz nawet użyć programu Paint, jeśli tekstura nie zawiera warstwy alfa.
-
Do potęg dwójki należą między innymi 256, 512, 1024 itd.
-
Na przykład tekstura o rozdzielczości 500x500 powinna mieć rozmiar 512x512, a tekstura o rozdzielczości 600x256 może mieć rozmiar 512x256.
-
Zmiany proporcji obrazu nie powinny mieć negatywnego wpływu na wyspę.
-
-
Kliknij prawym przyciskiem myszy teksturę w Przeglądarce zawartości i wybierz opcję Importuj ponownie.
Jeśli w plikach brakuje oryginalnego obrazu tekstury:
-
Prawym przyciskiem myszy kliknij w Przeglądarce zawartości, a następnie wybierz Akcje zasobów > Eksportuj, aby pobrać nową kopię.
-
Zmień rozmiar tekstury, zaokrąglając go do najbliższej potęgi dwójki. Następnie w Przeglądarce zawartości prawym przyciskiem myszy kliknij teksturę i wybierz Importuj ponownie przy użyciu nowego pliku. Po zaimportowaniu pliku kliknij dwukrotnie teksturę, aby otworzyć edytor tekstur.
-
W pasku wyszukiwania panelu Szczegóły wpisz Nigdy nie streamuj, a następnie ustaw opcję jako False. Jeśli nie można ustawić dla niej wartości False, upewnij się, że specyfikacja Zaimportowane na górze pokazuje, że obraz ma potęgę dwójki.
-
W panelu Szczegóły wyszukaj opcję Ustawienia generowania mipmapy. Następnie w menu rozwijanym wybierz Z grupy tekstur.
-
W panelu Szczegóły wyszukaj opcję Ustawienia kompresji, a następnie z menu rozwijanego wybierz Domyślnie (DXT1/5).
Po wykonaniu tych kroków sprawdź, czy udało ci się usunąć teksturę objętą ograniczeniami, ponownie wyszukując NeverStream==true&&TextureGroup!=UI
w pasku wyszukiwania Przeglądarki zawartości. Zaktualizowane zasoby nie powinny już pojawiać się w tym miejscu.
Zmiana pojedynczej tekstury
Skorzystaj z poniższych wskazówek, jeśli masz tylko jedną teksturę, która nie jest zgodna z zasadą potęgi dwójki.
-
Kliknij dwukrotnie teksturę, aby otworzyć edytor tekstur.
Kliknij obraz, aby go powiększyć.
-
W pasku wyszukiwania Szczegóły wpisz Tryb potęgi dwójki. Następnie w menu rozwijanym Zaokrąglanie i zmiana rozmiaru wybierz Dopełniaj do kwadratu.
-
Wyszukaj opcję Nigdy nie streamować i ustaw dla niej wartość False.
-
Wyszukaj opcję Ustawienia generowania mipmapy. Następnie z menu rozwijanego wybierz Z grupy tekstur.
-
Wyszukaj opcję Ustawienia kompresji, a następnie z menu rozwijanego wybierz Domyślnie (DXT1/5).
Po wykonaniu tych kroków sprawdź, czy udało ci się usunąć teksturę objętą ograniczeniami, wyszukując NeverStream==true&&TextureGroup!=UI
w pasku wyszukiwania Przeglądarki zawartości. Zaktualizowany zasób nie powinien już pojawiać się w tym miejscu.
Wyszukanie nieprawidłowych tekstur
Zasoby tekstur, które nie spełniają określonych powyżej wymagań, są oznaczone w przeglądarce zawartości ikoną błędu. Najechanie kursorem na zasób spowoduje wyświetlenie się na górze podpowiedzi bardziej szczegółowych informacji o danym problemie:
Kliknij obraz, aby go powiększyć.
Zgodne nieprawidłowe tekstury
Najlepszym sposobem na naprawienie nieprawidłowych tekstur zaimportowanych z plików zewnętrznych jest ich edycja w aplikacji, w której zostały utworzone, a następnie ponowne zaimportowanie zasobu. Możesz także użyć innej, dedykowanej aplikacji do edycji obrazów, aby edytować tekstury przed zaimportowaniem ich do UEFN.
Upewnij się, że wymiary każdego obrazu są mniejsze niż maksymalne wymiary określone powyżej. Jeśli nie używasz obrazu w interfejsie użytkownika, ustaw wysokość i szerokość obrazu na wartości będące potęgami liczby dwa. Obraz nie musi być kwadratowy, ale każdy wymiar musi być potęgą liczby dwa.
Alternatywnie UEFN oferuje zintegrowaną metodę automatycznego dostosowywania rozmiarów tekstur do zapewnienia zgodności z wymaganiami UEFN. W tym celu:
-
W Przeglądarce zawartości wybierz jedną lub więcej nieprawidłowych tekstur.
-
Kliknij prawym przyciskiem myszy miniaturę tekstury i wybierz Dostosuj teksturę z menu kontekstowego.
Edytor próbuje dostosować właściwości wybranych tekstur, aby uniknąć problemów z weryfikacją, a następnie zapisuje wyniki w dzienniku wyjściowym.
Czynność ta ma następujące skutki:
-
Jeśli tekstura znajduje się w grupie tekstur interfejsu użytkownika, a jej wymiary są większe od maksymalnego dozwolonego rozmiaru, ustawienie tekstury Kompresja > Zaawansowane > Maksymalny rozmiar tekstury jest dostosowywane w celu ograniczenia maksymalnej rozdzielczości tekstury, która może zostać załadowana w czasie wykonywania.
-
Jeśli tekstura nie znajduje się w grupie tekstur interfejsu użytkownika, a jej wymiary są większe od maksymalnego dozwolonego rozmiaru, ustawienie tekstury Odchylenie LOD jest dostosowywane tak, aby odrzucić największe mipmapy tekstury. Skutecznie ogranicza to maksymalną rozdzielczość tekstury, która może zostać załadowana w czasie wykonywania.
-
Jeśli tekstura nie znajduje się w grupie tekstur interfejsu użytkownika, a jej wymiary są większe od potęgi liczby dwa, ustawienie tekstury Wypełnianie i zmiana rozmiaru jest ustawiane na Rozciągnij do potęgi dwójki.
-
Jeśli tekstura nie znajduje się w grupie tekstur interfejsu użytkownika, jej ustawienie jest wyłączone Nigdy nie streamować.