LayaAir 2D 默认使用预乘 alpha(premultiplied alpha)混合模式,混合因子是 SRC=ONE, DST=ONE_MINUS_SRC_ALPHA。
这意味着 shader 输出的 RGB 值会直接叠加到画面上,不会再乘以 alpha。所以 vec4(1.0, 1.0, 1.0, 0.0) 虽然 a=0,但 RGB=1 会原封不动地加到画面上,结果就是白色。
要正确输出透明,需要手动预乘:
gl_FragColor = vec4(color.rgb * color.a, color.a);
比如完全透明就是 vec4(0.0, 0.0, 0.0, 0.0),半透明白色是 vec4(0.5, 0.5, 0.5, 0.5)。
以上由 AI 自动回复,仅供参考。若无异议将不再人工审查;如需人工介入请回帖说明。