branchrust_reboot/main/erosioncancel
59 Commits over 92 Days - 0.03cph!
tapering MaxCarveDelta off using multiple topology queries of different radii
adjust sediment and waterheight values with carve limits so water and sediment are also corrected
fixing erosion issues waterside and stripe artefacts
- corrected slope angle calculation that was causing striped carving at low
- introduced procedural carving limit that eliminates waterside carving and just limits max-depth elsewhere
moved some TerrainTopologyMap job utility methods into own class and also promoted local function to a static method, burst seems to hate local functions in this case
removed uneeded burst compatibility test attributes from methods, caused the owning class to be tested for burst compatibility
fixed editor-only memory leak in shorevectors that would happen with domain reload
moved heightmap carving part of erosion significantly sooner in the worldgen, post canyons/lakes but pre-rivers
- simplest way to avoid affecting roads/rivers/etc too much was to just do it first and let them override the results
- splatting still happens after all this, uses the original heightDelta for strength but the current slope delta for tapering
added editor debug command to force refresh foliage grids / decor spawning / lod grids / etc.
debug.forcerefreshlods
separated GridErosion heightmap carving from terrain splatting as two separate ProceduralComponent passes, gives more control to let rocks be placed nicely onto channelled terrain but then restrict splatting terrain onto them afterwards
- also re-ordered GridErosion to be before small cliff hill rocks as these were the main cause of floating rocks
2-week yolo merge from main
removed some jungle procedural components from empty procedural map
jobified splatting, takes a big chunk off of processing time
moved order of erosion to be between cliff placement and medium rock formation placement to get better seated rock placement
rebalanced terrain splatting around snow and sand to not be massively too broad
debug command wrapped in proper infdef + codegen
separated splatting for sand and snow again, debug render command, cleanup
erosion changes
- retuned erosion again to allow better channel carving, while maintaining control
- new method for terrain splatting that relies on calculating delta gradients from erosion heightmap delta, allows control to paint thin channels without painting large flat sections
another pass on erosion spaltting
- depeer gouges from erosion
- less intense splatting of gravel generally
- slope threshold to stop splatting onto larger flat sections at the bottom of hills
- cliff avoidance to match previous behaviour
adjusted splat ignoremask to include ocean and lake (using pre-existing Sand topology mask)
re-balanced erosion splat values to be less intense, included oceanside and lakeside to ignore mask to avoid wiping out beaches with stones
switched splat writing to iterate heightmap delta and write splat with normalized coords
- much better results, but needs jobifying as it's much slower
erosion texture fixes
- use proper splat types
- rebalanced splat values to use exponents
- don't splat monuments
added splatmap writing to the end of the grid-based erosion, re-used approach from old particle-based solution but with re-tuned values
- also rebalanced values again
remove unused watermap array from job
switched initial map prepare job to IJobParallelForBatch to reduce locking with parallel writer (temp alloc list of indices and add to write as batch per-job)
- also other various micro-optim
erosion tuning and fixes
- tweaked values again, bit more prominent
- splitting slope calc into its own job with tiling for better caching
- corrected error with flux calc where water was tending to flow in one direction
erosion adjustments
- fixed evaporation rate being stupidly high
- cache ocean indices on the start and refill the ocean each step, stops it seeping out the world border
- smoothstep sediment adjustment with water depth and threshold to stop erosion from high velocity deep water
- properly adjust water height by sediment adjustments
adjusted debug_erosion data dump to have resolution size in file name and also reference the data vis repo
more tuning and correcting velocity adjustment
removed unnecessary NoAlias attribute
fixes and tuning improvements
- corrected indexing mistakes that caused water to flow generally eastwards and slope angle to just be wrong
- water height threshold to stop ocean eroding seafloor
- sediment depositing uses timestep to help tuning be more consistent
- cleanup
some aggressive optimizations to vectorize better, mostly switching out repeated inline coordinate->index operations with single int2x4 operation - makes a difference with the loop count we're looking at