Frame rate reduction by blending instead of drop

mathew7

New Member
Hello,

for some time now I've had the idea of capturing gameplay at 120fps and blending 2 or 4 frames to encode at 60 or 30fps, instead of just dropping them.
The reasoning for this is based on why movies are still watchable at 24fps (have you ever wondered why pausing a movie during intense action is always a blur?).
So well-shot movies will have a frame exposure of 1/fps (or very close), meaning a single frame will capture what the eye should really see during that frame time. If a film is shot correctly at 60fps (with almost 1/60th frame exposure), blending 2 frames will still allow "our brain" to be fooled into seeing the action at 30fps. However, reducing the rate by dropping frames means skipping some information which the brain will pick up (infact I realized this by watching a movie pan scene which obviously was jerky...and behold, whenever I paused, I would see clear images).
So, as each computer-generated frame represents 1/inf expossure, my thinking is that blending those frames will still present a 120fps-like fluid motion even at 30fps. I assume 80% of the 120fps-like experience could be achieved, the rest being negligible due to non-interactive nature. Thus bringing more fluid recordings at lower impact to encoder (or allow for more quality at same bitrate). Unfortunately I'm kind of lazy to even test for this (hopefully, this post will motivate me :D ).
Sooo....I always turn off motion blur, but I've seen reviewers mentioning that some action games are really good/playable even though they are capped at 30-fps.
PS: I have 144Hz monitors, but I keep it at 120Hz so it will be a multiple of 30/60 for when I do record (no, I avoid vsync...let's not go into that discussion). I don't get why they made 144 and not just 120 or 150.
 

Muf

Forum Moderator
It should be possible to implement this as a filter, you would just need a single accumulation buffer. Not sure if OBS Studio's architecture allows gathering more input frames than are being output though. If you can find a developer willing and able to work on this for you, it could probably be implemented.

Note though that for motion blur to look realistic, you need about 50 samples per frame, or 1200fps for 24fps output, and 3000fps for 60fps output, or else you will get visible steps in the blur trails. This precludes using the effect on all but the most simple of games like Minecraft. Most motion blur effects implemented in-game using a velocity map and fragment reprojection will look much more realistic than naive frame blending, so I'd recommend turning that on when available instead.
 

dodgepong

Administrator
Forum Admin
I don't believe filters can get more input frames than OBS is set to output, so I think this would have to be implemented inside game capture itself.
 

mathew7

New Member
It should be possible to implement this as a filter, you would just need a single accumulation buffer. Not sure if OBS Studio's architecture allows gathering more input frames than are being output though. If you can find a developer willing and able to work on this for you, it could probably be implemented.
I know...I'm a developer myself, but bad with motivation, especially to learn OBS architecture. I was however wondering about an option to the already existing rate reduction option. I mean, they still reference each frame, so before just removing it from a list, add it to the previous or next frame (simple per-pixel add+average...of course not knowing inner workings)

Note though that for motion blur to look realistic, you need about 50 samples per frame, or 1200fps for 24fps output, and 3000fps for 60fps output, or else you will get visible steps in the blur trails. This precludes using the effect on all but the most simple of games like Minecraft. Most motion blur effects implemented in-game using a velocity map and fragment reprojection will look much more realistic than naive frame blending, so I'd recommend turning that on when available instead.
I brough up motion blur just to mention that some games already implement this idea/theory. What I want is for my 30fps video to present a similar experience like watching a game on 120fps monitor (if you capture a monitor with at 1/30s exposure, you will get the same ghosting steps/blur lines you mention). When you say you watch a video, you don't think about pausing it and playing it frame-by-frame.
I mean I can definately feel/see the difference between 60 and 120fps (to the point of headaches on returning to 60fps).
 

mathew7

New Member
Funny thing about motivation....after starting this thread I actually made a 120fps high-bitrate capture and tried different edits on it, and the results are worse than I thought. I remembered why I hated motion blur.
So, 50% blend is horrible (or 4x25%), gradual blending is a little better (1st barely visible, 2nd more, 3rd even more, 4th predominant) but still noticeable. Now I'm thinking about also blurring the "dropped" frames (1st 3 in group of 4)...but we get far from the original implementation I thought, not to mention choosing all the weights.
 

Muf

Forum Moderator
So, 50% blend is horrible (or 4x25%), gradual blending is a little better (1st barely visible, 2nd more, 3rd even more, 4th predominant) but still noticeable.
You need to blend in linear gamma (1.0). After Effects for instance has that in Project Settings as "Blend Colors Using 1.0 Gamma". No special weighting should be needed.
 
Top