当 alpha 设置为 0 时,SCNPlane 上的奇数边界线

问题描述

我在 SCNPlane 的边界上有一个奇怪的行为,我相信任何几何体都会有这种行为,看起来类似于 SceneKit - Remove stitching line in edges borders

我通过 SCNProgram 设置透明度并在我运行的片段中

float alphaBloom(float2 uv) {
uv *=  1.0 - uv.yx;   
float vig = uv.x*uv.y * 15.0;
vig = pow(vig,3.95);
return vig;
}

看起来几何图形是用正确的 alpha 绘制的,在它的末尾绘制了一条与边框颜色相同的线,但 alpha 为 1。

enter image description here

我确实相信顶点和片段着色器没问题,这在我看来更像是一个我还不知道的设置/设置问题。

有什么标志可以摆脱这些吗?

没有使用程序的带有漫反射透明材料的同一平面工作正常。

不透明设置为是。 将其设置为 NO 将使材料 alpha 恒定,我希望它改变并在表面的末端为 0。我是通过上面设置的 alphaBloom 函数来实现的。

解决方法

解决了。

为了去掉边框上的多余线条:

  • .isOpaque = false
  • #pragma transparent 在您的程序顶部
  • 更改您的代码,使其使用预乘 alphas: return float4(0.0,0.00000001,0.0,1) 必须是 返回 float4(0.0 * 0.00000001,1.0 * 0.00000001,0.0 * 0.00000001,0.00000001) 没有 .isOpaque

HTH!