Базовый язык ядра изображения
Следующие разделы перечисляют символы, предоставленные Базовым Языком Ядра Изображения:
Можно использовать эти символы вместе с любым OpenGL, Заштриховывающим подпрограммы Языка то Базовое Изображение поддержки. Посмотрите Неподдерживаемые Элементы для тех, Вы не можете использовать.
Функции
В этом разделе описываются следующие функции:
выдержать сравнение
genType compare (genType x, genType y, genType z)Для каждого компонента, возвратов
x < 0 ? y : z. Обратите внимание на то, чтоgenTypeзаполнитель для произвольного типа вектора.
because_
genType cos_ (genType x)Подобный
cos (x)за исключением того, чтоxдолжен быть в [–pi,pi] диапазон. Обратите внимание на то, чтоgenTypeзаполнитель для произвольного типа вектора.
cossin
vec2 cossin (float x)Возвраты
vec2 (cos (x), sin (x)).
cossin_
vec2 cossin_ (float x)Возвраты
vec2 (cos (x), sin (x)). Эта функция ожидаетxбыть в [–pi,pi] диапазон.
destCoord
varying vec2 destCoord ()Возвращает позицию, в координатах рабочей области, пикселя, в настоящее время будучи вычисленным. Целевое пространство относится к координатному пространству изображения, которое Вы представляете.
предварительно умножиться
vec4 premultiply (vec4 color)Умножает красные, зеленые, и синие компоненты
colorпараметр его альфа-компонентом.
выборка
vec4 sample (uniform sampler src, vec2 point)Возвращает пиксельное значение, произведенное из сэмплера
srcв позицииpoint, гдеpointуказан в пространстве сэмплера.
samplerCoord
varying vec2 samplerCoord (uniform sampler src)Возвращает позицию, в пространстве сэмплера, сэмплера
srcэто связано с пикселем текущей производительности (т.е. после того, как любая матрица преобразования связалась сsrcприменяется). Выборочное пространство относится к координатному пространству этого, Вы текстурируете от.Обратите внимание на то, что, если Ваши исходные данные будут размещены рядом, то демонстрационная координата будет иметь смещение (dx/dy). Можно преобразовать целевое расположение в расположение сэмплера с помощью
samplerTransformфункция.
samplerExtent
uniform vec4 samplerExtent (uniform sampler src)Возвращает степень сэмплера в мировых координатах, как вектор с четырьмя элементами [x, y, ширина, высота].
samplerOrigin
uniform vec2 samplerOrigin (uniform sampler src)Эквивалентный
samplerExtent (src).xy.
samplerSize
uniform vec2 samplerSize (uniform sampler src)Эквивалентный
samplerExtent (src).zw.
samplerTransform
vec2 samplerTransform (uniform sampler src, vec2 point)Возвращает позицию в координатном пространстве источника (первый параметр), который связан с позицией, определенной в координатах рабочей области (второй параметр). (Следует иметь в виду, что координаты рабочей области отражают любые трансформации, что Вы применились к рабочей области.)
Например, если Вы изменяете пиксель в рабочей области, и необходимо получить пиксели, окружающие этот пиксель в исходном изображении, Вы выполнили бы вызовы, подобные следующему, где
dрасположение пикселя, который Вы изменяете в рабочей области, иimageисточник изображения для пикселей.samplerTransform(image, d + vec2(-1.0,-1.0));
samplerTransform(image, d + vec2(+1.0,-1.0));
samplerTransform(image, d + vec2(-1.0,+1.0));
samplerTransform(image, d + vec2(+1.0,+1.0));
sin_
genType sin_ (genType x)Подобный
sin (x)за исключением того, чтоxдолжен быть в [–pi,pi] диапазон. Обратите внимание на то, чтоgenTypeзаполнитель для произвольного типа вектора.
sincos
vec2 sincos (float x)Возвраты
vec2 (sin (x), cos (x)).
sincos_
vec2 sincos_ (float x)Возвраты
vec2 (sin (x), cos (x)). Эта функция ожидаетxбыть в [–pi,pi] диапазон.
tan_
genType tan_ (genType x)Подобный
tan (x)за исключением того, чтоxдолжен быть в [–pi,pi] диапазон. Обратите внимание на то, чтоgenTypeзаполнитель для произвольного типа вектора.
unpremultiply
vec4 unpremultiply (vec4 color)Если альфа-компонент
colorпараметр больше, чем 0, делит красные, зеленые и синие компоненты на альфу. Если альфа 0, эта функция возвратыcolor.
Типы данных
samplerУказывает, что сэмплер передал в от CISampler, использующегося для получения выборок от данных.
__colorУказывает тип для параметров ядра, которые должны быть цветом, соответствующим к текущему CIContext, работающему цветовое пространство.
__tableУказывает флаг для сэмплера, выбирающего значения от таблицы поиска.
__tableфлаг должен предшествоватьsamplerввести. Флаг гарантирует, что Базовое Изображение не выбирает табличные значения с помощью мировых координат.Например, для использования сэмплера таблицы поиска в названном ядре
shadedmaterial, объявление ядра было бы:kernel vec4 shadedmaterial(sampler heightfield, __table sampler envmap, float surfaceScale, vec2 envscaling)Используя
__tableфлаг предотвращаетenvmapдаже если теневое материальное ядро вставляется в цепочку фильтра с аффинным преобразованием, сэмплер оценивает от того, чтобы быть преобразованным. Если Вы не тегируете сэмплер этот путь, и Вы объединяете теневой материальный фильтр в цепочку к аффинному преобразованию для вращения, то, ища значения в результатах карты среды в значениях бывшего повернутого, который не корректен, потому что таблица поиска является просто сбором данных.
Ключевые слова
kernelУказывает подпрограмму ядра. Подпрограммы ядра извлечены и скомпилированы классом CIKernel. Ядро инкапсулирует вычисление, требуемое вычислить единственный пиксель в выходном изображении.
Каждое ядро тегируется
kernelключевое слово в его типе возврата. Базовый тип возврата ядра должен бытьvec4. Базовое Изображение требует этого типа для возврата выходного пикселя для входного пикселя, в настоящее время будучи оцененным.Все параметры к ядру неявно отмечены
uniform. Параметры отмеченыoutиinoutне позволяются.Можно передать следующие типы подпрограмме ядра:
sampler: Требует объекта CISampler, когда применено.__table: Спецификатор для asamplerввести.float,vec2,vec3,vec4: Требует NSNumber или CIVector.__color: Цвет, который будет соответствующим к CIContext, работающему цветовое пространство, когда передано в программу. Это требует объекта CIColor, когда применено. К программе ядра это, кажется, avec4введите предварительно умноженный формат RGBA.
Неподдерживаемые элементы
Базовое Изображение не поддерживает OpenGL, Заштриховывающий препроцессор исходного кода Языка. Кроме того, следующее не реализованы:
Типы данных:
mat2,mat3,mat4,struct,arraysОператоры:
continue,break,discard. Другие операторы управления потоком (if,for,while,do while) поддерживаются только, когда условие цикла может быть выведено в это время компиляции кода.Операторы выражения:
% << >> | & ^ || && ^^ ~Встроенные функции:
ftransform,matrixCompMult,dfdx,dfdy,fwidth,noise1,noise2,noise3,noise4,refract