概述:什么是着色器包?

了解 MMDX12 着色器包的原理、支持的渲染管线、文件组织以及作用范围。

着色器包简介

MMDX12 着色器包(Shader Pack)允许针对各个角色模型独立替换材质的像素着色方式。无需修改软件底层的渲染管线,任何人都可以通过几个精简的文件,为模型赋予自定义卡通渲染(Cel-shading)或独特的动漫质感。

一个着色器包本质上是一个包含以下文件的文件夹:

  • pack.json:定义元数据、材质分类规则及可调参数的清单文件。
  • surface.hlsl:实现唯一着色函数(PackShade)的 HLSL 代码。
  • preview.png 或 preview.jpg(可选):在着色器管理器与在线展示馆中显示的预览图(推荐 16:9 比例)。
  • README.md、LICENSE(可选):说明文档与开源许可协议。

支持的渲染管线与作用范围

着色器包与实时播放及离线视频渲染流程深度整合。

生效的管线

  • 光栅化管线(Raster):常规播放模式、Studio 编辑器视口以及使用“래스터”(光栅化)渲染器的视频导出。
  • 实时光线追踪管线(RT):开启光线追踪的视口以及使用“실시간 RT”(实时光追)渲染器的视频导出。
  • 路径追踪与离线 GI(MMDX12 1.5.0 及以上):附带可选文件 pt_surface.hlsl 的包,也会作用于路径追踪和离线 GI 渲染器(静帧与视频)。详见 PT / GI 包。没有该文件的包在这些管线中使用默认着色。

保留默认着色模式的场景

  • 没有 pt_surface.hlsl 的包的路径追踪与离线 GI:使用 MMD 默认着色。离线 GI 渲染器始终绘制应用默认的描边。
  • 舞台(Stage)与场景道具(Prop):背景舞台和各类饰品道具不受角色着色器包影响,始终使用默认着色渲染。
  • 特殊视图:Studio 编辑器中的无光照(Unlit)、线框(Wireframe)以及正交四分视图。

引擎保障的功能

着色器包仅接管角色材质的像素着色。以下底层管线特性依然由引擎统一调度并正常运行:

  • 顶点蒙皮(Vertex Skinning)与骨骼变换
  • MMD 特有的外描边(Edge / Outline)
  • 级联阴影贴图及光线追踪阴影计算
  • 所有后期特效(辉光 Bloom、景深 DoF、TAA 抗锯齿、超分辨率放大等)

着色器包存放位置

以 MMDX12 启动程序所在目录为基准,分为两个存储路径:

  1. 内置包:<MMDX12 目录>/shaders/packs/<id>/
    • 随软件一同分发,无法在程序内部删除(如 hoyo_toon)。
  2. 已安装包:<MMDX12 目录>/shader_packs/<id>/
    • 保存从在线展示馆下载、通过 zip 导入或本地新建的包。在线安装的包中还会附带 .mmdx_install.json。

包 ID 规则

  • 仅支持小写字母 a-z、数字 0-9、下划线 _ 和连字符 -,长度不超过 64 个字符。
  • 内置包的 ID 拥有最高优先级,无法被用户包覆盖。
  • 若检测到重复 ID,后载入的包将被标记为“重复(Duplicate)”且无法选用。

后续阅读