mirror of
https://github.com/tangerineturtle1/NX2navi.git
synced 2026-11-15 19:19:58 -04:00
Make the release 0.9.2, with its notes.
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
This commit is contained in:
@@ -1,3 +1,41 @@
|
||||
## 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.exe`** below, put it next to your `.nup` dump 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` runs the game's mesh shaders as compute shaders (new in this release, see below).
|
||||
|
||||
## New
|
||||
|
||||
- **Grass and foliage on graphics 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 draws its grass, moss and other foliage with mesh
|
||||
shaders. On a card without them these now run as compute shaders, and what they make is drawn as ordinary
|
||||
triangles. It is on by default on such a card and does nothing on any other; `mesh_emulation = 0` in nx2navi.ini
|
||||
goes back to what 0.9.1 did there. Written and run on a Radeon RX 580 by Tobim6.
|
||||
- **Video memory kept within what the card has free.** Textures and buffers are allocated within the budget the
|
||||
driver reports for each memory heap, with 512 MB kept free (`vram_reserve_mb`), and a texture that does not fit the
|
||||
first heap goes to the next one with room. A large batch of texture uploads is handed to the GPU early instead of
|
||||
growing until a submit runs out of memory. By Tobim6.
|
||||
- **A settings tab for older and slower cards**, *Lama patches*, by Tobim6: how many released textures are kept, the
|
||||
video memory reserve, the upload batch size, mesh shader emulation, foliage detail (`foliage = full`, `reduced` or
|
||||
`off`), and three settings that stay off unless you choose them: preparing frames on a thread of their own
|
||||
(`replay_async`), keeping memory pools the game refills every frame in system memory (`mirror_hot`), and compiling
|
||||
the game's code at -O2 at the next *Rebuild the Game* (`guest_opt = 2`, a build several times longer).
|
||||
- **Link's own motion for DLSS, FSR 3.1 and frame generation** (`selective_motion = 1` in 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
|
||||
@@ -19,13 +57,70 @@
|
||||
- **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.
|
||||
- **Teal splotches in the fog of Kokiri Forest.** The game puts its per-frame render targets over each other in
|
||||
memory, and the fog read its volume after the bloom target had been drawn over it. A texture read in that state gets
|
||||
memory of its own from then on. By Tobim6.
|
||||
- **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.
|
||||
- **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
|
||||
|
||||
- **Draws and uploads wait less for the GPU.** The pages of game memory a submission needs are copied while the draw
|
||||
replay records it, so the game's wait after a frame's first submission ends once the replay has handed it over instead
|
||||
of when the GPU has run it; a submission whose results the game reads back is still waited for. The texture pool has
|
||||
8 descriptor sets in turn instead of 4. By Tobim6.
|
||||
- **The recording thread is used on AMD cards without mesh shaders** (RX 400 and 500, Vega, RX 5000). It stays off on
|
||||
the newer AMD cards, where it lost the device. On a Radeon RX 580 the replay's part of the game's wait after a
|
||||
frame's first submission went from 12 ms to 6.9. By Tobim6.
|
||||
- **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).
|
||||
|
||||
## 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.
|
||||
gets only the camera's motion for them, not their own. `selective_motion = 1` in 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.
|
||||
- The changes for older cards (mesh shaders as compute, the video memory budgets, the shorter waits for the GPU) were
|
||||
run by their author on a Radeon RX 580. Please report how they behave on other cards.
|
||||
- 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.
|
||||
|
||||
Reference in New Issue
Block a user