I’m not able to set a wider horizontal resolution and 240p vertical at 120hz, so this is the best I can get. I followed your tips on another topic. Thank you.
Same settings like above but with Blargg composite filter. I chosen a heavy dithered game like Comix Zone.
So I just learned that the sharpness setting on my TV wasn’t correct and it was having a pretty big impact on all my settings when using the cgwg aperture grille. Did a complete overhaul of guest-dr-venom-maxDR that should be a lot better now.
@hunterk submitted another pull request, maybe I’m doing it right now? lol.
heh, yeah, it looked good. I’ll try to merge it once I get my permissions restored.
Could someone plase tell me why my crt shaders gets uneven with Parallel on certain N64 games like DK64 and Banjo Kazooie? It like Rare games are higher resolution but I still run them in 320x240. But with Mupen64 it looks like usual. Why is that?
Playing around with the Analogue Shaders Pack and some ntsc and composite pass. I grew up in PAL region but i think this game definitely looks better in ntsc. The funny thing is that I just launched FF9 to test the shaders. 20hours later and i’m still playing it for my 3rd playthrough.
So soft, much noice.
I think this is the absolute brightest I can get it while maxing out the scanlines and avoiding clipping and crushed blacks. There’s still a slight amount of scanline bloom/glow with the very brightest colors. If I set the beam shape high parameter to around 130.00 or 140.00 then the bloom/glow is completely eliminated, but this saps brightness from highlights and makes the image look flatter. It should still be possible to get an adequately bright image with a setting of 140.00 on a newer (brighter) LCD.
I set gamma in/out to 3.50 in guest-dr-venom to keep the gamma curve in grade. Setting guest-dr-venom’s gamma to the same value for in/out just lifts the entire curve without altering its shape. Higher than 3.50 resulted in crushed blacks.
Lowering dark pixel bright boost lower than 1.00 made it impossible to pass the PLUGE test. I wound up setting dark pixel bright boost and bright pixel bright boost to 1.30. To keep the shape of the gamma curve, bright pixel and dark pixel bright boost should be raised the same amount. Otherwise, you’re changing the gamma curve and possibly getting clipping/oversaturation somewhere in the middle, OR you’ll lower black level lower than it needs to be for sRGB, making dark details hard to distinguish. The highest I could set bright pixel bright boost without getting any clipping was 1.30. Higher than this and you start to get soft clipping and eye strain, and at 1.40 you get hard clipping.
EDIT: bright/dark pixel bright boost should be left at 1.00 when in a dark room, and no higher than 1.30 in a bright room; 1.30 in a dark room is too bright and will look washed out.
AFAIK there’s no way to make the image brighter than this without reducing the strength of the scanlines.
(Adjust LCD backlight to 100%, of course).
Top, beam shape high 100.00. Bottom, beam shape high 140.00:
edit: forgot to edit color temp; I think this can go up to maybe 7100K-7300K before you start clipping blues (assuming you’re using sRGB).
Looks great! Who needs waifu2x!
@Mickevincent Thanks! I did a bunch of tests and I don’t think I can improve on it. With a brighter display you can use higher values for the beam shape high parameter, maybe up to 150.00. To completely eliminate all bloom with white pixels requires 200.00 or 250.00, I think. That would require probably OLED without automatic brightness limiting (probably involving some kind of dangerous firmware hack) or maybe a QLED with really good local dimming to keep the black level low when the backlight is cranked up.
Bright boost can’t go higher than 1.30, and should probably come down to 1.25 or 1.20 (or lower!) on higher-contrast and brighter displays.
I’m still trying to figure out some default settings. I assume most people are not going to have a custom LUT for Retroarch. @Dogway what are the best grade settings to use if people aren’t going to color manage retroarch / do any LUTing? I assume we want:
CRT gamma: still use the same recommendations for region
gamma type: sRGB
phosphor type: none
signal type: sRGB
display color space: sRGB
white point: not sure. I can go as high as 7000K before there’s any clipping, with hard clipping around 7200K. But 6500K is the spec for sRGB so maybe we should just do that?
In short, if we’re not going to color manage RA should we just set everything to the spec for sRGB? Or will it still be more accurate to set everything to the region-specific settings?
Also, when we make a LUT, I assume we want to make a separate LUT for PAL and NTSC color spaces? Or do want to make a LUT only to use with a wider display gamut and make the LUT for that gamut? Would choosing that display gamut in our graphics card settings be a faster but less accurate way of accomplishing the same thing?
Is restoring permissions something I need to do, or does this happen on a timer or something…? I didn’t quite get what you meant by that (talking about Github).
When our servers got hacked, the attacker got access to a key to my github account, so we revoked all of the account’s keys, access and privileges. Now that the keys are all revoked, we should be able to restore the privileges, which include the ability to merge changes to the repo, but we haven’t gotten around to doing so yet.
Random play in camera shots between LCD and CRT:
Here’s the shader,
shaders = "10"
shader0 = "shaders_slang/crt/shaders/guest/lut/lut.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/shaders/guest/color-profiles.slang"
filter_linear1 = "true"
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/d65-d50.slang"
filter_linear2 = "true"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = "WhitePointPass"
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/afterglow.slang"
filter_linear3 = "true"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = "AfterglowPass"
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/avg-lum.slang"
filter_linear4 = "true"
wrap_mode4 = "clamp_to_border"
mipmap_input4 = "true"
alias4 = "AvgLumPass"
float_framebuffer4 = "true"
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/linearize.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = "LinearizePass"
float_framebuffer5 = "true"
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/blur_horiz.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_border"
mipmap_input6 = "false"
alias6 = ""
float_framebuffer6 = "true"
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/blur_vert.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_border"
mipmap_input7 = "false"
alias7 = "GlowPass"
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/linearize_scanlines.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-guest-dr-venom.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = ""
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "viewport"
scale_x9 = "1.000000"
scale_type_y9 = "viewport"
scale_y9 = "1.000000"
parameters = "TNTC;CP;CS;WP;wp_saturation;SW;AR;PR;AG;PG;AB;PB;sat;lsmooth;GAMMA_INPUT;TAPSH;GLOW_FALLOFF_H;TAPSV;GLOW_FALLOFF_V;TATE;IOS;OS;BLOOM;brightboost;brightboost1;gsl;scanline1;scanline2;beam_min;beam_max;beam_size;h_sharp;s_sharp;csize;bsize;warpX;warpY;glow;shadowMask;masksize;vertmask;slotmask;slotwidth;double_slot;slotms;mcut;maskDark;maskLight;CGWG;gamma_out;spike;inter;interm;bloom;scans"
TNTC = "1.000000"
CP = "0.000000"
CS = "0.000000"
WP = "-100.000000"
wp_saturation = "1.100000"
SW = "0.000000"
AR = "0.000000"
PR = "0.000000"
AG = "0.000000"
PG = "0.000000"
AB = "0.000000"
PB = "0.000000"
sat = "0.000000"
lsmooth = "0.500000"
GAMMA_INPUT = "2.400000"
TAPSH = "1.000000"
GLOW_FALLOFF_H = "0.000000"
TAPSV = "1.000000"
GLOW_FALLOFF_V = "0.000000"
TATE = "0.000000"
IOS = "0.000000"
OS = "1.000000"
BLOOM = "0.000000"
brightboost = "1.000000"
brightboost1 = "1.150000"
gsl = "2.000000"
scanline1 = "15.000000"
scanline2 = "23.000000"
beam_min = "1.000000"
beam_max = "1.700000"
beam_size = "0.000000"
h_sharp = "8.000000"
s_sharp = "0.000000"
csize = "0.000000"
bsize = "600.000000"
warpX = "0.020000"
warpY = "0.030000"
glow = "0.000000"
shadowMask = "-1.000000"
masksize = "1.000000"
vertmask = "0.000000"
slotmask = "0.000000"
slotwidth = "2.000000"
double_slot = "1.000000"
slotms = "1.000000"
mcut = "0.200000"
maskDark = "0.500000"
maskLight = "1.500000"
CGWG = "0.300000"
gamma_out = "2.600000"
spike = "0.000000"
inter = "400.000000"
interm = "1.000000"
bloom = "0.000000"
scans = "1.000000"
textures = "SamplerLUT1;SamplerLUT2;SamplerLUT3"
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"
I guess you are emulating a CRT with RGB signal type right? Aside of that, before I was color managing I used the color mangler controls mostly. Something along these lines:
rg = "0.020000"
rb = "0.000000"
gr = "0.000000"
gb = "0.050000"
br = "0.000000"
bg = "0.100000"
Then the spec for a sRGB is a gamma of 2.40, internally this is offset to 2.222 (I did so for a direct signal comparison) so compensate for that with 2.522 gamma. This is for a dim surround.
About temperature, I found 6504K to be totally valid for a RGB signal type in case you want to emulate a BVM or these top grade monitors.
Yes, assume we’re talking about a CRT using an RGB signal.
Okay that makes sense, 2.5 is what I’ve been using but that was just eyeballing it. Are you saying even higher settings are appropriate in a bright room?
I still don’t really get the color LUT stuff though, still haven’t dived into that. Is this just for using a calibrated profile? So, we calibrate to sRGB or Rec 2020 or whatever the display’s native gamut is, then choose the appropriate option for display gamut within grade? I guess if we want to be lazy and less accurate, we just set our monitor to the widest gamut using the graphics card and skip the LUT part, and still select the appropriate option for display gamut in grade.
What about the crt phosphor gamut option? Do we need a wider gamut than sRGB for this, or does sRGB suffice?
There are 2 gammas at work in the shader, input gamma and output gamma. You can’t change output gamma though as this is bound to the output color space. If you are in a dim to bright surround sRGB is fine, if you are in a dim to dark surround 709 is more appropriate, and if you are in a dark surround and have the gamut to spare DCI-P3 (2.6 gamma) is even more appropriate.
The input gamma is also stuck at 2.40 (the // OETF line) as this is how the gamma is encoded in the image (no developer confirmed how they extract gamma encoded colors, so sRGB assumed).
The gamma_in value exposed is a bit on the artistic side. Really it should only be 2.222 for Composite, or 2.522( 2.40 with the offset) for RGB. Other than that it’s an artistic contribution to the monitor gamma which as we know it varied a lot in practical terms, so it’s ok to run this out of spec.
There are 2 LUT entries the first is for artistic purposes, the second is designed more for color management. You calibrate your monitor, then use the second LUT entry with a HALD CLUT to color manage Retroarch. For example in my case I calibrated to sRGB, process everything in sRGB and use a (sRGB) LUT on the second entry. You can calibrate to DCI, process everything in DCI and also use a (DCI) LUT on the second LUT entry.
I’m not sure about the phosphor’s gamut, haven’t checked if they fall within sRGB. But having a wide gamut always helps whatever color work you do.
Could i trouble you for your DC settings. I’ve been trying to get DC to look like that forever but im too danged dumb! LOL