Moonlight Animate: wielkie dokumenty przestają zjadać pamięć
Obraz w Moonlight Animate składa się z kafelków — małych kwadratów pikseli, z których program buduje każdą warstwę. Dotąd wszystkie kafelki dokumentu mieszkały w pamięci RAM. Przy zwykłej pracy to nic — ale komiks w rozdzielczości do druku, kilkanaście stron na jednym płótnie, każda z wieloma warstwami, potrafi urosnąć do rozmiarów, przy których pamięć się kończy, a program zwalnia.
Trzy poziomy pamięci
Od teraz kafelki żyją na trzech poziomach, jak w dobrze zarządzanym magazynie:
- Gorące — to, nad czym właśnie pracujesz i co widzisz: pełne piksele w RAM, natychmiastowy dostęp.
- Ciepłe — dalsze klatki animacji: spakowane w RAM (ten mechanizm działał już wcześniej).
- Zimne (nowość) — strony i fragmenty poza widokiem: gdy dokument przekroczy budżet pamięci, zapisują się do pliku tymczasowego na dysku i wracają niezauważalnie przy pierwszym użyciu.
Budżet ustawisz w Preferencje → Narzędzia i wydajność (domyślnie 1024 MB); tam też całą funkcję można wyłączyć.
Odtwarzanie animacji nie dotyka dysku
Najważniejsza gwarancja: płynność odtwarzania ma pierwszeństwo przed budżetem. Okno klatek wokół głowicy odtwarzania to twarda podłoga — nigdy nie jest zrzucane na dysk, nawet gdy dokument przekracza budżet. Odległość klatek liczona jest „po pętli", więc zapętlona animacja, wracając do początku, też zastaje swoje klatki w pamięci. Efekt: 24 klatki na sekundę bez gubienia klatek, niezależnie od tego, ile stron komiksu leży obok na płótnie.
Bezpieczeństwo pikseli ponad wszystko
- Zrzut na dysk jest bezstratny — piksele wracają co do bitu; zapisany projekt jest identyczny bajt w bajt niezależnie od tego, czy stronicowanie działało.
- Pełny dysk albo błąd zapisu? Kafelki po prostu zostają w pamięci — nigdy nie tracisz ani piksela.
- Plik tymczasowy sprzątany jest przy zamknięciu programu, a po ewentualnym crashu — automatycznie przy następnym uruchomieniu.
- Cofanie, autozapis, współpraca w czasie rzeczywistym i eksport działają dokładnie tak samo — doczytują z dysku to, czego potrzebują.
Przy okazji: szybszy scrub animacji
Podczas prac naprawiliśmy też subtelny problem: przewijanie osi czasu przez „zimne" klatki animacji rozpakowywało je z powrotem do pełnego rozmiaru, cofając pracę oszczędzania pamięci. Teraz podgląd czyta klatki bez ich rozpakowywania — mniej szarpania pamięcią przy scrubie długich ujęć.
Po co to
To fundament pod naprawdę duże projekty: całe rozdziały komiksu w rozdzielczości druku, długie ujęcia animacji, dziesiątki warstw — bez wymiany komputera na taki z 64 GB RAM. Program sam pilnuje, żeby pamięć szła na to, nad czym właśnie pracujesz.