【Unity Shader】---CG标准函数库
1、CG标准函数库
和C的标准函数库类似,CG也提供了一系列的内建函数库,这些函数用于计算数学上的通用计算或算法(如纹理映射)。
例如:求取入射光线的反射光线用Reflect函数,求折射光线用Reflact函数,作矩阵乘法运算用mul函数。有些函数和GPU
指令相对,所以执行效率非常高。绝大部分标准函数都被重载过,用于支持不同长度的数组或向量做参数。
2、CG标准函数库分为5个部分
(1)数学函数(Mathematical Functions)
数学函数用于数学上的计算,包括三角函数、幂函数、圆函数、向量和矩阵操作函数。并重载了这些函数以适应不用长度和类型的参数。

(2)几何函数(Geometric Functions)

(3)纹理映射函数(Texture Map Functions)

s象征一元、二元、三元纹理坐标;
z代表使用“深度比较(depth comparison)”的值;
q表示一个透视值(perspective value,其实就是透视投影后所得到的齐次坐标的 后一位),这个值被用来除以纹理坐标(s),
得到新的纹理坐标(已归一化到0 和1 之间)然后用于纹理查询。纹理函数非常多,总的来说,按照纹理维数进行分类,
即:1D纹理函数, 2D 纹理函数,3D纹理函数,已经立方体纹理。需要注意,TexREC函数查询的纹理实际上也是二维纹理。
3D 纹理,另一个比较学术化的名称是“体纹理(Volume Texture)”,体纹理通常用于体绘制,体纹理用于记录空间中的体细节数据。
还有一类较为特殊的纹理查询函数以 proj 结尾,主要是针对投影纹理进行查询。所谓投影纹理是指:将纹理当做一张幻灯片投
影到场景中,使用投影纹理技术需要计算投影纹理坐标,然后使用投影纹理坐标进行查询。使用投影纹理坐标进行查询的函数就是
投影纹理查询函数。本质来说,投影纹理查询函数和普通的纹理查询函数没有什么不同,唯一的区别在于“投影纹理查询函数使用计
算得到的投影纹理坐标,并在使用之前会将该投影纹理坐标除以透视值”。
举例而言,计算得到的投影纹理坐标为float4 uvproj,使用二维投影纹理查询函数:
tex2Dproj(texture,uvproj);等价于按如下方法使用普通二维纹理查询函数:
float4 uvproj = uvproj/uvproj.q; tex2D(texture,uvproj)
(4)偏导数函数(Derivative Functions)

函数 ddx和 ddy 用于求取相邻像素间某属性的差值。
函数 ddx和 ddy 的输入参数通常是纹理坐标。
函数 ddx和 ddy 返回相邻像素键的属性差值。
(5)调试函数(Debugging Functions)
Debug函数的目的是允许一个程序被编译两次——一次使用Debug选项,另一次则不选择。通过
指向两个程序,有可能获得一个包含程序的最后输出的帧的缓冲器和另一个包含了一个为了
调试为目的需要检查的中间值的帧缓冲器。

【Unity Shader】---CG标准函数库的更多相关文章
- [Unity] Cg标准函数库
- [Unity] Shader - CG语言 和 HLSL语言
CG 跟 HLSL几乎是一摸一样的. (HLSL官方参考,包含语法格式,函数库,关键字,在这个地方: http://msdn.microsoft.com/en-us/library/bb509638( ...
- [Unity] Shader - CG语言 流程控制语句
CG语言中: 不支持 switch 语句(可以写,但不能很好的执行.) 循环语句中, 循环次数不能大于 1024 ,否则会报错. If...ELSE 条件判断语句: if (true) { } els ...
- Unity shader(CG) 写一个 散色、折射、反射、菲涅尔、gamma、简单后期屏幕特效
http://www.lai18.com/content/506918.html 1.自生要求是很重要的,当然不是什么强迫工作之类的,而是自己有限的能力上不断的扩展兴趣上的内容. 2.用生活的眼光去发 ...
- 【CG】CG标准函数库——数学函数
- CG 标准函数库
(1)数学函数 函数 功能描述 abs(x) 返回输入参数的绝对值 acos(x) 反余切函数,输入参数范围为[-1,1], 返回[0,π]区间的角度值 all(x) 如果输入参数均不为0,则返回tu ...
- CG标准函数库
(1)数学函数 函数 功能描述 abs(x) 返回输入参数的绝对值 acos(x) 反余切函数,输入参数范围为[-1,1], 返回[0,π]区间的角度值 all(x) 如果输入参数均不为0,则返回tu ...
- CG标准函数库——数学函数(GPU编程与CG语言之阳春白雪下里巴人)
- Cg(C for Graphic)标准函数库之数学函数与几何函数
和 C 的标准函数库类似, Cg 提供了一系列内建的标准函数.这些函数用于执行数学上的通用计算或通用算法(纹理映射等),例如,需要求取入射光线的反射光线方向向量可以使用标准函数库中的 reflect ...
随机推荐
- C# wpf image绑定viewModel没有显示图片
在wpf绑定图片,用viewModel的图片绑定image 我是用viewModel.cs public class viewModel:INotifyPropertyChanged { #regio ...
- PAT Basic 1014 福尔摩斯的约会 (20 分) Advanced 1061 Dating (20 分)
大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm.大侦探很快就明白了,字条上奇 ...
- Xor Sum 2 AtCoder - 4142 (异或前缀和性质+ 双指针)
Problem Statement There is an integer sequence A of length N. Find the number of the pairs of intege ...
- thinkphp5 yii2 laravel5.1 框架性能压测对比图
nginx+php7环境,opcache已经开启,每测试一个框架都重启服务器并且预热访问三次,压测工具ab.exe. laravel,thinkphp,yii都已关闭debug,该做的优化命令都搞了, ...
- django orm(2)
目录 聚合函数 分组查询 F与Q查询 F查询 Q查询 事务 Django中的事务 orm字段及参数 自定义char字段 聚合函数 这里的聚合函数和SQL里的聚合函数对应,在使用前需要先进行模块的导入: ...
- 049:ORM常用Field详解(1)
常用字段: 在 Django 中,定义了一些 Field 来与数据库表中的字段类型来进行映射.以下将介绍那些常用的字段类型. AutoField: 映射到数据库中是 int 类型,可以有自动增长的特性 ...
- 【hackerrank】Type of Triangle
题目如下: Write a query identifying the type of each record in the TRIANGLES table using its three side ...
- 8:Spring Boot中thymeleaf模板中使用 Shiro标签
1,添加 pom.xml grade: compile('com.github.theborakompanioni:thymeleaf-extras-shiro:1.2.1') 2, Subject ...
- vue多层传递$attrs
今天在使用$attrs的时候遇到一个问题: 父组件: <PanelContainer name="正向舆情"> <PositiveOpinion opinion= ...
- PHP超大文件上传与下载
前段时间做视频上传业务,通过网页上传视频到服务器. 视频大小 小则几十M,大则 1G+,以一般的HTTP请求发送数据的方式的话,会遇到的问题:1,文件过大,超出服务端的请求大小限制:2,请求时间过长, ...