一.Mipmap的生成

虛幻引擎在匯入貼圖的時候,如果貼圖的尺寸是為2的N次方,那麼引擎會預生成一組等比壓縮的紋理,這一組紋理叫Mipmap。

如下圖所示,當匯入一張1024*1024的原始紋理,會生成11張Mipmap

從原始紋理2的10次方,1024*1024解析度,一直到2的0次方,1*1解析度,共計11張紋理。

如果是2048*2048解析度,則會生成12張,以此類推,目前UE5最高可以匯入16384解析度的16K紋理,則可以生成15張Mipmap。

UE5_Texture淺析——MipMap

最大可匯入16K紋理素材

UE5_Texture淺析——MipMap

需要注意的一點是,如果紋理要生成mipmap,紋理的長寬都

必須是2的N次方

,也就是紋理的長寬畫素,必須是

1、2、4、6、16、32、64、128、512、1024、2048、4096、8192、16384.

如果不是的話,則不會生成,如下圖這張4000*4000的紋理。

UE5_Texture淺析——MipMap

解析度4000*4000無法生產Mipmap

非正方形紋理,只要長寬畫素在2的N次方範圍內,也能生成Mipmap。

生成的數量,以最長的邊為主。

假設一張紋理為1024*256,則以最長邊1024解析度為最終生成數量,11張mipmap。這樣也會產生一個BUG,某些小紋理長寬比會出錯。下圖,當一張1024*256的圖匯入引擎,LOD為9\10層級時,長寬比已經不是最初的4:1了

UE5_Texture淺析——MipMap

UE5_Texture淺析——MipMap

當LOD為9\10時,長寬比例出錯

所以,非必要情況,紋理資產進引擎,最好是

正方形

尺寸為2的N次方。

二、Mipmap的優點

Mipmap紋理的優點分為兩個方面,

效果最佳化

效能最佳化

1.效果最佳化

Mipmap的本質是為了處理場景中遠處物體

低頻取樣

導致的

畫面失真

比如出現

閃爍

或者

摩爾紋

這只是針對具有

高頻

變換(有色彩變化)的紋理,如果紋理是一個

純色

,則有沒有Mipmap並沒有任何影響。

UE5_Texture淺析——MipMap

當然,處理畫面失真也只能夠處理

靜態

(頻域)情況下的畫面失真,如果是

動態

(時域)情況下(時域)的畫面失真,Mipmap是無效的,比如高速位移的紋理。

2.效能最佳化

Mipmap是以

空間換時間形式

的效能最佳化。能夠有效降低視訊記憶體頻寬的佔用,以更快的時間渲染,因為根據相機距離,載入了小解析度的貼圖。

但是記憶體的佔用提高了三分之一。

同一張紋理,生成Mipmap和不生成Mipmap,記憶體的佔用相差了三分之一。

UE5_Texture淺析——MipMap

三、缺點

缺點主要是因為遠處的物體載入了低解析度的貼圖,導致效果上產生了差異。

1.Mask紋理透明

對於具有精細Mask紋理的材質,相機距離過遠,Mask切換成了精度較低的紋理,會導致材質出現錯誤。比如植被的樹葉消失。

UE5_Texture淺析——MipMap

UE5_Texture淺析——MipMap

解決方法:將Opacity Mask Clip Value改成0。01

UE5_Texture淺析——MipMap

UE5_Texture淺析——MipMap

2.法線失真

相機拉遠的同時,材質的法線紋理切換為小解析度的貼圖,會導致模型表面變得光滑,材質效果失真。

早在很久很久以前,人們就發現了這個問題,針對這個問題的解決方案也很多。

從最早04年Michael Toksvig的Mipmapping Normal Maps這篇文章採用正態分佈的方法進行處理法線貼圖

UE5_Texture淺析——MipMap

https://developer。download。nvidia。com/whitepapers/2006/Mipmapping_Normal_Maps。pdf

以及

https://www。

cs。columbia。edu/cg/norm

almap/normalmap。pdf

到後面將粗糙度寫入法線紋理中,以糾正小Mipmap的法線貼圖導致

法線丟失

但是相對的

增加粗糙度

來修正這個問題。

可以參考

https://

media。steampowered。com/

apps/valve/2015/Alex_Vlachos_Advanced_VR_Rendering_GDC2015。pdf

如下圖

UE5_Texture淺析——MipMap

UE5_Texture淺析——MipMap

UE裡面也有相關的問題,簡單透過材質修正了一下,透過mipmap提高了遠處的粗糙度

UE5_Texture淺析——MipMap

修正前

UE5_Texture淺析——MipMap

修正後,根據距離提高了遠處的粗糙度

四、UE貼圖Mipmap相關引數

相關引數只有這些,官方文件有詳細解釋

UE5_Texture淺析——MipMap

有一點需要注意的是,不同的紋理組的設定,在Texture Streaming的載入是有優先順序的

角色相關的貼圖

和部分植被相關的貼圖,Mipmap的載入優先順序要高於其他的。

UE5_Texture淺析——MipMap

角色相關的貼圖更優先載入