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 radiamento de saída.
Para começar, a equação a seguir é a equação geral para calcular o radiamento de saída resultante da iluminação direta em um objeto difuso com iluminação distante arbitrária.
em que:
Parâmetro | Descrição |
---|---|
Rp | O radiação de saída no vértice p. Avaliado em cada vértice na malha. |
pd | O albedo da superfície. |
pi | Uma constante, usada como fator de normalização de conservação de energia. |
L(s) | O ambiente de iluminação (radiação de origem). |
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) em que Np é a superfície normal no ponto p. |
s | A variável que se integra à esfera. |
Usando funções de base esféricas, como harmônicos esféricos, a equação a seguir aproxima o ambiente de iluminação.
em que:
Parâmetro | Descrição |
---|---|
L(s) | O ambiente de iluminação (radiação de origem). |
i | Um inteiro que soma o número de funções base. |
O | A ordem dos harmônicos esféricos. |
li | Um coeficiente. |
Yi(s) | Alguma função base sobre a esfera. |
A coleção desses coeficientes, L', fornece a aproximação ideal para a função L(s) com as funções base Y(s). Substituir e distribuir produz a equação a seguir.
O integral de Yi(s)Vp₍s₎Hnp₍s₎ é um coeficiente de transferência tpi que o simulador pré-computa para cada vértice na malha. Substituir isso produz a equação a seguir.
Alterar isso para notação de vetor produz a equação descompactada a seguir para calcular o radiamento de saída para cada canal.
em que:
Parâmetro | Descrição |
---|---|
Rp | O radiação de saída no vértice p. |
pd | O albedo da superfície. |
L' | O vetor de li e é a projeção do radiamento de origem nas funções de base harmônica esféricas. Este é um vetor order² 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 order² de coeficientes harmônicos esféricos, portanto, observe que este é simplesmente um produto de ponto. Dependendo do pedido, o ponto pode ser caro para que a compactação possa ser usada. Um algoritmo chamado CPCA (Análise de Componente Principal Clusterizado) compacta os dados com eficiência. 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 equação a seguir para aproximar o vetor de transferência.
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 o número de vetores PCA. |
N | O número de vetores PCA. |
wpj | O peso JTH PCA para o ponto p. |
Bkj | O vetor de base JTH PCA para o cluster k. |
Um cluster é simplesmente um número de vértices que compartilham o mesmo vetor médio. Como obter a média do cluster, os pesos PCA, os vetores de base PCA e as IDs de cluster para os vértices são discutidos abaixo.
Substituir essas duas equações gera:
Em seguida, a distribuição do produto de ponto produz a equação a seguir.
Porque ambos (Mk· L') e (Bkj· L') são constantes por vértice, o exemplo calcula esses valores com a CPU e os passa como constantes para o sombreador de vértice; como wpj altera para cada vértice, o exemplo armazena esses dados por vértice no buffer de vértice.
Tópicos relacionados