Compartir a través de


Ecuaciones PRT (Direct3D 9)

Para comprender completamente un sombreador que implementa PRT, resulta útil derivar la fórmula que usa el sombreador para calcular la radiación de salida.

Para empezar, la siguiente ecuación es la ecuación general para calcular la radiación de salida resultante de la iluminación directa en un objeto difuso con iluminación lejana arbitraria.

ecuación de la radiación de salida resultante de la iluminación directa en un objeto difuso con iluminación lejana arbitraria

donde:

Parámetro Descripción
Rp Radiancia de salida en vértice p. Se evalúa en cada vértice de la malla.
pd Albedo de la superficie.
pi Constante, utilizada como factor de normalización de conservación de la energía.
L(s) Entorno de iluminación (radiancia de origen).
Vp₍s₎ Función de visibilidad binaria para point p. Es 1 si el punto puede ver la luz, 0 si no.
Hnp₍s₎ El término coseno de la ley de Lambert. Igual a max((Np·s), 0) donde Np es la superficie normal en el punto p.
s Variable que se integra sobre la esfera.

 

Con funciones de base esféricas, como armónicos esféricos, la siguiente ecuación aproxima el entorno de iluminación.

ecuación del entorno de iluminación

donde:

Parámetro Descripción
L(s) Entorno de iluminación (radiancia de origen).
i Entero que suma el número de funciones base.
O El orden de los armónicos esféricos.
li Coeficiente.
Yi(s) Alguna función base sobre la esfera.

 

La colección de estos coeficientes, L', proporciona la aproximación óptima para las L(s) de función con las funciones base Y(s). Sustituir y distribuir produce la siguiente ecuación.

ecuación de la radiación de salida después de sustituir l(s) y distribuir

La integral de Yi(s)Vp₍s₎Hnp₍s₎ es un coeficiente de transferencia tpi que el simulador precompute para cada vértice de la malla. Sustituir esto produce la siguiente ecuación.

ecuación de la radiación de salida después de sustituir el coeficiente de transferencia

Al cambiar esto a la notación vectorial, se produce la siguiente ecuación sin comprimir para calcular la radiación de salida para cada canal.

ecuación de la radiación de salida después de cambiar a notación vectorial

donde:

Parámetro Descripción
Rp Radiancia de salida en vértice p.
pd Albedo de la superficie.
L' El vector de li, y es la proyección de la radiación de origen en las funciones armónicas esféricas. Se trata de un vector order² de coeficientes armónicos esféricos.
Tp Vector de transferencia order² para vértice p. El simulador divide los coeficientes de transferencia por p.

 

Ambos vectores son un vector order² de coeficientes armónicos esféricos, por lo que observe que esto es simplemente un producto de puntos. Dependiendo del orden, el punto puede ser costoso, por lo que se puede usar la compresión. Un algoritmo denominado Análisis de componentes principales agrupados (CPCA) comprime eficazmente los datos. Esto permite el uso de una aproximación armónica esférica de orden superior que da como resultado sombras más nítidas.

CPCA proporciona la siguiente ecuación para aproximar el vector de transferencia.

ecuación del vector de transferencia aproximado

donde:

Parámetro Descripción
Tp Vector de transferencia para vértice p.
Mk Media para el clúster k.
j Entero que suma el número de vectores PCA.
No Número de vectores PCA.
wpj Peso pcA jth para el punto p.
Bkj Vector de base pcA jth para el clúster k.

 

Un clúster es simplemente un número de vértices que comparten el mismo vector medio. A continuación se describe cómo obtener la media del clúster, las ponderaciones de PCA, los vectores de base de PCA y los identificadores de clúster de los vértices.

Sustituir estas dos ecuaciones produce:

ecuación de la radiación de salida después de sustituir el vector de transferencia

Después, la distribución del producto de puntos produce la siguiente ecuación.

ecuación de la radiación de salida después de distribuir el producto de punto

Porque ambos (Mk· L') y (Bkj· L') son constantes por vértice, la muestra calcula estos valores con la CPU y los pasa como constantes al sombreador de vértices; dado que wpj cambia para cada vértice, el ejemplo almacena estos datos por vértice en el búfer de vértices.

Transferencia de radiancia precalada