Mega Bezel Reflection Shader! - Feedback and Updates

I wasn’t talking about the logos, I was referring to the whole mame background piece. I referred to that so you wouldn’t try and mess with the shader settings any, just alter the artwork.

The perforated sides on the image are a nice improvement though. I still think the brightness on the artwork would look nicer if you toned the brightness down some, but it’s not mine, what matters is you enjoy it. It is a nice effect overall :+1::ok_hand::blush:.

EDIT: Nvm, just looked at it some more. If you were using something that wasn’t supposed to be producing a light source of its own my advice would make sense (I feel) but since it has a light source of its own just ignore me, lol.

Very good. It gave me some ideas.

1 Like

This is way too cool. Do you have a 4K version? :smiley:

2 Likes

Can i ask, do you have this available as a download?

2 Likes

Are you planing to share your overlays ?

1 Like

I’m working on a pack of overlays with box arts based on roms from no-intro packs. It’s taking a little long because of my new born baby is consuming my free time. But that is good once HSM can put more improvements on his shader.

You can take a look on the pack for SNK MVS that I shared in this topic.

3 Likes

@GemaH When the shader hits the repo and is stable for a while I will probably do a release, given OrionsAngel’s approval. (A lot of my graphics are modified (Sometimes heavily) versions of his overlays)

@BlackTiger Yes, but make sure to note that these are not standard overlays. (Read the whole thread if you haven’t) Also, I am only working with the “hsm-mega-bezel-reflection-crt-guest-dr-venom” version of this shader so conversion to another, like the GTU, would be up to the user.

@Telmo Nope. I am working in 1920X1080 but since it is a shader, and I am using the “Fill screen” BGIMAGE scaling method, it might look OK.

Also note that I am splitting all my cores, either by script or Hex editor so each graphic has it’s own core shader preset. Any other method would require a bunch of per game presets or using inferior (IMO) cores.

On a side note… the MAME bezel is using a bunch of Photoshop magic to simulate lighting effects. Tonight I am going to model it in 3D and render using a physically accurate renderer… just to see how close I came. :wink:

1 Like

Can you share it with us?

Good or bad I’ll let you guys take a look at it.

Turns out it’s not quite as much fun in reality. :face_with_raised_eyebrow:

1 Like

Hi HyperspaceMadness. I just created an account on the Libretro forums to thank you for your work on this amazing, configurable bezel reflections shader. I’m been a very longterm user of RetroArch (despite not being active in the community), and have long wished for a shader along these lines to come along. I’m a professional 3D artist/modeller by trade so I even recreated my own digital 1:1 scale Sega “Blast City” candy cab (in both horizontal and vertical configurations), with bezel material that reflects the screen lighting (in a very basic way compared to yours), to use with RetroArch in VR on my Oculus Rift (maybe I’ll share it one day - it needs some more work). However, in 99% of day-to-day usage, VR isn’t my go-to method of retro gaming for various reasons, and I’ve hoped for something like your Mega Bezel shader to come along so I can set it up as my default shader and use it on my 4k monitor. It’s amazing how bezel reflection, alone, can draw your attention to the centre of the action and make the whole experience much more immersive. Anyhow, I’ve now read every post in this thread and have yet to actually get it set up - so I’m very hyped to go and do that right now! Thanks so much for your work on this!

4 Likes

Great to hear from you @JonnyTenebrous, welcome to the forum and congrats on graduating from a long time lurker :slight_smile: ! Also thanks for the positive feedback!

I was also a long time lurker, and only finally joined so I could share the prototype I had started working on. I’m really appreciative that people are enjoying it and giving such great feedback and find value in it the way I do, it’s surprising the dimension that it adds and how it feels much more natural.

Let me know what might be confusing on first setup, this first user feedback is useful because you are looking at it for the first time. If there’s anything you have feedback on or would like to request please do!

It’s funny you mention being a 3d Artist/Modeler because I also have a background in 3D from my previous career as an animator and rigging supervisor :).

I’d love to see your Blast City cabinet! I’m also curious what it’s like to run Retroarch on the Oculus Rift.

Cheers!

4 Likes

Speaking of 3D modeling… I added some LED strip lighting and changed up the materials a bit. Looks more fun but I still think I like the Photoshop magic more.

shaders = "17"
shader0 = "../shaders_slang/crt/shaders/hyperspacemadness/hsm-stock-with-mega-screen-scale-bezel-params.slang"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
shader1 = "../shaders_slang/crt/shaders/hyperspacemadness/hsm-gtu/hsm-gtu-pass1.slang"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = ""
float_framebuffer1 = "true"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "../shaders_slang/crt/shaders/hyperspacemadness/hsm-gtu/hsm-gtu-pass2.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = ""
float_framebuffer2 = "true"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "../shaders_slang/stock.slang"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = ""
float_framebuffer3 = "false"
srgb_framebuffer3 = "false"
shader4 = "../shaders_slang/crt/shaders/hyperspacemadness/hsm-guest-afterglow-with-black-level.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/crt-sm/d65-d50-sm.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "WpPass"
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/crt-sm/crt-guest-sm-rot0.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = "RotPass"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "3.000000"
shader7 = "../shaders_slang/crt/shaders/guest/crt-sm/linearize-sm.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "LinPass"
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/crt-sm/blur_horiz-sm.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-sm/blur_vert-sm.slang"
filter_linear9 = "true"
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/hsm-crt-guest-sm-with-scaling.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = "BR_CrtPass"
float_framebuffer10 = "false"
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/linearize.slang"
filter_linear11 = "true"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "true"
alias11 = "BR_MirrorLowResPass"
float_framebuffer11 = "true"
srgb_framebuffer11 = "false"
scale_type_x11 = "absolute"
scale_x11 = "800"
scale_type_y11 = "absolute"
scale_y11 = "600"
shader12 = "../shaders_slang/crt/shaders/hyperspacemadness/hsm-blur-outside-screen-horiz.slang"
filter_linear12 = "false"
wrap_mode12 = "clamp_to_border"
mipmap_input12 = "false"
alias12 = ""
float_framebuffer12 = "true"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "../shaders_slang/crt/shaders/hyperspacemadness/hsm-blur-outside-screen-vert.slang"
filter_linear13 = "false"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "false"
alias13 = "BR_MirrorBlurredPass"
float_framebuffer13 = "true"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "../shaders_slang/blurs/blur9x9.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "true"
alias14 = "BR_MirrorReflectionDiffusedPass"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "absolute"
scale_x14 = "128"
scale_type_y14 = "absolute"
scale_y14 = "128"
shader15 = "../shaders_slang/blurs/blur9x9.slang"
filter_linear15 = "true"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "true"
alias15 = "BR_MirrorFullscreenGlowPass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "absolute"
scale_x15 = "12"
scale_type_y15 = "absolute"
scale_y15 = "12"
shader16 = "../shaders_slang/crt/shaders/hyperspacemadness/hsm-mega-bezel-reflection.slang"
filter_linear16 = "true"
wrap_mode16 = "clamp_to_border"
mipmap_input16 = "true"
alias16 = ""
float_framebuffer16 = "true"
srgb_framebuffer16 = "false"
scale_type_x16 = "viewport"
scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
parameters = "hmss_mega_screen_scale_on;hmss_screen_scale_debug;hmss_screen_scale_only;hmss_rotate_crt_image;hmss_aspect_ratio_mode;hmss_screen_aspect_ratio;hmss_integer_scale_mode;hmss_non_integer_scale;hmss_int_scale_multiple_offset;hmss_int_scale_border_min_height;hmss_scanline_direction;hmss_position_offset_x;hmss_position_offset_y;hmss_crop_overscan_top;hmss_crop_overscan_bottom;hmss_crop_overscan_left;hmss_crop_overscan_right;hmss_curvature_on_long_axis;hmss_curvature_on_short_axis;hmss_corner_radius;hmss_screen_edge_sharpness;hmss_tube_black_edge_thickness;hmss_pre_crt_black_level;hmss_pre_crt_gamma;hmss_pre_crt_luminance;hmss_post_crt_gamma;hmss_negative_crop_brightness;hag_afterglow_amount;hag_afterglow_persistence;hag_afterglow_saturation;hmbz_background_image_opacity;hmbz_background_image_brightness;hmbz_background_image_scale_mode;hmbz_background_image_aspect_ratio;hmbz_background_image_tube_height;hmbz_tube_glass_image_opacity;hmbz_tube_edge_shadow;hmbz_bezel_color_hue;hmbz_bezel_color_saturation;hmbz_bezel_color_value;hmbz_bezel_color_blend_with_image;hmbz_bezel_opacity;hmbz_bezel_width;hmbz_bezel_height;hmbz_bezel_inner_curvature_scale;hmbz_bezel_inner_corner_radius_scale;hmbz_bezel_outer_corner_radius_scale;hmbz_bezel_inner_edge_thickness;hmbz_bezel_brightness;hmbz_bezel_highlight;hmbz_bezel_noise;hmbz_bezel_corner_highlight_inner_spread;hmbz_bezel_corner_highlight_outer_spread;hmbz_bezel_corner_highlight_spread_falloff;hmbz_frame_opacity;hmbz_frame_brightness;hmbz_frame_thickness;hmbz_frame_outer_corner_radius;hmbz_frame_inner_edge_thickness;hmbz_frame_pos_y_offset;hmbz_frame_shadow_opacity;hmbz_frame_shadow_width;hmbz_vignette_shadow_opacity;hbl_blur_num_samples;hbl_blur_min;hbl_blur_max;hbr_noise_amount;hbr_noise_samples;hbr_noise_sample_distance;hbr_noise_falloff;hbr_global_amount;hbr_global_gamma_adjust;hbr_inner_edge_reflection;hbr_direct_reflection;hbr_diffused_reflection;hbr_fullscreen_glow;hbr_fullscreen_glow_gamma;hbr_fade_amount;hbr_radial_fade_speed;hbr_radial_fade_width;hbr_radial_fade_height;hbr_lateral_outer_fade_position;hbr_lateral_outer_fade_distance;hbr_corner_fade;hbr_corner_fade_distance;hbr_reflection_mask_mode;compositeConnection;signalResolution;signalResolutionI;signalResolutionQ;tate;fliph;flipv;WP;wp_saturation;GAMMA_INPUT;TAPSH;GLOW_FALLOFF_H;TAPSV;GLOW_FALLOFF_V;bglow;bloom;autobrm;brightboost1;brightboost2;stype;scanline1;scanline2;beam_min;beam_max;sclip;s_beam;h_sharp;cubic;mask;maskmode;maskdark;maskbright;masksize;gamma_out"
hmss_mega_screen_scale_on = "1.000000"
hmss_screen_scale_debug = "0.000000"
hmss_screen_scale_only = "0.000000"
hmss_rotate_crt_image = "0.000000"
hmss_aspect_ratio_mode = "0.000000"
hmss_screen_aspect_ratio = "1.333300"
hmss_integer_scale_mode = "2.000000"
hmss_non_integer_scale = "82.970001"
hmss_int_scale_multiple_offset = "0.000000"
hmss_int_scale_border_min_height = "0.000000"
hmss_scanline_direction = "0.000000"
hmss_position_offset_x = "0.000000"
hmss_position_offset_y = "0.000000"
hmss_crop_overscan_top = "0.000000"
hmss_crop_overscan_bottom = "0.000000"
hmss_crop_overscan_left = "0.000000"
hmss_crop_overscan_right = "0.000000"
hmss_curvature_on_long_axis = "0.000000"
hmss_curvature_on_short_axis = "0.000000"
hmss_corner_radius = "0.000000"
hmss_screen_edge_sharpness = "1.000000"
hmss_tube_black_edge_thickness = "-0.250000"
hmss_pre_crt_black_level = "0.000000"
hmss_pre_crt_gamma = "1.000000"
hmss_pre_crt_luminance = "1.000000"
hmss_post_crt_gamma = "1.000000"
hmss_negative_crop_brightness = "0.000000"
hag_afterglow_amount = "0.070000"
hag_afterglow_persistence = "0.050000"
hag_afterglow_saturation = "0.100000"
hmbz_background_image_opacity = "0.000000"
hmbz_background_image_brightness = "1.000000"
hmbz_background_image_scale_mode = "2.000000"
hmbz_background_image_aspect_ratio = "1.750000"
hmbz_background_image_tube_height = "69.000000"
hmbz_tube_glass_image_opacity = "0.000000"
hmbz_tube_edge_shadow = "0.000000"
hmbz_bezel_color_hue = "0.000000"
hmbz_bezel_color_saturation = "0.000000"
hmbz_bezel_color_value = "0.000000"
hmbz_bezel_color_blend_with_image = "0.000000"
hmbz_bezel_opacity = "0.000000"
hmbz_bezel_width = "-0.099996"
hmbz_bezel_height = "-0.099997"
hmbz_bezel_inner_curvature_scale = "0.000000"
hmbz_bezel_inner_corner_radius_scale = "0.000000"
hmbz_bezel_outer_corner_radius_scale = "0.000000"
hmbz_bezel_inner_edge_thickness = "0.000000"
hmbz_bezel_brightness = "0.000000"
hmbz_bezel_highlight = "2.000000"
hmbz_bezel_noise = "30.000000"
hmbz_bezel_corner_highlight_inner_spread = "100.000000"
hmbz_bezel_corner_highlight_outer_spread = "100.000000"
hmbz_bezel_corner_highlight_spread_falloff = "50.000000"
hmbz_frame_opacity = "0.000000"
hmbz_frame_brightness = "0.000000"
hmbz_frame_thickness = "0.000000"
hmbz_frame_outer_corner_radius = "0.000000"
hmbz_frame_inner_edge_thickness = "0.000000"
hmbz_frame_pos_y_offset = "-0.000000"
hmbz_frame_shadow_opacity = "0.000000"
hmbz_frame_shadow_width = "0.000000"
hmbz_vignette_shadow_opacity = "0.000000"
hbl_blur_num_samples = "4.000000"
hbl_blur_min = "0.000000"
hbl_blur_max = "0.100001"
hbr_noise_amount = "1.000000"
hbr_noise_samples = "12.000000"
hbr_noise_sample_distance = "0.200000"
hbr_noise_falloff = "0.300000"
hbr_global_amount = "1.000000"
hbr_global_gamma_adjust = "1.200000"
hbr_inner_edge_reflection = "0.700000"
hbr_direct_reflection = "1.000000"
hbr_diffused_reflection = "0.500000"
hbr_fullscreen_glow = "75.000000"
hbr_fullscreen_glow_gamma = "3.000000"
hbr_fade_amount = "0.300000"
hbr_radial_fade_speed = "100.000000"
hbr_radial_fade_width = "70.000000"
hbr_radial_fade_height = "100.000000"
hbr_lateral_outer_fade_position = "-18.000000"
hbr_lateral_outer_fade_distance = "20.000000"
hbr_corner_fade = "1.000000"
hbr_corner_fade_distance = "100.000000"
hbr_reflection_mask_mode = "0.000000"
compositeConnection = "0.000000"
signalResolution = "256.000000"
signalResolutionI = "83.000000"
signalResolutionQ = "25.000000"
tate = "0.000000"
fliph = "-1.000000"
flipv = "1.000000"
WP = "0.000000"
wp_saturation = "1.000000"
GAMMA_INPUT = "2.400000"
TAPSH = "5.000000"
GLOW_FALLOFF_H = "0.250000"
TAPSV = "5.000000"
GLOW_FALLOFF_V = "0.250000"
bglow = "0.000000"
bloom = "0.400000"
autobrm = "0.500000"
brightboost1 = "1.400000"
brightboost2 = "1.150000"
stype = "1.000000"
scanline1 = "5.000000"
scanline2 = "7.000000"
beam_min = "1.250000"
beam_max = "1.100000"
sclip = "0.500000"
s_beam = "0.700000"
h_sharp = "3.000000"
cubic = "1.000000"
mask = "0.000000"
maskmode = "1.000000"
maskdark = "1.000000"
maskbright = "0.250000"
masksize = "1.000000"
gamma_out = "2.500000"
textures = "BackgroundImage;BackgroundVertImage;TubeGlassImage;OverlayImage;OverlayVertImage"
BackgroundImage = "../shaders_slang/crt/shaders/hyperspacemadness/textures/BackgroundImage_3840x2160.png"
BackgroundImage_wrap_mode = "clamp_to_border"
BackgroundImage_mipmap = "false"
BackgroundVertImage = "../shaders_slang/crt/shaders/hyperspacemadness/textures/BackgroundImage_3840x2160.png"
BackgroundVertImage_wrap_mode = "clamp_to_border"
BackgroundVertImage_mipmap = "false"
TubeGlassImage = "../shaders_slang/crt/shaders/hyperspacemadness/textures/TubeGlassOverlayImage_3840x2160.png"
TubeGlassImage_wrap_mode = "clamp_to_border"
TubeGlassImage_mipmap = "false"
OverlayImage = "../shaders_slang/crt/shaders/hyperspacemadness/textures/OverlayImage_OverReflection_3840x2160.png"
OverlayImage_wrap_mode = "clamp_to_border"
OverlayImage_mipmap = "false"
OverlayVertImage = "../shaders_slang/crt/shaders/hyperspacemadness/textures/OverlayImage_OverReflection_3840x2160.png"
OverlayVertImage_wrap_mode = "clamp_to_border"
OverlayVertImage_mipmap = "false"

This is my preset if interested

3 Likes

So, I’ve set up Mega Bezel with my first core (SNES9x) and it looks amazing. Truly next-level stuff, imo. My monitor is a 27" 4K LG IPS with HDR400 (this is relevant), and right beside it I’ve got a MiSTer FPGA device running the SNES core hooked up to a 1998 consumer model Sony Trinitron TV (through RGB Scart). I’m using this comparison to calibrate my shader presets, because my intent is to use RetroArch for cores which are not presently existing in FPGA/MiSTer form (PSX/Saturn and later). I’ve dialed in a preset with Mega Bezel using the CRT Guest SM shader that is… I’ll say 95% spot-on to my Trinitron CRT TV, looking at them both at the same same. It’s pretty jaw-dropping, imo. In order to accomplish this, I’ve had to crank my 4k monitor to 100% brightness (400 nits), which is around 3x as bright as my old 1080p monitor… but doing this was required to offset the loss of brightness inherent to turning up the scanline and mask parameters to the point where they looked “close” to a real CRT TV. So, basically, I’m saying that there’s probably no point in me sharing a screenshot/preset because your monitor has to be capable of at least 400nits output, otherwise it will look dim. So far, so good however!

BUT, I’ve noticed a performance-relevant behavior in Mega Bezel that I would like to report. When I originally set up Mega Bezel, I ignored the advice to set my Aspect Ratio to my screen resolution (3840x2160) and just used the Core-Reported Aspect Ratio setting. The only downside was that it limited how wide I could make the bezel/frame. However, it performed great on my aging-model 3.6ghz i7 processor and GTX 1060 gpu. This evening, however, I revisited my preset and decided to try setting the Aspect Ratio to my screen resolution. It looks great… just like you’d expect from the screenshots in this thread. However, doing this made me lose around 10% performance - enough to where I was no longer hitting 60fps consistently with RunAhead enabled etc. In other words, just the act of using Mega Bezel to fill the sides of my screen with background Carbon Fibre texture (or extra-wide bezel/frame - or anything, I should image), was enough to tank my framerate by a significant margin. For the time being, then, I’ve reverted back to using Core-Reported Aspect Ratio and my only loss is that the sides of my monitor remain black for the time being… an acceptable tradeoff for the performance gains, imo. I’m not sure that anything can be done about this… but perhaps I will investigate using an “Overlay” image to fill the sides of my screen in future, rather than taking the hit of using Mega Bezel to populate this empty space… unless there’s a possible optimisation to be found here. Anyhow - just reporting what I’ve encountered!

2 Likes

Good to hear you have it set up, I’d be interested to see an image from your preset, my monitor might do 400 nits, I’m not sure…

About the performance, as we get to the end of adding features I’ll look for more performance optimizations, but you are right that there is a definite difference between running it across the full monitor and running it on a sub-section by using the core aspect ratio or using a custom aspect ratio. If you are using a vertical aspect ratio like ArsInvictus then I think a custom aspect ratio that just uses the area the image needs to appear in could reduce computation quite a bit.

You can definitely use the standard retroarch overlay over top if you like though and I think this should have a negligible performance impact.

3 Likes

Another thing that occurred to me, try updating your graphics drivers, this fixed some slowdown Duimon had.

1 Like

I downloaded the 2020-04-05 version of the shader, but when I try to load it, RA says ‘failed to apply shader preset’.

I tried making a log, but all RA does is return a blank file.

Core - snes9x RA Version - 1.8.5 Driver: D3D11

1 Like

I believe you have to use vulkan. Another user had the same issue.

I’ve used D3D11 before in the past with this shader and had no problems