我发现有些引擎使用导数贴图代替切线法线贴图。

经过阅读后,替换切线法线似乎是一种很棒的方法,但是使用它们会有一些缺点吗?为什么仍继续使用切线空间法线?

是否可以同时比较优点和缺点?

评论

有好几篇博客都在谈论衍生工具,从生产引擎中实现衍生工具的人以及为什么选择这种方法的人那里获得一些反馈会很酷。

为什么事情不会立即被采用的一大因素是惯性,并且现有解决方案足够好。

#1 楼

经过一些研究和专家的解答,这是我的结论。

专业人士


不需要切线或双法线。内插器更少。
只需要两个通道。更少的纹理记忆。
不会遇到切线接缝。
可以使用alpha混合进行混合,而无需重新归一化。
网格记忆少:我们不需要存储切线向量。
实现速度快。

缺点


更多ALU
灵活性差。法线贴图可以表示任何导数贴图,但反之则不正确。例如,尖锐的边缘可能很难表示。

因此,与缺点相比,这有很多优点。但是主要的问题是这不是行业标准。
几乎没有内容创作工具,也没有艺术家的专业知识。

这是Bart Wronski的名言,很好地说明了目前的状况。导数图的绘制:


在生活/技术领域,可悲的是,并非总是最好的解决方案获胜/甚至没有得到应有的重视...它更多地是关于标准和惯性。


如果您想了解更多有关导数图的信息,请阅读一些有趣的文章。


Mikkelsen和3D图形:导数图| Morten Mikkelsen博客
衍生地图| CodeItNow
导数图与法线图| CodeItNow
具有导数贴图的三平面纹理|机器人七人
导数法线贴图-它们是什么? | polycount.com
衍生地图| Knald Technologies文档

如果我忘记了什么,或者如果您不同意在评论中随意说,我将很乐意改善此答案。

评论


$ \ begingroup $
您的某些专家似乎不使用预先计算的切线空间(即从每个像素的UV导数得出切线空间),而AFAIK是独立的设计选择,与导数图和法线图的选择无关。
$ \ endgroup $
–内森·里德(Nathan Reed)
17年4月6日在21:32

$ \ begingroup $
感谢@NathanReed的评论您是否在谈论计算切线和双法线的事实?您能告诉我更多关于预先计算的切线空间的信息吗?
$ \ endgroup $
–马特
17年4月7日在15:12



#2 楼

我假设您正在使用预先计算的高度图导数,而不是即时计算它们(有关详细信息,请参阅Mikkelsen博客上的这篇文章)。如果我们需要提供预先计算的高度导数,则必须提供两个通道,就像法线贴图一样。有人可能会说,导数贴图不需要像法线贴图那样需要切线顶点属性,但是高度图上的额外微分操作会使该性能提升无效。导数图是一个很酷的概念,但归根结底,我认为它们在性能方面并没有比普通的地图明显更好(尽管从概念上讲,我同意导数图更易于使用,因为我们不必处理带有切线空间)。