> 原文：https://www.bilibili.com/opus/1178669996791824392
> 作者分享了一套完整的 MMD 渲染管线，用于制作高质量静画/视频。

---

## 一、使用的 MME 效果清单与技术分析

### 🎨 色彩与材质

| MME 名称 | 功能 | Unity 实现 |
|----------|------|------------|
| **nbHSV** | 色相/饱和度/明度调节，分材质控制（hair/face/body） | ✅ 很轻松。用 Shader Graph 写 HSV 调整节点，或直接使用 Post Processing 的 Color Grading + Material Property 区分 |
| **lv2shader** | 主渲染着色器，提供精细阴影、柔和阴影（第13行调阴影柔和度）、可分离唇部材质阴影 | ✅ Unity 中这就是 Toon Shader。用 Shader Graph 自定义卡通渲染，half-lambert + ramp texture 即可实现，阴影柔和度通过 ramp 图控制 |
| **SPA 贴图** | 高光贴图（Specular），仅给前发上 | ✅ 标准 PBR/Toon shader 中直接使用 Specular/Smoothness 贴图，或自定义高光遮罩 |
| **発光コンタクト** | 金属提亮效果 | ✅ Emission map + metallic/smoothness 控制 |
| **m4layer 叠加** | 混合多种渲染器结果（如 ps 渲 + dg 渲），增强质感 | ✅ Unity 中可以用多个 Camera + RenderTexture 叠加，或 Shader 中多 Pass 混合 |

### ✨ 后处理效果

| MME 名称 | 功能 | Unity 实现 |
|----------|------|------------|
| **motionblur3L** | 运动模糊 | ✅ URP/HDRP 内置 Motion Blur，或 Post Processing Stack |
| **lightbloom SJ** | 泛光（Bloom），支持 Mask（除眼睛高光外全遮罩） | ✅ 内置 Bloom，用 Custom Pass / Render Feature 做 Bloom Mask |
| **g ALB** | 自发光（眼睛高光），可做"关灯"效果 | ✅ Emission material property，用 MaterialPropertyBlock 动态控制强度做开关灯 |
| **SSAA 4xL2** | 超采样抗锯齿 | ✅ MSAA 或 SSAA（Render Scale > 1.0）|
| **sdFxaa** | FXAA 抗锯齿 | ✅ 内置 FXAA |
| **sdUnsharpMask** | USM 锐化 | ✅ Post Processing 中无内置，但可写自定义 Shader 或下载社区方案 |
| **sdSSGI** | 屏幕空间全局光照，可调色相/饱和度/阈值，支持遮罩 | ✅ 这是最复杂的。可以用 SDFGI（HDRP）、SSGI 插件、或自己写 Screen Space GI Shader。URP 中可用 Renderer Feature + Compute Shader 近似实现 |
| **PostRimLightToon** | 边缘光，可调粗细，替代头发高光 | ✅ Toon Shader 中加 Fresnel/Rim Light 节点即可，非常标准 |
| **PostDropHair** | 头发在前额的投影（阴影），精度比 lv2 更高 | ✅ Unity 中可用 Projector 或 Decal 系统，或用第二个 Pass 渲染阴影。URP 中 Custom Render Feature 也适用 |
| **ikboken** | 景深（DOF），可随镜头远近 K 帧 | ✅ 内置 Depth of Field（Bokeh 模式） |
| **msGradation1/2** | 渐变叠加（增加对比 + 上方渐变光），模拟动画摄影打光 | ✅ UI 层叠加渐变图，或用 Post Processing 自定义 Color Lookup / Gradient Overlay |
| **Cheaplens** | 暗角（Vignette） | ✅ 内置 Vignette |
| **PostAlphaMask** | 眼睛透过头发（Alpha 排序/遮罩） | ✅ Shader 中控制 Render Queue + Alpha Clip / ZWrite，或用 Stencil Buffer 精确控制 |
| **ikEdgeBlur** | 边缘模糊加深，增加质感 | ✅ 可用 Sobel 边缘检测 + 模糊 + 加深，自定义后处理 Shader |
| **SwapScreen/SplitView** | 渲染前后对比 | ✅ Editor 工具，Unity 中可用 A/B 对比或 Custom Render Feature 显示 |

### ✏️ 轮廓线

| MME 名称 | 功能 | Unity 实现 |
|----------|------|------------|
| **krtoon2**（3个） | 轮廓线，分材质控制粗细、五官 noedge、后发 halfedge | ✅ Inverted Hull 方法（经典）、Sobel 后处理描边、或 Unity Toon Shader (UTS) |
| **Dippen Natural + 控制器** | 另一套轮廓线系统，分材质调强度（五官 0.0，前发 0.25） | ✅ 同上。Unity 中不同材质用不同描边参数即可 |

### 💡 打光

| 光源 | 功能 | Unity 实现 |
|------|------|------------|
| **PostPointLight ×4** | 不同颜色/角度的点光源绑定头部：白色提亮、紫色轮廓光、暖色渐变光、发尾提亮。每个光源都有独立的头发/五官/皮肤遮罩 | ✅ Unity 内置 Point Light + 自定义 Light Layer/Culling Mask 精确控制每个光源照哪些物体。遮罩用 Light Cookies 或 Light Layers（URP/HDRP） |
| 绑定头部 | 光源 Follow 头部骨骼 | ✅ 直接将 Light 设为头部的子物体，或脚本跟随 |

---

## 二、核心技术栈总结

```
📦 渲染管线层次：
├── 材质层 (Material)
│   ├── 卡通主渲（lv2shader / Toon Shader）
│   ├── HSV 调色（nbHSV）
│   ├── 高光贴图（SPA）
│   ├── 自发光（g ALB）
│   ├── 轮廓线（krtoon2 + Dippen）
│   ├── 边缘光（PostRimLightToon）
│   ├── 头发投影（PostDropHair）
│   └── Alpha 透过（PostAlphaMask）
├── 光照层 (Lighting)
│   ├── 多点光源（PostPointLight ×4+）
│   └── 屏幕空间 GI（sdSSGI）
├── 后处理层 (Post Processing)
│   ├── Bloom（lightbloom SJ）
│   ├── 运动模糊（motionblur3L）
│   ├── 景深（ikboken）
│   ├── 抗锯齿（SSAA + FXAA）
│   ├── 锐化（sdUnsharpMask）
│   ├── 渐变叠加（msGradation）
│   ├── 暗角（Cheaplens）
│   └── 边缘模糊（ikEdgeBlur）
└── 调试层
    └── 渲染对比（SwapScreen）
```

---

## 三、Unity 中实现的可行性评估

| 方面 | 评估 |
|------|------|
| **总体可行性** | ✅ **完全可以实现**，所有效果 Unity 都支持 |
| **推荐渲染管线** | **URP**（平衡效果与性能）或 **HDRP**（最佳画质）。Built-in 也行但需要更多手写 |
| **推荐工具** | Shader Graph + VFX Graph + Post Processing + Custom Render Features |
| **难度分布** | 90% 效果 = 简单（内置/社区方案）；sdSSGI = 中等（需手写或找插件）；分材质遮罩系统 = 需要仔细设计 Render Feature / Stencil |
| **关键依赖** | Unity Toon Shader (UTS3)、Post Processing、Custom Renderer Features |

### 🎯 在 Unity 中实现这个配方的推荐路线

1. **基础渲染**：用 **UTS (Unity Toon Shader)** 或 **Shader Graph 自建 Toon Shader** 作为主渲，实现 ramp 阴影、轮廓线、边缘光
2. **材质控制**：通过 Material Property Block 或不同 Material 实例，实现分材质控制 HSV、描边粗细、自发光等
3. **光照**：多点光源 + Light Layers / Culling Mask 实现精确遮罩。光源跟随骨骼用脚本绑定
4. **后处理**：URP 内置 Volume 组件一键实现 Bloom、DOF、Motion Blur、Vignette、Color Grading
5. **高级效果**：sdSSGI 和 PostDropHair 用 Custom Render Feature 实现，或找 Asset Store 插件
6. **调试对比**：写一个简单的 Editor 脚本做 SplitView 即可

---

## 四、结论

这篇文章本质上是一套完整的 **三渲二（NPR/Toon）渲染管线**，涵盖了：

- **Toon Shader**（卡通阴影 + ramp 控制）
- **多套轮廓线系统**（krtoon2 + Dippen，分材质控制粗细和开关）
- **完整的后处理链**（Bloom、DOF、Motion Blur、Vignette、Color Grading、锐化、SSGI）
- **精细的多光源打光**（4 个以上点光源，各自有独立遮罩，跟随头部骨骼）
- **材质分层控制**（头发、皮肤、五官各自独立的 HSV / 发光 / 描边参数）
- **高级 NPR 技巧**（眼睛透过头发、头发投影、边缘模糊质感、渐变叠加）

所有这些技术在 Unity 中都有成熟的实现方案。核心投入在 **Toon Shader 的自定义** 和 **遮罩系统的设计** 上，其余后处理效果 Unity 基本都有开箱即用的支持。

原始配布链接汇总：

- nbHSV：https://www.nicovideo.jp/watch/sm39274461 （作者：のべ男）
- lv2shader：https://www.bilibili.com/video/BV1DqkSBbEF8/ （作者：winglayer）
- motionblur3L：https://seiga.nicovideo.jp/seiga/im3061709 （作者：そぼろ）
- lightbloom SJ：https://www.aplaybox.com/details/model/RKjvijIaYsVX （作者：三金络合物）
- g ALB：https://bowlroll.net/file/182490 （作者：呉石）
- krtoon2：https://kagitaba.fanbox.cc/posts/4962246 （作者：鍵束）
- Dippen：https://fujisunflower.fanbox.cc/posts/1422906 （作者：サンフラワーふじ）
- sdSSGI：https://www.nicovideo.jp/watch/sm43948524 （作者：サンドマン）
- PostRimLightToon：https://bowlroll.net/file/146255 （作者：P.I.P）
- PostDropHair：https://bowlroll.net/file/178761 （作者：P.I.P）
- ikboken（三金改造版）：https://www.bilibili.com/opus/658890877048979479
- msGradation：https://bowlroll.net/file/210901 （作者：ましまし）
- Cheaplens：https://bowlroll.net/file/337397 （作者：そぼろ）
- PostAlphaMask：https://bowlroll.net/file/152266 （作者：P.I.P）
- SwapScreen/SplitView：https://ux.getuploader.com/Elle_DataPort/download/19 （作者：データ P）
- PostPointLight (tn)：https://bowlroll.net/file/188141 （作者：呉石）
- PostPointLight：https://www.nicovideo.jp/watch/sm14626601 （作者：ビームマンP）
- 発光コンタクト：https://bowlroll.net/file/169064 （作者：996）
