预计算辐射传输 (Direct3D 9)
使用预计算辐射传输
有趣的场景中存在多种形式的复杂性,包括如何建模照明环境(即区域照明模型与点/方向效果)以及建模的全局效果类型(例如阴影、星形、子表面散射)。传统的交互式呈现技术对这种复杂性进行有限的建模。 PRT 通过一些重大限制启用这些效果:
- 对象假定为刚性(即无变形)。
- 它是一种以对象为中心的方法(除非对象一起移动,否则它们之间不会维护这些全局效果)。
- 仅对低频率照明进行建模(导致软阴影)。对于高频率灯(尖锐的阴影),必须采用传统技术。
PRT 需要以下任一项,但不需要两者:
- 高度细化模型和vs_1_1
- ps_2_0
标准漫射照明与 PRT
下图使用传统的 (n . l) 照明模型呈现。 可以使用另一个传递和某种形式的阴影技术(阴影深度地图或阴影卷)启用锐化阴影。 添加多个灯需要多个通道(如果使用阴影)或具有传统技术的更复杂的着色器。
使用传统照明模型屏幕截图
下一张插图使用可解析的单个方向光的最佳近似值呈现 PRT。 这会导致使用传统技术难以生产的软阴影。 由于 PRT 始终对添加多个灯光或使用环境映射的完整照明环境进行建模,因此你只会更改着色器使用的常量的值(但不更改数量)。
使用 prt屏幕截图
PRT 与 Interreflections
直接照明直接从光线到达表面。 在从其他一些表面弹跳一些次数后,球变是到达表面的光。 PRT 可以通过使用不同的参数运行模拟器来对此行为进行建模,而无需在运行时更改性能。
下图是仅使用直接 PRT 创建的(0 个弹跳没有外流)。
仅使用直接 prt 呈现的插图的
下图是使用 PRT 和内生体(2 个弹跳与外星反射)创建的。
一起使用呈现的插图的屏幕截图
带子表面散点的 PRT
子表面散射是一种技术,可模拟光如何穿过某些材料。 例如,将点亮的手电筒压在手掌上。 手电筒中的光通过你的手,弹跳四处(在此过程中改变颜色),然后从手的另一边退出。 还可以对模拟器进行简单更改,对运行时不做任何更改进行建模。
下图演示了具有子表面散点的 PRT。
使用 prt 和子表面散射
PRT 的工作原理
以下术语有助于了解 PRT 的工作原理,如下图所示。
源辐射:源辐射表示整个照明环境。 在 PRT 中,任意环境是使用球面调和基的近似值 - 此照明假定相对于对象遥远(与环境地图相同的假设)。
退出辐射:出口辐射是从任何可能来源(反射辐射、地下散射、发射)表面的点离开的光。
传输矢量:传输向量将源辐射映射到退出辐射,并使用复杂的轻型传输模拟预计算脱机。
PRT 将呈现过程分解为两个阶段,如下图所示:
- 昂贵的轻型传输模拟预计算可在运行时使用的传输系数。
- 相对轻量的运行时阶段首先使用球面调和基数近似照明环境,然后使用这些照明系数和预计算传输系数(从第 1 阶段)与简单的着色器,导致退出辐射(离开对象的光)。
prt 数据流关系图
如何使用 PRT API
使用其中一个计算... 计算传输向量...ID3DXPRTEngine的方法。
直接处理这些传输向量需要大量的内存和着色器计算。 压缩可显著减少所需的内存和着色器计算量。
最终的照明值在实现以下压缩呈现公式的顶点着色器中计算。
prt 呈现公式
哪里:
参数 描述 Rp 顶点 p 处的单个退出辐射通道,并在网格上的每个顶点上进行评估。 Mk 群集 k 的平均值。 这是系数的 Order 平方米的向量。 k 顶点 p 的群集 ID。 L' 源辐射到 SH 基函数的近似值。 这是系数的 Order 平方米的向量。 j 一个整数,用于对 PCA 向量数求和。 wpj 点 p 的 jth PCA 权重。 这是一个系数。 Bkj 群集 k 的 jth PCA 基向量。 这是系数的 Order 平方米的向量。 提取...ID3DXPRTCompBuffer 从模拟访问压缩数据的方法。
计算源辐射。
API 中有多个帮助程序函数来处理各种常见照明方案。
功能 目的 D3DXSHEvalDirectionalLight 近似于传统的方向光。 D3DXSHEvalSphericalLight 近似局部球面光源。 (请注意,PRT 仅适用于距离照明环境。 D3DXSHEvalConeLight 近似于遥远的区域光源。 例如太阳(非常小的圆锥角)。 D3DXSHEvalHemisphereLight 计算两种颜色之间的线性内插的光(一个在球体的每个极上)。 计算退出辐射。
公式 1 现在必须使用顶点或像素着色器在每个点进行评估。 在计算着色器之前,必须将常量预计算并加载到常量表中(有关详细信息,请参阅 PRT 演示示例)。 着色器本身是此公式的直接实现。
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;
引用
有关 PRT 和球面和谐的详细信息,请参阅以下论文:
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
相关主题