Configuration
Par défaut, l'Unreal Engine utilise une projection en perspective. Toutefois, ce modèle de projection crée des distorsions de la géométrie lorsqu'on utilise un grand champ de vision. C'est particulièrement visible, par exemple, ici avec une sphère et un champ de vision de 120.
Par conséquent, l'Unreal Engine fournit une passe de post-traitement facultative qui tente de résoudre ce problème à l'aide d'une projection Panini. L'idée de ce post-traitement est de déplacer les pixels rendus à l'endroit où ils devraient être en utilisant la projection Panini plutôt que la projection en perspective. Il suffit pour cela de configurer
r.LensDistortion.Panini.D > 0
. Cet effet de post-traitement s'effectue dans la passe de mise à l'échelle. Cette passe sera donc utilisée si r.ScreenPercentage != 100 ou
r.LensDistortion.Panini.D > 0
. Pour mieux comprendre ce paramètre, vous pouvez vous référer directement à l'article de recherche original indiqué au bas de cette page.
r.LensDistortion.Panini.D > 0 accentue directement l'effet. Toutefois, ce n'est pas le seul paramètre, r.LensDistortion.Panini.S lerp avec la compression stricte du papier. Et si une sphère apparaît toujours éclipsée dans les coins, alors ce paramètre peut aussi être ajusté. Cependant, dans le cas de r.LensDistortion.Panini.S < 0, des pixels noirs non rendus apparaissent dans les coins.
Pour mieux comprendre le fonctionnement de cet effet, vous pouvez également modifier r.LensDistortion.ScreenFit. Gardez à l'esprit que certains des pixels projetés en perspective ne sont pas affichés à l'écran, près du haut ou du bas de l'écran.
Lignes droites
La projection Panini offre plusieurs garanties en ce qui concerne le rendu des lignes. Tout d'abord, les lignes verticales restent droites pour les fonctions r.LensDistortion.Panini.D et r.LensDistortion.Panini.S. Ensuite, les lignes qui passent par le centre de l'écran restent droites pour les fonctions r.LensDistortion.Panini.D, mais r.LensDistortion.Panini.S = 0. Cette propriété mathématique est donc idéale dans les jeux de tir à la première personne, car la projection Panini d'une arme vers le centre de l'écran maintient ses lignes droites vers le centre.
Flou central
L'un des problèmes de cet effet de post-traitement est qu'un phénomène de flou apparaît au centre de l'écran à mesure que la valeur de
r.LensDistortion.Panini.D
augmente. La projection Panini a été implémentée dans la passe de mise à l'échelle afin de profiter du filtre de netteté et de combattre ce phénomène. Cependant, cela ne suffit pas à régler le problème. Il peut donc être nécessaire d'augmenter la valeur de r.ScreenPercentage pour atténuer ce problème, mais cela aura un impact sur les performances de rendu, car cela augmente le nombre de pixels à afficher. Vous pouvez opter pour un meilleur compromis en choisissant une valeur plus faible de
r.LensDistortion.Panini.D
sur les matériels qui ne peuvent pas prendre en charge un pourcentage d'écran plus élevé, et conserver cet effet en ne s'appuyant que sur le filtre de netteté de la passe de mise à l'échelle.
Une autre façon d'utiliser la projection Panini consiste à passer par une fonction de matériau qui génère un décalage de position dans l'espace du monde, à connecter à la broche d'entrée de décalage de position dans le monde du matériau. C'est ce qu'utilise Unreal Tournament au lieu de rendre l'arme à un champ de vision différent pour corriger les distorsions de la projection en perspective. Vous pouvez consulter le référentiel github d'UT pour plus d'informations.