【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 ...
随机推荐
- Python 通过wmi获取Window服务器硬件信息
通过pip install wmi安装wmi 查看cpu序列号: wmic cpu get processorid 查看主板序列号: wmic baseboard get serialnumber 查 ...
- python基础操作---string
#coding:utf-8 var1 = 'Hello World!' print var1[::] print len(var1) print var1[0:len(var1)] print var ...
- CIC许可更新
打开IA软件,点击软件中的[License],可以查看当前许可是否可用或者过期,如果过期,点击下方的[Load License],选择最新的I3许可文件加载,重启电脑.
- 计蒜客 蓝桥模拟 F. 结果填空:数独
代码: #include <cstdio> #include <cstdlib> #include <cstring> #include <iostream& ...
- PHP程序员要看的书单
想提升自己,还得多看书!多看书!多看书! 下面是我收集到的一些PHP程序员应该看得书单及在线教程,自己也没有全部看完.共勉吧! Github地址:https://github.com/52fhy/ph ...
- Flask【第1篇】:Flask介绍
Flask入门 一.Flask介绍(轻量级的框架,非常快速的就能把程序搭建起来) Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Wer ...
- 043:Django使用原生SQL语句操作数据库
Django使用原生SQL语句操作数据库 Django配置连接数据库: 在操作数据库之前,首先先要连接数据库.这里我们以配置 MySQL 为例来讲解. Django 连接数据库,不需要单独的创建一个连 ...
- 在mac上安装rabbitmq
在 OS X 上安装 RabbitMQ¶ 在 Snow Leopard 上安装 RabbitMQ 最简单的方式就是 Homebrew ——OS X 上的一款新颖别致,光彩动人的包管理系统. 在本例中, ...
- echart--如何将echart的配置项,放到webpack中(CHARTTEMPLATE时)
1.假如,我们已经写好了组件,我们需要把它放入到一个环境中去 2.首先在index.html中,我们需要写一个dom结构 3.新建一个,chart.js文件(这个里面放组件的代码) 1>开始创建 ...
- HTML和CSS实现图片翻转效果
实现图片翻转,首先来分析一下我们希望实现的是怎样的翻转效果?又该如何去实现呢? 一.希望实现的效果 页面上的图片在光标悬停在上面的时候会发生翻转效果,翻转过后显示出背面的说明文字. 鼠标没有悬停在上面 ...