Ils sont comparable, la grosse différence, c'est que l'un est basé sur le moteur de jeu DirectX (HLSL) et l'autre sur le OpenGL (GLSL).
Après les deux sont susceptibles d'être programmé de manière très similaires à quelques exceptions prés.
J’utilise personnellement le HLSL parce que je me suis aperçu qu'avec GroovyMAME, le HLSL engendre moins de InputLag. (Le mieux pour réduire l'InputLag au minimum étant de désactiver le HLSL et le GLSL, mais c'est pas ce qu'il y a de plus beau.)
Le GLSL se configure de manière moins évidente que le HLSL. Avec le HLSL tu peux mettre certains paramètres à zero et voir une amélioration de l'InputLag, avec le GLSL tu es obligé de remplacer un paramètre par un autre, sans espoir de raccourcir le temps de traitement de l'image.
Avec le HLSL tu peux supprimer le mask, tu peux supprimer les effets de luminosité ou les effets de floue, tout en gardant la main sur les couleurs, et leurs intensités.
Quand le GLSL est sorti, le shader développé par Timothy Lottes, était de loin le plus beau jamais élaboré. C'est pour ça que le GLSL a fait beaucoup parlé de lui.
Mais depuis le HLSL a rattrapé son retard.
Si tu souhaites supprimer l'effet bombé de l'écran, tu le désactive en passant les paramètres comme ci-dessous.
Pour le HLSL en mode D3D dans le fichier
mame.ini :
distortion 0.0
cubic_distortion 0.0
Pour le HLSL en mode BGFX dans le fichier
bgfx\chains\hlsl.json
{ "type": "float", "name": "distortion", "text": "Quadric Distortion Amount", "default": 0.00, "max": 2.00, "min": -2.00, "step": 0.01, "format": "%1.2f", "screen": "crt" },
{ "type": "float", "name": "cubic_distortion", "text": "Cubic Distortion Amount", "default": 0.00, "max": 2.00, "min": -2.00, "step": 0.01, "format": "%1.2f", "screen": "crt" },
Pour le GLSL en mode OpenGL dans le fichier
glsl\Lottes_CRT_rgb32_dir.fsh
//#define CURVATURE //Screen curvature effect.