Transferencia radiance precalada (Direct3D 9)
Uso de la transferencia radiance precalada
Hay varias formas de complejidad presentes en escenas interesantes, incluida la forma en que se modela el entorno de iluminación (es decir, los modelos de iluminación de área frente a los de punto y dirección) y qué tipo de efectos globales se modelan (por ejemplo, sombras, interreflections, dispersión de subsurface). Las técnicas de representación interactiva tradicionales modelarán una cantidad limitada de esta complejidad. PRT permite estos efectos con algunas restricciones significativas:
- Se supone que los objetos son rígidos (es decir, no hay deformaciones).
- Se trata de un enfoque centrado en objetos (a menos que los objetos se muevan juntos, estos efectos globales no se mantienen entre ellos).
- Solo se modela la iluminación de baja frecuencia (lo que da lugar a sombras suaves). Para las luces de alta frecuencia (sombras nítidas), las técnicas tradicionales tendrían que emplearse.
PRT requiere uno de los siguientes elementos, pero no ambos:
- modelos altamente teselados y vs_1_1
- ps_2_0
Iluminación difusa estándar frente a PRT
La ilustración siguiente se representa con el modelo de iluminación tradicional (n · l). Las sombras afiladas podrían habilitarse mediante otro paso y alguna forma de técnica de sombreado (mapas de profundidad de sombras o volúmenes de sombra). Agregar varias luces requeriría varios pases (si se van a usar sombras) o sombreadores más complejos con técnicas tradicionales.
La siguiente ilustración se representa con PRT mediante la mejor aproximación de una sola luz direccional que puede resolver. Esto da como resultado sombras suaves que serían difíciles de producir con técnicas tradicionales. Dado que PRT siempre modela entornos de iluminación completos agregando varias luces o usando un mapa de entorno, solo cambiaría los valores (pero no el número) de constantes usadas por el sombreador.
PRT con interreflections
La iluminación directa llega a la superficie directamente desde la luz. Las interreflecciones son ligeras que llegan a la superficie después de rebotar alguna otra superficie algunas veces. PRT puede modelar este comportamiento sin cambiar el rendimiento en tiempo de ejecución simplemente ejecutando el simulador con parámetros diferentes.
La ilustración siguiente se crea solo con PRT directo (0 rebotes sin interreflections).
La ilustración siguiente se crea mediante PRT con interreflections (2 rebotes con interreflections).
PRT con dispersión de subsurface
La dispersión de subsurface es una técnica que modela cómo pasa la luz a través de determinados materiales. Por ejemplo, presione una linterna iluminada contra la palma de la mano. La luz de la linterna pasa a través de la mano, rebota alrededor (cambiando el color en el proceso) y sale del otro lado de la mano. Esto también se puede modelar con cambios simples en el simulador y sin cambios en el entorno de ejecución.
En la ilustración siguiente se muestra PRT con dispersión de subsurface.
Cómo funciona PRT
Los términos siguientes son útiles para comprender cómo funciona PRT, como se muestra en el diagrama siguiente.
Radiance de origen: la radiación de origen representa el entorno de iluminación en su conjunto. En PRT, un entorno arbitrario se aproxima mediante la base armónica esférica: se supone que esta iluminación es lejana con respecto al objeto (la misma suposición que se realiza con mapas de entorno).
Radiancia de salida: La radiación de salida es la luz que sale de un punto en la superficie desde cualquier fuente posible (radiancia reflejada, dispersión de subsurface, emisión).
Vectores de transferencia: los vectores de transferencia asignan Radiance de origen a la radiación de salida y se precalulan sin conexión mediante una simulación de transporte de luz compleja.
PRT factoriza el proceso de representación en dos fases, como se muestra en el diagrama siguiente:
- Una simulación de transporte ligero costosa precompute los coeficientes de transferencia que se pueden usar en tiempo de ejecución.
- Una fase en tiempo de ejecución relativamente ligera se aproxima primero al entorno de iluminación utilizando la base armónica esférica, luego usa estos coeficientes de iluminación y los coeficientes de transferencia precalculados (de la fase 1) con un sombreador simple, lo que da lugar a radiancia de salida (la luz que sale del objeto).
Uso de la API de PRT
Calcule los vectores de transferencia con uno de los procesos... métodos de ID3DXPRTEngine.
El tratamiento directo con estos vectores de transferencia requiere una cantidad significativa de cálculo de memoria y sombreador. La compresión reduce significativamente la cantidad de memoria y cálculo del sombreador necesarios.
Los valores de iluminación finales se calculan en un sombreador de vértices que implementa la siguiente ecuación de representación comprimida.
Donde:
Parámetro Descripción Rp Un único canal de radiancia de salida en vértice p y se evalúa en cada vértice de la malla. Mk Media para el clúster k. Se trata de un vector Order² de coeficientes. k Identificador de clúster para vértice p. L' La aproximación de la radiación de origen en las funciones de base SH. Se trata de un vector Order² de coeficientes. j Entero que suma el número de vectores PCA. wpj Peso pcA jth para punto p. Se trata de un único coeficiente. Bkj Vector de base pcA jth para el clúster k. Se trata de un vector Order² de coeficientes. El extracto... Los métodos de ID3DXPRTCompBuffer proporcionan acceso a los datos comprimidos de la simulación.
Calcule la radiación de origen.
Hay varias funciones auxiliares en la API para controlar una variedad de escenarios de iluminación comunes.
Función Finalidad D3DXSHEvalDirectionalLight Aproxima una luz direccional convencional. D3DXSHEvalsphericalLight Aproxima las fuentes de luz esféricas locales. (Tenga en cuenta que PRT solo funciona con entornos de iluminación a distancia). D3DXSHEvalConeLight Se aproxima a una fuente de luz de área lejana. Un ejemplo sería el sol (ángulo de cono muy pequeño). D3DXSHEvalHemisphereLight Evalúa una luz que es una interpolación lineal entre dos colores (uno en cada polo de una esfera). Calcule la radiación de salida.
La ecuación 1 ahora tiene que evaluarse en cada punto mediante un sombreador de vértices o píxeles. Para poder evaluar el sombreador, las constantes deben calcularse previamente y cargarse en la tabla de constantes (consulte el ejemplo de demostración de PRT para obtener más información). El propio sombreador es una implementación sencilla de esta ecuación.
struct VS_OUTPUT { float4 Position : POSITION; // vertex position float2 TextureUV : TEXCOORD0; // vertex texture coordinates float4 Diffuse : COLOR0; // vertex diffuse color }; VS_OUTPUT Output; Output.Position = mul(vPos, mWorldViewProjection); float4 vExitR = float4(0,0,0,0); float4 vExitG = float4(0,0,0,0); float4 vExitB = float4(0,0,0,0); for (int i=0; i < (NUM_PCA_VECTORS/4); i++) { vExitR += vPCAWeights[i] * vClusteredPCA[iClusterOffset+i+1+(NUM_PCA_VECTORS/4)*0]; vExitG += vPCAWeights[i] * vClusteredPCA[iClusterOffset+i+1+(NUM_PCA_VECTORS/4)*1]; vExitB += vPCAWeights[i] * vClusteredPCA[iClusterOffset+i+1+(NUM_PCA_VECTORS/4)*2]; } float4 vExitRadiance = vClusteredPCA[iClusterOffset]; vExitRadiance.r += dot(vExitR,1); vExitRadiance.g += dot(vExitG,1); vExitRadiance.b += dot(vExitB,1); Output.Diffuse = vExitRadiance;
Referencias
Para obtener más información sobre PRT y armónicos esféricos, consulte los siguientes artículos:
Precomputed Radiance Transfer for Real-Time Rendering in Dynamic,
Low-Frequency Lighting Environments
P.-P. Sloan, J. Kautz, J. Snyder
SIGGRAPH 2002
Clustered Principal Components for Precomputed Radiance Transfer
P.-P. Sloan, J. Hall, J. Hart, J. Snyder
SIGGRAPH 2003
Efficient Evaluation of Irradiance Environment Maps
P.-P. Sloan
ShaderX 2, W. Engel
Spherical Harmonic Lighting: The Gritty Details
R. Green
GDC 2003
An Efficient Representation for Irradiance Environment Maps
R. Ramamoorthi, P. Hanrahan
A Practical Model for Subsurface Light Transport
H. W. Jensen, S. R. Marschner, M. Levoy, and P. Hanrahan
SIGGRAPH 2001
Bi-Scale Radiance Transfer
P.-P. Sloan, X. Liu, H.-Y. Shum, J. Snyder
SIGGRAPH 2003
Fast, Arbitrary BRDF Shading for Low-Frequency Lighting Using Spherical
Harmonics
J. Kautz, P.-P. Sloan, J. Snyder
12th Eurographics Workshop on Rendering
Precomputing Interactive Dynamic Deformable Scenes
D. James, K. Fatahalian
SIGGRAPH 2003
All-Frequency Shadows Using Non-linear Wavelet Lighting Approximation
R. Ng, R. Ramamoorth, P. Hanrahan
SIGGRAPH 2003
Matrix Radiance Transfer
J. Lehtinen, J. Kautz
SIGGRAPH 2003
Math World
E. W. Weisstein, Wolfram Research, Inc.
Quantum Theory of Angular Momentum
D. A. Varshalovich, A.N. Moskalev, V.K. Khersonskii
Temas relacionados