的子像素數量移動將永遠改變紋理採樣。您使用最接近的採樣會影響紋理的採樣方式,但不會在首先採樣的座標處進行採樣。該座標是跨越多邊形內插的tex-coords和頂點的函數,這些頂點決定了多邊形如何被柵格化以屏蔽像素。
請記住,要在像素中心進行評估時得到完美的紋理採樣插值tex-coords,必須完全位於texel中心。
將多邊形移動一個像素的分數會改變紋理採樣的位置,因爲像素中心現在位於多邊形內的稍微不同的點。
現在,如果採樣距離最近,得到的座標將有效地回到最近的紋素像素,所以如果你的座標離中心不遠,它可能會工作。然而,當你的座標移動了大約半個像素,所以它們正好位於兩個紋理幾乎等距的點上,那麼在計算精度上只需要很小的誤差就可以一個方向微調一些像素,另一個方向。
下面是一張圖。我選擇顯示一個三角形,用一個檢查圖案進行映射,但它同樣適用於精靈或其他任何東西。
在圖的上半部分,我只是展示了三角形如何映射到紋理。如果您在高分辨率屏幕上(或以非常大的尺寸)渲染此三角形,則會期望看到完全複製的檢查圖案。
但是,如果您以更接近的比例(例如1:1)進行映射,那麼採樣是至關重要的。在圖的底部顯示了這種情況。
要看的關鍵是屏幕像素中心的位置,因爲它決定了哪些像素被繪製,以及紋理的採樣位置。在這種情況下,我已經將多邊形映射到正確的大小,但偏移了半個像素。像素中心恰好在相鄰的紋理元素之間對齊,並且採樣會非常顫抖。
![Diagram showing texture sampling](https://i.stack.imgur.com/t2q51.png)
Thanx for the response。您能否詳細說明一下:「該座標是多邊形內插的tex-coords和頂點的函數,這些頂點決定了多邊形如何光柵化以屏蔽像素。」我不明白在子像素轉換後片段着色器中哪些參數會受到影響。 – Kimi
可能最簡單的一個圖...將看到我可以做什麼在我的午休... – JasonD
+1非常好的答案和很好的圖! –