I’ll improve FBNeo’s Hires support in the next few days, i just noticed we actually support other vector games (actually, most of them ?), and my code for bwidow/gravitar/spacduel was scaling to the wrong res (1440p, which seems to be a problem with RA if it’s also used for viewport on a 1080p screen ?).
Thanks everyone for your helpful suggestions!
@ProfessorBraun Do you mind sharing your presets for these? #1 and #3 have a nice feel to them
Yes sure, 1st shader is a custom Crt-Royale so my preset won’t work with your files,when I have time I’m gonna make a zip file and upload everything. But I have another preset.
shaders = "10"
shader0 = "shaders_slang/crt/shaders/guest/lut/lut.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 = "shaders_slang/crt/shaders/guest/color-profiles.slang"
filter_linear1 = "true"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = ""
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders_slang/crt/shaders/guest/d65-d50.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "WhitePointPass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders_slang/crt/shaders/guest/afterglow.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = "AfterglowPass"
float_framebuffer3 = "false"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders_slang/crt/shaders/guest/avg-lum.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "true"
alias4 = "AvgLumPass"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders_slang/crt/shaders/guest/linearize.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "LinearizePass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders_slang/blurs/blur-gauss-h.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders_slang/blurs/blur-gauss-v.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "GlowPass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders_slang/crt/shaders/guest/linearize_scanlines.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = ""
float_framebuffer8 = "true"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders_slang/crt/shaders/guest/crt-guest-dr-venom.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = ""
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "viewport"
scale_x9 = "1.000000"
scale_type_y9 = "viewport"
scale_y9 = "1.000000"
parameters = "TNTC;CP;CS;WP;wp_saturation;SW;AR;PR;AG;PG;AB;PB;sat;lsmooth;GAMMA_INPUT;TATE;IOS;OS;BLOOM;brightboost;brightboost1;gsl;scanline1;scanline2;beam_min;beam_max;beam_size;h_sharp;s_sharp;csize;bsize;warpX;warpY;glow;shadowMask;masksize;vertmask;slotmask;slotwidth;double_slot;mcut;maskDark;maskLight;CGWG;gamma_out;spike;inter;interm;bloom"
TNTC = "0.000000"
CP = "0.000000"
CS = "0.000000"
WP = "0.000000"
wp_saturation = "1.000000"
SW = "1.000000"
AR = "0.070000"
PR = "0.050000"
AG = "0.070000"
PG = "0.050000"
AB = "0.070000"
PB = "0.050000"
sat = "0.100000"
lsmooth = "0.900000"
GAMMA_INPUT = "2.500000"
TATE = "0.000000"
IOS = "0.000000"
OS = "0.000000"
BLOOM = "0.000000"
brightboost = "4.000000"
brightboost1 = "1.000000"
gsl = "0.000000"
scanline1 = "1.000000"
scanline2 = "5.000000"
beam_min = "2.000000"
beam_max = "2.000000"
beam_size = "0.000000"
h_sharp = "20.000000"
s_sharp = "0.000000"
csize = "0.000000"
bsize = "600.000000"
warpX = "0.000000"
warpY = "0.000000"
glow = "0.500000"
shadowMask = "-1.000000"
masksize = "1.000000"
vertmask = "0.000000"
slotmask = "0.000000"
slotwidth = "2.000000"
double_slot = "1.000000"
mcut = "0.000000"
maskDark = "1.000000"
maskLight = "1.000000"
CGWG = "0.000000"
gamma_out = "2.200000"
spike = "0.000000"
inter = "800.000000"
interm = "0.000000"
bloom = "0.000000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3"
SamplerLUT1 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron1.png"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/crt/shaders/guest/lut/sony_trinitron2.png"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "shaders_slang/crt/shaders/guest/lut/other1.png"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
It only works with FBNeo and Hi-res mode dipswitch “on”. It won’t work with Mame (libretro), for that one I need to lower input gamma and do other tricks so I’ll stay with FBNeo for the moment (for vector games). @guest.r Hey nice idea with ScaleFX , I’m curious to see how it looks. Your afterglow shader + ScaleFX could be good for vector games.
On a sidenote, now all FBNeo’s vector games have their Hires 1080p mode, and it seems FBNeo supports every vector games apart those from Cinematronics hardware.
That’s awesome news!
Thank you for this. I have created a slangp file with it BUT in RetroArch I get a failed-to-apply error message. I have checked the .slang files referenced paths and they are OK. What else may I need to check in order to have the shader up?
Thank you
Hey I’m not sure but load guest dr-venom preset first,after that you can change blur horizontal and vertical passes with blur-gauss-h and blur-gauss-v,apply. And finally copy paste my preset.
I find myself in the same boat as the OP here. I originally discovered Retroarch via RetroPie and now use the standalone Retroarch as my main emulation setup on my PC. I only play a few vector games, and the standalone version of MAMEUI does a decent job of approximating a vector monitor via D3D11 and HLSL. Unfortunately, the two slang vector shaders that I find in Retroarch currently provide passable, but ultimately unsatisfying results when compared to the former. vector-glow-alt-renderer.slangp currently provides the best results for me within Retroarch, but again the standalone HLSL shader is subjectively “better” IMO. My question is twofold. 1) is it possible to port the HLSL shader into a future iteration of RA in the same way as has been done with the MAME NTSC CRT HLSL shader? Failing that, are there any good tutorials on writing one’s own shader chain preset file using the resources already included in RA’s slang library?
When I ported the rest of it, I recalled the vector stuff needing some hooks into the program itself to provide information about the vectors, but now that I just looked at it, it doesn’t seem so bad, so maybe I’ll take another stab at it.
Thank you and great work on the CRT portion BTW. Looking at the shader parms for the former, it was incredibly easy to identify what I was looking at, and I remember saying to myself, if someone could do this for the vector portion, we would really be able to lay a shellacking on the Empire! So may the Force be with you.
Any chance progress has been made on the other vector games yet?
do you know how to combine this type of glow with duimon’s bezel project reflective shader presets? I have no idea how to load one preset,…and then apply just the glow from something else.
My bezel project presets use the Mega Bezel. It cannot be appended or prepended.(Effects need to be surgically added by @HyperspaceMadness.)
ahhhh. yeah, would be nice to add in a slight glow for the vector games.
There are several problems why the MAME HLSL vector shader cannot be ported (easily) and the shader itself is none of them.
Actually MAME’s vector.fx shader is not the typical pixel shader. This shader is not applied to the full-screen canvas. It is applied to each vector line, which is also just a rectangle. And the only thing this shader does is rendering round corners to those rectangles, to get smooth line ends, that connect nicely with each other.
RA has no access to those rectangles, it just gets the already rendered vectors as a texture. This is done by the MAME core using DirectDraw - if I’m not mistaken - instead of DirectX. Unfortunately the line rendering of DirectDraw in MAME is flawed. Not only does it not render round corners, it also doesn’t render the lines as rectangles. The result looks more like a parallelogram, where one side is always aligned either to the x or y-axis, depending on the line angle. This becomes apparent when increasing the line thickness.
What you currently can achieve with RA is something like this. (I only invested some minutes, so it’s far from perfect)
What you need to do is:
- Enable the Alternative Renderer in the MAME core settings (otherwise the rendered vector image will only have a size of 640x480)
- In the Slider Controls of MAME increase the Maximum Beam Width to e.g. 5.0
- Use a shader that supports some kind of blurry glow effect (controlling the brightness would also be beneficial)
I used my own shader chain CRT Yah! in the example above. (deactivated scanlines/mask, maximum brightness and halation)
I’m going by memory and it’s been a long time, but I don’t remember vector games having such thick, glowy lines. They were more thin and crisp, with maybe just a slight glow. The vector dots were pretty visible. Those games had a really disctinct look, which looked modern and Tron-ish at the time.
I haven’t played the game in an actual arcade, but according to footage I saw, the lines are quite thick, at least when captured with a camera.
I worked some time ago on two vector presets you can see here
…however, like explained some posts before the one linked, isolated points used to be brighter (like shots in asteroids), so with a bigger halo, but actually the core renders everything black or white and for a shader figuring if something is a point or a line would be quite heavy, expecially on high resolutions like the ones vector games are rendered to.
Yeah, they are going to look more glowy in a phone camera. If you take a video of a light, it doesn’t look quite like if you look at the light with your eyes. That being said, it has, again, been a lot of years since my arcade days, but the lines look more thin, tight, crisp in the game.
That’s pretty cool. I just have no idea how to add something like this to the FBNeo core with its Hi-Res mode turned on for vector games, and still have Duimon’s version of the Mega Bezel Reflective shaders show the reflections on the bezel. As soon as I turn on FBNeo’s hi-res mode, which is great by the way, the reflections from the initial shader go away. I’d like to add those back, and also add the slight glow. Surgically, I have no idea where to look, and what values to set.