Mip-Mapping很重要

MipMap這個東東,記得我除了最先在DX9龍書上了解了其基本概念後,之後便再沒接觸過,由於從建立到使用都是硬件一手包辦,因此這個知識點很容易被遺忘和忽視。這幾天空閒時剛好發現了一點MipMap引發的問題,就專門看了下,發現不少東西原來我以前根本就沒理解對。我以前居然傻逼的覺得MipMap是用來加速渲染的。。。其實它是用來改善渲染走樣的,即提高畫面質量。php

相關的資料我看了下面這幾個,感受很不錯:html

 

《3D編程大師技巧》12章Mip Mapping and Trilinear Texture Filtering 一節web

《Real-Time Rendering》3rd第6章專門講了放大縮小走樣相關編程

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

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

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

 

看了最後一個連接的文章後,我終於明白了Ogre的Terrain Sample中有兩句代碼是什麼意思。。。3d

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

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

                                DX11未開啓各向異性過濾 orm

 

                            DX11開啓16x各向異性過濾

 

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

 

                               地形渲染,有MipMap

 

                DX11,關閉Mipmap,能夠看出越往遠越有麻點的感受,並且相機移動會有"sparklies"效果

 

                      DX11,開啓MipMap

 

                DX11,關閉MipMap,遠處已經徹底失真了

 

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

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

相關文章
相關標籤/搜索