【问题标题】:Odd border line on SCNPlane when alpha is set to 0当 alpha 设置为 0 时,SCNPlane 上的奇数边界线
【发布时间】:2021-01-02 14:14:56
【问题描述】:

我在 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 的线。

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

有什么标志可以去掉这些吗?

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

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

【问题讨论】:

  • 你有截图吗? opaque 属性是否在 SCNProgram 实例上设置为 NO

标签: scenekit fragment-shader vertex-shader scnprogram


【解决方案1】:

解决了。

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

  • .不透明 = 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!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多