@RealNC The sahders must draw their magic taking in account the pixels of the original image. For example, if you have a 240p image in a nes game, the sahder will have to create scanlines between all and every single of those 240 lines… But, later on, the final image will have to be drawn to your screen, being 1080p, 4k, or whatever. If your screen output resolution (1080p for example) is not a multiplier of the original image output, that scaling the sahder is doing will never be perfect, because not every scanline will be able to use the same amount of pixels of your tv. Sorry if I’m not explaining well myself, but it’s a simple concept. Your screen can only output a single color for every single pixel. So, to draw the nes image with all of the sader additions (scanlines and other effects) equally between all of the lines, it needs to use the same amount of real pixels on your tv. If you are not using integer scaling, it will not be able to do it, and so it will have to use some of the pixels (on your tv) to draw a blend, like hunterk showed on previous post.
Recently I upgraded my gaming TV to a 4K screen, and the artifacts caused by non-ionteger scales are less visible (practically invisible on lowres ~240p content.
Of course, if you have a lowres TV or monitor, and you don’t like the integer-scale option and don’t like the artifacts on scanlines, you could still use an overlay instead of a shader. You can make an image (png) on photoshop or gimp, with black lines between transparent lines, and apply this image as overlay on your RA. It will make scanlines perfect, but they will not be synced with the lines which separate vertical pixels in your games (some black lines will be in the middle of a pixel for example).
Greetings.