Hi all, I was experimenting with a few settings and trying to combine some Shaders. While I actually prefer CRT effects and pixelated look, there is something with these smoother looking graphics for old games that keeps me using them. My goal is to find the best single Shader configuration for the use of my so called alternative “HD” like setups of the cores. From my playing around so far, the ScaleFx family of Shaders does a pretty good job. They are quite popular at the moment too. But they lack in handling transparency in example and I wanted see what I can do. I am by no means an expert, but wanted to share my findings.
Note: I wanted name this scalefx-plus, but that name would not convey what it is doing.
- Nearest: The reference untouched image without any scaling or filter applied.
- scalefx/scalefx: Base model of the Shader. What I like about this basic one is, it smoothes out lines, but does not make the entire image like a painting. It preserves some sort of “grittyness”, if that makes sense with this sort of Shader. It kinda looks natural.
- presets/xsoft+scalefx-level2aa+sharpsmoother (referred as scalefx-sharpsmoother): This one has some additional anti aliasing and smoothing integrated. What I like about this one is, that hte image is truly smoother than the other tested variants. Its greatest asset is also its greatest weakness, as it is too smooth at times and smudges the image. It works well with 3D graphics. Looks often good on screenshots, but playing too smooth games doesn’t look good.
- scalefx+sgenpt+blur (referred as scalefx-sgenpt): My atttempt and adding a blur and dithering filter. Goal was to keep the gritty look of original scalefx, but smooth out faces and also handle transparency effects on Mega Drive/Genesis better. But looks horrible on some 3D games.
Games are played at their original resolution without upscaling at 1440p. Integer Scaling is enabled. The full screenshots are made with my scalefx-sgenpt preset.
Final Fantasy 7
Playstation, Beetle PSX HW
- scalefx-sgenpt sticks out here as the worst. It really doesn’t like this image and smudges totally and makes it ugly.
- scalefx-sharpsmoother actually resolves the images quite well, just a bit too soft.
- scalefx handles this relatively good, preserving structure of backgrounds. But lacks good handling on large single color surfaces on the characters.
Metroid Prime Pinball
Nintendo DS, melonDS: Top/Down split view
- scalefx-sgenpt looks similar to original scalefx, but is a bit too smooth on the background structure. Look above the right bumper, how it looses the details. scalefx itself preserves these details quiet good.
- scalefx-sharpsmoother as always has this too soft look for my taste. But surprisingly the background structure is better resolved than scalefx-sgenpt.
Mega Drive, Genesis Plus GX
- scalefx-sgenpt preserves the waterfall lines as they are. One can like it or not. Interestingly the left bottom area of the background water gets smudged totally.
- scalefx-sharpsmoother everything is rounded, especially the character is nice. The waterfall is probably the best looking here, as it gets smoothed out to a degree where it makes sense. It blends a bit better with the background.
Streets of Rage 2
Mega Drive, Genesis Plus GX
- scalefx-sgenpt a huge win for the transparency handling here and one of the major reasons why I created this preset. While not perfect and not as good as CRT and composite effects, this dithering effect is resolved pretty good here. Smooths out for the most part and blends well with the background, without getting eye cancer. Just a little detail lost on the face of the characters mouth.
- scalefx-sharpsmoother terrible transparency handling, it just does not work here. But I kinda like how smooth the characters look here and the background stripes on the ground. It fits to the look of the game. Even the faces are preserved well.
- scalefx like sharpsmoother it handles details of character models well, while not being too smooth overall. Works well too, but also has the problem of the bad transparency handling.
Super Mario World
Super Nintendo, Mesen-S
- scalefx-sgenpt Gets the lines straight, while preserving the kinda grittiness and not over smoothing on the font. However the, what are the yellow points structure on the right bottom called? These get too smoothed out here and are dissolved.
- scalefx is very similar to sgenpt, but the structure with the points is preserved very well, while being rounded and keeping their sharpness. I like this one the most here.
- scalefx-sharpsmoother handles the lines well and makes them even more straight. It gets to a point of looking like a painting, which is fine, but playing in motion does not work well for me. Still very cool results here.
Super Street Fighter 2
Super Nintendo, Mesen-S
- scalefx-sgenpt focus was on Ryus face, to keep the pixelated look, while making his cheekds smooth. Also works pretty well with the character select screen on the right side too.
- scalefx has this effect I don’t like much, where the face gets this color banding look. This was also one of the major reasons why I tried to create a preset to get this solved.
- scalefx-sharpsmoother is too smooth and losing details, while also having this kinda color banding like look on the face. Not a fan of.
Just put this into the shaders_slang directory, where bilinear.slangp and nearest.slangp are also found.
shaders = "7" shader0 = "dithering/shaders/sgenpt-mix.slang" filter_linear0 = "false" wrap_mode0 = "clamp_to_border" mipmap_input0 = "false" alias0 = "" float_framebuffer0 = "false" srgb_framebuffer0 = "false" scale_type_x0 = "source" scale_x0 = "1.000000" scale_type_y0 = "source" scale_y0 = "1.000000" shader1 = "blurs/shaders/smart-blur.slang" filter_linear1 = "true" wrap_mode1 = "clamp_to_border" mipmap_input1 = "false" alias1 = "refpass" float_framebuffer1 = "false" srgb_framebuffer1 = "false" scale_type_x1 = "source" scale_x1 = "1.000000" scale_type_y1 = "source" scale_y1 = "1.000000" shader2 = "scalefx/shaders/scalefx-pass0.slang" filter_linear2 = "false" wrap_mode2 = "clamp_to_border" mipmap_input2 = "false" alias2 = "scalefx_pass0" float_framebuffer2 = "true" srgb_framebuffer2 = "false" scale_type_x2 = "source" scale_x2 = "1.000000" scale_type_y2 = "source" scale_y2 = "1.000000" shader3 = "scalefx/shaders/scalefx-pass1.slang" filter_linear3 = "false" wrap_mode3 = "clamp_to_border" mipmap_input3 = "false" alias3 = "" float_framebuffer3 = "true" srgb_framebuffer3 = "false" scale_type_x3 = "source" scale_x3 = "1.000000" scale_type_y3 = "source" scale_y3 = "1.000000" shader4 = "scalefx/shaders/scalefx-pass2.slang" filter_linear4 = "false" wrap_mode4 = "clamp_to_border" mipmap_input4 = "false" alias4 = "" float_framebuffer4 = "false" srgb_framebuffer4 = "false" scale_type_x4 = "source" scale_x4 = "1.000000" scale_type_y4 = "source" scale_y4 = "1.000000" shader5 = "scalefx/shaders/scalefx-pass3.slang" filter_linear5 = "false" wrap_mode5 = "clamp_to_border" mipmap_input5 = "false" alias5 = "" float_framebuffer5 = "false" srgb_framebuffer5 = "false" scale_type_x5 = "source" scale_x5 = "1.000000" scale_type_y5 = "source" scale_y5 = "1.000000" shader6 = "scalefx/shaders/scalefx-pass4.slang" filter_linear6 = "false" wrap_mode6 = "clamp_to_border" mipmap_input6 = "false" alias6 = "" float_framebuffer6 = "false" srgb_framebuffer6 = "false" scale_type_x6 = "source" scale_x6 = "5.000000" scale_type_y6 = "source" scale_y6 = "5.000000" SGPT_BLEND_OPTION = "2.000000" SGPT_BLEND_LEVEL = "0.700000" SGPT_LINEAR_GAMMA = "0.000000" SB_BLUR_LEVEL = "0.720000" SFX_CLR = "0.330000" SFX_SAA = "0.000000" SFX_SCN = "0.000000"