La quête assez vaine du pixel perfect

Depuis quelques années, je vois des gens acheter des Mac ou des consoles pour jouer en pixel perfect. Mais avec les solutions actuelles, c’est une quête assez vaine, sans même prendre en compte que le pixel perfect n’est pas nécessairement le rendu correct.

D’abord, le pixel perfect, c’est quoi ? Dans l’absolu, il s’agit d’un choix qui permet de faire coïncider un pixel logique (calculé dans la mémoire de l’appareil) avec un pixel physique (affiché). Pour beaucoup de gens, il s’agit du rendu correct, attendu, mais en réalité, pendant longtemps, ce n’était absolument pas le cas. En fait, avant l’arrivé des écrans LCD avec une grille de pixels fixes, le concept n’existait pas réellement.

Je vais commencer par les consoles et les anciens ordinateurs, qui sortaient un signal analogique sur des écrans cathodiques. A l’époque, le rendu en interne pouvait travailler dans des définitions atypiques, qui semblent bizarres actuellement. Un prompt DOS, par exemple, affiche du 720 x 400. Mais le rendu en pratique s’effectuait sur un écran cathodique analogique, sans grille de pixels au sens actuel du terme. Un écran avec un ratio de 4:3… et des pixels rectangulaires. C’est d’ailleurs le cas de pas mal de modes graphiques de l’époque, comme avec le classique 320 x 200. Le ratio de l’image avec des pixels carrés est en 16:10, mais l’image s’affiche avec des pixels rectangulaires, sans bandes noires sur un écran 4:3. Sur les Mac, les écrans utilisaient généralement des pixels carrés, avec dans certains cas des contraintes bizarres.

A gauche le pixel perfect, à droite la réalité


A gauche le pixel perfect, à droite la réalité (Doom, PC)

Les consoles suivent la même logique. L’image est calculé dans une définition précise, mais les pixels affichés seront rectangulaires. C’est assez flagrant avec les consoles qui disposent de plusieurs modes graphiques : qu’un jeu Mega Drive soit calculé en 320 x 224 ou en 256 x 224 (deux modes courants), l’image affichée est en 4:3 à l’écran, avec des pixels rectangulaires. Toutes les consoles de la génération analogique (en gros avant la Xbox 360 et la PlayStation 3) peuvent poser des problèmes de ce type. Sur les plus récentes, la technique existe, mais vous ne le verrez pas parce qu’elles upscalent dans la majorité des cas dans la définition attendue (720p, 1080p, 2160p, etc.). En interne, elles peuvent utiliser des pixels rectangulaires ou des définitions plus faibles, mais elles sortent une image dans le bon format dans la majorité des cas.

A gauche le pixel perfect, à droite la réalité (Sonic, Genesis)


A gauche le pixel perfect, à droite la réalité (FlashBack, Genesis)

La question à 1 000 €, comment doit-on afficher sur un écran LCD ? En faisant correspondre un pixel calculé et un pixel affiché (pixel perfect) ou en utilisant le bon ratio (généralement le 4:3) ? Ce n’est pas innocent : dans le premier cas, l’image sera très nette sur un écran LCD, pas nécessairement dans le second, en fonction des méthodes utilisées (je vais y revenir). Les émulateurs et les consoles rétro modernes proposent généralement le choix, mais pour moi, le 4:3 avec des pixels rectangulaires semble plus logique. Dans pas mal de titres (même si ce n’est pas systématique), ça se voit rapidement sur les trucs qui doivent êtres circulaires : ils ne le sont pas nécessairement en pixel perfect parce que les développeurs prenaient en compte le souci. Cette vidéo montre bien qu’il faut prendre en compte ce point.

DVD, Blu-ray and co.

Le problème se pose aussi avec la vidéo, même si le seul média qui permet de montrer est le DVD. Les LaserDisc, VHS et autres médias des années 80 utilisaient de l’analogique, donc sans réelle notion de pixel. Le signal disposait d’un nombre de lignes qui permettait de calculer la définition mais il n’y a pas de pixels, juste des lignes. Les Blu-ray et les autres formats modernes utilisent généralement du pixel perfect, avec des pixels carrés, même si dans certains cas l’upscale s’impose vu qu’il existe des Blu-ray en 720p et même en 480i. Mais chaque pixel de la vidéo correspond à un pixel de nos écrans plats. Par contre, avec le DVD, les pixels de la vidéo ne correspondent pas à un pixel d’un écran. Un DVD en NTSC contient souvent une image en 720 x 480, ce qui n’est ni un ratio 4:3 ni un ratio 16:9. Dans tous les cas, les DVD affichent des pixels rectangulaires. Par nature, un DVD n’est pas pixel perfect. Sur les Blu-ray Ultra HD, on revient d’ailleurs à un rendu plus hybride, dans le sens ou l’image enregistrée sur le disque est bien en Ultra HD, mais pas nécessairement la source. Sur la TNT, la majorité des chaîne diffuse avec des pixels carrés (en 1 920 x 1 080, donc) sauf France 4, qui est en 1 440 x 1 080. En clair, on a une image 4:3 élargie. Mais pendant très longtemps, le 1 440 x 1 080 était la norme en TNT HD, le changement reste assez récent. Dans le monde de la vidéo, ce changement porte un nom : anamorphique. Parfois, il s’agit d’une astuce technique à la captation, avec des objectifs qui déforment. Dans d’autres cas, avec certains DVD, ça permet de caser plus de vidéos sur le même disque.

Un DVD classique (720 x 576 à gauche, en 4:3 à droite)


Un DVD un peu particulier, qui stockait une image basse définition (352 x 576)


France 4 diffuse toujours en anamorphique (1 440 x 1 080)

Les écrans LCD

J’en arrive aux Mac et aux écrans Retina. Mais avant, parlons de l’affichage sur les écrans LCD. Un écran LCD a par nature une dalle avec une grille de pixels. Pour obtenir une image de bonne qualité, la solution la plus simple consiste donc à faire correspondre un pixel calculé avec un pixel physique, soit la définition native. Si vous tentez d’afficher autre chose, souvent une définition plus faible, le rendu variera de flou à affreux en passant par très mauvais et passable. Il existe deux méthodes pour le faire dans les PC, le scaler de l’écran et le scaler du GPU. Dans le premier cas, l’ordinateur envoie une image dans la définition qu’il attend. Par exemple, au début des années 2000, du 800 x 600. L’écran, qui a une dalle en 1 024 x 768, reçoit du 800 x 600 et agrandit l’image en 1 024 x 768, plus ou moins bien. Plutôt mal que bien à l’époque. La seconde solution consiste à calculer l’image en 800 x 600 et l’agrandir avec la carte graphique pour l’envoyer en 1 024 x 768. Cette solution donne généralement un meilleur résultat parce que le GPU est plus efficace que le scaler d’un écran. Dans certains cas, certains passent par des scaler externes (et efficaces), mais c’est plutôt dans des cas particuliers, sur des appareils incapables de faire la mise à l’échelle. De plus, au début des années 2000, la liaison entre la carte graphique et le moniteur se faisait encore souvent en analogique, avec une double conversion : de numérique à analogique dans le GPU – avec une qualité parfois discutable, comme sur les premières GeForce – et d’analogique à numérique dans l’écran. L’arrivée des premiers écrans LCD avec une interface numérique (DVI, mais aussi OpenLDI ou DFP) améliorait directement la qualité de l’image.

Dans les Mac, c’est la seconde méthode qui est utilisée, pour une raison qui va sembler évidente : les écrans Apple n’intègrent pratiquement jamais de scaler. En dehors de quelques vieux (vieux) modèles, ils attendent uniquement la définition native. Apple a toujours proposé quelques options dans les réglages, comme la possibilité de rester en pixel perfect sur un écran avec une définition plus élevée, en mettant des barres noires. Dans l’exemple précédent, ça donne une image en 800 x 600 entourée de noir sur une dalle en 1 024 x 768 avec évidemment pas mal de pertes sur l’espace affiché.

En définition native (1 600 x 1 024)


Du 1 024 x 768 en pixel perfect sur la même dalle (montage)


Du 1 024 x 768 sur la même dalle sans pixel perfect

Pixel perfect ou pas, il faut bien se rendre compte que sauf à prendre du matériel d’entrée de gamme ou trop vieux, le redimensionnement sur du matériel moderne amène un peu de flou, mais reste assez éloigné (heureusement) des horreurs des vieux LCD. A l’époque, un scaler peu évolué couplé à des dalles peu performances et avec une résolution faible donnaient des résultats ignobles. Mais afficher du 1080p sur un écran en 1440p en 2019 donne un résultat au pire passable, loin d’être horrible.

Le cas du Retina

Pour les premières générations de Retina, Apple travaille en pixel perfect. Un Mac avec une dalle en 2 880 x 1 800 affiche par défaut du pseudo 1 440 x 900 par exemple. Chaque pixel logique s’affiche sur quatre pixels physiques. C’est forcément très propre, mais ça amène un défaut : l’espace de travail bouge peu. Beaucoup de gens restent bloqués sur cette époque (2012/2015 chez Apple) et veulent travailler dans ce mode. Ce n’est plus vraiment nécessaire dans la pratique.

Depuis quelques années maintenant, Apple a d’ailleurs abandonné ce choix. Les MacBook Pro, par défaut, ne sont pas en pixel perfect. Un MacBook Pro avec une dalle en 2 880 x 1 800 affichera du pseudo 1 680 x 1 050, avec un rendu tout aussi propre. Certains modèles, comme le MacBook ou les iPhone Plus, ne proposent même pas de mode pixel perfect. Sous Windows, c’est la même chose : par défaut, le rendu est agrandi mais pas en 200 % (pixel perfect) mais plutôt en 125 ou 150 %.

Sur un MacBook Pro 2017, le choix par défaut n’est pas pixel perfect

En pratique, les dalles actuelles permettent une résolution assez élevée qui – premièrement – va permettre de cacher les éventuels défauts liés au redimensionnement. Deuxièmement, le fonctionnement même du Retina sous macOS fait que la différence (qui existe) est ténue. Une personne déterminée à prouver que c’est mieux en pixel perfect (à raison dans l’absolu) pourra le faire en prenant des photos en macro ou en zoomant. Mais en pratique, c’est indiscernable sur les définitions proposées par défaut.

Sur un écran Ultra HD Dell, le choix par défaut n’est pas le pixel perfect

Pour rappel, macOS effectue pas mal de calculs quand vous choisissez une pseudo-définition. Si vous sélectionnez du 2 560 x 1440 sur un écran Ultra HD par exemple, l’OS va prendre la pseudo-définition, la passez en 200 % en pixel perfect (ce qui donne du 5 120 x 2 880) avant de réduire le tout en 3 840 x 2 160. Le point intéressant, c’est que les algorithmes de réduction marchent mieux que ceux d’agrandissement (c’est plus simple de supprimer des pixels que d’en ajouter) avec même parfois une impression de meilleure qualité (un cas assez typique sur les vidéos). Si vous choisissez une pseudo-définition pixel perfect (l’ancien choix par défaut), vous zappez simplement la réduction. Et si vous prenez une définition plus faible, la réduction devient un agrandissement.

Forcément, mettre une définition plus élevée a un impact sur les performances : si vous mettez du pseudo 1440p au lieu d’un pseudo 1080p, le Mac doit calculer plus de choses. En 2019, le redimensionnement a peu d’impact visible en Retina pour deux raisons. La première, c’est qu’avec les premiers écrans LCD, les utilisateurs mettaient une définition plus basse que la native, alors que sur les écrans Retina, la norme semble être de mettre une définition plus élevée. Ensuite, la résolution des écrans Retina et l’amélioration des algorithmes (liée à l’amélioration des performances) rend de toute façon le redimensionnement moins sujets aux défauts.

Si vous achetez un écran Ultra HD, surtout s’il a une diagonale élevée (28″, 32″, etc.), vous pouvez donc sortir sans soucis du carcan du pixel perfect. Afficher du pseudo 1440p en Retina donnera un résultat d’excellente qualité avec un espace de travail appréciable et sans défauts visibles, même pour les puristes. Avec l’augmentation de la résolution et de la définition, le pixel perfect reste juste un accident de parcours, une contrainte technique qui devrait disparaître d’ici quelques années. Et on pourra enfin afficher la définition que l’on souhaite sans se prendre la tête sur la qualité et les éventuels défauts.

Pour terminer, un mot sur le rendu des polices. Pendant de longues années, de l’avènement des LCD jusqu’à récemment, les OS filtraient le rendu des polices pour améliorer le rendu, en partie pour une raison qui semble idiote : la précision des écrans LCD. Sur un écran cathodique, le flou inhérent à la technologie et à l’absence de grille fixe permettait d’obtenir des polices lissées par défaut. Avec les premiers LCD, beaucoup plus nets que les écrans cathodiques, certains n’appréciaient pas le rendu des polices. Les développeurs d’OS ont donc utilisé des filtrages spécifiques (ClearType, anti-aliasing, etc.) pour adoucir le rendu. Mais avec la démocratisation des écrans (très) haute définition, les filtres de ce type n’ont plus de raison d’être, tout du moins pas avec les techniques utilisées (sous-pixels). De fait, avec Mojave, Apple a changé de type de filtre pour passer sur quelque chose de plus adapté aux écrans Retina. Et est-ce vraiment pixel perfect ?

Sans // Avec

Maintenant, quel est votre avis sur le sujet ? Personnellement, j’ai longtemps configuré mes écrans Retina en pixel perfect mais ce n’est plus le cas : je ne remarque pas réellement la différence sur les OS modernes et le gain en espace de travail est appréciable. Par contre, je reste évidemment en définition native sur les vieux écrans LCD.