Skip to content

Multiplanar ZM#5387

Draft
Lohikar wants to merge 7 commits into
NebulaSS13:devfrom
Lohikar:multiplanar_zm
Draft

Multiplanar ZM#5387
Lohikar wants to merge 7 commits into
NebulaSS13:devfrom
Lohikar:multiplanar_zm

Conversation

@Lohikar

@Lohikar Lohikar commented Jun 15, 2026

Copy link
Copy Markdown
Member

This generally reworks how ZM renders: depths now consist of multiple render slices, which are summed into 'zsum' objeccts for purposes of alpha masking. Adding new render slices is significantly easier than it used to be, and it is now possible to support things like darksight/ghostsight, emissives, and planar lighting effects in ZM. MZ checks have also generally been standardized around the ZM helpers instead of bespoke (slightly different) logic in a few places.

changes:

  • ZM now renders atoms in groups of render slices, including a lighting render slice.
  • Shadower objects are now masked using the atoms on their associated slice, allowing space to shine through at full brightness.
  • Mimic planes are now managed by plane master objects for clarity and ease of definition.
  • Z-AO rendering now uses explicitly planed overlays for layering.
  • Elevator mimic is now reliable.
  • Atoms becoming visible when not having been under a z-turf in the last 10 seconds now correctly glide.
  • ZM has been given more debug logging, and the analyzer now checks more internal state (like z-stack integrity).
  • ZM now has a concept of persistent Z-flags that survive ChangeTurf, used for BOUNDARY and OVERWRITE.
  • ZM now ticks 4 times per tick check for improved efficiency.
  • Mimics occluded by non-z turfs (but not yet destroyed) are now hidden from right-click.
  • Opaque z-turfs can now opt into hiding below atoms from right-click.
  • Examining a mimic now also shows how deep that atom is.
  • ZM now validates that the specified ZM plane range is valid at compile-time.
  • General correctness fixes.

The way the plane master objects are being initialized here is not necessarily ideal -- it's largely a result of O7 just not really having a graceful way to do this. While I do want to keep the mimic master code as close as possible to the O7 version of it, I'm open to better approaches than CreatePlanesFor().

This PR is incomplete (but fully functional), further optimizations to shadowers are being tested.

@Lohikar Lohikar changed the title zm: Multiplanar ZM Multiplanar ZM Jun 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant