在圖像中生成陰影的方法
2023-09-22 23:43:55
專利名稱:在圖像中生成陰影的方法
技術領域:
本發明涉及一種在圖像中生成陰影的方法。
背景技術:
在圖形呈現中,重要的是在實時基礎上產生逼真的圖像。在實現整體視覺寫實 (visual realism)方面的基本困難在於快速且準確地展示真實世界視覺效果的複雜度。 場景可能包括多種紋理、顏色層次、反射、半透明,並且更具體地可以包括陰影。陰影增強了圖像的真實感(realism),這是因為它們向二維QD)圖像提供了三維的表現。例如,陰影的生成在遊戲環境下是至關重要的,這是因為其必須根據場景中由遊戲用戶引導的運動來實時地生成。過去,已經存在多種不同的方式來確定場景中的對象將如何投射陰影並且在所呈現的圖像中應如何展示這些陰影。在來自F. Crow的在1977年的SIGGRAPH會議錄中發表的題為「Siadow Algorithms for Computer Graphics」的文檔中描述了被稱為陰影錐的公知加陰影方法。在該文檔中,突出陰影投射對象的輪廓以便確定加陰影。儘管該方法提供了高質量的陰影,但是其限於簡單場景並且是計算密集的。在來自L.Williams的在1978年的SIGGRAPH會議錄中發表的題為「Casting curved shadows on curved surfaces」的文檔中描述了更通用的實時陰影生成技術。儘管該方法非常有效並且易於實施,但是其受到由於陰影圖的有限解析度而引起的採樣缺陷的影響大多數時候,單個陰影圖紋理元素在最終圖像的若干個像素中被使用, 產生了若干個混疊偽像。最公知的偽像是最終圖像中陰影塊的出現。典型地,使用來自M. Bunnell 和 F. Pellacini 的在 2004 年的 GPU Gems, Addison Wesley Edition中發表的題為「Siadow Map Antialiasing」的文章中公開的百分比漸進濾波可以降低該偽像,其中,若干個陰影圖紋理元素被用來確定入射到點的光的百分比。已經開發了許多其它方法,通過僅將陰影圖集中在場景的可視部分上,來降低這樣的混疊偽像。 然而,所有這些方法都是依賴於視圖的,並且因此要求對於用戶的每個運動重新生成陰影圖。此外,依賴於用戶位置,陰影圖的質量不恆定。另一偽像是由於距離信息的精度和陰影圖的有限解析度兩者對於彼此非常接近或者在與光方向幾乎正切的表面上的遮擋對象,距離比較可能返回錯誤的值。為了克服該問題,用戶定義的偏置值使距離比較偏移,使得消除錯誤的加陰影。然而,這導致了不希望的陰影偏移。由於相同的偏置值被用於呈現整個場景,「有問題的」對象促使所有其它陰影偏移以便避免偽像。以Snyder的名義於1996年1月27日提交的US 5,870,097提出了一種改進圖形呈現系統中的加陰影的方法。其提出了自動計算用於陰影映射的偏置。然而,在該專利中提出的方法要求複雜的計算,即,從源到兩個最接近表面的距離的計算。
發明內容
本發明提出解決這些缺陷中的至少一項。為此,本發明關注一種在圖像中生成陰影的方法,包括步驟-計算深度圖,該深度圖包括像素陣列,其中,該深度圖中的像素具有深度值,該深度值指示從光源到通過該像素可看到的最接近遮擋對象的部分的深度,-將從虛擬照相機可看到的每個點投影到光空間中,-計算所述可看到的被投影的點和光源之間的距離,-提取深度圖中與從光源到所述可看到的被投影的點的光線相對應的深度值。該方法還包括步驟-對於每個像素,作為預定基本偏置和所述可看到的點所處於的表面的配向 (orientation)的函數,來計算自適應偏置,-對於圖像中的每個像素,將所述可看到的被投影的點和光源之間的距離、以及對應深度圖值與所述自適應偏置之和進行比較,-根據所述比較,將所述像素標記為照亮或加陰影。
優選地,所述自適應偏置依賴於所述表面的法向。根據優選實施例,所述自適應偏置被定義為所述預定基本偏置除以一標量積,該標量積為表面法向與入射光方向的標量積。優選地,所述自適應偏置被限制到最大值。根據第二方面,本發明還關注一種圖形處理單元,其包括用於執行根據前述權利要求中任一項所述的方法的代碼指令。根據第三方面,本發明還關注一種計算圖像的陰影的電腦程式產品,該電腦程式產品包括包含用於執行根據權利要求1到4任一項所述的方法的步驟的電腦程式代碼的計算機可讀介質。根據第二方面,本發明關注一種圖形處理單元,其包括用於執行根據前述權利要求中任一項所述的方法的代碼指令。根據第三方面,本發明關注一種計算圖像的陰影的電腦程式產品,該電腦程式產品包括包含用於執行根據本發明的方法的步驟的電腦程式代碼的計算機可讀介質。
在附圖的幫助下,本發明的其它特徵和優點將通過將說明的本發明非限制性實施例的描述而變得明顯。圖1表示必須為其生成陰影的場景的概圖;圖2表示具有自適應偏置的陰影映射的算法;圖3表示根據本發明的優選實施例的在偏置計算中使用的值;圖4表示表面上的混疊現象;圖5表示根據本發明實施例的實施陰影映射的方法的設備。
具體實施例方式在圖1上,表示了必須為其生成陰影的場景。所提出的方法使得能夠實時地生成陰影。在玩視頻遊戲時,根據由用戶引導的人在場景中的移動,必須實時地生成陰影。因此, 歸功於計算機或計算機的圖形處理板上的圖形處理單元(被已知為首字母縮寫GPU),有利地執行該方法。GPU將運行軟體指令以便運行下文中公開的方法。代碼指令存儲在計算機可讀介質(諸如,存儲器)上。該方法基於以下事實光源和虛擬照相機位於該場景中。圖1示出了一個實施例。虛擬照相機1根據具體視點捕捉場景,其給出代表該場景的圖像10作為結果,必須為該圖像10生成陰影。如圖1所示地定位光源2。球體4位於該場景中,並且代表圖像 10的遮擋對象。圖像10的一些像素與屬於平面表面3的點相關聯,這些像素對應於圖像10 中的以下像素通過所述像素,虛擬照相1可看到平面表面的點。光源2投影光線5,其照亮球體4的一部分。圖像10包括表示如從虛擬照相機1的具體點看上去的三維場景的像素陣列。對於給定光源2,計算深度圖6。深度圖6包括像素陣列,其中,取代具有顏色值,每個像素具有深度值。深度圖中的每個像素具有坐標(xsm,yj。在一個實施例中,參考ζ軸定義深度值,ζ軸是深度圖的法向。在圖2中給出的流程圖基於實時陰影映射算法,但是不限於該方法,本發明可以基於任何基於陰影映射的技術。在縱觀陰影映射方法的情況下,稍後描述的步驟Ε2和Ε7是不同的。在步驟Ε1,歸功於虛擬顯示提供的便利,將照相機定位於光源位置。在步驟Ε2,從位於光源位置處的照相機呈現該場景。圖1上可看到的具有參考標號8的、從該照相機位置至可看到的每個點的距離dsm(xsm,ysm)存儲在陰影圖中。陰影圖是在圖形存儲器中存儲的深度圖紋理。在步驟E3,初始化呈現處理,並且在以下步驟中,照相機位於其原來位置。在步驟E4,用戶定義偏置bb_,其僅僅依賴於場景的規模。例如,值0、1適於其長度單位為米的場景。在步驟E5,選擇最終圖像中的第一像素Pix。將一個接一個地選擇所有像素。在其它實施例中,依賴於處理器能力,可以同時處理若干個像素。在步驟E6,將通過像素Pix可看到的點P投射到光空間。光空間與如從光源2看上去的場景的表示(如在圖像(10)中所表示的)對應。在步驟E7,根據本領域技術人員熟知的任何方法(例如通過使用歐幾裡德 (Euclidean)距離)來計算從P到光源的距離dp。其在圖1上被示出為參考標記9。從光源到點P的該光線在坐標(xsm,ySffl)的像素(11)處與深度圖相交,在步驟E8 從陰影圖中提取至最接近遮擋物的對應距離dsm(xsm,yj。在步驟E9,計算自適應偏置。如圖4所示,在傳統方法中,在表面上存在混疊。混疊偽像傾向於在所呈現的表面與光照方向正切時出現。由於陰影圖的每個像素存儲至在像素中間可看到的點的距離,因此有限的採樣率產生了其中的點被相繼地標記為照亮或加陰影的區域。為了消除偽像,必須提高偏置值。相反,幾乎與光照方向垂直的表面不要求高偏置值。根據本發明實施例,基於每個可看到的點處的表面配向,定義每個像素的偏置自適應函數。給出僅依賴於場景規模的用戶定義的基本偏置值bb_,則根據下式計算用於確定加陰影的實際偏置b:b = bbase/max(e ,-(N-L))其中,『 』是向量標量積運算符,N是表面法向,L是入射光方向,ε是在N變得幾乎垂直於L時防止偏置值變為無窮大的最小值,典型地為0.05。圖3通過示出L和N表示而進行圖示。向量-L和N越接近共線,即向量-L和N 形成的角度窄,自適應偏置b的值越低,S卩,自適應偏置b的值接近基本偏置bb_。實際上, 在這樣的情況下,與像素的特徵(加陰影或照亮)有關的不確定性低,因此深度比較的容限低。向量-L和N越接近垂直,即向量-L和N形成的角度寬,自適應偏置b的值越高,即, 自適應偏置b的值高(例如,高達bbase的值的20倍),並且在這樣的情況下,與像素的特徵 (加陰影或照亮)有關的不確定性高。因此,深度比較的容限高。在步驟E10,執行測試。 表示從光源到點P的距離,Dsm表示從光源到陰影圖的距
1 O如果dp彡dsm+b,則轉到步驟E11,其中與像素Pix相關聯的點P被標記為加陰影的像素。如果dp < dsm+b,則轉到步驟E12,其中與像素Pix相關聯的點P被標記為照亮的像素。然後,進一步前進到步驟E13,其中執行測試以便檢查該像素是否是該場景的最後像素。如果是,則已經處理了整個場景,否則,進一步前進到步驟E15,其中選擇下一像素,並且返回步驟E6等等,直至已經瀏覽了所有像素為止(步驟E14)。當已經將該圖像的所有像素標記為照亮或加陰影時,對這些像素執行圖像處理方法以便分別照亮它們或給它們加陰影。圖5示意性地圖示了被適配於生成圖像中的陰影的設備5的硬體實施例。設備5 與例如個人計算機、膝上型計算機、遊戲控制器或任何圖像處理單元對應。設備5包括通過地址和數據總線55連接在一起的以下元件-微處理器51(或CPU);-圖形卡52,包括〇若干個圖形處理單元520 (GPU);〇圖形隨機存訪問儲器521 ;-非易失性存儲器,諸如ROM(只讀存儲器)56;-RAM (隨機存訪問儲器)57 ;-一個或若干個輸入/輸出(I/O)設備54,諸如例如鍵盤、滑鼠、網絡照相機等;-電源58。設備5還包括顯示設備53,諸如直接與圖形卡52連接的用於例如實時地顯著顯示在圖形卡中計算併合成的圖像的呈現的顯示屏幕。根據變型,顯示設備53在設備5外部。注意,在存儲器52、56和57的描述中使用的詞語「寄存器」在每個所提及的存儲器中指代低容量的存儲器區域(一些二進位數據)、以及大容量的存儲器區域(使得能夠存儲整個程序、或者使得能夠存儲表示所計算的數據或要顯示的數據的數據的全部或部分)。在被上電時,微處理器51加載並運行在RAM 57中包括的算法指令。存儲器RAM 57具體包括-在寄存器570中,在設備5上電時加載的「prog」程序,
-表示要呈現的場景的數據571。實施本發明的方法步驟的算法存儲在與實施這些步驟的設備5相關聯的圖形卡 52的存儲器GRAM 521中。當被上電時並且一旦表示場景的數據571被加載到RAM 57中, 圖形卡的GPU 520將這些數據加載到GRAM 521並且使用例如HLSL( 「高級著色器語言」)、 GLSL ( 「OpenGL著色語言」)語言來執行這些算法的以稱作「著色器(shader) 」型的微程序形式的指令。存儲器GRAM 521具體包括-在寄存器5210中,表示要呈現的場景的數據,-深度圖中包括的深度值5211,-對於一個或若干個點P,可看到的點P和光源2之間的距離dp5212,-為深度圖中與可看到的點P相關聯的像素計算的自適應偏置5213。根據變型,電源在設備5外部。有利地,使用圖形處理板上的圖形處理單元(GPU)計算如在優選實施例中描述的發明。因此,本發明還優選地被實施為軟體代碼指令並存儲在計算機可讀介質(諸如存儲器(快閃記憶體、SDRAM...))上,所述指令被圖形處理單元讀取。已經為了說明和描述的目的而提出了本發明的實施例的前述描述。其不旨在是窮舉的,或者將本發明限制於所公開的精確形式。相關領域技術人員可以理解,依據上面教導,可以有許多修改和改變。因此,旨在本發明的範圍不受該詳細描述的限制,而是由所附權利要求限制。
權利要求
1.一種在圖像處理單元中實施的用於在圖像(10)中生成陰影的方法,包括步驟 計算(E2)深度圖(6),該深度圖包括像素陣列,其中,該深度圖(6)中的像素與對應於深度值(dsm)的單個值相關聯,該深度值指示從光源( 到通過該像素可看到的最接近遮擋對象的部分的深度,將通過所述圖像(10)的像素(Pix)可看到的點⑵投影(E6)到光空間中,所述投影的結果是所述深度圖(6)的像素(11),計算(E7)所述可看到的點⑵和光源(2)之間的距離(dp), 提取(E8)深度圖(6)的所述像素(11)相關聯的深度值(dJ , 其特徵在於,該方法還包括以下步驟對於所述圖像(10)中的所述像素(Pix),作為預定基本偏置(bbaJ以及在所述可看到的點(P)所處於的表面(3)的法向(N)與所述可看到的點(P)處的入射光方向(L)之間的關係的函數,來計算(E9)自適應偏置(b),對於所述圖像(10)中的所述像素(Pix),將所述可看到的點⑵和光源(2)之間的距離(dp)、以及對應深度圖值(dj與所述自適應偏置(b)之和進行比較(ElO),根據所述比較,將通過所述像素(Pix)可看到的所述點(P)標記(Ell,E12)為照亮或加陰影。
2.如權利要求1所述的方法,其特徵在於通過將所述預定基本偏置(bbaJ除以標量積來計算所述自適應偏置(b),該標量積為表面法向(N)與入射光方向(L)的標量積。
3.如前述權利要求任一項所述的方法,其特徵在於所述自適應偏置(b)被限制到最大值。
4.一種圖形處理單元,其包括用於運行用以執行根據前述權利要求中任一項所述的方法的代碼指令的部件。
5.一種存儲了計算機可運行指令的計算機可讀介質,當所述計算機可運行指令在計算機上運行時,執行根據權利要求1到4任一項所述的方法的所有步驟。
全文摘要
本發明關注一種在圖像(10)中生成陰影的方法,包括步驟-計算(E2)深度圖(6),該深度圖包括像素陣列,其中,該深度圖(6)中的像素與對應於深度值(dsm)的單個值相關聯,該深度值指示從光源(2)到通過該像素可看到的最接近遮擋對象(4)的部分的深度,-將通過所述圖像(10)的像素(Pix)可看到的點(P)投影(E6)到光空間中,所述投影的結果是所述深度圖(6)的像素(11),-計算(E7)所述可看到的點(P)和光源(2)之間的距離(dp),-提取(E8)深度圖(6)的所述像素(11)相關聯的深度值(dsm),其特徵在於,該方法還包括以下步驟-對於所述圖像(10)中的所述像素(Pix),作為預定基本偏置(bbase)以及在所述可看到的點(P)所處於的表面(3)的法向(N)與所述可看到的點(P)處的入射光方向(L)之間的關係的函數,來計算(E9)自適應偏置(b),-對於圖像(10)中的所述像素(Pix),將所述可看到的點(P)和光源(2)之間的距離(dp)、以及對應深度圖值(dsm)與所述自適應偏置(b)之和進行比較(E10),-根據所述比較,將通過所述像素(Pix)可看到的所述點(P)標記(E11,E12)為照亮或加陰影。
文檔編號G06T15/60GK102365657SQ201080015184
公開日2012年2月29日 申請日期2010年3月26日 優先權日2009年3月27日
發明者G.布萊恩德, J-E.馬維, P.高特龍 申請人:湯姆森特許公司