基于体素的游戏的纹理映射或纹理平铺? (统一)

时间:2019-08-22 02:00:17

标签: c# unity3d mesh voxel

我正在构建一个基于体素的游戏,该游戏在许多方面都与Minecraft在视觉上相似,即低分辨率纹理和正方形块。

出于各种原因,显然优化对于这类游戏很重要,但是我遇到了两个似乎互斥的东西:纹理映射和纹理平铺。

使用纹理映射,我将生成所有现有块纹理的单个纹理图,我读过它可以极大地提高性能。此优化的问题在于,似乎无法进行纹理平铺,因为该技术依赖于纹理文件的第一个像素和最后一个像素用于相同的纹理,使用映射时不再适用。据我所知,这也意味着相邻块的混乱永远无法合并。

通过平铺,可以将具有相同纹理的大块块组合成一个2个三网格。虽然高效,但是每个纹理都需要有自己的Material对象,这意味着每个不同的块纹理都需要有自己的子网格。

其中哪些将更有可能提供出色的整体性能?

1 个答案:

答案 0 :(得分:1)

它们看起来是互斥的,但不是真的。
Minecraft不重复纹理,而是重复UV。

工作原理:
对于所有共享纹理的矩形,请确保它们的UV位于同一位置。
例如,所有草矩形都应在地图集中草纹理的顶部具有UV。
为了使它看起来不错,您需要seamless textures
另外,为了防止边缘渗色,您需要确保所有纹理之间都包含一些padding

示例:
我做了一个快速搅拌机项目,展示了它。
侧面的矩形在相同的纹理区域都具有UV,而顶部的矩形在不同的纹理区域具有UV。
“重复”是通过在地图集中使用无缝纹理来完成的。
在这种情况下。没有添加填充,因为像素化纹理不需要填充。

enter image description here 纹理来自《我的世界》。