github FulGerNet/rePOP reSOTv0.4.4
reSOT v0.4.4

latest release: reSOTv0.5.0
3 days ago

reSOT v0.4.4

A big performance release. The direct renderer is now on by default on every
renderer, most of the retail game's drawing skips the old Xbox command
interpreter, and the game and the renderer now work in parallel.

On the test PC (Windows, retail, Vulkan, RTX 3060, 225% internal resolution),
in a heavy scene of about 1,600 draws a frame:

  • about 64 fps before this release, about 143 fps now
  • an empty view runs at about 700 fps

Windows demo and retail executables and the Android APK are version 0.4.4
(Android versionCode 14). As always, you need your own supported Xbox game files.

Performance

  • Direct renderer on by default, on every renderer. Direct3D 11, Direct3D 12,
    Vulkan and Android. The games' Direct3D routines hand reSOT's renderer the draws
    and state directly, instead of Xbox GPU commands that had to be decoded first.
    Set RESOT_DIRECT_DRAW=0 to go back to the old path.
  • Retail level geometry drawn directly. About two thirds of the retail game's
    draws came from command buffers it records once and replays every frame. reSOT
    now keeps them, checks them against the game's copy each time, and reuses
    the geometry already on the GPU. Renderer time in the heavy scene went from
    8.95 to 6.2 ms a frame.
  • Game and renderer in parallel (retail). The game can prepare the next frames
    while the previous ones are drawn: up to 32 submissions and at most two frames
    ahead (RESOT_KICK_AHEAD, RESOT_FLIP_AHEAD).
  • Faster presentation on Vulkan. The display mode is no longer queried every
    frame; on NVIDIA this took about 13% of the renderer's time.
  • Faster memory checks (Windows). reSOT's own per-frame checks of game objects
    no longer ask Windows about the memory first (about 10% of the game thread in
    heavy scenes, 28% in menus).
  • Smaller CPU savings: faster vertex conversion and geometry caching, and the
    retail matrix multiply in native code (9% of the game thread down to 0.9%).

Fixes

  • Light halos turning green or flashing white (retail). At a raised internal
    resolution the two tiny probes behind each light halo could count a different
    number of pixels, pushing the halo's brightness out of range. It now stays
    within range.

Launchers

  • The game language is now chosen in reSOT Options only. The Windows and
    Android launchers no longer show the "Game language" button. Use the Language
    page of reSOT Options (retail); the choice is still saved in resot-options.ini
    and applies at the next start.

Known limits

  • Android was built but not yet tested with this release.
  • The demo gets the direct renderer, but keeps waiting for the renderer at every
    submission.
  • Direct3D 11 and Direct3D 12 have not been re-tested with the last changes.
  • The halo fix and the hidden launcher button have not been confirmed in game yet.
  • The two-frame limit was tested for about 33,000 frames. If parts of a level
    turn black after a long session, set RESOT_FLIP_AHEAD=1: slower, but it
    prevents it.
  • In the retail Magic Fountain teleport the fade to black does not appear and the
    camera stays at the bridge entrance until the view is changed.

Don't miss a new rePOP release

NewReleases is sending notifications on new releases.