使用着色器修改Scene Kit中的深度缓冲区

问题描述 投票:1回答:1

是否可以通过从其他模型中减去深度缓冲区的逆来修改深度缓冲区以渲染一个模型?例如说深度测试在第二个模型的区域中的第一个模型失败,从而在另一个模型中切出一个洞。

编辑我要执行此操作的原因之一是由于两个模型之间的Z距较远。我尝试更改不可见的“切出”节点的渲染顺序,但这会导致远距离Z战斗问题。

shader scenekit metal depth-buffer
1个回答
1
投票

有多种方法可以实现,但是最简单的方法可能是]

  1. 具有阻塞器的几何形状
  2. 将封堵器材料的colorBufferWriteMask属性设置为SCNColorMaskNone(它将仍然写入作为独立属性的深度缓冲区,即writesToDepthBuffer
  3. 如果出现剔除或排序问题,最终将节点的renderingOrder设置为-1(或将使其始终在被遮挡的节点之前呈现的任何值)>]
© www.soinside.com 2019 - 2024. All rights reserved.