Mega Bezel Reflection Shader! - Feedback and Updates

That is one reason I continue to use the official MAME binary as it handles horizontal and vertical aspect ratios much better, you can have a horizontal and vertical ini file to target and customise visuals for each display output.

Yeah I wish we could have something like that in retroarch. I’ve gone almost 100% retroarch for mame because of the shader support.

Yeah just a shame the run ahead feature isnt supported by MAME :frowning:

Will you be using Guest.r new shader, CRT - Guest - SM ???

I haven’t played with the shader yet, I’m not sure how new it is, but I would probably wait before integrating a new shader until its been around for a little and changes have settled down.

This brings up the issue of creating other versions of people’s shaders where the only difference is the added scaling. This isn’t a great situation because this edited shader won’t get updated automatically when the master one does.

Ideally the actual shader in the repo would be updated to integrate the scaling, and the bezel reflection preset would just use the master shader.

Is there a way to disable or hide the scanlines completely? I don’t plan to use scanlines in high-res games but i would still like to use the reflection bezel with them.

There might be, this is the Guest Dr Venom shader, so you could look into that shader about how to reduce the scanlines, There is a readme in the guest folder explaining the settings you could take a look at.

1 Like

Latest Mega Bezel Reflection shader update is up!

Changes:

  • Automatic switching to vertical aspect/scanlines based on content. Thanks @GemaH for the suggestion!
  • The default is to automatically switch both aspect ratio and scanline direction, but both are adjustable to specifically set aspect ratio or scanline direction
  • This causes a little bit of an issue of the reflection clipping bounds not matching exactly the vertical bezel, but I will fix this after I improve the mapping of the reflection all around the tube so we can get the reflection faded out nearer the edges. It is of course still possible to just copy the preset and change the reflection clipping values.
5 Likes

I downloaded the package in the first post and the guest folder is missing, did I miss it?

1 Like

You can just take the CRT folder in the pack and dump it into the Slang shaders CRT folder.

So copy the CRT folder in the pack, then go to the slang shaders folder in retroarch open it, then paste the CRT folder you copied, tell it yes you want to overwrite or w/e.

I imagine it’s not included to decrease file size, decrease confusion and having multiple copies of guests shader if people just want to add it with the rest of the retroarchs shaders.

Got it to work

Is there any way to change the position of the output? I have a PVM overlay and I thought it’d be cool to have a shader to match.

3 Likes

Might be able to to change in retroarchs video settings… Not really sure.

That would look pretty cool if you got it aligned right.

Completely unrelated, but have you made themes on the retropie forums?

Not yet but this seems like something that’s needed, so I’ll probably add it sometime soon.

1 Like

Yeah, seems like it may be needed, I kinda like image-adjustment for that stuff personally.

Yep, same Lilbud as the retropie forum

1 Like

I think I got it, I’m definitely going to make a better looking overlay as the current one isn’t really all that good. I can probably get a little nicer looking frame.

3 Likes

I have one more suggestion, should be an easy one.

Having the “image-adjustment” shader (from the “misc” folder) as the first shader in the chain, you can apply it’s effects in the whole shader. The only effect i’m interested is it’s brightness boost. unlike similar options in the other shaders, this one also increases the scanline brightness in the black color. This way you can have visible scanlines in areas that don’t have graphics like this:

bublbobl-191222-133520

You can see in the empty, black area, the scanlines are slightly visible. This is how my real CRT arcade monitor looks like. And the more you increase the brightness, the more visible the scanlines become. Without this you just get a black area without scanlines and no option can make them appear.

Adding the image-adjustment shader in the chain is a bit of a pain because in order for this effect to work it has to be the first one. And because there are 17 shaders in total you have to manually change all the numbers in the shader preset cfg file, one by one (each shader has a few numbers to change). RetroArch doesn’t let you add a shader slot as the first one or any other spot, it always adds extra slots as the last one :frowning:

4 Likes

Did the x/y modifiers work correctly with image-adjustment when you did this?

The scanline thing is honestly REALLY COOL to know, so thanks for that!

I think so. I didn’t notice anything out of place in the end result. The only issue is that by increasing the brightness slightly (just 5%) to make the scanlines appear, the bezel also gets a bit brighter but you can easily fix this since it has it’s own separate brightness control.

You can try my preset and see if you can find any other errors

shaders = "18"
shader0 = "../shaders_slang/misc/image-adjustment.slang"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
shader1 = "../shaders_slang/crt/shaders/guest/lut/lut.slang"
filter_linear1 = "false"
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/color-profiles.slang"
filter_linear2 = "false"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = ""
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/d65-d50.slang"
filter_linear3 = "false"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = "WhitePointPass"
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/afterglow.slang"
filter_linear4 = "false"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = "AfterglowPass"
float_framebuffer4 = "false"
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/avg-lum0.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 = "../shaders_slang/crt/shaders/guest/avg-lum.slang"
filter_linear6 = "false"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "true"
alias6 = "AvgLumPass"
float_framebuffer6 = "false"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "../shaders_slang/crt/shaders/guest/linearize.slang"
filter_linear7 = "false"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "LinearizePass"
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/blur_horiz.slang"
filter_linear8 = "false"
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/blur_vert.slang"
filter_linear9 = "false"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = ""
float_framebuffer9 = "true"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "1.000000"
shader10 = "../shaders_slang/crt/shaders/hyperspacemadness/crt-guest-dr-venom-with-scaling.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = "BR_BlurScanlinesInputPass"
float_framebuffer10 = "true"
srgb_framebuffer10 = "false"
scale_type_x10 = "viewport"
scale_x10 = "1.000000"
scale_type_y10 = "viewport"
scale_y10 = "1.000000"
shader11 = "../shaders_slang/crt/shaders/hyperspacemadness/hsm-mega-bezel-overlay.slang"
filter_linear11 = "true"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = "BR_CrtWithOverlayPass"
float_framebuffer11 = "true"
srgb_framebuffer11 = "false"
shader12 = "../shaders_slang/crt/shaders/hyperspacemadness/hsm-blur-scanlines.slang"
wrap_mode12 = "clamp_to_border"
mipmap_input12 = "false"
alias12 = "BR_EdgeBleedInputPass"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
shader13 = "../shaders_slang/crt/shaders/hyperspacemadness/hsm-bleed-screen-edges.slang"
filter_linear13 = "false"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "false"
alias13 = ""
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "../shaders_slang/crt/shaders/hyperspacemadness/hsm-reduce-resolution.slang"
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "true"
alias14 = ""
float_framebuffer14 = "false"
srgb_framebuffer14 = "false"
scale_type_x14 = "absolute"
scale_x14 = "480"
scale_type_y14 = "absolute"
scale_y14 = "270"
shader15 = "../shaders_slang/crt/shaders/hyperspacemadness/hsm-blur-horiz.slang"
filter_linear15 = "false"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = ""
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "source"
scale_x15 = "1.000000"
scale_type_y15 = "source"
scale_y15 = "1.000000"
shader16 = "../shaders_slang/crt/shaders/hyperspacemadness/hsm-blur-vert.slang"
filter_linear16 = "false"
wrap_mode16 = "clamp_to_border"
mipmap_input16 = "false"
alias16 = "BR_ReflectionBlurredInputPass"
float_framebuffer16 = "true"
srgb_framebuffer16 = "false"
scale_type_x16 = "source"
scale_x16 = "1.000000"
scale_type_y16 = "source"
scale_y16 = "1.000000"
shader17 = "../shaders_slang/crt/shaders/hyperspacemadness/hsm-mega-bezel-reflection.slang"
filter_linear17 = "true"
wrap_mode17 = "clamp_to_border"
mipmap_input17 = "false"
alias17 = ""
float_framebuffer17 = "false"
srgb_framebuffer17 = "false"
scale_type_x17 = "viewport"
scale_x17 = "1.000000"
scale_type_y17 = "viewport"
scale_y17 = "1.000000"
parameters = "ia_target_gamma;ia_monitor_gamma;ia_overscan_percent_x;ia_overscan_percent_y;ia_saturation;ia_contrast;ia_luminance;ia_black_level;ia_bright_boost;ia_R;ia_G;ia_B;ia_ZOOM;ia_XPOS;ia_YPOS;ia_TOPMASK;ia_BOTMASK;ia_LMASK;ia_RMASK;ia_GRAIN_STR;ia_SHARPEN;ia_FLIP_HORZ;ia_FLIP_VERT;TNTC;CP;CS;WP;wp_saturation;SW;AR;PR;AG;PG;AB;PB;sat;STH;GAMMA_INPUT;TAPSH;GLOW_FALLOFF_H;TAPSV;GLOW_FALLOFF_V;scl_title;scl_aspect_ratio_width;scl_aspect_ratio_height;scl_vertical_scanlines;scl_use_integer_scale;scl_int_scale_border_min_height;scl_crop_overscan_top;scl_crop_overscan_bottom;scl_crop_overscan_left;scl_crop_overscan_right;scl_int_scale_multiple_offset;scl_non_integer_scale;scl_scale_offset;scl_curvature_x;scl_curvature_y;scl_rounded_corner_size;scl_outer_edge_sharpness;scl_black_edge_height;scl_show_placement_guide;guest_venom_title;glow;IOS;OS;BLOOM;brightboost;gsl;scanline1;scanline2;beam_min;beam_max;beam_size;h_sharp;s_sharp;h_smart;shadowMask;masksize;vertmask;slotmask;slotwidth;double_slot;mcut;maskDark;maskLight;CGWG;GTW;gamma_out;ov_title;ov_show_overlay;ov_opacity;ov_brightness;ov_blend_mode;ov_scale_mode;ov_overlay_texture_res_x;ov_overlay_texture_res_y;ov_screen_height_in_texture;ov_scale_offset_x;ov_scale_offset_y;br_blur_title;br_blur_scanlines_num_samples;br_bleed_edge_stretch;reduce_resolution_lod_level_offset;br_blur_num_samples;br_blur_falloff;br_title;br_reflection_on;br_brightness;br_gamma_adjust;br_contrast;br_saturation;br_outer_blur_offset;br_cutoff_width;br_cutoff_height;br_cutoff_inner_sharpness;br_cutoff_outer_sharpness;br_cutoff_curvature;br_fade_amount;br_fade_speed;br_fade_width;br_fade_height;br_corner_fade_distance;br_corner_fade_speed"
ia_target_gamma = "2.200000"
ia_monitor_gamma = "2.200000"
ia_overscan_percent_x = "0.000000"
ia_overscan_percent_y = "0.000000"
ia_saturation = "1.000000"
ia_contrast = "1.000000"
ia_luminance = "1.000000"
ia_black_level = "0.010000"
ia_bright_boost = "0.050000"
ia_R = "1.000000"
ia_G = "1.000000"
ia_B = "1.000000"
ia_ZOOM = "1.000000"
ia_XPOS = "0.000000"
ia_YPOS = "0.000000"
ia_TOPMASK = "0.000000"
ia_BOTMASK = "0.000000"
ia_LMASK = "0.000000"
ia_RMASK = "0.000000"
ia_GRAIN_STR = "0.000000"
ia_SHARPEN = "0.000000"
ia_FLIP_HORZ = "0.000000"
ia_FLIP_VERT = "0.000000"
TNTC = "0.000000"
CP = "0.000000"
CS = "0.000000"
WP = "0.000000"
wp_saturation = "1.000000"
SW = "0.000000"
AR = "0.070000"
PR = "0.050000"
AG = "0.070000"
PG = "0.050000"
AB = "0.070000"
PB = "0.050000"
sat = "0.100000"
STH = "0.700000"
GAMMA_INPUT = "2.400000"
TAPSH = "2.000000"
GLOW_FALLOFF_H = "0.300000"
TAPSV = "2.000000"
GLOW_FALLOFF_V = "0.300000"
scl_title = "0.000000"
scl_aspect_ratio_width = "40.000000"
scl_aspect_ratio_height = "30.000000"
scl_vertical_scanlines = "0.000000"
scl_use_integer_scale = "0.000000"
scl_int_scale_border_min_height = "1.000000"
scl_crop_overscan_top = "0.000000"
scl_crop_overscan_bottom = "0.000000"
scl_crop_overscan_left = "0.000000"
scl_crop_overscan_right = "0.000000"
scl_int_scale_multiple_offset = "0.000000"
scl_non_integer_scale = "90.000000"
scl_scale_offset = "0.000000"
scl_curvature_x = "2.000000"
scl_curvature_y = "3.000000"
scl_rounded_corner_size = "10.000000"
scl_outer_edge_sharpness = "400.000000"
scl_black_edge_height = "0.900000"
scl_show_placement_guide = "0.000000"
guest_venom_title = "0.000000"
glow = "0.000000"
IOS = "0.000000"
OS = "1.000000"
BLOOM = "0.000000"
brightboost = "1.350000"
gsl = "0.000000"
scanline1 = "8.000000"
scanline2 = "5.000000"
beam_min = "1.400001"
beam_max = "0.850000"
beam_size = "0.650000"
h_sharp = "3.500000"
s_sharp = "0.050000"
h_smart = "0.000000"
shadowMask = "3.000000"
masksize = "1.000000"
vertmask = "0.000000"
slotmask = "0.000000"
slotwidth = "2.000000"
double_slot = "1.000000"
mcut = "0.200000"
maskDark = "0.500000"
maskLight = "1.500000"
CGWG = "0.300000"
GTW = "1.050000"
gamma_out = "2.400000"
ov_title = "0.000000"
ov_show_overlay = "1.000000"
ov_opacity = "1.000000"
ov_brightness = "0.700000"
ov_blend_mode = "0.000000"
ov_scale_mode = "0.000000"
ov_overlay_texture_res_x = "5040.000000"
ov_overlay_texture_res_y = "2880.000000"
ov_screen_height_in_texture = "70.500000"
ov_scale_offset_x = "0.000000"
ov_scale_offset_y = "0.000000"
br_blur_title = "0.000000"
br_blur_scanlines_num_samples = "4.000000"
br_bleed_edge_stretch = "1.000000"
reduce_resolution_lod_level_offset = "0.000000"
br_blur_num_samples = "8.000000"
br_blur_falloff = "0.190000"
br_title = "0.000000"
br_reflection_on = "1.000000"
br_brightness = "0.850000"
br_gamma_adjust = "1.500000"
br_contrast = "1.500000"
br_saturation = "1.000000"
br_outer_blur_offset = "10.000000"
br_cutoff_width = "7.900000"
br_cutoff_height = "4.500000"
br_cutoff_inner_sharpness = "60.000000"
br_cutoff_outer_sharpness = "60.000000"
br_cutoff_curvature = "0.000000"
br_fade_amount = "0.000000"
br_fade_speed = "70.000000"
br_fade_width = "3.800000"
br_fade_height = "2.800000"
br_corner_fade_distance = "0.800000"
br_corner_fade_speed = "2.000000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;OverlayImage"
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"
OverlayImage = "../shaders_slang/crt/shaders/hyperspacemadness/textures/_Horizontal_224x9_ScreenH-70.7%_5040x2880_MultiAspect.png"
OverlayImage_wrap_mode = "clamp_to_border"
OverlayImage_mipmap = "false"
1 Like

I’ll probably check it out when I get up, lol.

The x/y modifiers, you wouldn’t notice when loading up the shader. They are settings in image-adjustment, they move the image from side-to-side, and up-and-down.

By loading the image adjustment as is, it’s default state, it doesn’t touch anything afaik. Otherwise it seems they work when i make adjustments.

The only thing i changed was the brightness boost just a bit, to make the scanlines appear in the dark areas. 5% may be too bright for some (it affects the whole picture) but the scanlines are visible at 4 or 3% as well. You just have to edit the cfg for these values because in the menu it only allows you steps of 5%.

Now i’d like to see if there is a way to seperately adjust the brightness of the black areas only, so it doesn’t affect other colors…

1 Like