diff --git a/3d/global_illumination/camera.gd b/3d/global_illumination/camera.gd index b222df3d..47696d70 100644 --- a/3d/global_illumination/camera.gd +++ b/3d/global_illumination/camera.gd @@ -30,14 +30,16 @@ func _input(input_event: InputEvent) -> void: func _process(delta: float) -> void: var motion := Vector3( Input.get_axis(&"move_left", &"move_right"), - 0, + 0.0, Input.get_axis(&"move_forward", &"move_back") ) + var motion_y: float = Input.get_axis(&"move_down", &"move_up") # Normalize motion to prevent diagonal movement from being # `sqrt(2)` times faster than straight movement. motion = motion.normalized() velocity += MOVE_SPEED * delta * (transform.basis * motion) + velocity += Vector3(0.0, MOVE_SPEED * delta * motion_y, 0.0) velocity *= 0.85 position += velocity diff --git a/3d/global_illumination/project.godot b/3d/global_illumination/project.godot index 50152af1..df5717e2 100644 --- a/3d/global_illumination/project.godot +++ b/3d/global_illumination/project.godot @@ -77,6 +77,16 @@ toggle_mouse_capture={ , 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":4194341,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) ] } +move_up={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null) +] +} +move_down={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":81,"key_label":0,"unicode":113,"location":0,"echo":false,"script":null) +] +} [rendering] diff --git a/3d/global_illumination/test.gd b/3d/global_illumination/test.gd index 6ce0db9d..db0b806c 100644 --- a/3d/global_illumination/test.gd +++ b/3d/global_illumination/test.gd @@ -13,7 +13,7 @@ enum ReflectionProbeMode { NONE, ONCE, ALWAYS, - MAX, + MAX, # Maximum value of the enum, used internally. } enum SSILMode { @@ -59,6 +59,7 @@ var is_compatibility: bool = false @onready var lightmap_gi_all_data: LightmapGIData = $LightmapGIAll.light_data @onready var environment: Environment = $WorldEnvironment.environment @onready var gi_mode_label: Label = $GIMode +@onready var fps: Label = $FPS @onready var reflection_probe_mode_label: Label = $ReflectionProbeMode @onready var reflection_probe: ReflectionProbe = $Camera/ReflectiveSphere/ReflectionProbe @onready var ssil_mode_label: Label = $SSILMode @@ -95,19 +96,26 @@ Escape or F10: Toggle mouse capture""" func _input(input_event: InputEvent) -> void: if input_event.is_action_pressed(&"cycle_gi_mode"): + var incr: int = -1 if Input.is_key_pressed(KEY_SHIFT) else 1 if is_compatibility: # Only LightmapGI is supported in Compatibility. # Note that the actual GI mode is the opposite of what's being set here, due to a bug # in the Compatibility rendering method. - set_gi_mode(wrapi(gi_mode + 1, 0, GIMode.VOXEL_GI)) + set_gi_mode(wrapi(gi_mode + incr, 0, GIMode.VOXEL_GI)) else: - set_gi_mode(wrapi(gi_mode + 1, 0, GIMode.MAX)) + set_gi_mode(wrapi(gi_mode + incr, 0, GIMode.MAX)) if input_event.is_action_pressed(&"cycle_reflection_probe_mode"): - set_reflection_probe_mode(wrapi(reflection_probe_mode + 1, 0, ReflectionProbeMode.MAX)) + var incr: int = -1 if Input.is_key_pressed(KEY_SHIFT) else 1 + set_reflection_probe_mode(wrapi(reflection_probe_mode + incr, 0, ReflectionProbeMode.MAX)) if input_event.is_action_pressed(&"cycle_ssil_mode"): - set_ssil_mode(wrapi(ssil_mode + 1, 0, SSILMode.MAX)) + var incr: int = -1 if Input.is_key_pressed(KEY_SHIFT) else 1 + set_ssil_mode(wrapi(ssil_mode + incr, 0, SSILMode.MAX)) + + +func _physics_process(_delta: float) -> void: + fps.text = "%d FPS (%.2f mspf)" % [Engine.get_frames_per_second(), 1000.0 / Engine.get_frames_per_second()] func set_gi_mode(p_gi_mode: GIMode) -> void: diff --git a/3d/global_illumination/test.tscn b/3d/global_illumination/test.tscn index f96c9ecb..128b67cb 100644 --- a/3d/global_illumination/test.tscn +++ b/3d/global_illumination/test.tscn @@ -124,7 +124,7 @@ transform = Transform3D(1.4, 0, 0, 0, 1, 0, 0, 0, 0.25, -0.681709, -0.108265, 25 surface_material_override/0 = SubResource("StandardMaterial3D_1n5k1") [node name="Camera" type="Camera3D" parent="."] -transform = Transform3D(-0.997523, -0.00719588, 0.0699685, -8.94368e-09, 0.994753, 0.102305, -0.0703375, 0.102052, -0.992289, 11.7976, 1.49898, 9.54247) +transform = Transform3D(-0.99752325, -0.0071959156, 0.069968455, -8.943681e-09, 0.99475306, 0.1023054, -0.07033751, 0.10205201, -0.9922893, 11.7976, 1.49898, 9.54247) script = ExtResource("6") [node name="Box" type="MeshInstance3D" parent="Camera"] @@ -158,7 +158,7 @@ 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) +transform = Transform3D(1, -1.3766786e-14, 0, 1.3322678e-15, 1, 1.5987212e-14, 0, -2.842171e-14, 1, 0, -1, -1.9073486e-06) size = Vector3(2.5, 4, 2.5) texture_albedo = SubResource("GradientTexture2D_uu8pf") albedo_mix = 0.9 @@ -175,6 +175,19 @@ theme_override_colors/font_outline_color = Color(0, 0, 0, 1) theme_override_constants/outline_size = 4 text = "Global illumination: None (Fastest)" +[node name="FPS" type="Label" parent="."] +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -164.0 +offset_top = 16.0 +offset_right = -16.0 +offset_bottom = 42.0 +grow_horizontal = 0 +theme_override_colors/font_outline_color = Color(0, 0, 0, 1) +theme_override_constants/outline_size = 4 +text = "60 FPS (16.67 mspf)" + [node name="ReflectionProbeMode" type="Label" parent="."] offset_left = 16.0 offset_top = 48.0