add performance toggles and menu
This commit is contained in:
parent
e19e88328b
commit
681e97fe37
9 changed files with 173 additions and 21 deletions
|
@ -21,6 +21,7 @@ config/icon="res://icon.png"
|
|||
XRToolsUserSettings="*res://addons/godot-xr-tools/user_settings/user_settings.gd"
|
||||
XRToolsRumbleManager="*res://addons/godot-xr-tools/rumble/rumble_manager.gd"
|
||||
DebugCam="*res://addons/debug_camera/scripts/DebugCamAutoload.gd"
|
||||
PerformanceSettingsSingleton="*res://scenes/performance_settings.gd"
|
||||
|
||||
[editor]
|
||||
|
||||
|
|
18
scenes/environment.tres
Normal file
18
scenes/environment.tres
Normal file
|
@ -0,0 +1,18 @@
|
|||
[gd_resource type="Environment" load_steps=2 format=3 uid="uid://c1yf8e4qr42hr"]
|
||||
|
||||
[sub_resource type="Sky" id="Sky_c23dr"]
|
||||
|
||||
[resource]
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_c23dr")
|
||||
ambient_light_color = Color(0.364084, 0.364084, 0.364084, 1)
|
||||
ambient_light_sky_contribution = 0.4
|
||||
ambient_light_energy = 0.34
|
||||
tonemap_mode = 2
|
||||
glow_enabled = true
|
||||
glow_normalized = true
|
||||
glow_intensity = 0.22
|
||||
glow_blend_mode = 1
|
||||
volumetric_fog_enabled = true
|
||||
volumetric_fog_density = 0.1744
|
||||
volumetric_fog_albedo = Color(0.60933, 0.60933, 0.60933, 1)
|
|
@ -63,7 +63,6 @@ void fragment() {
|
|||
|
||||
}
|
||||
"
|
||||
graph_offset = Vector2(-471.144, 48.9653)
|
||||
nodes/fragment/0/position = Vector2(620, 180)
|
||||
nodes/fragment/2/node = SubResource("VisualShaderNodeInput_5b52k")
|
||||
nodes/fragment/2/position = Vector2(-940, 280)
|
||||
|
|
34
scenes/performance_settings.gd
Normal file
34
scenes/performance_settings.gd
Normal file
|
@ -0,0 +1,34 @@
|
|||
class_name PerformanceSettings
|
||||
extends Node
|
||||
|
||||
var environment: Environment = preload("res://scenes/environment.tres")
|
||||
|
||||
var voxel_gi_enabled := true
|
||||
var bloom_enabled := true
|
||||
var volumetric_fog_enabled := true
|
||||
|
||||
func get_voxel_gi_enabled() -> bool:
|
||||
return voxel_gi_enabled
|
||||
|
||||
func _ready() -> void:
|
||||
# Initialize environment settings
|
||||
environment.glow_enabled = bloom_enabled
|
||||
environment.volumetric_fog_enabled = volumetric_fog_enabled
|
||||
_update_voxel_gi()
|
||||
|
||||
func toggle_voxel_gi(enabled: bool) -> void:
|
||||
voxel_gi_enabled = enabled
|
||||
_update_voxel_gi()
|
||||
|
||||
func toggle_bloom(enabled: bool) -> void:
|
||||
bloom_enabled = enabled
|
||||
environment.glow_enabled = bloom_enabled
|
||||
|
||||
func toggle_volumetric_fog(enabled: bool) -> void:
|
||||
volumetric_fog_enabled = enabled
|
||||
environment.volumetric_fog_enabled = volumetric_fog_enabled
|
||||
|
||||
func _update_voxel_gi() -> void:
|
||||
var voxel_gi = get_tree().current_scene.get_node_or_null("VoxelGI")
|
||||
if voxel_gi:
|
||||
voxel_gi.visible = voxel_gi_enabled
|
14
scenes/performance_settings_menu.gd
Normal file
14
scenes/performance_settings_menu.gd
Normal file
|
@ -0,0 +1,14 @@
|
|||
extends Node2D
|
||||
|
||||
func _ready() -> void:
|
||||
%VoxelToggle.button_pressed = PerformanceSettingsSingleton.voxel_gi_enabled
|
||||
%VoxelToggle.toggled.connect(PerformanceSettingsSingleton.toggle_voxel_gi)
|
||||
|
||||
%BloomToggle.button_pressed = PerformanceSettingsSingleton.bloom_enabled
|
||||
%BloomToggle.toggled.connect(PerformanceSettingsSingleton.toggle_bloom)
|
||||
|
||||
%VolumetricFogToggle.button_pressed = PerformanceSettingsSingleton.volumetric_fog_enabled
|
||||
%VolumetricFogToggle.toggled.connect(PerformanceSettingsSingleton.toggle_volumetric_fog)
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
%FpsIndicator.text = "FPS: %d" % Engine.get_frames_per_second()
|
72
scenes/performance_settings_menu.tscn
Normal file
72
scenes/performance_settings_menu.tscn
Normal file
|
@ -0,0 +1,72 @@
|
|||
[gd_scene load_steps=2 format=3 uid="uid://cyd8poa47ir2i"]
|
||||
|
||||
[ext_resource type="Script" path="res://scenes/performance_settings_menu.gd" id="1_20qfm"]
|
||||
|
||||
[node name="PerformanceSettingsMenu" type="Node2D"]
|
||||
script = ExtResource("1_20qfm")
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="."]
|
||||
offset_right = 40.0
|
||||
offset_bottom = 40.0
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="MarginContainer"]
|
||||
layout_mode = 2
|
||||
color = Color(0, 0, 0, 1)
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Performance Settings"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="FpsIndicator" type="Label" parent="MarginContainer/VBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "current fps"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label3" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Enable VoxelGI"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="VoxelToggle" type="CheckButton" parent="MarginContainer/VBoxContainer/HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
button_pressed = true
|
||||
|
||||
[node name="HBoxContainer2" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label3" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
text = "Enable Volumetric Fog"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="VolumetricFogToggle" type="CheckButton" parent="MarginContainer/VBoxContainer/HBoxContainer2"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
button_pressed = true
|
||||
|
||||
[node name="HBoxContainer3" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label3" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer3"]
|
||||
layout_mode = 2
|
||||
text = "Enable Bloom"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="BloomToggle" type="CheckButton" parent="MarginContainer/VBoxContainer/HBoxContainer3"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
button_pressed = true
|
|
@ -1,32 +1,19 @@
|
|||
[gd_scene load_steps=32 format=3 uid="uid://bd86thqpujh3p"]
|
||||
[gd_scene load_steps=35 format=3 uid="uid://bd86thqpujh3p"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/godot-xr-tools/staging/scene_base.gd" id="1_t86sx"]
|
||||
[ext_resource type="PackedScene" uid="uid://7uc6tf2tvn1k" path="res://scenes/xr_origin_3d.tscn" id="2_xk21l"]
|
||||
[ext_resource type="PackedScene" uid="uid://clc5dre31iskm" path="res://addons/godot-xr-tools/xr/start_xr.tscn" id="3_hdcpx"]
|
||||
[ext_resource type="Environment" uid="uid://c1yf8e4qr42hr" path="res://scenes/environment.tres" id="3_v4538"]
|
||||
[ext_resource type="PackedScene" uid="uid://57q7hhomocdh" path="res://addons/godot-xr-tools/objects/world_grab_area.tscn" id="4_nruf2"]
|
||||
[ext_resource type="VoxelGIData" uid="uid://bxphdae7hohsh" path="res://scenes/title_scene.VoxelGI_data.res" id="5_ebg1r"]
|
||||
[ext_resource type="CompressedTexture3D" uid="uid://c6uya54wegrle" path="res://scenes/title_scene.GPUParticlesCollisionSDF3D_data.exr" id="6_l378m"]
|
||||
[ext_resource type="PackedScene" uid="uid://rsrnbs08nv1n" path="res://scenes/proxy_collision_detector.tscn" id="7_1kkxh"]
|
||||
[ext_resource type="Script" path="res://scenes/voxel_gi_toggle.gd" id="7_4p11s"]
|
||||
[ext_resource type="PackedScene" uid="uid://c20kawop2lrv" path="res://assets/Arcane Source 2.glb" id="8_h17hj"]
|
||||
[ext_resource type="Script" path="res://scenes/target_highlight_test.gd" id="9_jig6v"]
|
||||
[ext_resource type="PackedScene" uid="uid://bixan352mi1j6" path="res://scenes/manipulator.tscn" id="10_dms3y"]
|
||||
|
||||
[sub_resource type="Sky" id="Sky_c23dr"]
|
||||
|
||||
[sub_resource type="Environment" id="Environment_vgkyp"]
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_c23dr")
|
||||
ambient_light_color = Color(0.364084, 0.364084, 0.364084, 1)
|
||||
ambient_light_sky_contribution = 0.4
|
||||
ambient_light_energy = 0.34
|
||||
tonemap_mode = 2
|
||||
glow_enabled = true
|
||||
glow_normalized = true
|
||||
glow_intensity = 0.22
|
||||
glow_blend_mode = 1
|
||||
volumetric_fog_enabled = true
|
||||
volumetric_fog_density = 0.1744
|
||||
volumetric_fog_albedo = Color(0.60933, 0.60933, 0.60933, 1)
|
||||
[ext_resource type="PackedScene" uid="uid://clujaf3u776a3" path="res://addons/godot-xr-tools/objects/viewport_2d_in_3d.tscn" id="13_ab6mb"]
|
||||
[ext_resource type="PackedScene" uid="uid://cyd8poa47ir2i" path="res://scenes/performance_settings_menu.tscn" id="14_s5dwy"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lvd12"]
|
||||
albedo_color = Color(0.563626, 0.563626, 0.563625, 1)
|
||||
|
@ -136,13 +123,16 @@ size = Vector3(0.2, 0.2, 0.2)
|
|||
emission_enabled = true
|
||||
emission = Color(0.208505, 0.70691, 0.626474, 1)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_a5rjy"]
|
||||
shading_mode = 0
|
||||
|
||||
[node name="TitleScene" type="Node3D"]
|
||||
script = ExtResource("1_t86sx")
|
||||
|
||||
[node name="XROrigin3D" parent="." instance=ExtResource("2_xk21l")]
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource("Environment_vgkyp")
|
||||
environment = ExtResource("3_v4538")
|
||||
|
||||
[node name="Floor" type="MeshInstance3D" parent="."]
|
||||
mesh = SubResource("PlaneMesh_gsjte")
|
||||
|
@ -173,6 +163,7 @@ shape = SubResource("BoxShape3D_gj4t1")
|
|||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.785156, -6.01978)
|
||||
size = Vector3(31, 6.57, 31)
|
||||
data = ExtResource("5_ebg1r")
|
||||
script = ExtResource("7_4p11s")
|
||||
|
||||
[node name="GPUParticles3D" type="GPUParticles3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.26492, 1.52311, -8.99933)
|
||||
|
@ -253,6 +244,15 @@ mesh = SubResource("PrismMesh_be80n")
|
|||
skeleton = NodePath("../../..")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_hyt1m")
|
||||
|
||||
[node name="Viewport2Din3D" parent="." instance=ExtResource("13_ab6mb")]
|
||||
transform = Transform3D(0.866025, 0, -0.5, 0, 1, 0, 0.5, 0, 0.866025, 5.61352, 2, -3)
|
||||
screen_size = Vector2(2.5, 1.5)
|
||||
scene = ExtResource("14_s5dwy")
|
||||
viewport_size = Vector2(250, 150)
|
||||
update_mode = 2
|
||||
material = SubResource("StandardMaterial3D_a5rjy")
|
||||
scene_properties_keys = PackedStringArray("performance_settings_menu.gd")
|
||||
|
||||
[connection signal="target_occupancy_changed" from="ProxyCollisionDetector" to="Target" method="_on_proxy_collision_detector_target_occupancy_changed"]
|
||||
[connection signal="target_occupancy_changed" from="ProxyCollisionDetector" to="Target2" method="_on_proxy_collision_detector_target_occupancy_changed"]
|
||||
|
||||
|
|
5
scenes/voxel_gi_toggle.gd
Normal file
5
scenes/voxel_gi_toggle.gd
Normal file
|
@ -0,0 +1,5 @@
|
|||
extends VoxelGI
|
||||
|
||||
func _ready() -> void:
|
||||
# toggle according to the singleton settings.
|
||||
visible = PerformanceSettingsSingleton.voxel_gi_enabled
|
|
@ -1,8 +1,9 @@
|
|||
[gd_scene load_steps=9 format=3 uid="uid://7uc6tf2tvn1k"]
|
||||
[gd_scene load_steps=10 format=3 uid="uid://7uc6tf2tvn1k"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bq86r4yll8po" path="res://addons/godot-xr-tools/hands/scenes/lowpoly/left_fullglove_low.tscn" id="1_gehoc"]
|
||||
[ext_resource type="PackedScene" uid="uid://b4ysuy43poobf" path="res://addons/godot-xr-tools/functions/function_pickup.tscn" id="2_sqnjc"]
|
||||
[ext_resource type="PackedScene" uid="uid://xqimcf20s2jp" path="res://addons/godot-xr-tools/hands/scenes/lowpoly/right_fullglove_low.tscn" id="3_7rd4f"]
|
||||
[ext_resource type="PackedScene" uid="uid://cqhw276realc" path="res://addons/godot-xr-tools/functions/function_pointer.tscn" id="3_gwcr3"]
|
||||
[ext_resource type="PackedScene" uid="uid://dg3gr6ofd8yx4" path="res://addons/godot-xr-tools/functions/movement_world_grab.tscn" id="4_ou5a5"]
|
||||
[ext_resource type="PackedScene" uid="uid://diyu06cw06syv" path="res://addons/godot-xr-tools/player/player_body.tscn" id="5_ug2p8"]
|
||||
[ext_resource type="Script" path="res://addons/godot-xr-tools/overrides/ground_physics_settings.gd" id="6_2gwa8"]
|
||||
|
@ -36,6 +37,10 @@ tracker = &"left_hand"
|
|||
grab_distance = 0.1
|
||||
ranged_enable = false
|
||||
|
||||
[node name="FunctionPointer" parent="LeftHand" instance=ExtResource("3_gwcr3")]
|
||||
show_laser = 2
|
||||
laser_length = 1
|
||||
|
||||
[node name="RightHand" type="XRController3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.25, 1, 0)
|
||||
tracker = &"right_hand"
|
||||
|
@ -46,6 +51,10 @@ tracker = &"right_hand"
|
|||
grab_distance = 0.1
|
||||
ranged_enable = false
|
||||
|
||||
[node name="FunctionPointer" parent="RightHand" instance=ExtResource("3_gwcr3")]
|
||||
show_laser = 2
|
||||
laser_length = 1
|
||||
|
||||
[node name="MovementWorldGrab" parent="." instance=ExtResource("4_ou5a5")]
|
||||
order = 5
|
||||
world_scale_min = 0.01
|
||||
|
|
Loading…
Reference in a new issue