shader入门基础知识三
shader入门基础知识三
- content
常用的语义,Cg 中的变量,后续还会有其他的补充
完成第一个实例后 shader 入门基础知识二,一些我们之前还不是很清楚的地方需要扩展。
Cg 代码中与 Properties 关联
前文提过需要使用 Properties 中的代码,需要在 Cg 代码块中声明类型和名称都匹配的变量,这里完善shader 入门基础知识二中的表格,方便之后使用
属性类型 | 例子 | Cg 变量类型 |
---|---|---|
Int | _Int(“Int”,Int)=2 | float |
Float | _Float(“Float”,Float)=2 | float,half,fixed |
Range | _Range(“Range”,Range(1.0,3.0))=2.0 | float,half,fixed |
Color | _Color(“Color”,Color)=(1.0,1.0,1.0,1.0) | float4,half4,fixed4 |
Vector | _Vector(“Vector”,Vector)=(1.0,1.0,1.0,1.0)) | float4,half4,fixed4 |
2D | _2D(“2D”,2D)=””{} | sampler2D |
Cube | _Cube(“Cube”,Cube)=”white”{} | samplerCube |
3D | _3D(“3D”,3D)=”white”{} | sampler3D |
- float:32 位高精度浮点数。
- half:16 位中精度浮点数。范围是[-60000, +60000]
- fixed:11 位低精度浮点数。范围是[-2.0, 2.0]
根据使用情形,尽量使用低精度的数据类型。例如采样颜色的时候使用 fixed 类型。
顶点着色器输入结构体中常用语义,模型输出到 shader 的数据
语义 | 描述 |
---|---|
NORMAL | 顶点法线,通常是 float3 类型 |
POSITION | 模型空间中的顶点位置,通常是 float4 类型 |
TANGENT | 顶点切线,通常是 float4 类型 |
TEXCOORDn | 模型纹理坐标,TEXCOORD0 表示第一组坐标纹理,依次类推,通常是 float2,float4 类型,ShaderModel4 一下版本最多支持 8 个纹理,4 和以上支持 16 个 |
COLOR | 顶点颜色,通常是 fixed4 或 float4 类型 |
顶点着色器输出结构体中常用语义,并且片元着色器的输入
语义 | 描述 |
---|---|
SV_POSITION | 裁剪空间中的顶点坐标,结构体中必须包含一个用该语义修饰的变量。否则将无法得到裁剪空间中的顶点坐标,也就无法把顶点渲染到屏幕上 |
COLOR0 | 输出第一组顶点颜色 |
COLOR1 | 输出第二组顶点颜色 |
TEXCOORDn | 通常用于输出纹理坐标,不是必须 |
片元着色器输出时常用语义
语义 | 描述 |
---|---|
SV_Target | 输出值将会储存到渲染目标(render target)中 |
为了让 Shader 能在所有平台下正常工作,需尽可能使用如下语义描述 Shader 的输入输出变量
SV_POSITION:顶点着色器输出的顶点位置 SV_Target:片元着色器的输出颜色
SV 即 system value
本文由作者按照 CC BY 4.0 进行授权