e385eae0f5
- 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)
18 lines
605 B
Plaintext
18 lines
605 B
Plaintext
[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"]
|
|
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)
|
|
material = ExtResource("1")
|
|
use_collision = true
|
|
[node name="WindowCutout" type="CSGBox3D" parent="WallWindow01"]
|
|
operation = 1
|
|
size = Vector3(1.2, 0.8, 0.2)
|
|
use_collision = true
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.3, 0)
|