We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
在(除动态立绘外的)几乎所有的桌宠渲染后,在它们的 Spine 组件之间(例如头发、眼眶和膝盖处)均可见一条缝合线。如图所示:
因为缝合线后面的背景可以穿透过来,所以推断缝合线是由低 Alpha 值导致的。为便于观察具体的 Alpha 值分布,进行 Alpha 单通道上色后,结果如图所示:
可见,缝合线的 Alpha 值主要介于 0.5-0.95 之间,以 0.75-0.95 居多。
Spine 源图片采用解包后图片的 RGB-A 通道合并而生成,理论上不可能出现错误。观察 Spine 源图片,未见组件边缘的颜色和 Alpha 值异常,如图所示:
通过对 TwoColorPolygonBatch 使用的着色器的光照和预乘 Alpha 进行调试,初步判断此问题不是由光照处理逻辑引起的。
TwoColorPolygonBatch
在片段着色器进行一些处理,使得 Alpha 大于 0.5 的部分变为完全不透明,以此检查这些部分的 RGB 值。
gl_FragColor.a = gl_FragColor.a < 0.5 ? gl_FragColor.a * 2.0 : 1.0;
得到的渲染结果如图所示:
可见,缝合线的 RGB 值表现为灰度而非彩色。处理后,缝合线以灰度模式填充,这一结果与使用其他渲染引擎得到的结果是一致的。
但是在游戏中,尤其是模型的膝盖部分,并不是灰度填充,而是与相邻组件具有相似颜色。
综上所述,高度怀疑游戏中使用了特殊的着色器,消除了缝合线。
为了缓解桌宠的缝合线问题,给出两种解决方案:
The text was updated successfully, but these errors were encountered:
No branches or pull requests
问题描述
在(除动态立绘外的)几乎所有的桌宠渲染后,在它们的 Spine 组件之间(例如头发、眼眶和膝盖处)均可见一条缝合线。如图所示:
因为缝合线后面的背景可以穿透过来,所以推断缝合线是由低 Alpha 值导致的。为便于观察具体的 Alpha 值分布,进行 Alpha 单通道上色后,结果如图所示:
可见,缝合线的 Alpha 值主要介于 0.5-0.95 之间,以 0.75-0.95 居多。
调查过程
1. 检查 Spine 源图片
Spine 源图片采用解包后图片的 RGB-A 通道合并而生成,理论上不可能出现错误。观察 Spine 源图片,未见组件边缘的颜色和 Alpha 值异常,如图所示:
2. 检查着色器的光照处理逻辑
通过对
TwoColorPolygonBatch
使用的着色器的光照和预乘 Alpha 进行调试,初步判断此问题不是由光照处理逻辑引起的。3. 检查低 Alpha 色块的 RGB 值
在片段着色器进行一些处理,使得 Alpha 大于 0.5 的部分变为完全不透明,以此检查这些部分的 RGB 值。
得到的渲染结果如图所示:
可见,缝合线的 RGB 值表现为灰度而非彩色。处理后,缝合线以灰度模式填充,这一结果与使用其他渲染引擎得到的结果是一致的。
但是在游戏中,尤其是模型的膝盖部分,并不是灰度填充,而是与相邻组件具有相似颜色。
解决建议
综上所述,高度怀疑游戏中使用了特殊的着色器,消除了缝合线。
为了缓解桌宠的缝合线问题,给出两种解决方案:
The text was updated successfully, but these errors were encountered: