mipmap 之前講了生成 原理
這個講下我對效能的理解
mipmap
對效能的影響
包含兩方面
minification時,取樣多個textel得到1個pixel顏色,如果是mipmap形成相鄰兩個pixel的兩組textels更為接近 會都在tex cache裡面
1.這樣cache命中,速度快,
2.頻寬減小,沒有又從tex到cache來讀取資料
我之前有一種錯誤認識 頻寬和texturesize有關,其實只和 sample filter---point 1, bilinear 4, trilinear 8(mipmap level之間) 和fragment 有多少個(resolution決定) 有關
頻寬
Memory Bandwidth 定義是prosser到memeory的data rate GB/s
fragement的頻寬包括取樣tex 和繪製到color buffer &depth buffer這兩部分 對mipmap來說 tex cache命中增加 減小了取樣tex的頻寬
(CPU到GPU之間的資料 這部分mipmap bind一次 8張全部繫結 每幀每次drawcall 前bindtexture-----這部分也許或許應該 至少不是GPU頻寬-------不知道對不對
這部分肯定是有的,bindtexture 雖然可以是隻傳地址 但是資源肯定要從記憶體到視訊記憶體 每次drawcall走一次 除非想Nintendo那樣共享memory
mipmap是增加了這部分 資料傳輸 但是這個量太低了 一幀大概100次 X一組mipmap那麼大 和GPU內部資料量不能比------也是不那麼確定的的
https://msdn.microsoft.com/en-us/library/windows/desktop/ff476259(v=vs.85).aspx
memory有這幾種型別default 型別只給GPU rw 只給GPU訪問的這塊memory是直接開在視訊記憶體還是開在記憶體 呢呢呢 需要查資料
從遊戲開始載入資源就開這塊memory 從硬碟把texture資料加過去 就不是每幀 每次drawcall往視訊記憶體傳資料了
default 是視訊記憶體 references :Practical Rendering and Computation with Direct3D 11 這個吧
沒必要放system memory 只能gpu訪問