【发布时间】:2011-01-17 15:08:01
【问题描述】:
置换贴图究竟有什么好处?他们真的加速了更高数量的多边形的渲染,还是只是艺术家和引擎内工具暂时降低多边形数量的一个绝妙技巧?我能看到它唯一真实的用途可能是细节级别的算法,但仅限于更远的距离。
【问题讨论】:
标签: opengl directx rendering game-engine
置换贴图究竟有什么好处?他们真的加速了更高数量的多边形的渲染,还是只是艺术家和引擎内工具暂时降低多边形数量的一个绝妙技巧?我能看到它唯一真实的用途可能是细节级别的算法,但仅限于更远的距离。
【问题讨论】:
标签: opengl directx rendering game-engine
它可以为渲染高多边形模型提供更紧凑的结构。置换贴图每个像素可以包含少至 1 个字节。如果您将其细分为置换贴图,那么您将在 GPU 上节省大量内存带宽。
图像是一个简单的顶点结构。
struct Vert
{
float x, y, z;
float nx, ny, nz;
float u, v;
};
该结构的大小为 32 字节。因此,如果您想象可以将顶点数量减半(并且您应该能够做更多的地狱)并用 1 字节高度图替换所有其他顶点,那么您使用的内存量就可以了如下:
100,000 poly object = 3,200,000 bytes using vertex struct alone.
25,000 polys + 100,000 entry height map = 900,000 bytes.
即位移映射在 28% 的内存中为您提供相同的数据。赢! :D
如果您存储法线贴图并使用 w/a 组件作为高度,那么您将使用 400000 字节的纹理,现在您的大小为 1,200,000 字节,仍然是大小的 37.5%。另外,您现在可以删除 12 个字节用于正常存储,而您实际上已降至 900,000 字节的相同数字。
您应该能够获得比这更高的几何压缩率。因此,总而言之,对于一小部分存储数据,您可以获得更好看的模型。
作为额外的好处,使用法线贴图/高度贴图系统,您还可以轻松缩放,以便功能较弱的机器只需使用法线数据,您仍然可以获得相当好的结果。
【讨论】: