Équations PRT (Direct3D 9)

Pour bien comprendre un nuanceur qui implémente PRT, il est utile de dériver la formule utilisée par le nuanceur pour calculer Exit luminance.

Pour commencer, l’équation suivante est l’équation générale permettant de calculer les luminance de sortie résultant d’un éclairage direct sur un objet diffus avec un éclairage distant arbitraire.

équation de l’luminance de sortie résultant d’un éclairage direct sur un objet diffus avec un éclairage distant arbitraire

où :

Paramètre Description
PR Luminance de sortie au sommet p. Évalué à chaque vertex sur la maille.
pd Albedo de l’aire.
pi Constante, utilisée comme facteur de normalisation de la conservation de l’énergie.
L (s) Environnement d’éclairage (source luminance).
VP ₍ s ₎ Fonction de visibilité binaire pour le point p. La valeur est 1 si le point peut voir la lumière, 0 dans le cas contraire.
HNP ₍ s ₎ Terme cosinus de la Loi de Lambert. Égal à Max ((NP · s), 0) où NP correspond à la surface normale au point p.
s Variable qui s’intègre sur la sphère.

À l’aide de fonctions sphériques, telles que les harmoniques sphériques, l’équation suivante est proche de l’environnement d’éclairage.

équation de l’environnement d’éclairage

où :

Paramètre Description
L (s) Environnement d’éclairage (source luminance).
i Entier qui totalise le nombre de fonctions de base.
O Ordre des harmoniques sphériques.
l Un coefficient.
Y(s) Certaines fonctions de base sur la sphère.

La collection de ces coefficients, L', fournit la approximation optimale pour la ou les fonctions L avec les fonctions de base Y (s). Le remplacement et la distribution produisent l’équation suivante.

équation de l’luminance de sortie après remplacement de l (s) et distribution

L’intégrale de Yi (s)VP ₍ s ₎ HNP ₍ s ₎ est un coefficient de transfert tpi que le simulateur Précalcule pour chaque vertex sur la maille. La substitution de ce code génère l’équation suivante.

équation de Exit luminance après avoir remplacé le coefficient de transfert

La modification de cette notation vectorielle produit l’équation non compressée suivante pour calculer les luminance de sortie pour chaque canal.

équation de Exit luminance après avoir changé en notation Vector

où :

Paramètre Description
PR Luminance de sortie au sommet p.
pd Albedo de l’aire.
Budget Le vecteur de liet est la projection de la source luminance dans les fonctions de base d’harmoniques sphériques. Il s’agit d’un vecteur de commande ² de coefficients d’harmonique sphérique.
PM Vecteur de transfert de commande ² pour le vertex p. Le simulateur divise les coefficients de transfert par p.

Ces deux vecteurs sont un vecteur de commande ² de coefficients d’harmonique sphérique. Notez donc qu’il s’agit simplement d’un point. En fonction de la commande, le point peut être coûteux afin que la compression puisse être utilisée. Un algorithme appelé CPCA (cluster principal Component Analysis) compresse efficacement les données. Cela permet l’utilisation d’une approximation d’harmonique sphérique d’ordre supérieur qui produit des ombres plus nettes.

CPCA fournit l’équation suivante pour rapprocher le vecteur de transfert.

équation du vecteur de transfert approximatif

où :

Paramètre Description
PM Vecteur de transfert pour le vertex p.
MK Moyenne du cluster k.
j Entier qui additionne le nombre de vecteurs PCA.
N Nombre de vecteurs PCA.
wPJ Poids de JTH PCA pour le point p.
BkJ Le vecteur de base JTH PCA pour le cluster k.

Un cluster est tout simplement un nombre de vertex qui partagent le même vecteur de moyenne. L’obtention de la moyenne du cluster, des pondérations de l’APC, des vecteurs de base de l’APC et des ID de cluster pour les vertex est décrite ci-dessous.

Le remplacement de ces deux équations donne :

équation de Exit luminance après avoir remplacé le vecteur de transfert

Ensuite, la distribution du produit scalaire produit l’équation suivante.

équation de l’luminance de sortie après la distribution du produit scalaire

Parce que les deux (MK · L') et (BkJ· L') sont des constantes par vertex, l’exemple calcule ces valeurs avec l’UC et les passe comme constantes dans le nuanceur de sommets. étant donné que wPJ change pour chaque vertex, l’exemple stocke ces données par vertex dans la mémoire tampon de vertex.

Transfert de luminance précalculé