繁体   English   中英

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

[英]Texture mapping or texture tiling for a voxel-based game? (Unity)

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

显然优化对于这类游戏很重要,原因有很多,但我遇到过两个似乎相互排斥的:纹理映射和纹理平铺。

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

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

其中哪些更有可能提供卓越的整体性能?

它们看起来相互排斥,但实际上并非如此。
Minecraft 不会重复纹理,而是重复 UV。

这个怎么运作:
对于共享纹理的所有矩形,请确保它们的 UV 位于同一位置。
例如,所有草矩形都应该在图集中的草纹理顶部有它们的 UV。
为了让它看起来不错,你需要无缝纹理
同样为了防止边缘渗色,您需要确保所有纹理之间都有一些填充

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

在此处输入图片说明 纹理取自 Minecraft。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM