Dans le rendu des polices, il est courant d'utiliser le rendu sous-pixels . L'idée de base ici est de diviser le pixel en ses composants RVB, puis de calculer une valeur pour chacun séparément. Étant donné que chaque composant est plus petit que le pixel entier, un anticrénelage de meilleure qualité est possible.
Il existe évidemment une manière analogue de faire de même pour un traceur de rayons. Vous effectuez un filtrage de reconstruction sur chaque sous-canal séparément.
J'ai été surpris que, cependant, je ne puisse pas vraiment trouver de référence à des traceurs de rayons faisant cela. Surtout si vous faites déjà un rendu spectral, cela semble être une chose évidente à faire. Il y a cet article d'un journal dont je n'ai jamais entendu parler et qui semble être lié. Mais dans l'ensemble, le rendu en sous-pixels ne semble tout simplement pas être une chose courante à faire. Ma question: pourquoi pas ?
Réponses:
C'est parfaitement possible
Bien que la différence ne soit pas particulièrement perceptible, je m'attendrais à un échantillonnage prenant en compte la géométrie exacte des pixels pour donner une image légèrement plus précise. Il vous suffit de décaler vos centres de pixels par composante de couleur en fonction de l'emplacement (moyen) du ou des sous-pixels de cette couleur. Notez que toutes les dispositions de pixels n'ont pas de correspondance un à un entre les pixels et les sous-pixels.
Par exemple, penTile RGBG a deux fois plus de sous-pixels verts que rouge et bleu, comme le montre cette image de Wikipedia:
Je ne connais aucune raison technique qui empêcherait que cela soit utilisé pour produire des images couleur arbitraires. En fait, une scène colorée aura des artefacts de couleur moins visibles que le texte noir sur blanc, ce qui rend les différences de couleur plus difficiles à camoufler.
Les polices sont rendues à la demande
La différence pertinente entre le rendu d'une scène à lancer de rayons et le rendu des polices est que les polices ont tendance à être rendues à la demande et peuvent prendre en compte l'écran utilisé. Contrairement à cela, une scène à lancer de rayons est souvent pré-rendue puis affichée sur de nombreux types d'écran différents (avec une géométrie de pixels différente). Par exemple, l'affichage de votre image lancer de rayons sur une page Web empêchera de l'adapter à un type de moniteur spécifique.
Si vous étiez en train de concevoir un programme de lancer de rayons en temps réel et que vous aviez accès à la vérification de la géométrie en pixels du moniteur, vous pouvez alors lancer le lancer de rayons jusqu'à la disposition de sous-pixels spécifique. Cependant, raytracing hors ligne qui produit une image ne peut toujours être adapté à un seul type de géométrie de pixels, ce qui fera alors l'aspect d'image pire sur une autre géométrie de pixel. Vous pouvez contourner ce problème en rendant un ensemble d'images différentes et en choisissant celle qui convient lorsqu'elle sera ensuite affichée sur un type particulier de moniteur.
Il est peu probable qu'il y ait un avantage à long terme
Il n'y a donc aucune raison pour laquelle vous ne pouvez pas développer un rendu sous-pixel pour un raytracer, mais cela signifie prendre en compte un aspect du moniteur qui n'est pas toujours connu. Une autre chose à garder à l'esprit est que vous développerez ce logiciel pour un marché en contraction. Le rendu sous-pixel est utile pour les écrans qui ont une résolution relativement faible. Comme de plus en plus d'écrans (même les écrans mobiles) approchent d'une résolution si élevée que l'œil humain ne peut pas détecter la différence faite par le rendu sous-pixel, votre travail est susceptible d'être plus d'intérêt théorique que d'utilisation pratique.
la source
Bien sûr, vous pouvez utiliser le rendu sous-pixel pour des images arbitraires. Cependant, le rendu sous-pixel est vraiment une technique de traitement d'image 2D générique - il n'a rien à voir avec le lancer de rayons spécifiquement. Vous pouvez tout aussi bien l'utiliser avec n'importe quelle autre méthode de rendu 3D, ou même avec un simple dessin 2D, une photographie ou même une vidéo.
Ainsi, je dirais que le "rendu de sous-pixels pour le lancer de rayons" est en réalité une combinaison de deux domaines de problèmes distincts qui sont mieux traités séparément. La seule connexion pertinente est que, si vous effectuez un lancer de rayons sur la scène en temps réel et que vous savez que l'image résultante va être dessinée à l'écran en utilisant un rendu en sous-pixels, vous pouvez utiliser ces informations pour optimiser la densité de pixels (et l'aspect ) de l'image intermédiaire (par exemple en utilisant une densité de pixels horizontale 3x pour un écran LCD RVB typique).
Une source potentielle de confusion peut être que, sur le système informatique actuel, le rendu en sous-pixels est couramment utilisé uniquement pour le texte et est généralement intégré au code de rendu des polices. Les principales raisons de cela sont sans doute historiques, mais c'est aussi là que les gains les plus importants (en termes d'amélioration visuelle et de lisibilité) sont généralement.
De plus, en raison de la façon dont le texte a tendance à être constitué de formes vectorielles simples et répétitives, l'intégration du rendu sous-pixel dans le rendu de police offre des possibilités d'optimisation supplémentaires par rapport au simple rendu du texte dans un tampon haute résolution, puis au post-traitement.
Cela dit, je m'attends à ce que, à mesure que la technologie évolue, nous passions à un système où le rendu des sous-pixels est simplement effectué de manière transparente par le GPU, ou éventuellement par l'écran lui-même.
(Cela nécessitera très probablement des applications qui souhaitent utiliser pleinement cette fonctionnalité pour gérer des pixels physiques plus petits et pas nécessairement de la même forme que les "pixels logiques". Mais là encore, nous allons déjà dans ce sens avec des écrans haute résolution.)
la source