Skip to content

Kila 材质 ​

自 2.2.8

Kila 材质(Kila Material)是 Photon 内置的一体化粒子材质。它不需要连节点,只要打开需要的模块:序列帧、多层贴图、遮罩、溶解、UV 与屏幕扭曲、渐变映射、柔边、菲涅尔、光照、雾球和贴地贴花。每种模块组合会编译成单独的 Shader 变体,没打开的模块不产生任何开销。

夜晚深色墙前发光的 Kila 材质预设
夜晚的 Kila 预设:卡通火焰、冲击波环、闪电、能量护盾、传送门漩涡、蓄能球和火焰,地面上还有法阵、地面光环和焦散。每一个都只是一个材质。

何时使用 ​

使用场景
Texture 或 Sprite Material普通粒子上的一张贴图,Shader 内没有动画。
Kila 材质常见的 VFX 效果:滚动噪声、序列帧、溶解、扭曲、柔边、边缘光、贴花、热浪。不写 Graph 也能使用逐粒子数值。
Shader Graph MaterialKila 没有对应模块的逻辑。可以先用 Kila 做出效果,再导出为着色器图,在 Graph 中继续修改。

创建 ​

  1. 在 Resources → Material 中右键,选择 添加新资源 → Kila 材质。
  2. 把它赋给 Renderer 的材质槽位。新建的 Kila 材质默认打开 主贴图,使用半透明混合并自带渲染状态;槽位的 渲染状态 默认为 跟随材质,因此会直接使用材质的设置。
  3. 点击 浏览预设... 从现成效果开始,或自己添加模块。

内置材质库中没有 Kila 材质,预设只能从 Inspector 中打开。

转换 Texture Material ​

右键一个 Texture Material 图块,选择 转换为 Kila 材质。确认后文件会被原地替换:所有使用它的特效都会切换到新的 Kila 材质。只有可编辑文件夹中的普通 Texture Material(不含 Block Atlas)才有这个菜单项。

Texture Material转换为
纹理主贴图,采样方式与 Minecraft 一致:.mcmeta 未开启 blur 时启用 像素化;开启 clamp 时环绕方式为 钳制,否则为 重复
丢弃阈值Alpha 裁剪
HDR 颜色颜色;HDR 模式为 ADDITIVE 时改为 自发光
像素艺术像素化 模块
软粒子深度与交界 模块(柔边淡出的距离与指数)
受动态光照受动态光照亮 模块

转换后的材质会打开 使用槽位状态,每个槽位保留原来的混合、剔除和深度设置。

Inspector ​

Kila 材质的 Inspector
Kila 材质的 Inspector:预览、渲染和表面分组、已启用的模块,以及底部的采样器状态行。

从上到下依次是:

  1. 预览:实时缩略图。背景 可切换棋盘格、黑色和浅色。调试视图 单独显示某一步(最终结果、主贴图、Alpha、遮罩、溶解、扭曲、法线、UV),不会保存。预览滚出视野后,Inspector 旁边会浮出一个小预览。
  2. 浏览预设...:打开预设库。
  3. 渲染:混合、剔除和深度。
  4. 表面:颜色、透明度,以及粒子自身颜色、光照和雾如何作用。
  5. 每个已启用模块一个分组。分组标题上的开关可以关闭模块;模块设置会保留,保存后也不会丢失。
  6. + 添加模块...:打开模块对话框。
  7. 状态行 采样器 n/12,见限制。

渲染 ​

选项默认值描述
使用槽位状态关混合、剔除和深度交给每个材质槽位决定,与 Texture Material 相同。打开后,除朝相机偏移外,下面各行都会隐藏。
混合半透明半透明、叠加、柔和叠加、正片叠底、不透明。
叠加度0仅柔和叠加:0 等于半透明混合,1 等于纯叠加,中间值两者兼有。
双面关同时绘制背面。
先画背面关打开双面后显示。先画背面再画正面,护盾、能量球这类封闭透明网格就能自己排好前后。
深度测试开让世界几何遮挡粒子。
深度写入关让粒子遮挡之后绘制的内容。
朝相机偏移0−8 到 8 格。按离相机更近若干格的位置做深度测试,屏幕上的位置不变:贴地面片不再和方块顶面闪烁,公告板不再切进墙里。

渲染状态 为 跟随材质 的槽位会使用这些设置,见渲染状态。关闭使用槽位状态时,Kila 还会按自己的混合方式处理输出颜色(柔和叠加会预乘,正片叠底会向白色过渡,不透明会把 Alpha 设为 1)。想让槽位决定混合方式时,应打开 使用槽位状态,而不是把槽位改成自定义。

表面 ​

选项默认值描述
颜色白色HDR 颜色,强度大于 1 会发光并参与泛光。
强度1与颜色相乘,可以用粒子数据驱动。
透明度1与 Alpha 相乘,可以用粒子数据驱动。
自发光黑色在粒子可见处直接加到颜色上。

更多 中包括:

选项默认值描述
顶点色乘 RGBA粒子颜色(颜色随生命周期等)的作用方式:乘 RGBA、只乘 Alpha、忽略、只乘 RGB。顶点 Alpha 用来驱动别的东西(比如溶解)时选“只乘 RGB”。
世界光照开随粒子所在位置的方块光和天空光变暗。发光特效请关闭。
雾开应用 Minecraft 雾。
Alpha 裁剪0.01不透明度低于此值的片元直接丢弃。
Alpha 锐化1对最终 Alpha(包括遮罩)取幂:大于 1 收紧软边,小于 1 放宽软边。
背面颜色白色乘到背面的颜色上,需要开启双面。
帧率步进0所有动画按这个帧率一跳一跳地播放,像手绘特效。0 表示平滑。
抖动0帧率步进大于 0 时显示。每一步 UV 跳动的幅度。

模块 ​

按分类分组的添加模块对话框
添加模块对话框:模块按分类分组,每个都有简短说明和“添加”按钮。

+ 添加模块... 按分类列出全部 21 个模块,每个模块下方都有说明。点击 添加 会打开模块并展开它的分组;已经打开的模块显示 已添加。新材质只打开了 主贴图。

分类模块作用
贴图主贴图基础颜色和形状:一张可滚动的贴图,以及序列帧(列数、行数、帧来源为时间(帧率)或帧驱动、起始帧、帧混合、使用运动矢量贴图的运动矢量混合、随机行、随机起始帧),另有产生彩色边缘的色散。打开序列帧时,请关闭发射器的 UV 动画。
贴图第二层贴图以相乘、相加、插值或滤色方式叠加在主贴图上的第二张贴图。
贴图第三层再叠一层贴图。它的 UV 偏移不能绑定驱动。
贴图UV 扭曲用流动的噪声扰动贴图(偏移),或沿 FlowMap 持续流动(FlowMap)。可以选择扭曲哪些贴图槽位。
贴图UV 旋涡与波浪在读取贴图之前先旋转、剪切、波动 UV 或加涟漪:传送门、旗帜。
贴图贴地投影把粒子作为贴花画到后方地面上,顺着台阶和坡面走。朝向(地面或面片)、大小、投影深度、边缘渐隐、只投正对面。
贴图像素化把 UV 吸附到网格上,形成像素风。
颜色渐变映射通过渐变重新上色。输入为亮度、红色、Alpha、U 或 V;模式为替换、相乘或替换含 Alpha;偏移(绑定到生命周期可以让火焰逐渐冷却)。
颜色屏幕扭曲显示粒子背后被噪声贴图或表面法线推开的场景:热浪、折射。强度、不扭曲前景、色散、叠加。
颜色色彩调整色相偏移、饱和度、对比度、亮度、色阶。
透明遮罩 1、遮罩 2用另一张贴图裁剪形状。遮罩 2 与遮罩 1 相乘。
透明溶解沿噪声烧蚀消散:进度、软硬、描边宽度、描边颜色与描边渐变、描边方式叠加(发光)或替换,以及带权重和反向的方向(U 向、V 向、径向或贴图)。
透明深度与交界在与背后场景相交处柔边淡出,并在接触处产生交界高光(宽度、混合、衰减、硬度、随形状、测量方式、渐变、脉冲、碎边)。
透明体积球把面片变成从任何角度看都向边缘变薄的雾球。场景裁切会让它在被场景切开处变薄。
透明相机淡出镜头靠近时淡出(起始 0.5,淡出长度 2),不会糊满屏幕。
顶点顶点偏移用噪声沿法线或固定轴推动顶点。双向、边缘衰减。
光照菲涅尔在掠射角处边缘发光、边缘淡出或中心淡出。需要网格:公告板永远正对相机。
光照光照让粒子受方向光照:网格或球面法线,高度图或法线贴图凹凸,漫反射或六向光照模型,主光方向、环境光、包裹。动态光也按它照亮。
光照Matcap 反射按表面朝向查一张预先画好的受光球体:玻璃、冰、金属。公告板上要配合光照模块使用。
光照受动态光照亮受 Photon 动态光源照亮。

贴图槽位 ​

模块中的每张贴图都是一个槽位,控件都相同。点击缩略图打开 选择贴图,其中有程序化噪声、最近使用、内置和粒子贴图几个分区,以及 浏览文件... 按钮。也可以直接把 .png 拖到槽位上。右键槽位可以选择 选择贴图...、浏览文件... 和 恢复默认。

行描述
通道(颜色槽位)RGBA、红色作 Alpha、只取 Alpha、亮度作 Alpha。
通道(遮罩与噪声槽位)R、G、B、A 或亮度。
密度、运动仅程序化噪声(简单、梯度、Voronoi)。运动是 Voronoi 细胞漂移的速度。程序化槽位不占用采样器。
平铺、偏移、滚动滚动的单位是每秒 UV。
详细 → UV 来源网格、屏幕、世界 XZ(地面)、世界 XY、世界 ZY。世界平面每格平铺一次,在不同粒子之间连续对齐。
详细 → 旋转、旋转速度绕 UV 中心的角度;每秒角度。
详细 → U 向环绕、V 向环绕重复、钳制、镜像、裁切。裁切等于钳制,但贴图之外为透明,刀光会滑出去而不是被拉长。
详细 → 像素化文件贴图使用最近邻采样。
详细 → 极坐标U 变为到中心的距离,V 变为绕中心的角度;半径和重复用于缩放。适合圆环、漩涡和放射条纹。

用粒子数据驱动数值 ​

很多数值行带有链接按钮 用粒子数据驱动。绑定后会显示 驱动来源 和 倍率,最终值为 数值 + 倍率 × 来源。

来源读取
常量不读取:选择它即解除绑定。
顶点色 R、G、B、A粒子颜色,例如颜色随生命周期。
粒子生命周期归一化年龄,0 到 1。
粒子随机数粒子的随机数。
拖尾点生命拖尾点的生命。
拖尾点位置在拖尾上的位置。
自定义数据发射器 Custom Data 的 数据流 0–3 与 通道 0–3(x、y、z、w)。

例如把溶解的 进度 绑定到顶点色 A,倍率为 −1,数值为 1:粒子会随颜色随生命周期的 Alpha 下降而溶解。

当前绘制无法提供的来源会读到 0,该行退回到它的数值。这时发射器 Inspector 顶部会出现 材质缺少数据 一行,并带有 一键修复 按钮:

  • 自定义数据驱动读取了发射器没有定义的数据流。一键修复 会启用 Additional GPU Data,并添加该数据流或缺少的通道。
  • 拖尾、光束和 Ara Trail 只有开启 GPU 实例化才携带粒子数据。一键修复 会打开实例化。

Particle Emitter 无论是否开启 GPU 实例化都携带粒子数据,见 Additional GPU Data。

预设 ​

Kila 材质预设库
浏览预设对话框,每个分类一个分区。鼠标悬停在预设上会说明它用于什么,以及展示了哪些功能。

浏览预设... 打开包含 27 个预设的预设库。点击一个预设会替换材质的全部设置。这些预设合起来用到了所有模块,也可以当作示例。

分类预设
基础发光(叠加)、火花、随生命周期溶解、刀光、冲击波环
火与烟火焰、烟雾(半透明 + 软粒子)、爆炸烟团、受光烟雾(六向)、雾球
魔法法阵、传送门漩涡、闪电、蓄力球、能量拖尾
地面地面法阵、焦痕、水面焦散、扫描波
表面与模型能量护盾、水晶、全息投影、碎块
屏幕热浪(屏幕扭曲)、喷气尾焰
风格化卡通火焰、像素法术
  • 能量拖尾 用于拖尾,需要在拖尾上开启 GPU 实例化(点一下 一键修复 即可)。
  • 扫描波、能量护盾、水晶、全息投影 和 碎块 用于模型,使用 Model 渲染模式绘制。
  • 蓄力球 在它的自定义数据流 0(x)获得一条 0 到 1 的曲线之前不可见。

导出为着色器图 ​

自 2.2.8

右键任意 Kila 材质图块,选择 导出为着色器图。对话框会询问 着色器图保存到、材质保存到 和 名称。导出需要一个已打开的项目,或资源库中的可写文件夹。

导出会写入:

  • 着色器图 <name>,所有参数都是暴露变量;
  • 使用它绘制的 Shader Graph Material <name>_graph,它把 Kila 的混合、剔除和深度复制为自己的 自带渲染状态(打开了使用槽位状态时除外)。

重名时会依次加上 _1、_2 等后缀。原 Kila 材质保持不变。

有些功能着色器图无法按 Kila 的方式实现。导出完成后的报告会列出未导出的内容:

  • 贴地投影与体积球;
  • 六向光照(光照模块);
  • 交界高光(深度与交界);
  • 朝相机偏移;
  • 屏幕扭曲的叠加(按普通屏幕扭曲导出);
  • 渐变中第八个之后的关键点;
  • 已因采样器上限未生效的模块。

接下来见 Shader Graph 入门。

几何 ​

Kila 材质可以绘制 Photon 的所有几何:开启或不开启 GPU 实例化的 Tile 粒子、Model 渲染模式(包括切线和动画 glTF 模型)、粒子拖尾、Trail 与 Beam 发射器,以及 Ara Trail(条带与管状)。

  • 菲涅尔需要网格:公告板永远正对相机,没有掠射角。
  • 在 Model 渲染模式下,法线贴图 凹凸需要打开 Renderer 的 tangent 开关(并开启 GPU 实例化)。高度图 凹凸不需要切线。
  • 拖尾、光束和 Ara Trail 上的粒子数据驱动需要 GPU 实例化,见一键修复。

限制 ​

  • 缩略图中看不到。 深度与交界、屏幕扭曲、体积球的场景裁切和贴地投影都要读取场景的深度或颜色副本,而缩略图没有这些副本。缩略图还会去掉 HDR 强度、忽略朝相机偏移,并让粒子数据每 3 秒在 0 到 1 之间往返一次。这些效果请在场景中检查。
  • 12 个采样器。 光照贴图、所有贴图和场景副本共用 12 个纹理单元(最多 9 张贴图)。以相同方式采样同一张贴图的槽位共用一个单元,程序化噪声不占用单元。超出上限时,模块会按固定顺序被舍弃,状态行显示 [X 未生效:贴图过多]。
  • 叠加。 打开 叠加 后,屏幕扭曲会把自己的推开量累加到其他叠加模式的扭曲上,最后整帧按总和弯折一次,因此多个热浪能互相看见,也能看见之前画的所有特效。叠加时色散不生效。不使用光影包时始终可用。
  • 自 2.2.9 使用光影包时,只有特效在光影通道之后合成才会叠加:光影合成模式 设为 光影通道之后,或 自动 为当前光影包选择了这条路径。否则会退回普通的、不叠加的扭曲。2.2.8 在光影包下总是退回普通扭曲。
  • 贴地投影。 模块打开期间材质不做深度测试,即使打开了使用槽位状态也是如此。面片必须在屏幕上盖住贴花;大小为 0.5 时,公告板从任何角度都能盖住。贴花也会画到实体上,不会落在水面上(深度副本中没有水),在草和其他植物上可能出现空洞。

Released under the MIT License.