代号:微光
在研项目《代号:微光》的技术美术 Shader 与渲染功能汇总,覆盖油污 / 水体 / 角色材质 / 草与雾 / 特效与后期等模块。
在研项目《微光》技术美术模块汇总 —— 以下按功能模块整理,共 20 余项 Shader 与渲染向功能的实际游戏内表现。
油污、水面与液体
SDF 油污(早期探索,目前未使用)
基于 Raymarch 实现的 SDF 油污连黏效果早期探索版本,通过距离场融合让多个油污体块像液体一样自然粘连、拉丝,为后续正式油污方案打下基础。
SDF 距离场融合产生的油污体块粘连与拉丝
油污擦除
参考《明日方舟:终末地》的液体擦除效果实现油污擦除功能,通过目标效果与当前效果的对比展示实现进度与差距。
油污擦除效果
油污恢复机制
为油污增加自动恢复机制:被擦除后经过一段时间,以残留形状为基础逐步恢复原状,使油污表现出持续性与自愈感。
擦除后的油污随时间自愈
附着系统优化
调整 update 时机,确认油污在处理完所有动画之后再更新,保证油污紧紧附着在玩家身上、没有穿帮;优化算法避免初始化阶段对模型进行读写;修复因重复激活导致的多层油污附着;修复因 LOD 导致的更新不及时。
油污附着在角色骨骼动画上的稳定表现
水面与油污 Shader 重写
重写水面 Shader,集成浅 / 深水叠加、基于视角的 SSS、折射扭曲、平面反射、BRDF 高光和岸边泡沫;同时新增油污与水面的融合 Shader,加入大小波浪扭曲、环境反射和 Ramp 色散,让水体和油污的表现更真实统一。

水面分层与泡沫、折射的综合表现
水面反射调整
水面反射改为静态 ReflectionProbe 加动态平面反射的组合:静态物体以类似预计算天空盒的方式反射,动态物体按 Layer 区分并优先取 LOD2(缺失则回落至 LOD1 / LOD0),在质量与开销之间取得平衡。

静态探针与动态平面反射的混合结果
低消耗屏幕空间水面反射
新的水面反射方案通过采样一张 blit 图实现,性能消耗极低,可以把场景远景完整反射进来,氛围感更强,位置也比 Reflection Probe 更准确;不足是对贴近水面的近距离物体会存在反射偏移。
屏幕空间水面反射的远景效果
瓶中液体效果
瓶中液体的整体表现,包含液面随容器运动的摇晃、透明感与边缘处理的最终呈现。
容器内液体的晃动与折射
角色材质
角色 SSS 效果提升
全面强化角色 SSS:加入背光 SSS、假高光、面向高光的菲涅尔与多通道 Emis 补光,并 Remap 光照探针强度避免过曝。尝试了单光源、基于骨骼的双光源、相机连线光源等方案,最终选用带颜色衰减的单光源版本,兼顾透光表现与运动稳定性,并将 ASE 节点重写为 HLSL。

角色皮肤透光与背光 SSS 对比
角色 Shader(丝绸 / 清漆 / 镭射)
为角色新增丝绸、清漆、镭射以及祖先四种专用材质 Shader,丰富角色在不同外观风格下的质感表现,让美术能够按角色定位选择匹配的材质呈现方式。
丝绸材质:
清漆材质:
镭射材质:
角色 GI 调整
对角色的 GI 强度与饱和度做了单独可调的调整,并在材质参数中允许 GI 饱和度独立控制,解决角色在最亮区域过曝以及在某些灯光下偏色的问题。

GI 强度 / 饱和度分离控制后的角色表现
角色状态切换功能优化
通过 Config 资产保存角色的各种材质状态,并由脚本双向同步驱动,支持新建 / 命名状态、按 Shader 自动识别材质属性、按部件作用、播放与反向预览,使角色多状态切换的搭建与运行更规范高效。
材质状态资产配置与切换
场景氛围与植被
面片雾 Shader
实现用于场景氛围表达的面片雾 Shader,集成深度渐隐、距离渐隐、Billboard 朝向以及主光源影响,让面片贴图能自然融入场景并随视距和光照变化,替代传统体积雾在特定场景下的表现问题。
面片雾在场景中的融入效果
局部高度雾
把高度雾改造为局部作用形式,用于模拟 Y 轴纵向的体积感,适合俯视角度下的云雾表现;侧面观察会有轻微穿帮,但整体成本很低。
局部高度雾的俯视体积感
热气特效材质
热气特效材质接入粒子 CustomData 驱动,实现由粒子系统灵活控制热气的扰动强度与形态,方便美术在不同场景下调整效果。
DrawIndirect 草
将 DrawIndirect 实现的草接入 TOD 系统,使草的表现能够随时间变化联动。
TOD
TOD(Time of Day)系统支持不同时段状态之间的任意切换,让天光与环境效果能够在各种时刻之间自由过渡。
不同时段的整体氛围过渡
特效、贴花与后期
特效 Shader 改进
为特效 Shader 扩展一系列可控参数:极坐标开关、遮罩通道选择、Alpha 调整、HSV 色相 / 饱和度 / 对比度、Custom Data 自定义曲线,以及针对摄像机方向的偏移;并将顶点 / UV 之外的变量精度改为 Half,在保留美术自由度的同时降低运算开销。
特效 Shader 贴花功能
为特效 Shader 加入基于深度重建的屏幕空间贴花,用来制作 Boss 预警圈。由于粒子无法使用 unity_WorldToObject,改用打包传入的 WorldPos 与 Size,通过 (worldPos - Center) / Size 手动构造局部坐标系,并通过 Stencil 可选剔除玩家 / Boss 层来避免穿帮。


屏幕空间贴花 Boss 预警圈
面罩扭曲后期处理与 UI
新增面罩扭曲 Shader,把各类后期处理整合进同一个 Volume Profile,并为 UI 补上开关与下拉菜单,方便统一管理和调控后处理效果。
面罩扭曲与后期统一管理
传送门材质
利用预捕获 Cubemap 配合球体映射,采用与 Interior Mapping 相同的原理营造传送门内部的透视纵深感,成本低且效果强。
传送门内部纵深
萤石材质
通过视差、折射与透射的组合实现萤石材质的内部纹理与通透质感,呈现类似晶体内部结构的视觉效果。
萤石内部结构
虫膜 Shader
虫膜材质的通透与纹理叠加
字体消散效果
字体消散表现
性能与变体
Shader LOD
为场景 Shader(孢子 Shader 与 SceneBlend 场景物件 Shader)增加 Shader LOD,用于在远距离时降级着色复杂度;其中 SceneBlend 物件 LOD1 使用的贴图数量从 12 张下降到 4 张,显著减少采样与显存开销。

SceneBlend 的 LOD 分层贴图占用
工具与编辑器
Shader 通用 GUI
打造一套与 Shader 脚本解耦的通用材质 GUI,根据 Property Name 前缀自动分类为可折叠下拉菜单,并加入复制 / 粘贴 / 重置按钮;同时通过属性组对象池和哈希脏标记只在材质变动时重建面板,兼顾了简洁直观与运行性能。


通用材质 GUI 面板
丢失材质检测工具
提供一个编辑器工具用于自动扫描并定位项目中丢失 / 引用异常的材质,帮助美术和技术美术在合入或迭代过程中快速发现资源问题,避免运行时出现粉红材质。

特效 LOD 一键配置工具
提供一个特效 LOD 一键配置工具,用于批量、快速地为特效资源设置 LOD 参数,减少手动逐个配置的成本。

资产审查与优化
对贴图进行合规检查(尺寸、二次幂、各平台压缩格式)并用工具批量优化,同时基于打包日志统计 Shader 变体并针对性做变体裁剪,降低包体与运行时开销。

角色合批
解决角色因每材质要传入脚本参数导致合批被打断的问题:初版用 MaterialPropertyBlock 会打断合批,改用直接改材质实例又导致编辑器修改无法保存;最终方案是编辑器阶段用 MPB 便于美术调参,游戏初始化时再生成材质实例保证合批,兼顾编辑体验与运行时性能。