✨ NidHogg_Avatar 二次元卡通着色器与全局控制系统
— 使用说明文档 (V3.5)
(下载链接在最最下面)
==================================================
一、前言:
大家好,我是一个刚开始学特效的小白,对代码和角色渲染完全不懂
做这套材质系统的起因,最近我想学习一下雨轩大佬的NBshader的使用,但 NBShader 必须在 URP 管线下运行,而我手头之前的练习工程全都是 Built-in 默认管线。
新开了一个 URP 工程后,我在市面上没找到顺手的二次元角色材质。正好听说现在 AI 辅助写代码挺成熟,我就想着能不能由我提具体的需求,让 AI 编写和排查代码,自己边测边改。
之后我去模之屋下载了一些二次元模型(比如演示用的远坂凛),解压后看到贴图文件夹时,里面有各种 LightMap、MaskMap、SDF 这类命名的贴图,完全不知道具体是干什么用的,也不知道该往 Shader 的哪个槽位里放。
由于对这些通道没有概念,我只能一边让 AI 帮我解释各个通道的作用并编写 Shader,一边自己在 Unity 里连线测试和排查问题。
来回调试打磨了一段时间,最后做出这个shader:
梳理并利用贴图:把一头雾水的各类贴图对应到了合适的功能槽位上,顺带搞明白了二次元模型靠各通道控制手绘阴影、高光和法线的底层逻辑。
还原与功能拓展:还原了常见的二分阴影、天使环高光、面部 SDF 动态阴影以及丝袜材质;同时结合做特效的实际需求,加入了双层能量辉光、消融飞散粒子,以及带顶点物理置换的冰冻与石化状态。
这套材质谈不上专业,代码里肯定还有不少不成熟的地方,但目前在自己的练习工程里运行稳定,效果也符合预期。写这个文档主要是做个记录,同时也分享给平时做练习、需要二次元角色材质展示效果的小伙伴。水平有限,各位大佬轻喷,欢迎多提建议。
--------------------------------------------------------------------------------------
目录
1. 文件构成
2. 极简模式与专业模式的区别
3. 不同贴图作用详解与槽位归宿
4. 材质使用方法(以远坂凛模型为例)
5. 总控脚本核心功能详解
6. 安装方式与工程下载
==================================================
1. 文件构成
--------------------------------------------------------------------------------------

本套系统由 2 个 URP 着色器与 2 个配套 C# 辅助脚本构成:
- Body.shader:核心主着色器。负责角色的身体、衣服、头发与面部渲染,支持部位切换、光影渐变、丝袜接管、溶解与冰石状态。
- EyeUber.shader:眼球专属着色器。负责二次元眼瞳渲染,支持高光视差、内部星空叠层、局部呼吸发光、赛博光环及全局同步消融。
- AnimeDissolveController.cs:全局宏观状态控制器。挂在角色根节点上,通过 MaterialPropertyBlock 统一调度全身的网点、边缘光、辉光、溶解与冰石状态。
- DragronMaterialGUI.cs:自定义材质面板脚本。提供清晰的中文折叠面板、一键质感预设载入、贴图一键固化烘焙,并保留了底层渲染队列控制。
--------------------------------------------------------------------------------------
2. 极简模式与专业模式的区别
为了兼顾不同场景下的制作效率,面板顶部设计了两种模式切换:
- 极简易用模式(不想整那么复杂 只想配个光影就开始用的):
* 专为只需要基础卡通感、有一点干净光影的小伙伴准备。
* 在这个模式下,身体部位通常只用一个材质球就能全盘接管,参数被精简为基础二分明暗和阴影色,点击一键预设即可快速出效果,省去繁琐调参。

- 硬核专业模式(追求细节、发挥贴图全部价值):
* 适合追求高品质画面、需要把模型拆分好的材质球逐个精调的情况。
* 内置了反复试错调优好的五大高频质感预设(皮肤、金属、布料、丝袜、宝石),点击即可一键套用。
* 完整开放丝袜接管、双层发光、能量辉光、以及带物理高度置换的冰冻/石化异常状态。

==================================================
3. 不同贴图作用详解与槽位归宿
--------------------------------------------------------------------------------------

面对模型资源包里眼花缭乱的贴图,这里将它们的真实作用与在 Shader 中的对应槽位整理如下:
1. 基础颜色贴图 (BaseColor / Color / MainTex)
- 作用:角色的固有色贴图,包含皮肤底色、衣服花纹等基本视觉信息
- 槽位:Body 材质的【1 : 基础贴图与色彩 -> 基础颜色贴图】;EyeUber 材质的【主贴图】
2. 光影通道贴图 (LightMap / MaskMap)
- 作用:二次元卡通渲染的灵魂通道图。一张图的 RGBA 四个通道分别存储了手绘阴影、高光遮罩、发根 AO、边缘光区域等控制数据
- 槽位:Body 材质的【2 : 光影通道与渐变 -> 光影通道贴图 / 遮罩贴图】
3. 法线贴图 (Normal / Normal_L)
- 作用:记录表面微观起伏与衣服褶皱,丰富细节层次
- 槽位:Body 材质的【1 : 基础贴图与色彩 -> 法线贴图】
4. 渐变色图 (Cool_Ramp / Warm_Ramp)
- 作用:决定角色受光面与背光面交界处的明暗色彩过渡,是二次元质感的核心。
- 槽位:Body 材质的【2 : 光影通道与渐变 -> 受光面/背光面 渐变色图】
5. SDF 面部光影图 (FaceLightMap)
- 作用:脸部专属距离场贴图。配合光源方向计算阴影,让角色在转头时光影过渡如手绘动画般平滑干净(导入 Unity 时必须取消勾选 sRGB)
- 槽位:Body 材质(部位切到脸部)的【3 : 面部光影系统 -> SDF图】
6. 表情与悬浮片遮罩图 (ExpressionMap / PlaneMask)
- 作用:用于控制害羞腮红的显隐范围,或一键隐藏二次元模型常用的悬浮五官面片
- 槽位:Body 材质脸部的【悬浮片自制UV遮罩】与【表情遮罩图】
7. 状态置换与细节贴图 (Displacement / Crack / Parallax / Cover)
- 作用:提供冰石形态的物理微凸起、裂纹自发光、冰块内部三维视差、以及朝上表面的积雪覆盖
- 槽位:Body 材质异常状态模块中的各个贴图槽位(可直接用总控脚本一键烘焙写入)
8. 眼睛特有贴图(星空图、高光图)
- 作用:用于眼球表面高光以及深层瞳孔内缓慢旋转流动的星空银河效果
- 槽位:EyeUber 材质的【星空纹理图】与【主贴图】
==================================================
4. 材质使用方法(以远坂凛模型为例)
--------------------------------------------------------------------------------------
推荐按照以下规范流程为角色装配材质:
【步骤一:指定 Shader 与分级】

1. 身体各部位:将身体、衣服、头发、脸部材质的 Shader 统一指定为 `NidHogg/Avatar/Body`。
2. 眼部:将眼睛的阴影层与高光层材质指定为 `NidHogg/Avatar/EyeUber`。
【步骤二:选择工作模式】
- 快速出效果/低开销:在材质面板顶部选择【 当前:极简易用模式】。
- 深度精细调校:点击切换为【 当前:硬核专业模式】。
【步骤三:选取渲染部位与质感预设】
1. 身体主材质 (Body):
- 在【当前渲染部位】下拉框中选择对应部位(0:身体-武器、1:头发、2:脸部)。

- 极简模式:直接点击【 一键赋予【基础二分】预设】,面板会自动精简参数并清理干扰项。
- 专业模式(身体):选择【目标材质质感】(皮肤、金属、布料、丝袜、宝石)
点击【一键应用预设参数】,载入调配好的参考数值
然后根据自己的需求微调就好

2. 眼部材质 (EyeUber):
- 在【眼睛渲染层级】中指定是【0:眼影遮罩层】还是【1:动态高光层】
- 高光层下按需勾选开启【星空叠加纹理】、【局部发光图案】或【赛博边缘发光环】

【步骤四:贴图填入与细节微调】
1. 参考第 3 节的对应关系,把模型资源里的贴图填入对应的槽位。
2. 展开对应折叠栏,按个人喜好微调明暗交界线位置、阴影软硬度、描边粗细与颜色。
【步骤五:装配总控脚本与预制体制作】
1. 在模型根节点挂载 `AnimeDissolveController.cs`。
2. 点击顶部的【 一键加载角色全身渲染器到目标列表】完成全身自动绑定。
3. 复制两份模型分别配置:
- 简易版:保持基础二分预设。
- 冰冻高能版:勾选【启用状态覆盖】,渲染物理模式切为冰冻,点击【 一键应用【冰冻】预设】,进度拉满到 1。
- 石化高能版:勾选【启用状态覆盖】,模式切为石化,点击【 一键应用【石化】预设】,进度拉满到 1。
4. 将配置完毕的模型分别拖入工程的 Prefabs 文件夹保存为独立预制体。
==================================================
5. 总控脚本核心功能详解
--------------------------------------------------------------------------------------

- 模型部位选取机制:
* 0 : 身体-武器:开放完整功能(法线、丝袜接管、双层发光等)。
* 1 : 头发:自动读取发根 AO 压暗,并开启天使环高光计算。
* 2 : 脸部:自动启用 SDF 动画阴影计算、五官抹平度与腮红控制。
- 目标绑定:
* 【一键加载角色全身渲染器到目标列表】:自动抓取子层级所有的 MeshRenderer 与 SkinnedMeshRenderer,省去手动拖拽。
--------------------------------------------------
宏观总控核心模块与参数详解
--------------------------------------------------
1. 全局漫画网点阴影

* 开启全身网点:在角色的暗部阴影区域叠加漫画风格点阵。
* 影响自身及所有子节点材质:勾选后全身统一生效;取消勾选后可展开列表指定特定模型网格。
* 网点生成模式:
- 程序波点:纯数学公式实时计算,生成整齐均匀的屏幕空间圆点。
- 自定义贴图:读取外部黑白贴图(如排线、几何花纹)。
* 自定义网点贴图 与 永久写入按钮:放置贴图,并支持一键将贴图写回材质球资产。
* 网点缩放 (屏幕空间):控制网点密度,数值越大点越密集。
* 网点不透明度:控制网点在暗部的显示深浅。
2. 角色全局菲尼尔总控

* 覆盖全局边缘光:接管并统一全身各材质自带的边缘光
* 边缘光颜色 (支持HDR):支持高动态范围调色,拉高可增强轮廓发光感
* 边缘光总体亮度:控制轮廓光的强弱倍率
* 菲涅尔范围 (越大越贴边):发光收敛指数,数值越大发光越集中在模型轮廓边缘

3. 角色全局能量辉光总控

* 开启全身辉光:基于外扩描边 Pass 生成的全身发光能量场(类似霸气护盾)。
* 辉光整体厚度:外发光网格向外膨胀的物理距离。
* 辉光颜色 与 发光强度:控制能量层的 HDR 发光色彩与亮度。
* 防穿插深度偏移:微调深度偏置,防止外发光网格与角色身体穿模。
* 噪波流光影响度 与 噪波流动速度:控制能量外壳是纯色发光还是带有流动的斑驳能量波纹。

4. 溶解系统总控

* 开启全局溶解:让角色全身同步消融。
* 全局溶解进度:从 0(完好)到 1(完全消失)控制消融进度。
* 强制同步所有材质溶解样式:统一覆盖子材质的溶解方向与过渡参数。
* 溶解蔓延方向:支持纯噪波随机溶解、模型 UV 纵向、或沿世界坐标 XYZ 轴向定向推进。
* 渐变缩放范围 与 坐标位置偏移:调节定向消融的过渡带宽度与起始点。
* 噪波侵蚀权重:控制消融边缘被噪波撕扯犬牙交错的程度。
* 全局溶解噪波图、重复度 与 流动速度:控制消融斑驳细节的疏密与动态流动。
* 边缘光颜色、宽度 与 边缘柔和度:调节消融烧灼切口的高温发光边缘带。


* 开启飞散粒子:消融时在切口自动飞散出火星、雪花或碎屑(支持粒子贴图、颜色、密度、速度与方向微调)。

5. 异常状态总控 (冰冻/石化)


* 启用状态覆盖:让角色整体进入冰封或石化状态。
* 全局状态覆盖进度:从 0 到 1 控制冰石蔓延比例。
* 蔓延方向:支持全局瞬间覆盖、从脚底向上蔓延、或从头顶向下蔓延。
* 渲染物理模式:
- 冰冻:开启冰透折射、内部晶体视差、环境高光反射与锋利边缘光。
- 石化:关闭透光与反射,切换为粗糙漫反射与专属阴影染色。
* 动态跟随角色Y轴:【核心防穿帮】自动锁定角色根节点世界坐标高度。角色跳跃或浮空移动时,蔓延高度基准实时跟随,避免“人跳起来冰冻留在原地”的穿帮问题。
* 状态贴图全局同步全家桶:提供基础纹理、法线、高度置换、边缘噪波、高度渐变、顶部覆盖物、内部裂纹、环境反射、内部视差的全套贴图槽位,并支持一键写入材质。
* 物理高度置换极值:顶点沿法线真实向外凸起膨胀的距离。
* 内部裂纹发光颜色:支持 HDR 调色,可调节冰石内部裂缝的发光强度。
* 开启顶部覆盖 (积雪/青苔):根据法线朝上角度,在头顶、肩膀等表面堆积积雪或青苔。
* 微观无限细节噪波强度:近距离特写时叠加高频噪波,避免贴图近看拉伸失真。
* 内部视差深度:仅冰冻生效,透过冰层模拟内部封存晶体的 3D 纵深感。
* 内部冰透折射强度 与 环境高光反射强度:控制冰冻下的折射扭曲与表面油亮感。
* 开启冰层专属边缘光:提供极细、极亮、极锋利的冰晶切边发光。
* 石化阴影专属染色:直接指定石化暗部的阴影色,彻底隔绝角色原皮肤与衣服底色的污染。
* 一键应用预设:提供【一键应用【冰冻】预设】与【一键应用【石化】预设】,快速载入调配好的参数。

基础纹理 (StoneTex):石化后的岩石表皮或冰层原色贴图。开启后会直接覆盖替换掉角色原本的皮肤和衣服固有色。
状态法线 (StoneNormalMap):提供微观凹凸细节。让石头表面产生坑洼粗糙的颗粒感,或让冰面带有折线分明的冰晶棱角。
物理高度置换图 (DisplacementTex):真正把顶点往外顶起厚度。根据贴图黑白明暗把模型表面向外隆起,让附着的冰棱或碎石具有真实的立体物理起伏,而不是贴在表面的一层薄皮。
边缘噪波图 (EdgeNoiseTex):控制状态蔓延交界处的参差撕裂感。在冰冻/石化从脚底往上蔓延时,让边缘呈现碎裂斑驳的不规则过渡,避免出现整齐划一的机械裁切线。
高度渐变染色图 (GradientTex):全身体积的纵向渐变色(Ramp)。从脚底到头顶为模型附上一层颜色倾向(如脚底深暗、头顶微亮,或冰封底部偏青蓝),避免全身单一颜色显得呆板死沉。
顶部覆盖物贴图 (CoverTex):模拟朝上表面的落雪或青苔。Shader 会自动检测模型法线朝向,只在肩膀、头顶等朝上的受雪面铺上一层积雪或冰屑。
内部裂纹发光图 (CrackEmissionTex):控制裂缝自发光。配合 HDR 颜色,可以在冰石表面或内部呈现出熔岩裂隙、魔法冰裂等脉络发光效果。
冰层反射 (MatcapTex) [冰冻专属]:提供光滑冰面的环境反光与油亮高光,利用假反射增强冰层的坚硬与通透感。
内部视差图 (InteriorParallaxTex) [冰冻专属]:模拟冰块内部深层的 3D 晶体杂质。转动视角时,能透过表层看到里面有晶体在晃动,营造出“角色被封在厚厚冰层内部”的真实纵深感。

石化界面(在渲染物理模式里改 ice冰冻/stone石化)


==================================================
6. 安装方式与工程下载
--------------------------------------------------------------------------------------
资源分为三种规格,大家按需自取:
- 方式一:核心材质与脚本源码包
* 仅包含 Shader 与 C# 源码,适合已有模型、只想把功能导进自己工程里研究的小伙伴。
* 默认管线下载链接:https://pan.baidu.com/s/183Y4ca8PLxGtR_cM6raJ-w?pwd=ndhg
* URP 管线下载链接:https://pan.baidu.com/s/13D6hJeNqVMkkt_Dv4gstWg?pwd=ndhg
- 方式二:模型预制体导出包(推荐)
* 包含已装配完成的三个成品预制体(简易版、冰冻版、石化版),方便直接拖入场景看效果。
* 默认管线下载链接:https://pan.baidu.com/s/1c3N972eT6E1-ksEPhrQAKQ?pwd=ndhg
* URP 管线下载链接:https://pan.baidu.com/s/1adqNZfq_g8O7YNfaIZJx2Q?pwd=ndhg
- 方式三:完整演示场景与特效工程包
* 完整打包工程,包含熊猫特效材质、简易特效制作练习场景、以及角色预制体。适合刚入门特效、希望开箱即用直接开始做特效的小白。
* 默认管线工程(含辉光与熊猫特效场景,版本 Unity 2020.3.46)
下载链接:https://pan.baidu.com/s/1j79kIcO_2cRicgK-AnffIg?pwd=ndhg
说明提示:
- 方式一和方式二在 Unity 2020 及以上版本均可直接导入使用
(urp不行 urp的2020版本的眼睛高光材质搞不好 我已无力)
- 方式三建议使用对应的 Unity 版本打开(更高版本也能自动升级打开)。
- 特别说明:文档中提及的所有演示效果及展示截图,均是在相机开启 ACES 色
调映射后处理环境下截取制作的 因为不开太够吧丑了拿不出手hh

文档说明因为也基本是让ai写的 所以有些地方可能写的会很抽象多多包涵
有问题的大佬可以加我v私聊 15696421013