Skip to content

入口函数 ​

Custom Surface Shader 的入口函数使用固定签名。入口函数名称由 Declaration 块中的 EntryPoint 指定。

签名 ​

void EntryPoint(vec2 uv, vec3 worldPosition, inout StandardSurfaceOutput surfaceOutput)

参数 ​

参数数据类型访问方式说明生效环境
uvvec2只读当前片元的插值纹理坐标全部
worldPositionvec3只读当前片元的世界空间位置全部
surfaceOutputStandardSurfaceOutput读写(inout)表面输出结构;入口函数读取或修改其中的字段全部

声明入口 ​

EntryPoint 的值必须与 Code 块中对应入口函数的名称一致:

Declaration
{
    [Option] EntryPoint: "MySurface"
}
Code
{
    void MySurface(vec2 uv, vec3 worldPosition, inout StandardSurfaceOutput surfaceOutput) {
        // 修改 surfaceOutput
    }
}

限制 ​

  • CSS 入口不接收材质阶段的 StandardSurfaceInput。
  • 入口参数中只有 uv、worldPosition 和 surfaceOutput。需要读取的其他外部数据必须先声明为 Property;引擎内置值同样通过 Property 的 BuiltIn 绑定声明。
  • surfaceOutput 使用 inout 修饰。入口函数可读取字段当前值,也可写入新值。
  • 写入字段是否影响最终画面取决于渲染环境,详见标准表面输出。