kategorie: Dema, Grafika
[#1] Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500
Witam

Jestem osoba która lubi wyzwania, a ponieważ moja pasja jest processing obrazu i video naturalna koleją rzeczy było zainteresowanie się ograniczeniami graficznymi pierwszej Amigi. Najpierw przyczyniłem się do rozwoju konwersji na HAM - program ham_convert. Natomiast obecnie pomagam w stworzeniu porządnego konwertera do trybu Dynamic Hires ale zupełnie innego niż znacie.
Problem konwersji do tego trybu można podzielić na podproblemy:
1. Konwersje kolorów RGB24 do RGB12
2. Zmniejszenie liczby kolorów w linii do 16,8 lub 4 tak by zachować w miarę stabilny nie poszatkowany obraz.
3. Uzyskanie w miarę wysokiego stopnia kompresji danego obrazka.
4. Zużycie jak najmniejszej ilości zasobów komputera, tak by oprócz wyświetlania obrazka można było cos jeszcze zrobić.

Konwersja do tego trybu wiąże się z pokonaniem problemu artefaktów, tutaj konkretnie mamy do czynienia z poszatkowaniem w pionie kolorów. W przypadku obrazków fotograficznych gdzie kompleksowość obrazu jest bardzo wysoka ten problem jest mniej odczuwalny niż w przypadku pixelartu. Dodatkowo problem ten doskwiera tym bardziej im mniej kolorow w linii mamy do dyspozycji.
Poniżej znajdziecie państwo parę przykładowych grafik Slayera którego talent cenie i który świetnie się nadaje do testów. Nad każdym z obrazków musiałem spędzić trochę czasu, ponieważ to nie sprowadza się tylko do klikania, a do dobierania parametrów konwersji do konkretnego obrazka i to na razie jest główny powód dlaczego konwerter nie jest dostępny publicznie.
Otóż docelowo idea tworzenia pixelartu w tym trybie powinna sprowadzić się do czegoś takiego:
1. Robimy nasze arcydzieło w zwykłym jakimkolwiek PCtowym programie graficznym przy użyciu pełnego RGB24.
2. Konwertujemy obrazek do dynamic Hires
3. Ręcznie poprawiamy artefakty które niestety są nieuniknione.

To co uzyskamy to wpolczesna grafikę na komputerze z 1985roku...

Oryginalny Dynamic Hires był oparty o 4 bitplanowy Hires, który bardzo obciążał DMA. W każdej linii obrazu na dostępnych 226 slotów pamięci, obraz zajmował 160!!. W efekcie CPU mógł mieć jedynie jakieś 25% mocy
To co zobaczycie poniżej to konwersja na 3 bitplanowy (8kolorow w linii) zużywający jedynie 120cykli na 226 (odpowiednik zasobozernosci lowresowego EHB, czyli CPU ma jakieś 70% mocy) oraz 2 bitplanowy 4 kolorowy w praktyce pozwalający CPU pracować na 100% swojej szybkości.
Jednym słowem matematyczny hardcore bardzo mało obciazajacy cpu :D



Na koniec pare slow o kompresowalnosci takich obrazkow. IFF PCHG po optymalizacji i kompresji powinien mniej więcej odpowiadać wielkości PNG tych obrazkow co oznacza rozpietosc od 25 do 65kB czyli stosunkowo niewiele...

Ostatnia aktualizacja: 19.01.2018 12:42:32 przez Trachu
[#2] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@Trachu, post #1

Mógłbyś jeszcze pokazać jakby wyglądały te obrazki dla pełnych 4 bitplanów dynamic hires?
[#3] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@michal_zukowski, post #2

16 kolorowy dynamic hires zajmuje 33% więcej w pamięci i znacząco spowalnia komputer.
Dodatkowo zwiekszona kompleksowość takiego obrazka zle wpływa na kompresowalnosc i to nie kwestia 33%, a dużo wiecej. Przy pojemności dyskietki 880kB szersze stosowanie tego trybu napotykalo na poważne ograniczenia które wlasnie na twoich oczach zostały znacząco pokonane.
IMHO jakość 8kolorowych obrazkow jest bardzo zblizonba do oryginalow co sam możesz zobaczyć tutaj. http://pixeldreams.pl/
[#4] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@Trachu, post #1

Just Wow :)
[#5] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@Trachu, post #1

Świetna robota.
Dokładnie o takie coś mi kiedyś chodziło (pisałem w jakimś wątku)
zacząłem sam coś podobnego kodować (doszedłem też do tego że powinno być 8 kolorów w lini) ale poległem i zostawiłem na później...
Teraz czekam z niecierpliwością na ten converter.

Czy poprawianie bugów (błędów konwersji) można robić jakoś w tym programie czy jakoś inaczej się je poprawia?

Ciekaw jestem naprawdę efektów konwersji bo chodzi mi po głowie pixlowanie grafiki np w 512 kolorach albo w 1024 (nie koniecznie prawdziwy True Color) tylko brakowało mi narzędzi...

Jeszcze jedna uwaga: takie podejście przypomina mi Commodorowski tryb NUFLI. rysować się w tym praktycznie nie da ale jest genialny konwerter i można rysować w czymkolwiek a potem konwertować.

Ostatnia aktualizacja: 19.01.2018 15:42:29 przez retronav
[#6] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@retronav, post #5

Na razie konwerter jest w dość surowym stanie - mnóstwo opcji w których cześć działa a czesc nie. Generalnie to na razie jest matematyczna maszyna która trzeba każdorazowo przystosować do danego obrazka i dopóki się tego nie okiełzna nie ma po co tego wypuszczać bo ludzie się zraza.
Generalnie idea jest taka ze masz png/gif po konwersji które wczytujesz do jakiegokolwiek programu graficznego i poprawiasz trzymając się zasady tej samej ilości kolorów w danej linii. Same kolory możesz tez zmienić byle globalnie w obrębie całej linii, a nawet dwulinii. Nie wydaje się to nic trudnego, a po poprawie takiego gifa poddajesz kolejnej konwersji tym razem bezpośrednio na iff pchg np. hamlabem

Wiesz na ta chwile najlepsze rezultaty daje konwersja bezpośrednio z truecoloura i jakiekolwiek ograniczanie ilości globalnych kolorów raczej przynosi więcej złego niż dobrego. Dzieje się tak ponieważ konwerter ma również specjalny rodzaj ditheringu który gryzie się ze standardowymi.
[#7] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@Trachu, post #6

A może by tak puścić jakiś algorytm optymalizacyjny (rojowy, genetyczny?) i niech samo znajdzie najlepsze wartości parametrów dla danego obrazka? Przecież sam zapis do pliku nie musi trwać krótko.
[#8] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@Trachu, post #1

Rzeczywiście- WOW, trzymam kciuki OK

Jeszcze pytanie lajkonika i leniucha.
Obecnie dzięki zastosowaniu tego trybu nasz obrazek będzie wyświetlany w rozdzielczości 640x256 czy 640x512?
I ile teoretycznie maksymalnie możemy mieć kolorów na ekranie?
[#9] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@teh_KaiN, post #7

Widzisz abstrahując zupełnie od czasu poświęconego na konwersje, taki algorytm musiałby odnosić się do czegoś jakiegoś wskaźnika porownywawczego z oryginalem zapewne.
Owszem sa takie jak np. PSNR czy SSIM, ale niestety daleko im do doskonalosci. Chodzi oto ze obrazek może wyglądać kiepsko choć ma dobry wskaźnik, i wygladac dobrze choć wskaźnik pokazuje cos innego. Na szczęście nie jest tak ze zupełnie nie mamy jakiś kierunkowskazow w która stronę iść. W praktyce optymalizacja sprowadza się do lokalnego sprawdzenia kilku kilkunastu wersji tego obrazka.

Hires oznacza podwojenie rozdzielczości poziomej. To czy jest to interlace czy bez jest kwestia dowolna.
[#10] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@Trachu, post #9

Efekty konwersji są wyborne, zresztą już w Gdańsku byłem pod wrażeniem jak to obecnie wygląda. Teraz trzeba tylko jakoś sensownie to wykorzystać w jakiejś produkcji.
[#11] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@slay, post #10

Wlasnie się zastanawiałem kiedy się odezwiesz. W końcu nie przypadkowo wybrałem twoje obrazki bys jako autor ocenic efekt końcowy. :)

Milo ze mnie zapamietales. Ja czulem się zaszczycony mogąc z Wami wodke pic.OK

A tak w ogole jak oceniasz dynamic hires względem ham w innym watku?
[#12] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@Trachu, post #11

Tryb HAM z drugiego wątku również wygląda bardzo dobrze (o wiele lepiej niż zakładałem). Liczba artefaktów i przekłamań / rozjazdów kolorów jest wyjątkowo niska, jak na ten tryb. Jest potencjał, dobra robota.
[#13] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@slay, post #12

Liczba artefaktów i przekłamań / rozjazdów kolorów jest wyjątkowo niska, jak na ten tryb. Jest potencjał, dobra robota.

Liczba przekłamań w obrazie w trybie Hold And Modify w ogromnej mierze zależy od podejścia. Normalne jest, że zwykła, szybka konwersja z 24-bit nie przyniesie dobrych efektów. Należy zrozumieć sposób działania trybu HAM o którym pisałem w innym wątku - żeby uzyskać dobry efekt.

Innymi słowy trzeba dostosować obrazek z myślą o trybie HAM już na początku. Najlepszą strategią jest zmienianie jednego komponenta spośród trzech (Red, Green, Blue) w sąsiadujących pikselach (a już wtedy uzyska się płynne przejście barw bez ramp). Ważne jest mądre stosowanie tzw. bazowych kolorów, które nigdy nie są przekłamywane.

Ogólnie zagadnienie jest dość szerokie, no i ciekawe.

Ostatnia aktualizacja: 07.02.2018 08:57:12 przez Hexmage960
[#14] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@Hexmage960, post #13

Innymi słowy trzeba dostosować obrazek z myślą o trybie HAM już na początku
.

Kwestia jest taka, że mówimy o konwersji już istniejących i wcześniej wykonanych grafik do trybu HAM. Nie znam masochisty, który byłby w stanie coś dobrego w tym trybie narysować od zera.
[#15] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@slay, post #14

Tak, wiem. Dlatego piszę, że prosta konwersja 24bit->HAM najbardziej odczuje artefakty. Taki obrazek będzie miał najwięcej artefaktów.

Być może zastosowanie odpowiednich filtrów poprawiłoby efekt.

Nie znam masochisty, który byłby w stanie coś dobrego w tym trybie narysować od zera.

Jest to jednak możliwe. Czy Carrion/RetroNav nie wspominał, że malował w trybie HAM? Istnieją programy tylko do rysowania w HAM. Jeżeli grafik od początku założy sobie wykorzystanie tego trybu, to prawdopodobnie uzyska dobry efekt.

Dokładnie tak, jak jest z innymi ograniczeniami, które narzucają sobie artyści (demo 64kB, czy muzyka 4-kanały/chip itp.).

W przypadku trybu HAM warto dokładnie wiedzieć jak on działa.

Ostatnia aktualizacja: 07.02.2018 10:17:38 przez Hexmage960
[#16] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@slay, post #14

Dynamic HIRE drogi Slayerze to to co mi chodziło po głowie dawno temu (i pisałem tutaj i gdzie indziej ;) ) a co dla mnie jest takim trochę kommodorowskim podejściem do "robienia nowych trybów" graficznych.
Sam czekam na narzędzie bo chciałbym do końca zrozumieć co ono robi i czy to jest faktycznie to co mi chodziło po głowie...
co do HAMa to zapostuje w tym drugim wątku.
[#17] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@Trachu, post #11

A czy ktoś policzył albo przetestował co ile pikseli dałoby się zmieniać całą paletę 16kol w Hiresie na zwykłej A500, z wyłączonym multitaskingiem, zakładając że nic innego w tle nie robi?

Albo jeśli nie wszystkie to może po 8 albo po 4 kolory zmieniać co parę pikseli. Bo przypuszczam że dałoby się uzyskać efekt który większość amigowców uznałaby za możliwy jedynie na AGA. Bo na OCS raczej się nie widuje hiresa w setkach kolorów.



Ostatnia aktualizacja: 07.02.2018 16:25:06 przez ZbyniuR
[#18] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@ZbyniuR, post #17

W hires 16 kol. nie jest możliwa zmiana kolorów w trakcie linii. Jest to możliwe w hires 8 i mniej. Copper zmieni kolor co 8, 12 lub 16 pikseli w zależności od liczby bitplanów.

Ostatnia aktualizacja: 07.02.2018 19:33:24 przez cholok
[#19] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@cholok, post #18

Ja nie pytam o coppera.

Procek w CPC ma dość mocy by zmieniać paletę co 2 wyświetlone bajty czyli w jego średniej rozdziałce co 8 pikseli, a ty mówisz że Amiga tak nie potrafi?
[#20] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@ZbyniuR, post #19

Chyba po prostu ujawniła się kolejna wyższość CPC nad Amigą
[#21] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@ZbyniuR, post #19

a ty mówisz że Amiga tak nie potrafi?
W Amidze możesz mieć bardzo różne procesory, o różnych szybkościach, więc technika „cyklowania” znana z ośmiobitowców, raczej nie może być użyta.
[#22] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@ZbyniuR, post #19

Tutaj wcale nie chodzi o moc CPU. Dostęp do rejestrów jest taki sam jak pamięci chip, a DMA w hires 16 kol zajmuje 100% dostępu, więc CPU ma dostęp tylko w HBL i VBL.
[#23] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@BULI, post #20

A weź sobie zmieniaj te 27 kolorów nawet co pixel
[#24] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@BULI, post #20

Taaaaaaaaaaa bo ja nie przypominam sobie by CPC miało HIRES :P

MC68k nie ma cache wiec bez dostępu do pamięci nie pracuje.

Amiga ma architekturę dzielonego dostępu do pamięci.

HIRES 16kolorowy zajmuje caly dostęp do pamięci CHIP a tym samym tez SLOW.

Reasumyjac wyświetlenie czegokolwiek bardziej wymagającego od 16 kolorowego LOWres spowalnia komputer
Gdyby standardowa A500 miała latwy dostep do FAST sytuacja bylaby inna a tak jest jak jest.
[#25] Re: Dynamic Hires czyli nowe otwarcie MOCY AMIGA 500

@cholok, post #23

A weź sobie zmieniaj te 27 kolorów nawet co pixel


Zapytam bo, nie wiem czy Cię dobrze odczytałem.
Rozumiem, że odpowiadasz na mojego posta dlatego, że dołączasz się do mojej ironi na temat wyższości CPC na Amigą?

MC68k nie ma cache wiec bez dostępu do pamięci nie pracuje


<asz na myśli model 68000 (A500, A600, A1000, A2000, Atari St/e itp), bo od 68020 wzwyż motorolki posiadają własne wbudowane cache ok, racja
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem