预览





正文
正常地形Tiling会使相同的图案重复出现,带来严重的重复感。本篇改善地表重复感的实现来自Unity官方的Paper《Practical Real-Time Hex-Tiling》,官方提供的Demo是C++写的,我改写进了URP中,代码放在了最后。

本篇Paper实现思路很简单。正常Tiling使用的是四边形的平铺。改为使用六边形平铺,随后在六边形内应用随机旋转。生成六边形的过程中会划分三种重复区域,随后插值计算并应用这些区域的权重值。
Mask:

不同的R值可以带来不同的对比度和边界羽化程度:


根据官方的建议,R值在(0.65,0.75)之间比较合适。
最终效果:

Github链接
https://github.com/Nuomi-Chobits/Unity-URP-HexTiling
如何使用
演示demo提供了三种不同的R值选项和权重值Mask用以Debug。
如何使用可以参考HexTilingTest.shader,其中有样例。