Cocos Creator:Vertex Shader 的输入值

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

Vertex Shader 的输入值

参数列表

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

Vertex Shader 输入值类型使用时需要开启的宏含义
positionvec4N/A本地坐标
normalvec3N/A本地法线
tangentvec4CC_SURFACES_USE_TANGENT_SPACE本地切线和镜像法线标记
colorvec4CC_SURFACES_USE_VERTEX_COLOR顶点颜色
texCoordvec2N/AUV0
texCoord1vec2CC_SURFACES_USE_SECOND_UVUV1
clipPosvec4N/A投影坐标
worldPosvec3N/A世界坐标
worldNormalvec4N/A世界法线和双面材质标记
worldTangentvec3CC_SURFACES_USE_TANGENT_SPACE世界切线
worldBinormalvec3CC_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;
}

3D建模学习工作室 翻译整理,转载请注明出处!

上一篇:Cocos Creator:Surface Shader 组装 (mvrlink.com)

下一篇:Cocos Creator:Fragment Shader 的输入值 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号