github RamazanKara/Rubylight v4.6.0
Rubylight 4.6.0

one hour ago

Windows game streaming, written in Rust. Built for Radeon and NVIDIA. Made for Moonlight.

Download Windows x64 installer · Portable ZIP

New in 4.6.0

Rubylight 4.6.0 turns Neural Rendering into frame generation: a game's switch adds ANR (Apex Neural Rendering) frame generation to games that ship DLSS frame generation, on Radeon and GeForce graphics, and paired Nightjar devices can turn it on and off. The rest is a round of fixes from a code review, across Play over the internet, launches, updates, the console and display changes, and a shorter, clearer settings list. Nightjar 5.7.0, released alongside, brings the frame generation switch to devices and adds Fractional V-Sync.

Highlights

  • ANR frame generation for games with DLSS frame generation. A game's switch adds Apex Neural Rendering's frame generation on Radeon RX 5000 and newer or GeForce GTX 16, RTX 20 and newer, and takes it out again.
  • Says why before you try. The game page and paired devices say why a game can't have frame generation, such as an anti-cheat or a runtime to install, before anything is downloaded.
  • Turn it on from the couch. A paired Nightjar device with Host control turns a game's frame generation on and off.
  • Even motion at half the refresh. With Nightjar 5.7.0's Fractional V-Sync, a 60 fps stream on a 120 Hz screen shows every frame for two refreshes.
  • Play over the internet connects more reliably. A device keeps trying until the PC has found it.
  • Quit works while a game is still launching. Quit and End session stop a launch instead of waiting behind it.
  • Updates resume. A broken-off download goes on where it stopped and is tried again at the next check.
  • Fewer, clearer settings. One row each for HDR, the update schedule and an app's virtual display, and a setting that does nothing says why.

Frame generation

  • Neural Rendering is now frame generation. A game's Frame generation switch, on its page in Games, puts ANR (Apex Neural Rendering) frame generation by Apex Compute into a game that ships DLSS frame generation: turn on DLSS frame generation in the game, and ANR takes its place. Rubylight downloads ANR's pinned release from its GitHub page when you turn it on and copies it unchanged into the game's folder. It is offered when any of the PC's GPUs can run it: Radeon RX 5000 and newer, the Radeon 780M among them, or GeForce GTX 16, RTX 20 and newer. When that GPU is not the one Rubylight streams with, such as a laptop's dedicated card beside the integrated graphics that drive its display, the switch names it and says frame generation runs when the game renders on it. Intel graphics are not offered. It needs the Microsoft Visual C++ 2015-2022 Redistributable (x64) on the PC, downloads about 14 MB once, and is off for every game. Leave it off for online games: one may treat a mod as cheating.
  • The game page says why before any try. A game with a known anti-cheat, without DLSS frame generation, whose program has to be chosen first, or on a PC that lacks the Visual C++ runtime shows the reason with the switch greyed out. The switch turns on and off only while nothing is streaming.
  • Your own upscaler mod stays yours. A game that already has an upscaler mod you installed gets only ANR's add-on, and the settings it changes there are put back exactly when it is turned off.
  • Turning it off cleans up after it. It removes the files Rubylight put there and what frame generation writes into its own folder while a game runs, and names anything someone else left in the folders it made. While the game runs, turning it off changes nothing and says to close the game.
  • The first launch can take longer. Final Fantasy XVI's first launch after turning it on once spent about 10 minutes compiling its shaders on the RX 7900 XT, right after a driver update; a later one took 16 seconds. How much of a long wait comes from frame generation is not measured.
  • The earlier neural upscaling is only removed now. A game that still has it shows it on its page with Remove, which takes out only the earlier upscaling and leaves frame generation as it is. Turning frame generation on removes it first, once the game has passed every check, so a game that is refused keeps it, as does one where its removal would leave a changed file behind. Its 1 GB download is deleted.
  • Paired devices. Nightjar devices with Host control turn a game's frame generation on and off and say why in their own words before any try (Nightjar 5.7.0).

Streaming quality

  • Adapt bitrate on this PC is gone. It cut the bitrate too far after one burst of losses and never climbed back, and turning it on switched off the other bitrate controls. Lower the bitrate when the link cannot carry it, and Adapt to network congestion where it is on, now always look after the bitrate, along with adaptive packet pacing and Slow down after video loss. Saved settings, per-app and per-device settings and imported profiles carry over without it.
  • Play over the internet connects more reliably. A device keeps trying until the PC has had time to find it, where the attempt could end first. The PC looks for each paired device on a thread of its own, asks less often for devices that are not connecting, and an idle connection no longer keeps a thread awake.
  • Port forwarding keeps its PCP mappings across a restart. A PCP router refused to renew or remove a mapping after a host restart or a missed renewal until its two-hour lease ran out; the host now asks under the same identity each time.
  • Resuming at another frame rate keeps the game on its display. The virtual display is retimed, not replaced, the resume takes the frame limiter and HDR profile set since the launch, and a display layout Windows refuses after the PC sat idle is tried again as on a fresh launch.
  • Compute conversion steps aside only after two encoder failures within a minute and is tried again after 5 quiet minutes, where one bad moment used to cost the rest of the session.
  • With two streams running, one ending no longer makes the other set up its frame buffers again. An idle PyroWave stream wakes its sender four times a second, and the bitrate controller for H.264, HEVC and AV1 counts only the packets that reached the network.

Console and setup

  • One row each for HDR, the update schedule and an app's virtual display. Display HDR has four choices, Match the stream, Always on, Always off and Don't change HDR, in place of a separate HDR request. Check for updates offers Daily at a set time beside its intervals. An app's Virtual display mode includes Always, which replaces the separate Use a virtual display switch. Saved settings, apps, per-device settings, restored backups and imported profiles carry over.
  • Settings say when they do nothing. A setting with no effect in the current setup shows as inactive with the reason: adaptive pacing while a Pacing rate is set, the frame limit while Limiter is None, or the virtual display's scale, HDR calibration and Vulkan HDR layer on Windows before 11 23H2. In the app editor, Make the virtual display primary, Keep a separate identity for each device and Legacy frame generation capture fix say when another choice takes their place.
  • A shorter Picture page. HDR, Frame pacing, Frame limiter and After a stream start folded, and open by themselves when one of their settings is customized. The settings home offers the monitors choice only where streams can use a virtual display. The capture timing diagnostics (Capture poll interval, Predictive polling, Align capture with encoding) moved to Advanced → Debug switches, and the app editor's Frame generation limiter fix is gone: the host never read it, and saved copies are cleared.
  • A save asks for a restart only when a setting needs one. The rows marked "Applies after a restart" are exactly the settings Rubylight reads when it starts; saving any other shows "Settings saved." alone.
  • The console says when it has lost the PC. "Cannot connect to Rubylight" covers the page until Rubylight answers again, and unsaved settings are still there afterwards.
  • Troubleshooting names the right graphics card and the right tab. An NVIDIA encoder failure is no longer explained with AMD's driver, fixes name the tabs the console has, and a fix that is a setting links to its row.
  • Update downloads resume. A paused or broken-off download goes on where it stopped, one that receives nothing for 60 seconds ends, an automatic update whose download broke off is tried again at the next check instead of waiting for the next release, and an automatic installation that fails shows a warning in the console.
  • Virtual display refresh and Full chroma are stored as virtual_display_refresh and packed_444. Configurations, scripts and API calls that use the earlier names keep working.

Devices and input

  • Quit and End session work while a game is still launching. They stop the launch instead of waiting behind it, for minutes if a preparation command hangs. That command is ended, and the undo commands of the ones that had finished still run.
  • A failed launch says which app's preparation command failed and what to do next.
  • A device is told why its stream was refused. A codec this PC cannot encode, or a stream that had to be encrypted and was not, leaves its reason for the device as a failed launch does; Nightjar 5.7.0 shows it.
  • Pairing again after backing out works at once. A device that left the PIN dialog and asked again was refused as "another device is pairing" for up to five minutes. Only a different device is refused now.
  • Keyboard and mouse keep working while the controllers reconnect.
  • Remote monitors no longer hold up other devices. Adding one no longer holds up the app list and other devices while its display is made, and with Remove remote monitor on device disconnect on, ending one no longer pauses other devices' keyboard, mouse and controller until Windows finishes the display change.
  • After Continue here, a game's per-device settings file follows the device now playing.

Fixes

  • Stopping the Rubylight service puts Radeon settings and game files back before it closes the game, so they are restored within the time Windows gives a service to stop. A launch still preparing, or one that starts while the host stops, is stopped too.
  • Sound returns faster after a capture error: the capture reopens on the next pass, not up to a second later.

Tested. Frame generation ran in Final Fantasy XVI (Direct3D 12) on the RX 7900 XT through an isolated test host: the console's route installed it, the game loaded it and, with DLSS frame generation set in the game's menu, generated frames by the provider's own log. On the release build, turning it off while the game ran changed nothing and said to close the game; once the game had closed, turning it off left the game's 161 files and folders byte-identical to before, the provider's logs removed too. The provider's copy of the Vulkan loader, which it writes once frame generation runs in gameplay, goes with the same sweep; that part is covered by unit tests. On the Radeon 780M the pinned release was installed into and removed from test game folders byte for byte, full and as the add-on, and desktop Nightjar turned it on and off there. It has not yet run on a GeForce card, and its effect on frame rate and delay is not measured. Nightjar 5.7.0's Fractional V-Sync was measured with the Radeon 780M laptop (120 Hz panel) streaming from the RX 7900 XT PC over Wi-Fi, V-Sync on, VRR off, phase lock on, in 230 to 270 s runs: frames not shown for exactly their refreshes fell from 8.4% to 3.4% at 60 fps and from 17.9% to 1.7% at 40 fps, while receive-to-display latency rose from 11.9 to 13.6 ms and from 12.8 to 14.0 ms at the median and from 16.2 to 18.8 ms and from 17.9 to 21.9 ms at the 95th percentile, which is why it stays off by default. Unit tests cover the review's fixes, among them the launch stop, the resumed downloads, the PCP identity, the refused stream's reason and the retired bitrate setting carried over from saved settings and profiles.

Install or upgrade

Disconnect your stream and close host-launched games, then run the installer. Your settings, paired devices and game library are preserved. Open the console at https://localhost:47990.

Full release notes · Build and tests · Code signing policy · Host validation

Don't miss a new Rubylight release

NewReleases is sending notifications on new releases.