Partilhar via


Equações PRT (Direct3D 9)

Para entender completamente um sombreador que implementa PRT, é útil derivar a fórmula que o sombreador usa para calcular o brilho de saída.

Para começar, a equação a seguir é a equação geral para calcular o brilho de saída resultante da iluminação direta em um objeto difuso com iluminação distante arbitrária.

equação do brilho de saída resultante da iluminação direta sobre um objeto difuso com iluminação distante arbitrária

em que:

Parâmetro Descrição
Rp O brilho de saída no vértice p. Avaliado em cada vértice da malha.
pd O albedo da superfície.
pi Uma constante, usada como um fator de normalização de conservação de energia.
L(ões) O ambiente de iluminação (fonte de radiância).
Vp₍s₎ Uma função de visibilidade binária para o ponto p. É 1 se o ponto pode ver a luz, 0 se não.
Hnp₍s₎ O termo cosseno da lei de Lambert. Igual a max((Np· s), 0) onde Np é a superfície normal no ponto p.
s A variável que se integra sobre a esfera.

 

Usando funções de base esférica, como harmônicos esféricos, a equação a seguir aproxima o ambiente de iluminação.

equação do ambiente de iluminação

em que:

Parâmetro Descrição
L(ões) O ambiente de iluminação (fonte de radiância).
eu Um inteiro que soma o número de funções base.
O A ordem dos harmônicos esféricos.
leu Um coeficiente.
Yi(s) Alguma função de base sobre a esfera.

 

A recolha destes coeficientes, L', proporciona a aproximação ótima da função L(s) com as funções base Y(s). Substituindo e distribuindo, obtém-se a seguinte equação.

equação do brilho de saída após substituir l(s) e distribuir

A integral de Yi(s)Vp₍s₎Hnp₍s₎ é um coeficiente de transferência tpi que o simulador pré-calcula para cada vértice na malha. Substituindo isso, obtém-se a seguinte equação.

equação do brilho de saída após substituição do coeficiente de transferência

Alterando isso para notação vetorial, obtém-se a seguinte equação não compactada para calcular a radiância de saída para cada canal.

equação do brilho de saída depois de mudar para notação vetorial

em que:

Parâmetro Descrição
Rp O brilho de saída no vértice p.
pd O albedo da superfície.
L' O vetor de li, e é a projeção do brilho da fonte nas funções de base harmônica esférica. Este é um vetor de ordem² de coeficientes harmônicos esféricos.
Tp Um vetor de transferência order² para o vértice p. O simulador divide os coeficientes de transferência por p.

 

Ambos os vetores são um vetor de ordem² de coeficientes harmônicos esféricos, então observe que este é simplesmente um produto ponto. Dependendo da ordem, o ponto pode ser caro para que a compressão possa ser usada. Um algoritmo chamado Clustered Principal Component Analysis (CPCA) comprime eficientemente os dados. Isso permite o uso de uma aproximação harmônica esférica de ordem superior que resulta em sombras mais nítidas.

O CPCA fornece a seguinte equação para aproximar o vetor de transferência.

equação do vetor de transferência aproximado

em que:

Parâmetro Descrição
Tp O vetor de transferência para o vértice p.
Mk A média para o cluster k.
j Um inteiro que soma sobre o número de vetores PCA.
N O número de vetores PCA.
wpj O peso do jth PCA para o ponto p.
Bkj O vetor de base jth PCA para o cluster k.

 

Um aglomerado é simplesmente um número de vértices que compartilham o mesmo vetor médio. Como obter a média do cluster, os pesos da PCA, os vetores da base da PCA e as ids do cluster para os vértices é discutido abaixo.

Substituindo estas duas equações, obtém-se:

equação do brilho de saída após a substituição do vetor de transferência

Em seguida, a distribuição do produto ponto produz a seguinte equação.

equação do brilho de saída após a distribuição do produto ponto

Porque ambos (Mk· L') e (Bkj· L') são constantes por vértice, a amostra calcula esses valores com a CPU e os passa como constantes para o sombreador de vértice; Como wpj muda para cada vértice, a amostra armazena esses dados por vértice no buffer de vértice.

de transferência de radiação pré-computada