In some games, OptiScaler's built-in frame generation conversion is less efficient than Nukem's. #1087

Closed
opened 2026-08-01 17:52:45 +00:00 by AizawaHikaru233 · 7 comments
AizawaHikaru233 commented 2026-08-01 17:52:45 +00:00 (Migrated from github.com)

Even when using FSR 4 Frame Generation output in both cases, OptiScaler with DLSSG/FSRFG input and FSR4FG output is less efficient and less stable than the FSR4FG version of Nukem that I compiled myself after studying Nukem.

In Zenless Zone Zero, OptiScaler with FSRFG output reaches 240 FPS in the same scene, while my FSR4FG Nukem build reaches 300 FPS and the original Nukem build reaches 320 FPS.

In Final Fantasy XVI, OptiScaler with FSRFG output reaches 160 FPS, while my FSR4FG Nukem build reaches 190 FPS.

In Final Fantasy VII Rebirth, both methods average around 190-200 FPS. However, during rapid camera movement, Nukem's frame rate fluctuates by only around 10 FPS, while OptiScaler with FSRFG output can fluctuate by 20-30 FPS.

Game name and version:

Zenless Zone Zero (HoYoLauncher), Final Fantasy XVI (Steam), Final Fantasy VII Rebirth (Steam)

Mods and mod versions used:

OptiScaler 0.9.4, Fakenvapi 1.4.1, Nukem self-compiled FSR4FG version

GPU:

RX 9070 XT with 26.6.1 driver

OS:

Windows 11 26H1

Used automated or manual install?

  • Manual

If on AMD/Intel and Automated, used DLSS inputs?

  • Yes

Also please mention in description which upscaler inputs are used (which upscaler you selected in game settings).

Did you check the Wiki and Compatibility List?

  • Yes

Please describe the issue and steps to reproduce it:

The behavior described above can be reproduced consistently in most scenes across all three games.

My test locations were:

  • Zenless Zone Zero: the initial area after entering the first stage of Deadly Assault.
  • Final Fantasy XVI: the initial area after teleporting to the Hideaway during the middle portion of the game.
  • Final Fantasy VII Rebirth: the desert area encountered after the Gold Saucer.

I have attached:

DLSS-G input with FSR FG output
the FSR4-enabled Nukem input/output path

Even when using FSR 4 Frame Generation output in both cases, OptiScaler with DLSSG/FSRFG input and FSR4FG output is less efficient and less stable than the FSR4FG version of Nukem that I compiled myself after studying Nukem. In Zenless Zone Zero, OptiScaler with FSRFG output reaches 240 FPS in the same scene, while my FSR4FG Nukem build reaches 300 FPS and the original Nukem build reaches 320 FPS. In Final Fantasy XVI, OptiScaler with FSRFG output reaches 160 FPS, while my FSR4FG Nukem build reaches 190 FPS. In Final Fantasy VII Rebirth, both methods average around 190-200 FPS. However, during rapid camera movement, Nukem's frame rate fluctuates by only around 10 FPS, while OptiScaler with FSRFG output can fluctuate by 20-30 FPS. #### Game name and version: Zenless Zone Zero (HoYoLauncher), Final Fantasy XVI (Steam), Final Fantasy VII Rebirth (Steam) #### Mods and mod versions used: OptiScaler 0.9.4, Fakenvapi 1.4.1, Nukem [self-compiled FSR4FG version](https://github.com/AizawaHikaru233/dlssg-to-fsr3/releases/tag/FSR4) #### GPU: RX 9070 XT with 26.6.1 driver #### OS: Windows 11 26H1 #### Used automated or manual install? - [x] Manual If on AMD/Intel and Automated, **used DLSS inputs**? - [x] Yes Also please mention in description which upscaler inputs are used (which upscaler you selected in game settings). #### Did you check the [Wiki](https://github.com/optiscaler/OptiScaler/wiki) and [Compatibility List](https://github.com/optiscaler/OptiScaler/wiki/Compatibility-List)? - [x] Yes #### Please describe the issue and steps to reproduce it: The behavior described above can be reproduced consistently in most scenes across all three games. My test locations were: - Zenless Zone Zero: the initial area after entering the first stage of Deadly Assault. - Final Fantasy XVI: the initial area after teleporting to the Hideaway during the middle portion of the game. - Final Fantasy VII Rebirth: the desert area encountered after the Gold Saucer. #### I have attached: [DLSS-G input with FSR FG output](https://github.com/AizawaHikaru233/dlssg-to-fsr3/blob/main/docs/images/DLSSG_Input%26FSRFG_Output.png) [the FSR4-enabled Nukem input/output path](https://github.com/AizawaHikaru233/dlssg-to-fsr3/blob/main/docs/images/FSR4Version_Nukem_Input%26Output.png)
TheRazerMD commented 2026-08-02 09:46:19 +00:00 (Migrated from github.com)

We've noticed DLSSG via SL -> FSR-FG hitting some kind of weird limit in certain games for a while now, but haven't been able to diagnose the issue exactly (not sure if Opti or FFX SDK related, quite possibly some FSR-FG swapchain problem). From personal experience, it's most noticeable in Capcom games like RE9, Pragmata and MH Wilds. The FPS initially goes up to the expected frame rate, but almost instantly falls back down to some limit. 🤔

Since this is modified Nukems, you're still using the Streamline/DLSSG swapchain and AL2 is being used too, correct?

We've noticed DLSSG via SL -> FSR-FG hitting some kind of weird limit in certain games for a while now, but haven't been able to diagnose the issue exactly (not sure if Opti or FFX SDK related, quite possibly some FSR-FG swapchain problem). From personal experience, it's most noticeable in Capcom games like RE9, Pragmata and MH Wilds. The FPS initially goes up to the expected frame rate, but almost instantly falls back down to some limit. 🤔 Since this is modified Nukems, you're still using the Streamline/DLSSG swapchain and AL2 is being used too, correct?
AizawaHikaru233 commented 2026-08-02 09:56:43 +00:00 (Migrated from github.com)

We've noticed DLSSG via SL -> FSR-FG hitting some kind of weird limit in certain games for a while now, but haven't been able to diagnose the issue exactly (not sure if Opti or FFX SDK related, quite possibly some FSR-FG swapchain problem). From personal experience, it's most noticeable in Capcom games like RE9, Pragmata and MH Wilds. The FPS initially goes up to the expected frame rate, but almost instantly falls back down to some limit. 🤔

Since this is modified Nukems, you're still using the Streamline/DLSSG swapchain and AL2 is being used too, correct?

The modification is limited to frame generation: within the original Nukem DLSSG input -> FSR3 Frame Generation path, it preferentially switches to DLSSG input -> FSR4 Frame Generation provided by the updated driver. If the FSR4 provider is unavailable, it falls back to the original FSR3 Frame Generation implementation.

It does not modify Streamline/DLSSG resource tags, the DXGI swap chain, Present, frame-rate limiting, or OptiScaler's outer hook. Those are still managed by the game, Streamline, and OptiScaler.

The issue is not limited to my self-compiled Nukem build. The same behavior can also be reproduced when comparing the stock Nukem FSR3 implementation with OptiScaler using DLSSG input + FSR3 FG output.

> We've noticed DLSSG via SL -> FSR-FG hitting some kind of weird limit in certain games for a while now, but haven't been able to diagnose the issue exactly (not sure if Opti or FFX SDK related, quite possibly some FSR-FG swapchain problem). From personal experience, it's most noticeable in Capcom games like RE9, Pragmata and MH Wilds. The FPS initially goes up to the expected frame rate, but almost instantly falls back down to some limit. 🤔 > > Since this is modified Nukems, you're still using the Streamline/DLSSG swapchain and AL2 is being used too, correct? The modification is limited to frame generation: within the original Nukem DLSSG input -> FSR3 Frame Generation path, it preferentially switches to DLSSG input -> FSR4 Frame Generation provided by the updated driver. If the FSR4 provider is unavailable, it falls back to the original FSR3 Frame Generation implementation. It does not modify Streamline/DLSSG resource tags, the DXGI swap chain, Present, frame-rate limiting, or OptiScaler's outer hook. Those are still managed by the game, Streamline, and OptiScaler. The issue is not limited to my self-compiled Nukem build. The same behavior can also be reproduced when comparing the stock Nukem FSR3 implementation with OptiScaler using DLSSG input + FSR3 FG output.
FakeMichau commented 2026-08-02 10:29:22 +00:00 (Migrated from github.com)

Compiled it here https://github.com/optiscaler/dlssg-to-fsr3/actions/runs/30743104378

Really nice discovery. I personally was under the false assumption that the FFX API doesn't allow for the simple dispatch and getting the fake frames out without the swapchain.

From my quick test, I'm getting more FPS with the FSR FG swapchain than this modified Nukem's. Can you retest FSR FG output but disable any low latency methods, aka force disable reflex. Also feel free to try enable async with the FSR FG output, depending on the game that might cause a crash.

Compiled it here https://github.com/optiscaler/dlssg-to-fsr3/actions/runs/30743104378 Really nice discovery. I personally was under the false assumption that the FFX API doesn't allow for the simple dispatch and getting the fake frames out without the swapchain. From my quick test, I'm getting more FPS with the FSR FG swapchain than this modified Nukem's. Can you retest FSR FG output but disable any low latency methods, aka force disable reflex. Also feel free to try enable async with the FSR FG output, depending on the game that might cause a crash.
AizawaHikaru233 commented 2026-08-02 11:17:53 +00:00 (Migrated from github.com)

Compiled it here https://github.com/optiscaler/dlssg-to-fsr3/actions/runs/30743104378

Really nice discovery. I personally was under the false assumption that the FFX API doesn't allow for the simple dispatch and getting the fake frames out without the swapchain.

From my quick test, I'm getting more FPS with the FSR FG swapchain than this modified Nukem's. Can you retest FSR FG output but disable any low latency methods, aka force disable reflex. Also feel free to try enable async with the FSR FG output, depending on the game that might cause a crash.

I uninstalled and reinstalled my GPU driver and updated it to version 26.7.1. I also let Zenless Zone Zero recompile its shaders.

In Zenless Zone Zero, I obtained the same results as before: the frame rate is around 200 FPS without Frame Generation enabled, and around 240 FPS with it enabled.

I do not know whether this is caused by my Windows installation or something else. Perhaps I need to reinstall Windows.

> Compiled it here https://github.com/optiscaler/dlssg-to-fsr3/actions/runs/30743104378 > > Really nice discovery. I personally was under the false assumption that the FFX API doesn't allow for the simple dispatch and getting the fake frames out without the swapchain. > > From my quick test, I'm getting more FPS with the FSR FG swapchain than this modified Nukem's. Can you retest FSR FG output but disable any low latency methods, aka force disable reflex. Also feel free to try enable async with the FSR FG output, depending on the game that might cause a crash. I uninstalled and reinstalled my GPU driver and updated it to version 26.7.1. I also let Zenless Zone Zero recompile its shaders. In Zenless Zone Zero, I obtained the same results as before: the frame rate is around 200 FPS without Frame Generation enabled, and around 240 FPS with it enabled. I do not know whether this is caused by my Windows installation or something else. Perhaps I need to reinstall Windows.
AizawaHikaru233 commented 2026-08-02 12:45:11 +00:00 (Migrated from github.com)

Compiled it here https://github.com/optiscaler/dlssg-to-fsr3/actions/runs/30743104378

Really nice discovery. I personally was under the false assumption that the FFX API doesn't allow for the simple dispatch and getting the fake frames out without the swapchain.

From my quick test, I'm getting more FPS with the FSR FG swapchain than this modified Nukem's. Can you retest FSR FG output but disable any low latency methods, aka force disable reflex. Also feel free to try enable async with the FSR FG output, depending on the game that might cause a crash.

I asked a friend with the same RX 9070 XT GPU to test this in Zenless Zone Zero, and they observed exactly the same frame rate behavior.

Interestingly, without using any plugins and simply using the game's native FSR 4.1.1 and FSR Frame Generation 4.0.1, the results are identical to OptiScaler using FSR input + FSR output: around 200 FPS with Frame Generation disabled and around 240 FPS with it enabled.

Only Nukem's implementation can reach over 300 FPS.

> Compiled it here https://github.com/optiscaler/dlssg-to-fsr3/actions/runs/30743104378 > > Really nice discovery. I personally was under the false assumption that the FFX API doesn't allow for the simple dispatch and getting the fake frames out without the swapchain. > > From my quick test, I'm getting more FPS with the FSR FG swapchain than this modified Nukem's. Can you retest FSR FG output but disable any low latency methods, aka force disable reflex. Also feel free to try enable async with the FSR FG output, depending on the game that might cause a crash. I asked a friend with the same RX 9070 XT GPU to test this in Zenless Zone Zero, and they observed exactly the same frame rate behavior. Interestingly, without using any plugins and simply using the game's native FSR 4.1.1 and FSR Frame Generation 4.0.1, the results are identical to OptiScaler using FSR input + FSR output: around 200 FPS with Frame Generation disabled and around 240 FPS with it enabled. Only Nukem's implementation can reach over 300 FPS.
cdozdil commented 2026-08-03 08:45:16 +00:00 (Migrated from github.com)

Hi,

It might be something about FSR-FG swapchain or AL2 then. Because Nukem's use SL swapchain and have some issues with AL2 too.

These are 2 topics which is different between native/Opti FSR-FG and Nukem's.

Hi, It might be something about FSR-FG swapchain or AL2 then. Because Nukem's use SL swapchain and have some issues with AL2 too. These are 2 topics which is different between native/Opti FSR-FG and Nukem's.
AizawaHikaru233 commented 2026-08-03 08:51:46 +00:00 (Migrated from github.com)

Hi,  嗨,

It might be something about FSR-FG swapchain or AL2 then. Because Nukem's use SL swapchain and have some issues with AL2 too.可能是与 FSR-FG 交换链或 AL2 相关的问题吧。因为《Nukem》使用了 SL 交换链,而在《AL2》中也存在一些问题。

These are 2 topics which is different between native/Opti FSR-FG and Nukem's.这两个主题是不同的,它们分别属于原生/优化 FSR-FG 模式和 Nukem 模式所涉及的范畴。

It is probably related to the FSRFG swapchain. Since OptiScaler's FSRFG produces the same frame rate as the game's native FSRFG, OptiScaler itself is most likely not at fault.

I referenced Nukem's rendering path and compiled a modified version of OptiScaler's FSRFG input + FSRFG output path.

In Final Fantasy XVI, it can achieve frame rates similar to Nukem's implementation. However, in the Unity-based Zenless Zone Zero, there is a bug that I am currently unable to fix: the game freezes and crashes at the exact moment it enters a scene where Frame Generation becomes active.It works perfectly in Final Fantasy XVI, with no abnormal behavior.

> Hi,  嗨, > > It might be something about FSR-FG swapchain or AL2 then. Because Nukem's use SL swapchain and have some issues with AL2 too.可能是与 FSR-FG 交换链或 AL2 相关的问题吧。因为《Nukem》使用了 SL 交换链,而在《AL2》中也存在一些问题。 > > These are 2 topics which is different between native/Opti FSR-FG and Nukem's.这两个主题是不同的,它们分别属于原生/优化 FSR-FG 模式和 Nukem 模式所涉及的范畴。 It is probably related to the FSRFG swapchain. Since OptiScaler's FSRFG produces the same frame rate as the game's native FSRFG, OptiScaler itself is most likely not at fault. I referenced Nukem's rendering path and compiled a modified version of OptiScaler's FSRFG input + FSRFG output path. In Final Fantasy XVI, it can achieve frame rates similar to Nukem's implementation. However, in the Unity-based Zenless Zone Zero, there is a bug that I am currently unable to fix: the game freezes and crashes at the exact moment it enters a scene where Frame Generation becomes active.It works perfectly in Final Fantasy XVI, with no abnormal behavior.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
roman/OptiScaler2#1087
No description provided.