本公開(kai)涉及(ji)圖形處理器(qi),尤其(qi)涉及(ji)一種陰影生成方(fang)法、圖像渲染方(fang)法、圖形處理器(qi)及(ji)系統。
背景技術:
1、光(guang)(guang)線(xian)追(zhui)蹤(zong)是圖(tu)形(xing)處理器(graphics?processing?unit,gpu)圖(tu)像渲(xuan)(xuan)(xuan)染(ran)過(guo)程中(zhong)的(de)(de)(de)(de)新技術(shu),用(yong)來使(shi)渲(xuan)(xuan)(xuan)染(ran)圖(tu)片產生更加真實的(de)(de)(de)(de)光(guang)(guang)影(ying)(ying)(ying)效(xiao)果,光(guang)(guang)線(xian)追(zhui)蹤(zong)系統可以很(hen)好的(de)(de)(de)(de)完(wan)成陰影(ying)(ying)(ying)的(de)(de)(de)(de)計(ji)算,但整(zheng)個光(guang)(guang)線(xian)追(zhui)蹤(zong)系統需(xu)要大(da)量的(de)(de)(de)(de)硬件和(he)軟(ruan)件資(zi)源(yuan)(yuan),實施(shi)難度和(he)復雜度都(dou)很(hen)大(da)。而(er)在沒有(you)光(guang)(guang)線(xian)追(zhui)蹤(zong)的(de)(de)(de)(de)gpu渲(xuan)(xuan)(xuan)染(ran)管(guan)線(xian)中(zhong),當前(qian)的(de)(de)(de)(de)陰影(ying)(ying)(ying)計(ji)算主要是通(tong)過(guo)將(jiang)視角轉換(huan)到光(guang)(guang)源(yuan)(yuan)方(fang)向(xiang),計(ji)算所(suo)有(you)物體的(de)(de)(de)(de)深度,根(gen)據(ju)深度判斷物體的(de)(de)(de)(de)陰影(ying)(ying)(ying),再將(jiang)視角轉換(huan)回正常渲(xuan)(xuan)(xuan)染(ran)視角。但是這種根(gen)據(ju)深度來計(ji)算每個像素點(dian)陰影(ying)(ying)(ying)的(de)(de)(de)(de),因(yin)此獲(huo)得(de)的(de)(de)(de)(de)陰影(ying)(ying)(ying)都(dou)是硬陰影(ying)(ying)(ying),即(ji)使(shi)對陰影(ying)(ying)(ying)邊緣做濾波,仍(reng)然很(hen)難獲(huo)得(de)真實的(de)(de)(de)(de)軟(ruan)陰影(ying)(ying)(ying)效(xiao)果。即(ji),目前(qian)在不(bu)使(shi)用(yong)大(da)量的(de)(de)(de)(de)硬件和(he)軟(ruan)件資(zi)源(yuan)(yuan)的(de)(de)(de)(de)情況下,很(hen)難獲(huo)得(de)真實的(de)(de)(de)(de)軟(ruan)陰影(ying)(ying)(ying)效(xiao)果。
技術實現思路
1、本公(gong)開(kai)的目的是提(ti)供一種陰影生成方(fang)法(fa)、圖像渲染方(fang)法(fa)、圖形處理(li)器及系(xi)統,解決了現有(you)技(ji)(ji)術(shu)中(zhong)在不使用大量的硬件和軟(ruan)件資源的情況下,很(hen)難獲得(de)真(zhen)實的軟(ruan)陰影效果的技(ji)(ji)術(shu)問題。
2、根據本公開的(de)一個方(fang)面(mian),提供一種(zhong)陰影生(sheng)成方(fang)法,包括:
3、在(zai)待渲(xuan)染圖(tu)像的(de)三維場景中,確(que)定(ding)從待渲(xuan)染圖(tu)像的(de)目標像素點(dian)發出(chu)的(de)初始光(guang)線(xian)(xian),并判斷初始光(guang)線(xian)(xian)是否擊中不透明(ming)(ming)物體(ti),若(ruo)是,則確(que)定(ding)初始光(guang)線(xian)(xian)與(yu)其(qi)擊中的(de)第一(yi)個不透明(ming)(ming)物體(ti)的(de)交點(dian),作為(wei)第一(yi)交點(dian);
4、針對三維場景中的(de)一(yi)(yi)(yi)光(guang)(guang)源(yuan)(yuan)(yuan),判斷以第一(yi)(yi)(yi)交(jiao)點為(wei)起點且指(zhi)向光(guang)(guang)源(yuan)(yuan)(yuan)的(de)陰影(ying)光(guang)(guang)線是否(fou)擊(ji)中不透明物體(ti);若是,則確(que)定陰影(ying)光(guang)(guang)線與其(qi)擊(ji)中的(de)第一(yi)(yi)(yi)個不透明空間物體(ti)的(de)交(jiao)點,作為(wei)第二交(jiao)點,并計算(suan)第一(yi)(yi)(yi)交(jiao)點和第二交(jiao)點的(de)距離,以根據該距離匹配第一(yi)(yi)(yi)交(jiao)點在光(guang)(guang)源(yuan)(yuan)(yuan)下的(de)陰影(ying)強度(du);
5、根(gen)據第一交點在(zai)光源下的(de)陰(yin)影強(qiang)(qiang)度,確(que)定目標像素點的(de)陰(yin)影強(qiang)(qiang)度。
6、在(zai)一些實施(shi)例中,上述基(ji)于陰(yin)影生(sheng)成方法(fa)中,第(di)一交點在(zai)光源下的陰(yin)影強度與第(di)一交點和第(di)二交點的距離負相關(guan)。
7、在(zai)一(yi)些(xie)實施例中,上述基(ji)于(yu)陰影生成方法中,根據第一(yi)交點在(zai)光源下的(de)(de)陰影強(qiang)度,確(que)定(ding)目標像素(su)點的(de)(de)陰影強(qiang)度,包(bao)括以(yi)下步驟(zou):
8、將第一(yi)交點(dian)(dian)在各個光源下的陰影(ying)強度進行疊(die)加(jia),得到目標像素點(dian)(dian)的陰影(ying)強度。
9、在一(yi)(yi)些實施(shi)例中(zhong),上述基于陰影(ying)生(sheng)成方法中(zhong),判斷初(chu)始(shi)光(guang)(guang)線是否(fou)擊(ji)中(zhong)不(bu)透明物(wu)體,若是,則(ze)確定初(chu)始(shi)光(guang)(guang)線與其(qi)擊(ji)中(zhong)的第一(yi)(yi)個不(bu)透明物(wu)體的交點,作為第一(yi)(yi)交點,包括以(yi)下步驟:
10、根據初始(shi)光(guang)(guang)線(xian)(xian)的光(guang)(guang)線(xian)(xian)方程,將(jiang)初始(shi)光(guang)(guang)線(xian)(xian)與三(san)維場景中(zhong)的各(ge)個不(bu)(bu)透明物體(ti)進行相交(jiao)計算,以判斷初始(shi)光(guang)(guang)線(xian)(xian)是(shi)否擊中(zhong)不(bu)(bu)透明物體(ti),若是(shi),則確定初始(shi)光(guang)(guang)線(xian)(xian)與其擊中(zhong)的第一個不(bu)(bu)透明物體(ti)的交(jiao)點及其三(san)維坐標,且(qie)將(jiang)該交(jiao)點作為第一交(jiao)點;
11、針對(dui)三維場景中的一光(guang)源,判(pan)斷(duan)以第(di)(di)一交(jiao)點(dian)為起(qi)點(dian)且指向光(guang)源的陰(yin)影(ying)光(guang)線(xian)是否擊中不透(tou)明物(wu)體;若是,則(ze)確定陰(yin)影(ying)光(guang)線(xian)與其擊中的第(di)(di)一個不透(tou)明空間物(wu)體的交(jiao)點(dian),作(zuo)為第(di)(di)二交(jiao)點(dian),包括(kuo)以下步驟:
12、針(zhen)對三維場景(jing)中的(de)(de)(de)一光(guang)源(yuan),根(gen)據第(di)一交點(dian)的(de)(de)(de)三維坐標和(he)該光(guang)源(yuan)的(de)(de)(de)三維坐標,確定(ding)以第(di)一交點(dian)為(wei)起(qi)點(dian)且指(zhi)向光(guang)源(yuan)的(de)(de)(de)陰影光(guang)線的(de)(de)(de)光(guang)線方程;
13、根據(ju)陰(yin)(yin)(yin)影(ying)光線的(de)(de)(de)光線方程,將陰(yin)(yin)(yin)影(ying)光線與三維(wei)場景中的(de)(de)(de)各個不(bu)透明物體進行相交(jiao)計算,以判斷陰(yin)(yin)(yin)影(ying)光線是否擊中不(bu)透明物體,若是,則確定陰(yin)(yin)(yin)影(ying)光線與其擊中的(de)(de)(de)第(di)一個不(bu)透明空間物體的(de)(de)(de)交(jiao)點及(ji)其三維(wei)坐標,且將該交(jiao)點作為第(di)二交(jiao)點。
14、在一(yi)些實施例中(zhong),上述基于陰影生(sheng)成(cheng)方(fang)法中(zhong),針對三(san)(san)維場景中(zhong)的(de)一(yi)光(guang)(guang)源,根據第一(yi)交(jiao)點(dian)的(de)三(san)(san)維坐標和該光(guang)(guang)源的(de)三(san)(san)維坐標,確(que)定以第一(yi)交(jiao)點(dian)為起(qi)點(dian)且(qie)指(zhi)向光(guang)(guang)源的(de)陰影光(guang)(guang)線(xian)的(de)光(guang)(guang)線(xian)方(fang)程,包(bao)括以下步驟:
15、針對三(san)維場景中的一光源,設以第一交點為(wei)起點且指向(xiang)光源的陰影(ying)光線的光線方程為(wei):x=x1+mt,y=y1+nt,z=z1+pt;
16、其中,(x1,y1,z1)為(wei)第一交點的三維坐(zuo)標,m、n和(he)p分別為(wei)陰影(ying)光(guang)線(xian)在(zai)x軸、y軸和(he)z軸上(shang)(shang)的方(fang)向(xiang)向(xiang)量(liang),t為(wei)光(guang)線(xian)距離,(x,y,z)為(wei)陰影(ying)光(guang)線(xian)上(shang)(shang)光(guang)線(xian)距離為(wei)t的點的三維坐(zuo)標;
17、根據光(guang)源(yuan)的三維(wei)坐標(x0,y0,z0),得到第一(yi)交(jiao)點與光(guang)源(yuan)之間的光(guang)線(xian)距離t為:
18、
19、將光(guang)源的(de)(de)三維坐標(x0,y0,z0),以及(ji)第(di)一交點與(yu)光(guang)源之間的(de)(de)光(guang)線距(ju)離(li)t代入陰影(ying)光(guang)線的(de)(de)光(guang)線方(fang)(fang)程中,得(de)到(dao)陰影(ying)光(guang)線在x軸、y軸和(he)z軸上的(de)(de)方(fang)(fang)向向量m、n和(he)p分別為:m=(x0–x1)/t,n=(y0–y1)/t,p=(z0–z1)/t,從而求解得(de)到(dao)陰影(ying)光(guang)線的(de)(de)光(guang)線方(fang)(fang)程。
20、在一(yi)些實施例中(zhong),上述(shu)基于陰影(ying)(ying)生(sheng)成方法(fa)中(zhong),陰影(ying)(ying)光(guang)(guang)線(xian)(xian)的(de)光(guang)(guang)線(xian)(xian)方程為:x=x1+mt,y=y1+nt,z=z1+pt;其中(zhong),(x1,y1,z1)為第(di)一(yi)交點的(de)三維坐(zuo)標,m、n和p分別為陰影(ying)(ying)光(guang)(guang)線(xian)(xian)在x軸(zhou)、y軸(zhou)和z軸(zhou)上的(de)方向向量,t為光(guang)(guang)線(xian)(xian)距(ju)離,(x,y,z)為陰影(ying)(ying)光(guang)(guang)線(xian)(xian)上光(guang)(guang)線(xian)(xian)距(ju)離為t的(de)點的(de)三維坐(zuo)標;
21、第一交點和第二(er)交點的(de)距離d的(de)計算式為以下任一種:
22、d=∣x2–x1∣/m;
23、d=∣y2–y1∣/n;
24、d=∣z2–z1∣/p;
25、其中,(x1,y1,z1)為所述(shu)第(di)一交點的(de)三(san)維坐標,(x2,y2,z2)為第(di)二交點的(de)三(san)維坐標。
26、在一(yi)些(xie)實(shi)施例(li)中,上(shang)述基于陰影生成方法中,確(que)定初(chu)始光線(xian)與其擊中的第一(yi)個不(bu)透(tou)明物(wu)體的交(jiao)點(dian)及其三維坐標,包括以下(xia)步驟:
27、在(zai)將初(chu)始光線與三(san)維(wei)場(chang)景中的各(ge)個(ge)(ge)不透明(ming)物體進(jin)行相交計算(suan)的過程中,確(que)定初(chu)始光線與相交的各(ge)個(ge)(ge)不透明(ming)物體的交點及其(qi)三(san)維(wei)坐標(biao);
28、根據目(mu)標(biao)(biao)像(xiang)素(su)點(dian)(dian)(dian)(dian)的(de)三維(wei)坐標(biao)(biao),以及初(chu)始光(guang)(guang)(guang)線與相(xiang)交(jiao)(jiao)的(de)各(ge)個不(bu)(bu)透明物(wu)體(ti)的(de)交(jiao)(jiao)點(dian)(dian)(dian)(dian)的(de)三維(wei)坐標(biao)(biao),確定初(chu)始光(guang)(guang)(guang)線與相(xiang)交(jiao)(jiao)的(de)各(ge)個不(bu)(bu)透明物(wu)體(ti)的(de)交(jiao)(jiao)點(dian)(dian)(dian)(dian)中與目(mu)標(biao)(biao)像(xiang)素(su)點(dian)(dian)(dian)(dian)距離最(zui)小的(de)交(jiao)(jiao)點(dian)(dian)(dian)(dian),作為初(chu)始光(guang)(guang)(guang)線與其擊中的(de)第一個不(bu)(bu)透明物(wu)體(ti)的(de)交(jiao)(jiao)點(dian)(dian)(dian)(dian);
29、確(que)定陰影(ying)光線與其(qi)擊中的第一(yi)個不透明(ming)空間物體的交點及其(qi)三(san)維(wei)坐標,包(bao)括以下步驟:
30、在(zai)將陰影(ying)光線與三維場景(jing)中(zhong)(zhong)的(de)各個不(bu)透(tou)明物體進行相(xiang)交(jiao)計算的(de)過程中(zhong)(zhong),確定陰影(ying)光線與相(xiang)交(jiao)的(de)各個不(bu)透(tou)明物體的(de)交(jiao)點(dian)及其三維坐標;
31、根(gen)據第一交(jiao)點的(de)三維(wei)坐(zuo)標,以及陰影光(guang)線與相交(jiao)的(de)各個不(bu)透明(ming)(ming)物(wu)體(ti)的(de)交(jiao)點的(de)三維(wei)坐(zuo)標,確定陰影光(guang)線與相交(jiao)的(de)各個不(bu)透明(ming)(ming)物(wu)體(ti)的(de)交(jiao)點中(zhong)與第一交(jiao)點距離最(zui)小(xiao)的(de)交(jiao)點,作為(wei)陰影光(guang)線與其擊中(zhong)的(de)第一個不(bu)透明(ming)(ming)空(kong)間物(wu)體(ti)的(de)交(jiao)點。
32、在一些(xie)實施例中,上述基(ji)于陰影(ying)生成方法(fa)中,第一交點(dian)和第二(er)交點(dian)的距離d的計算式為:
33、
34、其中(zhong),(x1,y1,z1)為(wei)所述(shu)第一交點的三(san)維坐標,(x2,y2,z2)為(wei)第二交點的三(san)維坐標。
35、在一些實施例中(zhong),上述基(ji)于陰影生成方法(fa)中(zhong),還包括(kuo):
36、對目標像素點的陰(yin)影強(qiang)度進行去噪處理。
37、在一些實施例(li)中,上(shang)述基于陰影(ying)生成方(fang)法中,從待(dai)渲染圖像(xiang)(xiang)的一個(ge)像(xiang)(xiang)素點發出的初始光線的數量小于等(deng)于預設閾值。
38、在一(yi)些實施例中,上述基于陰影(ying)生成方(fang)法中,光(guang)(guang)源(yuan)為點(dian)光(guang)(guang)源(yuan)、線光(guang)(guang)源(yuan)或面光(guang)(guang)源(yuan)。
39、在一些實施例中,上(shang)述基于陰(yin)影(ying)生成(cheng)方法中,以一個第(di)一交點(dian)為(wei)起點(dian)且(qie)指向一光源的(de)陰(yin)影(ying)光線的(de)數量為(wei)1。
40、根據(ju)本(ben)公開的另(ling)一(yi)方(fang)面(mian),提供一(yi)種圖(tu)像渲染方(fang)法(fa),包括(kuo):
41、通過(guo)上(shang)述任一(yi)實施例的(de)陰影生成方法得到待渲染圖像中各個像素點的(de)陰影強(qiang)度;
42、通過渲染管線計算待渲染圖像中各個像素點的(de)(de)顏色;各個像素點的(de)(de)顏色包(bao)括色度和亮度;
43、根據每(mei)個(ge)像素(su)點的陰影(ying)強度,調整(zheng)每(mei)個(ge)像素(su)點的亮度,得(de)到每(mei)個(ge)像素(su)點最(zui)終的顏色。
44、根據本公(gong)開的另一方面(mian),提(ti)供一種圖形處理(li)器,包括:
45、陰(yin)影生成模塊,被配置為實(shi)現上(shang)述任一實(shi)施例(li)的陰(yin)影生成方法,以得到(dao)待(dai)渲(xuan)染圖像中(zhong)各個像素點的陰(yin)影強度(du);
46、渲(xuan)(xuan)染(ran)模(mo)塊,被配置為通過渲(xuan)(xuan)染(ran)管線計算待渲(xuan)(xuan)染(ran)圖(tu)像(xiang)的(de)各個(ge)像(xiang)素(su)點的(de)顏色(se);各個(ge)像(xiang)素(su)點的(de)顏色(se)包括色(se)度和亮度;
47、調(diao)整模塊,被配置為根(gen)據(ju)每(mei)個像素(su)點(dian)的陰影強度,調(diao)整每(mei)個像素(su)點(dian)的亮度,得到每(mei)個像素(su)點(dian)最終的顏色。
48、根據本公開的(de)另一(yi)(yi)方(fang)面,提供一(yi)(yi)種圖形處理系統,包括上述任一(yi)(yi)實施例的(de)圖形處理器(qi)。
49、根據本公開的(de)另一方(fang)面(mian),提供一種電子組件(jian),包(bao)括上述任一實施(shi)例的(de)圖(tu)形處(chu)理(li)系統。
50、根(gen)據(ju)本公開的另一方面(mian),提(ti)供一種電子(zi)設備,包(bao)括上述任(ren)一實施例的電子(zi)組件。