121 Commits over 549 Days - 0.01cph!
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
Only delete blob tool preview on server
Refactored triplanar shader
Deleted old marching cubes stuff
Added 3D SDF primitives
Some 2D refactoring
Tabify
WorldQuality refactor to support 3D worlds
Abstracted out SdfArray from Sdf2DArray
Implemented Sdf3DArray
Added Sdf3DVolume resource
Big abstracting refactor
Mining demo renaming SDF materials to layers
Sdf3D Array, Chunk, World, stubbed MeshWriter
Sdf3DMeshWriter structs and enums
Break up MeshWriter classes, basic example for generated 3D cases
3D cases code gen boilerplate
First pass at finding edge loops
Generate code for adding triangles
Fixed degenerate triangles
Fleshed out the rest of Sdf3DMeshWriter
Flipped triangles
Updated blobtool
Fixed some bugs with generated vertices
Mesh generation is multithreaded again
Smoother normals
Sdf modification methods are now async
Allow synchronous modifications too
Some thread safety, including copy samples before generating mesh
Use a lower resolution collision volume
Limit how much work is done on the main thread each tick
Fixed garbled triangles when subtracting
Fixed subtract just lasering in a straight line
Fixed texture source layers not clearing properly client-side
Fixed errors when clearing a world
Fixed layer _Params attribute not being set correctly for absent chunks
Fixed possible warning on client
Some more asset cleanup
Updated README.md
Layer texture referencing cleanup, example shader has full material control
Big refactor, allow passing SDFs as texture attributes between layers
Added pivot parameter to TextureSdf constructor #1
Fixed crash on deleting an Sdf2DWorld
Fixes sboxgame/issues#3276
Allow more control over SDF layer quality