• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于立即輻射度的實(shí)時(shí)全局光照算法

      2018-04-02 08:25:10袁璐
      現(xiàn)代計(jì)算機(jī) 2018年2期
      關(guān)鍵詞:點(diǎn)光源交點(diǎn)亮度

      袁璐

      (四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065)

      0 引言

      隨著計(jì)算機(jī)硬件處理能力的不斷提升,計(jì)算機(jī)圖形學(xué)也迎來(lái)了嶄新的局面。全局光照模擬作為計(jì)算機(jī)圖形學(xué)中活躍的研究方向,在增強(qiáng)圖像渲染的真實(shí)感上扮演者不可或缺的角色。全局光照的模擬一直以來(lái)被廣泛的應(yīng)用在不同的領(lǐng)域,如卡通片繪制、電影制作以及游戲渲染等。然而由于全局光照計(jì)算量耗費(fèi)巨大很難達(dá)到實(shí)時(shí)渲染,因此快速渲染成為了全局光照的重要研究方向之一。

      立即輻射度算法作為全局光照算法中的一種,減少了預(yù)計(jì)算部分,使全局光照實(shí)時(shí)化成了可能。然而由于為達(dá)到真實(shí)的渲染效果,目前大部分基于立即輻射度的算法都是離線渲染的。因此為提升渲染效率,本文立將即輻射度算法應(yīng)用到GPU上,同時(shí)通過(guò)Lightcuts算法進(jìn)行進(jìn)一步的加速計(jì)算。

      1 相關(guān)工作

      Keller在1997年提出立即輻射度算法,該算法的核心思想是利用光照輻射度的特性,在場(chǎng)景中被直接光照照亮的地方生成二次光源,即虛擬點(diǎn)光源。并用這些虛擬點(diǎn)光源進(jìn)行直接光照計(jì)算,從而代替復(fù)雜光照計(jì)算,模擬出真實(shí)的全局光照效果。雖然該算法的提出讓全局光照的研究方向有了很大發(fā)展,但該算法即使在對(duì)僅有402個(gè)面片的場(chǎng)景進(jìn)行渲染時(shí),也需要花費(fèi)24秒的時(shí)間。

      因此Walter等人于2005年在立即輻射度算法基礎(chǔ)上提出的Lightcuts算法,通過(guò)對(duì)場(chǎng)景中生成的虛擬點(diǎn)光源進(jìn)行聚類(lèi),并用二叉樹(shù)將相似的光源進(jìn)行合并以減少場(chǎng)景中虛擬點(diǎn)光源的數(shù)量,渲染效率有了很大的提升。

      2 算法概述

      本文通過(guò)用OpenGL渲染管線計(jì)算立即輻射度算法中光線跟蹤和虛擬點(diǎn)光源生成的過(guò)程,再結(jié)合Lightcuts算法減少虛擬點(diǎn)光源的數(shù)量,最后通過(guò)延遲著色(deferred shading)進(jìn)一步加速光照計(jì)算。

      2.1 立即輻射度算法

      立即輻射度算法計(jì)算主要分為兩部分:虛擬點(diǎn)光源創(chuàng)建和光照計(jì)算。

      在虛擬點(diǎn)光源創(chuàng)建部分,首先對(duì)場(chǎng)景中的原始光源隨機(jī)選取方向生成初始光線,再跟蹤初始光線并判斷光線是否與場(chǎng)景有交點(diǎn),若有交點(diǎn)則在得到的交點(diǎn)上創(chuàng)建虛擬點(diǎn)光源。虛擬點(diǎn)光源的位置信息和法線信息與得到的交點(diǎn)相同。與基于物理的方法不同,為提升渲染效率,本文中虛擬點(diǎn)光源的貢獻(xiàn)度不通過(guò)貢獻(xiàn)度計(jì)算公式計(jì)算,而是直接將交點(diǎn)處的漫反射材質(zhì)屬性作為虛擬點(diǎn)光源的貢獻(xiàn)度。同時(shí)本文只考慮一次間接光照,即虛擬點(diǎn)光源只生成一次,只考慮原始光源生成的初始光線與場(chǎng)景相交,不考慮虛擬點(diǎn)光源再次生成光線與場(chǎng)景相交。

      在虛擬點(diǎn)光源間接光照計(jì)算部分,對(duì)每個(gè)著色點(diǎn)計(jì)算每個(gè)光源對(duì)其光照貢獻(xiàn)度,并將光照貢獻(xiàn)度進(jìn)行累加,作為著色點(diǎn)最后的光照值。

      2.2 Lightcut算法

      Lightcuts算法提高場(chǎng)景渲染速率的本質(zhì)是對(duì)場(chǎng)景中光源的數(shù)量進(jìn)行簡(jiǎn)化。通常來(lái)說(shuō),場(chǎng)景中的光源數(shù)量減少由此會(huì)導(dǎo)致渲染結(jié)果嚴(yán)重失真。然而由于人眼察覺(jué)變化的能力有限,所以只需把減弱后的光源亮度控制在人眼不能察覺(jué)的范圍內(nèi),就可達(dá)到減少光源數(shù)目而渲染結(jié)果亦不失真的目的。根據(jù)韋伯定律,在最壞的情況下,人眼能夠察覺(jué)的亮度的變化通常僅僅在原始亮度的1%之下。但通過(guò)實(shí)驗(yàn)表明,將誤差閾值控制在2%也能得到較好的渲染結(jié)果。算法實(shí)現(xiàn)步驟如下。

      (1)構(gòu)建光源樹(shù)

      光源樹(shù)是一棵二叉樹(shù),葉節(jié)點(diǎn)為原始虛擬點(diǎn)光源,內(nèi)部節(jié)點(diǎn)為代表性光源。光源樹(shù)的構(gòu)建需要比較兩個(gè)光源的相似度,相似度的計(jì)算如公式(1)所示:

      對(duì)于點(diǎn)光源常量c恒為0,公式(1)可變?yōu)椋?/p>

      其中Ic為兩個(gè)光源的亮度之和,αc表示兩個(gè)光源軸對(duì)齊包圍盒的對(duì)角線長(zhǎng)度。權(quán)值W越小,則兩個(gè)光源的相似度越高。

      根據(jù)公式(2)光源樹(shù)構(gòu)造的具體步驟為:

      1)選取原始光源中的一個(gè)光源作為起始光源a,遍歷剩余光源,查找與光源a相似度最高,即公式中W最小的光源b。

      2)為光源a與光源b構(gòu)建父節(jié)點(diǎn),在兩個(gè)光源之中隨機(jī)選取一個(gè)光源作為代表性光源。對(duì)于光源a,有Ia/(Ia+Ib)的概率被選中為代表性光源。

      3)將代表性光源加入光源集合中,并在光源集合中刪除光源a和光源b。

      4)重復(fù)步驟1-3,直至光源集合中只剩一個(gè)光源,即所建光源樹(shù)的根節(jié)點(diǎn),至此建樹(shù)完成。

      (2)計(jì)算光照估算值及其上界

      Walter等給出的每個(gè)像素上光照貢獻(xiàn)度計(jì)算公式為(3)所示:

      其中,S為所有原始虛擬點(diǎn)光源的點(diǎn)集,i為其中一個(gè)光源,x為像素上一點(diǎn),ω為視點(diǎn)方向,M為光源i的材質(zhì)因子,G為光源i的幾何因子,V代表光源i的可見(jiàn)性,I表示光源i的亮度。

      為簡(jiǎn)化運(yùn)算,可用光源樹(shù)上代表性光源k的材質(zhì)項(xiàng)、幾何項(xiàng)、可見(jiàn)項(xiàng)來(lái)近似代替所有葉節(jié)點(diǎn)原始光源。則公式(3)變換為:

      其中,C為一簇光源點(diǎn)集,C?S,k為代表性光源。

      Walter給出估算LC(x,ω )上界的方法,如公式(5)所示:

      圖1 

      (3)裁剪光源樹(shù)

      光源樹(shù)裁剪的最終目的是得到一系列可代替原始光源的光源節(jié)點(diǎn)的集合,即一條光源割(lightcut)。由韋伯定律,人眼能感知的亮度變化為原始亮度的1%,而Walter等用實(shí)驗(yàn)證明原始亮度的2%作為誤差閾值就能得到很好的渲染結(jié)果。因此上界與估算值的誤差只要小于原始光源亮度估算值的2%,則估算值便可作為精確值的近似,并且可認(rèn)為是人眼不易察覺(jué)的誤差。

      依據(jù)韋伯定律,光源樹(shù)的裁剪過(guò)程如下:

      1)對(duì)于每個(gè)像素點(diǎn),從光源樹(shù)的根節(jié)點(diǎn)開(kāi)始,將根節(jié)點(diǎn)壓入備選池中,并計(jì)算其上界值Lˉ()x,ω 與估算值L(x,ω)。

      最后剩余在備選池中的點(diǎn)即為對(duì)應(yīng)像素點(diǎn)的一條光源割。對(duì)于每個(gè)像素點(diǎn)都有一條光源割,在渲染時(shí)用這條光源割上的光源取代原始光源進(jìn)行計(jì)算。

      2.3 實(shí)現(xiàn)流程

      本文虛擬點(diǎn)光源的生成和光照計(jì)算都是在GPU上實(shí)現(xiàn)的。為了存儲(chǔ)在計(jì)算著色器(Compute Shader)中計(jì)算得到的虛擬點(diǎn)光源,同時(shí)在CPU與GPU中進(jìn)行數(shù)據(jù)傳遞,在OpenGL4.3版本的支持下,本文采用著色器存儲(chǔ)緩沖區(qū)對(duì)象(Shader Storage Buffer Object,SSBO)作為光源的存儲(chǔ)結(jié)構(gòu)。為增加物體的層次感和深度感,本文對(duì)每個(gè)光源都做了一次陰影映射(Shadow Mapping)以產(chǎn)生直接陰影和間接陰影。

      本文算法主要流程如圖1所示。

      首先在CPU端將場(chǎng)景和原始光源載入,同時(shí)對(duì)場(chǎng)景建立坐標(biāo)軸對(duì)稱(chēng)包圍盒(Axis-Aligned Bounding Box,AABB),該包圍盒用作后續(xù)的光線求交。

      然后在GPU端對(duì)場(chǎng)景先渲染一次,獲得場(chǎng)景的位置、法線和顏色信息,并存在叫做G緩沖(G-Buffer)的紋理中。

      再對(duì)原始光源隨機(jī)選取N個(gè)方向,作為初始光線。跟蹤光線,判斷光線與場(chǎng)景包圍盒是否有交,若光線與場(chǎng)景包圍盒有交點(diǎn),則生成一個(gè)虛擬點(diǎn)光源,且將交點(diǎn)處的位置、法線和漫反射紋理信息賦值給該虛擬點(diǎn)光源,然后把該虛擬點(diǎn)光源存入SSBO中。

      接著在CPU端對(duì)得到的虛擬點(diǎn)光源根據(jù)公式建立光源二叉樹(shù),將該光源二叉樹(shù)轉(zhuǎn)換成二維數(shù)組,存入一張紋理中傳入GPU端。

      最后結(jié)合第一遍渲染管線得到的場(chǎng)景幾何信息,為每個(gè)片元選擇合適的光源割,將光源割用作延遲著色光照計(jì)算。

      3 實(shí)驗(yàn)及分析

      本文實(shí)驗(yàn)采用配置為Intel Core i3 4160的CPU,NVIDIA GeForce GTX 960的顯卡,DDR3 8G的內(nèi)存。在1個(gè)初始光源的康奈爾盒中,產(chǎn)生100個(gè)VPL的渲染效果如圖2所示。

      圖2 

      本文在相同的硬件環(huán)境和場(chǎng)景下,對(duì)使用了Lightcuts算法和未使用Lightcuts算法的進(jìn)行了對(duì)比。實(shí)驗(yàn)場(chǎng)景中初始光源為1個(gè),未使用Lightcuts產(chǎn)生了400個(gè)虛擬點(diǎn)光源,幀率為34fps。而使用Lightcuts裁剪后虛擬點(diǎn)光源數(shù)量變?yōu)?82個(gè),幀率為59fps,渲染效果對(duì)比如圖3所示。

      4 結(jié)語(yǔ)

      立即輻射度算法是一種不需要預(yù)處理的近似全局光照算法,通過(guò)在直接光照照射點(diǎn)上產(chǎn)生虛擬點(diǎn)光源,進(jìn)而模擬出間接光照的效果。因此特別適合用作實(shí)時(shí)全局光照計(jì)算。由于目前大部分基于立即輻射度的算法都是非實(shí)時(shí)渲染,因此本文基于GPU渲染管線的支持,提出了一種實(shí)時(shí)的立即輻射度實(shí)現(xiàn)的方法,并得到較好的渲染效果。

      同時(shí)本文對(duì)走樣現(xiàn)象未作處理,且未考慮復(fù)雜場(chǎng)景,不能滿足大型動(dòng)態(tài)場(chǎng)景的實(shí)時(shí)渲染。另外本文實(shí)驗(yàn)場(chǎng)景都是基于漫反射材質(zhì),因此喪失了鏡面材質(zhì)等的全局光照效果。以上缺陷都是本文接下來(lái)的研究重點(diǎn)。

      參考文獻(xiàn):

      [1]Kajiya J T.The Rendering Equation[J].Acm Siggraph Computer Graphics,1986,20(4):143-150.

      [2]Keller A.Instant radiosity[C].Proceedings of the 24th Annual Conference on Computer Graphics and Interactive Techniques.1997:49-56.

      [3]Segovia B,Iehl J C,Péroche B.Metropolis Instant Radiosity[J].Computer Graphics Forum,2007,26(3):425–434.

      [4]Laine S,Saransaari H,Kontkanen J,et al.Incremental Instant Radiosity for Real-Time Indirect Illumination[C].Eurographics Symposium on Rendering Techniques,Grenoble,France.DBLP,2008:277-286.

      [5]Dong Z,Grosch T,Ritschel T,et al.Real-time Indirect Illumination with Clustered Visibility[J].Proc Vision Modeling&Visualization,2009.

      [6]Walter B,Fernandez S,Arbree A,et al.Lightcuts:A Scalable Approach to Illumination.ACM Transactions on Graphics,2005,24(3):1098-1107.

      [7]Walter B,Arbree A,Bala K,et al.Multidimensional lightcuts[C].ACM SIGGRAPH.ACM,2006:1081-1088.

      [8]Walter B,Khungurn P,Bala K.Bidirectional lightcuts[J].ACM Transactions on Graphics,2012,31(4):1-11.

      猜你喜歡
      點(diǎn)光源交點(diǎn)亮度
      BIM 技術(shù)幕墻結(jié)構(gòu)點(diǎn)光源安裝分析
      基于線性變換球面分布的實(shí)時(shí)間接光澤反射
      夜景工程中點(diǎn)光源陣列媒體立面設(shè)計(jì)研究
      福建建筑(2019年11期)2019-12-23 03:00:12
      閱讀理解
      亮度調(diào)色多面手
      借助函數(shù)圖像討論含參數(shù)方程解的情況
      亮度一樣嗎?
      試析高中數(shù)學(xué)中橢圓與雙曲線交點(diǎn)的問(wèn)題
      基于斬波調(diào)制的LED亮度控制
      人生的亮度
      蓬莱市| 洛阳市| 罗定市| 繁昌县| 贵阳市| 临江市| 珠海市| 桐梓县| 旌德县| 衡水市| 凤山市| 工布江达县| 神木县| 栾川县| 天柱县| 杭锦旗| 南雄市| 交城县| 襄汾县| 故城县| 肥城市| 福鼎市| 屏边| 车致| 遂溪县| 临澧县| 大悟县| 新郑市| 漳浦县| 三亚市| 晴隆县| 余江县| 讷河市| 安国市| 达孜县| 江川县| 离岛区| 白河县| 涡阳县| 黑河市| 怀仁县|