Release Notes

3.0 - Mesh Cleanup & Runtime Automation (Upcoming)

✨ Headline Features

  • Mesh Cleanup: an opt-in post-carve pass that merges CSG slivers and scaffolding cuts back into whole polygons and re-triangulates them cleanly, dramatically reducing triangle counts. Comes with a ladder of modes: Safe (never touches your original triangulation or UVs), Balanced (merges continuous surfaces, protects UV seams), Aggressive (merges everything coplanar), and Global (follow the project-wide default). Every rebuilt region is validated against the original; worst case is “some areas stayed messy”, never “my mesh has a hole”. Also heals T-intersection cracks natively. Read all about it in Mesh Cleanup.
  • Runtime Auto-Recarving: the long-promised Runtime Change Watcher shipped! The new PoseidonRuntimeService queues and merges recarve requests, tracks former/current neighbors, returns allocation-free CarveHandles, and raises CarveStarted/CarveCompleted events. The new PoseidonRuntimeWatcher component detects transform changes and enable/disable events for you. Strictly opt-in, as always. See Runtime Carving.
  • Anchor-Relative Carving: world-space carve math is now computed relative to an anchor near the meshes, so carving far from the world origin no longer loses precision or constantly rebuilds. Pure translations no longer regenerate world-space geometry either. Basically, no more holes on big levels.
  • Themed Inspectors: the Poseidon inspectors were reskinned for 3.0. The new default is an Art Deco look (Deco), joined by two more flavors — Greek (warm stone, meander borders, column ornaments) and Chart (a nautical survey chart, plotting grid and scale bar included) — while the pre-3.0 inspector lives on as Classic. Switch anytime via Edit → Preferences → Poseidon → Inspector Theme, or right-click a Poseidon header and choose Switch Theme. Themes cover every Poseidon editor: the component itself, the Runtime Watcher, and the Carving Group components.

⚡ Performance

  • A huge allocation overhaul: pooled and reference-counted triangles, live meshes, and carve buffers. Steady-state carves now allocate almost nothing.
  • Much faster Octresius octree construction; smaller internal Triangle representation; UVs projected once instead of per-triangle.
  • UV3/UV4 and Vertex Colors are now excluded unless re-enabled via POSEIDON_USE_EXTRA_UVS / POSEIDON_USE_VERTEX_COLORS (UV2 always ships, since Unity lightmaps with it). This is done to make the size of a triangle smaller which makes things faster on average, but you can always re-enable those vertex attributes if your project actually uses them.

New Features & Changes

  • Added Carving Groups: fence a hierarchy of Poseidons into an island that carves internally but ignores the rest of the world, toggleable with the component checkbox. Group References let one island span multiple hierarchy branches, asmdef/asmref-style. Passive at runtime (nothing recarves until you ask); RecarveMembers() applies an island toggle on demand. See Advanced Features.
  • Added BoundaryHandling (Split/Preserve): Preserve keeps original triangles whole at intersection boundaries and only removes fully interior ones. Ideal for hull generation and kitbashing.
  • Added PoseidonHooks: register skip predicates to exclude objects from carving, and subscribe to OnMeshFinalized to consume generated meshes from external code.
  • Added an experimental UModeler integration bridge: pauses carving on an object while you’re actively editing it in UModeler, then re-syncs and recarves once you exit, so the two tools don’t fight over the same mesh. Opt-in via the POSEIDON_UMODELER_INTEGRATION scripting define.
  • Added a Photon Quantum integration bridge: forwards each carved mesh onto the object’s QuantumStaticMeshCollider3D. Opt-in via the POSEIDON_QUANTUM_INTEGRATION scripting define. See Advanced Features.
  • Added a configurable project-wide ‘Transform Changed Epsilon’ in Poseidon Settings.
  • The themed inspectors come with new controls: labels scrub numbers when dragged (like stock Unity fields), UV Rotation can render as a rotary dial, and each material’s UV settings live in a compact card whose columns wrap as the inspector narrows instead of clipping. The Advanced tab is clustered into Carve Properties and Post-Carve Cleanup, and Flip All Faces moved to the Geometry tab beside Facing. Optional flourishes (rounded corners, the rotation dial) are gathered under a single Inspector Features preference.
  • The Mesh Cleanup checkbox dropped “(Experimental)” from its label — the help text still carries the caveat.
  • The editor’s background progress bar now tells you what’s actually carving: the current mesh, the neighbor it’s carving against, and queue position (e.g. Wall × Cannonball (3/12)). Custom progress listeners can opt into the richer data via IProgressReactor — existing float-only listeners keep working unchanged.
  • Removed the dead DLL-era Progression interface layer, unused since the source-available migration.
  • Removed the legacy per-neighbor prune stage (superseded since 1.2 by group-based pruning) and its unused PruneAlways escape hatch.
  • The standalone ‘Repair T-Intersections’ pass is superseded by Mesh Cleanup and hidden behind the POSEIDON_ENABLE_TJUNCTION_REPAIR define.
  • Removed ‘CarveScope’ and the Strategy carve parameter (Layered mode handles everything Simple mode did).
  • Updated for Unity 6.4+ and the EntityId system that’s replacing the old InstanceId system.
  • Removed the ‘empty’ legacy DLLs. This means nothing if upgrading from 2.1, but if upgrading from anything older, you’ll have to either delete your DLLs manually or just delete the package and re-import it.

Bug Fixes

  • Fixed Poseidons constantly rebuilding at large distances due to an overly tight epsilon.
  • Fixed overlapping surfaces sometimes carving differently between sessions (deterministic tie-breaking).
  • Fixed holes appearing for nearly overlapping faces whose centroids fell in an epsilon ‘dead zone’.
  • Stopped generating empty mesh colliders when a Poseidon is completely enclosed inside another mesh.
  • Hardened runtime carving against ‘Enter Play Mode without Domain Reload’.
  • Fixed carve progress occasionally running backward during budgeted carves — including momentarily reading 0% right before completion. Progress (on operations, handles, and the editor progress bars) is now guaranteed monotonic from 0 to 1.
  • Fixed a failed carve leaving a ghost “running” task in the Background Tasks window forever; failures now resolve the task with a Failed status.
  • Fixed canceling a carve sometimes logging ‘Progress item not found’ errors on the next carve.

2.1 - Source Available

  • Switched from a series of pre-baked DLLs to source-available code: the whole tool is now plain C# in two asmdefs (Runtime/Editor).
  • Added a completion callback to each Poseidon, which allows you to know when a carve is completed on that object.

Upgrade Notes

  • Some files (like our Settings files) got new guids, which may cause meta file changes in your project after upgrading.
  • The old DLLs are still included in the package but empty, so upgrades don’t produce duplicate code. They’ll be removed in a future release.

2.0 - Poseidon Modernization

🚨 Breaking Changes

  • Deprecated and removed the Poseidon strategy settings (Simple/Layered) by consolidating everything into Layered Mode (which supports everything Simple mode could do before).
  • Moved the Mesh AutoImport setting from a ‘per-user’ setting to a ‘per-project’ setting.

New Features & Changes

  • New modernized Scene Overlay that works properly in newer versions of Unity.
  • Object Space UV Triplanar Rewrapping.
  • Added Force Rebuild All to the Poseidon script context menu; exposed Remove and Revert Mesh and Rebuild Poseidon for programmatic use.
  • (Experimental) Added a setting for previewing carves in prefab mode.
  • Migrated from Unity 2019 to Unity 2022.3 as the base supported version.

1.3 - Bug Fixing Patch

  • Fixed a large number of bugs reported by users - most of which deal with overlapping/coincident polygons or other odd cases.

Bug Fixes

  • Coincidence Fix: Added Conormality (triangles pointing the same way) to the definition of coincident polygons (previously, overlapping triangles pointing in opposite directions would be classified incorrectly).
  • Coincidence Fix: Fixed issues where “roof” polygons were being wrongly classified as “outside” due to raycasting issues.
  • Coincidence Fix: Fixed an issue where where axis aligned coincident triangles could not correctly decide if they were inside or outside.
  • Fixed three separate issues around coincident polygons
  • Added support for large meshes (greater than 65535 vertices). Previously, meshes with large numbers of vertices would explode due to index overflow. Large meshes will now use 32-bit index format, so they will take up twice as much disk space to store the final carve.
  • Meshes with extremely tiny triangles now properly carve

1.2 - Layered Mode and Hole Patching Bugs

New Features & Changes

  • Added Layered Mode as an official global Poseidon mode (previous was an experimental mode)
  • Now supports both inward and outward facing geometry in all modes (Simple, Layered)!
  • Removed Legacy mode and all legacy operations from libraries
  • Made it so that Outward Facing Objects take precedence over Inward Objects on the same layer (previously, Inwards had precedence)
  • Added “Protrude Mode” advanced property for odd complicated scenarios involving 3+ objects with different facings.
  • Changed carving across multiple layers to prune triangles only after handling groups of carvers. This cleans up situations where polygons of a carver were missing after carving multiple objects.
  • Added a Mark Entire Active Scene as Dirty button in the Poseidon Preferences for situations where you may want to recompute an entire scene.
  • Added a Rebuild Poseidon option to the Poseidon Inspector context menu to force a single rebuild.

Bug Fixes

  • Fixed issues where floating polygons would appear when carving complicated meshes
  • Fixed subtle issues where tiny holes might appear in geometry with complex meshes
  • Fixed issues with async progress bar showing up at wrong times and never clearing on older versions of Unity
  • Fixed a bug where some hierarchy crawling code was running at Runtime and causing performance degradations in large scenes with runtime hierarchy changes
  • Fixed an issue where in some cases, the Poseidon’s dirty flag would never clear and the object would rebuild forever once dirtied

1.1 - Runtime Support & Asynchronous Carving

January 22, 2021

New Features:

  • Reworked entire underlying architecture to support a cleaner, stage-based logic that should be more stable and run significantly faster.
  • Now Supports Asynchronous Carving, where the carving of Poseidons in Editor now occurs in a frame-divided way. This no longer freezes the editor when doing expensive carves, but lets you continue to work while carving happens in the background.
  • Released initial version of Poseidon Runtime, build atop the new asynchronous carving system, where users can manually create a carve operation at runtime, specifying a frame budget, and being able to run it themselves.
  • Added experimental support for Inward and Outward Facing Poseidons using a Layered Mode (still experimental, may be greatly changed/replaced in the future).

Other Improvements:

  • Examples: Added ‘Scene 5’ - Runtime Support to showcase running the Poseidon carves at runtime.
  • Examples: Added ‘Scene 6’ to show potential carves using the Layered Mode
  • Performance: Many significant improvements, especially when using Octresius or Auto carving modes.
  • Progress: Created cleaner Progress reporting classes, and found ways to smooth out progress tracking.
  • Inspector: Added an additional UI warning to notify users if a Poseidon’s mesh isn’t Read-Write Enabled.
  • Unity 2019.x: Added support for the bottom right Async Progress Bar. Deprecated old modal progress bar.
  • Unity 2020.x: Added support for Background Task / Progress bar window
  • Inspector: Added a Log All Rebuilds button to the Tools section.
  • Fixed a bug where “disabled” objects would still carve against enabled carvers.
  • Fixed a bug where Poseidons would freak out when loading scenes where MeshFilters no longer had valid meshes.

Known Bugs:

  • Asynchronous Carving doesn’t reset the current editor carve if you continue to change objects. It will eventually catch up to where you are, but it might look weird if you turn off deferred mode.

Upgrading: Should be forward compatible with older versions.

1.0.2 - 2020.x Patch (Not Released Publicly, but distributed through Discord)

Added compatibility for Unity 2020.x builds.

1.0.1 - 2019.3 Patch

Minor release to improve architectural changes, fixing issues with flat UI in 2019.3 and a few minor bug fixes.

1.0 January 29th, 2020

Initial Release