Unity3D - 体素网格 - 错误的侧面渲染(C# 代码)

Unity3D - Voxel Mesh - Wrong side rendering (C# code)

我目前正在开发体素游戏(不是 Minecraft 的另一个副本),但我遇到了渲染问题。

Image 1+2(我没有足够的声誉来 post 图片和超过 2 links)

我在我认为是边缘的地方(用手)画了红线,因为我认为我可以透过顶面看到。

第二张图片是水的同样问题(我认为它是由同样的问题完成的)。

我使用了 AlexStv 的体素教程(我不能 post link 因为声誉低)。我不能向 him/her 寻求帮助,因为我目前只使用教程代码的一小部分。

我已经上传了我的代码 here 但是请不要在其他任何地方使用它。 我尽可能简单地编写了代码,所以我相信它对于每个 Unity3D C# 都是可读的 programmer/coder.

我今天用水发现了这个问题(然后我从第一个图像中找到了问题)。

最后我不得不说我在互联网上的某个地方找到了着色器(我根据自己的使用修改了它,但我不懂着色器的语言)。

PS:我没有尝试使用 Unity Answers,因为我用过一次但他们没有帮助我(并将我的问题标记为重复)。

看来您的问题是由对不透明地形块使用透明着色器引起的。

当透明网格渲染在其他透明对象或自身之上时,这种情况经常发生在 Unity(和大多数引擎)中。您需要做的是将水分离到它自己的网格渲染器中,并确保非透明地形块使用非透明着色器。这也将提高性能,因为透明着色器的成本可能很高。如果水不平坦,您可能仍会在水(或其他使用透明着色器的块)上遇到重叠问题。我建议您查看 this article 这可能会有所帮助。但是,这是透明着色器的常见问题。