Я предполагаю, что вы ищете фильтр, который сжимает цвет и вычисляет на канал гамма. Я выбрал быстрый фильтр. Обратите внимание, что если вы хотите «правильную» гамма масштаба серого, вам может потребоваться сделать
(rgb)->(luma+color)->(gamma correction)->(rgb)
преобразование.
<languageVersion : 1.0;>
kernel untitled
< namespace : "Your Namespace";
vendor : "Your Vendor";
version : 1;
>
{
input image4 src;
output pixel4 dst;
parameter float low
<
minValue : 0.0;
maxValue : 1.0;
defaultValue : 0.0;
>;
parameter float high
<
minValue : 0.0;
maxValue : 1.0;
defaultValue : 1.0;
>;
parameter float gamma
<
minValue : 0.0;
maxValue : 5.0;
defaultValue : 1.0;
>;
void
evaluatePixel()
{
dst = sampleNearest(src,outCoord());
dst.r = pow(dst.r, gamma);
dst.g = pow(dst.g, gamma);
dst.b = pow(dst.b, gamma);
dst.rgb -= low;
dst.rgb /= (high - low);
}
}
Не могли бы вы объяснить, что вы хотите сделать с помощью графика? – Kodiak
Я хотел бы сделать инструмент, как уровни фотошопа. Я планирую менять цветовые каналы и гамму. Я мог бы внести изменения в канал, но у меня были проблемы с гамма (midtones). Я нашел формулу r = pow (r, gamma), но она не работает для меня. – Ilya
как вы написали свою формулу в pixelbender? – Kodiak