Hi there,
I’d like to share my take on the sample-and-hold induced blur.
Simple strategies usually insert black subframes to make motion crisp, but this has the obvious limit that the image will be darker (@GemaH).
while more complex ones even tries to emulate the beam, but they always trade brightness for clarity.
The idea here is to alternately brighten/darken every screen pixel without clipping bright tones/crushing dark ones so that the perceived average image will be the source one.
The pro is that the image retains its brightness; the con is that the effect will be less evident on higher and dark colors (due to less “room” to change brightness without going into high/low “saturation”);
On top of that, the LCD or OLED “pixel” refresh (B2W,GTG,BWB) has to be low and the screen refresh at least 120Hz to allow subframes (even though surprisingly my poor mva monitor benefits from this shader even at 60hz but with evident flickering ofc.)
However, even if the theory is exact and implementation correct (which I don’t claim) If the pixel refresh time is high or uneven when going from dark to white vs white to dark, the resulting image color/gamma may differ from the source one.
My LG OLED C2 at 120hz performs very well, my DELL IPS is completely trash and my Benq mva has serious issues with dark tones.
Btw, I’ve added some tunables in the shader for you to try to compensate display shortcomings:
-
Adaptive Strobe (~BFI) Strength:
This is the strength of the effect, the more the less motion blur, the more the flickering. -
Gain adjustment:
The shader will never clip the image, but If it appear unbalanced compared to bright tones you can lower this parameter. -
Post Gamma adjustment:
Even if i never found this useful in my test, maybe some display will need some gamma adjustment. -
LCD Retention workaround cadence (frames):
Some (IPS?) panels may suffer from temporary image retention when BFI/like is used. This parameter will invert the flipping every number of frames configured, hopefully workarounding that issue. -
Debug: Flip effect ON/OFF every (frames):
This value will temporarily disable the shader every specified number of frames, allowing you to easily observe any difference.
I’d like to hear about how this performs on your hardware, possibly when using subframes, maybe I’ll submit for integration to the official slang shader repo.
The shader can be appended without problems.
http://wpage.unina.it/aorefice/sharevari/adaptive_strobe-koko.zip