fix(ios): pin voxel render target scale & fix shadows - #48
Conversation
|
King of spain!! |
|
Confirming this fixes iOS shadow rendering on hardware. Device: iPhone 15 Pro Max, iOS 27.0 Before (stock 1.5.1): shadow rendering badly broken — large hard-edged dark regions with straight diagonal boundaries covering a big fraction of the frame, both outdoors and inside buildings, and independent of the day/night pin. Indoors it presented as a lit parallelogram sitting inside near-total darkness. After (this PR applied to 1.5.1): gone. Overworld and interiors render correctly. Method: applied this PR's diff to the 1.5.1 release zip ( One note that may help others landing here: engine PR bryanthaboi/gen1recomp#582 merged 2026-08-01 14:41 UTC, and the v0.1.56 IPA was published 2026-08-02 01:23 UTC. So current released iOS builds carry the Metal backend change without this mod-side adaptation — that skew window is what makes stock 1.5.1 break on iOS today. Understood that this gates the sun pass off on iOS rather than making it work under Metal, so iOS loses cast shadows for now. Given the current state is unusable, that reads as a clear net improvement — but happy to test a follow-up that tries to restore them if one appears. |
|
Follow-up from testing this on device — flagging a regression I think this PR introduces, since it is easy to miss.
The consequence is silent: the The comment directly above the allocation is also now inaccurate: -- the depth canvas is sized with its colour, so a window resize
-- reallocates the pair together and they can never disagree
slotHeld = { canvas = c, w = w, h = h, depth = newDepth(w, h) }They can now disagree — not on dimensions, but on dpiscale. Pinning |
|
Still not the right approach @castdrian @bryanthaboi! Fixing in #75 |
…maticShape#48 The backplate work had dropped the OverworldBattle.lua half of PR DramaticShape#48's iOS fix: the isIOS() guards that skip snapHUDs (which renders upside-down and opaque on iOS) and fall back to the engine's own opaque HUD panels. - add isIOS() helper - update(): skip snapHUDs on iOS; skip the snap-failure warning there too - drawTextArea(): early-return (engine default, opaque) on iOS - drawHudPanels(): draw opaque white HUD rects (alpha 0.84) and return on iOS The PixelCanvas / ShadowMap.available(false) / TiltShift / Voxel3D parts of PR DramaticShape#48 were untouched and remain intact. On iOS the HUD/textboxes are now whatever PR DramaticShape#48 specifies (opaque), matching the upstream behaviour. Co-Authored-By: Hermes Agent <noreply@hermes-agent.com>
Ships the iOS HUD/textarea exception (PR DramaticShape#48 restore), the XP bar scaled to the player HUD (ported from unxpected-uxp's QoL mod, with permission, key BattleArtXpBar), and the manifest with the new github app id so the in-game mod manager can offer the 1.68 -> 1.70 update. Co-Authored-By: Hermes Agent <noreply@hermes-agent.com>
depends on bryanthaboi/gen1recomp#582
but changing ios to use metal as gpu backend fucked a lot with the shader stuff and changed the way canvases behave