dimebug a écrit :D'origine, je dirais que c'est plutôt l'inverse, la scène est rendue dans une résolution réduite puis upscalée à la resolution de la matrice. Ca permet de rendre la chose moins gourmande, donc d’élargir nettement le parc machine capable de faire tourner des appli VR (le but etant 90 fps). Au final, ca donne une image un peu degueux et des cadrans / hud illisibles, alors que la resolution hard, si elle est pas fantastique n'est quand même pas si mauvaise.
Le paramètre Pixel density semble permettre d'augmenter la résolution de calcul de l'image, l'ideal etant de la faire matcher avec celle de la matrice. Au dela tu fais du supersampling... A voir a partir de quel valeur de pixel density tu n'a plus d’amélioration nette de l'image et la disparition de gros pixels.
Sur vive, le paramètre r.screenpercentage (r pour rescale ?) passé 200% ne semble plus avoir d'effet, et sur OCCULUS, ca a l'air d'etre 2... comme par hazard. je serais pas supris d'apprendre qu'a 1 (ou 100%) on soit en fait avec un coeff diviseur de 2.
Bref, faudrait que j’expérimente un peu avec un de ces engins plus de 5 minutes
En fait le problème est simple:
Mais avant tout, entendons nous bien sur les termes parce qu'on risque vite de se mélanger (comme ca on sera tous sur la même longueur d'onde):
Le
pixel est l'unité élémentaire de l'affichage sur un écran.
La
résolution c'est le nombre de pixels qui peuvent être affichés sur ce même écran.
La
densité de pixel s'exprime en pixel par centimètre, c'est la mesure prise
à l'écran du nombre de pixel par unité de distance de l'écran. c'est tout simplement la résolution divisée par la longueur de chacune des dimensions de l'écran (hauteur, largueur)
La
densité d'écran s'exprime en pixel par degrés et prends en compte la distance entre joueur et écran. Pour une densité de pixel donnée, plus le joueur est près, plus la densité d'écran sera basse.
La densité d'écran défini entièrement le niveau de détail de l'image tel que défini par le hardware.
Cependant la scène rendue peut elle même dégrader le détail de l'image. Le schema grossier d'affichage est que la scène est d'abord créé sous forme mathématique avec un système de coordonnées en 3 dimensions. Ensuite un objet camera délimite la zone qui va être affichée. Comme un écran n'affiche qu'en 2 dimensions, la zone de la scène 3D à afficher est projetée en 2D à une certaine résolution, puis envoyée vers les unités responsables de l'affichage sur l'écran.
C'est au moment de la projection en 2D que les détails de la scène 3D (qui à une résolution infinie, puisque sous représentation mathématique) peuvent être perdus par sous échantillonnage. C'est le phénomène d'aliasing (le sous échantillonnage peut aussi se produire temporellement, c'est lorsqu'on choisi de représenter les mouvements de la scène à un pas de temps trop grand par rapport aux détails de la scène en 3D, c'est l'alisaing temporel).
Exemple, si on trace une courbe dans la scène 3D, au moment de la projection à la résolution choisie il faut passer d'un domaine continu à un domaine discret et donc choisir un nombre de points sur la courbe qui vont la représenter à la résolution choisie. Plus la résolution est basse, moins il y aura de points et donc plus il y aura nécessairement d'approximations grossières de la géométrie.
Le supersampling consiste à rendre la projection 2D à une résolution supérieure à celle de l'écran. Ensuite un ou des algorithmes sélectionnent les pixels qui semblent les plus appropriés pour représenter la scène le plus fidèlement possible. Pour reprendre l'exemple de la courbe, celle ci va être échantillonnée d'abord à une grande résolution (donc on va prendre pleins de points), puis les algorithmes de supersampling vont encore échantillonné les points qui seront le plus représentatifs de la géométrie. Ensuite c'est envoyé vers les unités d'affichage écran. Cela donne une image moins grossière avec moins d'aliasing.
Lorsque la densité d'écran est trop basse, des techniques d'anti aliasing comme le supersampling sont typiquement utilisées pour rétablir une lisibilité de l'image mais il y a des limites. En effet, si la résolution est trop basse, si l'écran est trop grand et ou si le joueur est trop près, même avec des supersampling énormes (dans les simus pros c'est du supersampling 32X sur toute la scène, sur 360°!) l'image n'est pas assez fine et les informations ne sont pas lisibles.
Alors la il est très important de ne pas confondre deux phénomènes visuels: L'aliasing et le scaling. L'aliasing c'est ce que je viens d'expliquer, c'est un manque de lisibilité de l'information à l'écran du à densité d'écran trop faible. Le scaling ce sont les déformations qui s'opèrent lorsque la taille d'un pixel est trop grosse. C'est le résultat d'un écran trop grand et d'une résolution trop faible.
Le problème avec l'oculus (et le vive), c'est la densité d'écran (donc l'aliasing engendré). Elle est extrêmement faible telles que sont déterminées la résolution, la taille de l'écran et la distance joueur-écran.
Donc là, y a trois hypothèses concernant l'astuce:
Soit la résolution officielle n'est pas la vraie et les écrans peuvent en afficher une supérieure.
Soit la résolution est bonne et comme tu dis il y aura un sous échantillonnage à une résolution plus faible que la résolution écran et l'astuce permet de la faire matcher
Soit c'est du supersampling qui ne change donc pas la résolution mais qui échantillonne plus intelligemment la scène supersamplée.
Est ce qu'il y a des infos qui circulent permettant de savoir laquelle des trois c'est?
(Hors explications logiques, car en fait pour les deux première, épargner les configurations est valable). Je précise juste qu'a la résolution officielle, l'oculus ou le rift sont en dessous de la limite légale d'acuité visuelle pour conduire une voiture!