Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

抗鋸齒:

也參考

Godot 同樣支援 3D 抗鋸齒。參看 抗鋸齒: 頁面。

前言

由於其有限的解析度,以2D渲染的場景可能出現鋸齒偽影。這些偽影通常以幾何邊緣上的“樓梯狀”效果的形式呈現,並且在使用節點(如 Line2D, Polygon2D 或者 TextureProgressBar. 2D 中的自訂繪圖)時最為顯著。對於不支援消除鋸齒的方法,也可能出現鋸齒偽影。

在下面的範例中,你可以看到邊緣呈現出塊狀:

圖像縮放 2 倍並進行近鄰濾波,使混疊現象更加明顯。

圖像縮放 2 倍並進行近鄰濾波,使混疊現象更加明顯。

為了解決這個問題,Godot 支援多種在 2D 渲染中啟用抗鋸齒的方法。

Line2D 和自訂繪圖中的反鋸齒屬性

這是推薦的方法,因為在大多數情況下,這種方法對性能的影響較小。

Line2D 具有 **Antialiased**(抗鋸齒)屬性,可以在屬性面板中啟用。此外,2D 中的自訂繪圖 中的一些方法支援提供可選的 antialiased 參數,可以在呼叫函式時設定為 true

這些方法不需要啟用MSAA,這使得它們的*基準*性能成本很低。換句話說,如果您在某個階段沒有繪製任何抗鋸齒幾何圖形,則不會產生永久性的額外性能消耗。

這些抗鋸齒方法的缺點是需要生成額外的幾何圖形。如果要生成每影格都需要更新的複雜 2D 幾何圖形,這可能會成為程式的性能瓶頸。此外,Polygon2D、TextureProgressBar 和幾種自訂繪圖方法都不具備抗鋸齒屬性。對於這些節點,可以使用 2D 多取樣抗鋸齒來代替。

多取樣抗鋸齒 (MSAA)。

在 2D 中啟用 MSAA 之前,必須先瞭解 MSAA 的操作物件。2D 中的 MSAA 遵循與 3D 中類似的限制。雖然它不會帶來任何模糊,但其應用範圍是有限的。2D MSAA 的主要應用包括:

  • 幾何邊緣,如直線和多邊形繪圖。

  • 精靈邊緣*僅限於與紋理邊緣接觸的像素*。這適用於線性篩選和最近鄰插值篩選。使用圖像透明度建立的精靈邊緣不受MSAA影響。

MSAA 的不足之處在於它只對邊緣進行操作。這是因為 MSAA 增加了*覆蓋取樣*的數量,而不是*顏色*取樣的數量。然而,由於顏色取樣的數量並沒有增加,片段著色器仍然只會為每個像素運作一次。因此,MSAA *不會影響*以下型別的鋸齒:

  • 最近鄰篩選紋理中的混疊現象(像素藝術)。

  • 自訂 2D 著色器造成的鋸齒。

  • 使用 Light2D 時的鏡面反射鋸齒。

  • 點渲染的點大小.

可以通過更改專案設定中**渲染 > 抗鋸齒 > 品質 > MSAA 2D** 的設定值來啟用 MSAA。重要的是要更改 MSAA 2D 的設定值,而不是 MSAA 3D,因為它們是完全獨立的設定項。

左側為無抗鋸齒,右側為不同級別的多重取樣抗鋸齒MSAA比較。左上角包含一個Line2D節點,右上角包含2個TextureProgressBar進度條節點。底部包含8個精靈,他們中的4個與邊緣接觸(綠色背景),另外4個不與邊緣接觸(Godot旗標):

../../_images/antialiasing_msaa_2x.webp ../../_images/antialiasing_msaa_4x.webp ../../_images/antialiasing_msaa_8x.webp