Классический пример сопроцессора для обработки видео в картридже это SuperFX, специализированный 16-битный RISC-процессор (корни его можно отследить в современной архитектуре ARC). Чип этот разработал, кстати говоря, Ben Cheese, который в свое время трудился и у Синклера.
Готовый ARM это, конечно, не так интересно, как разработка собственной архитектуры. Я бы больше порадовался чему-нибудь специализированному на, например, Xilinx Spartan 6 (LX4 стоит не дороже многих ARM-микроконтроллеров).
Артём, я слегка изнасиловал твой скрипт, чтобы сделать заливку поплотнее и лучше увидеть оттенок.
Вышло вот что:
Как ты видишь, оттенки не очень хорошо совпадают. У тебя, я думаю, такая же ошибка как сделал в своё время я.
Допустим, мы смешиваем 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. Более того, используя разный растр (ну или текстуру, если будет угодно) мы можем получить еще большее количество оттенков определенного цвета. Но! Чем меньше будет процентное соотношение цветов, тем дальше нужно будет отходить от экрана, чтобы оно действительно работало, как задумано.
ну и вообще, shinilb0g
:)
я попробовал включить цвета — стало хуже.
Готовый ARM это, конечно, не так интересно, как разработка собственной архитектуры. Я бы больше порадовался чему-нибудь специализированному на, например, Xilinx Spartan 6 (LX4 стоит не дороже многих ARM-микроконтроллеров).
Вышло вот что:
Как ты видишь, оттенки не очень хорошо совпадают. У тебя, я думаю, такая же ошибка как сделал в своё время я.
Допустим, мы смешиваем 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. Более того, используя разный растр (ну или текстуру, если будет угодно) мы можем получить еще большее количество оттенков определенного цвета. Но! Чем меньше будет процентное соотношение цветов, тем дальше нужно будет отходить от экрана, чтобы оно действительно работало, как задумано.