0%

CG语言常用语义

前言

语义词,表示输入图元的数据含义(是位置信息,还是法向量信息),也表明这些图元数据存放的硬件资源(寄存器或者纹理缓冲区)。顶点着色程序和片段着色程序中Varying inputs 类型的输入,必须和一个语义词相绑定,这称之为绑定语义(binding semantics)。

CG 参数修饰词

参数修饰词往往用于对值的输入输出传递。

修饰词 描述
in 修饰形参只用于输入,进入函数体时被初始化(或者之前已经初始化),且形参值的改变不会影响实参,典型的值传递。当不加修饰词时,默认修饰为 in
out 修饰形参只用于输出,进入函数体时没有被初始化,这种类型形参一般是一个函数的运行结果。一般来说是用于达到多值返回的效果。
inout 修饰形参既可用于输入也可用于输出,典型的引用传递。

语义词

从应用传递参数到顶点着色器

语义 描述
POSITION 模型空间的顶点位置向量,通常为 float4
NORMAL 顶点法线向量,通常为 float3
TANGENT 定点切线, 通常为 float4
TEXCOORD (0~N) 该顶点纹理坐标 0~n组
COLOR 顶点颜色 通常为 fixed4 或 float4

绑定顶点函数的参数

从顶点着色器到片元着色器

语义 描述
SV_POSITION 裁剪空间的顶点坐标,结构体必须包含一个该修饰词的变量(一般系统直接使用)
COLOR0 通常用于输出第一组顶点颜色,往往可以用于传递值,3位向量也可以
COLOR1 通常用于输出第二组顶点颜色
TEXCOORD (0~7) 通常用于输出纹理坐标,0~7组纹理

绑定顶点函数的返回,或者片元函数的参数

从片元着色器输出

语义 描述
SV_Target 输出值将会存储到渲染目标中,显示到屏幕的颜色像素。

(绑定在片元函数的返回)
(由于片元着色器完成后,就基本到了GPU流水线的末端了,因此语义较少)

参考

Unity Shader语义