Optimal shaders, AR and visual settings

You can see the FPS in the window border.

Motion blur shaders can be implemented. RetroArch allows you to take up to the 7 last frames as input to the shader.

no fps counter on fullscreen then?

Re: scanline distortion: if anyone wants to try this shader, it’s a combination of Fes’ Pixelate and Themaister’s Scanline shaders: http://www.mediafire.com/?26nyp6dtk6wm1tw

I don’t know if it actually fixes the problem or not, so any feedback either way would be helpful.

Tanuki: Ha!

fogueman: Only in windowed mode. We know what’s causing the scanline artifacts (non-integer scaling), but afaik there isn’t yet a full-screen-appropriate shader that both eliminates the scanline artifacts AND maintains a game’s proper aspect ratio.

Example from FBA Metal Slug intro: windowed w/ no artifacts (4x vertical integer, stretched horizontally to 4:3 = 1194x896) fullscreen w/ artifacts (stretched to screen height, stretched horizontally to 4:3 = 1439x1080)

Hmm, this does seem to eliminate the scanline artifact problem. However, it also looks very different than the normal CRT shaders, for the worse in my opinion. The scanlines seem much, much more subtle.

Here are three normal/shader images (integer, windowed mode) from FBA running Nemo: http://imgur.com/a/7QjHj

I’m not a programmer, but I appreciate (at least somewhat :)) the desire to keep things simple.

That said, isn’t your third item (Maximum integer scale, Y, aspect corrected for X) what RetroArch does in windowed mode when Windowed X Scale = Windowed Y Scale and Aspect Ratio = 1.333300? Since RetroArch can achieve those settings in windowed mode, I think it would make sense if RetroArch could do that in fullscreen too, without needing an external shader.

I don’t like relying on shaders because I’m afraid they will break someday, and then RetroArch will be missing useful features. Also, some shaders don’t necessarily work with every core. For example, the CRT shaders do not work on GBA cores I’ve tried; and the NTSC filters seem to screw up GenPlus and FBA (at least on my system).

Anyhow, just my thoughts on it.

In windowed mode, sure, but only when you start up. If you choose to resize, you’ll get a different result (note that d3d9 drvier cannot resize).

@jane I added a line (line #62) where you can change the value of ‘scanline_darkness’. Greater numbers equal darker scanlines: http://www.mediafire.com/?6xw2tb94yuwd3m3

it´s not totally solving the problem here, hunterk.

Whats the max value you can set for scanline darkness??

There’s no real maximum, but 8.0 made black dotted lines on my machine.

Here are some screenshots.

Order Blargg NTSC (rgb) (snes9x) ntscpass3only.shader (Retroarch) Tv mode: (snes9x) Cgwg-CRT-flat.cg (Retroarch - bsnes):

I like Blargg NTSC (rgb) the most. However, I can’t find a shader that replicates it. Every crt shader has scanlines that are too strong. And the NTSC shaders I found look radically different than Blargg’s.

Edit: Added ntscpass3only.shader.

It would take blargg himself probably to do a port of his C code to a shader - code seems to have been too complex for any of the shader devs on byuu’s board (and Maister) to figure out.

OV2 posted the NTSC + 25% Darkening (scanlines) CPU filters (not GPU shaders) they use in Snes9x a while ago. They should work just fine with RetroArch.

Thanks but AFAIK you can already use blargg_ntsc on RetroArch using external filters, so I don’t really see the appeal here.

What needs to happen though is that somebody converts the blargg_NTSC C sourcecode to shader form - which was the point of my post - a CPU filter is always going to be inferior to a shader for obvious performance reasons (for this reason alone I have hesitated touching CPU filters for consoles) and it’s really time that the last stronghold of CPU flters gets broken - blargg’s NTSC filter is the only prominent filter right now that doesn’t have a shader implementation.

@Tripulent If you only want the color correction and bleed of NTSC-RGB, you can try isolating the 3rd pass of cgwg+Themaister’s NTSC shader.

applied: clean comparison:

Oh, I agree there isn’t much at all. It all boils down to personal preferences. Tripulent seemed to like the appearance of Snes9x RGB (which is an all-in-one NTSC_RGB+25% Scanlines) better and I just wanted to let him know that the exact same filter was available for RetroArch. It is far from an optimum solution though.

Personally, I find myself in the reverse situation where the Intel HD in my laptop can’t handle Caligari-Scanlines or CRT shaders (even simple) but has no problem with the above CPU filter (in spite of being a shabby 1.06Ghz Celeron!). I used to combine the “normal”(no scanline) RGB CPU filter with hunterk’s scanline-3x or Maister’s scanline shaders but found them too dark or too subtle respectively. Overall, like Tripulent it seems, I still prefer the appearance of the Snes9x filter.

In the end though, I agree that shaders are a far superior solution (I use them on my more capable desktop PC) and I see how CPU time might be precious on consoles/pandora/raspi.

What shader do you recommend for 3D games?

I use CRT-Geom-interlaced-flat since it has high compatibility. Works great for 2D ps1 games. Not so much 3D ones.

Personally, I like the halation CRT shader or SABR +/- scanlines for pretty much everything 16-bit and up.

What shader should I use for gameboy games?

NTSC-darken-RGB:

Looks really nice. But as you can see it is not the proper aspect ratio and there’s a black bar on the side of the screen. Would it be possible to make a port of this shader so that it could work properly with GBA?

Dot:

It looks too blurry. It looks like it has bilinear filtering built into it.

I don’t know that I’m familiar with the NTSC-darken-RGB shader. Would you mind posting it? I’m happy to take a stab at fixing it, though it may be out of my reach.

I usually use the dot shader for GBA, myself, since it looks pretty much like a blurry LCD :slight_smile: The CRT shaders also look good with GBA games, since they’re generally very similar to SNES games, even though it’s not “accurate” by any means.

The one I’m using is the one that was posted in this thread. I am not sure how they differ from blargg’s (if at all). Here they are:

I usually use the dot shader for GBA, myself, since it looks pretty much like a blurry LCD :slight_smile: The CRT shaders also look good with GBA games, since they’re generally very similar to SNES games, even though it’s not “accurate” by any means.

I played gba games on the GBA Player for the gamecube with a crt. Looks really nice, and that’s the look they should try to replicate, not the look of the tiny gba screen.

GBC games look interesting too. The AR is completely off, and it only uses half the screen. To compensate, you can force 16:9, which makes it sorta look like how it originally looked. Scanlines are off though.

Oh, I see. That’s the NTSC cpu filter. It demands a specific resolution, so it often doesn’t work well with other systems than it was designed for (i.e., NES and SNES). AFAIK, there’s no real solution to the issue other than re-writing the filter to work with each system’s specific resolution. Genesis Plus GX, for example, uses a modified version as a compile-time option, since the normal filter won’t work correctly. It produces weird output just like you’re experiencing, with everything squished up onto one side and a black bar for the rest.

Re: GBA on CRT, good point! I had totally forgotten about the Gamecube player.

I’ve tried (and failed) a couple of times to write a motion blur shader that would mimic the slow response time of the GBA LCD, but I agree that it’s more of a novelty. :stuck_out_tongue: