2012-02-25 58 views

回答

3

首先,很好的演示!

关于您的问题:这是自发明之日起,就在夜间让引擎程序员保持起来。 :)

有几件事你可以做,以减轻重复纹理的可见性。第一个也是最明显的就是不使用重复纹理!被称为虚拟纹理,在一般情况下这是一个棘手的问题(RAGE的Megatexture是我所知道的唯一商业实现之一),但如果你有更多的限制使用,比如纹理化一个景观,它可以变得更容易一些。尽管如此,我可以想象这种方法对于大多数需求来说是过度的。

虽然有一些简单的方法来帮助这种情况。如果您想要在着色器中完全生成表面细节的路径(这可能很昂贵),那么您可以在将各种分形应用到输出中时获得很多里程。 (想像Mandelbrot套装那样的东西),但是艺术家通常难以控制。有一些interesting resources关于混合重复纹理的方法,以使它们看起来不那么重复,但它们倾向于用非常有序的图案(如砖块或瓷砖)来破坏纹理。

虽然我知道的最有艺术气息的路线可能是使用细节纹理。这些可以以两种方式工作:他们可以将fine grained detail添加到更大的重复模式,或者他们可以在重复模式的顶部添加larger layer of variance以打破单调。 (这是你想要的。)在这两种情况下,混合都非常简单,并且不会导致很多运行时间。

如果一切都失败了,您可以继续使用重复的纹理,但只是使基础纹理更大,更多样化。从远处看,仍然可能看起来很有趣,但这真的取决于你制作的应用类型。如果意图是让用户以第一人称视角走动,那么这可能就足够了。如果你正在飞行,它可能更容易引起注意。 (但在这种情况下,您可能不需要像您的示例所示的那样具有许多重复的小纹理。)当然,这里的折衷是使用更多纹理内存以及随之而来的性能命中。

您现在可能已经意识到,这个问题并没有真正的银弹解决方案。主要是关于平衡应用程序的视觉需求和性能需求,而这对于每个项目都会有所不同。

+1

Toji,感谢您的快速回复。这给了我很多调查。天际看看! – 2012-02-26 09:46:38

+0

不可能使用类似“元胞自动机”的东西来生成新的随机非重复纹理? (对不起的词汇表) – 2013-10-22 13:55:39