问题描述
我在 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 函数来实现的。
解决方法
解决了。
为了去掉边框上的多余线条:
- .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!