Смена палитры

Материал из Posmotre.li
Перейти к: навигация, поиск
Ниндзя из Mortal Kombat
Рисунок в неверной палитре — частый глюк тех времён.

Путь от двух чёрно-белых цветов к 16 миллионам «истинных» был долог.

Что означает «M цветов из N возможных»? Запоминаем в какой-то таблице (палитре) R, G и B для каждого из M цветов. В кадровом буфере хранятся не R, не G и не B, а номер цвета — 1-й, 2-й и так далее.

А теперь внимание! Что будет, если в палитре поменять цвет номер 3? Это значит, всё, что было 3-го цвета, перекрасится! Грубо говоря, посылаем в порт пару байтов — и получаем масштабную перекраску всего на экране.

Разумеется, это не могло не заинтересовать игроделов. Так, например, делали всякие вспышки экрана и эффекты отравления. Удачно подменив палитру, можно небольшими силами создать иллюзию богатой игры. Уже на первых машинах встречаются одинаковые спрайты разных цветов. В Super Mario Bros. кустик и верхушка облака — одна и та же плитка, но разных цветов.

Бывает и другой вид смены палитры: на лету заменяем 3, например, на 23 — и всё, что было 3-го цвета, станет 23-го. Несчастных 256 байтов на таблицу подмены. Это практиковалось в Mortal Kombat (скажем, 64 цвета на первого бойца, и ещё 64 — на второго), в Doom и во всех стратегиях (чтобы рисовать опознавательные знаки).

Именно по причине лёгкой смены палитры в играх надолго задержались 8-битные цвета: StarCraft (1998), Grand Prix 3 (2000 — правда, только в программном рендеринге).

Заметим, что пока домашние компьютеры и приставки расширяли графическую палитру плитками и знакоместами, деловые не пользовались этими дешёвыми трюками. IBM CGA имел 320×200×4 (да-да, всего четыре цвета, потому ниндзя в Saboteur II был красный, иначе никак не передашь ночь) и 640×200×2, зато никаких конфликтных зон. Macintosh был только монохромным, тоже два цвета.

И сейчас экономят работу художника, перекрашивая одно в другое. Если цветов единицы, делают копии атласа или текстуры. Если сколько угодно — идут на разные ухищрения (рисование-то сейчас аппаратное). Так, палитровые PNG состоят из несжатой палитры и сжатых данных, и если в памяти есть место на ту и другую разжатую картинку, можно построить два PNG с разными палитрами и загрузить тот и другой. А если памяти нет — пишут хитрые шейдеры.

[править] Для чего?

[править] Интересные примеры

Разумеется, можно включать и современные игры, где кто-то — перекрашенная версия кого-то. Но поскольку этого добра завались, пишите только самое интересное!
Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты