Dogway's grading shader (slang)

I only use D75 for CPS, PSX, Saturn and the like. I use D93 for SNES, Genesis, N64, and interesting enough I found 8000K enough for 8-bit systems.

For all of them I recommend using the color mangler suggestions if you are not calibrating the screen, which should be also calibrated for gamma depending on your space.

CRTs had an equivalent power gamma of 2.4 because they were also designed to be watched in a dim surround environment, that means a CRT value of 2.222, but actual CRTs were tuned to 2.40. So it depends if you want nostalgic CRT or correct CRT.

3 Likes

I’m using an HDTV with 2.4 gamma. Just want to make sure I’m doing this right… does the shader assume an LCD gamma of 2.2?

So, 2.4 CRT gamma with a 2.2 LCD = 2.6 CRT gamma with a 2.4 LCD? Is this correct?

IDK, 2.2 CRT gamma with SMPTE-C mode just looks better to me. The darkest values are too bright otherwise.

1 Like

What do you mean by color mangler suggestions? Are those the settings you posted with screenshots? As I could calibrate my display to different color temps but can’t at the moment unfortunately and my display is pretty accurate to D65.

1 Like

@Nesguy, HDTVs are rarely 2.4 gamma, they are about 2.2, and even if you tweak the TV gamma option to -2 what I was getting was a downward slope not really a gamma curve.

As you said if you really have a calibrated 2.4 gamma HDTV you want your CRT gamma to be 2.4 which is the default. If your LCD gamma is 2.2 lower CRT gamma to 2.2, but as I said CRT’s were tuned with a range between 2.35 and 2.55 gamma that means it can range between 2.2 and 2.40 for an LCD calibrated to 2.2.

@cobhc2016, the easiest is to tweak the settings explained in this post. Basically removing some purity from primaries of the color palette.

1 Like

Thanks for the reply, everything makes sense now!

I double checked and you’re right, this TV is actually 2.2. All my stuff is in storage right now, so I was just eyeballing it :stuck_out_tongue: Haven’t had a chance to do a proper calibration on this yet, just did basic adjustments using test patterns.

1 Like

@Dogway

I’ve been testing a bit more the grade shader, thanks also to Nesguy’s slotmask preset from the CRT shader thread. I’m noticing that green gets clipped in the SNES 240p color bars test (column D, E and F are the same for green). Just curious as to why this happens? It’s probably by design, just trying to understand.

Would going the wide gamut route alleviate the above problem, i.e. give green “wide range” in your shader with gradients in colum D, E, F being different?

Earlier you mentioned getting a 99+% sRGB match monitor would be a better route than crappier wide range gamut match, is that still the case? In that sense would it only be worthwhile to get something if it is certified 99%+ DCI gamut (for example)?

With that regards I noticed that in your grade shader code the sRGB and Rec 2020 tables are the same as stock guest-venom, but the DCI one differs as below.

grade:

// to DCI-P3
const mat3x3 DCIP3 = mat3x3(
 1.7842102050781250, -0.83157867193222050,  0.04736841097474098,
-0.6664471626281738,  1.76710486412048340, -0.10065787285566330,
-0.2881578207015991,  0.023684212937951088, 1.26447343826293950);

guest-venom

const mat3 ToDCI = 
mat3(
 2.725394,  -0.795168,   0.041242,
-1.018003,   1.689732,  -0.087639,
-0.440163,   0.022647,   1.100929
);
2 Likes

From D IIRC it’s WTW (Whiter than White), it’s not supposed to be visible, you can read about it in the test suite instructions, so I don’t think going wide gamut could solve that and if it “solves” it would be a side effect. In any case those typically represent out-of-gamut values, those are the first to get clipped (that’s the whole point of the shader) through the composite pass block.

As I could observe CRT greens are in-gamut for sRGB, but blues and a bit of reds are not so those need gamut compression. In that regard a calibrated wide gamut can help (you will notice more saturated reds and blues). A non calibrated wide gamut in my opinion is the same as a non calibrated sRGB, worthless, but I’m a color geek so take my opinion with a grain of salt : )

About the DCI matrix, you need to update. I was using the DCI white point, but I found out (someone correct me if I’m wrong) that most DCI compliant devices use D65 white point, so I fixed that.

And thanks for having a look, the shader has been without changes for a while, just some formatting changes but if you find something else iffy let me know.

3 Likes

I see some gr and gb in your preset, but in any case rather than hard clipping there is some soft clipping that soft rolls the highs making them look somewhat flat I also use my display space as space out so the gamut mapping might be flattening out the saturated primaries a bit more.

I’m not sure how old CRTs did work, games render out whites as 255, so is this supposed to be clipped (WTW) on a CRT or not? Might be worth to pass the greyscale ramp of the test suite over an old random CRT (not calibrated). The consensus is that the TV range is 16-235 but probably this was standarized after the 16-bit systems era.

About the blues, CRTs gamut is wider for blues than sRGB, so unless you gamut map to your display it’s going to clip at D93. Or try the bg technique.

The way I’m reading the instructions in Test Suite, everything after C should be clipped on a CRT(!)

@hunterk Do you have an old uncalibrated CRT and feel like testing this? For the sake of science! :smiley:

I don’t have any random TVs, unfortunately, just a bunch of broadcast monitors, but I don’t know if or how well they’ve been calibrated, so I can give it a shot.

2 Likes

Ok, I think I solved the clipping thing with guest-dr-venom. Still no idea if CRTs clipped or how much, but shouldn’t we be maximizing the dynamic range on our sRGB LCD displays, regardless of what CRTs did?

There’s still a bit of soft clipping due to the bright pixel boost, but it’s not as bad as it was and I think it makes the image look better, overall. Lowering dark pixel bright boost helps smooth out the low end/reduce posterization a bit when using the SMPTE-C mode. Also, adding a mask will help reduce the clipping. Slot mask strength 0.50 looks good w/these settings, I think.

@rafan

You might try beam shape low/high 15.00/5.00 to see if that eliminates the clipping for you. I still think there’s probably something going on with your display and/or graphics card settings, though. This makes the highlights pretty bloomy but there’s no avoiding it if you want to optimize the dynamic range.

shaders = "10"
shader0 = "shaders_slang/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/stock.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/misc/grade.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 = "g_gamma_in;g_signal_type;g_gamma_type;g_crtgamut;g_space_out;g_hue_degrees;g_I_SHIFT;g_Q_SHIFT;g_I_MUL;g_Q_MUL;g_lum_fix;g_vignette;g_vstr;g_vpower;g_lum;g_cntrst;g_mid;wp_temperature;g_sat;g_satr;g_satg;g_satb;g_vibr;g_lift;blr;blg;blb;wlr;wlg;wlb;rg;rb;gr;gb;br;bg;LUT_Size1;LUT1_toggle;LUT_Size2;LUT2_toggle;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"
g_gamma_in = "2.400000"
g_signal_type = "1.000000"
g_gamma_type = "1.000000"
g_crtgamut = "2.000000"
g_space_out = "0.000000"
g_hue_degrees = "0.000000"
g_I_SHIFT = "0.000000"
g_Q_SHIFT = "0.000000"
g_I_MUL = "1.000000"
g_Q_MUL = "1.000000"
g_lum_fix = "0.000000"
g_vignette = "0.000000"
g_vstr = "40.000000"
g_vpower = "0.200000"
g_lum = "0.000000"
g_cntrst = "0.000000"
g_mid = "0.500000"
wp_temperature = "6505.000000"
g_sat = "0.000000"
g_satr = "0.000000"
g_satg = "0.000000"
g_satb = "0.000000"
g_vibr = "0.000000"
g_lift = "0.000000"
blr = "0.000000"
blg = "0.000000"
blb = "0.000000"
wlr = "1.000000"
wlg = "1.000000"
wlb = "1.000000"
rg = "0.000000"
rb = "0.000000"
gr = "0.000000"
gb = "0.000000"
br = "0.000000"
bg = "0.000000"
LUT_Size1 = "16.000000"
LUT1_toggle = "0.000000"
LUT_Size2 = "64.000000"
LUT2_toggle = "0.000000"
SW = "1.000000"
AR = "0.070000"
PR = "0.050000"
AG = "0.070000"
PG = "0.050000"
AB = "0.070000"
PB = "0.050000"
sat = "0.100000"
lsmooth = "0.900000"
GAMMA_INPUT = "2.400000"
TAPSH = "4.000000"
GLOW_FALLOFF_H = "0.000000"
TAPSV = "4.000000"
GLOW_FALLOFF_V = "0.000000"
TATE = "0.000000"
IOS = "0.000000"
OS = "1.000000"
BLOOM = "0.000000"
brightboost = "0.500000"
brightboost1 = "1.500000"
gsl = "2.000000"
scanline1 = "15.000000"
scanline2 = "5.000000"
beam_min = "1.000000"
beam_max = "1.000000"
beam_size = "0.000000"
h_sharp = "3.000000"
s_sharp = "1.000000"
csize = "0.000000"
bsize = "600.000000"
warpX = "0.000000"
warpY = "0.000000"
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.250000"
maskDark = "0.500000"
maskLight = "1.500000"
CGWG = "0.300000"
gamma_out = "2.400000"
spike = "1.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"
2 Likes

An image with WTW (235-255) values doesn’t directly mean it’s in PC levels. That area is reserved for padding or overshoots.

The process to convert TV to PC range is by luminance expansion 0 <- 16 and 235 -> 255. So if you leave 255 as it is you are going to have a dull image, that is in the case old CRTs did luma expansion which I don’t really know. Most literature says that for SMPTE-C white corresponds to IRE 100 on a IRE 120 scale, so there’s a hint there, but that’s not the case for NTSC-J systems.

1 Like

Thanks for indulging us in this shader madness, lol. Anything you can do to help us get to the bottom of this would be appreciated.

Apologies for cluttering up the thread, but can someone tell me why this preset fails to load?

shaders = "6"
shader0 = "shaders_slang/misc/grade.slang"
wrap_mode0 = "clamp_to_border"
mipmap_input0 = "false"
alias0 = "ORIG_LINEARIZED"
float_framebuffer0 = "false"
srgb_framebuffer0 = "true"
shader1 = "shaders_slang/crt/shaders/crt-easymode-halation/linearize.slang"
filter_linear1 = "false"
wrap_mode1 = "clamp_to_border"
mipmap_input1 = "false"
alias1 = ""
float_framebuffer1 = "false"
srgb_framebuffer1 = "true"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders_slang/crt/shaders/crt-easymode-halation/blur_horiz.slang"
filter_linear2 = "false"
wrap_mode2 = "clamp_to_border"
mipmap_input2 = "false"
alias2 = ""
float_framebuffer2 = "false"
srgb_framebuffer2 = "true"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders_slang/crt/shaders/crt-easymode-halation/blur_vert.slang"
filter_linear3 = "false"
wrap_mode3 = "clamp_to_border"
mipmap_input3 = "false"
alias3 = ""
float_framebuffer3 = "false"
srgb_framebuffer3 = "true"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders_slang/crt/shaders/crt-easymode-halation/threshold.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/shaders/crt-easymode-halation/crt-easymode-halation.slang"
filter_linear5 = "true"
wrap_mode5 = "clamp_to_border"
mipmap_input5 = "false"
alias5 = ""
float_framebuffer5 = "false"
srgb_framebuffer5 = "false"
parameters = "g_gamma_in;g_signal_type;g_gamma_type;g_crtgamut;g_space_out;g_hue_degrees;g_I_SHIFT;g_Q_SHIFT;g_I_MUL;g_Q_MUL;g_lum_fix;g_vignette;g_vstr;g_vpower;g_lum;g_cntrst;g_mid;wp_temperature;g_sat;g_satr;g_satg;g_satb;g_vibr;g_lift;blr;blg;blb;wlr;wlg;wlb;rg;rb;gr;gb;br;bg;LUT_Size1;LUT1_toggle;LUT_Size2;LUT2_toggle;GAMMA_INPUT;GAMMA_OUTPUT;SHARPNESS_H;SHARPNESS_V;MASK_TYPE;MASK_STRENGTH_MIN;MASK_STRENGTH_MAX;MASK_SIZE;SCANLINE_STRENGTH_MIN;SCANLINE_STRENGTH_MAX;SCANLINE_BEAM_MIN;SCANLINE_BEAM_MAX;GEOM_CURVATURE;GEOM_WARP;GEOM_CORNER_SIZE;GEOM_CORNER_SMOOTH;INTERLACING_TOGGLE;HALATION;DIFFUSION;BRIGHTNESS"
g_gamma_in = "2.400000"
g_signal_type = "1.000000"
g_gamma_type = "1.000000"
g_crtgamut = "2.000000"
g_space_out = "0.000000"
g_hue_degrees = "0.000000"
g_I_SHIFT = "0.000000"
g_Q_SHIFT = "0.000000"
g_I_MUL = "1.000000"
g_Q_MUL = "1.000000"
g_lum_fix = "0.000000"
g_vignette = "1.000000"
g_vstr = "40.000000"
g_vpower = "0.200000"
g_lum = "0.000000"
g_cntrst = "0.000000"
g_mid = "0.500000"
wp_temperature = "6505.000000"
g_sat = "0.000000"
g_satr = "0.000000"
g_satg = "0.000000"
g_satb = "0.000000"
g_vibr = "0.000000"
g_lift = "0.000000"
blr = "0.000000"
blg = "0.000000"
blb = "0.000000"
wlr = "1.000000"
wlg = "1.000000"
wlb = "1.000000"
rg = "0.000000"
rb = "0.000000"
gr = "0.000000"
gb = "0.000000"
br = "0.000000"
bg = "0.000000"
LUT_Size1 = "32.000000"
LUT1_toggle = "0.000000"
LUT_Size2 = "64.000000"
LUT2_toggle = "0.000000"
GAMMA_INPUT = "2.400000"
GAMMA_OUTPUT = "2.200000"
SHARPNESS_H = "0.600000"
SHARPNESS_V = "1.000000"
MASK_TYPE = "4.000000"
MASK_STRENGTH_MIN = "0.200000"
MASK_STRENGTH_MAX = "0.200000"
MASK_SIZE = "1.000000"
SCANLINE_STRENGTH_MIN = "0.200000"
SCANLINE_STRENGTH_MAX = "0.400000"
SCANLINE_BEAM_MIN = "1.000000"
SCANLINE_BEAM_MAX = "1.000000"
GEOM_CURVATURE = "0.000000"
GEOM_WARP = "0.000000"
GEOM_CORNER_SIZE = "0.000000"
GEOM_CORNER_SMOOTH = "150.000000"
INTERLACING_TOGGLE = "1.000000"
HALATION = "0.030000"
DIFFUSION = "0.000000"
BRIGHTNESS = "1.000000"

I’m not exactly sure but this.

alias0 = "ORIG_LINEARIZED"

Should be this instead.

alias1 = "ORIG_LINEARIZED"

If nobody fixes your issue by about 9 tonight, (I recall that we are in the same timezone) I’ll mess with it an see what I can do.

It’d be nice if you used the logging feature in RA to see what it’s failing, as it could save me some time.

1 Like

Thanks man, I appreciate it.

Been a while since I’ve done this, can you remind me how this works? Launch Retroarch (log to file), enable logging verbosity and…?

1 Like

Ummmm, I’m trying to do this from memory.

I usually take it out of fullscreen, go to logging in RA’s menu turn it on and set it to debug or error mode.

Then try and load the preset, it’ll give you some [error] things in the command prompt window.

1 Like
[INFO] RetroArch 1.8.1 (Git bfdc8e6a62)
[INFO] === Build =======================================
[INFO] CPU Model Name: Intel(R) Core(TM) i5 CPU         650  @ 3.20GHz
[INFO] Capabilities:  MMX MMXEXT SSE SSE2 SSE3 SSSE3 SSE4 SSE4.2 AES
[INFO] Built: Nov  2 2019
[INFO] Version: 1.8.1
[INFO] Git: bfdc8e6a62
[INFO] =================================================
[INFO] [Environ]: SET_PIXEL_FORMAT: RGB565.
[INFO] Redirecting save file to "C:\Program Files\RetroArch\saves\.srm".
[INFO] Redirecting savestate to "C:\Program Files\RetroArch\states\.state".
[INFO] Version of libretro API: 1
[INFO] Compiled against API: 1
[INFO] [Audio]: Set audio input rate to: 30000.00 Hz.
[INFO] [Video]: Video @ 1029x720
[INFO] [GLCore]: Found GL context: wgl
[INFO] [GLCore]: Detecting screen resolution 1920x1080.
[INFO] [WGL] extensions: WGL_ARB_buffer_region WGL_ARB_create_context WGL_ARB_create_context_no_error WGL_ARB_create_context_profile WGL_ARB_create_context_robustness WGL_ARB_context_flush_control WGL_ARB_extensions_string WGL_ARB_make_current_read WGL_ARB_mult
[INFO] [WGL]: Adaptive VSync supported.
[INFO] [WGL]: wglSwapInterval(1)
[INFO] [GLCore]: Vendor: NVIDIA Corporation, Renderer: GeForce GTX 1050/PCIe/SSE2.
[INFO] [GLCore]: Version: 4.6.0 NVIDIA 430.39.
[INFO] [GLCore]: Using resolution 1029x720
[INFO] [DINPUT]: Enumerating joypads ...
[INFO] [DINPUT]: Device #0 PID: {028E} VID:{045E}
[WARN] [DINPUT]: Strong rumble unavailable.
[WARN] [DINPUT]: Weak rumble unavailable.
[INFO] [Autoconf]: 32 profiles found.
[INFO] [Autoconf]: selected configuration: C:\Program Files\RetroArch\autoconfig\dinput\XBOX_360.cfg
[INFO] [DINPUT]: Done enumerating joypads ...
[INFO] [Joypad]: Found joypad driver: "dinput".
[INFO] [GLCore]: Loading stock shader.
[INFO] [slang]: Building pass #0 (N/A)
[INFO] [slang]: Reflection
[INFO] [slang]:   Textures:
[INFO] [slang]:      Source (#0)
[INFO] [slang]:
[INFO] [slang]:   Uniforms (Vertex: yes, Fragment: no):
[INFO] [slang]:   Push Constants (Vertex: no, Fragment: no):
[INFO] [slang]:      MVP (Offset: 0)
[INFO] [slang]:
[INFO] [slang]:   Parameters:
[INFO] [GLCore]: Not using frame history.
[INFO] [GLCore]: Not using framebuffer feedback.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Video]: Found display server: win32
[INFO] Found shader "C:\Program Files\RetroArch\shaders\crt-easymode-halation.slangp"
[INFO] Found shader "C:\Program Files\RetroArch\shaders\guest-dr-venom.slangp"
[INFO] Found shader "C:\Program Files\RetroArch\shaders\retroarch.slangp"
[INFO] [XAudio2]: Requesting 64 ms latency, using 64 ms latency.
[INFO] [Menu]: Found menu display driver: "glcore".
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Menu]: Found menu display driver: "glcore".
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [LED]: LED driver = 'null' 0000000000B8AF00
[INFO] [MIDI]: Initializing ...
[INFO] [MIDI]: Input disabled.
[INFO] [MIDI]: Output disabled.
[INFO] [MIDI]: Initialized "winmm" driver.
[INFO] SRAM will not be saved.
[INFO] Loading history file: [C:\Program Files\RetroArch\content_history.lpl].
[INFO] Loading history file: [C:\Program Files\RetroArch\content_music_history.lpl].
[INFO] Loading history file: [C:\Program Files\RetroArch\content_video_history.lpl].
[INFO] Loading history file: [C:\Program Files\RetroArch\content_image_history.lpl].
[INFO] Loading favorites file: [C:\Program Files\RetroArch\content_favorites.lpl].
[INFO] [GLCore]: VSync => on
[INFO] [WGL]: wglSwapInterval(1)
[INFO] [GLCore]: VSync => on
[INFO] [WGL]: wglSwapInterval(1)
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] Using content: C:\Users\Patrick\Documents\roms\nes\Mike Tyson's Punch-Out!! (U) (PRG0) [!].nes.
[INFO] arg #0: retroarch
[INFO] arg #1: C:\Users\Patrick\Documents\roms\nes\Mike Tyson's Punch-Out!! (U) (PRG0) [!].nes
[INFO] arg #2: -s
[INFO] arg #3: C:\Program Files\RetroArch\saves
[INFO] arg #4: -S
[INFO] arg #5: C:\Program Files\RetroArch\states
[INFO] arg #6: -c
[INFO] arg #7: C:\Program Files\RetroArch\retroarch.cfg
[INFO] arg #8: -L
[INFO] arg #9: C:\Program Files\RetroArch\cores\nestopia_libretro.dll
[INFO] Content ran for a total of: 00 hours, 00 minutes, 00 seconds.
[INFO] Unloading game..
[INFO] Unloading core..
[INFO] Unloading core symbols..
[INFO] [Video]: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames.
[INFO] Set config file to : C:\Program Files\RetroArch\retroarch.cfg
[INFO] RetroArch 1.8.1 (Git bfdc8e6a62)
[INFO] Redirecting save file to "C:\Program Files\RetroArch\saves\Mike Tyson's Punch-Out!! (U) (PRG0) [!].srm".
[INFO] Redirecting savestate to "C:\Program Files\RetroArch\states\Mike Tyson's Punch-Out!! (U) (PRG0) [!].state".
[INFO] === Build =======================================
[INFO] CPU Model Name: Intel(R) Core(TM) i5 CPU         650  @ 3.20GHz
[INFO] Capabilities:  MMX MMXEXT SSE SSE2 SSE3 SSSE3 SSE4 SSE4.2 AES
[INFO] Built: Nov  2 2019
[INFO] Version: 1.8.1
[INFO] Git: bfdc8e6a62
[INFO] =================================================
[INFO] Loading dynamic libretro core from: "C:\Program Files\RetroArch\cores\nestopia_libretro.dll"
[INFO] [Overrides] core-specific overrides found at C:\Program Files\RetroArch\config\Nestopia\Nestopia.cfg.
[INFO] [Overrides] no content-dir-specific overrides found at C:\Program Files\RetroArch\config\Nestopia\nes.cfg.
[INFO] [Overrides] no game-specific overrides found at C:\Program Files\RetroArch\config\Nestopia\Mike Tyson's Punch-Out!! (U) (PRG0) [!].cfg.
[INFO] Config: appending config "C:\Program Files\RetroArch\config\Nestopia\Nestopia.cfg"
[INFO] [Environ]: GET_LANGUAGE: "0".
[INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL.
[INFO] [Remaps]: remap directory: C:\Program Files\RetroArch\config\remaps
[INFO] Redirecting save file to "C:\Program Files\RetroArch\saves\Mike Tyson's Punch-Out!! (U) (PRG0) [!].srm".
[INFO] Redirecting savestate to "C:\Program Files\RetroArch\states\Mike Tyson's Punch-Out!! (U) (PRG0) [!].state".
[INFO] [Environ]: GET_LOG_INTERFACE.
[INFO] [Environ]: PERFORMANCE_LEVEL: 6.
[INFO] Loading content file: C:\Users\Patrick\Documents\roms\nes\Mike Tyson's Punch-Out!! (U) (PRG0) [!].nes.
[INFO] Did not find a valid content patch.
[INFO] [Environ]: SET_INPUT_DESCRIPTORS:
[INFO] [Environ]: SYSTEM_DIRECTORY: "C:\Program Files\RetroArch\system".
[libretro INFO] Custom palette path: C:\Program Files\RetroArch\system\custom.pal
[libretro INFO] custom.pal not found in system directory.
[INFO] [Environ]: SET_PIXEL_FORMAT: XRGB8888.
[INFO] SET_GEOMETRY: 256x224, aspect: 1.306.
[INFO] [Environ]: SET_GEOMETRY.
[libretro INFO] [Nestopia]: Machine is NTSC.
[INFO] [RCHEEVOS]: ext_hash 0b88944b ('nes')
[INFO] Skipping SRAM load..
[INFO] [RCHEEVOS]: Load task finished
[INFO] Version of libretro API: 1
[INFO] Compiled against API: 1
[INFO] [Cheats]: Load game-specific cheatfile: C:\Program Files\RetroArch\cheats\Nestopia\Mike Tyson's Punch-Out!! (U) (PRG0) [!].cht
[INFO] [Audio]: Set audio input rate to: 48000.00 Hz.
[INFO] [Video]: Video @ 897x672
[INFO] [GLCore]: Found GL context: wgl
[INFO] [GLCore]: Detecting screen resolution 1920x1080.
[INFO] [WGL] extensions: WGL_ARB_buffer_region WGL_ARB_create_context WGL_ARB_create_context_no_error WGL_ARB_create_context_profile WGL_ARB_create_context_robustness WGL_ARB_context_flush_control WGL_ARB_extensions_string WGL_ARB_make_current_read WGL_ARB_mult
[INFO] [WGL]: Adaptive VSync supported.
[INFO] [WGL]: wglSwapInterval(1)
[INFO] [GLCore]: Vendor: NVIDIA Corporation, Renderer: GeForce GTX 1050/PCIe/SSE2.
[INFO] [GLCore]: Version: 4.6.0 NVIDIA 430.39.
[INFO] [GLCore]: Using resolution 897x672
[INFO] [DINPUT]: Enumerating joypads ...
[INFO] [DINPUT]: Device #0 PID: {028E} VID:{045E}
[WARN] [DINPUT]: Strong rumble unavailable.
[WARN] [DINPUT]: Weak rumble unavailable.
[INFO] [Autoconf]: 32 profiles found.
[INFO] [Autoconf]: selected configuration: C:\Program Files\RetroArch\autoconfig\dinput\XBOX_360.cfg
[INFO] [DINPUT]: Done enumerating joypads ...
[INFO] [Joypad]: Found joypad driver: "dinput".
[INFO] [Shaders]: preset directory: C:\Program Files\RetroArch\shaders\presets
[INFO] [Shaders]: Specific shader preset found at C:\Program Files\RetroArch\shaders\presets\Nestopia\Nestopia.slangp.
[INFO] [Shaders]: core-specific shader preset found.
[INFO] [slang]: Compiling shader "C:\Program Files\RetroArch\shaders\shaders_slang\stock.slang".
[INFO] [slang]: Using render target format R8G8B8A8_UNORM for pass output #0.
[INFO] [slang]: Compiling shader "C:\Program Files\RetroArch\shaders\shaders_slang\stock.slang".
[INFO] [slang]: Using render target format R8G8B8A8_UNORM for pass output #1.
[INFO] [slang]: Compiling shader "C:\Program Files\RetroArch\shaders\shaders_slang\misc\grade.slang".
[INFO] [slang]: Using render target format R8G8B8A8_UNORM for pass output #2.
[INFO] [slang]: Compiling shader "C:\Program Files\RetroArch\shaders\shaders_slang\crt\shaders\guest\afterglow.slang".
[INFO] [slang]: Using render target format R8G8B8A8_UNORM for pass output #3.
[INFO] [slang]: Compiling shader "C:\Program Files\RetroArch\shaders\shaders_slang\crt\shaders\guest\avg-lum.slang".
[INFO] [slang]: Using render target format R16G16B16A16_SFLOAT for pass output #4.
[INFO] [slang]: Compiling shader "C:\Program Files\RetroArch\shaders\shaders_slang\crt\shaders\guest\linearize.slang".
[INFO] [slang]: Using render target format R16G16B16A16_SFLOAT for pass output #5.
[INFO] [slang]: Compiling shader "C:\Program Files\RetroArch\shaders\shaders_slang\crt\shaders\guest\blur_horiz.slang".
[INFO] [slang]: Using render target format R16G16B16A16_SFLOAT for pass output #6.
[INFO] [slang]: Compiling shader "C:\Program Files\RetroArch\shaders\shaders_slang\crt\shaders\guest\blur_vert.slang".
[INFO] [slang]: Using render target format R16G16B16A16_SFLOAT for pass output #7.
[INFO] [slang]: Compiling shader "C:\Program Files\RetroArch\shaders\shaders_slang\crt\shaders\guest\linearize_scanlines.slang".
[INFO] [slang]: Using render target format R16G16B16A16_SFLOAT for pass output #8.
[INFO] [slang]: Compiling shader "C:\Program Files\RetroArch\shaders\shaders_slang\crt\shaders\guest\crt-guest-dr-venom.slang".
[INFO] [slang]: Using render target format R8G8B8A8_UNORM for pass output #9.
[INFO] [slang]: Building pass #0 (N/A)
[INFO] [slang]: Reflection
[INFO] [slang]:   Textures:
[INFO] [slang]:      Source (#0)
[INFO] [slang]:
[INFO] [slang]:   Uniforms (Vertex: yes, Fragment: yes):
[INFO] [slang]:   Push Constants (Vertex: yes, Fragment: yes):
[INFO] [slang]:      MVP (Offset: 0)
[INFO] [slang]:
[INFO] [slang]:   Parameters:
[INFO] [slang]: Building pass #1 (N/A)
[INFO] [slang]: Reflection
[INFO] [slang]:   Textures:
[INFO] [slang]:      Source (#0)
[INFO] [slang]:
[INFO] [slang]:   Uniforms (Vertex: yes, Fragment: yes):
[INFO] [slang]:   Push Constants (Vertex: yes, Fragment: yes):
[INFO] [slang]:      MVP (Offset: 0)
[INFO] [slang]:
[INFO] [slang]:   Parameters:
[INFO] [slang]: Building pass #2 (WhitePointPass)
[INFO] [slang]: Reflection
[INFO] [slang]:   Textures:
[INFO] [slang]:      Source (#0)
[INFO] [slang]:      User (#0)
[INFO] [slang]:      User (#1)
[INFO] [slang]:
[INFO] [slang]:   Uniforms (Vertex: yes, Fragment: yes):
[INFO] [slang]:   Push Constants (Vertex: yes, Fragment: yes):
[INFO] [slang]:      MVP (Offset: 0)
[INFO] [slang]:      OriginalSize (#0) (Offset: 80)
[INFO] [slang]:      SourceSize (#0) (Offset: 64)
[INFO] [slang]:
[INFO] [slang]:   Parameters:
[INFO] [slang]:     #0 (PushOffset: 0)
[INFO] [slang]:     #1 (PushOffset: 4)
[INFO] [slang]:     #2 (PushOffset: 8)
[INFO] [slang]:     #3 (PushOffset: 12)
[INFO] [slang]:     #4 (PushOffset: 16)
[INFO] [slang]:     #5 (PushOffset: 20)
[INFO] [slang]:     #6 (PushOffset: 24)
[INFO] [slang]:     #7 (PushOffset: 28)
[INFO] [slang]:     #8 (PushOffset: 32)
[INFO] [slang]:     #9 (PushOffset: 36)
[INFO] [slang]:     #10 (PushOffset: 40)
[INFO] [slang]:     #11 (PushOffset: 44)
[INFO] [slang]:     #12 (PushOffset: 48)
[INFO] [slang]:     #13 (PushOffset: 52)
[INFO] [slang]:     #14 (PushOffset: 64)
[INFO] [slang]:     #15 (PushOffset: 68)
[INFO] [slang]:     #16 (PushOffset: 72)
[INFO] [slang]:     #17 (Offset: 116)
[INFO] [slang]:     #18 (PushOffset: 56)
[INFO] [slang]:     #19 (Offset: 120)
[INFO] [slang]:     #20 (Offset: 124)
[INFO] [slang]:     #21 (Offset: 128)
[INFO] [slang]:     #22 (PushOffset: 60)
[INFO] [slang]:     #23 (PushOffset: 76)
[INFO] [slang]:     #24 (PushOffset: 80)
[INFO] [slang]:     #25 (PushOffset: 84)
[INFO] [slang]:     #26 (PushOffset: 88)
[INFO] [slang]:     #27 (PushOffset: 92)
[INFO] [slang]:     #28 (PushOffset: 96)
[INFO] [slang]:     #29 (PushOffset: 100)
[INFO] [slang]:     #30 (PushOffset: 104)
[INFO] [slang]:     #31 (PushOffset: 108)
[INFO] [slang]:     #32 (PushOffset: 112)
[INFO] [slang]:     #33 (PushOffset: 116)
[INFO] [slang]:     #34 (PushOffset: 120)
[INFO] [slang]:     #35 (PushOffset: 124)
[INFO] [slang]:     #36 (Offset: 132)
[INFO] [slang]:     #37 (Offset: 136)
[INFO] [slang]:     #38 (Offset: 140)
[INFO] [slang]:     #39 (Offset: 144)
[INFO] [slang]: Building pass #3 (AfterglowPass)
[INFO] [slang]: Reflection
[INFO] [slang]:   Textures:
[INFO] [slang]:      Source (#0)
[INFO] [slang]:      OriginalHistory (#1)
[INFO] [slang]:      OriginalHistory (#2)
[INFO] [slang]:      OriginalHistory (#3)
[INFO] [slang]:      OriginalHistory (#4)
[INFO] [slang]:      OriginalHistory (#5)
[INFO] [slang]:      OriginalHistory (#6)
[INFO] [slang]:
[INFO] [slang]:   Uniforms (Vertex: yes, Fragment: yes):
[INFO] [slang]:   Push Constants (Vertex: yes, Fragment: yes):
[INFO] [slang]:      MVP (Offset: 0)
[INFO] [slang]:
[INFO] [slang]:   Parameters:
[INFO] [slang]:     #0 (PushOffset: 0)
[INFO] [slang]:     #1 (PushOffset: 4)
[INFO] [slang]:     #2 (PushOffset: 8)
[INFO] [slang]:     #3 (PushOffset: 12)
[INFO] [slang]:     #4 (PushOffset: 16)
[INFO] [slang]:     #5 (PushOffset: 20)
[INFO] [slang]:     #6 (PushOffset: 24)
[INFO] [slang]:     #7 (PushOffset: 28)
[INFO] [slang]: Building pass #4 (AvgLumPass)
[INFO] [slang]: Reflection
[INFO] [slang]:   Textures:
[INFO] [slang]:      Source (#0)
[INFO] [slang]:      PassFeedback (#4)
[INFO] [slang]:
[INFO] [slang]:   Uniforms (Vertex: yes, Fragment: yes):
[INFO] [slang]:   Push Constants (Vertex: yes, Fragment: yes):
[INFO] [slang]:      MVP (Offset: 0)
[INFO] [slang]:      SourceSize (#0) (PushOffset: 16)
[INFO] [slang]:
[INFO] [slang]:   Parameters:
[INFO] [slang]:     #0 (PushOffset: 32)
[INFO] [slang]: Building pass #5 (LinearizePass)
[INFO] [slang]: Reflection
[INFO] [slang]:   Textures:
[INFO] [slang]:      PassOutput (#3)
[INFO] [slang]:
[INFO] [slang]:   Uniforms (Vertex: yes, Fragment: yes):
[INFO] [slang]:   Push Constants (Vertex: yes, Fragment: yes):
[INFO] [slang]:      MVP (Offset: 0)
[INFO] [slang]:
[INFO] [slang]:   Parameters:
[INFO] [slang]:     #0 (PushOffset: 0)
[INFO] [slang]: Building pass #6 (N/A)
[INFO] [slang]: Reflection
[INFO] [slang]:   Textures:
[INFO] [slang]:      Source (#0)
[INFO] [slang]:
[INFO] [slang]:   Uniforms (Vertex: yes, Fragment: yes):
[INFO] [slang]:   Push Constants (Vertex: yes, Fragment: yes):
[INFO] [slang]:      MVP (Offset: 0)
[INFO] [slang]:      SourceSize (#0) (PushOffset: 0)
[INFO] [slang]:
[INFO] [slang]:   Parameters:
[INFO] [slang]:     #0 (PushOffset: 52)
[INFO] [slang]:     #1 (PushOffset: 56)
[INFO] [slang]: Building pass #7 (GlowPass)
[INFO] [slang]: Reflection
[INFO] [slang]:   Textures:
[INFO] [slang]:      Source (#0)
[INFO] [slang]:
[INFO] [slang]:   Uniforms (Vertex: yes, Fragment: yes):
[INFO] [slang]:   Push Constants (Vertex: yes, Fragment: yes):
[INFO] [slang]:      MVP (Offset: 0)
[INFO] [slang]:      SourceSize (#0) (PushOffset: 0)
[INFO] [slang]:
[INFO] [slang]:   Parameters:
[INFO] [slang]:     #0 (PushOffset: 52)
[INFO] [slang]:     #1 (PushOffset: 56)
[INFO] [slang]: Building pass #8 (N/A)
[INFO] [slang]: Reflection
[INFO] [slang]:   Textures:
[INFO] [slang]:      PassOutput (#3)
[INFO] [slang]:
[INFO] [slang]:   Uniforms (Vertex: yes, Fragment: yes):
[INFO] [slang]:   Push Constants (Vertex: yes, Fragment: yes):
[INFO] [slang]:      MVP (Offset: 0)
[INFO] [slang]:
[INFO] [slang]:   Parameters:
[INFO] [slang]: Building pass #9 (N/A)
[INFO] [slang]: Reflection
[INFO] [slang]:   Textures:
[INFO] [slang]:      Source (#0)
[INFO] [slang]:      PassOutput (#4)
[INFO] [slang]:      PassOutput (#5)
[INFO] [slang]:      PassOutput (#7)
[INFO] [slang]:
[INFO] [slang]:   Uniforms (Vertex: yes, Fragment: yes):
[INFO] [slang]:   Push Constants (Vertex: yes, Fragment: yes):
[INFO] [slang]:      MVP (Offset: 0)
[INFO] [slang]:      OutputSize (Offset: 96)
[INFO] [slang]:      FrameCount (Offset: 112)
[INFO] [slang]:      SourceSize (#0) (Offset: 64)
[INFO] [slang]:
[INFO] [slang]:   Parameters:
[INFO] [slang]:     #0 (PushOffset: 0)
[INFO] [slang]:     #1 (PushOffset: 4)
[INFO] [slang]:     #2 (PushOffset: 8)
[INFO] [slang]:     #3 (PushOffset: 12)
[INFO] [slang]:     #4 (PushOffset: 16)
[INFO] [slang]:     #5 (PushOffset: 20)
[INFO] [slang]:     #6 (PushOffset: 24)
[INFO] [slang]:     #7 (PushOffset: 28)
[INFO] [slang]:     #8 (PushOffset: 32)
[INFO] [slang]:     #9 (PushOffset: 36)
[INFO] [slang]:     #10 (PushOffset: 40)
[INFO] [slang]:     #11 (PushOffset: 44)
[INFO] [slang]:     #12 (PushOffset: 48)
[INFO] [slang]:     #13 (PushOffset: 52)
[INFO] [slang]:     #14 (PushOffset: 56)
[INFO] [slang]:     #15 (PushOffset: 60)
[INFO] [slang]:     #16 (PushOffset: 64)
[INFO] [slang]:     #17 (PushOffset: 68)
[INFO] [slang]:     #18 (PushOffset: 72)
[INFO] [slang]:     #19 (PushOffset: 76)
[INFO] [slang]:     #20 (PushOffset: 80)
[INFO] [slang]:     #21 (PushOffset: 84)
[INFO] [slang]:     #22 (PushOffset: 88)
[INFO] [slang]:     #23 (PushOffset: 92)
[INFO] [slang]:     #24 (PushOffset: 96)
[INFO] [slang]:     #25 (Offset: 128)
[INFO] [slang]:     #26 (PushOffset: 100)
[INFO] [slang]:     #27 (PushOffset: 104)
[INFO] [slang]:     #28 (PushOffset: 108)
[INFO] [slang]:     #29 (PushOffset: 112)
[INFO] [slang]:     #30 (PushOffset: 116)
[INFO] [slang]:     #31 (PushOffset: 120)
[INFO] [slang]:     #32 (PushOffset: 124)
[INFO] [slang]:     #33 (Offset: 120)
[INFO] [slang]:     #34 (Offset: 116)
[INFO] [slang]:     #35 (Offset: 124)
[INFO] [slang]: Building pass #10 (N/A)
[INFO] [slang]: Reflection
[INFO] [slang]:   Textures:
[INFO] [slang]:      Source (#0)
[INFO] [slang]:
[INFO] [slang]:   Uniforms (Vertex: yes, Fragment: no):
[INFO] [slang]:   Push Constants (Vertex: no, Fragment: no):
[INFO] [slang]:      MVP (Offset: 0)
[INFO] [slang]:
[INFO] [slang]:   Parameters:
[INFO] [GLCore]: Using history of 6 frames.
[INFO] [GLCore]: Using framebuffer feedback for pass #4.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Video]: Found display server: win32
[INFO] Found shader "C:\Program Files\RetroArch\shaders\crt-easymode-halation.slangp"
[INFO] Found shader "C:\Program Files\RetroArch\shaders\guest-dr-venom.slangp"
[INFO] Found shader "C:\Program Files\RetroArch\shaders\retroarch.slangp"
[INFO] [XAudio2]: Requesting 64 ms latency, using 64 ms latency.
[INFO] [Menu]: Found menu display driver: "glcore".
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [LED]: LED driver = 'null' 0000000000B8AF00
[INFO] [MIDI]: Initializing ...
[INFO] [MIDI]: Input disabled.
[INFO] [MIDI]: Output disabled.
[INFO] [MIDI]: Initialized "winmm" driver.
[INFO] Loading history file: [C:\Program Files\RetroArch\content_history.lpl].
[INFO] Loading history file: [C:\Program Files\RetroArch\content_music_history.lpl].
[INFO] Loading history file: [C:\Program Files\RetroArch\content_video_history.lpl].
[INFO] Loading history file: [C:\Program Files\RetroArch\content_image_history.lpl].
[INFO] Loading favorites file: [C:\Program Files\RetroArch\content_favorites.lpl].
[INFO] [GLCore]: VSync => on
[INFO] [WGL]: wglSwapInterval(1)
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [GLCore]: VSync => off
[INFO] [WGL]: wglSwapInterval(0)
[INFO] [GLCore]: VSync => on
[INFO] [WGL]: wglSwapInterval(1)
[INFO] [GLCore]: VSync => on
[INFO] [WGL]: wglSwapInterval(1)
[INFO] [slang]: Compiling shader "C:\Program Files\RetroArch\shaders\shaders_slang\misc\grade.slang".
[INFO] [slang]: Using render target format R8G8B8A8_UNORM for pass output #0.
[INFO] [slang]: Compiling shader "C:\Program Files\RetroArch\shaders\shaders_slang\crt\shaders\crt-easymode-halation\linearize.slang".
[INFO] [slang]: Using render target format R8G8B8A8_SRGB for pass output #1.
[INFO] [slang]: Compiling shader "C:\Program Files\RetroArch\shaders\shaders_slang\crt\shaders\crt-easymode-halation\blur_horiz.slang".
[INFO] [slang]: Using render target format R8G8B8A8_SRGB for pass output #2.
[INFO] [slang]: Compiling shader "C:\Program Files\RetroArch\shaders\shaders_slang\crt\shaders\crt-easymode-halation\blur_vert.slang".
[INFO] [slang]: Using render target format R8G8B8A8_SRGB for pass output #3.
[INFO] [slang]: Compiling shader "C:\Program Files\RetroArch\shaders\shaders_slang\crt\shaders\crt-easymode-halation\threshold.slang".
[INFO] [slang]: Using render target format R8G8B8A8_UNORM for pass output #4.
[INFO] [slang]: Compiling shader "C:\Program Files\RetroArch\shaders\shaders_slang\crt\shaders\crt-easymode-halation\crt-easymode-halation.slang".
[INFO] [slang]: Building pass #0 (N/A)
[ERROR] [slang]: Non-semantic textures not supported yet.
[ERROR] [slang]: Failed to reflect SPIR-V. Resource usage is inconsistent with expectations.
[ERROR] [GLCore]: Failed to create preset: "C:\Program Files\RetroArch\shaders\crt-easymode-halation.slangp".
[ERROR] [GLCore]: Failed to create filter chain: "C:\Program Files\RetroArch\shaders\crt-easymode-halation.slangp". Falling back to stock.
[INFO] [slang]: Building pass #0 (N/A)
[INFO] [slang]: Reflection
[INFO] [slang]:   Textures:
[INFO] [slang]:      Source (#0)
[INFO] [slang]:
[INFO] [slang]:   Uniforms (Vertex: yes, Fragment: no):
[INFO] [slang]:   Push Constants (Vertex: no, Fragment: no):
[INFO] [slang]:      MVP (Offset: 0)
[INFO] [slang]:
[INFO] [slang]:   Parameters:
[INFO] [GLCore]: Not using frame history.
[INFO] [GLCore]: Not using framebuffer feedback.
[INFO] [GLCore]: VSync => on
[INFO] [WGL]: wglSwapInterval(1)
[INFO] [GLCore]: VSync => on
[INFO] [WGL]: wglSwapInterval(1)
[INFO] [Overrides] configuration overrides unloaded, original configuration restored.
[INFO] [config] Saved new config to "C:\Program Files\RetroArch\retroarch.cfg".
[INFO] [Cheats]: Save game-specific cheatfile: C:\Program Files\RetroArch\cheats\Nestopia\Mike Tyson's Punch-Out!! (U) (PRG0) [!].cht
[INFO] Content ran for a total of: 00 hours, 00 minutes, 05 seconds.
[INFO] Saving runtime log file: C:\Program Files\RetroArch\playlists\logs\Nestopia\Mike Tyson's Punch-Out!! (U) (PRG0) [!].lrtl
[INFO] Unloading game..
[INFO] Unloading core..
[INFO] Unloading core symbols..
[INFO] [Core Options]: Saved core options file to "C:\Program Files\RetroArch\retroarch-core-options.cfg"
[INFO] [Video]: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames.
[INFO] [Video]: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames.
1 Like

Yeahhhhh, this is a @hunterk problem. I have no idea how fix a SPIR-V error.

Sorry I can’t help but at least now the actual errors are known it’s more likely for you get assistance.

1 Like

@Nesguy Hang on, are using the regular version of grade with the LUTs in the code? The copy from Dogway’s GitHub.

If so that’s probably your error, as I don’t see the LUT textures referenced in the preset you posted. And that will cause the whole chain to crap itself because grade can’t function properly because it needs those LUTs.

Try adding this to the bottom of the preset.

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"
2 Likes