位移映射

时间:2011-01-17 15:08:02

标签: opengl directx rendering game-engine

置换贴图的好处究竟是什么?它们实际上是否会加速渲染更高数量的多边形,或者它只是艺术家和引擎内工具暂时降低多边形数量的一个小技巧?我能看到的唯一真实的东西可能是细节算法水平,但距离更远。

1 个答案:

答案 0 :(得分:3)

它可以提供更紧凑的结构来渲染高多边形模型。位移图可以包含每像素1个字节。如果你考虑到了位移映射,那么你在GPU上节省了大量的内存带宽。

第二个简单顶点结构的图像。

struct Vert
{
    float x, y, z;
    float nx, ny, nz;
    float u, v;
};

该结构的大小为32个字节。因此,如果你想象你可以对顶点的数量进行四分之一(并且你应该能够做到比这更多的HELL)并用1字节高度的地图替换所有其他顶点,那么你使用的内存量就可以了如下:

100,000 poly object = 3,200,000 bytes using vertex struct alone.
25,000 polys + 100,000 entry height map = 900,000 bytes.

即,dispalcement映射在28%的内存中为您提供相同的数据。赢得! :d

如果存储法线贴图并使用w / a组件作为高度,则纹理使用400000字节,现在大小为1,200,000字节,仍然是该大小的37.5%。加上你现在可以删除12个字节用于正常存储,你真的可以达到900,000字节的相同数字。

你应该能够获得比这更高的几何压缩率。因此,总而言之,您可以获得一小部分存储数据的更好看的模型。

作为额外的好处,使用法线贴图/高度贴图系统,您还可以轻松扩展,以便功能较弱的机器只使用普通数据,您仍然可以获得相当不错的结果。