Базовый язык ядра изображения

Следующие разделы перечисляют символы, предоставленные Базовым Языком Ядра Изображения:

Можно использовать эти символы вместе с любым 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: Спецификатор для a sampler ввести.

  • float, vec2, vec3, vec4: Требует NSNumber или CIVector.

  • __color: Цвет, который будет соответствующим к CIContext, работающему цветовое пространство, когда передано в программу. Это требует объекта CIColor, когда применено. К программе ядра это, кажется, a vec4 введите предварительно умноженный формат RGBA.

Неподдерживаемые элементы

Базовое Изображение не поддерживает OpenGL, Заштриховывающий препроцессор исходного кода Языка. Кроме того, следующее не реализованы: