Артём, я слегка изнасиловал твой скрипт, чтобы сделать заливку поплотнее и лучше увидеть оттенок.
Вышло вот что:
Как ты видишь, оттенки не очень хорошо совпадают. У тебя, я думаю, такая же ошибка как сделал в своё время я.
Допустим, мы смешиваем 50% одного цвета и 50% другого. Законы аддитивного цвета нам говорят: нужно сложить цветовые компоненты и разделить на 2. Вроде всё правильно? Мне кажется, что нет. Дело в том, что смешение цвета происходит на экране, а у экрана — гамма. Гамма монитора в среднем будет что-то типа 2.5. Значит нужно взять покомпонентно оба цвета, перевести их в мониторную гамму, там — смешать и разделить на два, а уже потом — взять обратно гамму. Типа
Я тут чутка загнался и сделал вот такую тестовую страничку: artfield.me/127c.html (за работоспособность везде не отвечаю, делал на скорую руку, работает в Хроме)
В общем, какие выводы:
— цветов, по факту, 101. Причем явно различных — довольно немного, на мой мутный взгляд с -7
— большой разброс по hue (мало красного, много синего). Возможно, проблема в формуле, высчитывающей luminance
— два очевидных уровня насыщенности, причем «пастельных» цветов невероятно мало
— выходная палитра очень сильно зависит от небрайта. Если указать веселые значения типа 96 или 160 — палитра резко сокращается до 64 цветов. Можно сами поэкспериментировать со значениями, добавляя их к урлу: artfield.me/127c.html?160
1. Механическое смешивание красок. То есть имея всего два разных цвета и смешивая их в разных пропорциях мы можем получить множество оттенков стремящимся к одному из цветов, но не являющегося им.
Зная же это, и процентное соотношение цветов, мы можем смоделировать оптическое смешивание красок, например в фотошопе.
Делаем два слоя с нужными цветами и затем прозрачность верхнего слоя устанавливаем на 37/38% (да, точное соотношение 37.5%, но разница при 37/38% на глаз практически не заметна).
Как-то так.
P.S. Более того, используя разный растр (ну или текстуру, если будет угодно) мы можем получить еще большее количество оттенков определенного цвета. Но! Чем меньше будет процентное соотношение цветов, тем дальше нужно будет отходить от экрана, чтобы оно действительно работало, как задумано.
Нет, просто ты и я понимаем под «затеей» (я бы сказал, под «проектом») совершенно разные вещи.
Для тебя, как я это понимаю, совладать с новой железкой — уже проект. А мне это не кажется интересным достижением. Мне нужно сказать что-то за пределами чисто технического результата. И у меня сейчас нет совершенно ничего такого, что я бы не мог сказать на спектруме, но смог бы на GBC. Поэтому осваивать GBC кажется мне глубоко бессмысленной затеей.
Да не было никакой затеи. Прочёл что там не Z80, а что-то другое, похожее, залез и посмотрел что именно. Запомнил, было прикольно разобраться. Но это никакая не идея для проекта. Это просто общее образование.
Вышло вот что:
Как ты видишь, оттенки не очень хорошо совпадают. У тебя, я думаю, такая же ошибка как сделал в своё время я.
Допустим, мы смешиваем 50% одного цвета и 50% другого. Законы аддитивного цвета нам говорят: нужно сложить цветовые компоненты и разделить на 2. Вроде всё правильно? Мне кажется, что нет. Дело в том, что смешение цвета происходит на экране, а у экрана — гамма. Гамма монитора в среднем будет что-то типа 2.5. Значит нужно взять покомпонентно оба цвета, перевести их в мониторную гамму, там — смешать и разделить на два, а уже потом — взять обратно гамму. Типа
Rmix = (0.5*R1^2.5+0.5*R2^2.5)^(1/2.5)
В общем, какие выводы:
— цветов, по факту, 101. Причем явно различных — довольно немного, на мой мутный взгляд с -7
— большой разброс по hue (мало красного, много синего). Возможно, проблема в формуле, высчитывающей luminance
— два очевидных уровня насыщенности, причем «пастельных» цветов невероятно мало
— выходная палитра очень сильно зависит от небрайта. Если указать веселые значения типа 96 или 160 — палитра резко сокращается до 64 цветов. Можно сами поэкспериментировать со значениями, добавляя их к урлу: artfield.me/127c.html?160
1. Механическое смешивание красок. То есть имея всего два разных цвета и смешивая их в разных пропорциях мы можем получить множество оттенков стремящимся к одному из цветов, но не являющегося им.
2. Типографский растр: ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D1%82%D1%80_(%D0%BF%D0%BE%D0%BB%D0%B8%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%8F)
По сути это, оптическое смешивание цвета которое происходит в глазу смотрящего человека. Такими вещами, причем более явными, занимались пуантилисты: ru.wikipedia.org/wiki/%D0%9F%D1%83%D0%B0%D0%BD%D1%82%D0%B8%D0%BB%D0%B8%D0%B7%D0%BC
Зная же это, и процентное соотношение цветов, мы можем смоделировать оптическое смешивание красок, например в фотошопе.
Делаем два слоя с нужными цветами и затем прозрачность верхнего слоя устанавливаем на 37/38% (да, точное соотношение 37.5%, но разница при 37/38% на глаз практически не заметна).
Как-то так.
P.S. Более того, используя разный растр (ну или текстуру, если будет угодно) мы можем получить еще большее количество оттенков определенного цвета. Но! Чем меньше будет процентное соотношение цветов, тем дальше нужно будет отходить от экрана, чтобы оно действительно работало, как задумано.
Мне интересно вот что: как реализуется вывод 127ц?
Для тебя, как я это понимаю, совладать с новой железкой — уже проект. А мне это не кажется интересным достижением. Мне нужно сказать что-то за пределами чисто технического результата. И у меня сейчас нет совершенно ничего такого, что я бы не мог сказать на спектруме, но смог бы на GBC. Поэтому осваивать GBC кажется мне глубоко бессмысленной затеей.