格式
c++
#pragma vertex [NAME]描述
执行该命令用于给作为 顶点着色器(Vertex Shader)输入的函数命名,便于后续执行该函数设置将输入的顶点数据(包括位置、法线信息、UV 坐标、切线信息以及顶点颜色值)变换到 剪裁空间(Clip Space)的相关内容。
被 材质(Material)所引用的 着色器(Shader)必须执行此命令,并且需要在此函数中编辑将输入的顶点数据变换到 剪裁空间(Clip Space)的相关逻辑,否则该 着色器(Shader)无法通过编译。
字段
| 字段名 | 是否必须 | 字段值 | 描述 |
| [NAME] | 是 | < 自定义函数名 > | 给作为 顶点着色器(Vertex Shader)输入的函数命名,便于在后续着色器的逻辑中使用。 |
代码示例
本示例以顶点坐标转换为 剪裁空间(Clip Space)位置坐标,这也是 顶点着色器(Vertex Shader)必备的逻辑。您可以根据实际需要选取更多需要的语义,SandMod 支持的语义请参阅 支持语义 章节。
c++
//使用命名为 vert 的函数作为顶点着色器;
#pragma vertex vert
//通过结构体构造用于顶点着色器处理的顶点数据构成的新类型,类型命名为 vrt;
struct vrt
{
vec4 pos : POSITION; //顶点坐标;
};
//通过结构体构造用于由顶点着色器输出至片元着色器的新类型,类型命名为 v2f;
struct v2f
{
vec4 vertex : SV_POSITION; //剪裁空间坐标;
};
//顶点着色器输入的函数;
v2f vert(vrt i)
{
//定义变量作为接收顶点着色器处理结果;
v2f v;
//顶点位置信息的处理示例,不同着色器有不同处理逻辑;
v.vertex = vec4((i.pos.xy * 2.0),0.0,1.0);
//返回顶点着色器的结果;
return v;
}