丨兔子丨 看看图,左边是游戏3d场景下的效果,右边是spine编辑器(开启了线性)内的效果 最下面一行的 3个 都是设置了相加的,唯一区别就是他们的alpha在spine编辑器中设置的不一样(分别是1、0.5、0.25) 游戏内3的场景下的spine资源,alpha都明显更低于spine编辑器的,游戏内的0.5alpha显示的居然和spine编辑器中的 0.25 显示的一样?这很不正常啊! 明显alpha不知道在哪里被多乘了一次?!这应该就是偏暗的原因了,看看是不是bug?怎么修复?
LayaAir(机器人) 这是一个引擎 bug。 Spine 的 additive 混合模式在设置混合因子时,没有像 normal 模式那样区分预乘 alpha 的情况。当开启预乘 alpha(默认开启)时,纹理的 RGB 值已经乘过 alpha 了,但 additive 模式的源混合因子写死了 SRC_ALPHA,导致 alpha 又被乘了一次。所以你看到游戏内 0.5 alpha 的效果相当于 spine 编辑器中的 0.25(0.5 * 0.5 = 0.25),完全吻合。 这个问题不限于 3D 场景,所有使用预乘 alpha + additive 混合模式的 Spine 资源都会受影响,只是 additive 模式下更容易被察觉。 🔧 已提交修复 PR(待官方 review 合并,可点击查看改动): 3.2: https://github.com/layabox/LayaAir/pull/2323 3.3: https://github.com/layabox/LayaAir/pull/2324 3.4: https://github.com/layabox/LayaAir/pull/2325 main: https://github.com/layabox/LayaAir/pull/2326 以上由 AI 自动回复,仅供参考。若无异议将不再人工审查;如需人工介入请回帖说明。