GAMOPAT
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Scaling NES (ou autre)

Aller en bas

Scaling NES (ou autre) Empty Scaling NES (ou autre)

Message par upsilandre Mar 22 Nov 2016 - 19:17

Petit (gros) Gif pour montrer le shimmering que provoque certain type de scaling lorsqu'on a un scrolling

Scaling NES (ou autre) Scaling_Bad Scaling NES (ou autre) Scaling_Good


A gauche c'est un scaling pour respecter le format originel de la NES (un peu etiré en largeur) et son pixel ratio de 8:7 (des pixels 14% plus large que haut) et a droite c'est avec un pixel ratio carré 1:1 mais qui du coup est propre (le ratio que je choisie en général en emulation).
C'est difficile de respecter ce pixel ratio originel de 8:7 (lié au dot clock 5.37 Mhz qu'on retrouve sur quasiment toutes les consoles de l'epoque) surtout si on veut des pixels bien délimité, bien net et sharp. Ca implique en général de faire un scaling ou les pixels n'ont pas tous la meme taille ce qui donne cette effet de shimmering lorsqu'il y a du scrolling (on a des sorte de ligne vertical de compression/dilatation du au changement de taille des pixels)

Ici j'ai volontairement prit le pire exemple pour montrer l'effet. Je montre ici ce que ca donnerait sur un ecran 240p (genre console portable , la 3DS par exemple), plus l'ecran d'affichage aura une resolution elevé mieux on poura faire le scaling (et les autres traitement si il y a), en 480p c'est mieux, en 720p encore plus et en 1080p c'est quasiment nickel... mais pas parfaitement.
Si on est vraiment puriste (car c'est quand meme tres difficile de voir le probleme en 1080p) la resolution théorique idéal qu'il faudrait pour reproduire ce pixel ratio 8:7 et avoir tous les pixels de meme taille (donc aussi propre que sur l'exemple avec les pixels carrés) c'est tout simplement de multiplier x8 la résolution horizontal (et x7 la vertical) et donc une résolution de 2048x1680 ce qui nécessite une TV 4K.
Les jeux parfait pour bien voir ce genre d'artefact c'est des jeux comme Castlevania ou Contra qui ont des scrolling ingame 60fps a 60pps (soit exactement un pixel par frame donc le scroling a la fois le plus lent et le plus fluide et sans judder) et qui ont aussi des background chargé (faut pas des aplats de couleur facon SMB sinon y a rien a voir)

En plus de ca y a une drole de coincidence c'est que cette resolution de 2048x1680 est aussi la résolution idéal pour reproduire le signal NTSC que fabrique le PPU de la NES (le PPU a cette particularité de produire en interne directement un signal NTSC, le PPU de la NES ne connait pas le RGB). En effet le signal NTSC a une frequence chromatique de 3.58 Mhz alors que le Dot Clock (la frequence des pixels de la NES et donc sa resolution horizontal) a une cadence superieur de 5.37 Mhz. C'est ce qui cause toute sorte d'artefact chromatique lors des transitions de couleur entre pixels car la periode chromatique est plus longue que l'affichage d'un pixel et donc cette periode chromatique se trouve a cheval sur 2 pixels.

Le PPU produit ce signal chromatique de facon tres rudimentaire sous la forme d'une vulgaire square wave et divise sa periode en 12 samples binaires (ce qui permet ensuite d'avoir 12 types de déphasage de cette square wave par rapport au color burst en debut de ligne qui donne le tempo et donc d'avoir les 12 teintes differente de la palette NES) mais seul 8 samples sur 12 ont le temps d'etre envoyé par pixel (la difference entre 5.37mhz et 3.58mhz). si les pixels consécutifs ont la meme couleur c'est pas grave la periode chromatique en court se prolonge sur le pixel suivant mais dès que ca change de couleur ca crée des ruptures dans la periode chromatique qui est modifié avant meme la fin de sa periode. Ca va donner ensuite divers interpretation par le decodeur NTSC qui donneront divers erreur dans le couleur selon le type de transition.

Donc a priori l'idéal pour bien reproduire ce processus c'est de choisir une resolution horizontal equivalente aux nombre de sample de la square wave chromatique que produit le PPU pour la simuler directement avec les artefact chromatique qu'elle engendre. et comme j'ai expliqué y a 8 samples chromatiques par pixels donc idéalement faut multiplier par 8 la résolution horizontal exactement comme pour le pixel ratio de 8/7.
C'est marrant comme coincidence, y a 2 phénomenes differents qui pointe vers la meme résolution idéal de 2048x1680. Je répète on est dans le pinaillage, c'est l'idéal théorique.
upsilandre
upsilandre
Infirmier

Masculin Nombre de messages : 4794
Age : 46
Localisation : val de marne 94
Date d'inscription : 31/05/2015

Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum