VoxelGI
繼承: VisualInstance3D < Node3D < Node < Object
即時全域光照(GI)探測。
說明
VoxelGI 用於為場景提供高品質的即時的間接光照和反射。它們預先計算發光物體的效果和靜態幾何體的效果,以即時模擬複雜光線的行為。VoxelGI 需要經過烘焙才能產生可見的效果。然而,一旦烘焙,動態物件將接收來自它們的光。此外,燈光可以是完全動態的,也可以是烘焙的。
注意:VoxelGI 只支援 Forward+ 算繪方式,不支援 Mobile 或 Compatibility。
程式生成:VoxelGI 可以在匯出的專案中烘焙,這使得它適用於程式生成或用戶建構的關卡,只要所有幾何體都預先生成即可。對於在遊戲過程中隨時生成幾何圖形的遊戲,SDFGI 更合適(參見 Environment.sdfgi_enabled)。
性能:VoxelGI 對 GPU 要求比較高,不適合集成顯卡等低端硬體(可以考慮改用 LightmapGI)。要提高性能,請在專案設定中,調整 ProjectSettings.rendering/global_illumination/voxel_gi/quality,並啟用 ProjectSettings.rendering/global_illumination/gi/use_half_resolution。要為低端硬體提供後備方案,請考慮在專案的選項功能表中,添加一個選項,以禁用 VoxelGI。VoxelGI 節點可以通過隱藏而禁用。
注意:網格應該有足夠厚的壁(避免單面牆)以避免漏光。對於內部關卡,請將關卡幾何體封裝在一個足夠大的盒子中,並橋接迴圈邊以閉合網格。為了進一步防止漏光,還可以策略性地放置臨時 MeshInstance3D 節點,並將其 GeometryInstance3D.gi_mode 設定為 GeometryInstance3D.GI_MODE_STATIC。然後可以在烘焙 VoxelGI 節點後,隱藏這些臨時節點。
教學
屬性
|
||
|
方法
void |
bake(from_node: Node = null, create_visual_debug: bool = false) |
void |
列舉
enum Subdiv: 🔗
Subdiv SUBDIV_64 = 0
使用 64 分區,這是最低的品質設定,但也是最快的。如果你能使用它,特別是在低端硬體上使用它。
Subdiv SUBDIV_128 = 1
使用 128 個分區。這是預設的品質設定。
Subdiv SUBDIV_256 = 2
使用 256 個分區。
Subdiv SUBDIV_512 = 3
使用 512 個分區。這是最高的品質設定,但也是最慢的。在低端硬體上,這可能會導致 GPU 停頓。
Subdiv SUBDIV_MAX = 4
代表 Subdiv 舉的大小。
屬性說明
CameraAttributes camera_attributes 🔗
void set_camera_attributes(value: CameraAttributes)
CameraAttributes get_camera_attributes()
指定烘焙所使用的曝光級別的 CameraAttributes 資源。自動曝光和非曝光屬性會被忽略。曝光設定應當用於降低烘焙時的動態範圍。如果曝光過高,VoxelGI 會產生色帶問題,也可能出現過曝問題。
VoxelGIData data 🔗
void set_probe_data(value: VoxelGIData)
VoxelGIData get_probe_data()
為該 VoxelGI 存放資料的 VoxelGIData 資源。
Vector3 size = Vector3(20, 20, 20) 🔗
VoxelGI 所覆蓋區域的大小。如果你擴大了範圍,但沒有使用 subdiv 增加細分,則每個儲存格的大小都將增加,導致照明細節下降。
注意:大小在每個軸上被限制為 1.0 或更多。
對 VoxelGI 操作的柵格進行細分的次數。數位越大,細節越精細,因此視覺品質越高,而數位越小則性能越好。
方法說明
void bake(from_node: Node = null, create_visual_debug: bool = false) 🔗
烘焙來自所有標記為 GeometryInstance3D.GI_MODE_STATIC 的 GeometryInstance3D 以及標記為 Light3D.BAKE_STATIC 或 Light3D.BAKE_DYNAMIC 的 Light3D 的效果。如果 create_visual_debug 為 true,則烘焙光照後會生成一個 MultiMesh,用立方體代表各個實體儲存格,每個立方體都使用對應儲存格的反照率顏色著色。這樣就對 VoxelGI 的數據進行了視覺化,可以用來除錯可能發生的問題。
注意:編輯器和匯出後的專案中都可以使用 bake()。因此可用於程式式生成或使用者建構的關卡。對於大多數場景,烘焙 VoxelGI 節點一般需要 5 到 20 秒。降低 subdiv 可以加速烘焙。
注意:GeometryInstance3D 和 Light3D 節點必須在呼叫 bake() 前完全就緒。如果這些節點是程式式生成的,而烘焙後的 VoxelGI 中缺失部分網格和燈光,請使用 call_deferred("bake"),不要直接呼叫 bake()。
void debug_bake() 🔗
在啟用 create_visual_debug 的情況下呼叫 bake() 。