着色器片段(Chunk)

    着色器片段的语法基于 GLSL 300 ES,在资源加载时会进行预编译,生成目标 Shader 代码。

    资源管理器 面板中点击右键,选择 创建 -> 着色器片段(Chunk)

    片段模板

    Include 机制

    在标准 GLSL 语法基础上,Cocos Effect 引入了 C 语言风格的语法扩展 — Include 机制。

    通过 include 机制,可以在任意 Shader 代码(CCProgram 块或独立的头文件)中引入其他代码片段,如下所示:

    • 着色器片段的扩展名默认为 ,在 include 时可忽略。引入其他代码片段时可使用双括号或者尖括号,二者无区别,例如:

      1. #include <filename.chunk>
    • 所有不参与运行时实际计算流程的函数声明会在编译时被剔除,因此可以放心包含各类工具函数,不用担心生成的目标代码会有冗余;

    • 着色器片段引用可以指定基于当前文件目录的相对路径(以下统称“相对路径”),也可以指定基于编辑器 资源管理器 面板中 internal -> chunks 目录的相对路径(以下统称“项目绝对路径”)。两个目录下如果有同名文件,则后者(项目绝对路径)优先;
    • Creator 提供了一些内置着色器片段资源,主要包括一些常用的工具函数和标准光照模型等,位于 面板中的内置资源数据库(简称 DB)internal 的 目录下,因此可以不加目录直接引用。
    • 所有在同一个 Cocos Effect 文件中声明的 CCProgram 代码块都可以相互引用。