You are viewing a potentially older version of this package. View all versions.
appxpy-DSPSwarmDrawFix-1.2.0 icon

DSPSwarmDrawFix

Fixes the invisible Dyson Swarm on macOS (CrossOver/D3DMetal)

Date uploaded a month ago
Version 1.2.0
Download link appxpy-DSPSwarmDrawFix-1.2.0.zip
Downloads 41
Dependency string appxpy-DSPSwarmDrawFix-1.2.0

This mod requires the following mods to function

xiaoye97-BepInEx-5.4.17 icon
xiaoye97-BepInEx

BepInEx5.4.17 mod plugin framework, Mod框架

Preferred version: 5.4.17

README

DSPSwarmDrawFix

Fixes the invisible Dyson Swarm when playing Dyson Sphere Program on macOS via CrossOver with the D3DMetal graphics backend.

Without the mod the swarm's solar sails just don't render, while the rest of the game looks fine. With it, the swarm shows up as it should.

Harmless on other backends (DXVK/Windows) — it renders identically there.

If the mod ever fails (for example after a game update), it logs an error once and falls back to the game's own rendering instead of breaking anything.

Settings

Rendering / NearSails — how to draw sails you get close to, which the game renders as a solid mesh rather than a flat sprite.

  • Auto (default) — draw them when you're actually near the swarm
  • Off — never draw them; sails stay flat up close
  • Always — always draw them; costs a lot of frame rate on a large swarm

Leave this on Auto unless you have a reason not to.

On 1.1.0 and your frame rate fell as the swarm grew? That's this setting — update.

Installation

Install via r2modman/Thunderstore Mod Manager, or drop DSPSwarmDrawFix.dll into BepInEx/plugins/.

Source: https://github.com/appxpy/DSPSwarmMac

Changelog

  • 1.2.0 — fix a large frame rate drop on big swarms introduced in 1.1.0; add the NearSails setting
  • 1.1.0 — fix near sails as well
  • 1.0.0 — initial release

CHANGELOG

1.2.0

  • Fix major performance regression introduced in 1.1.0. The near-sail path drew the entire swarm as full solar-sail mesh instances every frame, so frame cost grew linearly with swarm size — large swarms dropped from 60 to 30 FPS. Near sails are now gated: the pass runs only when the camera is actually within 2500 units of an active sail orbit, which in practice is almost never.
  • New config option Rendering / NearSails: Auto (default, gated), Off (never draw near sails), Always (old 1.1.0 behaviour).
  • Replaced per-frame FieldInfo.GetValue reflection with Harmony FieldRef accessors — no more boxing of sizeInMat every frame.
  • Cache shader property IDs via Shader.PropertyToID instead of re-hashing name strings on every SetBuffer/SetVector.
  • Release GPU buffers on plugin unload instead of leaking them across save reloads.
  • The identity buffer is no longer padded to a 65536 minimum, and is not allocated at all while the near pass is gated off.

1.1.0

  • Fix near solar sails (within 2.5 km) as well: DysonSwarm.DrawModel now draws all sails with a plain instanced call and an identity _NearIdBuffer, bypassing the append-buffer counter / CopyCount / indirect-args path that is unreliable on D3DMetal.

1.0.0

  • Initial release: far solar sails drawn as chunked indexed triangles (fixes invisible swarm on CrossOver/D3DMetal).