feat: performance budget profiling setup
- docs/performance-budget.md: 60fps/2GB VRAM budget with CPU, GPU, memory, and draw-call targets (P95<16.6ms, P99<50ms) - scripts/profiling/: SceneTree + Node profilers, test scenes - scripts/generate_occluders.gd: auto-generate OccluderInstance3D from CSG wall pieces (128^3 voxel occlusion culling) - scripts/convert_csg_to_mesh.gd: CSG->StaticMesh baker with LOD slots (LOD1@15m, LOD2@30m) - project.godot: occlusion culling + LOD settings enabled - modular scene UV2 data from lightmapping pass - rcon_command_handler.gd conflict resolved (kept upstream plugin cmd) - Fixed profiler_node.gd warmup frame bug (60 frames, not 3) - Fixed convert_csg_to_mesh.gd LOD API (add_lod + distance)
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
[gd_scene load_steps=2 format=3]
|
||||
[ext_resource type="Material" path="res://assets/materials/accent_team_blue.tres" id="1"]
|
||||
|
||||
[node name="BluePanel01" type="CSGBox3D" parent="."]
|
||||
[node name="BluePanel01" type="CSGBox3D"]
|
||||
size = Vector3(1.28, 0.64, 0.08)
|
||||
material = ExtResource("1")
|
||||
use_collision = true
|
||||
visibility_range_end = 20.0
|
||||
visibility_range_end_margin = 2.0
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
[gd_scene load_steps=2 format=3]
|
||||
[ext_resource type="Material" path="res://assets/materials/accent_team_red.tres" id="1"]
|
||||
|
||||
[node name="RedPanel01" type="CSGBox3D" parent="."]
|
||||
[node name="RedPanel01" type="CSGBox3D"]
|
||||
size = Vector3(1.28, 0.64, 0.08)
|
||||
material = ExtResource("1")
|
||||
use_collision = true
|
||||
visibility_range_end = 20.0
|
||||
visibility_range_end_margin = 2.0
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
[gd_scene load_steps=2 format=3]
|
||||
[ext_resource type="Material" path="res://assets/materials/metal_structural_01.tres" id="1"]
|
||||
|
||||
[node name="Beam01" type="CSGBox3D" parent="."]
|
||||
[node name="Beam01" type="CSGBox3D"]
|
||||
size = Vector3(3.84, 0.32, 0.32)
|
||||
material = ExtResource("1")
|
||||
use_collision = true
|
||||
visibility_range_end = 30.0
|
||||
visibility_range_end_margin = 3.0
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
[gd_scene load_steps=2 format=3]
|
||||
[ext_resource type="Material" path="res://assets/materials/floor_concrete_01.tres" id="1"]
|
||||
|
||||
[node name="FloorTile01" type="CSGBox3D" parent="."]
|
||||
[node name="FloorTile01" type="CSGBox3D"]
|
||||
size = Vector3(2.56, 0.08, 2.56)
|
||||
material = ExtResource("1")
|
||||
use_collision = true
|
||||
visibility_range_end = 60.0
|
||||
visibility_range_end_margin = 10.0
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
[gd_scene load_steps=2 format=3]
|
||||
[ext_resource type="Material" path="res://assets/materials/floor_tile_01.tres" id="1"]
|
||||
|
||||
[node name="FloorTileCeramic01" type="CSGBox3D" parent="."]
|
||||
[node name="FloorTileCeramic01" type="CSGBox3D"]
|
||||
size = Vector3(2.56, 0.08, 2.56)
|
||||
material = ExtResource("1")
|
||||
use_collision = true
|
||||
visibility_range_end = 60.0
|
||||
visibility_range_end_margin = 10.0
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
[gd_scene load_steps=2 format=3]
|
||||
[ext_resource type="Material" path="res://assets/materials/wall_concrete_02.tres" id="1"]
|
||||
|
||||
[node name="Pillar01" type="CSGBox3D" parent="."]
|
||||
[node name="Pillar01" type="CSGBox3D"]
|
||||
size = Vector3(0.64, 2.56, 0.64)
|
||||
material = ExtResource("1")
|
||||
use_collision = true
|
||||
visibility_range_end = 30.0
|
||||
visibility_range_end_margin = 3.0
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
[gd_scene load_steps=2 format=3]
|
||||
[ext_resource type="Material" path="res://assets/materials/wall_concrete_01.tres" id="1"]
|
||||
|
||||
[node name="WallCorner01" type="CSGCombiner3D" parent="."]
|
||||
[node name="WallCorner01" type="CSGCombiner3D"]
|
||||
use_collision = false
|
||||
visibility_range_end = 50.0
|
||||
visibility_range_end_margin = 5.0
|
||||
[node name="WallA" type="CSGBox3D" parent="WallCorner01"]
|
||||
operation = 0
|
||||
size = Vector3(2.56, 2.56, 0.16)
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
[gd_scene load_steps=2 format=3]
|
||||
[ext_resource type="Material" path="res://assets/materials/wall_concrete_01.tres" id="1"]
|
||||
|
||||
[node name="WallDoorway01" type="CSGCombiner3D" parent="."]
|
||||
[node name="WallDoorway01" type="CSGCombiner3D"]
|
||||
use_collision = false
|
||||
visibility_range_end = 40.0
|
||||
visibility_range_end_margin = 5.0
|
||||
[node name="MainWall" type="CSGBox3D" parent="WallDoorway01"]
|
||||
operation = 0
|
||||
size = Vector3(2.56, 2.56, 0.16)
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
[gd_scene load_steps=2 format=3]
|
||||
[ext_resource type="Material" path="res://assets/materials/wall_concrete_01.tres" id="1"]
|
||||
|
||||
[node name="WallEndcap01" type="CSGBox3D" parent="."]
|
||||
[node name="WallEndcap01" type="CSGBox3D"]
|
||||
size = Vector3(0.32, 2.56, 0.16)
|
||||
material = ExtResource("1")
|
||||
use_collision = true
|
||||
visibility_range_end = 50.0
|
||||
visibility_range_end_margin = 5.0
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
[gd_scene load_steps=2 format=3]
|
||||
[ext_resource type="Material" path="res://assets/materials/wall_concrete_01.tres" id="1"]
|
||||
|
||||
[node name="WallStraight01" type="CSGBox3D" parent="."]
|
||||
[node name="WallStraight01" type="CSGBox3D"]
|
||||
size = Vector3(2.56, 2.56, 0.16)
|
||||
material = ExtResource("1")
|
||||
use_collision = true
|
||||
visibility_range_end = 50.0
|
||||
visibility_range_end_margin = 5.0
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
[gd_scene load_steps=2 format=3]
|
||||
[ext_resource type="Material" path="res://assets/materials/wall_concrete_01.tres" id="1"]
|
||||
|
||||
[node name="WallWindow01" type="CSGCombiner3D" parent="."]
|
||||
[node name="WallWindow01" type="CSGCombiner3D"]
|
||||
use_collision = false
|
||||
visibility_range_end = 40.0
|
||||
visibility_range_end_margin = 5.0
|
||||
[node name="MainWall" type="CSGBox3D" parent="WallWindow01"]
|
||||
operation = 0
|
||||
size = Vector3(2.56, 2.56, 0.16)
|
||||
|
||||
Reference in New Issue
Block a user