# ShaderSDK 概述
ShaderSDK 提供面向 RenderDragon 的 Custom Surface Shader(CSS)开发能力。CSS 在引擎既有表面数据的基础上读取输入并写入 StandardSurfaceOutput,从而影响指定渲染目标的表面着色结果。
本文档当前只提供 CSS r21u12 API 参考,用于查询着色器入口、表面输出、Property、引擎内置能力以及根类型与材质的对应关系。工具操作、工程创建、编译发布和效果案例不在本文档范围内。
# 核心模型
一个 CSS 由以下几部分组成:
| 部分 | 作用 | 参考 |
|---|---|---|
| 根类型 | 指定 CSS 作用的玩法目标,例如地形、实体或天空 | 根类型与材质映射 |
| 属性 | 在 Properties 块中声明作者参数、纹理和引擎提供的只读数据 | 属性 |
| 入口函数 | 接收固定输入并修改表面结果 | 入口函数 |
| 标准表面输出 | 通过 StandardSurfaceOutput 承载颜色、透明度以及 PBR 表面参数 | 标准表面输出 |
| 内置能力 | 提供时间、相机、天气等 Uniform 以及游戏状态辅助函数 | 保留内置 Uniform、内置函数 |
完整的查询入口见 API 参考索引。
# 渲染环境
CSS 的输出字段在两种渲染环境中的有效性不同:
| 环境 | 生效的表面输出 |
|---|---|
| 花式渲染器(Fancy Renderer) | Albedo、Alpha |
| 灵动视效(Vibrant Visuals) | Albedo、Alpha、Metallic、Roughness、Emissive、Subsurface、ViewSpaceNormal |
API 表格中的“全部”表示字段在花式渲染器和灵动视效中均有效;“仅灵动视效”表示字段只参与灵动视效的 PBR 路径,花式渲染器不使用该字段。
# 文档约定
- 标识符、类型名、函数名、属性名和材质名保留规格中的英文拼写;这些名称区分大小写时,应按文档原样使用。
- “必须”表示满足当前规格所需的要求;“应”表示推荐做法;“可”表示可选能力。
- 保留内置 Uniform 的兼容性使用规格原词 Upgradeable: Yes/No。No 表示不保证未来版本继续支持,不等同于当前已弃用。
- “当前版本”指本文档适用的 CSS r21u12;未来规划不描述为当前可用能力。
# 版本与兼容性
本文档以 CSS r21u12 规格为准。当开发者将项目升级游戏版本时,应对照目标版本的官方文档检查项目实际使用的以下内容:
- 项目使用的 Upgradeable: No 保留内置 Uniform 及其辅助函数在目标版本中是否仍然存在,以及类型和语义是否发生变化;
- 项目使用的根类型在目标版本中是否仍受支持,以及它与具体材质之间的映射是否发生变化;
- 灵动视效目标在目标版本中是否要求分别覆盖 Prepass 与 ForwardPBR 材质。
开发者只需检查项目实际使用的 API。若目标版本调整或移除了相关能力,应按目标版本文档修改实现后再进行发布验证。
网易大神
扫码下载网易大神