CyberLab Death To Pixels Shader Preset Packs

Hi @Cyber,

I have good news, I managed to run the shaders. I didn’t find this information anywhere, so I believe it will be useful to other people.

My environment:

Operating System: Arch Linux
Desktop Environment: KDE
Graphic Platform: Wayland
Vulkan Driver: AMDVLK; RADV (both installed)

I was trying to run it via RetroArch Video Driver gl, but to run its shaders we need Vulkan. So I modified it to Vulkan, but it was giving me an error. RetroArch wouldn’t start, so I ran RetroArch via X.org and it opened, but the shaders wouldn’t compile/work. Some incompatibility with Wayland + Vulkan + RetroArch.

Using the Vulkan AMDVLK driver, this error occurs.

Command: AMD_VULKAN_ICD=AMDVLK retroarch --verbose

Output:

[ERROR] [Vulkan]: Failed to create swapchain.
[ERROR] [Wayland/Vulkan]: Failed to update swapchain.

(It’s works)
I was even able to run it with the Vulkan RADV driver with Wayland with the command below:
KDE + Wayland + Vulkan(RADV) + RetroArch + CyberLab

Command: AMD_VULKAN_ICD=RADV retroarch --verbose

The strange thing is that after I managed to run it with the Vulkan RADV driver, AMDVLK started working via XWayland. It may also have been an update to the AMDVLK Vulkan driver.

WAYLAND_DISPLAY="" AMD_VULKAN_ICD=AMDVLK retroarch --verbose

So if I have to give you a tip, it’s to run Vulkan via RADV in case of problems.

I have a request of you if possible. When writing new or updating shader packs write/rewrite the names of files, folders and settings in lower case. It can make it easier for you to run on Linux. The filters from the “CyberLab Custom Blargg NTSC Video Filter Presets 03-09-23.zip” package, for example, have the Filter folder in upper case, I had to rename it before copying it to the RetroArch configuration folder.

Thank you very much for your attention! If I have any problems, I’ll come back here :wink:

1 Like

I’m glad you got things working and have shared your experience so that others may benefit.

Did you try the proprietary AMD drivers at all by the way?

Why do you have to rename the folders?

Instead, why don’t you just copy the files inside the folders into existing folders or create folders as necessary?

You don’t need vulkan, GLcore works as well, but not gl.

Also, why amdvlk? From my experience radv is superior in terms of performance, and anyway GLcore is less troublesome and better supported by the retroarch shader subsystem.

3 Likes

Hi @kokoko3k,

It’s great to know that I can use GLcore. I didn’t know. When I tried RetroArch it didn’t find the sharders, I thought only the glsl ones were specifically for GL and GLcore. However, with your tip, slang shaders are made for GLcore. I have the impression that it runs better on GLcore than on Vulkan, it seems a little lighter when running. I’ll try it out for a while.

I saw that in some tests that it had improved amdvlk’s performance, so I was experimenting. I’ve already used RADV and it was just a joy, mainly because it worked on my R9 270X, while AMDVLK only worked on RX Series cards.

Thank you for the tips.

1 Like

Hi @Cyber,

I only used open source drivers (AMDVLK and RADV).

The issue of renaming the folders, I’m spoiled from watching Retro Crisis videos hahahaha In the videos he just drags the folders hahaha. I don’t know if this could interfere with the functioning of your packages, but I will do as you recommended.

1 Like

All of the paths and folders need to match what’s in the presets or they won’t load.

Windows doesn’t care about the case but Linux is case sensitive to the point where you can have different folders with the same name but different case.

That doesn’t exist on Windows.

Why did you need to rename the folders in order to get things to work?

Can you elaborate a bit?

Also, my CRT-Royale and Sony Megatron presets all need to be in your root shaders folder. There’s no renaming necessary there. Just copy the presets to your shaders Folder.

Blargg Video Filter presets go in the Filters/Video folder. The case shouldn’t matter here just put them in whatever folder your existing video filters are in.

For my Mega Bezel presets, don’t change anything although they use relative paths, not absolute paths so technically you should be able to use different folders to some extent once you maintain the same folder depth, but don’t do it.

@Cyber I noticed this for SNES could you explain what all of those numbers mean

CyberLab Megatron 4K 1.6AR 5K 1.78AR HDR Game SNES Composite Shadow Mask Smooth 6X

Thank you

1 Like

4K 16:10 Aspect Ratio Display. —> 3,840 x 2,400

5K 16:9 Aspect Ratio Display —> 5,120 x 2,880

Calibrated for LG OLED E6P HDR Game Mode

Console preset was optimized for

Console Output/TV Input Jack used/inspired by

Emulated phosphor pattern style

Super-XBR (or ScaleFX) smoothing applied

Set scaling in RetroArch Video Scaling Menu to custom 6X Integer Scale.

That preset might also work well with 2560 x 2880 0.89AR (16:18) displays.

3 Likes

Wow thanks, I wasn’t expecting all that.

2 Likes

I don’t understand this thread. So many links everywhere, I don’t understand which preset pack is the latest or if they are parallel to each other. I don’t understand if this thread is older or newer than your github. And once installed, where to enable the presets.

I would love to try these out because you did an outstanding work, but this thread is extremely confusing in lots of ways. It would be really nice to either clearly seperate all your different works into different githubs/threads, or to clearly regroup them in a single pack. Also the pictures if possible would be clearer if they were in a spoiler or external place to not clutter this one. I don’t know.

However, this is outstanding work and I’ll retry tomorrow with a clear mind. Thanks a lot !

1 Like

No offense but do you really want to understand? Not trying to be arrogant or anything but sometimes people just need to read.

Read first, then ask questions if you still have an issue.

Your “mini rant” sounds like you haven’t even bothered to try to understand, yet you’re telling me how to organize this and that.

I can understand if English isn’t your first language but seek and you shall find. Put that mind of yours to work, ask questions and all will be answered.

Sometimes you just have to take your time.

I appreciate the compliment.

This might be a good idea because there’s a lot that can be done and showcased using these preset packs.

They’re quite comprehensive and are a playground for those looking for wonderful and unique experiences.

There is a learning curve though and we’re here to assist with that.

I am having curious artifacting when using a derivative of your slot mask shader that I adapted and tweaked to use in conjunction with TheNamec’s bezels:

https://mega.nz/file/LQd0DZDT#3xhoMl6yC9QmNT9S01bTE_1puu2tPZAH--MPY2JM3n0

Zip link: https://mega.nz/file/aIdyyaJB#yFE1CFe7URno2pJrxwQ6QpBfVLZH9-fzZoD3_jeKfA0

(I had to upload there because imgur applies compression and messes the screenshot up)

The issue is artifacts radiate from the left side of the screen, always, in a left to right fashion, where the right side of the screen looks proper, but the left does not.

This only occurs when I select mask option 10, for slot mask approximation as you do in your preset. I’m not sure what is causing this or how to fix, as the staggered slot mask pattern is most desirable for what I am trying to simulate. I am running a 1440p display, which while not ideal, is what I have.

1 Like

You can use Imgbb or shrink a .jpg to 4096KB using IrfanView.

I’m not seeing any artifact, especially an artifact that’s limited to one side of the screen in your GPU screenshot…

You might have to send a high quality photo or video of the actual screen for me to see what you’re experiencing.

Do you see the same issue if you load this preset as is without any modifications or incorporation with TheNameC’s background? Also, which preset is it? Also, which preset of TheNameC are you trying to combine it with?

Staggered, so you’re using the Mask Stagger feature? What version of Mega Bezel Reflection Shader are you using? If you’re using my presets and possibly TheNameC’s as well, you might have to use Mega Bezel version 1.14.0 in order to have things look as intended.

If you updated your slang shaders using the Online Updater it may have been overwritten by a newer version.

In addition to that, you might want to try Mask 6, Size 1 due the fact that your effective resolution is lower than 1440p because of the reduced size of the viewport. Therefore 1080p Optimized Presets might be more suitable. Do pay attention to the Mask Layout, making sure it matches that of your display.

I don’t know what method you’re using to combine Mega Bezel projects but the en vogue method is to use “*.params” version of the Overlay presets which are referenced by a second reference line in my presets.

Take a look at the presets in the MBZ__3__STANDARD_CyberLab Special Edition Folder for an example as its basically a template for this method. The only difference is that it uses a 'Background" line instead of a second reference line. Just replace that with the second reference and path of the background preset you wish to combine and voila.

If you don’t know what I mean by “*.params” versions, it’s basically the same overlay presets with the reference lines removed or commented out.

You can simply make a duplicate/backup of the original overlay/background folder then remove or comment out the reference lines of the presets in that folder.

Duimon’s Mega Bezel Pack includes a perfect example of what I’m talking about as he already included a folder with *.params versions of all of his presets.

1 Like

Turns out my own monitor was causing the artifacting! I’m glad you reviewed the screenshot and noticed nothing, as that gave me an idea.

I have a Samsung G9 5120x1440 display, which does some processing of its own with regards to sharpness. I had sharpness set to “80” on the monitor, and when I reduced to 64 or lower, the artifacting vanished.

I suppose I should have bothered zooming in on the original image, because that is where I noticed the artifacting only appeared when it was 1:1 with display resolution, but when zoomed in further, the artifacts vanished.

Nuts, but thank you for the insight. :slight_smile:

I am using the .params method, FYI, to inject his overlay into the shader chain.

Interestingly when I turn down the sharpness, mask 10 works pretty well. I bounce around between 1.11 and 1.16. Still ironing out some stuff between the two. The challenging part of CRT emulation is we try and get “close enough” with displays lower than 4k, because that’s the best we can do since we don’t have all the resolution required to match the intricacies of a pure, true CRT tube. I’ll mess around with mask 6 some, too.

I’m trying to get a 1:1 “14” inch display on this monitor, so it looks the same, sizewise as the original CRT monitor.

1 Like

@Cyber,

Could you recommend me some packs and presets similar to Royale and Hyllian. I like Royale, because to my taste it seems to have just the right amount of Glow. Too much Glow, I don’t think it’s cool.

Which of your packs and presets do you recommend to run generically from 8bits to 32bits? I don’t want to go through the trouble, at least for now :upside_down_face:, of choosing the ideal shaders for a given platform. My monitor has a 2560x1440 resolution and I don’t know if it influences your recommendation.

Thank you very much in advance!

1 Like

Did you read the 1st post of this thread? I have a few packs and presets that you can start with. My Megabezel Presets have a 1440p Optimized Folder, while its easy to adjust the Mask - Triad Size Desired parameter in my CRT-Royale Preset pack to achieve something that looks good at 1440p.

It might be a little trickier to do this with my Sony Megatron Color Video Monitor Presets but it’s not impossible.

Besides that there are a variety of more than decent offerings from other shader preset pack creators that you might like.

Take a look here:

1 Like

@Dennis1

These are some very quick and dirty CRT-Guest Advanced-NTSC presets that you can start with. Paths may be non-standard. A lot has changed since I’ve last used standalone CRT-Guest-Advanced. Many of the changes make it easier for users to achieve looks which a few regulars used to toil to achieve which is a step in the right direction.

Consider this a starting point or example that you can develop from.

Pay attention to this important detail though:

CyberLab Sony Megatron NX Near Field PSX Preset

#reference ":/shaders/CyberLab Megatron NX 4K HDR Game PSX Composite Slot Mask Ultra.slangp"
hcrt_paper_white_nits = "430.000000"
hcrt_gamma_in = "1.700000"
hcrt_red_scanline_min = "0.940000"
hcrt_red_scanline_max = "1.080000"
hcrt_green_scanline_min = "0.940000"
hcrt_green_scanline_max = "1.080000"
hcrt_blue_scanline_min = "0.940000"
hcrt_blue_scanline_max = "1.080000"

CyberLab CRT-Guest-Advanced-NTSC Magic Glow Base Mask Full Mask Strength Slot Mask.slangp

#reference "shaders_slang/crt-guest-advanced-2024-02-29-release1/crt-guest-advanced-ntsc.slangp"
ntsc_cscale = "4.000000"
ntsc_cscale1 = "2.250000"
m_glow = "2.000000"
gsl = "2.000000"
shadowMask = "12.000000"
maskstr = "1.000000"
slotmask = "1.000000"
slotmask1 = "1.000000"
double_slot = "3.000000"
bmask = "0.100000"

CyberLab CRT-Guest-Advanced-NTSC Magic Glow Base Mask Full Mask Strength Slot Mask Full Preset.slangp

shaders = "18"
shader0 = "shaders_slang/crt-guest-advanced-2024-02-29-release1/shaders/guest/advanced/stock.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-guest-advanced-2024-02-29-release1/shaders/guest/advanced/stock.slang"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = "StockPass"
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-guest-advanced-2024-02-29-release1/shaders/guest/advanced/afterglow0.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "AfterglowPass"
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-guest-advanced-2024-02-29-release1/shaders/guest/advanced/pre-shaders-afterglow.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = "PrePass0"
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-guest-advanced-2024-02-29-release1/shaders/guest/advanced/ntsc/ntsc-pass1.slang"
filter_linear4 = "false"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = "NPass1"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "4.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders_slang/crt-guest-advanced-2024-02-29-release1/shaders/guest/advanced/ntsc/ntsc-pass2.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = ""
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders_slang/crt-guest-advanced-2024-02-29-release1/shaders/guest/advanced/ntsc/ntsc-pass3.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
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-guest-advanced-2024-02-29-release1/shaders/guest/advanced/custom-fast-sharpen.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "NtscPass"
float_framebuffer7 = "false"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders_slang/crt-guest-advanced-2024-02-29-release1/shaders/guest/advanced/stock.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "true"
alias8 = "PrePass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders_slang/crt-guest-advanced-2024-02-29-release1/shaders/guest/advanced/avg-lum-ntsc.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "true"
alias9 = "AvgLumPass"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "1.000000"
shader10 = "shaders_slang/crt-guest-advanced-2024-02-29-release1/shaders/guest/advanced/linearize-ntsc.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = "LinearizePass"
float_framebuffer10 = "true"
srgb_framebuffer10 = "false"
scale_type_x10 = "source"
scale_x10 = "1.000000"
scale_type_y10 = "source"
scale_y10 = "1.000000"
shader11 = "shaders_slang/crt-guest-advanced-2024-02-29-release1/shaders/guest/advanced/crt-guest-advanced-ntsc-pass1.slang"
filter_linear11 = "true"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = "Pass1"
float_framebuffer11 = "true"
srgb_framebuffer11 = "false"
scale_type_x11 = "viewport"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders_slang/crt-guest-advanced-2024-02-29-release1/shaders/guest/advanced/gaussian_horizontal.slang"
filter_linear12 = "true"
wrap_mode12 = "clamp_to_border"
mipmap_input12 = "false"
alias12 = ""
float_framebuffer12 = "true"
srgb_framebuffer12 = "false"
scale_type_x12 = "absolute"
scale_x12 = "800"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders_slang/crt-guest-advanced-2024-02-29-release1/shaders/guest/advanced/gaussian_vertical.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "false"
alias13 = "GlowPass"
float_framebuffer13 = "true"
srgb_framebuffer13 = "false"
scale_type_x13 = "absolute"
scale_x13 = "800"
scale_type_y13 = "absolute"
scale_y13 = "600"
shader14 = "shaders_slang/crt-guest-advanced-2024-02-29-release1/shaders/guest/advanced/bloom_horizontal.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "false"
alias14 = ""
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "absolute"
scale_x14 = "800"
scale_type_y14 = "absolute"
scale_y14 = "600"
shader15 = "shaders_slang/crt-guest-advanced-2024-02-29-release1/shaders/guest/advanced/bloom_vertical.slang"
filter_linear15 = "true"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "BloomPass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "absolute"
scale_x15 = "800"
scale_type_y15 = "absolute"
scale_y15 = "600"
shader16 = "shaders_slang/crt-guest-advanced-2024-02-29-release1/shaders/guest/advanced/crt-guest-advanced-ntsc-pass2.slang"
filter_linear16 = "true"
wrap_mode16 = "clamp_to_border"
mipmap_input16 = "false"
alias16 = ""
float_framebuffer16 = "true"
srgb_framebuffer16 = "false"
scale_type_x16 = "viewport"
scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
shader17 = "shaders_slang/crt-guest-advanced-2024-02-29-release1/shaders/guest/advanced/deconvergence-ntsc.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"
ntsc_cscale = "4.000000"
ntsc_cscale1 = "2.250000"
m_glow = "2.000000"
gsl = "2.000000"
shadowMask = "12.000000"
maskstr = "1.000000"
slotmask = "1.000000"
slotmask1 = "1.000000"
double_slot = "3.000000"
bmask = "0.100000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
SamplerLUT1 = "shaders_slang/crt-guest-advanced-2024-02-29-release1/shaders/guest/advanced/lut/trinitron-lut.png"
SamplerLUT1_linear = "true"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/crt-guest-advanced-2024-02-29-release1/shaders/guest/advanced/lut/inv-trinitron-lut.png"
SamplerLUT2_linear = "true"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "shaders_slang/crt-guest-advanced-2024-02-29-release1/shaders/guest/advanced/lut/nec-lut.png"
SamplerLUT3_linear = "true"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
SamplerLUT4 = "shaders_slang/crt-guest-advanced-2024-02-29-release1/shaders/guest/advanced/lut/ntsc-lut.png"
SamplerLUT4_linear = "true"
SamplerLUT4_wrap_mode = "clamp_to_border"
SamplerLUT4_mipmap = "false"

CyberLab CRT-Guest-Advanced-NTSC Magic Glow Base Mask Full Mask Strength Aperture Grille.slangp

#reference "CyberLab CRT-Guest-Advanced-NTSC Magic Glow Base Mask Full Mask Strength Slot Mask.slangp"
slotmask = "0.000000"
slotmask1 = "0.000000"
deconrry = "-0.500000"
deconrgy = "0.250000"

This is how a slot mask with Mask 10 (RGBX), Height 4, Width - Auto (or 4) would look.

This is how a slot mask with Mask 10 (RGBX), Height 3, Width - Auto (or 4) would look.

This is how a slot mask with Mask 10 (RGBX), Height 2, Width - Auto (or 4) would look.

This is how a slot mask with Mask 6 (RGB), Height 3, Width - Auto (or 3) would look.

This is how a slot mask with Mask 6 (RGB), Height 2, Width - Auto (or 3) would look.

3 Likes

Thank you for your effort. I will try them out. Seems overwhelming at the moment, but I try my best :slightly_smiling_face:

I just remember, that there was a talk in the Megatron shader thread about subpixels and that Megatron is built on that. I just looked at your pictures from the Castlevania SOTN tiltle screen and zoomed in with my phone and compared them to Megatron.

What I noticed is, that guest’s masks uses 2 pixels for each RGB line and if I zoom in with Megatron I also see 2 pixels wide lines for each. But the difference is, that the pixels of Megatron are much smaller.

Guest’s mask:

Megatron’s mask:

On the pictures they look similar and you can see, that both use 2 pixel wide rows - but the pixels from Megatron are much smaller. Sounds weird, but if I get very close to the screen with my eyes, I can clearly see the size difference between the pixels.

If I go away from the screen 10 cm or 20 cm, my eyes can clearly see R,G and B seperated with guest’s shader, but with Megatron it looks white and RGB blends together, due to subpixels being much smaller than “normal pixels”. Has anyone else noticed this?

Here is the title screen again, but with Megatron:

And here from guest:

If you look closely to the white letters, you can see how much bigger R,G and B looks with guest. But both use 2 pixel wide rows as you can see clearly at my phone pictures.

Closeup Megatron:

Screenshot 2024-06-24 103939

Closeup Guest:

Screenshot 2024-06-24 103922

In the Closeups it is obvious, that guest’s mask is much coarser due to the bigger pixels and Megatron’s smaller subpixels.

Take a look again using the last example which uses Mask 6, Height 2, Width Auto (or 3).

This is a crop from my screenshot but a zoomed in photo of your actual screen would make for a better comparison.

.…and here we have the same slot mask structure (RGBX) from your Megatron example using Guest with Mask 10, Height 3, Width - Auto (or 4).

The main difference in the examples is the scanline behaviour over the bright areas but I’m sure that that can be adjusted as well.

You’re welcome.

What is overwhelming? Feel free to ask questions. I provided some presets which you can load in RetroArch for further testing and adjustment or you can take the values and plot into the Re-Shade port of CRT-GUEST-ADVANCED-NTSC.

My first example is an aperture grille preset using Sony Megatron Color Video Monitor. I think it’s an RRGGBBX mask but I’m not 100% certain.

The examples following that use Guest’s Mask 12, which is also RRGGBBX which is why each phosphor colour is represented by 2 pixels.

Then I provided examples using Mask 10 (RGBX) then Mask 6 (RGB). It seems like you didn’t reach as far as zooming in on those for your comparison so I kinda gave you a headstart.

Also, if you want your phosphors to be pure RGB, with no other colours being mixed in between (like a real CRT) you have to set Megatron to “Mask Accurate” mode instead of “Colour Accurate”.

Then finally if you want the shape, spacing and alignment of your phosphors to match that of a CRT, you’ll have to switch your “Display’s Subpixel Layout” to RWBG (OLED) in Sony Megatron Color Video Monitor or “Mask Layout” to 1 in CRT-Guest-Advanced-NTSC.

This will cause you to have phosphor colours in the order RBG instead of RGB like on a real.CRT though.

2 Likes