Базовый язык ядра изображения
Следующие разделы перечисляют символы, предоставленные Базовым Языком Ядра Изображения:
Можно использовать эти символы вместе с любым 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