ArtB Shaders

Hi community,

for more than 20 years now I’m addicted to retro gaming. It all started with the famous C64S bei Miha Peternel in the late 90s (with a special parallel cable to directly connect my old 1541 to the PC). The next one was bleem!, and then I fell in love with UltraHLE. Finally I ended up with RetroArch and was intrigued by the endless possibilities.

But I don’t want to tell a long story. What I want to say: I always participated of other’s work and commitments. The “others” developed emulators, launchers, overlay, shaders and so on. And I was the one to use them, happily and more and more often, without giving anything in exchange (except for some bucks for some patreon projects).

Now I think that this is the right moment to give something back to the community. I started coding shaders last year, without having any professional coding skills. My job doesn’t give me much time to learn how to code. But I started to do it anyway, just to see how far I would come. The initial impulses to do so came from @Syh and @HyperspaceMadness. I think they don’t know anymore in which way they did help me last year, but I wanted to thank both of you :heart:! I really enjoyed diving into shader programming and had hundreds of entertaining and challenging hours. Guys, you made 2020 a great year for me :partying_face:

So this is it: I’m currently setting up a github account with a shader project. Nearly all of my shaders are ReShade .fx shaders, as I had big problems to understand the concept of RetroArch slang shaders. But I hope to be able to port them to RetroArch one day - maybe with the help of this great community?

As I stated before, I only started coding shaders last summer, so please don’t hang your expectations higher than “floor level”. It’s all still very new to me, but I think it’s time to publish something. So now I will start and see what’s gonna happen.

Any feedback is welcome. I hope that at least a tiny bit of my coding (and also my graphical work) will be useful for someone. This would be great.

Here’s my github account where you will be able to download my latest (upcoming) releases:

Currently, my first shader “ArtB_Outline” ist publicly available.

If you are interested, you can find some additional screenshots (espcially of my all-in-one shader) on RetroArch Discord Server, #showcase and #shaders-and-overlay, which I posted April, 1st (my alter ego is “ArturoBandini”).

The ArtB_Outline shader is 100% of my own work, but most of my other shaders use functions or concepts of other shaders (for example from last years guest.r reshade port) or from “official” RetroArch shaders, which I modified, stripped down or embedded in “compilations”. I’m not sure if I’m allowed to publish shaders with “3rd party code snippets” included. I guess it’s possible, but I might need some help to clarify those things.

Stay tuned, I will post screenshots and information about my shaders soon. On github you will find more and more of my shaders, but also overlays, backgrounds, and shader setup files.

Cheers! frenki (ArturoBandini)


Here are some screenshots of the ArtB_Outline.fx shader:


Coloured Outline:



“Mode 2” + inverted:


Oh, I forgot to mention: ArtB_Outline is also available as RetroArch .slang shader. I was able to succesfully port it over, hence it’s only 1 pass and just simple calculations.

1 Like

Hey, that’s great :slight_smile:

Don’t worry about expectations. Everyone has to start somewhere!


I’ve just uploaded my second shader into my github repository. It’s a ReShade .fx shader for handling splitscreen content: “ArtB_Splitter.fx”. I made it mostly for NDS and 3DS emulation. But there are also some other ways to use this shader, as you will see ;-). It’s highly customizable. There are still some bugs, as it’s still WIP. But I think it’s ready for daily use.

MarioKart 7, standard core output:

Second screen on right side in the middle:

Second screen top left:

With transparency applied:


Of course size, position and alpha transparency are completely customizable for both screens. You can also define the split position, vertical and horizontal. Here’s some crazy stuff you can also achieve:

Define split position:

Zoom and move to the right:

Apply alpha transparency:

Activate background transparency (scanlines come from another shader):


There’s another simple shader in my github repository for reshade. It’s “ArtB_Freezie.fx”. It does just one thing: It freezes the current output, so that you can apply and customize other shaders afterwards and compare always with the same “base” picture. It’s also useful for taking several screenshots for the current emulation output.

You can freeze/toggle the image by either pressing or using the menu. You can also freeze the image while holding right mouse button. For obvious reasons, I will not be able to port this shader to RetroArch, as there is no function to read mouse oder keyboard events from within a slang shader (yet! Maybe that’s worth a development suggestion :wink: ).


Just finding out about these shaders today. Can’t wait to try out the outline ones this evening, they look amazing!

I’m glad you like it. Btw.: I’ve added dithering recently to the outline shader. Now it’s possible to use real monochrome mode (i.e. only black or white pixels, no grey values). It looks quite nice even in coloured mode. Here are some screenshots: (I coded my very own interpretation of dithering, because I didn’t quite understand how the “common” way of dithering works :stuck_out_tongue_winking_eye:). Monochrome gives a nice flashback to the good old Atari ST SM 124 in hires mode.


For best reuslts with outline shading, turn off bilinear filtering or other “smoothing filters” from your source (RetroArch, I assume). Those filters add more colours for smoother game experience, but for outline it’s best to have only a small number of colours. If you emulate a game with more than 16 colours, you can use colour threshold paramaters to “sharpen” the outlines a bit for a better result.

1 Like

@frenki Well, when trying the slang shader of outline for Retroarch, once I try and load it, it kicks me out of Retroarch altogether. So I downloaded Reshade, but it tells me that there are errors compiling all 4 of the available shaders. So thus far no luck for me enjoying these. I’m still seeing if I’m missing something though.

EDIT: I did get the retroarch shader working, seeing if what messed me up with it is doing the same with the reshade files.

I just updated the RetroArch Outline slang shader to the newest version with dithering support. Now it’s on par with the ReShade shader :slight_smile:

@Neofuuma: Could you elaborate what caused your problems with the slang shader? Do you still have problems with ReShade? Maybe others have those problems, too, and I would like to improve my shaders (and add instructions for useage eventually). Any help is appreciated :grin:

Some information that might be useful:

  • which core(s) did you try?
  • which version of RetroArch?
  • which graphics API (DX11/12, OpenGL, Vulkan)?
  • which version of ReShade?

Cheers and thanks for testing!

1 Like

@frenki I think the issue was more an issue with my noobness with GitHub. I was going about right clicking and using “Save Link As”, so the file that I ended up with was not what RetroArch, nor ReShade were expecting. So I went back to the repository and left clicked on each file, copy/pasted into notepad, and then saved that as the proper file name and everything worked, both with the RetroArch shader, and using them via ReShade Not sure if that is how it is supposed to be done, but I was able to play around with it for a bit last night in FBNeo and Mesen cores. :grin: