chinese腹肌校草洗澡小说_中文无码天天av天天爽_飘雪影院免费版在线观看视频_成全视频高清免费观看在线播放_大地资源中文在线观看官网第二页_军人各种做高h尿在里面_亂伦丰满人妻av怡红院_欧美中字狠狠第一页_小收影院 成人a片产无码免费视频奶头

Spellwrath實時光線追蹤軟陰影(二)

share

光線追蹤器追蹤目標之后,采取以下步驟來追蹤陰影:

對于場景中的每個像素(2D),我們從它實際在世界空間中的3D位置處向光源投射射線

如果像素是被遮擋的,存儲遮擋值

如果像素沒有被遮擋,在緩沖區(qū)的存儲值為1.0

這非常直觀。對于硬陰影而言,這足以對所有被遮擋部分著色。簡單地添加一些光線至每個像素中,且緩沖區(qū)值小于1.0。

正如之前所說,我們將一些常見的方法與光柵化技術結合來進行實時光線追蹤。其中一個行之有效的方法便是延遲渲染。因此,我們所跟蹤的每個像素的實際渲染步驟將在光線追蹤之后完成:

確定像素是否被遮擋(光線追蹤陰影緩沖輸入值小于1.0)。如果被遮擋,使用數(shù)值2。

確定取樣尺寸(光線追蹤陰影緩沖區(qū))

理論上,取樣尺寸可以告訴我們半影在場景中這個區(qū)域的尺寸。因此,我們需要檢查某個區(qū)域是否有半影。顯然,我們需要某些角度的因子,除以該像素的深度值便可以得到。

請注意,這里已經簡化了視角轉換,即簡單的除以Z值。這忽略了一個事實:由于陰影區(qū)域距離觀察者更近,半影在場景空間的尺寸會更大。當保持因子不變而人為增大取樣尺寸來獲得此效果時,這一點講得通。

為簡單起見,我們假定觀察者正垂直地看著陰影區(qū)域,即采樣區(qū)域每個像素的Z值是相同的。

最大的平方距離從而減少至:

接下來便是簡單的網格搜索。尋找最近的亮像素進行比較,并找到最小平方距離的像素。

網格取樣的頻率及所希望獲得的性能取決于我們自己。取樣越多則半影會越平滑。

請注意,這個階段可能會再次需要像素的Z值來創(chuàng)建更精確的陰影,且這不取決于觀察者觀看的角度。為此,不用預先計算Dmax值,而是在網格搜索時對其進行計算,因為我們不知道Z值能達到的最遠點。

此外,還需要把距離內的Z值與最近的光亮入口結合起來。

這是對每個像素進行的額外計算。它不僅加強了準確性,最重要的是,從獨立的觀察視角而言,可以忽略此計算來加快速度。至少我是這樣做的。

現(xiàn)在,我們知道了某個限制區(qū)域內被遮擋像素到最近亮像素之間的距離。它實際告訴我們特定點陰影的強度, 其極限位置是:

或者

通過標準光照方法,使用該值來給像素著色。

通過這種方法,在硬陰影之上使用軟陰影僅產生很小的性能損失,因為我們對每個像素進行了光線追蹤。速度的損失不受對象數(shù)量或場景大小的影響,其完全取決于我們希望執(zhí)行的場景大小和樣品密度。

但為什么不模糊陰影邊緣來創(chuàng)建希望達到的柔軟效果?因為這樣便不會獲得極致的效果:

總結

使用這種方法,可以在實時光線追蹤器中最有效最輕松地實現(xiàn)軟陰影。陰影是完全動態(tài)的,不需要預先計算。只有額外的幀緩沖區(qū)有進一步的內存需求時,才需要將陰影數(shù)據(jù)從光線追蹤器中傳輸至后期處理系統(tǒng)中。

如果要慢慢過渡到光線追蹤實時應用程序中,必須至少要與現(xiàn)代光柵化技術的圖形質量相匹配。我認為這方面的工作我們前進的軌道是正確的。

share