預先計算的弧度傳輸 (Direct3D 9)
使用預先計算的弧度傳輸
有趣的場景中存在數種複雜度形式,包括光源環境如何模型化 (,也就是區域光源模型與點/方向光源模型) ,以及模型化 (的全域效果類型,例如陰影、縮色、子表面散佈圖。) 傳統互動式轉譯技術模型,此複雜度有限。 PRT 會利用一些重大限制來啟用這些效果:
- 物件假設為固定 (也就是說,沒有) 。
- 它是以物件為中心的方法 (除非物件一起移動,否則這些全域效果不會在兩者之間維護) 。
- 只有低頻率光源會模型化 (產生虛陰影。) 對於高頻率光線 (尖峰陰影) ,必須採用傳統技術。
PRT 需要下列其中一項,但不需要兩者:
- 高度鑲嵌模型和vs_1_1
- ps_2_0
標準擴散光源與 PRT
下圖是使用傳統 (n • 轉譯l) 光源模型。 您可以使用另一個傳遞來啟用尖角陰影,而某種形式的陰影技術 (陰影深度地圖或陰影磁片區) 。 如果陰影是) 或更複雜的著色器搭配傳統技術使用,則新增多個光線需要多個傳遞 (。
下一個圖例會使用可解析的單一方向光線最佳近似值來轉譯 PRT。 這會導致難以透過傳統技術產生虛陰影。 因為 PRT 一律會建立完整的光源環境模型,新增多個光線或使用環境對應,所以您只會變更值 (,但不會變更著色器所使用的常數數目) 。
PRT 與 Intuneflections
直接光源會直接從光線到達表面。 跳動是一些其他表面一些次數之後,觸達表面的光線。 PRT 只要使用不同的參數執行模擬器,即可在執行時間建立此行為的模型,而不需要變更效能。
下圖是使用直接 PRT 建立的, (0 個彈跳,沒有) 。
下圖是使用 PRT 搭配 intuneflections (2 個彈跳搭配) 。
具有子表面散佈的 PRT
子表面散佈是一種技術,可模型化光線如何通過特定材質。 例如,針對手部的手部按一個光燈。 來自手電筒筒的光線會通過手部、繞著 (變更) 的色彩,然後離開手邊的另一邊。 這也可以透過模擬器的簡單變更來建立模型,而且不會變更執行時間。
下圖示范具有子表面散佈的 PRT。
PRT 的運作方式
下列詞彙適用于瞭解 PRT 的運作方式,如下圖所示。
來源弧度:來源弧度代表整個光源環境。 在 PRT 中,任意環境是使用球面調音基礎來近似的 - 此光源會假設相對於物件遠, (使用環境對應所做的相同假設。)
結束弧度:結束弧度是從表面的任何可能來源離開的光線, (反射的弧度、子表面散佈、發出) 。
傳輸向量:傳輸向量會將來源弧度對應到結束弧度,並使用複雜的光線傳輸模擬預先計算離線。
PRT 會將轉譯程式納入兩個階段,如下圖所示:
- 昂貴的光線傳輸模擬會預先計算可在執行時間使用的傳輸係數。
- 相對輕量型執行時間階段會先使用球面調色基礎來近似光源環境,然後使用這些光源係數和從階段 1) (預先計算的傳輸係數,以簡單的著色器產生結束弧度 (離開物件) 。
如何使用 PRT API
使用其中一個計算來計算傳送向量... ID3DXPRTEngine的方法。
直接處理這些傳輸向量需要大量的記憶體和著色器計算。 壓縮可大幅減少所需的記憶體和著色器計算量。
最終光源值是在實作下列壓縮轉譯方程式的頂點著色器中計算。
其中:
參數 Description Rp 頂點 p 的結束弧度單一通道,會在網格上的每個頂點進行評估。 Mk 叢集 k 的平均值。 這是係數的 Order¹ 向量。 k 頂點 p 的叢集識別碼。 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
相關主題