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 radiamento 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 um 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 sobre a 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 de base. |
O | A ordem das harmônicas esféricas. |
li | Um coeficiente. |
Yi(s) | Alguma função de 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 de base Y(s). Substituir e distribuir produz a equação a seguir.
O integral do Yi(s)Vp₍s₎Hnp₍s₎ é um tpi de coeficiente de transferência que o simulador pré-compila para cada vértice na malha. Substituir isso gera a equação a seguir.
Alterar isso para notação de vetor gera a seguinte equação não compactada para calcular o radiamento de saída para cada canal.
em que:
Parâmetro | Descrição |
---|---|
Rp | O radiamento de saída no vértice p. |
pd | O albedo da superfície. |
L' | O vetor de li e é a projeção do radiance 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 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 da ordem, o ponto pode ser caro para que a compactação possa ser usada. Um algoritmo chamado CPCA (Clustered Principal Component Analysis) 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.
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 do cluster k. |
j | Um inteiro que soma o número de vetores de PCA. |
N | O número de vetores de PCA. |
wpj | O peso jth PCA para o ponto p. |
Bkj | O vetor de base jth PCA para 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; porque o wpj muda para cada vértice, o exemplo armazena esses dados por vértice no buffer de vértice.
Tópicos relacionados