New CRT shader from Guest + CRT Guest Advanced updates

Hey! Nice for stopping by. With 384x216 you are good with slightly increased internal resolution. You would only need tremendous ammounts of Internal Resolution if you exaggerate input resolution beyond reasonable means. Monitor resolution is not connected to the a nice looking setup regarding Internal Resolution in it’s basic way.

For example, you run a 256x224 Mario game at 8k. Your preferred target Internal Resolution would still be arround 1.0.

Large Internal resolution is basically needed in you use the shader on point-upscaled graphics, where one original pixel is a rectangle of 8x6 pixels. Then you would need “Internal Resolution”. But usually a more elegant way is to adjust the input x and y resolution.

But, it you have some special configuration going on, you can still edit the shader and increase the UI parameter values for Internal Resolution how large you like it.

2 Likes

Hi guest! Thanks for your detailed response. I’m going off this post of yours that said to match them:

The game I had in mind is a modern PC game with retro graphics, Cast n Chill, that seems to have a native pixel resolution of 384x216. Since this is upscaled to my monitor’s resolution, I thought I’d have both internal resolution params 10x with Resolution_X and Resolution_Y at 3840x2160. But actually, in practice, I’ve gotten good, sharp results for a game like this doing 5x for internal resolutions and resolution x/y at 3840x1080. If I do the math and divide, the result is 768x216? I could also do 10x for internal resolution and make resolution x/y 7680x2160 and the result would be similar… is that supposed to be any better? I’m not sure if I’m doing this all correctly… mostly just putting pieces of tips together I’ve found lurking the forum here, heh. Anyway, thanks for clearing that up a bit.

1 Like

Increasing Internal Resolution also increases filter width or height (with no scanlines). The ReShade version offers some more options like setting the x/y internal resolutions and you can use this for some visuals.

Usually using masks and filtering an emulator internal resolution of 5x is quite enough, so you can just multiply 384x216 with 5.0 and set the x/y shader parameters accordingly. 10x for X and 5x for Y can also work nicely, it’s a bit slower though.

Next good question is if you want scanlines or not and if there are some upscaled elements (like xBR or 3D elements). With scanlines, just set y-internal resolution to like 5.0 and you are good.

With upscaled elements the Internal Resolution parameter should be a bit lower, or there will be much of blur involved.

I usually use core/emulator internal resolution 4x, no scanlines, xBR filtering for textures and Internal resolution slightly below 3.0. Works very nice for me. With this specific shader, emulator internal resolutions don’t add too much to visuals beyond some point. I know that some folks like to max. emulator internal resolutions for 4k displays etc…for official changes with guest-advanced-hd for ReShade you can post in @DevilSingh’s thread, like to increase the Internal Resolution parameter range.

2 Likes

It looks like it might be just a 2D game. In which case you wouldn’t need to mess around with internal resolution at all (if you are a beginner, I would not). “Upscaling” is really relevant for games with 3D elements, as those can be rendered at higher resolutions.

You can try to set X Resolution to 3840 or lower. Lower will make the image blurrier. Y can be set in 216 steps. This affects how scanlines are set.

2 Likes

Funny this has come up - I’ve also been experimenting with CRT shaders in modern pixel art games.

I’ve found that Guest HD has a large enough number of parameters to get the scan lines and mask I like; however on my mini PC it is a bit of a struggle to maintain FPS with Guest on.

So, using Megatron is usually a good compromise if I can convert to HDR, however I can’t get the same mask size and shape as I do with Guest. Frustrating!

So my question is, how does the math work with internal resolution, mask size and mask zoom? I think I can approximate the guest HD mask in Megatron by using Reshade’s global resolution, but so far I’ve not managed to find the right resolution.

I realise this is probably a tough question to answer…I’ll follow up with some example parameters in a bit.

The other question I have is how does the guest shader deal with HDR? Prepending with an HDR plugin and using the AutoHDR add-in in Reshade doesn’t seem to produce the right colours.

Of course the ideal scenario is for @DevilSingh to port Guest Lite to Reshade :slight_smile:

Thanks as ever for all your efforts!

1 Like

After a bit of testing, I think the mask size I’m after is basically the height of the resolution divided by 3.

So for 1080p, Reshade’s height should be 360; for 2160p it should be 720. This works for Megatron and I might see if using those lower resolutions for Guest improves the performance.

I hope this makes sense to someone…

Edit: fixed my numbers…

Vaguely. Changing height Reshade height is affecting the scanline gaps.

Your math on the other hand does not make any sense. Just check your numbers.

Done. Brain fart.

I was running Jack Move in 4k and it looked best with a res of 540 in height…

Just read through the Reshade thread and the mind boggles at getting these numbers right!

Just to follow on from my previous post, Blasphemous is on Steam for £2 at the moment, and I thought I’d give it a pop with Guest HD in Reshade. It’s basically perfect for this application; as the whole game has essentially been developed entirely in pixel art (including the text) and so it scales perfectly with the shader.

Another benefit is due to pixel art scaling, the game looks the same in 1080p as it does in 4k; so you can run it at lower resolutions for improved performance. This goes for Guest HD in Reshade too - the game’s native res is 640x360; so setting Reshade’s global preprocessing resolutions to that, and then leaving internal resolution at 0, Mask size at 1 and mask zoom at 0 results in perfect masks and scanlines.

Enabling VGA double scan provides a lovely high TTL result as well; just like playing on a decent VGA monitor (as the setting is intended for, I assume!)

Here’s a close up of mask 7 on my LG BX OLED. I really like seeing the masks rather than just the straight scanlines :slight_smile:

One last general question for @guest.r - apologies if this has been asked before, but what is the difference between each version of the shader? NTSC is self explanatory; but I’m unclear the difference between HD and Advanced; for example.

It’d also be great to one day have a wiki or explainer of each setting for those of us just starting out on our fiddling-with-shaders-and-not-actually-playing-the-games journey :smiley:

Thanks again!

2 Likes

Hey there!

I’m going straight to the differences. The HD version also includes a vertical filter, which gets enabled either with interlacing or with high resolution scanlines parameter ON. HD filter can also have much greater “strength and reach”, which can come handy with some situations.

The main benefit of regular advanced version is TATE mode (vertical flow of scanlines), otherwise it’s a version with a complete set of features. It also includes raster bloom and smart horizontal filtering, but i guess this can be more or sometimes less important…

1 Like

That’s great, thanks! I know what TATE mode is but not sure on the other stuff. HD works well with modern games though, that’s for sure.

As far as stress on the system is concerned, which is most and least intensive? It’s become a hobby of mine to get the most out of the least; and interest in this is become more universal with the advent of the Steam Deck

1 Like

HD version can be least intensive, if you stretch the filter range like with Internal Resolution, then things become slower. NTSC version can be most intensive and demanding, especially if you crank up x-resolution and y-resolution.

With Retroarch there are also fast and fastest verisons where fastest is also suitable for “low-power” mobiles. Fast version though, has a much better feature set.

2 Likes

If you want a mask that looks more like a real CRT’s Mask on your OLED TV, try the RRGGBBX (or XRRGGBB) Mask, Size 1 and use Mask Layout 1 (or whatever is the BGR mask layout in the Reshade port). Make sure your Desktop Resolution is 4K. On the slang version of CRT-Guest-Advanced Mask 12 is the RRGGBBX Mask, I’m not sure which one it is on the ReShade port.

1 Like

Here we go. Looks pretty good! This is 100% mask strength too.

EDIT: it does however create red artefacts on colours like yellow and white; especially on text. If I change the layout to RGB it’s mitigates it somewhat; but not entirely. Mask 9 doesn’t have it at all as a means of comparison. I took a picture but it doesn’t really show on my phone. My LG has BGRW; it’s one of the less straight forward ones…I am finding that you need to tailor settings per game!

FYI all settings in Reshade are the same, except in situations where you’d have negative values. So in a case where in Retroarch values would go from -10 to 10; in Reshade they’d go 0 to 20.

So in this instance, the parameters you mention are the same.

1 Like

Yeah I’m seeing this behaviour in Reshade. So you can get the same look by setting Reshades preprocessor resolution to whatever the game is running at (which usually almost completely removes the effect) and then use the downsample internal resolution setting - or, just set Reshades resolution to the equivalent resolution of what the down sampling does. Exact same effect; but the shader isn’t having to do any work and you maintain FPS

As far as I know all LG WOLED TVs use an RWBG layout until the G5. Are you sure it’s BGRW? Also, I don’t think CRT-Guest-Advanced’s BGR layout actually starts on Red. It’s actually RBG but of course individual Mask Layouts could vary.

You can take a look at these threads and posts if you want to dig deeper into the topic:

Lastly for some photo tips:

Be sure your camera is stable. Use Pro/manual mode. Speed 1/60 or 1/30. ISO 100-400. WB 4000K - 5000K or Auto. Focus Manual or Auto.

According RTINGS it’s RGBW but all 4 are never on at the same time. However the images they have of the sub pixels are confusing; they look like WBGR to me but also I can see a dark green sub-pixel and a fluorescent green sub-pixel; so I have no idea what I’m looking for, probably

@guest.r I’ve had this in mind for a long time

image
why not using “scale_x6 = 0.25”? or “scale_x7 = 0.50” if “scale_x6 = 0.50” need to be like this

I asked this because, based on my limited knowledge of shaders, the video will be enlarged to double size horizontally, which might require more processing power

1 Like

This was an option indeed some years ago, but users kept using the 2x scaling option, since it was still available.

Default scaling options also allow better scanline dynamics and artifacting/fringing manifestation. Pixel transition would also be compromised to a degree with the actual LPF…

I guess it’s needles to say what the original standard NTSC resolution is, this all is accounted into ntsc-adaptive pass scaling.

There aren’t too many passes which would benefit from a speedup, it’s not worth to sacrifice quality.

TL;DR current implementation brings better quality regarding the whole ntsc composition.

2 Likes