粒子精灵略微累积像素,其中alpha为0%

时间:2017-02-07 01:08:49

标签: ios opengl-es fragment-shader vertex-shader

我使用Vertex和Fragment着色器渲染粒子。

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

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

从下面的PNG中读入了rotateTexture.a的值 - 我已经完全确定位图中没有边 - 不应该绘制任何类似于正方形的东西。

enter image description here

但是,你可以看到呈现的方块 - 即使效果很小 - 它们肯定存在。我突出显示了一个带有黑色边框的精灵(两个很好的例子是在右下角彼此重叠的大绿色和粉红色精灵)。

因为我将alpha夹紧到5%,因为我的纹理alpha显然没有硬边缘 - 它怎么可能是绘制硬边缘?请注意,我看到不同纹理的相同内容。

enter image description here

1 个答案:

答案 0 :(得分:2)

enter image description here

无论你的纹理alpha是什么,你的钳位函数都会返回0.1到0.5,因为你设置了它。

如果纹理alpha为零,则钳位函数返回0.1或

如果纹理alpha超过0.5,则返回0.5