Renderowanie i zastosowania

Renderowanie obrazów większych niż jedna tekstura

Obraz może być znacznie większy niż maksymalny wymiar tekstury obsługiwany przez procesor graficzny, jeśli nie zostanie przypisany jako pojedyncza tekstura. Renderowanie kafelkowe przetwarza regiony o rozsądnej wielkości i przesyła gotowe piksele do reprezentacji wyjściowej.

Renderowanie fraktala Mandelbrota z widoczną siatką kafelków na potrzeby eksportu w dużym formacie
Zbyt duże obrazy są dzielone na łatwe w obróbce fragmenty, a następnie łączone bez widocznych łączeń.Obraz: Björn Kindler / MandelKit · MandelKit Wissensgrafik · Eigene Darstellung · Own work

Widok globalny, lokalne kafelki

Współrzędne każdego fragmentu wynikają z pełnych wymiarów wyjściowych i widocznego współczynnika proporcji. Nie wolno samodzielnie dopasowywać ani wyśrodkowywać fraktala, ponieważ w przeciwnym razie złożony obraz będzie zawierał powtarzające się fragmenty zamiast jednego ciągłego widoku.

Ogromny obraz wyjściowy posiada jeden globalny układ współrzędnych. Każdy fragment otrzymuje z niego dokładny wycinek, a nie osobno zaokrąglony kadr z kamery. Środki pikseli muszą przebiegać wzdłuż granic fragmentów, w przeciwnym razie pojawią się szwy. Proporcje obrazu i widoczny obszar fraktala są definiowane jednorazowo dla całego obrazu, co pozwala na eksport w rozdzielczości 100,000 pikseli z zachowaniem kompozycji widoku ekranowego.

Efekty wymagają sąsiedztw

Wygładzanie krawędzi, mapy normalne i filtry przestrzeni ekranowej mogą pobierać próbki poza krawędzią kafelka. Renderowanie pasm ochronnych i ich przycinanie podczas montażu zapobiega powstawaniu szwów. Metody globalne, takie jak wyrównanie histogramu, wymagają oddzielnego przebiegu statystycznego lub są celowo niedostępne.

Filtry z promieniem wymagają pikseli wykraczających poza krawędzie kafelków. Należy renderować każdy kafelek z aureolą, zastosować efekt, a następnie przyciąć do rdzenia. Efekty wieloetapowe mogą wymagać większej skumulowanej aureoli. Bez nakładania się krawędzi pojawiają się szwy, nawet jeśli każdy kafelek osobno wygląda poprawnie. Wymagany promień należy do definicji efektu i musi być znany osobie planującej eksport.

Dysk zastępuje szczytowe zużycie pamięci

Koder oparty na dysku lub pamięć pośrednia przyjmują wiersze lub kafelki w miarę ich ukończenia. Ogranicza to wykorzystanie pamięci RAM i pamięci GPU, przenosząc obciążenie na pamięć masową, limity kodowania i czas trwania zadania. Postęp, anulowanie i atomowa finalizacja stanowią część poprawności długotrwałych eksportów.

Gdy pełny obraz nie mieści się w pamięci RAM lub w jednej teksturze Metal, ukończone paski są zapisywane bezpośrednio do kodera przyrostowego lub pliku tymczasowego. Postęp powinien obejmować renderowanie i kodowanie, natomiast anulowanie powoduje czyste zamknięcie danych tymczasowych. Nigdy nie może być wymagany pojedynczy ostateczny obiekt CGImage — właśnie ten końcowy etap kompozycji powoduje w przeciwnym razie powstanie pustych lub niemożliwych do zakodowania ogromnych plików eksportowych.

Źródła i literatura uzupełniająca

Artykuł ten stanowi podsumowanie poniższych źródeł specjalistycznych, przy zachowaniu oryginalnego brzmienia. Dostęp uzyskano i dokonano redakcyjnej weryfikacji w sierpniu 12 2026.

  1. Metal overviewApple Developer Documentation
  2. The Science of Fractal ImagesSpringer