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:
Zmiana rozdzielczości tekstury.
Określenie szybkości ładowania gry.
Zwiększenie jakości wizualnej gry.
Oszczędzanie 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: 256 x 256, 512 x 512 lub 1024 x 2048. 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 4000 x 4000, 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.
Weryfikacja tekstur
Tekstury muszą być sprawdzone pod kątem wydajności, zanim zostaną użyte w projekcie. Jeśli tekstura nie zostanie pomyślnie zweryfikowana, powoduje to następujące błędy:
Awaria braku pamięci (OOM) spowodowana przez zbyt duże tekstury źródłowe.
Platformy zawieszają się z powodu zbyt dużych skompilowanych tekstur.
Problemy z wydajnością platformy spowodowane nieoptymalnymi teksturami.
Tekstury, które nie przejdą weryfikacji, uniemożliwią opublikowanie projektu.
Zasady weryfikacji
Reguły weryfikacji obejmują uniwersalne reguły, które mają zastosowanie do wszystkich zasobów, oraz trzy główne reguły, które mają zastosowanie tylko do tekstur.
Zasada uniwersalna
Żaden wymiar źródłowy nie może być większy niż 4096 tekseli.
Tekstury 2D w UI
Wszelkie przekonwertowane tekstury mniejsze niż 1 048 576 tekseli (1024 x 1024) automatycznie przechodzą weryfikację.
Tekstury 2D
Przekonwertowane tekstury mniejsze niż 1 048 576 tekseli (1024 x 1024) automatycznie przechodzą weryfikację.
Wymiary po skompilowaniu nie mogą być większe niż 2048 tekseli.
Wymiary po skompilowaniu muszą być potęgą dwójki.
Musi nadawać się do streamowania i umożliwiać tworzenie mipmap.
Tekstury mapy sześciennej
Wszelkie przekonwertowane tekstury (na powierzchnię) mniejsze niż 1 048 576 tekseli automatycznie przechodzą weryfikację.
Wymiary skonwertowane nie mogą być większe niż 1024 teksele. Odnosi się to do każdej powierzchni, a nie do zasobu.
Wymiary po skompilowaniu muszą być potęgą dwójki.
Musi nadawać się do streamowania i umożliwiać tworzenie mipmap.
Wyszukanie nieprawidłowych tekstur
UEFN ma ścisłe wymagania dotyczące rozmiaru tekstur. Aby mieć pewność, że wszystkie importowane tekstury mają odpowiednie ograniczenia rozmiaru, UEFN zawiera dodatkowe walidatory wykraczające poza to, co oferuje Fortnite. Te walidatory używają reguł celem wykrywania i ujawniania błędów na wcześniejszym etapie procesu tworzenia, aby uniknąć przesyłania projektów, które z pewnością nie przejdą pomyślnie kompilacji.
Tekstura jest weryfikowana w dwóch obszarach: podczas procesu weryfikacji projektu, a także po dodaniu do przeglądarki zawartości.
Weryfikacja projektu
Błędy weryfikacji tekstury wyświetlają się, gdy projekt przechodzi przez proces weryfikacji. Proces zawsze używa rzeczywistych danych tekstury (w przeciwieństwie do tagów zasobów). Wszystkie wyniki są rejestrowane w dzienniku komunikatów z tokenem „Automatyczna naprawa”.
Weryfikacja w przeglądarce zawartości
Miniatura tekstury i podpowiedź wyświetlają odpowiednio ikonę i podsumowanie. Menu kontekstowe oferuje opcję „Dostosuj teksturę”. Funkcja Dostosuj teksturę próbuje wykorzystać rzeczywiste dane tekstury, dlatego ze względu na wydajność używa tagów zasobów, jeśli tekstura nie jest załadowana. Jeśli odczytuje tagi zasobów, może to być nieco mniej dokładne w przypadku, gdy brakuje określonych tagów. Jednak przy kolejnej weryfikacji rzeczywistych danych tekstury (weryfikacja projektu, OnObjectTransacted) podpowiedź narzędzia i miniatura zostaną dokładnie zaktualizowane.
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:
Aby uzyskać informacje na temat korzystania z funkcji Dostosuj teksturę, patrz sekcja: Dostosowanie nieprawidłowych tekstur poniżej.
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 2048 x 2048. 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 4096 x 4096. 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, 256 x 256, 512 x 512, 1024 x 1024 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ść tekstury Nigdy nie streamuj musi być wyłączona.
Aby można było generować mipmapy, należy ustawić teksturę.
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ć. Są to m.in.:
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 Odstęp wewnętrzny 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 koniecznie wybierz folder główny zawartości projektu zlokalizowany w FortniteGame po lewej stronie panelu drzewa plików.
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 hamburgerowego 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 opcję Zaokrąglaj do potęgi dwójki z menu rozwijanego Odstęp wewnętrzny i zmiana rozmiaru. 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 z menu rozwijanego Odstęp wewnętrzny i zmiana rozmiaru wybierz opcję Dopełniaj do kwadratu.
Wyszukaj opcję Nigdy nie streamuj 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.
Dostosowanie nieprawidłowych tekstur
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. Aby to zrobić:
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 Odstęp wewnętrzny 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 streamuj.