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标准函数库的更多相关文章

  1. [Unity] Cg标准函数库

  2. [Unity] Shader - CG语言 和 HLSL语言

    CG 跟 HLSL几乎是一摸一样的. (HLSL官方参考,包含语法格式,函数库,关键字,在这个地方: http://msdn.microsoft.com/en-us/library/bb509638( ...

  3. [Unity] Shader - CG语言 流程控制语句

    CG语言中: 不支持 switch 语句(可以写,但不能很好的执行.) 循环语句中, 循环次数不能大于 1024 ,否则会报错. If...ELSE 条件判断语句: if (true) { } els ...

  4. Unity shader(CG) 写一个 散色、折射、反射、菲涅尔、gamma、简单后期屏幕特效

    http://www.lai18.com/content/506918.html 1.自生要求是很重要的,当然不是什么强迫工作之类的,而是自己有限的能力上不断的扩展兴趣上的内容. 2.用生活的眼光去发 ...

  5. 【CG】CG标准函数库——数学函数

  6. CG 标准函数库

    (1)数学函数 函数 功能描述 abs(x) 返回输入参数的绝对值 acos(x) 反余切函数,输入参数范围为[-1,1], 返回[0,π]区间的角度值 all(x) 如果输入参数均不为0,则返回tu ...

  7. CG标准函数库

    (1)数学函数 函数 功能描述 abs(x) 返回输入参数的绝对值 acos(x) 反余切函数,输入参数范围为[-1,1], 返回[0,π]区间的角度值 all(x) 如果输入参数均不为0,则返回tu ...

  8. CG标准函数库——数学函数(GPU编程与CG语言之阳春白雪下里巴人)

  9. Cg(C for Graphic)标准函数库之数学函数与几何函数

    和 C 的标准函数库类似, Cg 提供了一系列内建的标准函数.这些函数用于执行数学上的通用计算或通用算法(纹理映射等),例如,需要求取入射光线的反射光线方向向量可以使用标准函数库中的 reflect ...

随机推荐

  1. Python自动化学习--元素定位

    from selenium import webdriver import time driver = webdriver.Chrome() driver.get("https://www. ...

  2. Linux之目录配置

    Linux目录配置标准:FHS 主要目的,希望让用户可以了解到已安装软件通常放置于哪个目录下. FHS定义了三层主目录:/./usr./var 1. /(root,根目录) (1)根目录与开机.还原. ...

  3. 2019 计蒜之道 复赛 D. “星云系统”(单调栈)

    VIPKID 是在线少儿英语教育平台,网络稳定是在线教育课程质量的红线,VIPKID 为此推出了全球最稳定的教育网络系统 -- "星云系统".星云系统目前建立了覆盖全球 3535 ...

  4. 35C3 CTF - Web - php

    参考链接 https://ctftime.org/task/7404 题目描述 PHP's unserialization mechanism can be exceptional. 解题流程 程序代 ...

  5. JavaScript秒针转换00:00:00代码

    var str  = realFormatSecond(e.target.currentTime);   console.log(e.target.scrollTop); //1255256252 c ...

  6. flask中自定义日志类

    一:项目架构 二:自定义日志类 1. 建立log.conf的配置文件 log.conf [log] LOG_PATH = /log/ LOG_NAME = info.log 2. 定义日志类 LogC ...

  7. Markdown的使用和计算机基础

    TOC] 一级标题 这不是开玩笑 你问我为什么? 粗的才好(滑稽) 什么!明明有人推我 ==一闪一闪亮晶晶== 我上面有人^人在这^ water?H~2~O(下标) hello world! hell ...

  8. 移动web开发之像素和DPR详解

    前话: 像素在web开发中几乎天天用到,但到底什么是像素,移动端和桌面端的像素有区别吗,缩放对像素有影响吗,视网膜屏幕和像素有什么关系?关于这些问题,可能就不清楚了.本文将介绍关于像素的相关知识 什么 ...

  9. 小程序-登录-token

    1.前端调用wx.login()获取code值 2.前端通过调用wx.getUserInfo获取iv.rawData.signature.encryptedData等加密数据,传递给后端 3.服务器通 ...

  10. transform-origin属性

    一.transform-origin的作用 transform-origin改变元素基点 (transform-origin是变形原点,原点就是元素绕着旋转或变形的点) 注意:该属性只有在设置了tra ...