Page 1 of 1

Add black frame insertion

Posted: Sun Jul 31, 2022 4:09 am
by kogasa
Hello! I'm a new player with a genetically heritable sensitivity to certain kinds of motion blur. When panning the camera, I quickly become nauseous due to motion blur from persistence. (See here or here for a demonstration/explanation of this kind of blur.) This is caused by the combination of a 60FPS cap, sample-and-hold display (e.g. any LCD or OLED monitor), and fast pixel movement. Since the FPS lock can't/won't be changed, I suggest adding black frame insertion as an option. This would improve accessibility for users like me, but also improve perceived smoothness for all players using high (120+Hz) refresh rate displays. (In the meantime, I'll try to work around this by using a detached camera, keeping a far-out zoom, and minimizing camera panning. Changing the game scale to 4 to make use of my 240Hz display also solves the problem, but introduces a few of its own.)

The idea of BFI is to alternate between showing a frame of the game and a frame of pure black. This completely eliminates motion blur due to persistence, and can give you motion clarity similar to the old flickering CRT displays. If you're using a 120+Hz display, this software BFI demo might be helpful.

Some considerations:
  • Ideally, the monitor would do all this by actually strobing the backlight (e.g. NVIDIA ULMB) instead of the game rendering black frames. However, most monitors don't have this feature or have a very limited implementation. Higher refresh rates alleviate the problem in a less complicated way, so backlight strobing is a relatively niche/poorly supported feature.
  • Software BFI probably needs to use (and require) vsync to avoid microsutter.
  • Software BFI may simply exchange some persistence blur with pixel transition time blur. However, most 120+Hz monitors should have fast enough response times to make software BFI a clear improvement.
  • Depending on how the game's rendering works on a technical level, implementing BFI might be feasible or even easy. There is no obvious reason why BFI would be obstructed by the game's dependence on 60UPS in the same way that increasing the framerate is. It is possible that engine limitations make it too hard, but I figured it's worth suggesting just in case.
Thanks for reading!

Re: Add black frame insertion

Posted: Sun Jul 31, 2022 4:25 pm
by jodokus31
Impressive this demo.
The version with black frame is a lot clearer. But it might flicker a bit.

Re: Add black frame insertion

Posted: Sun Jul 31, 2022 5:21 pm
by mmmPI
kogasa wrote: Sun Jul 31, 2022 4:09 am ( Changing the game scale to 4 to make use of my 240Hz display also solves the problem, but introduces a few of its own.)
There is this mod called Global Tick Time Scale : https://mods.factorio.com/mod/GTTS that may alleviate some problems of scaling the game to 4. It would divide most in game value by 4 so that machines and player speed feel similar to the 60 UPS gameplay. it says in the description : "Change the UPS/FPS of Factorio without changing the game pace. Allows almost-normal gameplay at 120hz."

I'm using it to do the opposite so i can't tell for sure how it works with 240 Hz it must require better hardware. From what i understand with your description, it would be less intensive to show a black frame half of the time rather than calculating the whole 240 frames every second. And maybe you knew about the mod already but as you said you were a new player i figured it was worth mentionning just in case :)

Re: Add black frame insertion

Posted: Mon Aug 01, 2022 2:07 am
by ssilk
Hm. Perhaps I didn’t understand the problem. You want Factorio to display one frame and the remaining time a black screen, until the next game-update comes?

Re: Add black frame insertion

Posted: Mon Aug 01, 2022 7:46 am
by Koub
kogasa wrote: Sun Jul 31, 2022 4:09 am See here or here for a demonstration/explanation of this kind of blur.
Hi, not sure if it's on purpose, but both are the same links.

Re: Add black frame insertion

Posted: Wed Aug 03, 2022 7:19 am
by kogasa
jodokus31 wrote: Sun Jul 31, 2022 4:25 pm Impressive this demo.
The version with black frame is a lot clearer. But it might flicker a bit.
I think vsync would be necessary and sufficient to avoid flickering (as long as the monitor's refresh rate is more than 2x the flicker fusion threshold of ~60-70Hz). You'd need to ensure that you're always alternating between 1 frame of game and 1 frame of black every refresh even if the game is slower/out of sync with the monitor.
mmmPI wrote: Sun Jul 31, 2022 5:21 pm
There is this mod called Global Tick Time Scale : https://mods.factorio.com/mod/GTTS that may alleviate some problems of scaling the game to 4. It would divide most in game value by 4 so that machines and player speed feel similar to the 60 UPS gameplay. it says in the description : "Change the UPS/FPS of Factorio without changing the game pace. Allows almost-normal gameplay at 120hz."

I'm using it to do the opposite so i can't tell for sure how it works with 240 Hz it must require better hardware. From what i understand with your description, it would be less intensive to show a black frame half of the time rather than calculating the whole 240 frames every second. And maybe you knew about the mod already but as you said you were a new player i figured it was worth mentionning just in case :)
Thanks very much for the suggestion. I have been using this mod to play almost completely normally at 240FPS. There are some small quirks but nothing gamebreaking so far.
ssilk wrote: Mon Aug 01, 2022 2:07 am Hm. Perhaps I didn’t understand the problem. You want Factorio to display one frame and the remaining time a black screen, until the next game-update comes?
That's the idea. Blanking the screen in between updates eliminates motion blur from eye tracking. If you played video games on a CRT, you might remember how clear the motion looked. They do this naturally: a small part of the screen is illuminated by an electron beam for an instant before fading. As long as this is done fast enough (100-120+Hz) it doesn't noticeably flicker.
Koub wrote: Mon Aug 01, 2022 7:46 am Hi, not sure if it's on purpose, but both are the same links.
Fixed, thanks.

Re: Add black frame insertion

Posted: Thu Dec 28, 2023 10:36 pm
by TheoMarque
Sorry for reopen this thread after 18 months but I bought OLED 120HZ panel Ad game looks, awful. Motion blur in OLED panels exist and a games that only know about VSYNC ignoring what panel is used look that same bad.
Worst look on rails. Two vertical lines of tracks and blurred making blur size 8x times than rail is. In other words - if rail track is 3px wide, blur has 16px thick.
After speed up game twice - problem still occur when frame rate just drop belowe 120Hz or without speed up - below 60Hz. Visible frame drops looks like "slide show". when you add motion blur and dropping FPS (due UPS) game is visually not acceptable to play.

What I would expect?
Better implementation of GSUNC/FreeSync in Factorio properly report to game driver current framerate with high frequency.
Better implementation of frame rate generation - it can be impossible due sync between UPS/FPS but maybe doubling framerate can help (like speed up game)? Is not a problem to run game at 120Hz, most panels has this resolution as native or other (n * 60Hz) values. I can sacrify some HZ for Factorio for smooth gameplay.

Before buying OLED panel - used QD OLED panel - game looks brilliant even when frame rate drop down to 37 FPS (due UPS).
Here is some explanation what and why:
https://blurbusters.com/faq/oled-motion-blur/

So, My beloved Dev's, I spent more than 6666 hours, please, do something, because I not have a room for secondary panel only for Factorio (4K gaming on 40" monitor) for upcoming Space Age.