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 代码段中开启相应的宏,示例代码如下:

  1. CCProgram macro-remapping %{
  2. ...
  3. //使用第二套 UV
  4. #define CC_SURFACES_USE_SECOND_UV 1
  5. //使用世界副法线
  6. #define CC_SURFACES_USE_TANGENT_SPACE 1
  7. ...
  8. }

使用示例

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

  1. #define CC_SURFACES_VERTEX_MODIFY_WORLD_POS
  2. vec3 SurfacesVertexModifyWorldPos(in SurfacesStandardVertexIntermediate In)
  3. {
  4. vec3 worldPos = In.worldPos;
  5. worldPos.x += sin(cc_time.x * worldPos.z);
  6. worldPos.y += cos(cc_time.x * worldPos.z);
  7. return worldPos;
  8. }