From 376d312ae6290a1a5f1245abd5d02c6db3a67235 Mon Sep 17 00:00:00 2001 From: Marc Gilleron Date: Sat, 1 Apr 2017 20:13:19 +0200 Subject: [PATCH] Dump profiling info on pressing F4 --- project/main.tscn | 206 +++++++++++++++++++++++++++++++++++++-- project/profiling_gui.gd | 24 +++++ 2 files changed, 222 insertions(+), 8 deletions(-) create mode 100644 project/profiling_gui.gd diff --git a/project/main.tscn b/project/main.tscn index 88a4215..3310eb3 100644 --- a/project/main.tscn +++ b/project/main.tscn @@ -1,9 +1,10 @@ -[gd_scene load_steps=9 format=2] +[gd_scene load_steps=14 format=2] [ext_resource path="res://voxel_map.gd" type="Script" id=1] [ext_resource path="res://terrain.png" type="Texture" id=2] [ext_resource path="res://grid.gd" type="Script" id=3] [ext_resource path="res://character_avatar.tscn" type="PackedScene" id=4] +[ext_resource path="res://profiling_gui.gd" type="Script" id=5] [sub_resource type="Environment" id=1] @@ -174,6 +175,142 @@ uv1_offset = Vector2( 0, 0 ) uv2_scale = Vector2( 1, 1 ) uv2_offset = Vector2( 0, 0 ) +[sub_resource type="FixedSpatialMaterial" id=5] + +flags_transparent = false +flags_unshaded = false +flags_on_top = false +flags_use_point_size = false +vertex_color_use_as_albedo = false +vertex_color_is_srgb = false +params_diffuse_mode = 0 +params_blend_mode = 0 +params_cull_mode = 0 +params_depth_draw_mode = 0 +params_line_width = 1.0 +params_point_size = 1.0 +albedo_color = Color( 0.7, 0.7, 0.7, 1 ) +specular_mode = 0 +specular_color = Color( 0.1, 0.1, 0.1, 1 ) +specular_metalness = 0.1 +specular_roughness = 0.0 +emission_enabled = false +normal_enabled = false +rim_enabled = false +clearcoat_enabled = false +anisotropy_enabled = false +ao_enabled = false +height_enabled = false +subsurf_scatter_enabled = false +refraction_enabled = false +detail_enabled = false +uv1_scale = Vector2( 1, 1 ) +uv1_offset = Vector2( 0, 0 ) +uv2_scale = Vector2( 1, 1 ) +uv2_offset = Vector2( 0, 0 ) + +[sub_resource type="FixedSpatialMaterial" id=6] + +flags_transparent = false +flags_unshaded = false +flags_on_top = false +flags_use_point_size = false +vertex_color_use_as_albedo = false +vertex_color_is_srgb = false +params_diffuse_mode = 0 +params_blend_mode = 0 +params_cull_mode = 0 +params_depth_draw_mode = 0 +params_line_width = 1.0 +params_point_size = 1.0 +albedo_color = Color( 0.917969, 0.190048, 0.190048, 1 ) +specular_mode = 0 +specular_color = Color( 0.1, 0.1, 0.1, 1 ) +specular_metalness = 0.1 +specular_roughness = 0.0 +emission_enabled = false +normal_enabled = false +rim_enabled = false +clearcoat_enabled = false +anisotropy_enabled = false +ao_enabled = false +height_enabled = false +subsurf_scatter_enabled = false +refraction_enabled = false +detail_enabled = false +uv1_scale = Vector2( 1, 1 ) +uv1_offset = Vector2( 0, 0 ) +uv2_scale = Vector2( 1, 1 ) +uv2_offset = Vector2( 0, 0 ) + +[sub_resource type="FixedSpatialMaterial" id=7] + +flags_transparent = false +flags_unshaded = false +flags_on_top = false +flags_use_point_size = false +vertex_color_use_as_albedo = false +vertex_color_is_srgb = false +params_diffuse_mode = 0 +params_blend_mode = 0 +params_cull_mode = 0 +params_depth_draw_mode = 0 +params_line_width = 1.0 +params_point_size = 1.0 +albedo_color = Color( 0.359497, 0.742188, 0.401354, 1 ) +specular_mode = 0 +specular_color = Color( 0.1, 0.1, 0.1, 1 ) +specular_metalness = 0.1 +specular_roughness = 0.0 +emission_enabled = false +normal_enabled = false +rim_enabled = false +clearcoat_enabled = false +anisotropy_enabled = false +ao_enabled = false +height_enabled = false +subsurf_scatter_enabled = false +refraction_enabled = false +detail_enabled = false +uv1_scale = Vector2( 1, 1 ) +uv1_offset = Vector2( 0, 0 ) +uv2_scale = Vector2( 1, 1 ) +uv2_offset = Vector2( 0, 0 ) + +[sub_resource type="FixedSpatialMaterial" id=8] + +flags_transparent = false +flags_unshaded = false +flags_on_top = false +flags_use_point_size = false +vertex_color_use_as_albedo = false +vertex_color_is_srgb = false +params_diffuse_mode = 0 +params_blend_mode = 0 +params_cull_mode = 0 +params_depth_draw_mode = 0 +params_line_width = 1.0 +params_point_size = 1.0 +albedo_color = Color( 0.168533, 0.478846, 0.917969, 1 ) +specular_mode = 0 +specular_color = Color( 0.1, 0.1, 0.1, 1 ) +specular_metalness = 0.1 +specular_roughness = 0.0 +emission_enabled = false +normal_enabled = false +rim_enabled = false +clearcoat_enabled = false +anisotropy_enabled = false +ao_enabled = false +height_enabled = false +subsurf_scatter_enabled = false +refraction_enabled = false +detail_enabled = false +uv1_scale = Vector2( 1, 1 ) +uv1_offset = Vector2( 0, 0 ) +uv2_scale = Vector2( 1, 1 ) +uv2_offset = Vector2( 0, 0 ) + [node name="Node" type="Node"] [node name="WorldEnvironment" type="WorldEnvironment" parent="."] @@ -190,7 +327,7 @@ transparent_material = SubResource( 3 ) [node name="TestCube" type="TestCube" parent="."] _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.0723, -4.58428 ) +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.02025, -0.19666 ) layers = 1 material_override = SubResource( 4 ) cast_shadow = 1 @@ -208,9 +345,8 @@ lod_max_hysteresis = 0.0 [node name="Grid" type="MeshInstance" parent="."] _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) -visible = false layers = 1 -material_override = null +material_override = SubResource( 5 ) cast_shadow = 1 extra_cull_margin = 0.0 use_as_billboard = false @@ -236,7 +372,7 @@ light_energy = 1.0 light_negative = false light_specular = 0.5 light_cull_mask = -1 -shadow_enabled = true +shadow_enabled = false shadow_color = Color( 0, 0, 0, 1 ) shadow_bias = 0.2 shadow_contact = 0.0 @@ -282,12 +418,18 @@ gravity = 30.0 jump_force = 9.0 terrain = NodePath("../VoxelTerrain") -[node name="TestCube2" type="TestCube" parent="."] +[node name="axes" type="Spatial" parent="."] + +editor/display_folded = true +_import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 14.3287, 0 ) + +[node name="X" type="TestCube" parent="axes"] _import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.230466, -1.27516, -5.9037 ) +transform = Transform( 1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 1.07512, 0, 0 ) layers = 1 -material_override = null +material_override = SubResource( 6 ) cast_shadow = 1 extra_cull_margin = 0.0 use_as_billboard = false @@ -300,4 +442,52 @@ lod_min_hysteresis = 0.0 lod_max_distance = 0.0 lod_max_hysteresis = 0.0 +[node name="Y" type="TestCube" parent="axes"] + +_import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) +transform = Transform( 0.1, 0, 0, 0, 1, 0, 0, 0, 0.1, 0, 0.903888, 0 ) +layers = 1 +material_override = SubResource( 7 ) +cast_shadow = 1 +extra_cull_margin = 0.0 +use_as_billboard = false +use_as_y_billboard = false +use_depth_scale = false +visible_in_all_rooms = false +use_in_baked_light = false +lod_min_distance = 0.0 +lod_min_hysteresis = 0.0 +lod_max_distance = 0.0 +lod_max_hysteresis = 0.0 + +[node name="Z" type="TestCube" parent="axes"] + +_import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) +transform = Transform( 0.1, 0, 0, 0, 0.1, 0, 0, 0, 1, 0, 0, 1.10346 ) +layers = 1 +material_override = SubResource( 8 ) +cast_shadow = 1 +extra_cull_margin = 0.0 +use_as_billboard = false +use_as_y_billboard = false +use_depth_scale = false +visible_in_all_rooms = false +use_in_baked_light = false +lod_min_distance = 0.0 +lod_min_hysteresis = 0.0 +lod_max_distance = 0.0 +lod_max_hysteresis = 0.0 + +[node name="ProfilingInfo" type="Label" parent="."] + +margin_right = 40.0 +margin_bottom = 14.0 +rect_clip_content = false +mouse_filter = 2 +size_flags_vertical = 0 +percent_visible = 1.0 +lines_skipped = 0 +max_lines_visible = -1 +script = ExtResource( 5 ) + diff --git a/project/profiling_gui.gd b/project/profiling_gui.gd new file mode 100644 index 0000000..76e9a82 --- /dev/null +++ b/project/profiling_gui.gd @@ -0,0 +1,24 @@ +extends Label + + +func _input(event): + if event.type == InputEvent.KEY and event.pressed == false: + if event.scancode == KEY_F4: + var terrain = get_parent().get_node("VoxelTerrain") + if terrain.has_method("get_profiling_info") == false: + return + var terrain_infos = terrain.get_profiling_info() + var mesher_infos = terrain.get_mesher().get_profiling_info() + save_json(terrain_infos, "profiling_terrain.json") + save_json(mesher_infos, "profiling_mesher.json") + + +func save_json(infos, path): + var f = File.new() + var ret = f.open(path, File.WRITE) + if ret == 0: + f.store_string(to_json(infos)) + f.close() + else: + print("Could not dump profiling info (error " + str(ret) + ")") +