4.3 KiB
4.3 KiB
Uber Shader: ParticleBase 核心解析
更新时间: 2026-03-03
1. 表现目标 (Target Aesthetics)
此 Uber Shader (ParticleBase.shader) 是一个具有极高自由度的特效“瑞士军刀”。它的功能组合非常适合表现二次元轻度科幻 (Anime Sci-Fi) 风格的动作游戏,能够实现包括但不限于以下效果:
- 高频能量爆发/剑气: 通过复杂遮罩组合、溶解通道以及Ramp映射实现硬边缘、色彩鲜艳的二次元特效表现。
- 时空扭曲/引力场: 依靠屏幕空间扭曲 (Screen Distort)、漩涡扭曲 (Twirl) 与极坐标 (Polar Coordinates),配合色散 (Chromatic Aberration) 呈现科幻质感的黑洞或能量场。
- 全息防护罩/力场屏障: 使用多种菲涅尔 (Fresnel) 组合、深度描边 (Depth Outline)、以及六路光 (Six-Way Light)/MatCap 实现具有厚度感与丰富折射边缘的光球。
- 数据流/ UI化特效: 兼容 UI 渲染模式与剔除,可以通过多层 UV 动画偏移与噪波直接制作数据化碎片分解或 UI 故障表现。
2. 核心模块与参数对照表 (Core Modules & Parameters)
| 功能模块 (Feature) | 关键控制参数 (Key Properties) | 作用解析 (Description) |
|---|---|---|
| 基础渲染模式 | _MeshSourceMode, _UIEffect_Toggle, 双Pass (Backface/Front) |
支持 3D Mesh 或 UI Canvas 下渲染,运用双 Pass 解决重叠材质渲染穿插的问题,支持强制深度写入。 |
| 遮罩系统 (Masks) | _MaskMap, _MaskMap2, _MaskMap3, _MaskMapOffsetAnition |
提供多达 3 层的遮罩贴图以及各自独立的独立 UV, 偏移速度、旋转、甚至附带色彩渐变映射,用于叠加形状细节。 |
| 溶解与消散 (Dissolve) | _Dissolve, _DissolveMap, _DissolveRampMap, _DissolveVoronoi |
提供基础遮罩溶解、极高细节的 Voronoi 程序噪波溶解;并可以用 RampMap 让溶解边缘呈现多种发光色带断点。 |
| 空间与 UV 扭曲 | _ScreenDistortModeToggle, _NoiseMap, _TwirlEnabled |
包含平面扭曲、带色差 (Chromatic Aberration) 的屏幕扭曲、漩涡扭曲及极坐标映射,用于制作法术场与冲击波扭曲。 |
| 顶点与视差 (Vertex) | _VertexOffset_Toggle, _ParallaxMapping_Toggle |
把顶点向外基于指定贴图或矢量方向挤出变形,或者利用视差映射实现虚假的体积感切口。 |
| 环境光与着色器光照 | _FxLightMode (BlinnPhong/PBR/SixWay), _MatCapToggle |
虽然是特效 Shader,但支持假想的六方向光照 (Rig Light)、MatCap与 PBR 渲染,可以制作具有物理体积质感的特效碎块。 |
| 边缘光与深度融合 | _FresnelColor, _DepthOutline_Toggle, _IntersectEnabled |
处理特体自身内外的菲涅尔泛光发光,以及粒子与场景结构相交处所产生的高亮融合线圈。 |
| 颜色与 Ramp 映射 | _RampColorToggle, _HueShift, _ColorBlendMap |
可以通过贴图渐变与最高 6 个断点的系统 Ramp 面板,来直接映射黑白特效从而呈现极具二次元扁平光感的阶梯颜色。 |
| Custom Vertex Streams | _CustomData1X ~ _CustomData2W 等宏指令 |
将粒子系统的生命周期、速度等属性无缝引入Shader,实时调节诸如溶解度、色相、UI位移等,供 Timeline 调用。 |
3. 粒子模块结合关键值 (Shuriken Particle Best Practices)
- Custom Data: 当编写技能时,应在 Shuriken 中开启
Custom Data,并将生命周期连结到 Shader 中的对应解析轴(如_CustomData1Z_Dissolve_Toggle),可实现受时间严格控制的单次溶解特效。 - Sorting: 使用大体积扭曲及屏幕级折射时,需要注意 Layer Sorting 穿插情况,可配合该 Shader 中的 Stencil 及 ZTest 规避覆盖人物角色。