CG函数
来源:互联网 发布:vp影业 知乎 编辑:程序博客网 时间:2024/05/29 18:54
函数 :
自定义函数 :
自定义的函数必须要先声明才能被使用;
(1)、把函数定义在调用定制方法的方法(片段函数)前。
(2)、前向声明,前向声明方法的返回值类型、方法名和参数列表,一定没有方法体。
CG中所有的函数都是通过值拷贝进行传参,如果想要通过调用方法得到返回值进行赋值操作,可以通过out关键字。
如果需要把数组作为参数传递,那么,作为参数的数组必须要指定长度。有返回值的方法也是用return关键字。
CG中可以对color的一个分量直接进行赋值。
代码复用 :
使用CG中的include指令 :
新建 --> Misc --> Empty Text File,命名以 .cginc作为后缀 --> 将需要重复调用的方法粘贴到其中 --> 在shader中删掉关于此方法的前向引用,使用指令 :
#include " 目录 / 文件名 ",即可调用方法
CG中的内建函数 :
分为四类 :数学函数、几何函数、纹理函数、导数函数。
几何函数 :
distance() 函数,求距离
normalize()函数,归一化向量,把一个向量的长度变为1,方向不改变。
顶点函数和片段函数也可以有返回值,但是用return关键字会报缺失语义错误,解决方法 :在参数列表后加上语义,代表这个函数的返回值的语义。
float4 vert ( ) : COLOR
{
return ....;
}
同一种语义不能重复输出,比如想要对两个变量都进行POSITION语义输出,会矛盾。如果语义重复,可以使用语义TEXCOORD0(0~7)语义,只要不重复即可。
结构体 :
声明 :struct v2f {
float4 pos : POSITION;
float2 opos : TEXCOORD0;
}
使用 :v2f vert(in float2 objPos : POSITION) {
v2f o;
o.pos = float4(objPos,0,1);
o.opos = objPos;
return o;
}
fixed4 frag(v2f IN) : COLOR {
return IN.pos;
}
结构体也与函数一样,必须要先声明才能被使用。如果以结构体的方式输出,由于结构体中有多个成员,所以顶点函数不需要指明具体的语义。在结构体中包装的属性,只要与片段函数的语义相匹配,从顶点函数返回的值,片段函数就能使用。通过结构体的包装,让顶点和片段之间的数据传递变得很紧凑。
typedef struct {
} v2f; // 以typedef的方式声明的结构体也是可以的。
CG不支持指针和任何与指针相关的操作。
- CG 函数
- CG函数
- [UnityShader2]cg函数
- CG标准函数
- [UnityShader2]cg函数
- Cg内置函数
- Cg 入门5:函数1
- Cg入门6:函数2
- CG语言的数学函数
- IOS基础--CG函数篇
- CG
- cg
- cg
- Cg Shading Language 的内置函数表
- 学习Unity Shader使用CG 标准函数
- Shader学习之Cg语言五(Cg函数与标准函数库)
- Cg(C for Graphic)语言函数使用方法
- CG语言里的所有纹理映射函数
- Android7.1新特性 App Shortcuts
- PHP Closure创建匿名函数
- springMVC生成二维码
- Git Reset hard误操作回滚恢复代码
- HTML基本用法(一) · css将文字在一行中有序排列;
- CG函数
- Android开发之CoordinatorLayout使用详解一
- Java 字符串转换为字符串数组
- css伪元素用法大全
- JavaBean入门
- Maven内置隐式变量
- 多人开发 Git 分支管理详解
- C primer plus(编程练习)file-9.11-3
- DUBBO出错笔记(三)shiro 自定义realm注入失败解决办法