Files
nxnative-easy/docs
seedds efb72ec46c Super Mario Odyssey: the Cap Kingdom fog parts around Mario again
On the Switch the ground fog opens around Mario as he walks through it. The effect is a small fluid
simulation: 256x256 and 128x128 RG16F velocity fields, a blur and a blended composite. Its only input
is a point-sprite splat per mover, drawn with agl's alPointSpriteShader. The vertex shader writes
gl_PointSize = min(size, c0[0x610]), and the host left that offset of the NVN driver segment at 0.
Every splat had size 0, so the fields stayed exactly zero and the fog never moved (reported on an
iPhone; the Mac did the same).

- nvn_mtl.m: the graphics stages' c0 driver segment gets the largest point size (2047, Maxwell's
  limit) at 0x610. It is not the SetPointSize value: the game sets that to 1, and one-pixel splats
  came out with zero disc weight. The splats now ask for 3-18 px, the fields hold velocities up to
  +/-44, and the fog clears around Mario on the Mac.
- docs: 04-graphics.md gets the offset in the driver-segment table and a write-up, with a note that
  dmsh_build.py's drv_reads scan only sees fragment-shader reads. development.md gets a Fog note under
  Odyssey.

Checked on the Mac: the smoke test of the other seven games shows only their usual red lines.
2026-10-18 13:14:31 +08:00
..