Shaders are a great improvement IMO, but it depends on the shader you use and on your machine, shaders often come at a performance cost... I used to be a purist, like no shader, no antialiasing at all, just clean square pixel rendering, because for a long time scanlines "filters" in emulators were just a shitty overlayed image painted on top of the final rendering, with a blend mode, it was lame, but then things improved over the last decade.
On PC (Linux), using MAME, I typically use that filter below (CRT-geom-halatio), it's really great and comes at a modest performance cost which doesn't impact emulation speed on my machine which has a modest config:
Bash:
mame -audiodriver auto -video opengl -nowindow -unevenstretch -noautoframeskip -frameskip 0 -throttle -waitvsync -nokeepaspect -gl_glsl -glsl_shader_mame0 ~/.mame/glsl/CRT-geom-halation genesis -cart "/home/jjrambo/.mame/roms/SMD/Barbarian - The Ultimate Warrior - AMIGA.zip"
This example is with a sega genesis rom btw, in case you wondered. A port of the Amiga version of Barbarian to sega megadrive, I changed the original name of the rom for personal reasons
http://barbarian.1987.free.fr/download/index.htm
If you want to keep aspect ratio you replace the option "-nokeepaspect" by "-keepaspect" but if you want something in between, like something larger than the original 4:3ish aspect ratio but smaller than the 16:9 apect ratio of your monitor because that would render things too stretched horizontally, during game you press tab, then go to "Slider Controls" and set "Screen Horiz Stretch" to 0.800, that's what I do.
Here's a preview of the result, but you have to test it for yourself to see what the screen curvature effect does for example since it's not that obvious at first glance on screenshots (look at the bottom of the ground, it's curved, same deal with lateral borders while it's less obvious in that example). The entire rendering is curved, even the "scanlines" themselves, it kind of add a depth effect, it's not just a lame overlay, it also slightly "rounds" pixels around their edges.
With shaders:
Without shaders:
If you don't want to do it via the command line, you can set it via the mame.ini file
GLSL Filters for MAME
GLSL filters for MAME are used to simulate the look and feel of old CRT monitors, enhancing the nostalgic experience of playing retro games. To enable GLSL filters in MAME, you need to set gl_glsl to 1 and gl_glsl_filter to 1 in your mame.ini file. Additionally, specify the path to your GLSL shader files using glsl_shader_mame0 and glsl_shader_mame1 options.
I can't find the github repo where I've found those shaders I'm using, so I added them as attachment, see "glsl.zip"
You have to unzip it and put the "glsl" directory in your mame directory
On windows the command line has a slightly different synthax, but it's roughly the same, it should be something like that (not tested):
Bash:
"C:\Users\jjrambo\mame\mame64.exe" -audiodriver auto -video opengl -nowindow -unevenstretch -noautoframeskip -frameskip 0 -throttle -waitvsync -nokeepaspect -gl_glsl -glsl_shader_mame0 "C:\Users\jjrambo\mame\mame\glsl\CRT-geom-halation" genesis -cart "C:\Users\jjrambo\mame\mame\roms\SMD\Barbarian - The Ultimate Warrior - AMIGA.zip"