Постфильтр
«22-битный цвет»… «постфильтр»… Эти лозунги от компании 3dfx нам известны уже давно. Ещё на заре аппаратной 3D-эры революционный Voodoo Graphics обладал оптимизированным 16-битным цветом. Но как, где и почему он оптимизирован, было неизвестно. Развитие шло, и только при появлении игр с реально заметной разницей между 16-битным и 32-битным цветом некоторые пользователи стали замечать, что картинка, которую дает Voodoo3, у них на мониторе и тот же скриншот различаются. Тогда-то и вспомнили и про 22-бита, и про постфильтр. Мы постараемся разобраться, как реализуется 22-битный цвет, зачем он нужен, где находится постфильтр и насколько эффективен оптимизированный 16-битный цвет, в сравнении с обычным 16-битным цветом и 32-битным цветом. Самый популярный видеочип со встроенным постфильтром — естественно Voodoo3. Его и примем за объект рассмотрения. Хотя постфильтр — это некоторая технология увеличения качества графики, и единственная связь этой технологии и фирмы 3dfx заключается в том, что именно эта фирма впервые реализовала постфильтр в своих чипах. Технология является открытой, и не исключено, что ещё какая-нибудь фирма разработает видеочип со встроенным постфильтром.
В последнее время постфильтр несколько потерял свою актуальность, особенно в свете того, что новые карты 3dfx — Voodoo4 и Voodoo5 поддерживают 32-битный цвет. Но у них же и остался 16-битный цвет, а в нем постфильтр опять-таки реализован. С другой стороны, в то время как 3dfx использует оптимизированный 16-битный цвет, ATi, похоже, вообще бросила 16-битный цвет и сосредоточилось на 32-битном. А та же nVidia держится в середине, и «дает» чистый 16-битный цвет и чистый 32-битный. Кто, из них прав, не нам судить. А мы приступим к рассмотрению постфильтра.
Глубина цвета
16-бит, 24-бита, 32-бита, True Color, High Color… Что всё это значит? Те, кто знает ответ на этот вопрос, могут перейти к следующей части статьи. Для всех остальных мы объясним, «кто есть кто».
Итак, эра компьютерной графики началась с монохромного монитора. Там всё было просто. Один бит на цвет. Единица — белая точка, ноль — черная. Один байт — восемь пикселей (вот экономия-то где!). Следующий шаг — цветные мониторы. Но каким образом — вспомнить страшно. Два бита на пиксель, или четыре цвета. Дальше уже легче. 4 бита на цвет, итого 16-цветовой режим. После — 256 цветов (один байт — одна точка). И наконец — 16-бит, впоследствии названный High Color. Но бит 16, а цветовых каналов 3. 16 на 3 не делится. А 15 на 3 делится. Первые реализации High Color имели следующую организацию цвета пикселя:
Младший (нулевой) бит не использовался. А на каждый цветовой канал приходилось по пять бит. Используя три цветовых канала (RGB) можно получить любой цвет (например, желтый цвет получается из соотношения 1:1:0, белый — 1:1:1, а черный 0:0:0).
Но пересылка и хранение цвета пикселя происходило по 2 байта, а это 16 бит, а не 15. Вскоре, нашли применение всем 16 битам. И организация цвета пикселя сменилась:
Получилось по 5 бит на красный и синий цветовые каналы, и 6 бит на зеленый. Таким образом, наиболее точно представляется зеленый цветовой канал. Почему именно зеленый? Да потому, что человеческий глаз наиболее чувствителен к перепадам зеленого цвета. Эта модель цвета пикселя High Color используется до сих пор.
Но High Color недостаточно точная система представления цвета. Человек видит около 10 миллионов цветовых оттенков, а High Color режимы передают только до 65536 цветов. Для отображения 10 миллионов цветов используются True Color режимы (отсюда и название — реальный цвет). True Color режимы для кодировки цвета используют 24-бита — по байту на цветовой канал. Это позволяет закодировать до 16 777 216 цветов, что более чем в полтора раза перекрывает естественный предел в 10 миллионов. Некоторые карты имеют 24-битное (3 байта) представление True Color цветов. Но хранить, искать и передавать информацию по три байта достаточно неудобно (и аппаратно, и, в первую очередь, программно). Деление на три трудоемко, а делить на число, образованное степенью двойки, легко. Поэтому подавляющее большинство видеокарт имеет 32-битное представление цвета. Не стоит думать, что оно более точное, чем 24-битное. Так как 24-бита хватает с избытком, то в 32-битном представлении так же на каждый цветовой канал выделяется по одному байту, а младший байт (разряды 0-7) не используется, или хранит системную или пользовательскую информацию, но реально в отображении цветов не участвует.
Такие же цветовые режимы используются и в 3D-графике. Так конечное изображение (2D) формируется либо в 16-битном, либо в 32-битном цвете. В процессе рендеринга участвуют текстуры, которые, по сути дела, являются 2D-изображениями. Обычно видеоакселераторы воспринимают 16-битные или 32-битные текстуры. Формат хранения цвета пикселя каждой текстуры совпадает с рассмотренными форматами. В 32-битной текстуре младший байт (разряды 0-7) может содержать информацию о прозрачности данной точки текстуры, образуя таким образом буфер шаблонов. В 16-битной текстуре буфер шаблонов может быть однобитным, и тогда на цветовые каналы остается 15 бит. Если недостаточно однобитного буфера шаблонов, то используют схему 4 бита на красный, 4 бита на зеленый, 4 бита на синий и 4 бита на уровень прозрачности. Конечно же, такого качества недостаточно и поэтому с текстурами, содержащими буфер шаблонов рекомендуется работать в 32-битном цвете.
Естественно, 16-битный и 32-битный режимы взаимозаменяемы. Только 16-битный цвет дает более низкое качество. 16-битную картинку без потери качества можно отобразить в 32-битном режиме. Для этого каждому цветовому каналу 32-битного цвета ассоциируется цветовой канал 16-битного цвета, который имеет меньшую разрядность. Каждый цветовой канал 16-битного записывается в верхнюю часть цветового канала 32-битного цвета.
Естественно, что процесс преобразования 32-битной картинки в 16-битную происходит с потерей качества. Так биты 27-31 из формата 32-бита записываются в биты 11-15 16-битной картинки. Далее схема перевода аналогична. Таким образом, теряются младшие биты каждого цветового канала и дискретность зеленого канала возрастает в четыре раза, а красного и синего канала возрастает в восемь раз.
Какой глубины цвета достаточно?
Для 2D изображения — все просто. High Color — приемлемое качество, True Color — идеальное. 2D изображение поступает на экран уже в готовом виде, а 3D рендерится в реальном времени. Когда 3D картинка рендерится в один-два прохода, то в High Color мы получаем такое же приемлемое качество, как и в 2D. Качество и сложность 3D-игр возрастает, появляется множество эффектов в виде дыма, тумана, облаков, огня, лучей света и т.п. Такие эффекты обычно накладываются в несколько проходов через альфа-канал на непрозрачные объекты.
Допустим, что в результате рендеринга на части экрана создался непрозрачный объект, например стена.
Теперь, пусть на этот сегмент будут наложены ещё две прозрачные «фигуры» (например освещение и дым). В результате чего должно получиться следующее:
Однако, генерация разных объектов (типа стена и дым) в пределах одного сегмента происходит за несколько проходов. В нашем случае это генерация в два прохода. В результате чего мы получаем следующую картину:
В результате чего мы получаем близкое к идеальному изображение, но нетрудно заметить отличие.
И такое различие заметно уже при двухпроходном рендеринге. А что же будет при четырехпроходном? Но самое страшное не в этом. При смешивании цветов часто получаются нецелые значения (например, два цвета 6 и 7 при смешивании с альфа-коэффициентом 0.5 дают результат 6.5). Дело в том, что в рассмотренных нами примерах мы постоянно округляли полученные значения до ближайшего целого. Большинство же видеокарт в алгоритме смешивания не используют избыточную логику, вследствие чего округления не происходит и результат получается удручающий:
Сравним все три полученные результаты — однопроходный с округлением (идеальный), двухпроходный с округлением и двухпроходный без округления:
Как видим, наиболее отличный от идеала последний. В первых двух случаях границы между цветами максимально плавные, тогда как в последнем такое правило нарушается и уже сам по себе неидеальный 16-битный цвет выдает ещё более грубую картинку. Большинство видеокарт в 16-битном режиме не используют округление при смешивании, однако для повышения качества используют технологию дизеринга (а некоторые даже не используют дизеринг).
В 32-битном цвете ситуация немного другая. Некоторые видеокарты последних поколений используют избыточную логику для округления результата при смешивании цветов и качество графики при этом получается очень высоким. Другие видеокарты используют все 32 бита, где, как и в обычной схеме, в старших 24 битах хранятся реальные цвета, а биты избыточности (дробные части цветов) хранятся в младших 8 битах. Такая схема наиболее предпочтительна, но, к сожалению, просто мизерная часть современных видеоакселераторов поддерживают данную схему. И, наконец, некоторые видеокарты (их, слава богу, меньшинство) используют схему смешивания без округления с дизерингом (как и в 16-битном цвете). Есть ещё несколько схем реализации смешивания цветов, но я лично не встречал видеокарты, реализующие подобные алгоритмы, поэтому рассматривать их не будем.
В итоге, уже при двухпроходном рендеринге мы наблюдаем некоторое отклонение от нормы как в 16-битном, так и 32-битном цвете. Современные программы создают сцену за относительно малое число проходов, и для нас 32-битный цвет кажется идеальным. Но, с усложнением сцен мы сможем увидеть недостатки и в 32-битном цвете. А такое будущее уже не за горами, — уже в DOOM-3 планируется рендеринг с наложением 6-8 текстур на треугольник, и это без учета дополнительных эффектов типа блики, дым, огонь, облака и им подобных. И при реализации трилинейной фильтрации используются два текстурных модуля акселератора, а это значит, что при рендеринге такого «сложного» треугольника придется накладывать уже 12-16 текстур, а ни один современный акселератор в один проход этого не сделает. Сам же Джон Кармак, постоянно работая с главными разработчиками видеочипов, предлагает в будущих проектах использовать 64-битный цвет. Это поможет помимо 8 бит реального цвета на цветовой канал хранить ещё и 8 бит дробной части для каждого цветового канала, тем самым обзавестись идеальным качеством. 64-битный цвет дает огромный запас по избыточности, что делает его высококачественным ещё как минимум на шесть лет. Но, к сожалению, ни один современный непрофессиональный видеочип не поддерживает 64-битного цвета, и в ближайшем будущем такого видеочипа не ожидается.
Как изображение из видеопамяти попадает на экран
Те, кто знает ответ на этот вопрос, могут переходить к чтению следующей части. Остальных же прошу слушать внимательнее, потому что мы все ближе и ближе подходим к сущности работы постфильтра.
Итак, идея в том, что обычный CRT-монитор получает аналоговые сигналы, а в памяти видеоадаптера информация хранится в цифровом виде. Front Buffer должен постоянно и непрерывно показываться на мониторе. А его показом занимается RAMDAC. А точнее, последовательным преобразованием цифрового значения каждой его точки в аналоговый сигнал. Обычный RAMDAC состоит из двух основных блоков. Первый — блок выборки из памяти. Он выбирает из участка памяти, где храниться Front Buffer, последовательно цвета всех пикселей (для упрощения не будем рассматривать 1-, 2-, 4- и 8-битные цветовые режимы). Обычно он же временно сохраняет эти данные в кэше, что ускоряет процесс обращения к памяти. Главная задача этого блока постоянно предоставлять информацию о цветах следующего пикселя в порядке следования луча по экрану монитора — слева направо, сверху вниз. Следующий блок — это DAC (по-русски — ЦАП). Он синхронизируется с монитором, и каждый такт выводит комбинацию аналоговых сигналов, соответствующих цвету точки, полученному от предыдущего блока. Казалось бы, все просто. Но, как мы помним, видеокарта может работать в разных цветовых режимах. Поэтому большинство видеоакселераторов содержат в блоке DAC несколько наборов логики. Чаще всего это DAC8, DAC15, DAC16, DAC24 и DAC32 (DAC8 отвечает за палитезированные режимы и поэтому работает как с 256-цветовым режимом, так и с 16-, 4- и 1-цветовым). Некоторые видеокарты могут не содержать некоторые наборы (например, DAC15 или DAC24).
Вот и всё. Вот так работает RAMDAC, и так часть видеопамяти под названием Front Buffer попадает к нам на экран.
Дизеринг
Теперь перейдем к технологии дизеринга (dithering). Так как она нашла свое основное применение именно в 16-битном цвете, то его и рассмотрим. Каждый текстурный конвейер в видеочипах, работающих с High Color режимом, имеет разрядность 24 бита, т.е. по 8 бит на цветовой канал. Такую же разрядность имеет и модуль смешивания цветов. Эффективная же их разрядность 22-бита (знакомо?). Это значит, что какую бы разрядность не имели эти модули, на их выходе реально используются только 22 бита. То есть 7 бит на красную, 8 бит на зеленую и 7 бит на синюю составляющие. Но, как мы помним, мы сейчас генерируем 16-битную картинку, а это значит, что 6 бит у нас лишние. Их можно просто отбросить. Если сделать это, то есть при пересылке не пересылать два младших бита от каждой цветовой составляющей, то мы получим 16-битную картинку без дизеринга. А выглядит это так:
Бяка, одним словом. Слишком явные границы между соседними цветами. А ведь смешивание происходит с более высокой точностью, и именно эту точность мы «отбрасываем» вместе с шестью «лишними» битами. А ведь их можно учитывать. И делается это очень просто. Рассмотрим пример для красной составляющей (как мы видим, наша картинка именно красного цвета, а на самом деле это кусок неба из Quake3:Arena). После генерации реального цвета точки на части выходов блока смешивания появляется 8 бит определяющие красный цвет. Из них мы точно берем старшие шесть бит. Например, эти шесть бит определяют значение 27. Но нам так же интересны и оставшиеся два бита. Если там ноль, значит мы имеем дело с реальным цветом 27, его и ставим. Если два младших бита равны единице, то реальный цвет 27.25, т.е. на четверть больше. И тогда, если точка ставиться на нечетную координату экрана X и четную координату экрана Y, то на это место ставится цвет на единицу больший по интенсивности, в нашем случае 28. Таким образом, на поле из цвета 27 каждая четвертая точка имеет значение 28, т.е. среднее значение цвета поля получается 27.25, что нам и нужно. Если два младших бита, равны 10b (двум), то реальный цвет точки 27.5. Таким образом, уже каждая вторая точка должна иметь значение на единицу больше. Условие усложняется. Если точка ставится на нечетную координату экрана X и четную координату экрана Y, или на четную координату экрана X и нечетную координату экрана Y, то на это место ставится цвет на единицу больший по интенсивности (у нас 28). Аналогично строится условие, в случае, когда младшие два бита равны 11b (тройке). Если точка ставится на нечетную координату экрана X и четную координату экрана Y, или на нечетную координату экрана X и четную координату экрана Y, или на четную координату экрана X и четную координату экрана Y, то на это место ставится цвет на единицу больший по интенсивности. В этом случае на поле из цвета 28 остается каждая четвертая точка 27. И наша картинка (часть неба Quake3) будет выглядеть уже иначе:

Это та же картинка, но уже с дизерингом. Эта картинка ещё и увеличена, для того чтобы была отчетливее видна сеточка дизеринга. В реальном масштабе сеточка заметна ещё меньше, так как глаз видит уже достаточно однородное поле. Отодвиньтесь дальше и вы сами увидите это.
Алгоритм дизеринга можно представить и графически. Таблица ниже показывает, как изменяются четыре соседних точки в зависимости от двух младших битов. В позициях точек указано приращение к базовому цвету, записанному в старших битах.
Такая схема дизеринга называется Ordered. Именно её и использует Voodoo3. Существуют и другие способы дизеринга (другие маски, алгоритмы), но именно Ordered наиболее эффективен, если в видеочипе встроен постфильтр.
Постфильтр
Посмотрим ещё раз на небо Quake3, а точнее на его часть.

Мы видим, как работал дизеринг, и можем с большой уверенностью сказать, какие цвета на самом деле были на выходе блока смешивания, и со стопроцентной вероятностью сказать какие цвета «увидит» наш глаз (не забываем о том, что глаз смешивает соседние невыделенные цвета). Если мы можем определить, какие цвета должны стоять на месте каждого поля из точек, почему это не может видеокарта? Так заставим же её это сделать. Блок DAC16 модуля RAMDAC читает именно такую картинку. Естественно в его кэш поступает не вся картинка сразу, а только несколько горизонтальных линий. Минимальное количество линий две. Как известно, Voodoo Graphics использует маску постфильтра 1×4. Модели 3dfx, начиная с Voodoo2 и выше, используют маску 2×2. DAC16, используя дополнительную логику, сравнивает соседние четыре пикселя, и увидев знакомую «шахматку» смешивает эти цвета. Естественно смешивается не любые четыре соседних цвета, а только те, которые могли создаться дизерингом. То есть дополнительная логика ищет цвета отличающиеся друг от друга на малое значение. Найдя такие, она проверяет их на соответствие таблице Ordered. Зачем? Ну, представим себе, что логика нашла четыре точки, три из которых имеют одинаковый цвет, а один чуть светлее. Естественно таких комбинаций может быть четыре. Но только одна из них могла быть вызвана постфильтром. Эта более светлая точка должна стоять на координатах с нечетным значением X и четным значением Y. Если условия четности выполняются, то логика считает, что это поле продукт дизеринга и смешивает четыре цвета с повышенной точностью. Таким образом, возможно восстановление двух потерянных бит на выходе блока смешивания и восстановления их с точностью в 22 бита. Дополнительная логика DAC16 и называется постфильтром. Постфильтр производит обработку изображения «на лету» и поэтому не влияет на производительность системы. Для повышения качества постфильтрация производится для каждого цветового канала независимо, а не для всего цвета пикселя. Вероятность смешивания цветов, полученных не дизерингом, крайне мала (на практике меньше одного процента), и даже если смешивание таких цветов произойдет — ничего в этом страшного нет, так как наш глаз так и так был бы обманут и самостоятельно смешал бы соседние цвета. Таким образом, постфильтр — это аппаратно-программный комплекс повышения визуализации графического изображения.
В общих словах схема работы такая. Внутренний рендеринг видеокарты Voodoo3 происходит с 22-битной точностью цвета. При этом в память видеокарты (во Frame Buffer) записывается 16-битная отрендеренная картинка с использованием схемы дизеринга на основе признаков четности координат. После завершения рендеринга RAMDAC читает готовое изображение в кэш и на основе признаков ближних цветов для каждого цветового канала и признаков четности координат восстанавливает 22-битный цвет. На выходе RAMDAC получается набор аналоговых сигналов, которые поступают на монитор. Всего комбинаций аналоговых сигналов — 4194304 (произведенные от 22-битов). Это более чем в два раза меньше, чем способен различить человеческий глаз, но гораздо больше, чем реальный 16-битный цвет (в 64 раза точнее).
Уровень (глубина) постфильтрации
Все просто, не так ли? С учетом признаков четности смешиваются мало отличающиеся цвета с маской 2×2. А что значит мало отличающиеся? Для конечной картинки созданной без наложения нескольких текстур на один участок экрана или с наложением в один проход — все понятно. Разница между отдельными цветовыми каналами в пределах одного поля точек, созданных в результате дизеринга, будет равно единице (см. таблицу схемы Ordered выше). А если наложение происходит за несколько проходов? При использовании буфера шаблонов на каждый цветовой канал текстуры приходится по 4 бита, а это значит, что дискретность (а следовательно и разница между «соседними» цветами) возрастет в два/четыре раза. Разницу (глубину) между цветами, которые постфильтр должен считать соседними, устанавливают драйверами. Это значение называется уровнем или глубиной постфильтра. Глубина постфильтра Voodoo3 равна восьми. Кроме того, на создавшийся регион с некоторой сеткой дизеринга (например, светлые единичные точки) может быть наложено изображение, имеющее другую сетку (например, темные единичные точки). Поэтому при более глубоком уровне фильтрации обычной таблицы Ordered недостаточно и необходимо создать новую с производными сетками, получившихся в результате наложения различных и одинаковых сеток, а так же в результате более грубого представления прозрачных текстур.
Таблица сеток постфильтрации с глубиной восемь очень большая, и для того, чтобы мы просто имели представление о полном наборе сеток, ниже приводится такой для постфильтра с глубиной фильтрации равной трем.
При глубине постфильтра равной трем — вот все комбинации четырех соседних пикселей, которые могут создаться в результате дизеринга однопроходного и мультипроходного наложения. Все остальные комбинации создаются не дизерингом. Аналогично составляется таблица соответствия для постфильтрации с другим уровнем (например, для уровня восемь). Алгоритм поиска и сравнения маски упрощается тем, что из четырех соседних цветов, находящейся в маске слева снизу — самый яркий, а справа снизу — самый темный. Как уже говорилось, сравнение происходит для каждого цветового канала независимо, что положительно сказывается на качестве общей картинки. Естественно, чем выше уровень фильтрации, тем с большей глубиной наложения текстур она происходит. Многие замечали в 16-битном цвете при наложении на одно и то же место нескольких полупрозрачных текстур, появляющуюся сеточку дизеринга. Чем больше произошло наложений, тем заметнее сеточка (увеличивается разность между соседними цветами). Например, дым от ракеты в Quake3. Если Voodoo3 производит постфильтрацию с уровнем восемь, то такой постфильтр уберет сеточку на месте наложения максимум восьми текстур. Однако, чем выше уровень фильтрации, тем выше вероятность смешивания соседних цветов, получившихся не в результате дизеринга. Экспериментально была найдена оптимальная глубина постфильтра. Как ни странно, она равна восьми. При уменьшении уровня фильтрации проявляется сеточка на эффектах. Уже при уровне равным шести дым от ракет в Quake3 был явно решетчатым. При увеличении уровня — появляются артефакты, указывающие на смешивание цветов, которые не должны смешиваться и общая четкость картинки резко ухудшается. Дальнейшее рассмотрение работы постфильтра будем проводить для глубины равной восьми.
Полезность постфильтра
Итак, с теорией разобрались, а как же дела обстоят на практике? Посмотрим на следующие скриншоты. Верхнее изображение — чистый 16-битный цвет, а нижнее с постфильтрацией.


Посмотрим на наиболее интересные фрагменты изображения (начиная справа и по часовой стрелке), сравнивая изображения без постфильтрации (справа) и прошедшие через постфильтр (слева).


Здесь можно отметить отсутствие решетки на небе и на рамке меню. Это же привело к увеличению размеров пикселей. Но в целом картинка смотрится несколько лучше, так как помимо увеличения размера пикселей, разница между границами цветов уменьшилась, так как фактически количество цветов увеличилось в четыре раза. Картинке стала присуща плавность границ между соседними цветами, несмотря на укрупнение пикселей на этих границах. Границы между соседними объектами не изменились. Рамка меню нисколько не изменила свою форму. Сильно заметная сетка на прозрачной части меню была полностью убрана, что существенно отразилось на увеличении качества.


Обратим внимание на цифру «9». Избавившись от решетки, покрывающей девятку, постфильтр не сумел избавиться от «полосатости» цифры. Визуально качество практически не изменилось, а возможно стало немного выше. Полностью убрать решетку со шлема не удалось. Однако даже обработка, прошедшая на части шлема, сделала изображение более плавным, в частности исчезли выбивающиеся из общей картины единичные пиксели. На заднем фоне ворота телепорта (справа) имеют определенный рисунок, который ничуть не пострадал в результате фильтрации, опять же приобретая определенную плавность цветов. Левая часть заднего фона имеет более сложный рисунок, и с ним постфильтр уже не справился, хотя чисто субъективно отфильтрованная картинка мне нравится больше.


А вот тут картина неоднозначная. Да, решетка убрана, но частично. И эта частичность проявляется в виде отдельных пикселей другого цвета на равномерном фоне. Да и рамка меню несколько пострадала. Границы формы стали немного угловаты. Но, фрагмент увеличен, и на картинке «в натуре» эти погрешности особо не заметны. К ним нужно присматриваться, чтобы их найти. Такие явные артефакты проявляются только на полупрозрачных объектах, полученных многократным наложением, а эти объекты в современных программах создают преимущественно динамические эффекты. Поэтому поймать артефакты очень тяжело. Так, (при снятой паузе) телепорт переливался множеством цветов, и в целом заметить ошибки постфильтрации просто не успеваешь.


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


Трудно найти отличия, однако то, что снизу мне нравиться больше.


Задний план, а так же реализация дыма и вспышек плазмы с постфильтрации выглядят более эффектно.


А вот этот портал постфильтру обработать удалось несколько хуже, чем предыдущий, однако визуальное качество картинки всё же повысилось.


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


Как видим, этот артефакт присутствует, однако, на не отфильтрованном фрагменте разглядеть дополнительные детали все же не удается. То есть постфильтр не причастен к факту размытия картинки. Тем более, что на расположенной чуть дальше нечеткого пола стены в точности сохранены все детали. То, что постфильтр замыливает изображение — оказалось не больше чем очередным мифом.
Спрашивается, зачем всё это нужно? Не лучше ли использовать настоящий 32-битный цвет? На самом деле не всегда лучше. Как известно, главная болезнь современных видеокарт — малая полоса пропускания шины данных. А для 16-битного цвета необходима полоса в два раза уже, чем для 32-битного. Таким образом, там, где видеокарта в 32-битном цвете уже не справляется (а такое ПО уже существует для самых мощных современных ускорителей) её можно перевести в 16-битный цвет. И приятно, если в этом режиме работает постфильтр, так как визуально качество картинки несколько увеличивается.
Однако я не могу не удержаться и не продемонстрировать насколько важен 32-битный цвет в серьезных сценах.


nVIDIA RivaTNT2 16-bit 3dfx Voodoo3 16-bit

nVIDIA RivaTNT2 32-bit
Действительно, за 32-битным цветом будущее. Но, возникает логичный вопрос, почему бы не использовать постфильтр и в 32-битном цвете. Ответ прост. Там он бесполезен. Не забываем, что постфильтр увеличивает количество цветов с 16-бит до 22-бит. Следовательно, в True Color режимах он будет увеличивать количество цветов с 24-бит до 30-бит, и даже если он будет включен, то человеческий глаз просто не увидит разницы.
Та же 3dfx сейчас увлеклась 32-битным цветом и перестала оптимизировать 16-битный цвет, а совершенствоваться ещё есть куда. Так, можно использовать другие маски (не Ordered), увеличить размер маски (хотя бы до 4×4, правда при этом придется существенно усложнить алгоритм фильтрации) и многое другое. Но, как говорилось, за 32-битным цветом будущее, и так как 16-битный цвет у 3dfx уже оптимизирован, им теперь со спокойной душой можно заняться 32-битным цветом. Очень жаль, что другие компании так и не обратили внимания на постфильтр в 16-битном режиме, ведь при минимуме затрат это может привести к существенному увеличению качества 16-битной графики. Ведь процесс перехода к эре True Color игр будет проходит плавно и ещё достаточно долгое время. Для тех кому постфильтр мешает, можно просто отключить его в драйверах. Драйверами теоретически можно и изменять глубину фильтрации, однако 3dfx не включила эту опцию в драйверах (может и к лучшему).
Возникает последний вопрос. Есть ли альтернатива постфильтру? Есть, и она уже существует. Это FSAA (антиалиазинг). При правильной реализации, конечно. FSAA может ещё много на что повлиять. Это избавление от постфильтра, алиазинга, бесплатная анизотропная фильтрация и многое другое. Пока же FSAA не бесплатен, можно довольствоваться постфильтром. Хотя все же будущее за FSAA. Но это уже совсем другая история…
Цветовая модель RGB
Чтобы синтезировать цвета на дисплеях ПК, телевизоров, телефонов и прочей техники показа графических данных, отобрали красный, зелёный и синий цвета. За счёт их смешивания получаются все другие цвета. Подобную модель именуют аддитивной — получаемой за счёт суммы.
На самом деле, именно эти цвета были подобраны неслучайно, всё дело в строении зрения человека. Глазная сетчатка содержит в себе три подвида колбочек, их максимумы чувствительностей возникают на красном, зелёном и синем областях спектра. Это иллюстрируется в следующей таблице:
| Вид колбочек | Вариация длин волн, нм | Наибольшая чувствительность, нм |
| Красные | 550-760 | ≈ 610 |
| Зелёные | 450-650 | ≈ 550 |
| Синие | 380-550 | ≈ 450 |
С помощью модели RGB формируется пространство цветов в формате единичного куба с осями R — красный элемент, G — зелёный элемент и B – синий элемент.

При рассмотрении текущей модели выдвигаются такие гипотезы:
- Всякая точка куба (r; g; b) характеризует конкретный цвет;
- Точка (0; 0; 0) характеризует чёрный цвет, точка (1; 1; 1) — белый. Вместе с тем линия (0; 0; 0)-(1; 1; 1) характеризует любые оттенки серого от чёрного до белого;
- В процессе передвижения по прямой от точки (0; 0; 0) до точки (r; g; b) возникают все оттенки яркости цвета (r; g; b) от наиболее тёмного до наиболее яркого;
За счёт квантования в компьютерных технологиях интенсивность цветовых элементов характеризуется с помощью целых, а не вещественных чисел. Для этого «единичные» отрезки на «красной», «зелёной» и «синих» осях разделяют на некоторые пронумерованные поддиапазоны. Цвет пикселя картинки, выводимый на экран, определяется с помощью трёх чисел, больших или равных нулю – номеров поддиапазонов, куда входит текущий цвет. Качество цветопередачи определяется числом отделяемых поддиапазонов.
Режимы True Color и High Color
Сейчас компьютерная техника для записи данных о цвете всякой точки цветной картинки в модели RGB получает три, при режиме True Color, или 2, при режиме High Color, байта.
Касательно первого варианта, для кодирования градаций яркости всякого главного цвета выделяется по одному байту: код 00000000 или 00 говорит о том, что такая составляющая не существует, а код 11111111 или FF определяет самую большую интенсивность текущего цветового элемента.
В общем и целом возможно кодирование 256 градаций яркости любого цветового элемента, в результате возникает возможность описания 256 · 256 · 256 = 2 8+8+8 = 2 24 = 16777216 цветов. Человек не способен различать превышающее это цветовое многообразие. В итоге видеорежим True Color характеризуется точной передачей настоящих оттенков.
Режим High Color характеризуется тем, что каждая точка кодируется 16-ю битами. Вместе с тем красные и синие элементы кодируются с помощью 5-ти бит, а зелёный элемент — 6-ти бит. Пять бит гарантируют представление по 32 градации яркости красного и синего цветов. Глаз человека скорее восприимчив к зелёному параметру цвета, поэтому под его шкалу отводится 6 бит, тогда 64 градации такого цвета сохраняются.
В сумме в таком режиме возможно представление 2 5+6+5 = 12 16 = 65536 цветов. Цвета картинок, которые сохраняются в режиме High Color, тоже кажутся достаточно реальными и удобны для глаза человека. Вместе с тем размеры таких файлов в полтора раза меньше, чем при применении режима True Color.
Глубина цвета i – число бит, которое применяется для записи и иллюстрации цвета при кодировании одного пикселя растровой графики или видеоизображения.
Палитра N – множество цветов, доступных для отображения картинки.
Такие величины взаимосвязаны с помощью выражения: N = 2 i .
Пример
Существует канал связи, который обеспечивает отправку данных со скоростью 16000 бит в секунду. Необходимо узнать, сколько секунд понадобится для отправки 256-цветной растровой картинки размером 800 × 600 пикселей по этому каналу.
Так как известна палитра – множество цветов, применяемых для отображения картинки, то можно посчитать глубину цвета – число бит для описания цвета одного пикселя.
256 = 2 i , i = 8 бит.
Тогда размер файла с картинкой следующий: 800 · 600 · 8 бит. Высчитывая время отправки такого файла, получаем:
Разбираемся с цветами, палитрами, фильтрами CSS и не только

Этот материал — карманный справочник о том, как работать с цветом в CSS и вебе в целом. Он начинается с теоретических основ и содержит множество инструментов и примеров работы с градиентами, анимацией, SVG и не только.
Статья будет полезна и новичку, и специалисту с опытом. За подробностями приглашаем под кат, пока у нас начинается курс по Frontend-разработке.
Огромная часть работы с цветом — это понимание того, что цвет в мониторах работает не так, как мы привыкли в детстве, когда смешивали краски. К примеру, краска и чернила принтера содержат крошечные частицы, — пигменты, которые смешиваются друг с другом и отражаются, чтобы представить цвет глазу. Так происходит субтрактивное смешивание цветов.
Чем больше цветов вы добавляете к исходному цвету, тем темнее он становится, пока не станет коричневым. Основные цвета принтера близки к привычным красному, жёлтому, синему, но смешивая цвета субтрактивно вы получите коричневый.
С другой стороны, на мониторах мы работаем со светом: когда все цвета смешиваются, они образуют белый цвет.
До знаменитого эксперимента Исаака Ньютона считалось, что цвет содержится в объектах, а не отражается или поглощается ими. Ньютон при помощи призмы доказал теорию о том, что солнечный свет состоит из нескольких цветов. Он разделил цвета призмой — получилась радуга.
Затем Ньютон попытался разделить синий цвет, но синий не разделился. Это означало, что цвет не находится внутри призмы, а, скорее, призма разделяет свет. То есть при аддитивном смешивании цветов в мониторе красный, зелёный и синий цвета могут использоваться, чтобы получить все цвета. При таком смешивании красный и зелёный цвета создают жёлтый.

Мониторы — это множество комбинаций кусочков света. Резонируя, они создают мириады других цветов. Разрешение — это количество отдельных цветных точек, известных как пиксели, которые содержатся на дисплее.
Художники использовали этот тип частоты света ещё до того, как у нас появились мониторы. Сёра и пуантилисты использовали красный и зелёный цвета, чтобы получить жёлтый, на таких картинах, как «La Grande Jatte» (хотя сам Сёра предпочитал термин «хромо-люминаризм»). Другие люди называют подход дивизионизмом.
Этот тип живописи был создан на основе убеждения, что оптическое смешение создаёт более чистый резонанс, чем традиционное субтрактивное смешение цветов пигмента.
Количество цветов, которые могут быть отображены одновременно, определяется битовой глубиной цвета. Если битовая глубина равна 1, мы можем получить два цвета, или монохром.
Битовая глубина 2 даст 4 цвета, и так далее, пока мы не достигнем битовой глубины 32, хотя обычно мониторы, отображающие веб-страницы, имеют плотность 24 битовой глубины и 16 777 216 цветов, — это True Color и альфа-канал.
True Color называется так потому, что наши глаза различают 10 000 000 уникальных цветов, а значит, 24-бит, безусловно, позволяет это. В этой 24-битной глубине по 8 бит отводится на красный, зелёный и синий цвета. Остальные используются для прозрачности или альфа-каналов.
Значения цвета
Последний раздел иллюстрирует, что rbga(x, x, x, y); передаёт информацию, но давайте разберём цветовые значения немного подробнее и покажем некоторые другие свойства и их использование. Цвета в канале RGB задаются в диапазоне 0-255.
Hex (шестнадцатеричные цвета)
Шестнадцатеричные цвета — это немного другой формат для представления значений тем же способом. И это, пожалуй, самый распространённый способ обозначения цвета в Интернете.
Если вы помните, что байт — это 8 бит, каждый цвет или число Hex представляет собой байт. Цвет задаётся в соответствии с интенсивностью его красного, зелёного и синего компонентов. Эти три значения называются триплетом.
Один байт представляет собой число в диапазоне от 00 до FF (в шестнадцатеричной системе счисления) или от 0 до 255 в десятичной системе счисления. Первый байт — красный, творой байт — зелёный, а байт 3 — синий.
Шестнадцатеричная система называется так потому, что в ней используется система оснований 16. В качестве значений используются диапазоны от 0-9 и от A-F, причём 0 — наименьшее значение, а F — наибольшее, то есть #00000 — чёрный, а #FFFFFF — белый.
Для триплетов с повторяющимися значениями можно устранить повторение, написав их сокращённо, например, #00FFFF становится #0FF . Если вы собираетесь работать с цветами глубже, немного лучше читается HSL.
Значения hsl работают с диапазонами, как и RGB, но вместо того, чтобы работать со значениями, соответствующими логике интерпретации монитора, значения hsl — это оттенок, насыщенность, светлота. Похоже на значения RGB, но диапазоны отличаются. Эта система основана на колориметрической системе Манселла (он был первым, кто разделил цвет на эти три канала, или создал трёхмерную систему, основанную на математических принципах, привязанных к человеческому зрению).

Трёхмерное представление HSL
Оттенок вращается на 360 градусов, полный круг, а насыщенность и светлота — это проценты от 0 до 100. Представьте себе колесо, в центре которого находится плотное и насыщенное содержимое. Эта демонстрация довольно хорошо отражает систему.
Если вы не особенно опытны в работе с цветом, hsla() позволяет использовать некоторые довольно простые правила для приятных эффектов для разработчиков. Подробнее об этом — в разделе “Генеративный цвет”.
Именованные цвета
Именованные цвета имеют репутацию неудобных из-за неточных названий.
Самые яркие, «знаменитые» примеры: тёмно-серый на самом деле светлее серого, а лайм и лайм-грин — совершенно разные цвета. Есть даже игра, где нужно угадать название цвета в вебе, созданная Крисом Хеилманном.
В давние времена chucknorris был кроваво-красным цветом (сейчас он поддерживается только в HTML, насколько я могу судить), это был мой любимый цвет.
Именованные цвета могут быть полезны в быстрой демонстрации, но обычно разработчики используют Sass или другие препроцессоры для хранения значений цветов в формате hex, rgba или hsla и сопоставления их с названиями цветов, используемых в компании.
Переменные цвета
Хорошая практика — хранить переменные цвета и никогда не использовать их напрямую, вместо этого отображая их на переменные с более осмысленными именами, вот так:
На момент написания этой статьи в браузерах Microsoft переменных не было. Препроцессоры CSS тоже поддерживают переменные, поэтому вы можете установить переменные типа $brandPrimary или отображение:
Помните, что именование здесь очень важно. Абстрактное именование иногда полезно, чтобы при изменении переменной, которая представляла синий цвет, на оранжевый, вам не пришлось переименовывать все значения цвета. Или, что хуже, повесить табличку с надписью «$blue теперь оранжевый».
currentColor
currentColor — это невероятно полезное значение. Полезно оно для распространения значения цвета на тени, контуры, границы или даже фон. Допустим, вы создали div (внешний, то есть .div-xternal ), а внутри него ещё один, div-internal . Обведём внутренний div оранжевой границей с помощью currentColor :
Это невероятно полезно для систем иконок, либо шрифтовых SVG-иконок. Вы можете установить currentColor в качестве значения по умолчанию для заливки, обводки или цвета, а затем использовать семантически подходящие классы CSS для стилизации.
Препроцессоры
Для настройки цветов отлично подходят препроцессоры CSS. Вот несколько ссылок на документацию по цветовым функциям различных препроцессоров:
А ниже несколько интересных вещей, которые мы можем сделать с помощью Sass:
На самом деле есть десятки способов программного смешивания и изменения цветов с помощью препроцессоров, не будем в них углубляться, но вот отличный интерактивный ресурс, чтобы узнать больше.
Свойства цвета
Как свойство CSS color относится к цвету шрифта. Если вы задаёте цвет для большой области, то используете background-color , а в случае SVG-элемент работаете с fill . Border — это граница вокруг элемента HTML, а stroke — аналог этой границы в SVG.
Прямоугольник и тень текста
Свойства box-shadow и text-shadow принимают значение цвета. Тени текста принимают 2 или 3 значения, h-shadow (горизонтальная тень), v-shadow (вертикальная тень) и необязательный радиус размытия.
Тени прямоугольника принимают 2 или 4 значения, h-shadow , v-shadow , дополнительное расстояние размытия и дополнительное расстояние распространения. Вы также можете обозначить вставку в начале, чтобы создать перевёрнутую тень. На этом сайте есть отличная демонстрация с простым, легко вставляемым кодом.
Градиенты
Линейные градиенты работают, обозначая направление от и до, в зависимости от префикса браузера сверху, снизу, слева, справа, можно задать градусы и радиальный градиент. Затем мы указываем остановки цвета и цвет, которого хотим добиться на каждой остановке. Цвета могут быть и прозрачными:
Синтаксис градиентов не так уж сложно написать, но мне очень нравится работать с этим генератором градиентов, потому что он создаёт сложное свойство фильтра, поддерживая IE6-9. Есть ещё один очень красивый Open Source генератор.
Градиенты также легко пишутся на SVG. По желанию мы можем задать площадь поверхности для градиента. С помощью идентификатора мы определяем блок, на который ссылаемся.
Эти градиенты также поддерживают непрозрачность, поэтому можно добиться красивых эффектов слоя, например, анимировать слои как маску.
Градиентный текст возможен только в webkit. Вот простой код на CSS-Tricks.
Генеративные цвета
В пределах указанных ранее диапазонов вы можете использовать циклы for в любом препроцессоре, или же JavaScript функцию Math.random() и Math.floor() . Здесь нам нужны Math.floor() или Math.ceil() , потому что если не вернуть полные целые числа, то вместо значения цвета получим ошибку. Хорошее эмпирическое правило: не следует обновлять все три значения.
При помощи HSL очень легко переходить от одного цвета к другому, потому что вы знаете, что перебор оттенков от 0 до 360 даст вам полный диапазон. Ещё одна приятная особенность hue-rotate в градусах заключается в том, что поскольку это полный круг, вам не нужно придерживаться диапазона 0–360, можно написать даже -480 или 600 — браузер вас поймёт.
Я использую его, чтобы сгенерировать эти цвета:
А также этот, с другим диапазоном (прокрутите очень быстро):
Ниже я использую Math.random() в значениях rgb, чтобы получить множество цветов в одном диапазоне. Демонстрация написана на React, создаётся впечатление трёхмерности. Я могла бы пройти по нему при помощи for , но хотелось, чтобы цвет был случайным, отражал движение. Здесь нет предела совершенству.
JavaScript
GreenSock выпустили инструмент, позволяющий анимировать относительные значения цвета, что очень полезно: можно захватывать сразу множество элементов и анимировать эти элементы относительно их собственных цветовых координат. Вот несколько демонстрирующих идею черепах. Чтобы увидеть эффект, наведите курсор на черепаху.
Смешение цветов и режимы смешения фонов
Если вы использовали эффекты слоёв в Photoshop, то, вероятно, знакомы с режимами смешивания (наложения). Почти каждый сайт в 90-е годы использовал их (мой тоже). Режимы смешивания и фонового наложения позволяют соединить два разных многослойных изображения, при этом доступно 16 режимов.
Верхнее изображение, или цвет, называется исходным, нижний слой называется конечным. Область между слоями, где происходит смешивание, называется фоном. Изображения смешиваются при помощи довольно простых формул.

Если вы хотите прослыть настоящим занудой, знайте, что формулы для режимов наложения зависят от типа эффекта. Например, multiply — это destination source = backdrop. Другие эффекты — это вариации простой математики с вычитанием, умножением, сложением и делением. Формула линейного эффекта — A+B-1, а эффекта Color Burn — это 1-(1-B)*A.
Вот более обширная документация, а ниже простая демонстрация, иллюстрирующая работу цвета в таких эффектах:
В этой замечательной статье Робин демонстрирует некоторые действительно сложные и впечатляющие эффекты, которых можно добиться с помощью наложения нескольких режимов смешивания. Ниже мы рассмотрим их смешивание с фильтрами.
Фильтры
Фильтры CSS предоставляют множество классных цветовых эффектов, а также возможность взять цветное изображение и сделать его серым. На CSS-Tricks есть замечательный ресурс, который показывает, как они работают, и хорошо поддерживается браузерами. У Беннета Фили вы найдёте хорошую галерею фильтров.
Фильтры и режимы размытия могут работать вместе! Уна Кравец создала этот классный инструмент под названием CSS Gram, комбинируя некоторые эффекты, чтобы создать фильтры из Instagram. В конце есть хорошая документация.
feColorMatrix
В другой статье Уна исследует создание этих изображений через feColorMatrix, — примитива фильтра в SVG, который также может применяться к элементам HTML. Он очень мощный и позволяет точно настроить цвет. Как следует из названия, базовая разметка feColorMatrix использует матрицу значений, а применяется она через её относительный id.
Матрицу можно расширить и отрегулировать оттенок, насыщенность и так далее:
В статье Уны подробно рассматриваются все возможности этого инструмента. Ещё больше информации об этом и многих других сумасшедших цветах SVG, а также об инструментах градиента в книге Амелии Белами-Ройд от O’Reilly или в исследовательской демонстрации Майка Муллани.

Доступность и другие замечания
Цвет проявляется только в отношении с другими цветами. Вы, вероятно, немного знакомы с этим в плане стандартов доступности [для людей с ограничениями по зрению]. Светло-зелёный цвет на чёрном может быть доступным [видимым], но, когда вы меняете фон на белый, зелёный различается плохо.
Доступность цвета можно измерить многими инструментами. Ниже некоторые из моих любимых:
Также очень хорошо с самого начала настроить свою палитру так, чтобы она была доступной [контрастной].
Color Safe — отличный инструмент, который помогает в этом. Как только вы всё подготовите, WAVE (Web Accessibility Tool) поможет оценить веб-страницу.
Цвет и атмосфера
Атмосфера влияет на цвет. Знать это довольно важно, если вы собираетесь создать хоть какую-то иллюзию глубины. Предметы ближе к вам более насыщены и контрастны. Предметы дальше более размыты.

Ландшафт подчёркивает зависимость контраста от расстояния
Тени не серые, они дополняют цвет света: если свет обладает жёлтым оттенком, тень будет казаться фиолетовой. Это полезно знать, если вы создаёте очень длинные тени.

Нативный ввод цвета
Существует встроенный в браузер селектор цветов, который вы можете использовать, чтобы помочь пользователям выбирать цвета динамически. Такой код:
Отобразит элемент выбора цветов, например такой:

Следует иметь в виду, что в разных браузерах селектор цветов будет отображаться по-разному, как и любой другой встроенный элемент управления.
Этот пен Ноя Блона показывает, как использовать его в сочетании с цветовым фильтром hue в CSS, чтобы выбирать части изображения динамически и изменять цвета. Оставшаяся часть изображения — это градации серого, поэтому она не затрагивается, что довольно умно.
Полезное
Color Highlighter Plugin для Sublime Text я использую, чтобы увидеть, какой цвет интерпретирует браузер. Мне нравится использовать <"ha_style": "outlined">.
Существует несколько различных традиционных комбинаций палитры, а также интернет-ресурсы, которые помогут вам их составить. Вот более научное представление — Paletton или Adobe Color.
Бенджамин Найт написал аналог Adobe Color при помощи d3 на CodePen, инструмент довольно крут и заслуживает внимания.
Если вы хотите, чтобы веб делал за вас тяжёлую работу (а кто этого не хочет?), посмотрите на Coolors, настолько простой, насколько это возможно.
Если вам нужна помощь в интерпретации цветов, и вы хотите быстрый простой инструмент перевода цвета из одной цветовой модели в другую, в энциклопедии цвета ColorHexa вы найдёте преобразования цветов в разные системы, которые только можно придумать.
И для самых занудных цветоманов. Вы можете даже заставить свою консоль выводить цвета для вас. Вот великолепный пен, показывающий, как это работает. Надеюсь, эта статья даст вам отправную точку для экспериментов и понимания.
Продолжить изучение цветов, чтобы стать профессиональным веб-разработчиком, вы можете на наших курсах:
Также вы можете перейти на страницы из каталога, чтобы узнать, как мы готовим специалистов в других направлениях.
Профессии и курсы
Настраиваем монитор и видеокарту
Мало купить хорошие монитор и видеокарту, надо еще правильно их настроить. При плохо настроенной видеосистеме, даже самой новейшей и дорогой, вашим глазам не позавидуешь.
Чтобы настроить монитор и видеоадаптер, щелкните правой кнопкой мыши на Рабочем столе и в появившемся контекстном меню выберите пункт «Свойства», либо выберите «Пуск * Настройка * Панель управления» и дважды щелкните на значке «Экран». На появившемся окне свойств экрана откройте закладку «Настройка».
Настраиваем разрешение монитора
Бегунком «Область экрана» задается разрешение монитора. Установите такое разрешение, при котором вы сможете работать, не напрягая зрение, при расстоянии от глаз до экрана не менее 60 см. Для большинства пользователей оптимальным значением будет 640х480 для 14-дюймового монитора, 800х600 для 15-дюймового и 1024х768 для 17-дюймового, однако это очень индивидуально. Кто-то спокойно работает при разрешении 1024х768 на 15-дюймовом мониторе, а кому-то на 17-дюймовом при 800х600 кажется, что «все так мелко, ничего не видно. «.
Заметим, что так спокойно играться с разрешением экрана можно лишь на ЭЛТ-мониторе, которые в наше время уже почти не применяются. На жидкокристаллическом же мониторе крайне не рекомендуется использовать другое разрешение, чем рекомендованное изготовителем (хотя технически такая возможность имеется). Качество изображения в других режимах, как правило, оказывается намного хуже.
Глубина цвета (цветовая палитра)
Второе важное поле на этой закладке — «Цветовая палитра». Тут устанавливается глубина цвета, иначе говоря, количество воспроизводимых цветов и оттенков. Для большинства мониторов и видеокарточек могут быть установлены следующие значения:
- 4 бита (16 цветов);
- 8 бит (256 цветов);
- High color (16 бит);
- True color (24 или 32 бита).
Для большинства приложений оптимальна 16-битовая палитра. Если вы работаете в основном с текстами и качество отображения графики для вас не имеет значения, можете установить 8- или даже 4-битовую палитру. True color палитра нужна тем, кто профессионально работает со сложной графикой (высококачественная обработка изображений и фотографий, полиграфические, издательские системы и т.п.), остальным же пользователям устанавливать ее вряд ли имеет смысл.
Частота обновления (развертки)
Самое, однако, важное запрятано глубже. На той же закладке нажмите кнопочку «Дополнительно» и в появившемся окошке выберите закладку «Адаптер». На ней имеется параметр «Частота обновления». Именно здесь вы можете задать частоту развертки, или частоту кадров, иначе говоря, сколько раз за секунду перерисовывается изображение на экране. Эта характеристика очень важна. Чем частота кадров выше, тем меньше будут уставать ваши глаза.
Когда вы зайдете сюда первый раз, то скорее всего прочитаете, что частота у вас «Оптимальная». Что скрывается за этим словом, ведомо только Биллу Гейтсу. Если у вас ЭЛТ-монитор, рекомендуем вам установить максимально возможную частоту. Обратите внимание — чем выше вы установили разрешение экрана и глубину цветовой палитры, тем меньшую частоту развертки сможет обеспечить ваша видеосистема. Именно поэтому не стоит устанавливать разрешение экрана и особенно глубину цвета больше, чем вам действительно необходимо. Лучше установите более высокую частоту обновления.
Если же у вас ЖК-монитор, то «Оптимальная» частота скорей всего и будет именно таковой, и без какой-то особой надобности трогать эту настройку не стоит.
Сделав эти настройки (они вступают в силу после нажатия кнопочки «Применить»), поработайте немного, чтобы оценить, как ваши глаза воспринимают новые параметры. Иногда бывает, что при высокой частоте развертки видеосистема в некоторых режимах начинает работать неустойчиво. В этом случае уменьшите частоту (или глубину цвета, или разрешение экрана).
Очень рекомендуем устанавливать частоту кадров не ниже 85 Гц для монитора с электронно-лучевой трубкой и 70 Гц для жидкокристаллического монитора. Пожертвуйте лучше глубиной цвета!
Кстати, Windows позволит вам установить только те значения частоты развертки, которые поддерживают графическая плата и монитор. Если ОС не распознала монитор или видеокарту, то будет установлена частота 60 Гц, безопасная для работы компьютера, но вредная для глаз. Увидеть, как Windows определила вашу видеосистему, можно на той же закладке «Настройка» окна «Свойства: Экран». Если там написано что-то вроде: «Неизвестный монитор», значит, Windows не сумела найти драйвер для вашего монитора или видеоплаты и скорее всего установила частоту обновления равной 60 Гц. Чтобы изменить такую настройку, щелкните на той же кнопке «Дополнительно», в появившемся окошке выберите закладку «Монитор» и включите там функцию «автоматическое определение мониторов Plug & Play». Кроме того, установите новейший драйвер для вашей графической платы. Эти действия обычно помогают разрешить все проблемы, связанные с работой видеосистемы.