首页 > 其他分享 >Apple - Core Image Kernel Language Reference

Apple - Core Image Kernel Language Reference

时间:2024-06-30 19:55:59浏览次数:27  
标签:Core Apple Reference Image 采样器 vec2 sampler genType

本文翻译整理自:Core Image Kernel Language Reference(更新日期:2015-01-12
https://developer.apple.com/library/archive/documentation/GraphicsImaging/Reference/CIKernelLangRef/Introduction/Introduction.html#//apple_ref/doc/uid/TP40004397-CH1-SW1


文章目录


一、导言

Core Image Kernel Language定义了函数、数据类型和关键字,可用于为编写的自定义Core Image 过滤器指定图像处理操作。
您还可以使用OpenGL着色语言(glslang)的子集。

本文档定义了Core Image Kernel Language 中的符号,并列出了 Core Image 过滤器不支持的OpenGL着色语言中的符号。

任何想要使用Core图像API编写自定义图像处理过滤器的开发人员都应该阅读本文档。
在阅读本文档之前,您应该熟悉请参阅部分中列出的文档。


本文件的组织

Core Image Kernel Language 定义了可用于编写图像处理例程的函数、数据类型和关键字,并列出了OpenGL着色语言中不受支持的符号。


另见


二、Core Image Kernel Language

以下部分列出了Core Image Kernel Language提供的符号:

您可以将这些符号与Core Image 支持的任何OpenGL着色语言例程一起使用。
请参阅无法使用的不支持项目


1、函数

本节介绍以下功能:


compare

  • genType compare (genType x, genType y, genType z)

对于每个组件,返回x < 0 ? y : z
请注意,genType是任意向量类型的占位符。


cos_

  • genType cos_ (genType x)

类似于cos (x),只是x必须在[–pipi]范围内。
请注意,genType是任意向量类型的占位符。


cossin

  • vec2 cossin (float x)

返回vec2 (cos (x), sin (x))


cossin_

  • vec2 cossin_ (float x)

返回vec2 (cos (x), sin (x))
此函数期望x在[–pipi]范围内。


destCoord

  • varying vec2 destCoord ()

返回当前正在计算的像素 在工作空间坐标中的位置。
目标空间是指正在渲染的图像的坐标空间。


premultiply

  • vec4 premultiply (vec4 color)

color参数的红色、绿色和蓝色组件乘以其alpha组件。


sample

  • 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, width, height]


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必须在[–pipi]范围内。
注意genType是任意向量类型的占位符。


sincos

  • vec2 sincos (float x)

返回vec2 (sin (x), cos (x))


syncos_

  • vec2 sincos_ (float x)

返回vec2 (sin (x), cos (x))
此函数期望x在[–pipi]范围内。


tan_

  • genType tan_ (genType x)

类似于tan (x),只是x必须在[–pipi]范围内。
请注意,genType是任意向量类型的占位符。


unpremultiply

  • vec4 unpremultiply (vec4 color)

如果color参数的alpha组件大于0,则将红色、绿色和蓝色组件除以alpha。
如果alpha为0,则此函数返回color


2、数据类型

  • sampler
    指定从CIS采样器传入的用于从数据中获取样本的采样器
  • __color
    指定需要与当前CIContext工作色彩空间颜色匹配的内核参数的类型。
  • __table
    指定从查找表中获取值的采样器的标志。
    必须在sampler类型之前加上__table标志。
    该标志确保Core图像不会使用世界坐标对表值进行采样。
    例如,要在名为shadedmaterial的内核中使用查找表采样器,内核声明将是:kernel vec4 shadedmaterial(sampler heightfield, __table sampler envmap, float surfaceScale, vec2 envscaling) 使用 __table标志可以防止envmap采样器值被转换,即使阴影材质内核被插入到带有仿射变换的滤波器链中。
    如果您不这样标记采样器,而是将阴影材质滤波器链接到仿射变换以进行旋转,那么在环境映射中查找值会导致获得旋转值,这是不正确的,因为查找表只是一个数据采集。

3、关键词

  • kernel
    指定内核例程。
    内核例程由CIKernel类提取和编译。
    内核封装计算输出图像中单个像素所需的计算。
    每个内核在其返回类型中由kernel关键字标记。
    内核的底层返回类型必须是vec4
    Core Image 需要这种类型才能返回当前正在评估的输入像素的输出像素。
    内核的所有参数都隐式标记为uniform
    不允许标记outinout的参数。
    您可以将以下类型传递给内核例程:
  • sampler:应用时需要一个CIS采样器对象。
  • __tablesampler类型的限定符。
  • floatvec2vec3vec4:需要NSNumber或CIVector。
  • __color:当传递到程序中时,将与CIContext工作色彩空间匹配的颜色。
    应用时,它需要一个CIColor对象。
    对于内核程序,它似乎是premultiplyRGBA格式的vec4类型。

4、不支持的项目

Core Image 不支持OpenGL着色语言源码预处理器。
此外,以下内容未实现:

  • 数据类型:mat2mat3mat4structarrays
  • 语句:continuebreakdiscard
    仅当代码编译时可以推断循环条件时,才支持其他流控制语句(ifforwhiledo while)。
  • 表达式运算符:% << >> | & ^ || && ^^ ~
  • 内置函数:ftransformmatrixCompMultdfdxdfdyfwidthnoise1noise2noise3noise4refract

2024-06-19(三)

标签:Core,Apple,Reference,Image,采样器,vec2,sampler,genType
From: https://blog.csdn.net/lovechris00/article/details/139795064

相关文章

  • gdb调试coredump文件
    查看coredump文件位置cat/proc/sys/kernel/core_patterncoredumpctllistcoredumpctldumppid_xxx--outputxxx.coregdb调试gdb-cxxx.corexxx.bintuiup1down1disas设置coredump文件位置sudosysctl-wkernel.core_pattern="/home/bill/project/test_coredum......
  • WinDbg: Failed to find runtime module (coreclr.dll or clr.dll or libcoreclr.so)
    当我们通过WinDbg启动一个.NET的程序时,WinDbg将会在运行可执行之前执行一个中断,此时还没有加载.NET的运行时。但是,SOS扩展需要clr.dll或者coreclr.dll的支持。所以,在这个时间点执行SOS的扩展指令会遇到如下的错误:0:000>.loadC:\Users\Guanjun\.dotnet\sos\sos.d......
  • 修复《魔兽世界》更新后api-ms-win-core-com-l1-1-0.dll丢失问题的实战指南
    《魔兽世界》更新后api-ms-win-core-com-l1-1-0.dll丢失的快速修复,通过系统扫描、游戏重装与文件恢复,轻松解决dll缺失难题,重回艾泽拉斯大陆的冒险旅程。如果你在《魔兽世界》更新后遇到“api-ms-win-core-com-l1-1-0.dll”文件丢失的问题,可以尝试以下步骤来解决:1.系统文......
  • .Net Core8下Elasticsearch7.x+Nest升级到Elasticsearch8.x+Elastic.Clients.Elastics
    背景Elasticsearch升级到8.11了,对应的客户端插件也跟着升级,以为会兼容Nest的语法,发现自己TooYoungTooSimple!没办法,只能去官网找,结果官网只有最基本的增、删、改、查,只能继续查资料,发现网上资料很少,避免大家少走弯路,这里做个简单的分享。分享1.ElasticsearchClientvaresS......
  • 异常值检测(2)——Z-score和Grubbs假设检验
    Z分数异常检测        z分数异常检测是一种基于标准化的异常值检测方法,它不受数据分布假设的限制,可以广泛应用于各种类型的数据集。检测步骤:1.计算数据集的均值(μ)和标准差(σ)。2.计算每个数据点的z分数:z=(x-μ)/σ  其中x是原始数据点(它的值)。3......
  • [题解]AT_arc138_a [ARC138A] Larger Score
    思路不难发现:对于每一个\(i(1\leqi\leqk)\),如果能在\((k+1)\simn\)中找到任何一个\(j\),满足\(a_j>a_i\)就算满足条件。进一步思考,为了使操作数最小,对于每一个\(1(1\leqi\leqk)\),都找一个在\((k+1)\simn\)中第一个大于\(a_i\)的数,便于它交换。那么......
  • 关于pulp.solve()的报错,pulp.apis.core.PulpSolverError: Pulp: Error while executin
     File"E:\python\建模\.venv\Lib\site-packages\pulp\apis\coin_api.py",line112,inactualSolve  returnself.solve_CBC(lp,**kwargs)      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File"E:\python\建模\.venv\Lib\site-packages\pulp\a......
  • ASP.NET Core Blzor 1:创建准备项目
      本章将创建贯穿本书这一部分的示例项目。1创建项目dotnetnewglobaljson--sdk-version3.1.101--outputMyAdvanceddotnetnewweb--no-https--outputMyAdvanced--frameworknetcoreapp3.1dotnetnewsln-oMyAdvanceddotnetslnMyAdvancedaddMyAdvanced ......
  • AUCell和AddModuleScore函数进行基因集评分
    AUCell和AddModuleScore分析是两种主流的用于单细胞RNA测序数据的基因集活性分析的方法。这些基因集可以来自文献、数据库或者根据具体研究问题进行自行定义。AUCell分析原理:1、AUCell分析可以将细胞中的所有基因按表达量进行排序,生成一个基因排名列表,表达量越高的基因排名......
  • wx.miniapp.IAP实现 Apple 支付
    使用微信Dount多端平台提供的wx.miniapp.IAP实现Apple支付的详细流程及注意事项前言微信Dount多端平台最近内测提供了可以将小程序转化为安卓和iOS的能力,想把之前做过的小程序转化为iOS,因为内容含有虚拟物品付费,所以就需要用到Apple支付,多端平台提供了wx.miniapp.IAP一......