【问题标题】:Particle Sprites are slightly accumulating pixels where alpha is 0%粒子精灵是稍微累积 alpha 为 0% 的像素
【发布时间】:2017-02-07 01:08:48
【问题描述】:

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

在我的顶点着色器中,我正在钳制输出片段颜色的 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 中读取的 - 我已经确定位图中没有边缘 - 不应绘制任何类似于正方形的东西。

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

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

【问题讨论】:

  • 几何本身有硬边。如果您没有实际上为零的 alpha(因为夹子上的最小值 > 0.0),那么您将获得一定数量的四边形可见。为什么你的钳位最小值高于零?

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


【解决方案1】:

无论你的纹理 alpha 是什么,你的clamp 函数都会返回 0.1 到 0.5,因为你是这样设置的。

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

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

【讨论】:

  • 这并没有回答问题,这是黑暗边框的来源。
  • @solidpixel 这不是他亲自强调的吗?他说“我突出显示了一个带有黑色边框的精灵”
  • @solidpixel 并阅读标题“粒子精灵在 alpha 为 0% 的情况下略微累积像素”
猜你喜欢
  • 1970-01-01
  • 2013-06-28
  • 2019-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-18
  • 2019-11-01
  • 1970-01-01
相关资源
最近更新 更多