🌘 紋理採樣的mipmap選擇詳解
➤ 揭開GPU紋理採樣的神祕面紗
✤ https://pema.dev/2025/05/09/mipmaps-too-much-detail/
本文深入探討了GPU在紋理採樣時如何選擇mipmap級別。文章首先簡要介紹了mipmap技術及其解決紋理異化問題的原理,並指出標準的紋理採樣函數`Texture2D.Sample()`會自動選擇適當的mipmap級別。然而,作者認為這解釋不夠深入,因此進一步探討了GPU具體如何做到這一點。文章接著解釋了片段著色器如何利用像素四邊形計算屏幕空間的偏導數`ddx()`和`ddy()`,並揭示了`Texture2D.Sample()`實際上是`Texture2D.SampleGrad()`的簡化形式。最終,作者根據GLES3.0規格,闡述了mipmap級別與偏導數之間的數學關係,即mipmap級別等於scale factor的以2為底的對數,其中scale factor基於u和v座標的偏導數的計算。
+ 這篇文章寫得非常棒,深入淺出地解釋了mipmap選擇的機制
#圖像處理 #圖形渲染 #GPU #mipmap
➤ 揭開GPU紋理採樣的神祕面紗
✤ https://pema.dev/2025/05/09/mipmaps-too-much-detail/
本文深入探討了GPU在紋理採樣時如何選擇mipmap級別。文章首先簡要介紹了mipmap技術及其解決紋理異化問題的原理,並指出標準的紋理採樣函數`Texture2D.Sample()`會自動選擇適當的mipmap級別。然而,作者認為這解釋不夠深入,因此進一步探討了GPU具體如何做到這一點。文章接著解釋了片段著色器如何利用像素四邊形計算屏幕空間的偏導數`ddx()`和`ddy()`,並揭示了`Texture2D.Sample()`實際上是`Texture2D.SampleGrad()`的簡化形式。最終,作者根據GLES3.0規格,闡述了mipmap級別與偏導數之間的數學關係,即mipmap級別等於scale factor的以2為底的對數,其中scale factor基於u和v座標的偏導數的計算。
+ 這篇文章寫得非常棒,深入淺出地解釋了mipmap選擇的機制
#圖像處理 #圖形渲染 #GPU #mipmap
Mipmap selection in too much detail
In this post, I want to shed some light on something I’ve been wondering about for a while: How exactly are mipmap levels selected when sampling textures on the GPU? If you already know what mipmapping is, why we use it, and what pixel derivatives (ddx() / ddy()) are, you can skip to the section Derivatives to mipmap levels. The post does, however, assume some knowledge of graphics programming.