1,171 Commits over 518 Days - 0.09cph!
moved some vertex processing into multi-threaded generation
fixed triangle -> vertices/indices processing, each edge holds a cache of indices (max of 4 that it can produce in any configuration) and vertices check this cache before adding their own
- EdgeKey now just holds the interpolated vertex and an order-independent hash of the grid corners it is defined by
- Lets us weld vertices within our own tolerance, roughly halves verts and allows smooth normals to be calculated properly (we lose hard edges a bit with this, but we can solve that procedurally later if we want)
merge from the correct gui_sculpting branch
reduced triangles->vertices/indices processing by roughly half by making Triangles/EdgeKeys readonly struct and only calculating the hash once on creation, done in parallel when they're created and reduces the overhead in the single-thread processing stage
improved triangles->indices generation performance a bit, mainly trying to make it somewhat readable
sped up marching cube triangle generation by 10x by using local list batches with IJobParallelForBatch to reduce NativeList<>.ParallelWriter locking adds
(~0.35ms -> ~0.05ms)
Indirectly iterate modifiers with separate list of modifier types that servers as history
trying to make sense of shit code I wrote a year ago
got test scene working properly
merge from ice_sculptures/sdf_sculpting
undid some questionable shader changes, need a way to supply a triplanar anchor for sculptures or it pans when rotating them in-gui
merge from ice_sculptures/gui_sculpting
- bit broken still
sculpture item not hidden
reduction in sail position influence on thrust, less than half what it was but still double the engine's
- still impacts how you place them on the baot but results in less situations where it feels like the boat is not behaving as it should
setting global shader params update flag after regenerating textures for dirty DeepSea data flags
use a realmed trace for TriggerParent.HasObjUnderFeet so they don't freak out in-editor at speed
PlayerBoat uses HasDriver to check AnyMounted, corrects flipped behaviour not running
merge from anchored_boat_mass
increase boat mass to arbitrarily high value when anchored, won't be pushed arround much but maintains buoyancy behaviour as it's acceleration based
made ProceduralMapEmpty more empty
merge from deepsea_terraintexturing_leak
properly destroying leaked deepsea shorevector / coarseheight / waterheight textures when re-generating
handle uninitialized heightmap properly for shorevector gen (happens with scene camera in some cases)
small engine fuel always accessible from pie menu, proxy func changes the order if you're looking at the fuel access collider to prioritize it
merge from engine_improved_fuel_access
halved shore vector generation time in editor with batched water depth queries (250ms off the time to get into playmode)
- we should jobify the DistanceField stuff as well, but this is a quicker win
flipped steering wheels can't be mounted and flipped playerboats dismount all steeringwheels as well
merge from boat_flipped_wheel_mounting
merge from sorted_protobuf_gen
sort ProtoMessage Messages for codegen consistency
corrected Sail's CacheIsWindBlocked check to handle realmed colliders
- tried batching this but there's not enough casts for it to be worth the overhead
boat engines don't apply force when boat isn't in water
merge from boat_better_shallow_water_behaviour
shallow water rebalance
- better depth values for speed reduction and unbeaching behaviour
- increased unbeaching accel, applies fraction of it upwards to separate better
- increased turning torque by 50% and raised floor of its velocity scaling
including water depth in shallow water velocity scaling
merge from deepsea_height_data
undid temporary boat code, now using heightmap queries regularly
simple deepsea/mainland heightmap query split (5th iteration of it)
- currently limited to positional queries, normalized coord queries map directly to mainland data still
- also fixed issue with deepsea shorevectors where they weren't being rotated into worldspace properly and still pointed in localspace directions
rebaked tropical scene shore data to include heightmaps
correcting for height data normalization, denormalize with baked info and renormalize to current world size on application
- lets us be consistent with how we interpret height data betweek deepsea and mainland
HeightData baking support
Two WIP behaviours that need unifying, beginning to fix unbeaching forces as well as implementing a MaxVelocity modifier in shallow water
- both are querying shore vector and water depth information from the same points, we should do this in one place and
- need to fix querying water depth as we don't have height info in the deep sea and it breaks it, don't want to do raycasts so we need to blit this in as well really