欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種陰影渲染方法與流程

文檔序號:12273144閱讀:759來源:國知局

本發(fā)明涉及三維場景渲染技術,特別是涉及一種陰影渲染方法。



背景技術:

目前,在三維場景渲染應用中,為了增加場景渲染的逼真效果,通常都會使用相關實時陰影技術來為場景中的渲染對象渲染陰影。例如,游戲場景的渲染中,為了增強游戲的顯示效果,通常都會使用相關實時陰影技術來為場景中運動的游戲對象渲染陰影。

現(xiàn)有的陰影渲染方案中,通常是在光源位置處先渲染出一張場景的深度圖,然后再在相機處對整個場景進行渲染,并與之前渲染的深度圖進行比較,得到場景的陰影效果。但是對于室內的點光源來說,由于陰影的投射需要朝向光源周圍的所有方向,所以需要將光源周圍的所有深度信息都投射到深度紋理中。針對該情景,一般的做法是創(chuàng)建一個立方體紋理(CubeMap),然后在點光源處朝著點光源的6個方向構建6個投影矩陣,將每個方向上的場景都渲染到CubeMap中對應方向的深度紋理中,以供下一個通道的渲染使用。

上述傳統(tǒng)的陰影渲染方法,對于室內點光源陰影的渲染場景,將光源周圍的深度信息渲染到一個CubeMap上需要使用6張陰影紋理,這樣,就會占用較大顯存空間,影響渲染效率,尤其是在低端機上會產(chǎn)生很多效率問題。



技術實現(xiàn)要素:

有鑒于此,本發(fā)明的主要目的在于提供一種陰影渲染方法,該方法可以提高室內點光源陰影的渲染效率。

為了達到上述目的,本發(fā)明提出的技術方案為:

一種陰影渲染方法,包括:

將六個光源方向分成N組,將所述N組光源方向的深度信息分別渲染到N張陰影紋理中;所述六個光源方向與三維空間坐標軸的六個方向相同;1≤N≤3;

對于待渲染對象的每個像素,根據(jù)該像素所在位置對應的光源方向,確定該像素的深度信息所在的陰影紋理以及在陰影紋理中的位置;根據(jù)所述位置從所確定出的陰影紋理上采樣,得到該像素的深度信息;

根據(jù)所述像素的深度信息,確定所述待渲染對象的陰影并進行相應的渲染。

綜上所述,本發(fā)明提出的陰影渲染方法,通過將多個方向的深度信息渲染到同一張陰影紋理的方式,減少深度紋理的使用數(shù)量,從而可以大幅度減少顯存空間的占用,從而可以在保證渲染效果的前提下,提高室內點光源陰影的渲染效率。

附圖說明

圖1為本發(fā)明實施例的流程示意圖。

具體實施方式

為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖及具體實施例對本發(fā)明作進一步地詳細描述。

本發(fā)明的核心思想是:通過將多個方向的深度信息渲染到同一張陰影紋理的方式,減少深度紋理的使用數(shù)量,在保證渲染效果的前提下,提高室內點光源陰影的渲染效率。

圖1為本發(fā)明實施例的流程示意圖,如圖1所示,該實施例實現(xiàn)的陰影渲染方法主要包括:

步驟101、將六個光源方向分成N組,將所述N組光源方向的深度信息分別渲染到N張陰影紋理中;所述六個光源方向與三維空間坐標軸的六個方向相同;1≤N≤3。

本步驟中,需要將六個光源方向進行分組,然后將N組光源方向的深度信息分別渲染到N張陰影紋理中,也就是將同一組光源方向的深度信息渲染到一張陰影紋理中,不同組光源方向的深度信息渲染到不同的陰影紋理中。如此,通過將多個光源方向的深度信息渲染到一張陰影紋理中,可以減少所使用的陰影紋理的數(shù)量,相應的可以減少顯存空間的開銷,從而可以大幅度提高室內點光源陰影渲染效率,避免傳統(tǒng)方案中需要每個光源方向各使用一張陰影紋理所存在的渲染效率低的問題。

在實際應用中,本領域技術人員可以根據(jù)實際需要來確定光源方向的分組數(shù)N的值。較佳地,可以將光源方向分成2組,即N=2。

較佳地,當N=2時,可以采用四個光源方向組成一組,另兩個光源方向組成另一一組的方式將六個光源方向分成兩組,即從六個光源方向中選擇出四個光源方向,將所選擇出的四個光源方向劃分為一組,將未被選擇的兩個光源方向劃分為另一組。進一步地,基于該分組方式,可以采用下述方法將六個光源方向分成兩組:

對于每個述光源方向,將該光源方向的序號與4相除,將相除結果取整后加1作為該光源方向所在組的序號。

上述方法僅是一用于確定各光源方向所屬組的具體示例,該方法易于實現(xiàn),在實際應用中,并不限于此。

較佳地,可以采用下述方法將所述N組光源方向的深度信息分別渲染到N張陰影紋理中:

步驟x1、對于每組光源方向,根據(jù)陰影紋理的序號與該組光源方向的組序號相同的原則,確定該組光源方向的深度信息需要渲染至的陰影紋理。

步驟x1用于來確定各光源方向的深度信息需要渲染到哪張陰影紋理上,利用本步驟,根據(jù)光源方向所在組的序號確定陰影紋理的序號,可以確保同一組光源方向的深度信息渲染到一張陰影紋理中,不同組光源方向的深度信息渲染到不同的陰影紋理中。

步驟x2、對于每組光源方向,根據(jù)預設的紋理高度TexHeight和紋理寬度TexWidth,按照Pi=OffsetArray[i]*(TexHeight,TexWidth),計算其中每個光源方向的深度信息在需要渲染至的陰影紋理中的位置Pi,并按照所計算出的位置Pi將對應光源方向的深度信息渲染至對應的陰影紋理中。

其中,OffsetArray[i]為光源方向在陰影紋理中對應的紋理坐標偏移量,i=Index%k,%表示求余運算,Index為光源方向的序號,k為一組光源方向中光源方向數(shù)量的最大值。

這里需要說明的是,由于是將一組光源方向的深度信息即多個光源方向的深度信息渲染到一張陰影紋理中,因此,一張陰影需要分成與一組中光源方向數(shù)量相同的若干部分,每個光源方向將對應其中的一部分,用于渲染本光源方向的深度信息。上述OffsetArray[i]為光源方向在陰影紋理中對應的紋理坐標偏移量,即光源方向在陰影紋理中對應部分的坐標偏移量,基于此,即可計算出光源方向的深度信息在需要渲染至的陰影紋理中的位置Pi,從而可以將光源方向的深度信息渲染至對應部分的陰影紋理中。

較佳地,當采用上述將六個光源方向分成2組,并且按照光源方向的序號與4相除取整加1作為光源方向所在組的序號時,可以采用下述方法將所述N組光源方向的深度信息分別渲染到N張陰影紋理中:

步驟b1、按照textureIndex=int(Index/4)+1,確定每個所述光源方向的深度信息需要渲染至的陰影紋理,其中,Index為光源方向的序號,textureIndex為所確定出的陰影紋理的序號,int()為取整函數(shù)。

步驟b2、按照Pi=OffsetArray[i]*(TexHeight,TexWidth),計算其中每個光源方向的深度信息在需要渲染至的陰影紋理中的位置Pi,并按照所計算出的位置Pi將對應光源方向的深度信息渲染至對應的陰影紋理中。

其中,OffsetArray[i]為光源方向在陰影紋理中對應的紋理坐標偏移量,i=Index%4,%為求余運算,Index為光源方向的序號,OffsetArray[0]=(0,0),OffsetArray[1]=(0.5,0),OffsetArray[2]=(0,0.5),OffsetArray[3]=(0.5,0.5)。

步驟102、對于待渲染對象的每個像素,根據(jù)該像素所在位置對應的光源方向,確定該像素的深度信息所在的陰影紋理以及在陰影紋理中的位置;根據(jù)所述位置從所確定出的陰影紋理上采樣,得到該像素的深度信息。

本步驟中,將從步驟101中得到的陰影紋理中,采樣得到待渲染對象的每個像素當前位置對應光源方向的深度信息,以便在步驟103中利用所獲得的各像素的深度信息實現(xiàn)對待渲染對象的陰影的渲染。

這里,對每個像素的深度信息進行采樣時,需要根據(jù)像素所在位置對應的光源方向確定深度信息所在的陰影紋理以及在其中的位置,以便從中采樣得到像素的深度信息。

較佳地,可以采用下述方法確定每個像素的深度信息所在的陰影紋理以及在陰影紋理中的位置:

按照t=int(r/4)+1,確定像素的深度信息所在的陰影紋理,其中,r為像素所在位置對應的光源方向的序號,t為像素的深度信息所在的陰影紋理的序號,int()為取整函數(shù)。

按照Qs=OffsetArray[s]+0.5*(u,v),計算像素的深度信息在陰影紋理中的位置Qs,其中,(u,v)為像素的原始紋理坐標,OffsetArray[s]為光源方向r在陰影紋理中對應的紋理坐標偏移量,s=r%4,%表示求余運算。

步驟103、根據(jù)所述像素的深度信息,確定所述待渲染對象的陰影并進行相應的渲染。

綜上所述,以上僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
池州市| 囊谦县| 汉阴县| 日喀则市| 隆安县| 吉木乃县| 八宿县| 义乌市| 嵊州市| 绥阳县| 汉川市| 申扎县| 敦化市| 简阳市| 六盘水市| 沙坪坝区| 延寿县| 尤溪县| 都昌县| 永顺县| 白水县| 阿拉善盟| 新津县| 肇庆市| 丹凤县| 安远县| 汾阳市| 阿拉尔市| 庆云县| 新龙县| 宜阳县| 普定县| 古交市| 德庆县| 台东市| 习水县| 黄大仙区| 龙门县| 泰宁县| 玉门市| 屏山县|