為什麼要強調Texture2DArray在地形上的應用?

時間 2021-05-12 17:30:47

1樓:叛逆者

1. 為什麼要強調Texture2DArray可以用於地形,除了減少Bind以外有什麼優勢?

減少bind優勢很大啊。即能減少drawcall,有能減少流水線暫停。即便只有這個優勢,也是乙個非常非常巨大的優勢了。

2. 既然每個Slice都要Sampling的話,效能上應該沒有明顯區別才對?

沒有每個slice都要sample,這一點你理解錯了。

3. 退一步講... 為什麼有Texture3D了還要有Texture2DArray呢?

乙個mipmap過的Texture3D,在depth方向也是逐層遞減的。而mipmap過的Texture2DArray,只有x和y方向是逐層遞減。Array長度不減。

顯然對於地形來說,你要的是後者。

4. 看這裡的說法主要就是便於繫結,所以DX12出了Bindless就沒用了...

是的,有了bindless之後就不需要那些勞什子了。但你要考慮歷史的程序啊。Texture2DArray畢竟是D3D10就有,硬體支援率幾乎100%。

2樓:路路通

bind texture對於api是非常費cpu的操作。如果沒有bind texture array。繫結八個貼圖需要8個bing texture。

可能需要幾百毫秒。 有了texture array。乙個繫結操作就可以了。

對於dx12 或者 Vulkan。沒有繫結texture的概念。乙個texture 已經很像cpu的乙個記憶體指標。想用多少都可以。

3樓:Vinjn張靜

為什麼要強調Texture2DArray可以用於地形,除了減少Bind以外有什麼優勢?既然每個Slice都要Sampling的話,效能上應該沒有明顯區別才對?主要是為了減少 Bind,因為老 API 對 texture slot 個數有限制。

2.假設如一些資料所說Texture2DArray對比多個Texture有效能優勢的話,那麼是不是更極端點直接用Texture3D?Trilinear filtering甚至可以代替Shader裡Blend的過程吧?

但是實際沒有見過這種做法不知道是不是有什麼沒有考慮到的地方。

Texture3D 只能對相鄰的兩個 slice 進行插值。

地形貼圖不止用兩張貼圖喲,可能 n 張貼圖同時 blend。

4樓:大薩比

以下接詳細解釋了兩者的區別:

1L的回答個2L的鏈結都寫的非常詳細。

我再解釋一下:

對於2D Texture Array,只是2d貼圖的陣列。一層裡包含了所有mip資訊。

3D Texture是同乙個mip裡儲存所有層的資訊。

常識1:臨近的資料容易做快取,速度快。

於是對於voxelbased渲染資料,隨時要訪問3d空間資訊,而且voxelbased一般mip都會儲存特殊內容,當然是根據位置做快取的3D Texture更有優勢

對於地形渲染,可能附近20平公尺內都是同一張或者兩張貼圖的fetch,完全不需要快取所有層次的貼圖,而且20平公尺內可能會有大量的mip變化,自然是2DTextureArray勝出。至於層之間的blend,應該沒人會在不知情的情況下就用3DTexture的Filtering。都是取出需要的貼圖層來手動混合的。

常識2:上述快取方案僅僅是邏輯分布,具體GPU是怎麼做的與廠商和驅動都有關。

5樓:Steven Liu

terrain 不同 layer 之間 blend,本質上就是兩張貼圖通過某種指定權重做 lerp,你似乎把這個和用 linear sampling filter 搞混了。

把 N 張尺寸一樣格式一樣的貼圖放到乙個 texture array 中,然後用 linear sampling filter 取樣其中乙個 slice,filter 只會作用到這個 slice 的 XY方向(和普通貼圖一樣)。

把 N 張貼圖放到乙個 3d texture 中,然後用 linear sampling filter 取樣,就算你取樣的 Z 座標是整數,取樣出來的影象也會和前後的 slice 有 filter,因為 linear sampling filter 在 3d texture 上石 XYZ 方向的。

繪畫中為什麼要強調光影?

藝夥春春 認識素描中的明暗 1 明暗產生的原因 有光源 不論是自然光源 人工光源 照射,就有了明暗之說 2 明暗的基本法則 光源直射處 向光 是明亮部。光源照射不到之處 背光 是黑暗部。反射光所形成的是中間灰色部分。物體的形象在光的照射下,產生了明暗變化。光源一般有自然光 Sunny 燈光 人造光 ...

什麼是理性?為什麼要強調理性?

fgfghdgd 馬克思主義哲學既肯定理性因素在認識活動中的主導作用,強調非理性因素要受理性因素的制約,同時也承認非理性因素的重要作用。科學需要創新才能發展,科學創新是理性因素和非理性因素綜合作用的結果。進行科學創新既要有嚴密的邏輯思維能力,對實際問題進行嚴格的理性分析和邏輯論證 還要具有科學的自信...

為什麼我們需要強調意義,即活得更好?

烏炎 意義就是我們給行為的合理性所找乙個藉口或理由,僅此而已。由於每個人的理由是不一樣的,但每個人都在做這件事,為了好給這種行為貼乙個大眾共識的標籤,就起個名字叫做意義。而意義所敘述的理由基本上都是謊言,因為當初的起因肯定和意義的描述不一致,說謊就要圓謊,如果不能圓謊就會被集體所排除,而強調意義就是...