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
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 swarmOff— never draw them; sails stay flat up closeAlways— 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
NearSailssetting - 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.GetValuereflection with HarmonyFieldRefaccessors — no more boxing ofsizeInMatevery frame. - Cache shader property IDs via
Shader.PropertyToIDinstead of re-hashing name strings on everySetBuffer/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.DrawModelnow 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).