12-13-2017, 08:26 AM
I've finally had the time to check the Nearest Neighbor upscaling and there are some problems.
While the picture looks exactly as expected in non-CRT mode, the absence of vertical smoothing essentially breaks default CRT mode, making unwatchable aliasing artifacts.
It happens because current CRT emulation doesn't take into account the fact that its shadow mask RGB pixel columns are shifted vertically for 1/2 height.
Due to this shift, in reality, a horizontal line won't have sharp edges, but current CRT processing doesn't care about that, and some pixels will have different colors for their top and bot parts.
Previously, it was alleviated by vertical interpolation, making the picture smoother, and the above effect wasn't noticeable at all, but it's not the case when Nearest Neighbor upscaling is enabled.
The cheap workaround would be to ignore Nearest Neighbor upscaling flag when CRT mode is enabled, and apply it only when disabled.
I think that'll be enough to not to bother implementing better approaches (at least, for now).
While the picture looks exactly as expected in non-CRT mode, the absence of vertical smoothing essentially breaks default CRT mode, making unwatchable aliasing artifacts.
It happens because current CRT emulation doesn't take into account the fact that its shadow mask RGB pixel columns are shifted vertically for 1/2 height.
Due to this shift, in reality, a horizontal line won't have sharp edges, but current CRT processing doesn't care about that, and some pixels will have different colors for their top and bot parts.
Previously, it was alleviated by vertical interpolation, making the picture smoother, and the above effect wasn't noticeable at all, but it's not the case when Nearest Neighbor upscaling is enabled.
The cheap workaround would be to ignore Nearest Neighbor upscaling flag when CRT mode is enabled, and apply it only when disabled.
I think that'll be enough to not to bother implementing better approaches (at least, for now).