粒子精灵在 alpha 为 0% 时稍微累积像素

Particle Sprites are slightly accumulating pixels where alpha is 0%

我正在使用顶点和片段着色器渲染粒子。

在我的顶点着色器中,我钳制了输出片段颜色的 alpha 分量:

highp float alpha = clamp(rotatedTexture.a, 0.01, 0.05);
highp vec4 base = vec4(vShade.r, vShade.g, vShade.b, alpha);
fragmentColor = base;

rotatedTexture.a 的值是从以下 PNG 读入的 - 我已绝对确保位图中没有边缘 - 不应绘制任何类似于正方形的东西。

但是,您可以看到渲染的正方形 - 尽管效果很小 - 它们肯定存在。我突出显示了一个带有黑色边框的 sprite(两个很好的例子是在右下角相互重叠的大型绿色和粉红色 sprite)。

由于我将 alpha 限制在 5%,并且由于我的纹理的 alpha 显然没有硬边 - 它怎么可能绘制硬边?请注意,我看到的是具有不同纹理的同一事物。

无论你的纹理 alpha 是什么,你的钳位函数 returns 0.1 到 0.5 因为你是这样设置的。

如果您的纹理 alpha 为零,您的钳位函数 returns 0.1 或

如果你的纹理 alpha 超过 0.5,它 returns 0.5