Skip to content

Open Nectar 0.4 - Graphics Mods

Choose a tag to compare

@SSunnKing SSunnKing released this 10 Sep 08:03
· 51 commits to main since this release

Graphics
A Graphics page in the F1 menu, with every effect switchable. The port has to keep running on modest hardware the reference machine here is a GTX 1050 so nothing on this page is mandatory, and everything applies as you move through it, against the scene behind the menu.

  • Depth of field. The focus plane follows Olimar. What sits at his distance stays sharp; what is nearer or further falls away. Four steps, Off through Strong, and the sharp band is measured as a fraction of how far the camera is from him, so it behaves the same in the close follow view and the far one.

  • Ambient occlusion. Contact shadows in creases, under leaves, where a Pikmin meets the ground. Computed from the depth buffer alone — the port has no G-buffer — at half resolution with a depth-aware blur.

  • Bloom. Three named steps rather than a slider, because bloom looks wrong across most of the range a slider would offer.

  • Antialiasing. FXAA, applied to the finished image. Deliberately not MSAA: Pikmin's undergrowth is alpha-tested quads, and MSAA does nothing for those edges because they are not geometry.

  • Colour grading, with gamma, brightness and saturation.

  • Fog: the game's own, which the port had been discarding. GXSetFog was an empty stub: the game was sending fog colour and distances every frame and the port was throwing them away. It is back, applied where the console applied it. There is a toggle, and On is the original.

  • Texture filtering, up to 16× anisotropic. This one was not what it looked like: the port had no mipmaps on any texture at all, so distant ground was not blurry, it was shimmering. The setting now builds the chains, and changing it re-applies to everything already loaded rather than waiting for the next load.

Where these are applied changed too. The post-process pass used to run at the end of the frame, by which time the interface had been drawn into the picture and had overwritten the depth buffer the effects read. It now runs where the world ends and the interface begins, so the HUD stays sharp and the effects measure the world instead of whatever was left behind. Ambient occlusion had been reading that overwritten buffer since it was written, quietly, because occlusion at the wrong distance still looks like occlusion.

The attract movies play
Leave the title screen alone and the pre-rendered movies now decode and play, in full, with their own sound. The title music fades out for them and comes back afterwards.

Laptops with two graphics chips
On a laptop with switchable graphics, the game was running on the processor's integrated GPU while the dedicated card sat idle. That is the default for any program that does not ask otherwise, and this one was not asking.

It asks now, on both platforms — they need entirely different mechanisms — and only where the hardware is actually present, so machines without a discrete GPU are unaffected. The log line [PC Port] GPU: reports which one got the context.

Memory
Entering a stage used about 4 GB. It now uses about 600 MB, and stops growing.

Two leaks, both from the same root: the game's allocations go to the C heap rather than to its own arenas, so resetting an arena freed nothing. One abandoned a 245 MB block on every section change; the other never deleted a GL texture in the port's entire lifetime.

Smaller things
The Mods row in the F1 menu drew (null) next to itself. It now reads Open > like the other submenu rows.

Still the same
You supply your own copy of Pikmin (USA, Rev 1). No game data ships here.