【发布时间】:2019-08-22 02:00:17
【问题描述】:
我正在构建一个基于体素的游戏,它在许多方面都与 Minecraft 相似,即低分辨率纹理和方块。
显然优化对于这类游戏很重要,原因有很多,但我遇到的有两个似乎是相互排斥的:纹理映射和纹理平铺。
使用纹理映射,我将生成所有现有块纹理的单个纹理映射,我读过它可以大大提高性能。这种优化的问题是纹理平铺似乎是不可能的,因为该技术依赖于纹理文件的第一个和最后一个像素用于相同的纹理,而在使用映射时不再适用。这也意味着据我所知,相邻块的混乱永远无法合并。
通过平铺,可以将具有相同纹理的大块块组合成一个 2 个三元网格。虽然效率很高,但每个纹理都需要自己的 Material 对象,这意味着每个不同的块纹理都需要自己的子网格。
其中哪一个更有可能提供卓越的整体性能?
【问题讨论】:
-
合并网格听起来不错,但很难实现。
-
结合纹理将是一件好事。使用硬件实例绘制多个网格。在实例数据中包含一个纹理索引以寻址正确的纹理(通过除以平铺计数来重新寻址 UV)。您甚至可以尝试使用几何着色器生成立方体。