Удерживать и изменять

редактировать
Исходное полноцветное изображение Цветное изображение Amiga HAM 4096

Удерживать и изменять, обычно сокращенно HAM, это режим отображения компьютера Commodore Amiga. Он использует весьма необычную технику для выражения цвета пикселей, позволяя отображать на экране гораздо больше цветов, чем было бы возможно в противном случае. Режим HAM обычно использовался для отображения оцифрованных фотографий или видеокадров, растровых изображений и иногда анимации. На момент выпуска Amiga в 1985 году этот почти фотореалистичный дисплей был беспрецедентным для домашнего компьютера и широко использовался для демонстрации графических возможностей Amiga. Однако HAM имеет значительные технические ограничения, которые не позволяют использовать его в качестве режима отображения общего назначения.

Содержание
  • 1 Фон
  • 2 Режим удержания и изменения
    • 2.1 Использование
    • 2.2 Ограничения
  • 3 Реализации
    • 3.1 Режим HAM исходного набора микросхем (HAM6)
    • 3.2 Режим HAM нарезки (SHAM)
    • 3.3 Режим HAM с расширенной графической архитектурой (HAM8)
    • 3.4 Эмуляция HAM
    • 3.5 Сторонние реализации HAM
  • 4 См. Также
  • 5 Ссылки
  • 6 Дополнительная литература
  • 7 Внешние ссылки
Фон

Исходный чипсет Amiga использует планарный дисплей с 12-битным цветовым пространством RGB что дает 4096 возможных цветов.

Битовая карта игрового поля хранилась в разделе основной памяти, известном как ОЗУ микросхемы, который совместно использовался системой отображения и основным ЦП.. Система отображения обычно использовала систему индексированных цветов с цветовой палитрой .

Аппаратное обеспечение содержало 32 регистра, которые могли быть установлены на любой из 4096 возможных цветов, и image может получить доступ к 32 значениям с использованием 5 бит на пиксель. Шестой доступный бит может использоваться в режиме отображения, известном как Extra Half-Brite, который снижает яркость этого пикселя вдвое, обеспечивая простой способ создания эффектов затенения.

Удерживать- Режим And-Modify

Когда чипсет Amiga только разрабатывался, он использовал «HSV » (оттенок, насыщенность и яркость - или "видео" / "значение") цветовой модели, которая была характерна для ранних домашних компьютеров и игровых консолей, для которых телевизоры использовались для отображения, поскольку они более точно отображаются в цветовое пространство YUV, используемое обычным кодированием цветного телевидения NTSC и PAL, и поэтому требует менее сложной электроники преобразования, чем для RGB. Цветное телевидение по РЧ или композитному видеосвязи также использует значительно уменьшенную полосу "цветности" (хотя и кодируется как два отдельных разностных сигнала, а не оттенок + насыщенность) по сравнению с "яркостью". Это дает возможность значительно сократить объем памяти и пропускную способность данных, необходимых для заданной воспринимаемой точности отображения, путем сохранения яркости с высоким разрешением, но цветности с относительно более низким разрешением - метод, который все еще широко используется в методах сжатия изображений, таких как JPEG и MPEG, а также в других режимах видео на основе HSV / YUV, таких как «YJK» микросхемы V9958 MSX-Video (впервые использованной в MSX2 + ). Вариант этого метода, использованный в исходной форме HAM, позволял отдавать приоритет обновлению информации о яркости над оттенком и, в частности, насыщенностью, переключаясь между тремя компонентами по мере необходимости, в отличие от более регулярного чередования яркости с полным разрешением (Y) с отдельные цветности половинного или четвертого разрешения (U + V), которые используются более поздними стандартами цифрового видео. Эффективность кодирования изображений, полученная таким образом, считалась гораздо более полезной для цветовых моделей типа HSV / YUV, чем для более простой RGB.

Поскольку дизайн Amiga перешел с игровой консоли на более универсальный домашний компьютер, сам набор микросхем видеочипа был изменен с HSV на современная цветовая модель RGB, по-видимому, сводящая на нет большую часть преимуществ режима HAM. Руководитель проекта Amiga Джей Майнер рассказывает:

Hold and Modify прибыл из поездки, чтобы увидеть авиасимуляторы в действии, и у меня возникла своего рода идея о примитивном типе виртуальная реальность. NTSC на чипе означает, что вы можете удерживать оттенок и изменять яркость, изменяя только четыре бита. Когда мы перешли на RGB, я сказал, что он больше не нужен, так как он бесполезен, и попросил специалиста по разводке микросхем его снять. Он вернулся и сказал, что это либо оставит большую дыру в середине чипа, либо потребует трехмесячного редизайна, а мы не можем этого сделать. Я не думал, что кто-то воспользуется этим. Я снова ошибся, так как это действительно дало Amiga преимущество с точки зрения цветовой палитры.

Окончательная форма Hold-And-Modify была аппаратно функционально такой же, как оригинальная концепция HSV, но вместо работая с этими тремя описательными компонентами (в основном отдавая приоритет компоненту V), он изменяет один из трех цветовых каналов RGB. HAM можно рассматривать как метод сжатия с потерями, аналогичный по работе и эффективности JPEG за вычетом стадии DCT ; в режиме HAM6 эффективное игровое поле с 4096 цветами (12 бит) кодируется в половине памяти, которая обычно требуется, а HAM8 сокращает это еще больше, примерно до 40%. Однако это упрощенное сжатие имеет свои преимущества: более высокая общая точность цветопередачи достигается за счет горизонтальных артефактов, вызванных невозможностью установить для любого отдельного пикселя произвольное значение 12 (или 18, 24) бит. В крайнем случае, для перехода от одного цвета к другому может потребоваться три пикселя, что снижает эффективное разрешение в этой точке с режима «320 пикселей» до примерно «106 пикселей» и вызывает растекание пятен и теней вдоль линии сканирования. справа от высококонтрастного элемента, если 16 доступных регистров палитры оказываются недостаточными.

«Декомпрессия» кодированного цветового пространства HAM достигается в реальном времени аппаратным обеспечением дисплея, когда отображаются данные графического буфера. Каждый закодированный пиксель действует либо как нормальный индекс для регистров цветовой палитры, либо как команда для прямого изменения значения, содержащегося в выходном DAC (что-то вроде обновления только одной трети активного регистра палитры), и немедленно обрабатывается как таковая, когда проходит через набор микросхем.

Использование

Когда Amiga была запущена в 1985 году, режим HAM предлагал значительное преимущество перед конкурирующими системами. HAM позволяет отображать все 4096 цветов одновременно, хотя и с вышеупомянутыми ограничениями. Этот псевдофотореалистичный дисплей был беспрецедентным для домашних компьютеров того времени и позволял отображать оцифрованные фотографии и визуализированные 3D-изображения. Для сравнения, тогдашний стандарт IBM-PC EGA допускал 16 цветов на экране из палитры из 64. Преемник EGA VGA, выпущенный в 1987 году с его флагманским игровым режимом, Mode 13h, разрешено 256 экранных цветов из 262 144. Режим HAM часто использовался для демонстрации возможностей Amiga на дисплеях магазинов и торговых презентациях, поскольку конкурирующее оборудование не могло соответствовать глубине цвета. Из-за описанных выше ограничений HAM в основном использовался для отображения статических изображений, и разработчики в значительной степени избегали его использования в играх или приложениях, требующих анимации.

С появлением расширенной графической архитектуры обычное плоское изображение могло иметь палитру из 256 цветов, что обеспечивает значительно более высокую точность цветопередачи. Первоначальный режим HAM с его ограниченным цветовым разрешением стал гораздо менее привлекательным для пользователей машины AGA, хотя он все еще был включен для обратной совместимости. Новый режим HAM8 был гораздо менее полезен для набора микросхем AGA, чем режим HAM для исходного набора микросхем, поскольку более простые индексированные 256-цветные (а также более производительные, 128- и 64-цветные планарные режимы) значительно расширили возможности художнику, не страдая от недостатков HAM. Хорошо запрограммированный режим «нарезанной» палитры может оказаться более полезным, чем HAM8, с 256 уникальными цветами в строке - этого достаточно, чтобы напрямую определить отдельный цвет для каждого пикселя, если был определен видеорежим шириной 256 пикселей, а в более высоких разрешениях даже одна 256-цветная палитра для всего экрана, не говоря уже о каждой строке, позволяла гораздо более эффективно и точно моделировать большую глубину цвета с использованием дизеринга, чем можно было бы достичь с помощью только 32 цветов.

Оригинал Цель HAM, которая заключалась в обеспечении большего цветового разрешения, несмотря на ограниченный размер видеобуфера и ограниченную полосу пропускания памяти, стала в значительной степени неактуальной благодаря снятию этих ограничений. Поскольку более современные компьютеры изначально способны отображать изображения с высоким разрешением truecolor без каких-либо специальных уловок, отпала необходимость в таких технологиях отображения, как HAM; поскольку видеокарты в стиле ПК, предлагающие такие режимы, как 800x600 SVGA в hi-color (16 bpp или 65536 цветов с прямым выбором), уже были доступны для Amiga в последние дни платформу, маловероятно, что какие-либо дальнейшие разработки техники были бы обеспокоены, если бы она сохранилась до наших дней.

Ограничения

Режим HAM накладывает ограничения на значение соседних пикселей на каждой горизонтальной строке игрового поля. Для рендеринга двух произвольных цветов рядом может потребоваться до двух промежуточных пикселей, чтобы изменить нужный цвет (если необходимо изменить красный, зеленый и синий компоненты). В худшем случае это снижает горизонтальное разрешение цветности с 320 ~ 360 пикселей до 106 ~ 120 (хотя, для сравнения, современные технологии, такие как VHS, имеют разрешение цветности всего 40 "строк", что примерно эквивалентно 80 пикселям, но размазал гораздо плавнее). Эта проблема особенно заметна в областях резкого контраста (сильные горизонтальные градиенты изображения ), где может появиться нежелательный многоцветный артефакт или «бахрома». Для минимизации воздействия «окантовки» использовались различные методы рендеринга, а дисплеи HAM часто разрабатывались с учетом тонких горизонтальных цветовых градиентов, избегая вертикальных краев и контрастов.

Отображение полноцветного изображения в режиме HAM требует тщательной предварительной обработки. Поскольку HAM может изменять только один из компонентов RGB за раз, быстрые переходы цвета вдоль линии развертки могут быть лучше всего достигнуты с помощью одного из предварительно установленных регистров цвета для этих переходов. Чтобы визуализировать произвольное изображение, программист может сначала исследовать исходное изображение на предмет наиболее заметных из этих переходов, а затем назначить эти цвета одному из регистров, метод, известный как адаптивные палитры. Однако при наличии только 16 доступных регистров в исходном режиме HAM некоторая потеря цветопередачи является обычным явлением.

Кроме того, режим HAM не позволяет легко произвольно анимировать отображение. Например, если произвольную часть игрового поля необходимо переместить в другую позицию на экране, значения Hold-and-Modify, возможно, придется пересчитать на всех исходных и целевых строках, чтобы изображение отображалось правильно (операция не хорошо подходит для анимации). В частности, если крайний левый край анимированного объекта содержит какие-либо пиксели «изменения», или если изображение непосредственно справа от объекта содержит какие-либо пиксели «изменения», то эти значения «Удержание и изменение» должны быть пересчитаны. Попытка переместить объект по экрану (например, с использованием блиттера ) создаст заметную окантовку на левой и правой границах этого изображения, если только графика не предназначена для предотвращения этого. Чтобы избежать пересчета значений Hold-and-Modify и обхода окаймления, программист должен был бы гарантировать, что крайний левый пиксель каждого объекта блиттера, а крайний левый пиксель каждой строки игрового поля прокрутки является «заданным» пикселем. Палитра должна быть спроектирована так, чтобы включать в себя каждый такой крайний левый пиксель. В качестве альтернативы, отображение HAM может быть анимировано путем генерации значений пикселей с помощью процедурной генерации, хотя это обычно полезно только для синтетических изображений, например, эффекты «радуги», используемые в демонстрациях.

Примечание. однако, эта функция «Удержание и изменение» применяется только к пикселям игрового поля. 128 пикселей данных спрайта (в режиме DMA) на строку сканирования по-прежнему доступны для размещения поверх игрового поля HAM.

Реализации

Режим HAM исходного набора микросхем (HAM6)

Режим HAM6, названный в честь 6 битов данных на пиксель, был представлен с Исходным набором микросхем и был сохранен в более поздних версиях Enhanced Chip Set и Advanced Graphics Architecture. HAM6 позволяет одновременно отображать до 4096 цветов с разрешением от 320 × 200 до 360 × 576.

Кодирование HAM6 использует шесть битов на пиксель: два бита для управления и четыре бита для данных. Если оба управляющих бита установлены в ноль, четыре оставшихся бита используются для индексации одного из 16 предварительно установленных регистров цвета, действуя аналогично обычной индексированной битовой карте. Три других возможных шаблона управляющих битов указывают, что следует использовать цвет предыдущего пикселя (слева) на строке развертки, а вместо этого следует использовать биты данных для изменения значения красного, зеленого или синего компонентов. Следовательно, есть четыре возможности:

  • Установить : использовать 4 бита данных для индексации цвета из 16 цветовой палитры. Используйте этот цвет для этого пикселя.
  • Изменить красный : удерживайте зеленый и синий компоненты цвета предыдущего пикселя. Используйте 4 бита данных в качестве нового компонента красного цвета этого пикселя.
  • Изменить зеленый : удерживайте компоненты красного и синего цвета предыдущего пикселя. Используйте 4 бита данных в качестве нового компонента зеленого цвета этого пикселя.
  • Изменить синий : удерживайте компоненты красного и зеленого цвета предыдущего пикселя. Используйте 4 бита данных в качестве нового синего компонента цвета этого пикселя.

Аналогичный режим, HAM5, также доступен, но он довольно бесполезен. В HAM5 шестой бит всегда равен нулю, поэтому может быть изменен только компонент синего цвета.

Режим Sliced ​​HAM (SHAM)

Исходный набор микросхем Amiga включал в себя вспомогательный чип, известный как "Copper". "который обрабатывает прерывания и другие временные и служебные обязанности независимо от ЦП и видеосистемы. Используя Copper, можно изменять регистры набора микросхем или прерывать работу ЦП в любой координате дисплея синхронно с видеовыходом. Это позволяет программистам использовать код Copperlist или CPU для видеоэффектов с очень низкими накладными расходами.

Используя этот метод, программисты разработали режим Sliced ​​HAM или SHAM, также известный как динамический HAM . SHAM изменяет некоторые или все регистры цвета на выбранных линиях сканирования, чтобы изменить палитру во время отображения. Это означало, что каждая строка развертки может иметь свой собственный набор из 16 основных цветов. Это устраняет некоторые ограничения, вызванные ограниченной палитрой, которую затем можно выбрать для каждой строки, а не для изображения. Единственными недостатками этого подхода являются то, что Copperlist использует дополнительные тактовые циклы ОЗУ чипа для изменений регистров, что изображение не является только растровым, и дополнительная сложность настройки режима SHAM.

Этот метод не ограничивается HAM, он также широко использовался с более традиционными графическими режимами машины. Dynamic HiRes использует аналогичную технику изменения палитры для получения 16 цветов на строку в режимах высокого разрешения, тогда как HAM ограничивается низким разрешением, но допускает как 16 индексированных цветов, так и их модификации.

Идея SHAM устарела, когда HAM8 был представлен с набором микросхем AGA, поскольку даже неразрезанное изображение HAM8 имеет гораздо большее цветовое разрешение, чем нарезанное изображение HAM6. Однако SHAM остается лучшим доступным режимом HAM на Amigas с исходным чипсетом или набором микросхем ECS.

Режим HAM с расширенной графической архитектурой (HAM8)

С выпуском Advanced Graphics Architecture (AGA) в 1992 году исходный режим HAM был переименован в «HAM6», и был введен новый режим «HAM8» (пронумерованный суффикс представляет битовые плоскости, используемые соответствующим режимом HAM). С AGA вместо 4 битов на компонент цвета Amiga теперь имела до 8 битов на компонент цвета, что давало 16 777 216 возможных цветов (24-битное цветовое пространство ).

HAM8 работает так же, как HAM6, используя два «управляющих» бита на пиксель, но с шестью битами данных на пиксель вместо четырех. Операция набора выбирает из палитры из 64 цветов вместо 16. Операция изменения изменяет шесть старших битов красного, зеленого или синего цвета - два младших бита цвета не могут быть изменены с помощью этой операции и остаются такими, как было установлено последней операцией установки. По сравнению с HAM6, HAM8 может отображать на экране гораздо больше цветов. Максимальное количество цветов на экране с использованием HAM8, как широко сообщалось, составляет 262 144 цвета (18-битное цветовое пространство RGB). Фактически, максимальное количество уникальных экранных цветов может быть больше 262144, в зависимости от двух младших битов каждого цветового компонента в 64-цветовой палитре. Теоретически все 16,7 миллионов цветов могут отображаться на достаточно большом экране и соответствующей базовой палитре, но на практике ограничения в достижении полной точности означают, что два младших бита обычно игнорируются. В общем, воспринимаемая глубина цвета HAM8 примерно эквивалентна высокому цветному дисплею.

Разрешение дисплея по вертикали для HAM8 такое же, как для HAM6. Горизонтальное разрешение может составлять 320 (360 с переразвертыванием), как и раньше, удвоенное до 640 (720 с переразвертыванием) или даже учетверенное до 1280 пикселей (1440 с переразвертыванием). Чипсет AGA также представил еще более высокое разрешение для традиционных режимов плоского дисплея. Общее количество пикселей в изображении HAM8 не может превышать 829 440 (1440 × 576) в режимах PAL, но может превышать 1310 720 (1280 × 1024) при использовании стороннего дисплейного оборудования (Indivision AGA средство устранения мерцания ).

Как и в исходном режиме HAM, экран HAM8 не может отображать произвольный цвет в любом произвольном положении, поскольку каждый пиксель зависит либо от ограниченной палитры, либо от двух цветовых компонентов предыдущего пикселя. Как и в исходном режиме HAM, дизайнеры могут также выбрать «нарезку» дисплея (см. Ниже), чтобы обойти некоторые из этих ограничений. Режим HAM7 также доступен, но широко не используется.

Эмуляция HAM

HAM уникальна для Amiga и ее отдельных наборов микросхем. Чтобы обеспечить прямую визуализацию устаревших изображений, закодированных в формате HAM, были разработаны программные эмуляторы HAM, которые не требуют оригинального оборудования для отображения. Версии AmigaOS до 4.0 могут использовать режим HAM при наличии собственного чипсета Amiga. AmigaOS 4.0 и выше, разработанная для совершенно другого оборудования, обеспечивает эмуляцию HAM для использования на современном громоздком графическом оборудовании. Выделенные эмуляторы Amiga, работающие на чужом оборудовании, могут отображать режим HAM путем эмуляции аппаратного обеспечения дисплея. Однако, поскольку никакая другая компьютерная архитектура не использовала технику HAM, просмотр изображения HAM на любой другой архитектуре требует программной интерпретации файла изображения. Точное декодирование на основе программного обеспечения даст идентичные результаты, не считая различий в точности цветопередачи между настройками дисплея.

Однако, если цель состоит в том, чтобы просто отобразить изображение SHAM на платформе, отличной от Amiga, требуемые значения цвета могут быть предварительно рассчитаны на основе записей палитры, которые запрограммированы через медный список, независимо от изменяется ли палитра в середине строки развертки. Всегда возможно преобразовать изображение HAM или SHAM без потерь в 32-битную палитру.

Сторонние реализации HAM

Устройство, производимое Black Belt, известное как HAM-E, могло создавать изображения с глубиной цвета HAM8 при низком горизонтальном разрешении с Amiga с оригинальным набором микросхем.

Amiga будет настроена на создание изображений с высоким разрешением (640 пикселей в ширину, 720 с переразвертыванием). Это потребовало использования четырех битовых плоскостей со скоростью 70 нс на пиксель. В первых нескольких строках изображения закодирована информация для настройки блока HAM-E. Затем каждая пара пикселей кодировалась информацией для блока HAM-E, который преобразовывал информацию в один пиксель 140 нс (генерируя изображение шириной 320 пикселей или 360 пикселей с пересканированием при глубине цвета восемь битовых плоскостей). Таким образом, качество HAM-E было сопоставимо с качеством изображения HAM8 с низким разрешением. В методе HAM-E используется тот факт, что изображение высокого разрешения с четырьмя битовыми плоскостями обеспечивает на треть больше пропускной способности памяти и, следовательно, на треть больше данных, чем изображение низкого разрешения с шестью битовыми плоскостями.

См. Также
  • Портал Amiga
Ссылки
Дополнительная литература
  • Спецификация для расширенного набора микросхем Amiga (AA), Commodore-Amiga
Внешние ссылки
  • Анимированная демонстрация, визуализированная в режиме HAM: Версия HAM-6 и версия HAM-8 (требуется Java ).
Последняя правка сделана 2021-05-23 04:02:57
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте