OK.
Serious business here !
La question du rendu du signal 15 khz est complexe.
Jusqu'à maintenant, la meilleure façon de se rapprocher du 240p ........c'est de diffuser en 240p

, sur un bon CRT des familles (cf les MAME cab avec soft15khz, l'émulation sur Wii qui gère ça en natif ).
Maintenant, la technique sur laquelle je bosse:
elle se base sur plusieurs solutions qui existent déjà (rien de nouveau) , mais utilisées et mixées différemment, et surtout d'une façon
plus juste (vis à vis de la technologie cathodique et du rendu typique du 15 khz) .
La seule chose qui peut poser "problème" (en terme de ressources à utiliser) , c'est le fameux
flou unidirectionnel ( "motion blur" ), à l'horizontal , qui est une des clés de la qualité du rendu .
Si jusqu'à présent on a toujours eu du bilinéaire entre autre (deux directions), c'est parce que c'est pas paramétrable en hardware (option des cartes graphiques).
Faire un flou en software, c'était pas envisageable à l'époque.
Pour ça, j'ai une solution :
Faire un agrandissement en deux étapes.
D'abord à l'horizontal, sans changer la résolution verticale (avec filtrage hardware) :
on part de ça :
pour arriver à ça :
Et ensuite, on agrandit l'image à la verticale, avec un ratio entier , et sans traitement (pas de filtrage hardware):
Taadaaaaa !!!
En terme de ressources, on doit pas être plus gourmand qu'un "
prescal " sous MAME ...
Ensuite, le reste, c'est de la superposition de lignes (ce que les gens appelent à tord "scanlines") , MAIS avec la bonne transparence et au bon endroit . En clair, ça correspond aux filtres ".png" sous MAME, sauf que là ils sont bien calés, et avec une bonne transparence.
Le dernier point, c'est l'effet
scanline à proprement parler,
l'effet qui restitue le phénomène majeur du rendu 15 khz du CRT :
le spot qui change de diamètre suivant l'intensité lumineuse .
Pour se faire, pas de calculs complexes pixel à pixel (surtout sur des buffers de 1600 x 1200 !!

) . On part toujours de la trame de base, en basse résolution ( 320 x 240 en gros) , et de là on extrait d'un côté les teintes lumineuses du RGB, et de l'autres les plus foncées .
Il suffit ensuite de superposer ça dans le bon ordre et avec de la transparence , qui viendra se conjuguer avec la transparences des "lignes noires".
En clair, on a d'abord:
- un agrandissement qui tient compte d'un ratio entier pour la valeur vertical (IMPERATIF) avec un flou uni directionnel
- puis les pixels sombres
- puis les lignes noires
- puis les pixels clairs ( transparence à 70%, de sorte à faire légèrement apparaître les lignes noires, et donner cette impression que les pixels clairs sont ronds et plus gros que les pixels sombres).
Donc, y a pas d'algorithme complexe, y a pas de filtre "magique gérable que sous un logiciel photo" [
j'ai utilisé photoshop, mais que des fonctions supra basiques ! je me suis inspiré de ce qui ce faisait sous émulateur, sauf que je l'ai fait en graphisme au lieu de coder ] , y a pas de traitements de sous pixels supplémentaires . C'est bien différent des filtres type " 2xSAI " où il s'agit de calculer autour de chaque pixel les sous pixels à recréer en fonction des voisins .
Le genre de truc qui bouffe selon moi plus de ressources, et surtout donne un résultat
irrégulier (et trop laid

) :
quand un texte blanc défile à la vertical sur un background coloré (une intro par ex.), on a clairement le temps de voir comment les sous-pixels "inventés" se baladent à gauche ou à droite suivant la teinte du fond, venant déformer la police de caractère ...
De toute façon, en temps normal, sur un pauvre sprite (graphisme "constant") ça donne un effet "gouache" qui non seulement n'est pas fidèle, mais est en plus "moche" et vient tuer le détail du Pixel Art, chose que ne fait absolument pas le CRT à 15khz, ni mon filtre qui est pour l'instant l'expression la plus proche de ce rendu.
(un truc à des années lumières de ce genre
d'ignominie

)
De toute façon, sur mon futur site, ce sera mieux expliqué, là c'est les grandes lignes , mais l'idée est là. Ce n'est pas abstrait, ni infaisable en dehors d'un screenshot statique, y a plusieurs traitements mais ils sont "simples" .