Hold-And-Modify- Hold-And-Modify

Originální plnobarevný obrázek
Barevný obrázek Amiga HAM 4096
Fragment plnobarevného obrázku (vlevo) vs Amiga HAM (vpravo)

Hold-A-Změnit , obvykle ve zkratce HAM , je režim zobrazení na Commodore Amiga počítače. Používá velmi neobvyklou techniku ​​k vyjádření barvy pixelů, což umožňuje zobrazit na obrazovce mnohem více barev, než by bylo jinak možné. Režim HAM se běžně používal k zobrazení digitalizovaných fotografií nebo video rámečků, bitmapového umění a příležitostně animace. V době uvedení Amigy v roce 1985 byl tento téměř fotorealistický displej u domácího počítače nevídaný a byl široce používán k demonstraci grafické schopnosti Amigy. HAM má však významná technická omezení, která mu brání v používání jako obecný režim zobrazení.

Pozadí

Původní čipová sada Amiga využívá planární displej s 12bitovým barevným prostorem RGB, který produkuje 4096 možných barev.

Bitmapa hřiště byla uložena v části hlavní paměti známé jako čipová RAM , která byla sdílena mezi zobrazovacím systémem a hlavním CPU . Zobrazovací systém obvykle používal indexovaný barevný systém s barevnou paletou .

Hardware obsahoval 32 registrů, které bylo možné nastavit na jakoukoli ze 4096 možných barev, a obraz mohl přistupovat až k 32 hodnotám pomocí 5 bitů na pixel. Šestý dostupný bit mohl být použit v režimu zobrazení známém jako Extra Half-Brite, který snížil svítivost tohoto pixelu na polovinu a poskytl snadný způsob vytváření efektů stínování.

Režim Hold-And-Modify

Amiga čipová sada byla navržena s použitím HSV ( odstín , sytost a jas ) barevný model, jak byl obyčejný v případě předčasného domácích počítačů a herních konzolí , které se spoléhaly na televizních přijímačích pro zobrazení. HSV mapuje příměji do barevného prostoru YUV používaného barevnými televizory NTSC a PAL , což vyžaduje jednodušší převodní elektroniku ve srovnání s kódováním RGB .

Barevná televize, když je přenášena přes RF nebo kompozitní video linku, využívá mnohem menší šířku pásma chroma (kódovaná jako dvě složky s rozdílem barev, spíše než odstín + sytost) ve srovnání s třetí složkou, luma . To podstatně snižuje paměť a šířku pásma potřebnou pro danou vnímanou věrnost zobrazení tím, že ukládá a přenáší jas v plném rozlišení, ale chrominance v relativně nižším rozlišení - technika sdílená s technikami komprese obrázků, jako jsou JPEG a MPEG , stejně jako v další režimy videa založené na HSV/YUV, jako je kódování YJK čipu V9958 MSX-Video (poprvé použit v MSX2+ ).

Varianta kódování HSV použitá v původní formě HAM umožnila upřednostnit aktualizaci informací o jasu před odstínem a zejména saturací, přepínat mezi třemi komponentami podle potřeby, ve srovnání s pravidelnějším prokládáním lumenů v plném rozlišení (Y) s jednotlivými chroma s polovičním nebo čtvrtinovým rozlišením (U + V), jak je používáno pozdějšími standardy digitálního videa. To nabídlo značné výhody oproti RGB.

Jak design Amigy přešel z herní konzoly na obecnější domácí počítač , video čipová sada se sama změnila z HSV na moderní barevný model RGB , což zdánlivě negovalo velkou část výhod režimu HAM. Vedoucí projektu Amiga Jay Miner popisuje:

Hold and Modify přišel z výletu vidět letové simulátory v akci a já jsem měl jakousi představu o primitivním typu virtuální reality . NTSC na čipu znamenalo, že můžete držet odstín a měnit jas pouhou změnou čtyř bitů. Když jsme přešli na RGB, řekl jsem, že to již není potřeba, protože to nebylo užitečné, a požádal jsem člověka s rozložením čipu, aby to sundal. Vrátil se a řekl, že to buď zanechá velkou díru uprostřed čipu, nebo bude trvat tříměsíční redesign a to jsme nemohli udělat. Nemyslel jsem si, že to někdo použije. Znovu jsem se mýlil, protože to Amigě opravdu dalo náskok, pokud jde o paletu barev.

Konečná podoba funkce Hold-And-Modify byla hardwarově funkčně stejná jako původní koncept HSV, ale místo toho, aby fungovala na těchto třech popisných komponentách (většinou s prioritou složky V), upravuje jeden ze tří barevných kanálů RGB. . HAM lze považovat za ztrátovou kompresní techniku ​​podobnou v provozu a účinnosti jako JPEG minus stupeň DCT ; v režimu HAM6 je efektivní pole se 4096 barvami (12 bitů) zakódováno v polovině paměti, která by normálně byla vyžadována-a HAM8 to ještě dále snižuje, zhruba na 40%. Tato zjednodušená komprese se však vyplatí: větší celkové věrnosti barev je dosaženo na úkor horizontálních artefaktů, způsobených neschopností nastavit libovolný jeden pixel na libovolnou 12- (nebo 18, 24) bitovou hodnotu. V extrémním případě může trvat tři pixely, než se změní z jedné barvy na druhou, čímž se sníží efektivní rozlišení v tomto bodě z režimu „320 pixelů“ na přibližně „106 pixelů“ a způsobí šíření šmouh a stínů podél čáry skenování napravo od funkce vysokého kontrastu, pokud se 16 dostupných registrů palety ukáže jako nedostatečné.

"Dekomprese" barevného prostoru kódovaného HAM je dosažena v reálném čase hardwarem displeje, protože jsou zobrazována data grafického bufferu. Každý zakódovaný pixel funguje buď jako normální index registrů palety barev, nebo jako příkaz k přímé změně hodnoty uložené ve výstupním DAC (něco jako aktualizace pouze jedné třetiny aktivního registru palet) a okamžitě se chová jako jako to prochází čipovou sadou.

Používání

Když byla Amiga uvedena na trh v roce 1985, režim HAM nabízel významnou výhodu oproti konkurenčním systémům. HAM umožňuje zobrazení všech 4096 barev současně, i když s výše uvedenými omezeními. Toto pseudo-fotorealistické zobrazení bylo pro domácí počítač té doby bezprecedentní a umožňovalo zobrazení digitalizovaných fotografií a vykreslených 3D obrazů. Pro srovnání, tehdejší standard IBM-PC EGA umožňoval 16 barev na obrazovce z palety 64. EGA nástupnická VGA vydaná v roce 1987 se svým vlajkovým režimem her, režimem 13h , umožňovala 256 barev na obrazovce z 262 144. Režim HAM byl často používán k prokázání schopnosti Amigy v obchodech a obchodních prezentacích, protože konkurenční hardware nemohl odpovídat barevné hloubce. Vzhledem k výše popsaným omezením byl HAM používán hlavně pro zobrazování statických obrázků a vývojáři se do značné míry vyhýbali jeho použití u her nebo aplikací vyžadujících animaci.

Se zavedením pokročilé grafické architektury by konvenční rovinný obraz mohl mít paletu 256 barev, což by nabídlo výrazně vyšší věrnost barev. Původní režim HAM s omezeným rozlišením barev se stal pro uživatele stroje AGA mnohem méně atraktivní, přestože byl stále součástí zpětné kompatibility. Nový režim HAM8 byl pro čipovou sadu AGA mnohem méně užitečný než režim HAM pro původní čipovou sadu, protože přímější indexované režimy 256 barev (stejně jako vyšší výkon, planární 128 a 64 barev) výrazně rozšířily možnosti umělci, aniž by trpěl nedostatky HAM. Dobře naprogramovaný režim „rozřezaných“ palet by se mohl ukázat jako užitečnější než HAM8, s až 256 jedinečnými barvami na řádek-stačí k přímému definování odlišné barvy pro každý pixel, pokud byl definován režim videa o šířce 256 pixelů, a ve vyšších rozlišeních dokonce jedna 256-barevná paleta pro celou obrazovku, natož pro každý řádek, umožňovala mnohem efektivnější a přesnější simulaci vyšších barevných hloubek pomocí ditheringu, než by bylo možné dosáhnout pouze u 32.

Původní účel HAM, který měl umožnit více barevného rozlišení navzdory omezené velikosti vyrovnávací paměti videa a omezené šířce pásma paměti, se stal díky zrušení těchto limitů do značné míry irelevantní. Vzhledem k tomu, že modernější počítače jsou ze své podstaty schopné zobrazování truecolor s vysokým rozlišením bez jakýchkoli speciálních triků, není již potřeba zobrazovacích technik, jako je HAM; vzhledem k tomu, že grafické karty ve stylu PC nabízející režimy jako 800x600 SVGA v hi-color (16 bpp nebo 65536 přímo volitelných barev) již byly pro Amigu v době umírání platformy k dispozici, je nepravděpodobné, že by jakýkoli další vývoj technika by byla obtěžována, kdyby přežila až do dnešních dnů.

Omezení

Příklad okrajových barev HAM: bílá a černá jsou v paletě, ostatní barvy nikoli, takže vyžadují horizontální přechodové kroky.

Režim HAM omezuje hodnotu sousedních pixelů na každé vodorovné linii hřiště. Aby bylo možné vykreslit dvě libovolné barvy souběžně, může trvat až dva přechodné pixely, než se změní na zamýšlenou barvu (pokud je třeba upravit všechny červené, zelené a modré složky). V nejhorším případě to sníží horizontální použitelné rozlišení barev na polovinu, z 320 ~ 360 pixelů na 106 ~ 120. I přesto se příznivě srovnává se současnými video technologiemi, jako je VHS , které mají rozlišení chroma kolem 40 televizních řádků , což je zhruba ekvivalent 80 pixelů.

Zobrazení takových obrázků prostřednictvím připojení kompozitního videa poskytuje určité horizontální vyhlazování, které minimalizuje barevné artefakty. Pokud je však použit monitor RGB , artefakty budou obzvláště patrné v oblastech s ostrým kontrastem (silné horizontální přechody obrazu ), kde se může objevit nežádoucí vícebarevný artefakt nebo „třásně“. Byly použity různé techniky vykreslování, aby se minimalizoval dopad „lemování“, a displeje HAM byly často navrženy tak, aby zahrnovaly jemné horizontální barevné přechody, čímž se vyhýbají svislým hranám a kontrastům.

Zobrazení plnobarevného obrazu v režimu HAM vyžaduje pečlivé předzpracování. Protože HAM může současně upravovat pouze jednu z RGB složek, rychlých barevných přechodů podél skenovací linky lze nejlépe dosáhnout použitím jednoho z přednastavených barevných registrů pro tyto přechody. K vykreslení libovolného obrázku se může programátor rozhodnout nejprve prozkoumat původní obrázek, aby zjistil nejnápadnější z těchto přechodů, a poté přiřadit tyto barvy k jednomu z registrů, což je technika známá jako adaptivní palety . S pouze 16 dostupnými registry v původním režimu HAM je však určitá ztráta věrnosti barev běžná.

Režim HAM navíc neumožňuje snadno libovolnou animaci displeje. Pokud má být například libovolná část hracího pole přesunuta na jiné místo na obrazovce, hodnoty Hold-and-Modify bude pravděpodobně nutné znovu vypočítat na všech zdrojových a cílových řádcích, aby se obraz zobrazil správně (operace není vhodné pro animaci). Konkrétně, pokud levý okraj animovaného objektu obsahuje jakékoli pixely „upravit“, nebo pokud obrázek bezprostředně napravo od objektu obsahuje pixely „upravit“, musí být tyto hodnoty Hold-and-Modify přepočítány. Pokus o pohyb předmětu po obrazovce (například s použitím blesku ) vytvoří znatelné třásně na levém a pravém okraji obrázku, pokud grafika není speciálně navržena tak, aby se tomu vyhnula. Aby se vyhnul přepočítávání hodnot Hold-and-Modify a obcházel fringing, musel by programátor zajistit nejvíce levý pixel každého blitterového objektu a úplně levý pixel každého řádku rolovacího hracího pole je 'set' pixel. Paleta by musela být navržena tak, aby obsahovala každý takový levý krajní pixel. Alternativně lze zobrazení HAM animovat generováním hodnot pixelů prostřednictvím procedurálního generování , ačkoli toto je obecně užitečné pouze pro syntetické obrazy, například efekty „duhy“ používané v ukázkách .

Pamatujte však, že funkce Hold-and-Modify se vztahuje pouze na pixely hracího pole. 128 pixelů sprite dat (v režimu DMA) na skener je stále k dispozici pro umístění na horní část hřiště HAM.

Implementace

Originální čipová sada HAM režim (HAM6)

Režim HAM6, pojmenovaný pro 6 bitů dat na pixel, byl představen s původní čipovou sadou a byl zachován v pozdější vylepšené čipové sadě a pokročilé grafické architektuře . HAM6 umožňuje zobrazit až 4096 barev současně v rozlišení od 320 × 200 do 360 × 576.

Kódování HAM6 používá šest bitů na pixel: dva bity pro řízení a čtyři bity pro data. Pokud jsou oba řídicí bity nastaveny na nulu, čtyři zbývající bity se použijí k indexování jednoho ze 16 přednastavených barevných registrů, fungujících způsobem normální indexované bitmapy. Další tři možné vzory bitů řízení naznačují, že by měla být použita barva předchozího pixelu (vlevo) na skenovací linii a místo toho by měly být použity datové bity pro úpravu hodnoty červené, zelené nebo modré složky. V důsledku toho existují čtyři možnosti:

  • Sada : Použijte 4 bity dat k indexování barvy z palety 16 barev. Použijte tuto barvu pro tento pixel.
  • Upravit červenou : Podržte zelenou a modrou barevnou složku předchozího pixelu. Použijte 4 bity dat jako novou složku červené barvy tohoto pixelu.
  • Upravit zelenou : Podržte červené a modré barevné složky předchozího pixelu. Použijte 4 bity dat jako novou složku zelené barvy tohoto pixelu.
  • Upravit modrou : Přidržte červené a zelené složky barev předchozího pixelu. Použijte 4 bity dat jako novou komponentu modré barvy tohoto pixelu.

K dispozici je také podobný režim, HAM5, ale je to docela k ničemu. V HAM5 je šestý bit vždy nula, takže lze upravit pouze složku modré barvy.

Krájený režim HAM (SHAM)

Původní čipová sada Amiga obsahovala podpůrný čip známý jako „měď“, který zvládá přerušení a další časové a úklidové povinnosti nezávisle na CPU a video systému. Pomocí mědi je možné synchronně s video výstupem upravovat registry čipové sady nebo přerušit CPU na jakékoli souřadnici zobrazení. To umožňuje programátorům používat Copperlist nebo CPU kód pro video efekty s velmi nízkou režií.

Pomocí této techniky vyvinuli programátoři režim Sliced ​​HAM nebo SHAM , známý také jako dynamický HAM . SHAM změní některé nebo všechny barevné registry na vybraných řádcích skenování a změní paletu během zobrazení. To znamenalo, že každý skenovací řádek může mít vlastní sadu 16 základních barev. Tím se odstraní některá omezení způsobená omezenou paletou, kterou lze poté zvolit pro řádek namísto pro obrázek. Jedinou stinnou stránkou tohoto přístupu je, že Copperlist používá pro změny registru další hodinové cykly čipové RAM, že obraz není pouze bitmapový, a přidaná složitost nastavení režimu SHAM.

Tato technika se neomezuje pouze na HAM a byla široce používána i v běžnějších grafických režimech stroje. Dynamic HiRes používá podobnou techniku ​​změny palety k produkci 16 barev na řádek v režimech s vysokým rozlišením, zatímco HAM je omezen na nízké rozlišení, ale umožňuje jak 16 indexovaných barev, tak jejich úpravy.

Myšlenka SHAM byla zastaralá, když byl HAM8 představen s čipovou sadou AGA , protože i neřezaný obraz HAM8 má mnohem větší barevné rozlišení než řezaný obraz HAM6. SHAM však zůstává nejlepším dostupným režimem HAM u těch Amigas s původními nebo ECS čipovými sadami.

Režim Advanced Graphics Architecture HAM (HAM8)

S vydáním Advanced Graphics Architecture (AGA) v roce 1992 byl původní režim HAM přejmenován na „HAM6“ a byl zaveden nový režim „HAM8“ (číslovaná přípona představuje bitplany používané příslušným režimem HAM). S AGA měla Amiga místo 4 bitů na barevnou složku až 8 bitů na barevnou složku, což mělo za následek 16 777 216 možných barev (24bitový barevný prostor ).

HAM8 funguje stejným způsobem jako HAM6, používá dva „kontrolní“ bity na pixel, ale se šesti bity dat na pixel místo čtyř. Tyto sady operace vybírá z palety 64 barev místo 16. Modifikace ovládání modifikuje šest nejvýznamnějších bitů z buď červené, zelené nebo modré barevné složky - dvě nejméně významných bitů z barvy nemohou být změněny touto operací a zůstat jak je nastaveno poslední nastavenou operací. Ve srovnání s HAM6 může HAM8 zobrazit mnohem více barev na obrazovce. Maximální počet barev na obrazovce využívajících HAM8 byl široce uváděn jako 262 144 barev (18bitový barevný prostor RGB). Ve skutečnosti může být maximální počet jedinečných barev na obrazovce větší než 262 144, v závislosti na dvou nejméně významných bitech každé barevné složky v paletě 64 barev. Teoreticky by mohlo být všech 16,7 milionu barev zobrazeno na dostatečně velké obrazovce a vhodné základní paletě, ale v praxi omezení v dosažení plné přesnosti znamenají, že dva nejméně významné bity jsou obvykle ignorovány. Obecně je vnímaná barevná hloubka HAM8 zhruba ekvivalentní vysokému barevnému displeji.

Svislá rozlišení displeje pro HAM8 jsou stejná jako pro HAM6. Horizontální rozlišení může být 320 (360 s overscan) jako dříve, zdvojnásobené na 640 (720 s overscan) nebo dokonce čtyřnásobné na 1280 pixelů (1440 s overscan). Čipová sada AGA také představila ještě vyšší rozlišení pro tradiční režimy planárního zobrazení. Celkový počet pixelů na obrázku HAM8 nesmí přesáhnout 829 440 (1440 × 576) v režimech PAL, ale může překročit 1 310 720 (1280 × 1024) pomocí hardwaru displeje jiného výrobce (Indivision AGA flicker-fixer ).

Stejně jako původní režim HAM nemůže obrazovka HAM8 zobrazit libovolnou barvu v libovolné poloze, protože každý pixel závisí na omezené paletě nebo se spoléhá až na dvě barevné složky předchozího pixelu. Stejně jako v původním režimu HAM mohou designéři také zvolit „rozřezání“ displeje (viz níže), aby se některá z těchto omezení obešla. K dispozici je také režim HAM7, který však není příliš využíván.

Emulace HAM

HAM je jedinečný pro Amigu a její odlišné čipsety. Aby bylo možné přímé vykreslování starších obrázků kódovaných ve formátu HAM, byly vyvinuty softwarové emulátory HAM, které nevyžadují původní zobrazovací hardware. Verze AmigaOS starší než 4.0 mohou používat režim HAM za přítomnosti nativní čipové sady Amiga. AmigaOS 4.0 a vyšší, navržený pro radikálně odlišný hardware, poskytuje emulaci HAM pro použití na moderním robustním grafickém hardwaru. Vyhrazené emulátory Amiga běžící na nepůvodním hardwaru dokážou zobrazit režim HAM emulací hardwaru displeje. Protože však žádná jiná počítačová architektura nepoužívala techniku ​​HAM, prohlížení obrazu HAM na jakékoli jiné architektuře vyžaduje programovou interpretaci obrazového souboru. Věrné softwarové dekódování přinese shodné výsledky a odloží rozdíly ve věrnosti barev mezi nastaveními displeje.

Pokud je však cílem pouze zobrazit obraz SHAM na platformě jiné než Amiga, mohou být požadované hodnoty barev předem vypočítány na základě položek palety, které jsou naprogramovány prostřednictvím seznamu mědi, bez ohledu na to, zda je paleta upravena v uprostřed čáry skenování. Vždy je možné převést HAM nebo SHAM obraz bezeztrátově na 32bitovou paletu.

Implementace HAM třetích stran

Zařízení vyrobené společností Black Belt známé jako HAM-E dokázalo vytvářet obrázky s barevnou hloubkou HAM8 při nízkém horizontálním rozlišení z Amigy s originální čipovou sadou.

Amiga by byla nastavena tak, aby produkovala obrázky ve vysokém rozlišení (640 pixelů široký, 720 s overscan). To vyžadovalo použití čtyř bitových rovin při 70 ns na pixel. Prvních několik řádků informace kódované obrazem pro konfiguraci jednotky HAM-E. Poté byl každý pár pixelů kódován informacemi pro jednotku HAM-E, která převedla informace na jeden pixel 140 ns (generování obrazu o šířce 320 pixelů nebo 360 s přeskenováním v barevné hloubce osmi bitových rovin). Kvalita HAM-E byla tedy srovnatelná s obrazem HAM8 s nízkým rozlišením. Technika HAM-E využila skutečnosti, že obraz s vysokým rozlišením se čtyřmi bitovými rovinami poskytuje o třetinu větší šířku pásma paměti, a tedy o třetinu více dat, než obraz s nízkým rozlišením se šesti bitplany.

Viz také

Reference

Další čtení

  • Specifikace pro Advanced Amiga (AA) Chip Set , Commodore-Amiga

externí odkazy

  • Animované demo vykreslené v režimu HAM: verze HAM-6 a verze HAM-8 ( vyžaduje Java ).