Install or update
- Already have 0.6.0 or newer: start the launcher; it offers 0.9.2, updates itself and keeps the game it compiled
and the shaders it prepared. Only what changed is compiled again. - Already have 0.5.0: the same, and the game's code 0.5.0 compiled is kept as it was compiled (for any x86-64
processor); Rebuild the Game in the launcher's home compiles it again for yours. - New install: download
NX2navi-Setup-0.9.2.exebelow, put it next to your.nupdump of the game and start
it. Windows SmartScreen warns on the first start because the setup is not signed: choose More info and Run
anyway. The launcher checks your game files, builds the game (10 to 25 minutes, once), prepares every shader and
starts it.
Requirements: Windows 10 or 11; an x86-64 CPU with SSE4.2; 16 GB of RAM; about 30 GB free for the game and 1.5 GB
for the launcher; a GPU with Vulkan 1.3 and VK_EXT_external_memory_host (current NVIDIA and AMD cards). A GPU without
VK_EXT_mesh_shader gets the mesh shader fallback as before, or runs the game's mesh shaders as compute shaders with
low_end_gpu = 1 (new, see below).
New
-
An experimental mode for older graphics cards: Low-end GPU mode (experimental) in the settings menu's Game
tab, orlow_end_gpu = 1in nx2navi.ini. It turns on a set of changes written by Tobim6 and measured on a Radeon
RX 580. They are off by default, because they were not run by us on other cards:- Grass, moss and other foliage on cards without mesh shaders (AMD before RDNA 2, such as the RX 400 and 500 series
and Vega; NVIDIA before the GTX 16 and RTX 20 series): the game's mesh shaders run as compute shaders and what
they make is drawn as ordinary triangles. - Video memory kept within what the driver reports free, with 512 MB in reserve, and a texture that does not fit
the first memory heap placed in the next one with room. Large batches of texture uploads go to the GPU early
instead of growing until a submit runs out of memory. - Less waiting for the GPU: the game memory a submission needs is copied while the frame is recorded, and the game
goes on once a frame's first submission is handed over. On the RX 580 the replay's part of that wait went from
12 ms to 6.9, with the recording thread used on AMD cards without mesh shaders. - Frames prepared on a thread of their own (this one can show a dark or flickering frame now and then), and memory
pools the game refills every frame kept in system memory. - A texture the game reads after another image was drawn over its memory gets memory of its own, which removed
teal splotches from the fog of Kokiri Forest on that card.
While the mode is on, the Game tab lists its settings underneath the switch: the video memory limit and reserve,
the upload batch size, mesh shader emulation and its memory, foliage detail (foliage = full,reducedoroff)
and compiling the game's code at -O2 at the next Rebuild the Game (guest_opt = 2, a build several times
longer). With the mode off none of them is read, also when nx2navi.ini sets one. - Grass, moss and other foliage on cards without mesh shaders (AMD before RDNA 2, such as the RX 400 and 500 series
-
Link's own motion for DLSS, FSR 3.1 and frame generation (
selective_motion = 1in nx2navi.ini, off by
default): Link and the equipment attached to him are drawn a second time with last frame's pose, so the upscaler
gets their real motion in fast turns, attacks and jumps instead of an estimate. It has not been played by us yet. By
automata-rtx (pull request #699). -
A Switch used as a controller over USB (it shows up as "Nyx Joy-Con") is taken as a gamepad. Any other joystick
the game cannot use is named in the log once, with its ids. By Tobim6.
Fixed
- FSR and DLSS showed a blocky, shaking picture with the HUD hidden. The upscaler's picture was put where the
game draws its HUD. With the HUD off the game skips that step, and the frame's last step then drew the game's own
plainly scaled scene over it: the screen showed the scene at its render size (a third of the picture at Ultra
Performance) in visible blocks, shaking by up to one render pixel from frame to frame, with a white line along the
bottom or right edge in about half the frames, while the upscaler's work was thrown away. Native AA was affected
as well as the scaling modes. The upscaler now runs where the game's own upscaler does, HUD or not. On a save with
the HUD off at FSR 4 Ultra Performance: fine detail is back, the picture moves 0.02 pixels between screenshots of a
still view instead of jumping by 3, and no screenshot has the white line (half had it). - A crash after switching FSR modes. One FSR context served every mode, with another render size at each switch,
and the first frame after a switch from Quality to Native AA could end the game inside AMD's driver. Each render size
now gets a context of its own, as AMD's own sample makes them, and the one before goes a few frames later (a mode
switch takes about 50 ms more); with dynamic resolution on, one context made for changing sizes takes every step. - Bright patches along the bottom edge over water, and a light line at the edge, with FSR or DLSS. To let the
upscaler build a smoother picture the scene is drawn moved by a fraction of a pixel, and AMD's driver then leaves
the last row or column undrawn. Those are now filled from their neighbours as soon as each step of the scene is
drawn, before the water, the bloom or the upscaler read them. - A new start for the upscaler at every frame of a quick camera swing. A fast swing of the camera around Link (11
to 18 degrees a frame) was taken for a cut to a new view. Only a jump of the camera or a turn of 30 degrees or more
in one frame counts as a cut now. - Objects drawn grey for a frame while you move. While you move the game brings in sharper versions of about 32
textures every four or five frames, each in a texture slot that showed the coarser one until then. A frame made 16
of them and drew the others as their plain stand-in until the next round: lamp posts, the windows of a house front
and patches of ground went flat grey for one frame. A slot that shows a texture, and one the game has just
registered, now gets its new texture in the same frame. In 600-frame recordings of walks through a village, 1,525
such slots went blank before and none after. - Textures arriving late in a busy frame. The time a frame may spend making textures also counted the checks of
textures already made, so in a busy area the limit was reached before anything new was made. Only the making counts
now. - One frame nearly black, with its colours exchanged. The game reads its scene through a second description of
the same memory in another format. That texture was dropped every 600 frames as overwritten although the game still
read it, and the frame that dropped it made it again from the scene's raw bits: in a player's recording one frame at
a sixth of its brightness. A texture that is still read is kept now. - Kerb, stair and wall-top edges drawn white for one frame in towns. In a town the game registers a round of 30
to 60 sharper textures every four or five frames, from another of its threads, while the frame before is still
being drawn. Each registration took effect at once and changed the texture slots under that frame, and some of its
surfaces were drawn untextured, twice four frames apart. A registration now takes effect between two submissions,
in the order the game made it. - Textures going plain for a moment after the game let go of them. A texture the game has finalized stays on
screen until the game puts another in its place. Nothing looked such a texture up any more, so it counted as unused
and was dropped once the kept textures passed their size limit, although every frame still drew with it. One that
was drawn with lately is kept now. - The game hanging with the draw replay on several cores. Two replay threads could wait for each other at the
end of a render pass, each holding the lock the other needed. By leonardochappuis (pull request #697). - Lines drawn one pixel wide whatever width the game set. The width is passed on now where the card supports wide
lines. - Stripes of self-shadow on slopes with
shadow_scaleat 2 to 4. A shadow map drawn larger got the game's slope
depth bias unchanged, which is too little for its smaller texels. The bias grows with the map now; at
shadow_scale = 1, the default, nothing changes. By FIocker (pull request #705); not run in the game by us yet. - A generated frame blended from two unrelated pictures at a camera cut, with FSR 3.1 frame generation. Frame
generation is told of the cut and starts from the new picture. By FIocker (pull request #703). - Frame generation on cards whose graphics queue family has a single queue presents through another family, and
the picture without the HUD is also used where the upscaler's output is smaller than the presented picture. By
Tobim6. - A build that was cut short while it generated the game's sources was taken for finished at the next try. The
launcher runs the generation again now. By DeepDaddyTTV (pull request #360). - Linux: each submission is handed to the driver's own submit thread on Mesa drivers, so the draw replay does not
wait for it. By DerHalbGrieche (pull request #701).
Changed
-
The flight recorder (
flight = 1, F8) keeps its pictures at 640x360 instead of 320x180 and notes texture slots
that lose their picture, what an upload read and slot registrations. A captured frame also lists the draws that were
rejected while it was prepared (by DeepDaddyTTV, pull request #501). New for reports: a key that dumps the next
frame (dump_key), the GPU's time per render pass (pass_times = 1) and, in a crash report, what the crashing
thread was building (by Tobim6). -
FSR 3.1 is sharper at Balanced, Performance and Ultra Performance. It was soft there, most of all while the
camera moved: turning the camera at a steady rate, FSR 3.1 Performance kept 60 % of Native AA's fine detail and Ultra
Performance 50 %, where FSR 4 keeps 89 and 81 %. Below a render scale of three quarters, FSR 3.1's own sharpening now
goes towards its maximum and its picture gets a second, lighter sharpening pass before the HUD is drawn; both follow
the Sharpness slider, and 0 turns them off. Performance now keeps 85 % and Ultra Performance 71 %, for about 0.2 ms
a frame. FSR 4 and Native AA are unchanged. -
Debug menu: the free camera has no limits. It flies where it looks and goes through walls, objects and the
ground; it used to keep its height and climb whenever anything in the lower part of the view came within three
metres, a character or a rock it was flown towards included. Ground avoidance is now a switch in the free camera's
section, off unless you turn it on: with it the camera stays a metre above fields and gentle hills, and objects and
walls never push it.
Known issues
- At FSR's and DLSS's smaller modes, Link and other characters look a little coarser while they move: the upscaler
gets only the camera's motion for them, not their own.selective_motion = 1in nx2navi.ini gives it
Link's own motion; it is new and off by default (see New). - Ultra Performance gains little frame rate over Quality with FSR 4. Most of a frame is the replay of the game's draws
on the CPU, which does not shrink with the render size, and FSR 4 itself takes 3.1 ms of the GPU's time at Ultra
Performance and 3.9 ms at Native AA on a Radeon RX 7900 XT (FSR 3.1: 0.5 ms). Measured standing in Hyrule Field at
3416x1440: FSR 4 Native AA 52 fps, Quality 53, Ultra Performance 55; FSR 3.1 Native AA 55, Ultra Performance 66;
without an upscaler 70. low_end_gpu = 1was run by its author on a Radeon RX 580, not by us. Please report how it behaves on your card.- FSR 4, its frame generation and the AMD-only fixes were not run by us on the cards they are for before this
release. - The first visit to an area after an install can still pause for a moment while its textures are decoded.
- Integrated AMD GPUs can fail at the title screen (their host memory heap is too small for the game's memory).
- Nothing in this release was run on Linux by us.
Thanks
Pull requests and branches in this release came from Tobim6, epicmeme546, leonardochappuis, automata-rtx, FIocker,
DeepDaddyTTV and DerHalbGrieche. Thanks to everyone who sent logs, captures and test reports.