Zoptymalizowałem moją sympatyczną procedurę. A jakże!
Włożyłem maski do rejestrów, a pola bm_BytesPerRow i bm_Rows z nich wyjąłem, gdyż korzystam z nich rzadziej.
Rezultat: na 68020/14MHz z CHIP przyrost prędkości
+25%.
- Cały ekran 320x256 konwertuje w 150ms, czyli 0,15 sekundy (6,6 FPS).
- Ekran 160x100 konwertuje w mniej niż 30ms, czyli 0,03 sekundy (30 FPS).
Jeśli chodzi o 68030/50MHz z FAST, przyrost prędkości
+17%.
- Cały ekran konwertuje w 53ms, czyli 0,053 sekundy (18,8 FPS).
- Ekran 192x245 konwertuje w 30,2ms, czyli 0,0302 sekundy (30 FPS)!
- Ekran 160x175 konwertuje w 18,5ms, czyli 0,0185 sekundy (54 FPS).
Oczywiście test jest przy pełnej wielozadaniowości systemu Amigi (niezmieniony priorytet 0). Można odpalać inne programy.
Sprawdzałem też poprzednią wersję na 68060/50MHz (teraz mam włożoną 68030) i z tego co pamiętam tam mieściłem się w ramce przy pełnym ekranie.
Nie posiadam karty (ani Amigi) z 040 i jeżeli ktoś może przeprowadzić mały test, byłbym wdzięczny.
Należy też pamiętać, że mogę zrobić wersję 2x1 procedury o obniżonych detalach. A tak, trzeba użyć mniejszego okienka by rozkoszować się np. 30 FPS. A to na 030/50MHz można łatwo osiągnąć.
Pomimo, że ta procedura tylko konwertuje, oczywiście obrazuje ile pikseli można przerabiać w tym czasie. Bo czy wykonamy jedną, czy dwie operacje na pikselu to nie czyni dużej różnicy, bo koszt nadal jest liniowy. Dopiero jak wykonamy
n operacji na każdym z
n pikseli, różnica jest, bo wówczas koszt jest kwadratowy na przykład.
Oczywiście na Amidze CD32 problem z konwersją odchodzi, bo tam jest sprzętowy, ale chciałbym by Amiga 1200 też mogła korzystać z dobrodziejstw tej techniki.
Przepraszam, że jeszcze nie opublikowałem programu demonstracyjnego, ale takowy zrobię.
Format BMP jest całkiem prosty, nawet mam źródła datatypa do BMP, ale jednak trzeba nad tym trochę popracować. Myślałem też by zrobić program testujący z prostym GUI, dla umilenia procesu testowania.
Niestety nie mam w ogóle doświadczenia w mapowaniu tekstur i innych technikach (nawet 2D), więc takich efektów szybko nie zrobię.
Myślałem, żeby później wykorzystać kod w mojej grze. W każdym razie trochę to potrwa, ale już teraz warsztat pracy jest coraz lepszy.
Troszkę zastanawiam się również nad zaadaptowaniem procedury do Glooma, bo być może nie będzie to takie trudne.
Tymczasem oto linki do:
Pozdrawiam i niech Amiga będzie z Wami.
Ostatnia aktualizacja: 11.12.2017 19:51:45 przez Hexmage960