Skip to content

格式

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;
}