Vertex Shader 的输入值

参数列表

Vertex Shader 输入值都在 SurfacesStandardVertexIntermediate 结构体中,作为函数参数传入。

Vertex Shader 输入值 类型 使用时需要开启的宏 含义
position vec4 N/A 本地坐标
normal vec3 N/A 本地法线
tangent vec4 CC_SURFACES_USE_TANGENT_SPACE 本地切线和镜像法线标记
color vec4 CC_SURFACES_USE_VERTEX_COLOR 顶点颜色
texCoord vec2 N/A UV0
texCoord1 vec2 CC_SURFACES_USE_SECOND_UV UV1
clipPos vec4 N/A 投影坐标
worldPos vec3 N/A 世界坐标
worldNormal vec4 N/A 世界法线和双面材质标记
worldTangent vec3 CC_SURFACES_USE_TANGENT_SPACE 世界切线
worldBinormal vec3 CC_SURFACES_USE_TANGENT_SPACE 世界副法线

宏开关

当需要使用带有宏开关的输入参数时,需要在 macro-remapping 代码段中开启相应的宏,示例代码如下:

CCProgram macro-remapping %{
    ...
    //使用第二套 UV
    #define CC_SURFACES_USE_SECOND_UV 1
    //使用世界副法线
    #define CC_SURFACES_USE_TANGENT_SPACE 1
    ...
}

使用示例

在任何带 SurfacesStandardVertexIntermediate 参数的函数中,都可以直接访问到相关参数,以 SurfacesVertexModifyWorldPos 函数为例:

#define CC_SURFACES_VERTEX_MODIFY_WORLD_POS
vec3 SurfacesVertexModifyWorldPos(in SurfacesStandardVertexIntermediate In)
{
    vec3 worldPos = In.worldPos;
    worldPos.x += sin(cc_time.x * worldPos.z);
    worldPos.y += cos(cc_time.x * worldPos.z);
    return worldPos;
}

条与 "" 相匹配的结果

    没有与 "" 匹配的结果