Commit Graph

4951 Commits

Author SHA1 Message Date
69258ad35e Enhance tests for foliage render batches, adding checks for LOD stability and quality disabling 2026-05-03 13:36:25 +02:00
4bb8d197fe Refactor foliage rendering view state and chunk visibility tracking 2026-05-03 13:36:05 +02:00
dcf6778423 Improve hysteresis distance calculation and add view frustum checks for foliage culling 2026-05-03 13:35:21 +02:00
1a99be759d Enhance foliage rendering with cached chunk metrics, hysteresis LOD selection, and updated culling logic 2026-05-03 13:35:12 +02:00
8d6d53d5a6 Improve foliage instanced renderer tests with target support and state validation 2026-05-03 13:28:01 +02:00
6dd08215ef Remove unused Three.js imports from foliage instanced renderer tests 2026-05-03 13:24:27 +02:00
eba6392983 Improve mock implementation for foliage model loader in tests 2026-05-03 13:23:14 +02:00
7886f4cfa0 Add unit tests for FoliageInstancedRenderer 2026-05-03 13:23:14 +02:00
9f5280ef80 Add tests for foliage resource planning and LOD resolution 2026-05-03 13:22:34 +02:00
95276e671c Refactor foliage rendering pipeline to use resource signatures and view visibility 2026-05-03 13:21:08 +02:00
64ffe9cbf0 Implement foliage resource planning and chunking for rendering 2026-05-03 13:20:34 +02:00
1e934ae57c auto-git:
[change] public/foliage/Grass/BlueFescue/BlueFescue_LOD0.glb
 [change] public/foliage/Grass/BlueFescue/BlueFescue_LOD1.glb
 [change] public/foliage/Grass/BlueFescue/BlueFescue_LOD2.glb
 [change] public/foliage/Grass/BlueFescue/BlueFescue_LOD3.glb
 [change] public/foliage/Grass/BroadBlade/BroadBlade_LOD0.glb
 [change] public/foliage/Grass/BroadBlade/BroadBlade_LOD1.glb
 [change] public/foliage/Grass/BroadBlade/BroadBlade_LOD2.glb
 [change] public/foliage/Grass/BroadBlade/BroadBlade_LOD3.glb
 [change] public/foliage/Grass/DryTuft/DryTuft_LOD0.glb
 [change] public/foliage/Grass/DryTuft/DryTuft_LOD1.glb
 [change] public/foliage/Grass/DryTuft/DryTuft_LOD2.glb
 [change] public/foliage/Grass/DryTuft/DryTuft_LOD3.glb
 [change] public/foliage/Grass/Foxtail/Foxtail_LOD0.glb
 [change] public/foliage/Grass/Foxtail/Foxtail_LOD1.glb
 [change] public/foliage/Grass/Foxtail/Foxtail_LOD2.glb
 [change] public/foliage/Grass/Foxtail/Foxtail_LOD3.glb
 [change] public/foliage/Grass/MarshReed/MarshReed_LOD0.glb
 [change] public/foliage/Grass/MarshReed/MarshReed_LOD1.glb
 [change] public/foliage/Grass/MarshReed/MarshReed_LOD2.glb
 [change] public/foliage/Grass/MarshReed/MarshReed_LOD3.glb
 [change] public/foliage/Grass/MeadowSoft/MeadowSoft_LOD0.glb
 [change] public/foliage/Grass/MeadowSoft/MeadowSoft_LOD1.glb
 [change] public/foliage/Grass/MeadowSoft/MeadowSoft_LOD2.glb
 [change] public/foliage/Grass/MeadowSoft/MeadowSoft_LOD3.glb
 [change] public/foliage/Grass/SparseField/SparseField_LOD0.glb
 [change] public/foliage/Grass/SparseField/SparseField_LOD1.glb
 [change] public/foliage/Grass/SparseField/SparseField_LOD2.glb
 [change] public/foliage/Grass/SparseField/SparseField_LOD3.glb
 [change] public/foliage/Grass/Windswept/Windswept_LOD0.glb
 [change] public/foliage/Grass/Windswept/Windswept_LOD1.glb
 [change] public/foliage/Grass/Windswept/Windswept_LOD2.glb
 [change] public/foliage/Grass/Windswept/Windswept_LOD3.glb
 [change] public/foliage/GrassDry/BrittleGrassClump/BrittleGrassClump_LOD0.glb
 [change] public/foliage/GrassDry/BrittleGrassClump/BrittleGrassClump_LOD1.glb
 [change] public/foliage/GrassDry/BrittleGrassClump/BrittleGrassClump_LOD2.glb
 [change] public/foliage/GrassDry/BrittleGrassClump/BrittleGrassClump_LOD3.glb
 [change] public/foliage/GrassDry/BrokenHayPile/BrokenHayPile_LOD0.glb
 [change] public/foliage/GrassDry/BrokenHayPile/BrokenHayPile_LOD1.glb
 [change] public/foliage/GrassDry/BrokenHayPile/BrokenHayPile_LOD2.glb
 [change] public/foliage/GrassDry/BrokenHayPile/BrokenHayPile_LOD3.glb
 [change] public/foliage/GrassDry/CutStubblePatch/CutStubblePatch_LOD0.glb
 [change] public/foliage/GrassDry/CutStubblePatch/CutStubblePatch_LOD1.glb
 [change] public/foliage/GrassDry/CutStubblePatch/CutStubblePatch_LOD2.glb
 [change] public/foliage/GrassDry/CutStubblePatch/CutStubblePatch_LOD3.glb
 [change] public/foliage/GrassDry/DryTuftFan/DryTuftFan_LOD0.glb
 [change] public/foliage/GrassDry/DryTuftFan/DryTuftFan_LOD1.glb
 [change] public/foliage/GrassDry/DryTuftFan/DryTuftFan_LOD2.glb
 [change] public/foliage/GrassDry/DryTuftFan/DryTuftFan_LOD3.glb
 [change] public/foliage/GrassDry/GoldenSparseGrass/GoldenSparseGrass_LOD0.glb
 [change] public/foliage/GrassDry/GoldenSparseGrass/GoldenSparseGrass_LOD1.glb
 [change] public/foliage/GrassDry/GoldenSparseGrass/GoldenSparseGrass_LOD2.glb
 [change] public/foliage/GrassDry/GoldenSparseGrass/GoldenSparseGrass_LOD3.glb
 [change] public/foliage/GrassDry/MownClippings/MownClippings_LOD0.glb
 [change] public/foliage/GrassDry/MownClippings/MownClippings_LOD1.glb
 [change] public/foliage/GrassDry/MownClippings/MownClippings_LOD2.glb
 [change] public/foliage/GrassDry/MownClippings/MownClippings_LOD3.glb
 [change] public/foliage/GrassDry/StrawLitterMat/StrawLitterMat_LOD0.glb
 [change] public/foliage/GrassDry/StrawLitterMat/StrawLitterMat_LOD1.glb
 [change] public/foliage/GrassDry/StrawLitterMat/StrawLitterMat_LOD2.glb
 [change] public/foliage/GrassDry/StrawLitterMat/StrawLitterMat_LOD3.glb
 [change] public/foliage/GrassDry/WheatStubbleRow/WheatStubbleRow_LOD0.glb
 [change] public/foliage/GrassDry/WheatStubbleRow/WheatStubbleRow_LOD1.glb
 [change] public/foliage/GrassDry/WheatStubbleRow/WheatStubbleRow_LOD2.glb
 [change] public/foliage/GrassDry/WheatStubbleRow/WheatStubbleRow_LOD3.glb
 [change] public/foliage/GrassTall/BentWildGrass/BentWildGrass_LOD0.glb
 [change] public/foliage/GrassTall/BentWildGrass/BentWildGrass_LOD1.glb
 [change] public/foliage/GrassTall/BentWildGrass/BentWildGrass_LOD2.glb
 [change] public/foliage/GrassTall/BentWildGrass/BentWildGrass_LOD3.glb
 [change] public/foliage/GrassTall/DryPrairieClump/DryPrairieClump_LOD0.glb
 [change] public/foliage/GrassTall/DryPrairieClump/DryPrairieClump_LOD1.glb
 [change] public/foliage/GrassTall/DryPrairieClump/DryPrairieClump_LOD2.glb
 [change] public/foliage/GrassTall/DryPrairieClump/DryPrairieClump_LOD3.glb
 [change] public/foliage/GrassTall/FeatherGrassClump/FeatherGrassClump_LOD0.glb
 [change] public/foliage/GrassTall/FeatherGrassClump/FeatherGrassClump_LOD1.glb
 [change] public/foliage/GrassTall/FeatherGrassClump/FeatherGrassClump_LOD2.glb
 [change] public/foliage/GrassTall/FeatherGrassClump/FeatherGrassClump_LOD3.glb
 [change] public/foliage/GrassTall/ReedGrassClump/ReedGrassClump_LOD0.glb
 [change] public/foliage/GrassTall/ReedGrassClump/ReedGrassClump_LOD1.glb
 [change] public/foliage/GrassTall/ReedGrassClump/ReedGrassClump_LOD2.glb
 [change] public/foliage/GrassTall/ReedGrassClump/ReedGrassClump_LOD3.glb
 [change] public/foliage/GrassTall/SeedStemClump/SeedStemClump_LOD0.glb
 [change] public/foliage/GrassTall/SeedStemClump/SeedStemClump_LOD1.glb
 [change] public/foliage/GrassTall/SeedStemClump/SeedStemClump_LOD2.glb
 [change] public/foliage/GrassTall/SeedStemClump/SeedStemClump_LOD3.glb
 [change] public/foliage/GrassTall/TallMeadowClump/TallMeadowClump_LOD0.glb
 [change] public/foliage/GrassTall/TallMeadowClump/TallMeadowClump_LOD1.glb
 [change] public/foliage/GrassTall/TallMeadowClump/TallMeadowClump_LOD2.glb
 [change] public/foliage/GrassTall/TallMeadowClump/TallMeadowClump_LOD3.glb
 [change] public/foliage/GrassTall/TuftedRushClump/TuftedRushClump_LOD0.glb
 [change] public/foliage/GrassTall/TuftedRushClump/TuftedRushClump_LOD1.glb
 [change] public/foliage/GrassTall/TuftedRushClump/TuftedRushClump_LOD2.glb
 [change] public/foliage/GrassTall/TuftedRushClump/TuftedRushClump_LOD3.glb
 [change] public/foliage/GrassTall/WildOatClump/WildOatClump_LOD0.glb
 [change] public/foliage/GrassTall/WildOatClump/WildOatClump_LOD1.glb
 [change] public/foliage/GrassTall/WildOatClump/WildOatClump_LOD2.glb
 [change] public/foliage/GrassTall/WildOatClump/WildOatClump_LOD3.glb
 [change] public/foliage/Weed/CloverPatch/CloverPatch_LOD0.glb
 [change] public/foliage/Weed/CloverPatch/CloverPatch_LOD1.glb
 [change] public/foliage/Weed/CloverPatch/CloverPatch_LOD2.glb
 [change] public/foliage/Weed/CloverPatch/CloverPatch_LOD3.glb
 [change] public/foliage/Weed/DandelionRosette/DandelionRosette_LOD0.glb
 [change] public/foliage/Weed/DandelionRosette/DandelionRosette_LOD1.glb
 [change] public/foliage/Weed/DandelionRosette/DandelionRosette_LOD2.glb
 [change] public/foliage/Weed/DandelionRosette/DandelionRosette_LOD3.glb
 [change] public/foliage/Weed/DockWeed/DockWeed_LOD0.glb
 [change] public/foliage/Weed/DockWeed/DockWeed_LOD1.glb
 [change] public/foliage/Weed/DockWeed/DockWeed_LOD2.glb
 [change] public/foliage/Weed/DockWeed/DockWeed_LOD3.glb
 [change] public/foliage/Weed/GroundIvy/GroundIvy_LOD0.glb
 [change] public/foliage/Weed/GroundIvy/GroundIvy_LOD1.glb
 [change] public/foliage/Weed/GroundIvy/GroundIvy_LOD2.glb
 [change] public/foliage/Weed/GroundIvy/GroundIvy_LOD3.glb
 [change] public/foliage/Weed/NettlePatch/NettlePatch_LOD0.glb
 [change] public/foliage/Weed/NettlePatch/NettlePatch_LOD1.glb
 [change] public/foliage/Weed/NettlePatch/NettlePatch_LOD2.glb
 [change] public/foliage/Weed/NettlePatch/NettlePatch_LOD3.glb
 [change] public/foliage/Weed/PlantainCluster/PlantainCluster_LOD0.glb
 [change] public/foliage/Weed/PlantainCluster/PlantainCluster_LOD1.glb
 [change] public/foliage/Weed/PlantainCluster/PlantainCluster_LOD2.glb
 [change] public/foliage/Weed/PlantainCluster/PlantainCluster_LOD3.glb
 [change] public/foliage/Weed/RagweedSprig/RagweedSprig_LOD0.glb
 [change] public/foliage/Weed/RagweedSprig/RagweedSprig_LOD1.glb
 [change] public/foliage/Weed/RagweedSprig/RagweedSprig_LOD2.glb
 [change] public/foliage/Weed/RagweedSprig/RagweedSprig_LOD3.glb
 [change] public/foliage/Weed/ThistleRosette/ThistleRosette_LOD0.glb
 [change] public/foliage/Weed/ThistleRosette/ThistleRosette_LOD1.glb
 [change] public/foliage/Weed/ThistleRosette/ThistleRosette_LOD2.glb
 [change] public/foliage/Weed/ThistleRosette/ThistleRosette_LOD3.glb
 [change] public/foliage/WheatUnderstory/BroadPlantainPatch/BroadPlantainPatch_LOD0.glb
 [change] public/foliage/WheatUnderstory/BroadPlantainPatch/BroadPlantainPatch_LOD1.glb
 [change] public/foliage/WheatUnderstory/BroadPlantainPatch/BroadPlantainPatch_LOD2.glb
 [change] public/foliage/WheatUnderstory/BroadPlantainPatch/BroadPlantainPatch_LOD3.glb
 [change] public/foliage/WheatUnderstory/ChickweedMat/ChickweedMat_LOD0.glb
 [change] public/foliage/WheatUnderstory/ChickweedMat/ChickweedMat_LOD1.glb
 [change] public/foliage/WheatUnderstory/ChickweedMat/ChickweedMat_LOD2.glb
 [change] public/foliage/WheatUnderstory/ChickweedMat/ChickweedMat_LOD3.glb
 [change] public/foliage/WheatUnderstory/FieldWeedSprig/FieldWeedSprig_LOD0.glb
 [change] public/foliage/WheatUnderstory/FieldWeedSprig/FieldWeedSprig_LOD1.glb
 [change] public/foliage/WheatUnderstory/FieldWeedSprig/FieldWeedSprig_LOD2.glb
 [change] public/foliage/WheatUnderstory/FieldWeedSprig/FieldWeedSprig_LOD3.glb
 [change] public/foliage/WheatUnderstory/RedCloverTuft/RedCloverTuft_LOD0.glb
 [change] public/foliage/WheatUnderstory/RedCloverTuft/RedCloverTuft_LOD1.glb
 [change] public/foliage/WheatUnderstory/RedCloverTuft/RedCloverTuft_LOD2.glb
 [change] public/foliage/WheatUnderstory/RedCloverTuft/RedCloverTuft_LOD3.glb
 [change] public/foliage/WheatUnderstory/RibwortPlantain/RibwortPlantain_LOD0.glb
 [change] public/foliage/WheatUnderstory/RibwortPlantain/RibwortPlantain_LOD1.glb
 [change] public/foliage/WheatUnderstory/RibwortPlantain/RibwortPlantain_LOD2.glb
 [change] public/foliage/WheatUnderstory/RibwortPlantain/RibwortPlantain_LOD3.glb
 [change] public/foliage/WheatUnderstory/TinyBlueFlowerClump/TinyBlueFlowerClump_LOD0.glb
 [change] public/foliage/WheatUnderstory/TinyBlueFlowerClump/TinyBlueFlowerClump_LOD1.glb
 [change] public/foliage/WheatUnderstory/TinyBlueFlowerClump/TinyBlueFlowerClump_LOD2.glb
 [change] public/foliage/WheatUnderstory/TinyBlueFlowerClump/TinyBlueFlowerClump_LOD3.glb
 [change] public/foliage/WheatUnderstory/TinyDaisyClump/TinyDaisyClump_LOD0.glb
 [change] public/foliage/WheatUnderstory/TinyDaisyClump/TinyDaisyClump_LOD1.glb
 [change] public/foliage/WheatUnderstory/TinyDaisyClump/TinyDaisyClump_LOD2.glb
 [change] public/foliage/WheatUnderstory/TinyDaisyClump/TinyDaisyClump_LOD3.glb
 [change] public/foliage/WheatUnderstory/WhiteCloverPatch/WhiteCloverPatch_LOD0.glb
 [change] public/foliage/WheatUnderstory/WhiteCloverPatch/WhiteCloverPatch_LOD1.glb
 [change] public/foliage/WheatUnderstory/WhiteCloverPatch/WhiteCloverPatch_LOD2.glb
 [change] public/foliage/WheatUnderstory/WhiteCloverPatch/WhiteCloverPatch_LOD3.glb
2026-05-03 12:43:28 +02:00
4d0febed2a Update scene document migration to support new foliage versions 2026-05-02 11:37:00 +02:00
89a9c8ddca Add validation test for invalid terrain foliage blocker masks 2026-05-02 11:35:14 +02:00
d62e467f9b Add terrain creation utility to validation tests 2026-05-02 11:35:14 +02:00
66567a7ba1 Test serialization of foliage blocker mask in project document JSON 2026-05-02 11:34:19 +02:00
0c7f8ab3db Add support for foliage blocker mask in project document serialization tests 2026-05-02 11:34:19 +02:00
3e4b227816 Update scene document serialization tests to include foliage quality version 2026-05-02 11:34:19 +02:00
f26c01eddc Add migration test for terrain documents missing foliage blocker masks 2026-05-02 11:33:30 +02:00
4e08d788c2 Test serialization/deserialization of foliage blocker masks 2026-05-02 11:33:30 +02:00
3f41d0da30 Test: Skip foliage generation in globally blocked terrain areas 2026-05-02 11:33:09 +02:00
cad4dc7fc1 Test: Add test case for applying foliage blocker mask brush patches with undo and redo 2026-05-02 11:32:49 +02:00
7843593639 Add tests for foliage blocker mask painting and clearing 2026-05-02 11:32:35 +02:00
ab6aba70d0 Add comprehensive tests for foliage blocker masks and update terrain resizing tests 2026-05-02 11:32:13 +02:00
e977999cc5 Refine foliage mask logic and add support for foliage blocker masks 2026-05-02 11:31:23 +02:00
bf127ab8f8 Include foliage blocker mask in scene bounds calculation 2026-05-02 11:30:59 +02:00
be865957f7 Initialize foliage blocker mask in RuntimeHost 2026-05-02 11:30:59 +02:00
13c02ec944 Import foliage blocker mask utility 2026-05-02 11:30:59 +02:00
8b1e049e4d Update warning message when no active foliage layer is selected 2026-05-02 11:30:23 +02:00
9ccecf45cd Feature: Add foliage blocker painting and clearing tools, and update summary count 2026-05-02 11:29:11 +02:00
84360e2da9 Adjust armed status message for foliage blocker tools 2026-05-02 11:28:55 +02:00
fe80b98bc5 Update status message for foliage blocker tools 2026-05-02 11:28:55 +02:00
62f0310af5 Add foliage blocker painted sample count calculation 2026-05-02 11:28:55 +02:00
6c632d6f58 auto-git:
[change] src/app/App.tsx
2026-05-02 11:28:23 +02:00
577121d92c auto-git:
[change] src/viewport-three/viewport-host.ts
2026-05-02 11:28:23 +02:00
c2c4a18527 Integrate foliage blocker mask values into viewport state and brush logic 2026-05-02 11:27:47 +02:00
ac2d4ff362 Initialize foliage blocker mask indices in ViewportHost 2026-05-02 11:27:47 +02:00
d187b0f600 Add foliage blocker mask value handling to brush stroke 2026-05-02 11:27:47 +02:00
516347b0e2 Update foliage layer ID assignment to use tool mask check 2026-05-02 11:27:04 +02:00
fff4916cb2 auto-git:
[change] src/viewport-three/viewport-host.ts
2026-05-02 11:27:04 +02:00
0673aa214b auto-git:
[change] src/viewport-three/viewport-host.ts
2026-05-02 11:26:35 +02:00
6008bff329 Implement and validate foliage blocker masks across document systems 2026-05-02 11:26:06 +02:00
e9adf9f37e auto-git:
[change] src/commands/apply-terrain-brush-patch-command.ts
 [change] src/core/terrain-brush.ts
 [change] src/document/migrate-scene-document.ts
 [change] src/document/scene-document.ts
 [change] src/geometry/terrain-brush.ts
 [change] src/geometry/terrain-mesh.ts
2026-05-02 11:25:15 +02:00
47defd9e03 auto-git:
[change] src/document/terrains.ts
2026-05-02 11:24:28 +02:00
62c4717748 Add tests for foliage render batch creation edge cases 2026-05-02 10:57:54 +02:00
04666940a2 Add foliage configuration to scene document JSON tests 2026-05-02 10:56:58 +02:00
7c5026bbad Ensure clearActiveBatches runs only when no batches are present 2026-05-02 10:56:58 +02:00
c2f1e585b8 Add tests for foliage quality settings in world settings 2026-05-02 10:55:31 +02:00
0b2a24903e Update test description for foliage render batches 2026-05-02 10:55:31 +02:00
b1bf7bf9ff Add comprehensive unit tests for foliage render batching, including LOD resolution, chunk culling, and grouping logic 2026-05-02 10:54:49 +02:00