86 Commits over 214 Days - 0.02cph!
Fixed mesh / textures not always updating
Fixed box SDF distance calculation
WIP way to rebuild chunks from a list of modifications
Fix sphere SDF 3D bounds
Keep chunks around when clearing
Misc changes
Fixed SendModifications memory leak (#20)
Refactor net writing / reading to support general serialization (#19)
Use BinaryReader / BinaryWriter (#19)
Update chunk transforms in `SdfWorld.Update()`
Fixes #18
Some documentation for the new API
WIP allow creation of SdfWorlds in menu realm
Rename Tick to Update
Slight tweak to help reliability (#17)
Avoid duplicate vertices when clipping 2D SDF meshes
Skip generating normals for collision meshes
Placeholder materials in mining demo
Collision mesh vertex merging (#13)
If a 2D layer uses one material for all faces, simplify mesh generation
Fix broken normals in 2D SDF meshes #16
Some initial work for 2D edge styles
2D: smooth cut face normals across chunk boundaries
First pass at edge styles
Might need to rethink this, large edge radii cause problems
Regenerate SDF meshes on resource change
2D: Get rid of inset bias for rounded / bevel edges
2D: Rewriting mesh gen to be edge loop based
Identify positive vs negative edge loops
Find which positive loop contains each negative loop
PolygonMeshBuilder
Formatting
Refactoring, skeleton of new 2D meshing strategy
CutMeshWriter
Chunk mesh clipping
.addon to .sbproj
New mesh writer almost working
Fixed rounded edges, dodgy clip fix
Bug fixes
Fixes
Another fix
More fixes, UVs for cut faces
Small fixes
Keep layer width consistent
New polygon closing method
More consistent position sorting for sweeps
Another fix
Debugging
A bit more stable
Refactor, stability
Non-reflex angles can split
Allow merges in either direction
Trying to find isolated polys is buggy, just do them all together
Slight optimization
Collision mesh generation
Remove debug
Some cleanup
WIP add vertices to limit smooth normal blend distance
Fixed off-by-one halving max bevel width
Moved PolygonMeshBuilder to its own package
Remove debug again
Fixed deleted SdfWorlds not deleting chunk SceneObjects (#12)
Better exception handling during modify chunks (#8)
Fixed clearing race condition (#8)
Fix dropped modification warning on clear
Some thread safety on transform update
Got rid of some vestigial code
Clients request missing modifications, server sends heartbeat messages
Fixes #5
Fixed waiting for main thread between modifications, fixes #6
Some safety when clearing, #7 seems fixed
Inject settings page to spawn menu on activate
Early out for BiasedSdf3D.SampleRangeAsync
Basic blob tool settings page
Use object-space normals for triplanar shaders
Refactor using GameTask.WorkerThread()
Small cleanup
TextureSdf: send path instead of resource ID for now
2D SDF quality preset tweaks
Send more SDF updates per message
Working on letting chunks process batches of updates in parallel
Triplanar shader now uses object space
Allow changing the transform of an SdfWorld again
Fixed SdfWorld.ClearAsync()
Implemented SdfWorld.ClearAsync()
Just mark old synchronous API as obsolete
Fixed race condition in Sdf2DArray.WriteTo( writer )
Some cleanup
Fixed some mesh updates not happening until the next modification
Async refactor
Fixed dodgy rebase
Quality tweaks for performance
WIP make ISdf3D net read / writable
SDF net writing refactor, support for ISdf2D
SDF modification list networking
Chunks are no longer entities
New networking seems to work!
Server-side chunks are only modified if they have collision
Build meshes for chunks closest to players first
ISdf3D logging
Material tweaks
WIP reorganize how meshes are updated
Replace scorch mask texture
Working towards new way of networking 3D SDF worlds
ISdf3D.SampleRange now takes a transform instead of BBox
Implement ISdf3D.SampleRange for cellular noise
3D SDF name consistency
Added Sdf3D.Bias( otherSdf, scale )
Added ISdf3D.SampleRange() with a default implementation
WIP Cellular noise SDF primitive
Max network write rate is higher for 2D chunks
Limit chunk update rate over the network
Include shader includes in package
Updated shaders after Facepunch/sbox#1041
Null mesh check in Sdf2DMeshWriter
Updated addon tags / descriptions
Use 3D white texture as a default for 3D chunks
Documented all public members of libsdf