I finally found an N64 shader config that does a great job at covering up the often-horrible pixellation on HUD and font elements when upscaling. In this case I run at 4x resolution on a 1080p screen.
This is a combination of the 4xSoft and Lottes CRT shader (my favourite CRT shader - doesn’t cause dark scanlines like most of the others). Both the softening and the NTSC effect contribute to masking the deep pixellation, but you still get to appreciate the high-res 3D.
shaders = “3” shader0 = “C:\DATA\Games\RetroArch\shaders\shaders_glsl\xsoft\shaders/4xsoft.glsl” filter_linear0 = “true” wrap_mode0 = “clamp_to_border” mipmap_input0 = “false” alias0 = “” float_framebuffer0 = “false” srgb_framebuffer0 = “false” scale_type_x0 = “source” scale_x0 = “2.000000” scale_type_y0 = “source” scale_y0 = “2.000000” shader1 = “C:\DATA\Games\RetroArch\shaders\shaders_glsl\xsoft…/stock.glsl” filter_linear1 = “true” wrap_mode1 = “clamp_to_border” mipmap_input1 = “false” alias1 = “” float_framebuffer1 = “false” srgb_framebuffer1 = “false” shader2 = “C:\DATA\Games\RetroArch\shaders\shaders_glsl\crt\shaders\crt-lottes.glsl” wrap_mode2 = “clamp_to_border” mipmap_input2 = “false” alias2 = “” float_framebuffer2 = “false” srgb_framebuffer2 = “false” parameters = “hardScan;hardPix;warpX;warpY;maskDark;maskLight;brightboost” hardScan = “-8.000000” hardPix = “-3.000000” warpX = “0.000000” warpY = “0.000000” maskDark = “0.500000” maskLight = “1.500000” brightboost = “1.000000”
Here’s an example image from Wave Race, which has a horribly pixellated HUD.