COMPTOIR
  
register

×

La mise à l'échelle entière, en graphique

Integer scaling : déchiffrage d'une autre méthode de mise à l'échelle
La mise à l'échelle entière, en graphique

nvidia or logo Dans son dernier driver, NVIDIA a introduit pour les cartes graphiques Turing l'integer scaling, salué par certains adeptes, notamment possesseurs d'écran 4K. Pourtant, ce terme n'est pas courant dans les réglages vidéoludiques habituels. Déchiffrons donc ensemble cela !

 

Commençons par les bases : le scaling est une opération consistant à prendre une image d'une certaine définition, disons FullHD, et de la transformer en une autre image d'une seconde définition, par exemple 4K. La fonctionnalité est utilisée depuis très longtemps pour afficher des images sur des écrans dans des définitions non natives sans pour autant avoir des énormes bandes noires tout autour du contenu souhaité. Cependant, dans le cas de l'upscaling (mise à l'échelle vers une image plus grande), il faut inventer de nouveaux pixels, qui restent cohérents - comprendre, qui ne choquent pas les yeux - avec le rendu originel. Pour le moment, c'était un upscaling linéaire qui était effectué : pour calculer la couleur d'un nouveau pixel, la moyenne des couleurs des pixels avoisinants était calculée... ce qui est exactement l'opération réalisant un flou gaussien sur une image ! D'où une supériorité de la qualité d'image du rendu natif en jeu, même au prix d'options graphiques rabotées.

 

Cet upscaling entier (integer dans la langue de Shakespear) apporté par le pilote, est encore plus enfantin : pour rajouter un pixel, on prend la couleur le pixel voisin selon une convention fixée. Évidemment, le système fonctionne mieux lorsque la résolution voulue est un multiple de la résolution de base, mais peut toutefois être étendu avec plus ou moins de succès sur des agrandissements d'un facteur arbitraire. Il en résulte une image bien plus nette, mais dont les contours entre zones de couleurs différentes sont marqués d'un aliasing important.

 

La mise à l'échelle entière, en graphique [cliquer pour agrandir]

La théorie en graphiques : comment "inventer" les pixels 2 et 3 à partir des pixels 1 et 4 d'après les deux méthodes

 

Voilà pour la théorie, mais comment cela se comporte-t-il réellement en pratique ? À vous de voir sur cet exemple simulé sur Rise of the Tomb Raider. Comme attendu, l'upscaling linéaire est bien plus net, particulièrement sur les détails des planches en arrière-plan, mais moins agréable à regarder pour les contours de la silhouette de Lara.

 

Simulation du résultat sur Rise of the Tomb Raider, sur un upscaling bien poussé de 540p vers 1080p. Mieux vaut zoomer pour apprécier les différences !

 

Rappelons de toute manière que rien n'est magique, dans les deux cas les informations apportées par le rendu effectué sur la carte graphique sont strictement les mêmes ! Notez que certains titres offrent déjà une expérience similaire via le SSAA X0,5 - citons par exemple la série des Metro. En effet, le SSAA X2 consiste à calculer 2 pixels pour un pixel affiché pour ensuite conserver leur valeur moyenne et ainsi supprimer l'aliasing. Or, avec un facteur 0,5, cela consiste à calculer 1 pixel de jeu pour 4 pixels affichés... et donc faire une mise à l'échelle. Pour faire le lien avec d'autres technologies du caméléon, le DLSS consiste à réaliser l'invention des pixels par un réseau de neurones, entraîne pour mimiquer le comportement d'un rendu natif ; et le VRS (Variable Rate Shading) permet justement d'effectuer des rendus en upscaling entier sur des portions de l'image où la présence de détails n'est pas nécessaire. Qui a dit qu'il n'y avait pas de mouvement outre l'arrivée du Ray Tracing dans les méthodes de rendu ?

Un poil avant ?

Découvrez les cryptokitties, fusion ultime de la block-chienne et du marketing fou

Un peu plus tard ...

Live Twitch • Bi-goût : RAD & l'épisode 4 de LiS2 !

Les 27 ragots
Les ragots sont actuellement
ouverts à tous, c'est open bar !
par Un ragoteur qui draille en Auvergne-Rhône-Alpes, le Jeudi 12 Septembre 2019 à 00h34  
par Un #ragoteur connecté en Île-de-France, le Jeudi 22 Août 2019 à 10h37
Juste pour les turing le nearest neighbor upscale? Du foutage de gueule pour
une option qui devrait être là depuis des années.

Les vieux jeux ressemblent à du vomis en bilinéaire, heureusement qu'il y a
IntegerScaler qui est gratuit mais ça ne fonctionne qu'en fenêtre plein ecran.
nVidia qui redécouvre les algorithmes d'interpolation réchauffés des
années 90...

Manifestement la rétro-IA a encore de l'avenir!
par CYCGalaxy, le Vendredi 06 Septembre 2019 à 20h13  
par Nicolas D., le Jeudi 22 Août 2019 à 20h20
En x2 oui vu qu'on calcul 2x plus de pixel que nécessaire. En x0,5 par contre, c'est moins.... donc c'est de l'upscaling ! Pas facile d'y voir toujours clair en effet
Le supersampling, Si l'on active l'option dans le panel NVIDIA + les options en jeu, hum cela devient du super sampling integer scaling ?

L'un est-il mieux que l'autre ? les performances sont moins intéréssantes dans le premier cas (enfin à ma compréhension), l'autre technologie integer scaling (moins belle mais efficace) par contre en cumulant les deux... je ne saurai dire l'intérêt ou même la possibilité.
par Un adepte de Godwin embusqué, le Vendredi 23 Août 2019 à 10h35  
Je me demande si ce serait possible d'utiliser un moteur de rendu vidéo tiers tel que madVR pour améliorer le rendu en jeu. J'utilise madVR sur MPC-HC et l'upscaling est de vraiment très bonne qualité. Alors forcément ça consommerait énormément de ressources et serait sans doute moins performant à rendu égal, mais "pour la science" ce serait intéressant de voir ce qu'on peut obtenir avec moteur de rendu de très haute qualité. Parce que Bicubic c'est bien, mais il existe tellement mieux...
Ensuite, peut-être que c'est plus simple de faire du supersampling dans le jeu directement. Normalement il ne devrait pas y avoir mieux comme rendu.
par Nicolas D., le Jeudi 22 Août 2019 à 20h20  
par dfd, le Jeudi 22 Août 2019 à 20h01
^ ^ Le supersampling, c'est pas plutot l'inverse ?
Calculer une image UHD pour la rendre en FHD, et ainsi réduire l'aliasing ?
j'dis ça j'dis rien, hein ?
En x2 oui vu qu'on calcul 2x plus de pixel que nécessaire. En x0,5 par contre, c'est moins.... donc c'est de l'upscaling ! Pas facile d'y voir toujours clair en effet
par dfd, le Jeudi 22 Août 2019 à 20h01  
^ ^ Le supersampling, c'est pas plutot l'inverse ?
Calculer une image UHD pour la rendre en FHD, et ainsi réduire l'aliasing ?
j'dis ça j'dis rien, hein ?
De toute façon, inventer des pixels, ça sera toujours moins beau que les vrais pixels calculés et rendus sur une frame entière.
La vraie difficulté, c'est de se concentrer sur l'élément de la scène qui a de l'importance, et de réduire la qualité sur le reste. Mais ça, AMD et Nvivia dév déjà leurs technos respectives...
A voir si elles deviendront des standards ou pas...
par Un ragoteur qui aime les BX en Île-de-France, le Jeudi 22 Août 2019 à 15h34  
par Un #ragoteur connecté d'Occitanie, le Jeudi 22 Août 2019 à 14h27
Je suis sûr que ça utilise les Tensor Core !
Ce serait vraiment con sachant que le bilinéaire c'est plus demandant que de l'integer scaling !
par RagoteurMusqué, le Jeudi 22 Août 2019 à 14h30
Et le dernier truc, c'est le "supersampling" (sur la Xbox One X), VSR (chez AMD), DSR (chez Nvidia), qui fait la même chose que le SSAA (SS=supersampling). Ça consiste a faire tourner le jeu en résolution supérieure (ex : 2160p), puis à réduire l'image (ex : 1080p). C'est l'antialiasing le plus beau visuellement, mais c'est aussi le plus lourd, donc c'est à réserver aux machines puissantes.
Pour le coup le supersampling c'est pas que l'AA qu'on voit améliorer, les textures et la distance d'affichage sont également bien améliorées. J'ai une PS4 Pro sur un videoprojecteur 1080p, la différence est flagrante entre les jeux supersamplés de 1440p/4K et ceux en 1080p.
par Un ragoteur sans nom d'Occitanie, le Jeudi 22 Août 2019 à 15h18  
par Un #ragoteur connecté en Île-de-France, le Jeudi 22 Août 2019 à 10h37
Juste pour les turing le nearest neighbor upscale ? Du foutage de gueule pour une option qui devrait être là depuis des années.

Les vieux jeux ressemblent à du vomis en bilinéaire, heureusement qu'il y a IntegerScaler qui est gratuit mais ça ne fonctionne qu'en fenêtre plein ecran.
Il y aussi dgvoodoo 2 et dosbox aussi qui font ça pour les vieux jeux dos et directx windows
par Ideal, le Jeudi 22 Août 2019 à 14h35  
Nos écrans fonctionnent avec des pixels plutôt carrés mais ça serait plutôt marrant de voir Nvidia Amd et autres se démener avec ces techniques si les pixels étaient rectangulaires comme à l'époque du cathodique ou du dvd
par Nicolas D., le Jeudi 22 Août 2019 à 10h02
Cet upscaling entier (integer dans la langue de Shakespear) apporté par le pilote, est encore plus enfantin : pour rajouter un pixel, on prend la couleur le pixel voisin selon une convention fixée. Évidemment, le système fonctionne mieux lorsque la résolution voulue est un multiple de la résolution de base
par RagoteurMusqué, le Jeudi 22 Août 2019 à 11h26
Avec le "integer scaling", tu transformes l'écran 4K en un écran 1080p, avec une fidélité parfaite, alors que les algo habituels d'upscale produisent une image floue sur l'écran 4K.
Après ça dépend des goûts de chacun et surtout du type de contenu (un jeu rétro en pixel art VS des photos/vidéos), c'est pas un upscale à utiliser partout, mais c'est bien d'avoir le choix !
par RagoteurMusqué, le Jeudi 22 Août 2019 à 14h30  
par Ragoteur qui prend l'eau en Île-de-France, le Jeudi 22 Août 2019 à 11h43
FXAA, du MSAA, du TXAA, du CSAA, du MLAA, du EQAA, du SMAA, du supersampling, de l'übersampling, du TressFX, du HairWorks, du...
Alors...
TressFX/Hairworks, c'est des librairies pour aider les développeurs à afficher des cheveux, donc logiquement tu auras jamais le choix entre les 2, l'impact sur les perf est censé être faible pour un résultat bluffant... si ton GPU est de la bonne marque, par exemple le Nvidia Hairworks est conçu pour exploiter au mieux les spécificités des cartes Nvidia et pas optimisé pour AMD.

Pour les **AA, c'est de l'antialiasing, soit anti-crénelage. Les différentes techniques sont plus ou moins lourdes et plus ou moins efficaces. Je les connais pas toutes, mais je sais que j'aime pas trop l'aspect des variantes de TAA (ça utilise plusieurs images pour lisser les crénelages et je trouve que ça fait pas beau sur les trucs en mouvement).

Et le dernier truc, c'est le "supersampling" (sur la Xbox One X), VSR (chez AMD), DSR (chez Nvidia), qui fait la même chose que le SSAA (SS=supersampling). Ça consiste a faire tourner le jeu en résolution supérieure (ex : 2160p), puis à réduire l'image (ex : 1080p). C'est l'antialiasing le plus beau visuellement, mais c'est aussi le plus lourd, donc c'est à réserver aux machines puissantes.

Un autre truc dont tu as pas parlé, c'est le filtrage des textures. Ça permet de mieux afficher les textures qui sont de biais par rapport à la caméra. Ça consomme peu sur les machines actuelles, et ça fait du bien visuellement, donc tu peux mettre les filtres "anisotropiques" à fond.
par Un #ragoteur connecté d'Occitanie, le Jeudi 22 Août 2019 à 14h27  
par Un #ragoteur connecté en Île-de-France, le Jeudi 22 Août 2019 à 10h37
Juste pour les turing le nearest neighbor upscale ? Du foutage de gueule pour une option qui devrait être là depuis des années.

Les vieux jeux ressemblent à du vomis en bilinéaire, heureusement qu'il y a IntegerScaler qui est gratuit mais ça ne fonctionne qu'en fenêtre plein ecran.
Je suis sûr que ça utilise les Tensor Core !
par Un hardeur des ragots en Auvergne-Rhône-Alpes, le Jeudi 22 Août 2019 à 13h53  
un coté c'est bien floue on dirait du TSSAA de chez nvida
par Deus, le Jeudi 22 Août 2019 à 13h06  
par bak0uchii, le Jeudi 22 Août 2019 à 09h46
Le SSAA X2 c'est 4 Pixels en 1 et non 2. Du SSAA X2 sur du 1080p ca donne du 2160p donc 4 fois plus de pixels donc 4 pixels pour 1. Inversement du SSAA X0.5 comme vous le dites ca donne du 540p donc 4 fois moins de pixels que du 1080p donc 1 pixels pour 4 cette fois et non 2 comme vous dites
La deuxieme partie est juste mais la premiere est fausse, SSAA x2 c'est SSAA (x1.41X x x1.41Y) donc c'est pas du 4 pour 1, c'est le SSAA x4 (x2X x x2Y) qui fait du 4 pour 1 qui correspond a D3D Supersample 2x2 dans Nvidia inspector par exemple.