diff --git a/3d/global_illumination/README.md b/3d/global_illumination/README.md index 2d491c87..08870c38 100644 --- a/3d/global_illumination/README.md +++ b/3d/global_illumination/README.md @@ -1,7 +1,7 @@ # Global Illumination This demo showcases Godot's global illumination systems: -VoxelGI, SDFGI, ReflectionProbe and screen-space effects like SSAO and SSIL. +LightmapGI, VoxelGI, SDFGI, ReflectionProbe and screen-space effects like SSAO and SSIL. Use the mouse to look around, W/A/S/D or arrow keys to move. @@ -17,6 +17,10 @@ A ReflectionProbe is parented to the sphere to showcase real-time reflections. When the ReflectionProbe is hidden, it is disabled. In this case, VoxelGI, SDFGI or environment lighting will be used to provide fallback reflections. +A Decal node is parented to the moving sphere and cube to provide simple shadows for them. +This is especially effective when using the LightmapGI (All) global illumination mode, +which doesn't allow dynamic objects to cast shadows on static surfaces. + ## Screenshots ![Screenshot](screenshots/global_illumination.png) diff --git a/3d/global_illumination/cube.glb.import b/3d/global_illumination/cube.glb.import index 115dac91..87a528ae 100644 --- a/3d/global_illumination/cube.glb.import +++ b/3d/global_illumination/cube.glb.import @@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/cube.glb-ec927bc01951d93b2130ba52799eca7c.scn nodes/root_type="Spatial" nodes/root_name="Scene Root" +nodes/apply_root_scale=true nodes/root_scale=1.0 meshes/ensure_tangents=true meshes/generate_lods=true @@ -24,5 +25,6 @@ meshes/lightmap_texel_size=0.1 skins/use_named_skins=true animation/import=true animation/fps=15 +animation/trimming=false import_script/path="" _subresources={} diff --git a/3d/global_illumination/icon.png.import b/3d/global_illumination/icon.png.import index e2f5f63c..5d72fc91 100644 --- a/3d/global_illumination/icon.png.import +++ b/3d/global_illumination/icon.png.import @@ -1,9 +1,9 @@ [remap] importer="texture" -type="StreamTexture2D" +type="CompressedTexture2D" uid="uid://q2k8m14vo3kr" -path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" +path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex" metadata={ "vram_texture": false } @@ -11,7 +11,7 @@ metadata={ [deps] source_file="res://icon.png" -dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"] +dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"] [params] @@ -21,7 +21,6 @@ compress/hdr_compression=1 compress/bptc_ldr=0 compress/normal_map=0 compress/channel_pack=0 -compress/streamed=false mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 @@ -29,6 +28,7 @@ roughness/src_normal="" process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false -process/HDR_as_SRGB=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false process/size_limit=0 detect_3d/compress_to=1 diff --git a/3d/global_illumination/project.godot b/3d/global_illumination/project.godot index 19a06b12..0566eb0b 100644 --- a/3d/global_illumination/project.godot +++ b/3d/global_illumination/project.godot @@ -11,6 +11,7 @@ config_version=5 [application] config/name="Global Illumination" +config/description="This demo showcases Godot's global illumination systems: LightmapGI, VoxelGI, SDFGI, ReflectionProbe and screen-space effects like SSAO and SSIL." run/main_scene="res://test.tscn" config/features=PackedStringArray("4.0") config/icon="res://icon.png" @@ -20,6 +21,10 @@ config/icon="res://icon.png" window/stretch/mode="canvas_items" window/stretch/aspect="expand" +[editor] + +export/convert_text_resources_to_binary=true + [filesystem] import/blender/enabled=false @@ -31,7 +36,7 @@ cycle_gi_mode={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"unicode":0,"echo":false,"script":null) ] } -toggle_reflection_probe={ +cycle_reflection_probe_mode={ "deadzone": 0.5, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"unicode":0,"echo":false,"script":null) ] @@ -78,5 +83,7 @@ common/enable_pause_aware_picking=true [rendering] +anti_aliasing/quality/screen_space_aa=1 +anti_aliasing/quality/use_debanding=true quality/shadows/filter_mode=2 environment/default_environment="res://default_env.tres" diff --git a/3d/global_illumination/test.gd b/3d/global_illumination/test.gd index eedac709..3ceb2633 100644 --- a/3d/global_illumination/test.gd +++ b/3d/global_illumination/test.gd @@ -2,8 +2,8 @@ extends Node3D enum GIMode { NONE, -# BAKED_LIGHTMAP_ALL, -# BAKED_LIGHTMAP_INDIRECT, + LIGHTMAP_GI_ALL, + LIGHTMAP_GI_INDIRECT, VOXEL_GI, SDFGI, MAX, # Maximum value of the enum, used internally. @@ -12,12 +12,26 @@ enum GIMode { # Keep this in sync with the GIMode enum (except for MAX). const GI_MODE_TEXTS = [ "Environment Lighting (Fastest)", -# "Baked Lightmap All (Fast)", -# "Baked Lightmap Indirect (Average)", + "Baked Lightmap All (Fast)", + "Baked Lightmap Indirect (Average)", "VoxelGI (Slow)", "SDFGI (Slow)", ] +enum ReflectionProbeMode { + NONE, + ONCE, + ALWAYS, + MAX, +} + +# Keep this in sync with the ReflectionProbeMode enum (except for MAX). +const REFLECTION_PROBE_MODE_TEXTS = [ + "Disabled - Using environment, VoxelGI or SDFGI reflections (Fast)", + "Enabled - \"Once\" Update Mode (Average)", + "Enabled - \"Always\" Update Mode (Slow)", +] + enum SSILMode { NONE, SSAO, @@ -35,7 +49,7 @@ const SSIL_MODE_TEXTS = [ ] var gi_mode = GIMode.NONE -var use_reflection_probe = false +var reflection_probe_mode = ReflectionProbeMode.NONE var ssil_mode = SSILMode.NONE @onready var environment = $WorldEnvironment.environment @@ -44,10 +58,15 @@ var ssil_mode = SSILMode.NONE @onready var reflection_probe = $Camera/ReflectiveSphere/ReflectionProbe @onready var ssil_mode_label = $SSILMode +# Several copies of the level mesh are required to cycle between different GI modes. +@onready var zdm2_no_lightmap = $Zdm2NoLightmap +@onready var zdm2_lightmap_all = $Zdm2LightmapAll +@onready var zdm2_lightmap_indirect = $Zdm2LightmapIndirect + func _ready(): set_gi_mode(gi_mode) - set_use_reflection_probe(use_reflection_probe) + set_reflection_probe_mode(reflection_probe_mode) set_ssil_mode(ssil_mode) @@ -55,8 +74,8 @@ func _input(event): if event.is_action_pressed("cycle_gi_mode"): set_gi_mode(wrapi(gi_mode + 1, 0, GIMode.MAX)) - if event.is_action_pressed("toggle_reflection_probe"): - set_use_reflection_probe(not use_reflection_probe) + if event.is_action_pressed("cycle_reflection_probe_mode"): + set_reflection_probe_mode(wrapi(reflection_probe_mode + 1, 0, ReflectionProbeMode.MAX)) if event.is_action_pressed("cycle_ssil_mode"): set_ssil_mode(wrapi(ssil_mode + 1, 0, SSILMode.MAX)) @@ -68,8 +87,14 @@ func set_gi_mode(p_gi_mode): match p_gi_mode: GIMode.NONE: -# $BakedLightmapIndirect.visible = false -# $BakedLightmapAll.visible = false + $Zdm2NoLightmap.visible = true + $Zdm2LightmapAll.visible = false + $Zdm2LightmapIndirect.visible = false + + # Halve sky contribution to prevent shaded areas from looking too bright and blue. + environment.ambient_light_sky_contribution = 0.5 + $LightmapGIIndirect.visible = false + $LightmapGIAll.visible = false $VoxelGI.visible = false environment.sdfgi_enabled = false @@ -80,71 +105,94 @@ func set_gi_mode(p_gi_mode): $GarageOmniLight.light_bake_mode = Light3D.BAKE_DYNAMIC $CornerSpotLight.light_bake_mode = Light3D.BAKE_DYNAMIC -# GIMode.BAKED_LIGHTMAP_ALL: -# $BakedLightmapIndirect.visible = false -# $BakedLightmapAll.visible = true -# $VoxelGI.visible = false -# environment.sdfgi_enabled = false -# -# # Make lights not affect baked surfaces by setting their bake mode to All. -# $Sun.light_bake_mode = Light3D.BAKE_STATIC -# $GrateOmniLight.light_bake_mode = Light3D.BAKE_STATIC -# $GarageOmniLight.light_bake_mode = Light3D.BAKE_STATIC -# $CornerSpotLight.light_bake_mode = Light3D.BAKE_STATIC + GIMode.LIGHTMAP_GI_ALL: + $Zdm2NoLightmap.visible = false + $Zdm2LightmapAll.visible = true + $Zdm2LightmapIndirect.visible = false -# GIMode.BAKED_LIGHTMAP_INDIRECT: -# $BakedLightmapIndirect.visible = true -# $BakedLightmapAll.visible = false -# $VoxelGI.visible = false -# environment.sdfgi_enabled = false -# -# $Sun.light_bake_mode = Light3D.BAKE_DYNAMIC -# $GrateOmniLight.light_bake_mode = Light3D.BAKE_DYNAMIC -# $GarageOmniLight.light_bake_mode = Light3D.BAKE_DYNAMIC -# $CornerSpotLight.light_bake_mode = Light3D.BAKE_DYNAMIC + # Halve sky contribution to prevent dynamic objects from looking too bright and blue. + # (When using lightmaps, this property doesn't affect lightmapped surfaces.) + environment.ambient_light_sky_contribution = 0.5 + $LightmapGIIndirect.visible = false + $LightmapGIAll.visible = true + $VoxelGI.visible = false + environment.sdfgi_enabled = false + + # Make lights not affect baked surfaces by setting their bake mode to All. + $Sun.light_bake_mode = Light3D.BAKE_STATIC + $GrateOmniLight.light_bake_mode = Light3D.BAKE_STATIC + $GarageOmniLight.light_bake_mode = Light3D.BAKE_STATIC + $CornerSpotLight.light_bake_mode = Light3D.BAKE_STATIC + + GIMode.LIGHTMAP_GI_INDIRECT: + $Zdm2NoLightmap.visible = false + $Zdm2LightmapAll.visible = false + $Zdm2LightmapIndirect.visible = true + + # Halve sky contribution to prevent dynamic objects from looking too bright and blue. + # (When using lightmaps, this property doesn't affect lightmapped surfaces.) + environment.ambient_light_sky_contribution = 0.5 + $LightmapGIIndirect.visible = true + $LightmapGIAll.visible = false + $VoxelGI.visible = false + environment.sdfgi_enabled = false + + $Sun.light_bake_mode = Light3D.BAKE_DYNAMIC + $GrateOmniLight.light_bake_mode = Light3D.BAKE_DYNAMIC + $GarageOmniLight.light_bake_mode = Light3D.BAKE_DYNAMIC + $CornerSpotLight.light_bake_mode = Light3D.BAKE_DYNAMIC GIMode.VOXEL_GI: -# $BakedLightmapIndirect.visible = false -# $BakedLightmapAll.visible = false + $Zdm2NoLightmap.visible = true + $Zdm2LightmapAll.visible = false + $Zdm2LightmapIndirect.visible = false + + environment.ambient_light_sky_contribution = 1.0 + $LightmapGIIndirect.visible = false + $LightmapGIAll.visible = false $VoxelGI.visible = true environment.sdfgi_enabled = false # Bake mode must be Indirect, not Disabled. Otherwise, GI will # not be visible for those lights. - # Moving/blinking lights should generally have their bake mode set to Disabled - # to avoid visible GI pop-ins. This is because VoxelGI - # can take a while to update. $Sun.light_bake_mode = Light3D.BAKE_DYNAMIC $GrateOmniLight.light_bake_mode = Light3D.BAKE_DYNAMIC $GarageOmniLight.light_bake_mode = Light3D.BAKE_DYNAMIC $CornerSpotLight.light_bake_mode = Light3D.BAKE_DYNAMIC GIMode.SDFGI: -# $BakedLightmapIndirect.visible = false -# $BakedLightmapAll.visible = false + $Zdm2NoLightmap.visible = true + $Zdm2LightmapAll.visible = false + $Zdm2LightmapIndirect.visible = false + + environment.ambient_light_sky_contribution = 1.0 + $LightmapGIIndirect.visible = false + $LightmapGIAll.visible = false $VoxelGI.visible = false environment.sdfgi_enabled = true # Bake mode must be Indirect, not Disabled. Otherwise, GI will # not be visible for those lights. - # Moving/blinking lights should generally have their bake mode set to Disabled - # to avoid visible GI pop-ins. This is because SDFGI - # can take a while to update. $Sun.light_bake_mode = Light3D.BAKE_DYNAMIC $GrateOmniLight.light_bake_mode = Light3D.BAKE_DYNAMIC $GarageOmniLight.light_bake_mode = Light3D.BAKE_DYNAMIC $CornerSpotLight.light_bake_mode = Light3D.BAKE_DYNAMIC -func set_use_reflection_probe(p_visible): - use_reflection_probe = p_visible +func set_reflection_probe_mode(p_reflection_probe_mode): + reflection_probe_mode = p_reflection_probe_mode + reflection_probe_mode_label.text = "Reflection probe: %s " % REFLECTION_PROBE_MODE_TEXTS[reflection_probe_mode] - if p_visible: - reflection_probe_mode_label.text = "Reflection probe: Enabled - Using reflection probe (Average)" - else: - reflection_probe_mode_label.text = "Reflection probe: Disabled - Using environment, VoxelGI or SDFGI reflections (Fast)" - - reflection_probe.visible = p_visible + match p_reflection_probe_mode: + ReflectionProbeMode.NONE: + reflection_probe.visible = false + reflection_probe.update_mode = ReflectionProbe.UPDATE_ONCE + ReflectionProbeMode.ONCE: + reflection_probe.visible = true + reflection_probe.update_mode = ReflectionProbe.UPDATE_ONCE + ReflectionProbeMode.ALWAYS: + reflection_probe.visible = true + reflection_probe.update_mode = ReflectionProbe.UPDATE_ALWAYS func set_ssil_mode(p_ssil_mode): diff --git a/3d/global_illumination/test.tscn b/3d/global_illumination/test.tscn index 5093b86a..a0e12038 100644 --- a/3d/global_illumination/test.tscn +++ b/3d/global_illumination/test.tscn @@ -1,9 +1,11 @@ -[gd_scene load_steps=13 format=3 uid="uid://dbm1npua7fq50"] +[gd_scene load_steps=17 format=3 uid="uid://dbm1npua7fq50"] [ext_resource type="PackedScene" uid="uid://djbrxyh5s8j2o" path="res://zdm2.glb" id="1"] [ext_resource type="PackedScene" uid="uid://c2lbhsefub1o5" path="res://cube.glb" id="3"] [ext_resource type="VoxelGIData" uid="uid://duykbpl6evu0r" path="res://test_VoxelGIData.res" id="3_1netx"] +[ext_resource type="LightmapGIData" uid="uid://ct72rg4fnnes8" path="res://zdm2_all.lmbake" id="4_7vqwx"] [ext_resource type="Script" path="res://test.gd" id="5"] +[ext_resource type="LightmapGIData" uid="uid://b78viqmkq8djh" path="res://zdm2_indirect.lmbake" id="5_14bmd"] [ext_resource type="Script" path="res://camera.gd" id="6"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_30v8t"] @@ -20,6 +22,7 @@ background_mode = 2 sky = SubResource("Sky_4q314") tonemap_mode = 3 tonemap_white = 6.0 +ssao_intensity = 1.0 sdfgi_cascades = 3 sdfgi_min_cell_size = 0.25 sdfgi_cascade0_distance = 16.0 @@ -33,7 +36,18 @@ emission_energy_multiplier = 2.0 [sub_resource type="BoxMesh" id="8"] +[sub_resource type="Gradient" id="Gradient_3s4nj"] +colors = PackedColorArray(0, 0, 0, 1, 0, 0, 0, 0) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_uu8pf"] +gradient = SubResource("Gradient_3s4nj") +fill = 1 +fill_from = Vector2(0.5, 0.5) +fill_to = Vector2(0.5, 0.01) + [sub_resource type="SphereMesh" id="2"] +radius = 1.0 +height = 2.0 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7doxp"] albedo_color = Color(0.811765, 1, 0.764706, 1) @@ -46,27 +60,46 @@ script = ExtResource("5") [node name="WorldEnvironment" type="WorldEnvironment" parent="."] environment = SubResource("Environment_bau0c") -[node name="Zdm2" parent="." instance=ExtResource("1")] +[node name="Zdm2NoLightmap" parent="." instance=ExtResource("1")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 2) +[node name="Zdm2LightmapAll" parent="." instance=ExtResource("1")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 2) +visible = false + +[node name="Zdm2LightmapIndirect" parent="." instance=ExtResource("1")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 2) +visible = false + [node name="VoxelGI" type="VoxelGI" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 6, 2.5) extents = Vector3(39, 18.5, 30) data = ExtResource("3_1netx") +[node name="LightmapGIAll" type="LightmapGI" parent="."] +visible = false +quality = 3 +light_data = ExtResource("4_7vqwx") + +[node name="LightmapGIIndirect" type="LightmapGI" parent="."] +visible = false +quality = 3 +light_data = ExtResource("5_14bmd") + [node name="Sun" type="DirectionalLight3D" parent="."] transform = Transform3D(0.889832, -0.251497, 0.380722, 0, 0.834387, 0.551179, -0.456289, -0.490456, 0.742464, 4.47302, 6.47568, 8.72305) shadow_enabled = true -shadow_blur = 1.5 +shadow_bias = 0.04 +shadow_blur = 2.0 directional_shadow_fade_start = 1.0 -directional_shadow_max_distance = 85.0 +directional_shadow_max_distance = 75.0 [node name="GrateOmniLight" type="OmniLight3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.9461, -1.33084, -5.52646) light_color = Color(1, 0.905882, 0.470588, 1) shadow_enabled = true shadow_bias = 0.03 -shadow_blur = 1.5 +shadow_blur = 2.0 omni_range = 10.0 omni_attenuation = 2.0 @@ -76,7 +109,7 @@ light_color = Color(0.984314, 0.552941, 1, 1) light_energy = 15.0 shadow_enabled = true shadow_bias = 0.03 -shadow_blur = 1.5 +shadow_blur = 2.0 omni_range = 10.0 omni_attenuation = 2.0 @@ -100,8 +133,18 @@ script = ExtResource("6") [node name="Box" type="MeshInstance3D" parent="Camera"] transform = Transform3D(0.999999, -5.12227e-09, 9.68575e-08, 2.79397e-09, 0.999999, 8.9407e-08, 7.45058e-09, -1.11759e-07, 0.999999, -1.4, -0.999998, -3.99998) +layers = 2 mesh = SubResource("8") +[node name="BlobShadow" type="Decal" parent="Camera/Box"] +transform = Transform3D(-0.997524, -0.00613033, -0.0700699, -0.00719589, 0.999863, 0.0149653, 0.0699686, 0.015432, -0.997431, 0.0499506, -0.507917, -0.035697) +extents = Vector3(1.25, 2, 1.25) +texture_albedo = SubResource("GradientTexture2D_uu8pf") +albedo_mix = 0.9 +upper_fade = 1.0 +lower_fade = 1.0 +cull_mask = 1048573 + [node name="ReflectiveSphere" type="MeshInstance3D" parent="Camera"] transform = Transform3D(-0.997523, -8.41886e-09, -0.0703376, -0.00719589, 0.994753, 0.102052, 0.0699685, 0.102305, -0.992289, 0.16733, -1.22931, -3.81225) layers = 2 @@ -111,18 +154,27 @@ surface_material_override/0 = SubResource("StandardMaterial3D_7doxp") [node name="ReflectionProbe" type="ReflectionProbe" parent="Camera/ReflectiveSphere"] transform = Transform3D(1, -8.38189e-09, -8.9407e-08, 5.58791e-09, 1, -5.21541e-07, 4.47035e-08, 1.11759e-07, 1, 0, 0, 0) max_distance = 50.0 +extents = Vector3(11, 11, 11) box_projection = true enable_shadows = true ambient_mode = 0 +[node name="BlobShadow" type="Decal" parent="Camera/ReflectiveSphere"] +transform = Transform3D(1, -1.37668e-14, 0, 1.33227e-15, 1, 1.42109e-14, 0, 0, 1, 0, -1, -1.90735e-06) +extents = Vector3(1.25, 2, 1.25) +texture_albedo = SubResource("GradientTexture2D_uu8pf") +albedo_mix = 0.9 +upper_fade = 1.0 +lower_fade = 1.0 +cull_mask = 1048573 + [node name="GIMode" type="Label" parent="."] offset_left = 16.0 offset_top = 16.0 offset_right = 263.0 offset_bottom = 42.0 -theme_override_colors/font_shadow_color = Color(0, 0, 0, 1) -theme_override_constants/shadow_offset_x = 1 -theme_override_constants/shadow_offset_y = 1 +theme_override_colors/font_outline_color = Color(0, 0, 0, 1) +theme_override_constants/outline_size = 4 text = "Global illumination: None (Fastest)" [node name="ReflectionProbeMode" type="Label" parent="."] @@ -130,9 +182,8 @@ offset_left = 16.0 offset_top = 48.0 offset_right = 148.0 offset_bottom = 74.0 -theme_override_colors/font_shadow_color = Color(0, 0, 0, 1) -theme_override_constants/shadow_offset_x = 1 -theme_override_constants/shadow_offset_y = 1 +theme_override_colors/font_outline_color = Color(0, 0, 0, 1) +theme_override_constants/outline_size = 4 text = "Reflection probe: Disabled - Using environment, VoxelGI or SDFGI reflections (Fast)" [node name="SSILMode" type="Label" parent="."] @@ -140,9 +191,8 @@ offset_left = 16.0 offset_top = 80.0 offset_right = 365.0 offset_bottom = 106.0 -theme_override_colors/font_shadow_color = Color(0, 0, 0, 1) -theme_override_constants/shadow_offset_x = 1 -theme_override_constants/shadow_offset_y = 1 +theme_override_colors/font_outline_color = Color(0, 0, 0, 1) +theme_override_constants/outline_size = 4 text = "Screen-space lighting effects: Disabled (Fast)" [node name="Label" type="Label" parent="."] @@ -153,11 +203,10 @@ offset_left = 16.0 offset_top = -120.0 offset_right = 537.0 offset_bottom = -16.0 -theme_override_colors/font_shadow_color = Color(0, 0, 0, 1) -theme_override_constants/shadow_offset_x = 1 -theme_override_constants/shadow_offset_y = 1 +theme_override_colors/font_outline_color = Color(0, 0, 0, 1) +theme_override_constants/outline_size = 4 text = "Space: Cycle between GI modes -R: Toggle reflection probe +R: Cycle between reflection probe modes F: Cycle between screen-space lighting effect modes Escape or F10: Toggle mouse capture" diff --git a/3d/global_illumination/test_VoxelGIData.res b/3d/global_illumination/test_VoxelGIData.res index b3146909..c741ae65 100644 Binary files a/3d/global_illumination/test_VoxelGIData.res and b/3d/global_illumination/test_VoxelGIData.res differ diff --git a/3d/global_illumination/zdm2.glb.import b/3d/global_illumination/zdm2.glb.import index d3a19bea..205a3fd8 100644 --- a/3d/global_illumination/zdm2.glb.import +++ b/3d/global_illumination/zdm2.glb.import @@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/zdm2.glb-c2f26c366324e083db1b83c037b80fc6.scn nodes/root_type="Spatial" nodes/root_name="Zdm2" +nodes/apply_root_scale=true nodes/root_scale=1.0 meshes/ensure_tangents=true meshes/generate_lods=false @@ -24,5 +25,6 @@ meshes/lightmap_texel_size=0.25 skins/use_named_skins=true animation/import=true animation/fps=15 +animation/trimming=false import_script/path="" _subresources={} diff --git a/3d/global_illumination/zdm2_all.exr b/3d/global_illumination/zdm2_all.exr new file mode 100644 index 00000000..1f652c96 Binary files /dev/null and b/3d/global_illumination/zdm2_all.exr differ diff --git a/3d/global_illumination/zdm2_all.exr.import b/3d/global_illumination/zdm2_all.exr.import new file mode 100644 index 00000000..1d31cc81 --- /dev/null +++ b/3d/global_illumination/zdm2_all.exr.import @@ -0,0 +1,28 @@ +[remap] + +importer="2d_array_texture" +type="CompressedTexture2DArray" +uid="uid://dh810u2wvg8xg" +path.etc2="res://.godot/imported/zdm2_all.exr-90621151e6c7cdb548fd3797293f06e7.etc2.ctexarray" +path.s3tc="res://.godot/imported/zdm2_all.exr-90621151e6c7cdb548fd3797293f06e7.s3tc.ctexarray" +metadata={ +"imported_formats": ["etc2", "s3tc"], +"vram_texture": true +} + +[deps] + +source_file="res://zdm2_all.exr" +dest_files=["res://.godot/imported/zdm2_all.exr-90621151e6c7cdb548fd3797293f06e7.etc2.ctexarray", "res://.godot/imported/zdm2_all.exr-90621151e6c7cdb548fd3797293f06e7.s3tc.ctexarray"] + +[params] + +compress/mode=2 +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/bptc_ldr=0 +compress/channel_pack=1 +mipmaps/generate=false +mipmaps/limit=-1 +slices/horizontal=1 +slices/vertical=1 diff --git a/3d/global_illumination/zdm2_all.lmbake b/3d/global_illumination/zdm2_all.lmbake new file mode 100644 index 00000000..8986289e Binary files /dev/null and b/3d/global_illumination/zdm2_all.lmbake differ diff --git a/3d/global_illumination/zdm2_indirect.exr b/3d/global_illumination/zdm2_indirect.exr new file mode 100644 index 00000000..a88cf7c1 Binary files /dev/null and b/3d/global_illumination/zdm2_indirect.exr differ diff --git a/3d/global_illumination/zdm2_indirect.exr.import b/3d/global_illumination/zdm2_indirect.exr.import new file mode 100644 index 00000000..91e2a55a --- /dev/null +++ b/3d/global_illumination/zdm2_indirect.exr.import @@ -0,0 +1,28 @@ +[remap] + +importer="2d_array_texture" +type="CompressedTexture2DArray" +uid="uid://dv1sjg7a0m50l" +path.etc2="res://.godot/imported/zdm2_indirect.exr-1fd4bc76ec648c4d2e6230b7d974087b.etc2.ctexarray" +path.s3tc="res://.godot/imported/zdm2_indirect.exr-1fd4bc76ec648c4d2e6230b7d974087b.s3tc.ctexarray" +metadata={ +"imported_formats": ["etc2", "s3tc"], +"vram_texture": true +} + +[deps] + +source_file="res://zdm2_indirect.exr" +dest_files=["res://.godot/imported/zdm2_indirect.exr-1fd4bc76ec648c4d2e6230b7d974087b.etc2.ctexarray", "res://.godot/imported/zdm2_indirect.exr-1fd4bc76ec648c4d2e6230b7d974087b.s3tc.ctexarray"] + +[params] + +compress/mode=2 +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/bptc_ldr=0 +compress/channel_pack=1 +mipmaps/generate=false +mipmaps/limit=-1 +slices/horizontal=1 +slices/vertical=1 diff --git a/3d/global_illumination/zdm2_indirect.lmbake b/3d/global_illumination/zdm2_indirect.lmbake new file mode 100644 index 00000000..15169984 Binary files /dev/null and b/3d/global_illumination/zdm2_indirect.lmbake differ