Z战斗平面。一个接一个地绘制

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

我正在尝试使用MeshTopology.Lines在游戏视图中模拟场景视图的着色线框渲染。当前,对象已复制并位于与原始对象相同的确切位置,然后应用了MeshTopology。

我唯一的问题是,由于面相互重叠,因此可见线闪烁。目前的解决方案是使用沿法线拉伸顶点的着色器。但是我想知道是否有办法使两个重叠面的对象一个接一个地呈现而不闪烁。

到目前为止,我已经使用过-

RenderQueue不适用于线条,而它们的面孔可以完美地工作。

ZTest,没有运气的偏移量。即使它适用于面,也不适用于MeshTopology生成的线。偏移量根本无法工作,ZTest-无法找到合适的偏移量。如果设置为Greater(GEqual),则线在任何上方都可见,原始对象上的Less则不表示任何内容。任何帮助,将不胜感激,谢谢。

Image of line flickering

由于最终目的与仅显示线框不同,因此我必须使用MeshTopology。 GLlines太慢了。

unity3d shader
1个回答
0
投票

对于您的用例,并假设您的Z缓冲区具有足够的精度(如果需要,请检查相机的近/远平面设置),您应该可以仅通过ZTest解决此问题。

在线框着色器中,使用ZTest Equal,并确保使用渲染队列Tags { "Queue" = "Geometry+1" }将其绘制在主网格之后。

通过这种方式,网格物体的实线将以其当前深度填充Z缓冲区,并且只有当新的深度值匹配时,第二线框(线框)将被绘制在其位置。

© www.soinside.com 2019 - 2024. All rights reserved.