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);

即各向異性過濾的用處,建議讀這篇文章。下面是各向異性效果的對比:

                                DX11未開啟各向異性過濾 

 

                            DX11開啟16x各向異性過濾

 

下面貼一些有無MipMap的比較圖:

 

                               地形渲染,有MipMap

 

                DX11,關閉Mipmap,可以看出越往遠越有麻點的感覺,而且相機移動會有"sparklies"效果

 

                      DX11,開啟MipMap

 

                DX11,關閉MipMap,遠處已經完全失真了

 

我也在自己的軟渲中加入了非常弱智的MipMap。生成是采用了簡單的box-filter,mip選擇是根據相機空間z值,比如每隔幾百米增加一個mip層。。。渲染也是選擇單層mip,而不是Trilinear。。

下面這幅圖顯示了采用各層mip的分布,效果太差了,其實跟沒mipmap差不多。。。Mip-banding也很嚴重。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM