Out of curiosity which scaler do you personally like the most scalefx, xbr-lv3 or super-xbr?
Itās really situational. The xBR family has āarbitraryā scaling abilities and great consistency, scalefx needs some help sometimes for my taste, but itās a very wide and profound scaler.
Super-xbr is not a standalone all-rounder, but very good for some situations and, as it turns out, a great addon for crt shaders tooā¦
As far as scalefx, the best case scenario Iāve seen so far is to deactivate every setting and then just enable your new high resolution scanlines setting, that seems to give the best results. I actually want to use scalefx simply because itās the fastest performance wise but yeah. Iām still messing about with xbr-lv3 but it seems ok right out the gate so far as well. Curious to see your two custom Super xbr presets when itās ready to give my opinion on those.
New Release Version (2023-12-02-r1):
Notable changes:
- Additional pre-scaler presets added (in
shaders/guest/
folder). - Feedback is welcome as this is a repository update candidate.
Download link:
https://mega.nz/file/xgBziJpY#hekDPzCFYghaNmqlGMfIzHRAgymGGoCzI7QBdDiy6KU
I actually like the softer look from this. It looks more like a really older shadow masker with low tv lines.
I see you added in āxbr-lv2ā now as well. Ok so I prepended these new scalers to my aperture grille rgb presets and these are my results:
I added a tweaked scalefx pic in for comparison sake but in order my favorite is xbr-lv2, scalefx, super-xbr-sharp and super-xbr-smooth. Xbr-lv2 gives the cleanest image while keeping things sharp and without any weird anamolies in the pixels. Scalefx looks good after lowering, turning off settings, super-xbr sharp and smooth I didnāt tweak but from first impressions I can see the sharp version looking nice with some tweaking, the smooth one I simply donāt care for.
They all work and do their job in different ways, I didnāt bother with the āhorizontalā scalers in the folder, not my cup of tea. All in all if I was to use one it would either be xbr-lv2 or scalefx with the āscalefx thresholdā setting brought down to 0.12 and the other two settings deactivated.
I know you told me what kind of shader it was in my thread but would it somehow be possible to get a āguest.r customizedā version of the xbrz-freescale" shader added into the mix? That one still gives me the best results even out of all 4 of those.
Greetings @Guest - I find this better and more authentic, it seems like a television effect as @yuzqualio said - great work what you are presenting!
This is just brilliant if I might say so myself!
Itās because the default āfreescaleā preset is outputting to a very high (viewport) resolution. But itās a performance killer with the majority of situations. A good deal is to increase the xBR-lvl2 shader pass scaling from 3.0 to something greater from the RA shader menu.
I figured youād say this lol.
Yeah I think Iāll end up using (assuming that I make upscaled presets again) xbr lv2 or a tweaked scalefx which with that one it would also give me better performance results. Guess Iāll see how things go. Thanks for the response and for this latest shader update.
I know what Iām āsayingā about, lol.
The difference between current xbr and xbrz-freescale is how the scaler kernel fueld by weights and the metric decides in some situations. Itās meaningless to even discuss which one is right on this or that pixel junction.
xbr:
xbrz-freescale:
I think weāre seeing a new subfield in the crt shaders realm. It does show some unique characteristics.
At @guest.r, the āsmoothā shader put at the beginning of the chain does its work smoothing diagonal lines and nuances and the post crt shader with its mask give some stability to the image by avoiding the blow up of the nasty characteristics of the former. Another shader you should consider in your experiments is jinc2. I got some great results with royale crt. Iād never imagine they both would match so well before experimenting. Even doing these things for almost two decades, it always brings new things to the table.
Iām even more amazed at you even being this invested in the upscaling side of shaders, I like that youāre tapping into different ranges with your shader so Iām enjoying this ride where ever this may lead lol.
On a different note, just for performance sake if I make upscaling presets again I may make due with scalefx, Iām not trying to bring end userās gpus to its knees using a demanding upscaler like xbrz freescale. The tweaks I mentioned in a above post seem to get the job done just as well as xbr. Who knows maybe youāll end up adding in a different upscaler, Iām watching how this all plays out but so far Iāve already got scalefx and xbr as my two top picks.
The most problematic situation here is with the ntsc presets, even at full 3x scale. As i already mentioned in your thread, the first ntsc shader pass x-scaling can be set/edited to 2x (instead of 4x), which basically halves the performance loss.
With default xbrz-freescale preset, for example, buffer resolutions with a 4k display could get as large as 16384x2160, which would crash gpuās or at least stall the performance.
So iām not including viewport resolution presets in my folder, but they can be (ofc.) freely added from the repository presets and used with other āgdvā versions.
Hi @guest.r, would you mind sharing those settings? Iām really interested in how the colour blooms outside of the slot mask, it has a splendid consumer CRT feel!
Yeah xbrz-freescale is out the door, that was me in my usual tweaking self trying out experiments in the lab, you know how it goes lol.
This will definitely be put to use if I make ntsc presets for sure, thank you for that tip.
Here is the preset. First crt-guest-advanced is loaded, then super-xbr-smooth pre-pended. Save it as a new preset. I guess then itās not this hard to copy over the parameter values.
shaders = "16"
feedback_pass = "0"
shader0 = "shaders_slang/stock.slang"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = "XbrSource"
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/edge-smoothing/xbr/shaders/super-xbr/super-xbr-pass0.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/edge-smoothing/xbr/shaders/super-xbr/super-xbr-pass1.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 = "2.000000"
scale_type_y2 = "source"
scale_y2 = "2.000000"
shader3 = "shaders_slang/edge-smoothing/xbr/shaders/super-xbr/super-xbr-pass2.slang"
filter_linear3 = "false"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = ""
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/shaders/guest/advanced/stock.slang"
filter_linear4 = "false"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = ""
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-guest-advanced/shaders/guest/advanced/stock.slang"
filter_linear5 = "false"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "StockPass"
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-guest-advanced/shaders/guest/advanced/afterglow0.slang"
filter_linear6 = "false"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = "AfterglowPass"
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/shaders/guest/advanced/pre-shaders-afterglow.slang"
filter_linear7 = "false"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "true"
alias7 = "PrePass"
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/shaders/guest/advanced/avg-lum.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "true"
alias8 = "AvgLumPass"
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/shaders/guest/advanced/linearize.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = "LinearizePass"
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-guest-advanced/shaders/guest/advanced/gaussian_horizontal.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = ""
float_framebuffer10 = "true"
srgb_framebuffer10 = "false"
scale_type_x10 = "absolute"
scale_x10 = "800"
scale_type_y10 = "source"
scale_y10 = "1.000000"
shader11 = "shaders_slang/crt-guest-advanced/shaders/guest/advanced/gaussian_vertical.slang"
filter_linear11 = "true"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = "GlowPass"
float_framebuffer11 = "true"
srgb_framebuffer11 = "false"
scale_type_x11 = "absolute"
scale_x11 = "800"
scale_type_y11 = "absolute"
scale_y11 = "600"
shader12 = "shaders_slang/crt-guest-advanced/shaders/guest/advanced/bloom_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 = "absolute"
scale_y12 = "600"
shader13 = "shaders_slang/crt-guest-advanced/shaders/guest/advanced/bloom_vertical.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "false"
alias13 = "BloomPass"
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/crt-guest-advanced/shaders/guest/advanced/crt-guest-advanced.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "false"
alias14 = ""
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "viewport"
scale_x14 = "1.000000"
scale_type_y14 = "viewport"
scale_y14 = "1.000000"
shader15 = "shaders_slang/crt-guest-advanced/shaders/guest/advanced/deconvergence.slang"
filter_linear15 = "true"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = ""
float_framebuffer15 = "false"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "1.000000"
scale_type_y15 = "viewport"
scale_y15 = "1.000000"
XBR_EDGE_STR_P0 = "1.000000"
XBR_EDGE_SHP = "3.000000"
XBR_TEXTURE_SHP = "2.000000"
XBR_EDGE_STR_P1 = "2.000000"
XBR_EDGE_STR_P2 = "2.000000"
hiscan = "1.000000"
FINE_BLOOM = "3.000000"
halation = "0.450000"
hmask1 = "0.150000"
gamma_c = "1.200000"
shadowMask = "9.000000"
maskstr = "1.000000"
mask_zoom = "1.000000"
mzoom_sh = "0.750000"
slotmask = "1.000000"
slotmask1 = "1.000000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
SamplerLUT1 = "shaders_slang/crt-guest-advanced/shaders/guest/advanced/lut/trinitron-lut.png"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/crt-guest-advanced/shaders/guest/advanced/lut/inv-trinitron-lut.png"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "shaders_slang/crt-guest-advanced/shaders/guest/advanced/lut/nec-lut.png"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
SamplerLUT4 = "shaders_slang/crt-guest-advanced/shaders/guest/advanced/lut/ntsc-lut.png"
SamplerLUT4_wrap_mode = "clamp_to_border"
SamplerLUT4_mipmap = "false"
Nice!
So itās the interaction between Halation and Fine bloom/halation that gives that particular look. And you could go a little overboard with xbr to make it extra smooth. Really interesting, thanks!
Got some similar royale effects using jinc2 prepended:
shaders = "15"
feedback_pass = "0"
shader0 = "shaders_slang/xbr/shaders/support/linearize.slang"
filter_linear0 = "false"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = "XbrSource"
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/interpolation/shaders/jinc2.slang"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = ""
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "viewport"
scale_x1 = "1.000000"
scale_type_y1 = "viewport"
scale_y1 = "1.000000"
shader2 = "shaders_slang/xbr/shaders/support/delinearize.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/advanced/stock.slang"
filter_linear3 = "false"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = ""
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/advanced/stock.slang"
filter_linear4 = "false"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "false"
alias4 = "StockPass"
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/advanced/afterglow0.slang"
filter_linear5 = "false"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "AfterglowPass"
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/advanced/pre-shaders-afterglow.slang"
filter_linear6 = "false"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "true"
alias6 = "PrePass"
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/advanced/avg-lum.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "true"
alias7 = "AvgLumPass"
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/shaders/guest/advanced/linearize.slang"
filter_linear8 = "true"
wrap_mode8 = "clamp_to_border"
mipmap_input8 = "false"
alias8 = "LinearizePass"
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/advanced/gaussian_horizontal.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = ""
float_framebuffer9 = "true"
srgb_framebuffer9 = "false"
scale_type_x9 = "absolute"
scale_x9 = "800"
scale_type_y9 = "source"
scale_y9 = "1.000000"
shader10 = "shaders_slang/crt/shaders/guest/advanced/gaussian_vertical.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_border"
mipmap_input10 = "false"
alias10 = "GlowPass"
float_framebuffer10 = "true"
srgb_framebuffer10 = "false"
scale_type_x10 = "absolute"
scale_x10 = "800"
scale_type_y10 = "absolute"
scale_y10 = "600"
shader11 = "shaders_slang/crt/shaders/guest/advanced/bloom_horizontal.slang"
filter_linear11 = "true"
wrap_mode11 = "clamp_to_border"
mipmap_input11 = "false"
alias11 = ""
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/guest/advanced/bloom_vertical.slang"
filter_linear12 = "true"
wrap_mode12 = "clamp_to_border"
mipmap_input12 = "false"
alias12 = "BloomPass"
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/guest/advanced/crt-guest-advanced.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "false"
alias13 = ""
float_framebuffer13 = "true"
srgb_framebuffer13 = "false"
scale_type_x13 = "viewport"
scale_x13 = "1.000000"
scale_type_y13 = "viewport"
scale_y13 = "1.000000"
shader14 = "shaders_slang/crt/shaders/guest/advanced/deconvergence.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "false"
alias14 = ""
float_framebuffer14 = "false"
srgb_framebuffer14 = "false"
scale_type_x14 = "viewport"
scale_x14 = "1.000000"
scale_type_y14 = "viewport"
scale_y14 = "1.000000"
JINC2_WINDOW_SINC = "0.500000"
JINC2_AR_STRENGTH = "1.000000"
TNTC = "4.000000"
glow = "0.000000"
gamma_out = "2.200000"
mask_bloom = "0.200000"
halation = "-0.200000"
hmask1 = "1.000000"
gamma_c = "0.900000"
gsl = "1.000000"
scanline1 = "0.000000"
scanline2 = "18.000000"
beam_min = "1.000000"
beam_max = "0.700000"
scans = "1.000000"
no_scanlines = "1.000000"
shadowMask = "6.000000"
maskstr = "0.500000"
mcut = "1.000000"
maskboost = "3.000000"
mask_layout = "1.000000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3;SamplerLUT4"
SamplerLUT1 = "shaders_slang/crt/shaders/guest/advanced/lut/trinitron-lut.png"
SamplerLUT1_wrap_mode = "clamp_to_border"
SamplerLUT1_mipmap = "false"
SamplerLUT2 = "shaders_slang/crt/shaders/guest/advanced/lut/inv-trinitron-lut.png"
SamplerLUT2_wrap_mode = "clamp_to_border"
SamplerLUT2_mipmap = "false"
SamplerLUT3 = "shaders_slang/crt/shaders/guest/advanced/lut/nec-lut.png"
SamplerLUT3_wrap_mode = "clamp_to_border"
SamplerLUT3_mipmap = "false"
SamplerLUT4 = "shaders_slang/crt/shaders/guest/advanced/lut/ntsc-lut.png"
SamplerLUT4_wrap_mode = "clamp_to_border"
SamplerLUT4_mipmap = "false"
I think we should have an official repository of these experiments, in each authorās shader folders. Some mixes are really good and deserve a place with the current presets.
If they only stay here in the posts, they will get lost and that would be a sin!