Handheld Border Shaders

Just to make sure it’s something in the shader rather than somewhere else, disable the shader. Does it still look blurry?

To disable the shader, just press space on the keyboard or start on the controller when the “Load” entry in the shaders menu is selected.

Also, instead of using the “gl” driver with glsl shaders, can you test if the “glcore” driver works and use slang shaders instead? Make sure you know how to revert the setting change in case RA refuses to start anymore when you switch from gl to glcore. I’m not familiar with your device. Usually you clear app settings to restore defaults.

Thanks for the advice. I can confirm that when I press Start in the Shaders > Load menu, I have a raw image in 16:9 format that is sharp.

And unfortunately, it seems that the GPD XD does not support the vulkan driver (it’s the only one I have other than gl: impossible to restart (black screen, frozen application), and I have to edit the retroarch.cfg file by writing gl back in order to restart the application.

I found an overlay which gives a nice rendering but it lacks shadows and I would like to know if I could make a workaround using this overlay and a custom light shader which would display only pixels + shadows but I don’t know if it is possible (I don’t know how to make those shadows). Thanks

Well, I’m out of ideas. Maybe check if integer scaling has something to do with it. Or maybe Settings->Video->Bilinear Filtering.

1 Like

Hi, definitely, it seems to be a scaling issue : I have tried to play with Video filters (dmg-x2 / dmg-x3 / etc.) and shader scales (3 / 4 / 5) and I could have something sharper but too zoomed. Anyway, impossible to find the good combo. Given the fact that I have overheating in any shader scenarios, I think that just a simple overlay is wiser for battery and device longevity. I really thank you for your patience and kind help during this issue.

These shaders are not too heavy, but are not light either. How many FPS do you get in fast-forward with the DMG shader enabled for example?

Try your presets on another computer to rule out if it’s specific to your preset or if it’s a driver issue with the GPD XD.

New version using auto scaling made by nfp0, also a fix he found for GB shaders resizing at different scales.
Beware of that and don’t overwrite the old folder with the new one to avoid confusion.

The new scaling method allows to use only 1 preset file, and from Retroarch 1.11.0, it also gives a wider choice of multipliers.

-For shaders using the GameBoy style dot matrix (GB, GB Pocket, Super Vision), go to the “Shader Parameters” and change “Video Scale” to the multiplier size you want to use.
It can show some left over pixels when you downsize it, but go back to the main shader menu and do “Apply Changes”, that should refresh and clean it.

-For the other shaders using the LCD shader, after having it loaded scroll down to lcd-grid-v2.slang pass and change the scale that should be on 3 or 4x to any other multiplier size you want, then hit “Apply Changes” at that menu page top.

-The Game Gear shader is still using different files for different sizes as it is non square, and gives better results by letting RA handle that kind of resizing.

5 Likes

Yeah, since this update removes of a lot of now useless presets (and probably now incompatible too), it’s best to delete the folder and just use the new one. There should be only one preset of each. Different scale variants are not needed anymore.

I’ll add a fake parameter with a description on how to change scale on the LCD shaders so that users can easily change it.

1 Like
2 Likes

The gb-dmg-4x and gb-pocket-4x etc. are really the only shaders I have found that look like how I remember the GameBoy and GameBoy Pocket since they apply the dot matrix mostly to the content itself and not on the white/empty backgrounds.

Those shaders come with a border though. Is there a way to have only the shader and not the border?

The easiest way to do it is to just reduce the number of shader passes by 1 (the last pass is the one that adds the border)

1 Like

They don’t do that if set correctly.

https://postimg.cc/jL89KF0P

Yeah, I think that is the one I am using (gb-pocket-4x). It looks phenomenal in my opinion. With the drop shadows and all. I didn’t find one that comes close. I don’t care much about the border but the shader itself is awesome.

I installed the updated preset and notice that some of these don’t have a scale option. The pocket high-contrast does for example, but the color and gba presets.

EDIT: Nevermind, i figured it out. Supposed to use the scaling under shader settings.

@Arviel Out of curiosity (as I wrote the instruction on the shader parameters), did you understand which of the shader scales is the correct one to change?

EDIT: I noticed just now that the description is on Libretro’s repository but still not here on @Tatsuya79’s version.
@Tatsuya79 Can you add it to your version so that it’s clearer for users where they should change scale? It’s a bit hard to know the correct shader scale to change otherwise.
Here’s the pull request I’m talking about: https://github.com/libretro/slang-shaders/pull/317

I figured it out because one of the shaders said to change the setting on the “previous” page and sort of went from there.

Sure, but I mean which one of the shader scales did you change. There are multiple passes.
You’re supposed to change the scale of the LCD shader pass.

I only changed this one. From 4x to 8x.

You did good. That’s the correct one.

I was afraid some people might change the wrong one, which causes the picture to be incorrectly rendered, even though it’s not immediately obvious. The problem is the wrong shader scale still scales the picture, so the user might think they changed the correct one when they didn’t, and they might keep playing with a botched picture.

1 Like

I’m not sure if I’m doing something wrong but gg.slangp does not scale with the border after changing 4x to 5x for example.

Default (4x)

5x

@Hari-82 Unfortunately, you cannot change the scale of non-square pixel consoles (such as the GameGear) on the RetroArch interface.
This happens because the scale value in the interface applies similarly to the X and Y direction, but non-square pixel consoles like the GameGear need different scale values for X and Y so that the picture is correctly stretched.

There’s a workaround though. You can manually set the scale you want on the gg.slangp file.
There’s a section on the file that looks like this:

shader0 = "../shaders/lcd-cgwg/lcd-grid.slang"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
scale_type_x0 = "source"
scale_x0 = "4.800000"
scale_type_y0 = "source"
scale_y0 = "4.000000"

Change the scale_y0 value to the scale you want, but make sure to multiply that value by 1.2 and set that on scale_x0. So for example, if you want a scale of 5x you set:

scale_y0 = "5.0"

and then multiply 5 by 1.2 (5 X 1.2 = 6), so you set scale_x0 to 6:

scale_x0 = "6.0"
3 Likes