Mip-Mapping很重要

MipMap这个东东,记得我除了最早在DX9龙书上了解了其基本概念后,以后便再没接触过,因为从创建到使用都是硬件一手包办,所以这个知识点很容易被遗忘和忽视。这几天空闲时恰好发现了一点MipMap引起的问题,就专门看了下,发现很多东西原来我之前根本就没理解对。我之前竟然傻逼的以为MipMap是用来加速渲染的。。。其实它是用来改善渲染走样的,即提升画面质量。

相关的资料我看了下面这几个,感觉很不错:

 

《3D编程大师技巧》12章Mip Mapping and Trilinear Texture Filtering 一节

《Real-Time Rendering》3rd第6章专门讲了放大缩小走样相关

http://blog.sina.com.cn/s/blog_5f99aed00100d7pw.html

http://www.gamasutra.com/view/feature/3301/runtime_mipmap_filtering.php

http://www.lihuasoft.net/article/show.php?id=4509

 

看了最后一个链接的文章后,我终于明白了Ogre的Terrain Sample中有两句代码是什么意思。。。

MaterialManager::getSingleton().setDefaultTextureFiltering(TFO_ANISOTROPIC);
MaterialManager::getSingleton().setDefaultAnisotropy(7);

即各向异性过滤的用处,建议读这篇文章。下面是各向异性效果的对比:

Mip-Mapping很重要_第1张图片

                                DX11未开启各向异性过滤 

 

Mip-Mapping很重要_第2张图片

                            DX11开启16x各向异性过滤

 

下面贴一些有无MipMap的比较图:

 

Mip-Mapping很重要_第3张图片

                               地形渲染,有MipMap

 

Mip-Mapping很重要_第4张图片

                DX11,关闭Mipmap,可以看出越往远越有麻点的感觉,而且相机移动会有"sparklies"效果

 

Mip-Mapping很重要_第5张图片

                      DX11,开启MipMap

 

Mip-Mapping很重要_第6张图片

                DX11,关闭MipMap,远处已经完全失真了

 

我也在自己的软渲中加入了非常弱智的MipMap。生成是采用了简单的box-filter,mip选择是根据相机空间z值,比如每隔几百米增加一个mip层。。。渲染也是选择单层mip,而不是Trilinear。。

下面这幅图显示了采用各层mip的分布,效果太差了,其实跟没mipmap差不多。。。Mip-banding也很严重。。

Mip-Mapping很重要_第7张图片

你可能感兴趣的:(Mip-Mapping很重要)