徐訓(xùn)嘉
同濟(jì)大學(xué)軟件學(xué)院,上海 201804
提高場景的光照效果是提升虛擬場景真實感的有效途徑,人們能夠看到物體是因為物體的表面反射了從各種光源發(fā)出的光,最常見的有三種光源:方向光,點光源,聚光燈。方向光是由無窮遠(yuǎn)處射出的平行光線,常用于陽光效果的模擬,點光源可以看作由空間中一個特定位置的點發(fā)出各個方向的光線,聚光燈則是空間中一個特定位置的點發(fā)出的特定方向光線的光源,是本文研究的主要范圍。另一方面,除了物體的表面反射,光線穿越空氣等介質(zhì)時還會產(chǎn)生散射,光在空氣中的散射會使光束所穿越空間發(fā)亮,在整體環(huán)境較暗時,這種現(xiàn)象更加明顯,例如陽光穿越云層或者樹林等時產(chǎn)生的多個光束的效果,體積光照就是在虛擬空間中模擬上述效果。此類效果在虛擬環(huán)境中的應(yīng)用能夠使光照更加具有立體感,有效的提升虛擬場景的真實感。
本文通過渲染聚光燈體積光照效果,利用GPU加速,實現(xiàn)和改進(jìn)了已有的光照算法, 使其更好地在Web3D中運行。
為了能有效的在場景多個光源情況下進(jìn)行渲染,本文采用了基于以下的流程,將渲染場景幾何信息和渲染光照效果分段進(jìn)行。
渲染的每個階段都通過vertex shader和pixel shader 利用顯卡的可編程渲染管線進(jìn)行計算,通過控制渲染到紋理和渲染到后臺緩存來進(jìn)行不同階段間所需資源信息的傳遞。通過第一個階段將場景幾何信息保存在紋理中,后續(xù)階段再根據(jù)紋理中的數(shù)據(jù)對光照進(jìn)行渲染。
渲染的第一個階段需要使用渲染到紋理技術(shù),從攝像機(jī)的角度,將整個場景的幾何信息像素化保存在紋理中,給接下來的渲染提供必要的信息。只有這個階段會用到3D場景中物體的信息,因此需要將物體的表面位置信息,表面法向量信息,表面顏色信息保存下來。
漫反射顏色信息直接通過3*8bits來存儲RGB值,法向量信息通過對單位法向量進(jìn)行線性處理,將其XYZ分量對應(yīng)至0至1區(qū)間后用進(jìn)行3*8bits存儲,由于直接存儲頂點的XYZ位置信息可能會產(chǎn)生精度不足的問題,這里通過轉(zhuǎn)換,使用24bits存儲頂點的視空間深度信息,范圍在0至1區(qū)間,在后續(xù)渲染階段,再根據(jù)攝像機(jī)的參數(shù)對深度信息進(jìn)行還原,得到原有的位置信息。
對于每個像素,本文采用的簡化的光照模型進(jìn)行渲染,只考慮至物體的環(huán)境光與漫反射效果:
為了模擬聚光燈邊緣的光照減弱效果,引入?yún)?shù)fall:
最后根據(jù)公式(1)進(jìn)行疊加,產(chǎn)生物體表面的直接光照效果。
在渲染完表面直接光照的基礎(chǔ)上,通過設(shè)置多個采樣面,對各采樣面的像素進(jìn)行混合疊加來模擬均勻空間下的單次散射體積光照效果。對于聚光燈, 由于采用平行平面采樣會導(dǎo)致在光源點附近光照效果的不平滑,此算法沒有根據(jù)深度來設(shè)置平面,而是根據(jù)光照的夾角來設(shè)置采樣平面。
算法根據(jù)可手動設(shè)置的采樣率,將聚光燈的視錐按照相同夾角間隔等分出采樣面,對于每個采樣面像素根據(jù)以下公式計算:
在計算像素時,需要先判斷采樣點的深度值是否小于第一階段深度紋理所存信息,采樣點深度值大于深度紋理保存值,像素值取零,保證視線被物體遮擋的部分不會進(jìn)行疊加。
本文所進(jìn)行的試驗均在Nvidia GT 240的環(huán)境下進(jìn)行測試,屏幕分辨率為1024*768:
圖1 算法改進(jìn)結(jié)果
左圖為根據(jù)深度來設(shè)置采樣面,右圖根據(jù)光照角來設(shè)置采樣面。兩種方式的采樣率均為16次采樣,渲染幀數(shù)能達(dá)到24幀以上。從圖中可以明顯看出,在相同采樣率的情況下,通過平行平面采樣在光源點附近會由于采樣率不足導(dǎo)致光照效果的不平滑,根據(jù)光照角度設(shè)置采樣面就能避免這一現(xiàn)象,在光源點附近產(chǎn)生具有高度真實感的效果。
本文提出了一種基于極坐標(biāo)采樣的聚光燈體積光照的計算方法,適用于復(fù)雜和動態(tài)的環(huán)境,在光源數(shù)量較多時也能達(dá)到具有真實感的實時渲染效果。為了能渲染大量光照,出于性能方面的考慮,沒有引入陰影的機(jī)制,因此在某些情況下會造成失真的現(xiàn)象。在以后的工作中,使用一些輕量陰影技術(shù)避免此類現(xiàn)象的出現(xiàn),并繼續(xù)優(yōu)化算法的瓶頸,將是研究的重點。
[1]Dobashi Y,Nishita T,Yamamoto T.Interactive rendering of atmospheric scattering effects using graphics hardware[J].Proc of the Graphics Hardware.2002.
[2]Baran,Chen,Ragan Kelley,Durand,Lehtinen.A hierarchical volumetric shadow algorithm for single scattering[J].ACM Transactions on Graphics 29,2010.