Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

環境與後製處理

Godot 4 提供了全新設計的 Environment(環境)資源,以及全新的後期處理系統,內建許多可即時使用的特效。

備註

從 Godot 4 開始,環境*效能/品質*設定是在專案設定中定義的,而不是在環境資源中定義的。這使得全域調整變得更加容易,因為您不再需要單獨調整環境資源來適應各種硬體配置。

請注意,大多數環境效能/品質設定僅在專案設定中啟用**進階**開關後才可見。

環境

Environment (環境)資源儲存控制 2D 與 3D 算圖環境所需的所有資訊,包括天空、環境光、色調對映、特效與調整。本身不會自動生效,但你可依下列優先順序於指定位置啟用:

Camera3D 節點(最高優先順序)

可以為 Camera3D 節點設定 Environment。優先於其他所有設定。

../../_images/environment_camera.webp

這在想要覆蓋現有環境時非常有用, 但通常使用下面的選項更好.

預覽環境與太陽(最低優先順序)

備註

從 Godot 4 開始,預覽環境和太陽的系統替代了 Godot 3 專案中使用的 default_env.tres 檔案。

如果目前場景中不存在 WorldEnvironment 節點或 DirectionalLight3D 節點,編輯器會改為顯示預覽環境和太陽。可以使用 3D 編輯器頂部的按鈕禁用:

../../_images/environment_preview_sun_sky_toggle.webp

點擊右側的垂直排列的三個點就會顯示一個對話方塊,能夠用來自定義預覽環境的外觀:

../../_images/environment_preview_sun_sky_dialog.webp

預覽太陽和天空只在編輯器中可見,運作專案時不可見。 使用對話方塊底部的按鈕就可以將預覽太陽和天空作為節點加入到場景中。

小訣竅

在預覽環境編輯器中,點擊**將太陽新增到場景**或**將環境新增到場景**時按住 Shift,就會將預覽太陽和預覽環境一同新增到目前場景中(就像單獨點擊了這兩個按鈕一樣)。可以使用這個方法加速專案的設定和原型。

相機屬性

備註

在 Godot 4 中,曝光和景深資訊從環境資源中分離到單獨的 CameraAttributes 資源中。這樣可以更輕鬆地獨立於其他環境設定來調整這些屬性。

CameraAttributes 資源儲存曝光和景深資訊。它還允許根據場景亮度自動調整曝光。

目前有兩種可用的攝影機屬性資源:

  • 相機屬性實用: 使用任意單位公開功能,這對於大多數遊戲用例來說更容易推理。

  • 相機屬性物理: 使用現實世界單位曝光特徵,類似數位相機。例如,視野是使用以毫米為單位的焦距而不是以度為單位的值來設定的。當物理精確度很重要時建議使用,例如照片級真實感算繪。

兩種 CameraAttribute 資源型別都允許您使用相同的功能,但它們的配置不同。如果您不知道該選擇哪一個,請使用 CameraAttributesPractical

備註

在 Camera3D 節點上使用 CameraAttributesPhysical 將鎖定該 Camera3D 中的 FOV 和方面調整,因為視野是在 CameraAttributesPhysical 資源中調整的。如果在 WorldEnvironment 中使用,CameraAttributesPhysical 將不會覆蓋場景中的任何 Camera3D。

CameraAttributes 資源可以加入到 Camera3D 或 WorldEnvironment 節點。當目前相機設定了 CameraAttributes 時,它將「覆蓋」 WorldEnvironment 中設定的CameraAttributes(如果有)。

在大多數情況下,建議在 Camera3D 節點而不是 WorldEnvironment 上設定 CameraAttributes 資源。與 WorldEnvironment 不同,將 CameraAttributes 資源指派給 Camera3D 節點會阻止景深顯示在 3D 編輯器視窗中,除非正在預覽相機。

環境選項

以下是所有環境選項的詳細說明以及如何使用它們.

背景

「背景」區塊定義了如何填滿背景(即畫面上未繪製物件的區域)。背景不僅僅是顯示一張圖或顏色,預設同時會影響物件受到環境光與反射光的方式,這就是所謂的影像式照明(IBL)。

因此,背景天空可能會極大地影響場景的整體外觀,即使天空在螢幕上永遠不會直接可見。調整場景中的光照時應考慮這一點。

../../_images/environment_background1.webp

有多種背景模式可選:

  • 清除顏色(Clear Color) 使用專案設定中定義的預設清除顏色,背景將會是單一色彩。

  • 自訂顏色(Custom Color) 與清除顏色類似,但可指定自訂顏色值。

  • 天空(Sky) 讓你能自訂背景天空材質(見下方說明)。預設情況下,場景中的物件會反射這個天空材質,同時從中吸收環境光。

  • Canvas 會將 2D 場景作為 3D 場景的背景。這可以讓環境特效在 2D 呈現時也可見,例如 2D 發光效果

  • Keep does not draw any sky, keeping what was present on previous frames instead. This improves performance in purely indoor scenes, but creates a "hall of mirrors" visual glitch if the sky is visible at any time.

  • Camera Feed displays a CameraFeed from a physical camera as the background, useful for AR games on mobile devices.

天空材質

使用 Sky 背景模式(或環境光/反射光模式設定為 Sky)時,Sky 子資源可在環境資源中進行編輯。編輯此子資源可讓您在 Sky 中建立 SkyMaterial 資源。

有 3 種內建天空材質可供選擇:

  • PanoramaSkyMaterial: 使用 360 度全景天空圖片(建議 2:1 長寬比)。如需高動態範圍效果,請使用支援 HDR 的格式(如 .hdr.exr),而非一般 .png.jpg 格式。

  • ProceduralSkyMaterial: 使用程式產生的天空,並可調整地面、太陽、天空和地平線的顏色。這是編輯器預覽中使用的天空型別。太陽的位置是從場景中存在的前 4 個 DirectionalLight3D 節點自動得出的。給定時間最多可以有 4 個太陽。

  • PhysicalSkyMaterial: 使用具有可調整散射參數的基於物理的程式天空。太陽的位置會自動從場景中存在的第一個 DirectionalLight3D 節點匯出。與 ProceduralSkyMaterial 相比,PhysicalSkyMaterial 的算繪成本稍高。給定時間最多可以有 1 個太陽。

全景天空影像有時稱為 HDRI(高動態範圍影像)。您可以在「Poly Haven <https://polyhaven.com/hdris>」上找到免費授權的 HDRI。

備註

具有非常亮點的 HDR PanoramaSkyMaterial 紋理(例如可見太陽的現實生活照片)可能會導致環境反射和鏡面反射出現可見的閃光。這是由於紋理的峰值曝光過高所造成的。

若要解決此問題,請在檔案系統塢站中選擇全景紋理,前往匯入塢站,啟用 HDR 箝位曝光,然後按一下 重新匯入

如果您需要自訂天空材質(例如程式雲),您可以建立自訂 sky shader

環境光

環境(如此處定義)是一種光, 它影響具有相同強度的每個幾何體. 它是全域的, 獨立於可能新增到場景中的燈光.

這有幾個原因:

  • 背景: 從背景取得環境光,例如天空、自訂顏色或透明顏色(預設)。環境光強度將根據天空影像的內容而變化,這可以產生更具視覺吸引力的環境照明。必須將天空設定為背景才能使此模式可見。

  • 停用: 不使用任何環境光。對於純室內場景很有用。

  • 顏色(Color): 以固定顏色作為環境光,忽略背景天空。環境光強度將四面八方一致,導致光線較平坦。適合用於室內場景(避免黑影過深)或是低階裝置以提升效能。

  • 天空: 從指定的天空獲取環境光,即使背景設定為 天空 以外的模式。如果背景模式已經是 Sky,則此模式的行為與 Background 相同。

當環境光模式設為 Sky 或 Background(且背景模式為 Sky)時,可透過 Sky Contribution (天空貢獻度)屬性在環境色與天空間混合。預設值為 1.0,代表只使用天空環境光,若將其調低,則環境色會開始生效。

以下是不同環境光對場景的影響比較:

../../_images/environment_ambient2.webp

最後有一個 能量(Energy) 設定, 這是一個乘數, 在使用HDR時非常有用.

一般而言,您應僅依賴環境光單獨用於簡單場景或大型戶外場景。您也可以這樣做以提升效能。環境光渲染速度快,但它不能提供最佳的照明品質。最好從 ReflectionProbeVoxelGISDFGI 產生環境光,因為這些能夠更精確地模擬間接光如何傳播。以下是使用單一環境光顏色和 VoxelGI 在品質上的比較:

../../_images/environment_ambient_comparison.webp

使用上述方法之一, 物體獲得恒定的環境照明, 由來自探頭的環境光代替.

反射

反射光(也稱為鏡面光)是基於影像的照明的兩個組成部分中的另一個。

剛體可以設定為以下四種模式之一:

  • 背景: 從背景反射,例如天空、自訂顏色或透明顏色(預設)。

  • 停用: 不反射環境中的任何光線。適用於純粹的室內場景,或最大限度地提高低階裝置的性能。

  • 天空: 從背景天空反射,即使背景設定為 天空 以外的模式。如果背景模式已經是 Sky,則此模式的行為與 Background 相同。

色調對映

色調對應可從電影與遊戲產業常見的標準演算法中,選擇要套用至場景的色調映射。除 Linear 之外的模式可讓明暗更均衡,並避免高亮處的裁切。不同演算法的效能特性各異,選擇時應一併考量。

而主要缺點如下:

  • Mode: 要使用的色調對應模式。

    • Linear: 不修改顏色資料,產生線性色調曲線,會不自然地裁切高亮值,導致亮部看起來過曝。是最簡單且最快的色調對應。

    • Reinhard: 簡單的色調曲線,會壓低高亮以避免裁切。成像可能較為平淡、對比度較低,且比 Linear 慢。當 White 維持預設 1.0 時,Reinhard 與 Linear 的影像相同。

    • Filmic: 使用類膠片的色調曲線,避免高亮裁切,對比度也優於 Reinhard。速度略慢於 Reinhard。

    • ACES: 使用高對比的膠片風格色調曲線,並對高亮值去飽和以呈現更寫實的觀感。速度略慢於 Filmic。

    • AgX: Uses a film-like tonemapping curve and desaturates bright values for a more realistic appearance. Better than other tonemappers at maintaining the hue of colors as they become brighter. The slowest tonemapping option.

  • Exposure: 在送入色調對應前調整亮度。 Exposure 數值越高,影像越亮。 為了與 Linear 有相近的主觀亮度,送入色調對應的數值在 FilmicACES 下分別會再乘上 2.01.8.

  • White: The white reference value for tonemapping, which indicates where bright white is located in the scale of values provided to the tonemapper. For photorealistic lighting, recommended values are between 6.0 and 8.0. Higher values result in less blown out highlights, but may make the scene appear lower contrast. White is not available when using Linear. If you're using AgX, the mobile renderer, and HDR 2D is disabled, then the value set here will be ignored, and a value of 2.0 will be used instead.

  • AGX Contrast: Only available when using AgX. Increasing this makes dark values darker, and bright values brighter. It creates better results than the contrast option in the adjustment section at no additional performance cost.

中後期處理效果

環境資源支援許多流行的中間和後製效果。

備註

螢幕空間效果,例如 SSRSSAOSSIL 和發光不會對位於相機視圖之外或被其他不透明幾何體遮蔽的幾何體進行操作。調整設定時請考慮這一點,以避免在遊戲過程中發生分散注意力的變化。

螢幕空間反射(SSR)

此功能僅在使用 Forward+ 渲染器時可用,不適用於 Mobile 或 Compatibility。

雖然 Godot 支援幾種反射資料來源,例如 反射探針,但它們可能無法提供適用於所有情況的足夠細節。螢幕空間反射最適合的情況是當物件彼此接觸時 (例如物件在地板上、在桌子上、浮在水面上等)。

../../_images/environment_ssr.webp

另一個優點(即使只啟用最小), 它是即時工作(而其他型別的反射是預先計算的). 這可以用來使人物, 汽車等在移動時反射到周圍的表面上.

螢幕空間反射可以與其他反射來源同時使用,以便在可能的情況下從詳細反射中受益,同時在無法使用螢幕空間反射時進行退回(例如,反射螢幕外物件)。

一些使用者控制的參數可用於更好地調整技術:

  • Max Steps: Determines the maximum length of the reflection. The bigger this number, the more costly it is to compute.

  • 淡入 允許調整淡入曲線, 這有助於使接觸區域更柔和.

  • 淡出 允許調整淡出曲線, 因此步長限制會輕微淡出.

  • 深度公差: 可用於允許螢幕空間光線穿過物件後面。光線將把每個物件視為具有此深度,以確定它是否可以從該物件後面穿過。較高的值將使螢幕空間反射表現出較少的“分裂”,但代價是某些物件會建立物理上不正確的反射。

Additionally, you can adjust the quality of SSR in the project settings by toggling Rendering > Environment > Screen Space Reflection > Half Size. By default, screen-space reflections are rendered at half resolution for performance reasons. Disabling this setting will make the effect render at full resolution, which improves quality at the cost of increased GPU utilization.

備註

Keep in mind that screen-space reflections only work for reflecting opaque geometry. Transparent materials won't be reflected, as they don't write to the depth buffer. This also applies to shaders that use hint_screen_texture or hint_depth_texture uniforms.

螢幕空間環境遮蔽(SSAO)

This feature is only available when using the Forward+ and Compatibility renderers, not Mobile.

正如在 環境 部分提到的, 光節點的光線無法到達的區域會被環境光照亮(要麼是因為它在半徑之外, 要麼是陰影).Godot可以使用GIProbe, ReflectionProbe, Sky或恒定的環境色來類比這種情況. 但問題是, 之前提出的所有方法都更多地作用於較大的尺度(大區域), 而不是較小的幾何層面.

恒定環境色和Sky在任何地方都是一樣的, 而GI和反射探查的局部細節較多, 但不足以模擬光線無法填充到中空或凹面特徵內部的情況.

這可以用螢幕空間環境遮擋來類比. 如下圖所示, 它的目的是確保凹陷區域更暗, 類比光線進入的較窄路徑:

../../_images/environment_ssao.webp

啟用此效果, 打開燈光並且無法欣賞它是一個常見的錯誤. 這是因為 SSAO 僅作用於*環境光*,而不是直接光。

這就是為什麼在上圖中,直射光下效果不太明顯的原因(在左邊)。如果你想強制 SSAO 也在直射光下工作,請使用 Light Affect (光線影響)參數(儘管並這不好,但有些設計師喜歡它的外觀)。

當與真正的間接光源結合時, SSAO 看起來最好, 比如 VoxelGI:

../../_images/environment_ssao2.webp

SSAO 的微調可以透過幾個參數實現:

../../_images/environment_ssao_parameters.webp
  • 半徑: 計算螢幕空間環境光遮擋時物件可以互相遮蔽的距離。較高的值將導致更遠距離的遮擋,但會犧牲性能和品質。

  • 強度: 主螢幕空間環境光遮蔽強度。充當螢幕空間環境光遮擋效果的乘數。值越高,遮擋越暗。由於 SSAO 是一種螢幕空間效果,因此建議對此值保持保守。 SSAO 太強可能會在遊戲過程中分散注意力。

  • 功效: 遮蔽的分佈。值越高,遮擋越暗,類似**強度**,但衰減更劇烈。

  • 細節: 設定螢幕空間環境光遮擋效果的附加細節等級的強度。高值會使細節通道更加突出,但可能會導致最終影像出現鋸齒。

  • 地平線: 考慮表面上的給定點是否被遮蔽或未表示為對應到 0.0-1.0 範圍內的地平線的角度的閾值。值為 1.0 表示無遮蔽。

  • 銳利度: 讓螢幕空間環境光遮擋效果在物件邊緣模糊的量。設定太高會導致物件邊緣出現鋸齒。設定太低會使物件邊緣顯得模糊。

  • 光線影響: 直射光線下的螢幕空間環境光遮擋強度。在現實生活中,環境光遮擋僅適用於間接光,這意味著在直射光下無法看到其效果。高於 0 的值將使 SSAO 效果在直射光下可見。高於 0.0 的值在物理上並不準確,但一些藝術家更喜歡這種效果。

  • AO 通道影響:針對有 AO 紋理(Ambient Occlusion)設定的材質,此參數控制螢幕空間環境遮蔽在這些區域的強度。數值高於 0.0 時,SSAO 效果會更明顯地作用於 AO 紋理已加深的區域。

Additionally, you can adjust the quality of SSAO in the project settings' Rendering > Environment > SSAO section:

  • Quality: Sets the quality of the screen-space ambient occlusion effect. Higher values take more samples and so will result in better quality at the cost of performance. Setting this to Ultra will use the Adaptive Target setting (see below).

  • Half Size: If true, screen-space ambient occlusion will be rendered at half size and then upscaled before being added to the scene. This is significantly faster but may miss small details. If false, screen-space ambient occlusion will be rendered at full size.

  • Adaptive Target: Quality target to use when Quality is set to Ultra. A value of 0.0 provides a quality and speed similar to Medium while a value of 1.0 provides much higher quality than any of the other settings at the cost of performance.

  • Blur Passes: Number of blur passes to use when computing screen-space ambient occlusion. A higher number will result in a smoother look, but will be slower to compute and will have less high-frequency detail.

  • Fadeout From: Distance at which the screen-space ambient occlusion effect starts to fade out. Use this hide ambient occlusion from far away.

  • Fadeout To: Distance at which the screen-space ambient occlusion is fully faded out. Use this hide ambient occlusion from far away.

備註

Since Godot 4.6, a simplified version of SSAO is available in the Compatibility renderer. This implementation has a different look, but should perform significantly better on low-end devices compared to SSAO in Forward+.

When using the Compatibility renderer, only the Radius and Intensity parameters can be adjusted.

螢幕空間間接光照(SSIL)

此功能僅在使用 Forward+ 渲染器時可用,不適用於 Mobile 或 Compatibility。

SSIL 為其他全域照明技術無法涵蓋的小細節或動態幾何體提供間接照明。這適用於反射漫反射照明,也適用於自發光材質。當單獨啟用 SSIL 時,效果可能不會像預期那樣明顯。

相反, SSIL 旨在用作其他全局照明技術(例如 VoxelGI、SDFGI 和 LightmapGI)的「補充」。 SSIL 也提供微妙的環境光遮擋效果,與 SSAO 類似,但細節較少。

此功能僅提供間接照明。它不是一個完整的全域照明解決方案。這使得它不同於其他 3D 引擎提供的螢幕空間全域照明 (SSGI)。 SSIL 可以與 SSR 和/或 SSAO 結合使用,以獲得更好的視覺品質(以性能為代價)。

微調 SSIL 可以透過幾個參數實現:

  • 半徑: 使用螢幕空間間接照明效果時,反射照明可以行進的距離。較大的值將導致場景中的光線進一步反彈,但可能會導致取樣不足的偽影,看起來像是光源周圍的長尖峰。

  • 強度: 螢幕空間間接照明效果的亮度乘數。數值越高,光線越亮。

  • 清晰度: 讓螢幕空間間接照明效果在物件邊緣模糊的量。設定太高會導致物件邊緣出現鋸齒。設定太低會使物件邊緣顯得模糊。

  • 法線拒絕: 計算螢幕空間間接照明時所使用的法線拒絕量。法線拒絕使用給定樣本點的法線來拒絕背向目前像素的樣本。當僅照亮物體的一側時,為了避免漏光,必須進行正常抑制。但是,如果需要漏光,例如當場景主要包含從相機無法看到的臉部發出光線的發射物件時,可以停用正常拒絕。

Additionally, you can adjust the quality of SSIL in the project settings' Rendering > Environment > SSIL section:

  • Quality: Sets the quality of the screen-space ambient occlusion effect. Higher values take more samples and so will result in better quality, at the cost of performance. Setting to Ultra will use the Adaptive Target setting (see below).

  • Half Size: If true, screen-space ambient occlusion will be rendered at half size and then upscaled before being added to the scene. This is significantly faster but may miss small details. If false, screen-space ambient occlusion will be rendered at full size.

  • Adaptive Target: Quality target to use when Quality is set to Ultra. A value of 0.0 provides a quality and speed similar to Medium while a value of 1.0 provides much higher quality than any of the other settings at the cost of performance. When using the adaptive target, the performance cost scales with the complexity of the scene.

  • Blur Passes: Number of blur passes to use when computing screen-space indirect lighting. A higher number will result in a smoother look, but will be slower to compute and will have less high-frequency detail.

  • Fadeout From: Distance at which the screen-space indirect lighting effect starts to fade out. Use this to hide screen-space indirect lighting from far away.

  • Fadeout To: Distance at which the screen-space indirect lighting is fully faded out. Use this to hide screen-space indirect lighting from far away.

../../_images/environment_ssil.webp

有符號距離場全域照明(SDFGI)

此功能僅在使用 Forward+ 渲染器時可用,不適用於 Mobile 或 Compatibility。

有符號距離場全域照明 (SDFGI) 是即時全域照明的一種形式。它不是螢幕空間效果,這意味著它可以為螢幕外元素提供全域照明(與 SSIL 不同)。

也參考

有關設定此全域照明技術的說明,請參閱 有符號距離場全域照明 (SDFGI)

../../_images/environment_sdfgi.webp

泛光

備註

在使用「相容性」繪圖模式時,發光效果會採用不同的實作,部分屬性將無法使用並且在屬性面板中隱藏,包括:LevelsNormalizedStrengthBlend ModeMixMapMap Strength

這種實作針對低階裝置進行了最佳化,因此彈性較低。

在攝影和膠片中,當光量超過介質支援的最大值(無論是類比還是數位)時,它通常會向外滲出到圖像的較暗區域。在 Godot 中使用 Glow 模擬這種效果。

../../_images/environment_glow1.webp

預設情況下,即使啟用了效果,它也會變弱或不可見。實際顯示它需要發生的兩個條件之一:

    1. 像素中的光線超過 HDR閾值 (其中0是所有光線都超過該閾值,1.0是光線超過色調對應器 值). 通常情況下, 這個值應該在1.0, 但它可以調低, 以允許更多的光線滲入. 還有一個額外的參數, HDR Scale , 允許對超過閾值的光線進行縮放(使其更亮或更暗).

../../_images/environment_glow_threshold.webp
    1. 泛光效果的值設定大於 0。隨著它的增加,它會以更高的數量將整個螢幕發送到輝光處理器。

../../_images/environment_glow_bloom.webp

兩者都會導致光從較亮的區域開始逸出。

一旦看到輝光,就可以通過一些額外的參數來控制它:

  • 強度(Intensity) 是效果的整體比例, 可以將其增強或減弱(0.0可以將其刪除).

  • 強度(Strength) 是指高斯濾波器內核的處理強度. 數值越大, 濾波器越飽和並向外擴充. 一般來說, 不需要改變這個值, 因為可以通過 Levels 更有效地調整大小.

效果的**混合模式**也可以改變:

  • Additive 新增是最強的一種,因為它只在圖像上新增輝光效果,不涉及混合。一般來說,它太強了,不能使用,但在低強度的泛光下可能看起來很好,會產生一種夢幻般的效果。

  • Screen 確保輝光永遠不會比自己更亮,它作為一個周圍的方式將非常好。

  • Softlight 是預設的,也是最弱的一種,只在物體周圍產生細微的顏色擾動。這種模式在黑暗場景中效果最好。

  • 替換 可用於 模糊整個螢幕 或除錯效果。它只顯示發光效果,而不顯示下方的影像。

  • 混合 將發光效果與主影像混合。這可以用於更好的藝術控制。混合因子由出現在混合模式上方的 Mix 屬性控制(僅當混合模式設定為 Mix 時)。除非增加 Bloom,否則高混合因子值將使影像變暗。

Godot 提供了**等級**,用於改變輝光效果的大小和形狀。較小的級別是在物體周圍出現的較強的輝光,而大的級別是覆蓋整個螢幕的朦朧輝光:

../../_images/environment_glow_layers.webp

然而,這個系統的真正優勢在於結合水平來創造更有趣的輝光模式:

../../_images/environment_glow_layers2.webp

最後,可以使用「發光貼圖」來控制發光效果,這是一種紋理,用於確定螢幕每個部分的發光亮度。此紋理可以選擇著色,以將發光效果著色為發光貼圖的顏色。紋理會拉伸以適合視口,因此建議使用與視口最常見的縱橫比(例如 16:9)相配對的縱橫比,以避免可見的失真。

發光貼圖紋理有 2 個主要用例:

  • 使用污垢圖案紋理建立“鏡頭污垢”效果。

  • 使用漸層紋理使螢幕特定部分的輝光減弱。

../../_images/environment_glow_map.webp

在桌面平台上,泛光預設使用雙三次縮放濾鏡;在行動平台上則使用雙線性縮放濾鏡。雙三次縮放外觀較細緻、不易出現方塊感,但在 GPU 上的成本較高,對整合型顯示晶片影響尤甚。可透過專案設定 Rendering > Environment > Glow > Upscale Mode 來控制縮放模式。此設定僅在 Forward+ 或 Mobile 算繪器下生效,因為 Compatibility 使用不同的泛光實作。

../../_images/environment_and_post_processing_glow_scale_mode.webp

在 2D 中使用發光

在 2D 中使用發光有兩種方式:

  • Since Godot 4.2, you can enable HDR for 2D rendering when using the Forward+ and Mobile rendering methods. This has a performance cost, but it allows for a greater dynamic range. This also allows you to control which objects glow using their individual Modulate or Self Modulate properties (use the Intensity slider in the color picker). Enabling HDR can also reduce banding in the 2D rendering output.

  • 若想最大化效能,可以讓 2D 呈現不啟用 HDR,但這樣將無法細緻控制哪些物件會發光。

    • 啟用發光效果,將環境背景模式設定為 Canvas,再降低 Glow HDR Threshold,讓非高亮像素也能發光。若要避免 UI 元素受發光影響,請將它們放在 CanvasLayer 節點下。你可透過 Environment 資源的 Background > Canvas Max Layer 屬性控制受影響的圖層範圍。

2D 場景發光效果範例

Example of using glow in a 2D scene. HDR 2D is enabled, while coins and the bullet have their Modulate property increased to overbright values using the Intensity slider in the color picker.

警告

若專案設定啟用了 Rendering > Viewport > HDR 2D,2D 呈現將會在線性色域下運作,這時在 canvas_item shader 裡作為顏色輸入的 uniform sampler 建議加上 source_color 標示,否則紋理會顯得灰白失真。

若 2D HDR 關閉,source_color 仍會在 canvas_item shader 中正確運作,因此建議相關情境下都加以使用。

使用線性色彩空間也代表 alpha 混合會有所改變。低不透明度的貼圖通常會更明顯,而字型因為消鋸齒的低不透明像素更可見而顯得更粗。這也會影響編輯器本身的算繪。

用發光效果模糊整個畫面

發光效果可以用來模糊整個視窗,這在打開選單時製作背景模糊特別有用。預設情況下只會影響 3D 呈現,除非環境背景模式設為 Canvas。若要避免 Canvas 背景下 UI 元素也被模糊,請將 UI 元素作為 CanvasLayer 節點的子節點。你可利用 Environment 資源的 Background > Canvas Max Layer 屬性來控制哪些圖層會被模糊效果影響。

若要以發光作為模糊方案:

  • 啟用 Normalized,並依需求調整各級別。拉高高級別(索引越大)會讓整體更模糊。建議僅啟用一個發光級別(設為 1.0,其餘為 0.0),但不是必須。請留意最終效果會隨視窗解析度而異。

  • Intensity 設為 1.0Bloom 設為 1.0

  • 將混合模式(Blend Mode)設為 ReplaceHDR Luminance Cap 設為 1.0

以發光模糊選單背景下 2D 呈現的範例

以發光模糊選單背景下 2D 呈現的範例

備註

本節僅涉及非體積霧。可以同時使用非體積霧和 體積霧和霧體積

霧, 就像在現實生活中一樣, 使遠處的物體逐漸消失成均勻的顏色. 物理效果實際上非常複雜, 但Godot提供了一個很好的近似. Godot有兩種霧:

  • 深度霧: 這個基於距相機的距離來應用.

  • 高度霧: 此高度應用於任何低於(或高於)某個高度的物體, 無論距離相機的距離如何.

../../_images/environment_fog_depth_height.webp

Both of these fog types can have their curves tweaked, making their transition more or less sharp.

可以調整兩個屬性以使霧效果更有趣:

The first is Sun Scatter, which makes use of the DirectionalLight3D's color and energy in the current scene. When looking toward the directional light (usually a sun), the fog will be tinted according to the light's color to simulate the sunlight passing through the fog.

第二個是 Aerial Perspective,會依天空顏色對霧色進行染色,以更好地將天空與背景融合。數值越高,染色越明顯;1.0 會完全以大氣透視取代一般霧色。可用於大型開放世界關卡來提供更好的縱深感,或避免天空與霧色之間的色彩不連續。

Sun ScatterAerial Perspective 都大於 0.0 時,日光散射會疊加在大氣透視之上。

備註

霧效果在視窗上有時會產生色帶現象,特別是在密度較高時。請參閱 帶狀顏色 以取得減少色帶的指引。

體積霧

體積霧為場景提供了逼真的霧效果,霧的顏色受到穿過霧的燈光的影響。

也參考

有關設定體積霧的文件,請參閱 體積霧和霧體積

色彩調整

在處理結束時,Godot提供了進行一些標準圖像調整的可能性.

../../_images/environment_adjustments.webp

基本 BCS 調整

第一個是能夠改變典型的亮度, 對比度和飽和度:

../../_images/environment_adjustments_bcs.webp

使用一維漸層進行色彩校正

第二個調整是透過提供顏色校正梯度。這可以透過將 GradientTexture1D 資源指派給 Color Correction 屬性或透過載入包含水平漸層的紋理來完成。漸變的最左邊部分代表來源影像中的黑色,而漸變的最右邊部分代表來源影像中的白色。

第二種是通過提供顏色校正梯度. 如下所示的常規黑色到白色漸變將不起作用:

../../_images/environment_adjustments_default_gradient.webp

但是建立自訂的會允許將每個通道對應到不同的顏色:

../../_images/environment_adjustments_custom_gradient.webp

使用 3D LUT 進行色彩校正

3D 搜尋紋理 (LUT) 也可用於色彩校正。這是一種特殊的紋理,用於單獨修改每個顏色通道(紅色、綠色、藍色)。該圖像可以是任何分辨率,但由於顏色校正是低頻資料,出於性能原因,建議堅持使用低分辨率。 LUT 紋理的分辨率通常為 17×17×17、33×33×33、51×51×51 或 65×65×65(奇數尺寸允許更好的插值)。

為此,尋找紋理的匯入模式必須在匯入塢中設定為Texture3D(而不是作為常規Texture2D匯入):

../../_images/environment_adjustments_3d_lut_import.webp

確保同時配置要匯入的水平和垂直切片的數量。如果不這樣做,LUT 紋理在使用時將不會正確影響視窗。您可以透過在檔案系統停靠欄中雙擊 3D 紋理來預覽如何匯入 3D 紋理,然後前往屬性檢視器以翻轉紋理的圖層。

您可以使用這個中性 33×33×33 LUT 範本作為基礎(右鍵單擊並選擇 另存為...):

../../_images/environment_adjustments_3d_lut_template.webp

使用上述LUT 模板,將其匯入模式變更為**Texture3D** 後,在匯入底座中將其**Horizontal** 切片數量設為``33``,然後按一下**Reimport** 。如果將此 LUT 載入到 顏色校正 屬性中,您現在不會看到任何明顯的差異,因為該紋理被設計為中性起點。

可以在影像編輯器中修改此 LUT 模板,以為影像提供不同的氛圍。常見的工作流程是將 LUT 影像放置在專案 3D 視窗的螢幕截圖旁邊,然後使用影像編輯器同時修改 LUT 影像和螢幕截圖。然後可以保存 LUT 並將其應用到遊戲引擎,以即時執行相同的色彩校正。

例如,在影像編輯器中修改 LUT 模板以使其呈現「棕褐色」外觀,結果如下圖所示:

../../_images/environment_adjustments_3d_lut_comparison.webp

備註

調整和色彩校正在色調對應*之後套用。這意味著上面定義的色調對應屬性在啟用調整時仍然有效。

其他建置選項

Godot has two kinds of camera attributes, physical and practical. When using CameraAttributesPhysical instead of CameraAttributesPractical, depth of field is automatically computed from the camera attributes' focus distance, focal length, and aperture. In addition, Frustum options are available.

景深/遠模糊

此效果可模擬高端相機的焦距. 它模糊了給定範圍後面的物體. 它有一個 ** ** 距離 , ** 過渡 區域(世界單位):

../../_images/environment_dof_far.webp

Amount (強度)參數控制模糊的程度。若需大範圍模糊,請在進階專案設定中調整景深品質,以避免產生雜訊。

景深/近模糊

此效果可模擬高端相機的焦距。它使靠近相機的物體模糊(在遠處模糊的相反方向上作用)。它具有 Distance (距離)以及 Transition (過渡)區域(使用世界單位):

../../_images/environment_dof_near.webp

Amount (強度)參數控制模糊的程度。若需大範圍模糊,請在進階專案設定中調整景深品質,以避免產生雜訊。

通常使用兩種模糊將觀眾的注意力集中在給定物件上。

../../_images/environment_mixed_blur.webp

曝光

這會倍增相機可見的整體場景亮度。數值越高,場景視覺上越亮。

自動曝光

此功能僅在使用 Forward+ 渲染器時可用,不適用於 Mobile 或 Compatibility。

儘管在大多數情況下, 照明和紋理都受到藝術家的嚴格控制, 但Godot通過自動曝光機制支援簡單的高動態範圍實作. 當將內部區域與低光和戶外相結合時, 這通常用於真實性. 自動曝光模擬相機(或眼睛), 以適應明暗位置和不同光量.

備註

自動曝光需要每影格評估場景的亮度,效能成本適中。因此,如果自動曝光對場景影響不大,建議停用它。

../../_images/environment_hdr_autoexp.webp

使用自動曝光的最簡單方法是確保室外燈光(或其他強光)的能量超過 1.0。這是通過調整它們的 Energy 乘數(對燈光本身)來實作的。為了使其保持一致,Sky 通常也需要使用能量乘數,以配合平行光。通常情況下,數值在 3.0 到 6.0 之間,就足以模擬室內室外條件。

透過組合自動曝光與 光暈 後製處理,超過色調對映 White 的像素將會溢出到光暈緩衝區,產生攝影中典型的泛光效果。

../../_images/environment_hdr_bloom.webp

自動曝光 部分中的使用者可控值具有合理的預設值, 但您仍然可以調整它們:

../../_images/environment_hdr.webp
  • 比例: 用於縮放照明的值. 較亮的值會產生較亮的圖像, 較小的值會產生較暗的圖像.

  • ** Min Luma:** 自動曝光旨在調整的最小亮度. 亮度是螢幕所有像素中光線的平均值.

  • 最大靈敏度/最大曝光值: 自動曝光旨在調整的最大亮度(使用 CameraAttributesPractical 時在 ISO 中,或使用 CameraAttributesPhysical 時在 EV100 中)。

  • 速度: 亮度校正的速度. 值越高, 發生的校正越快.

使用 CameraAttributesPractical 時,使用 ISO 中定義的*靈敏度*而不是 EV100 中的曝光值來設定曝光。典型的 ISO 值在 50 到 3200 之間,數值越高,最終曝光越高。現實生活中,白天攝影一般使用100到800之間的ISO值。

也參考

如果您希望使用真實世界單位來設定您的攝影機曝光、視野範圍與景深,請參閱 物理燈光與相機單位