Палитра Pentevo и sRGB.
Хочу поднять любопытный вопрос. Как говорится, кто про что, а вшивый всё про sRGB и гамма-коррекцию.
На форуме TS-Labs, согласно описанию LessNick, палитра Pentevo складывается из четырех градаций одного из трех цветов.
Цвета из представленной таблицы показывают ровное деление на четыре равных отрезка:
0 — #00
33% — #60
67% — #AA
100% — #FF
Эта логика абсолютно верна, если мы работаем с линейным RGB пространством без гамма-коррекции. Могу нести полную чушь, но таковыми как раз были RGB-мониторы первой половины девяностых.
Проблема в том, что всё, что выводится на экран современных дисплеев, должно быть скорректировано под нелинейность яркости современных дисплеев. Если просто вывести на современный дисплей белый цвет яркостью #606060, то он не будет иметь 33% яркости, как это задумано в изначальной палитре, он будет темнее.
Теперь сами вопросы:
1. Прав ли изначально LessNick, правильное ли у него описание вопроса? Я в этом не разбираюсь абсолютно, хочется комментарий от кого-то, кто знает железо PentEvo.
2. Если подсоединить современный монитор через VGA вход, какой туда сигнал подаётся, с гамма-коррекцией или как на линейный RGB?
3. Однозначно требуется перепроверить эмуляторы. Эмулятор выводит изображение на sRGB-монитор, значит должен палитру подогнать под sRGB.
Градации яркости, скорректированные под sRGB:
0 — #00
33% — #A5
67% — #D5
100% — #FF
В Unreal 0.39.0 от deathsoft для ATM используются вот такие значения. Я ведь правильно понял, что это палитра Pentevo?
ATM=00,55,AA,E0,FF,80:100,00,00;00,100,00;00,00,100
Если скорректировать:
ATM=00,9C,D5,EB,FF,80:100,00,00;00,100,00;00,00,100
Если же я понимаю неправильно, и ATM — это не палитра для эмуляции PentEvo, то какая палитра там используется сейчас? В версии от TS-Labs такая же палитра в конфиге.
В общем, прошу меня перепроверить, не допустил ли я где ошибок, в том числе и в вычислениях. Возможно, именно в этом и есть причина, почему в эмуляторах палитра PentEvo такая темная. Если сделать коррекцию под нелинейную яркость современных девайсов, то картинка внезапно может стать очень даже удобоваримой. Правда, остаётся вопрос про использование современного sRGB-монитора и VGA-выхода на PentEvo, но здесь пусть лучше прокомментирует кто-то с матчастью.
На форуме TS-Labs, согласно описанию LessNick, палитра Pentevo складывается из четырех градаций одного из трех цветов.
Цвета из представленной таблицы показывают ровное деление на четыре равных отрезка:
0 — #00
33% — #60
67% — #AA
100% — #FF
Эта логика абсолютно верна, если мы работаем с линейным RGB пространством без гамма-коррекции. Могу нести полную чушь, но таковыми как раз были RGB-мониторы первой половины девяностых.
Проблема в том, что всё, что выводится на экран современных дисплеев, должно быть скорректировано под нелинейность яркости современных дисплеев. Если просто вывести на современный дисплей белый цвет яркостью #606060, то он не будет иметь 33% яркости, как это задумано в изначальной палитре, он будет темнее.
Теперь сами вопросы:
1. Прав ли изначально LessNick, правильное ли у него описание вопроса? Я в этом не разбираюсь абсолютно, хочется комментарий от кого-то, кто знает железо PentEvo.
2. Если подсоединить современный монитор через VGA вход, какой туда сигнал подаётся, с гамма-коррекцией или как на линейный RGB?
3. Однозначно требуется перепроверить эмуляторы. Эмулятор выводит изображение на sRGB-монитор, значит должен палитру подогнать под sRGB.
Градации яркости, скорректированные под sRGB:
0 — #00
33% — #A5
67% — #D5
100% — #FF
В Unreal 0.39.0 от deathsoft для ATM используются вот такие значения. Я ведь правильно понял, что это палитра Pentevo?
ATM=00,55,AA,E0,FF,80:100,00,00;00,100,00;00,00,100
Если скорректировать:
ATM=00,9C,D5,EB,FF,80:100,00,00;00,100,00;00,00,100
Если же я понимаю неправильно, и ATM — это не палитра для эмуляции PentEvo, то какая палитра там используется сейчас? В версии от TS-Labs такая же палитра в конфиге.
В общем, прошу меня перепроверить, не допустил ли я где ошибок, в том числе и в вычислениях. Возможно, именно в этом и есть причина, почему в эмуляторах палитра PentEvo такая темная. Если сделать коррекцию под нелинейную яркость современных девайсов, то картинка внезапно может стать очень даже удобоваримой. Правда, остаётся вопрос про использование современного sRGB-монитора и VGA-выхода на PentEvo, но здесь пусть лучше прокомментирует кто-то с матчастью.
34 комментария
Я ни на что не намекаю, но.
Ни у кого больше не возникало мысли отказаться от Пентевы как от компо-машины?
Я понимаю, что альтернатив ей немного; что на ней очень удобно показывать работы, что у неё очень много плюсов как у гибкой и универсальной компо-машины. Но может быть — может быть — имеет смысл рассмотреть другие варианты? В качестве показа графики, например. Или в качестве альтернативной машины для показа, по желанию автора. Потому что, выходит так, что, как бы прекрасен ни был этот компьютер, минусы у него тоже есть.
Что если, например, как-нибудь попробовать в качестве машины для показа, если уж нам всем так нужен реал, не взять +2, например?
Просто спрашиваю.
Съешь еще этих тонких красных линий...
Сейчас демы пишем под пентагон ибо он в россии стал компо машиной давно. А потом часто не хватает сил еще и под +2 по таймингам засинхривать. Если еще в mescaline synesthesia было время и силы, и эффекты сразу писались в 2х вариантах для пентагона и +2, то сейчас не этого времени и сил нет. фактически приходится писать две демы под две разные машины, хотя в некоторых эффектах достаточно поиграться константами но такие не все.
Но с другой стороны а много ли у нас +2 живых и как с эмуляторами дела обстоят — например записать видео так же удобно как в unreal?
Эмуляторы есть, и отличные — SpecEmu, Spin, ZXMAK2, даже Spectaculator — в нём кстати можно легко записать видео (правда со звуком в моно). В общем, Пентева, конечно, машина отличная и местами незаменимая. Но если уж вам хочется ДУХА и КАНОНА, то не надо идти на компромиссы с самим собой: каноничнее, чем серый +2 не найти.
Я лично для себя поставил во главу угла совместимость с классикой и всегда её обеспечиваю, в частности, просто никогда не пишу эффекты в которых заведомо уверен, что фикс под классику не получится. Но моё отношение к пентагон-сцене немного сложнее. С одной стороны, мне иногда хочется, чтобы демо Красок или Сибкрю смотрелись и за границей, там где пентагоны встречаются, но не являются стандартом. С другой стороны, наследие отечественной пентагоновской демосцены 1990х такое, что, как мне кажется, пентагон более чем заслужил своё место под солнцем. Поэтому даже если я и подтруниваю иногда над Красками и Сибкрю по этому поводу, я ни в коем случае не хотел бы создать впечатление, что это как-то приумаляет их достижения.
2. Как линейный RGB.
3. Эмулятор не должен заниматься корректировкой гаммы, это задача твоей графической карты.
Твое предположение про старые RGB мониторы с линейным цветом практически наверняка неверное. Нелинейная яркость — это фича электронно лучевых трубок. В sRGB прописана гамма 2.3, но в телестандарте PAL гамма 2.5, но старые телевизоры имели иногда даже 2.8.
2. Если так, то прискорбно. Получается, что на современных дисплеях картинка переконтрастная, темные оттенки очень сильно темнее, чем надо.
3. Если эмулятор хочет показать 50% яркости в sRGB пространстве, то ему надо сгенерить не #808080, а #BCBCBC. Иначе на экране будет не 50% яркости, а 21%. То есть, конкретные hex-значения на картинку надо подготавливать не такие же, как для линейного RGB, а скорректированные. Доказать это очень просто на практике: 50% яркости цвет должен визуально совпадать с шахматной текстурой по яркости. #BCBCBC совпадает хорошо, #808080 не совпадает.
Поэтому я уверен, что, если требуется показать реально ту же картинку для глаз, что и в условном «реале», то эмулятор должен делать картинку с учетом коррекции, а не в тех же значениях, что и в линейном RGB.
Та же самая беда у Sam Coupe. Почему у него такая странная палитра?
А всё потому, что кто-то взял значения линейного RGB из описания железа и просто их поставил в эмулятор, который работает с другим цветом пространством. Не учел коррекции, то есть. И теперь палитра слишком контрастная, и под неё уже нарисованы вполне определенные работы, которые в палитре, скорректированной под задумку разработчиков Sam Coupe, смотрятся не очень круто.
Т.е. ты переживаешь что палитра не та, а на самом деле палитра запросто может быть та. Просто разработчики не задумались о гамме.
Т.е., то, что белый с bright 0 на спектруме — не 128 — это удача. Нам повезло, авторы спектрума о гамме знали.
Вообще все старые палитры, с небольшим количеством цветов, мягко говоря странные. Одна палитра Commodore64 чего стоит.
Хотя, как пишут сами разработчики Коммодора, в итоге всё всё равно сводится к экономии копеек на итоговой железке: «I'm afraid that not nearly as much effort went into the color selection as you think. Since we had total control over hue, saturation and luminance, we picked colors that we liked. In order to save space on the chip, though, many of the colors were simply the opposite side of the color wheel from ones that we picked. This allowed us to reuse the existing resistor values, rather than having a completely unique set for each color.»
Кроме того, даже если расчёты верны, всегда остаётся вариант погрешности как самих резисторов, так и вариант когда ставили резисторы близкого по значению номинала. Я уж молчу про вариант, когда банально на том же ящике могли выкрутить насыщенность и контрастность. И это тоже очень сильно влияет на итоговую картинку.
Про выкрученную насыщенность/контрастность мне неинтересно, моя задача — выдавать на своём уровне правильную картинку, а что там дальше юзер будет крутить, это вне моей ответственности.
Ну ты серьёзно? разница между #50 и #55 еле заметна:
Вопрос показа дем и интр останется открытым все равно, но может графику тогда покажем как нужно?
Но нужен инструментарий, чтобы делать это одной кнопкой. Иначе в запаре пативания ошибок будет еще больше.
также в нём есть для простых моргалок-двумя-экранами чересстрочная автогига (не блендинг!)
ссылки тут, если кто не в курсе — zx-pk.ru/entries/360-zx-ulax-download-links.html
минус — нет полноэкранного режима (автоматически размер окна на максимальный кратный масштаб)
по крайней, мере, подойдёт хотя бы для оценки, как это могло бы выглядеть
а спецтулзу для показа в полный экран (или без оконных рамок на чёрном фоне), думаю, несложно будет накодить
В тсконфе с вдаком цветовое разрешение палитры по 5 бит на цвет, т.е. по 32 градации.
Предлагается:
— сделать тулзу, плавно изменяющую каждый цвет,
— провести колорометрические измерения (поставить 2 одинаковых монитора рядом, что ли, я хз),
— замерить правильные значения палитры и навечно поселить в биос, как дефолтную палитру для спека.
Напоминаю, что на ВСЕХ мониторах эта самая гамма-коррекция разная (впилить палитру под каждый монитор?..)