眾包視頻渲染系統(tǒng)的制作方法
【專利摘要】在一個(gè)實(shí)施例中,本發(fā)明的方法包括:通過向每個(gè)客戶端傳輸視口狀態(tài)數(shù)據(jù)對(duì)象和唯一的空間位置而向具有性能好的圖形處理單元的相連客戶端節(jié)點(diǎn)分配渲染任務(wù);在每個(gè)客戶端從其唯一空間位置的起點(diǎn)開始執(zhí)行路徑追蹤;以及將客戶端的渲染輸出傳輸回服務(wù)器。服務(wù)器將由特定客戶端接收的各渲染輸出生成合成的渲染輸出,然后將合成結(jié)果傳輸?shù)剿邢噙B的客戶端進(jìn)行顯示。因此,當(dāng)客戶端節(jié)點(diǎn)的數(shù)量增加時(shí),場(chǎng)景被渲染得更快并且質(zhì)量更高。在特定的實(shí)施例中,渲染輸出為表示場(chǎng)景的漫射照明的光照貼圖,而且每個(gè)客戶端可以從其自己的視口渲染場(chǎng)景的鏡面反射高光。
【專利說明】眾包視頻渲染系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明總的涉及分布式眾包圖形渲染的應(yīng)用,更具體地說是涉及這樣一種服務(wù)器,其利用一個(gè)或多個(gè)相連的客戶端上的圖形處理單元執(zhí)行漫射光渲染,從一個(gè)或多個(gè)相連的客戶端接收渲染場(chǎng)景,由接收的場(chǎng)景生成合成場(chǎng)景,并且將合成場(chǎng)景傳輸給所有相連的客戶端。
【背景技術(shù)】
[0002]客戶-服務(wù)器架構(gòu)一般來說是分布式計(jì)算架構(gòu),該架構(gòu)在服務(wù)器(可以被認(rèn)為是“服務(wù)供應(yīng)商”)和客戶端(可以被認(rèn)為是“服務(wù)需求者”或者“服務(wù)消費(fèi)者”)之間分配任務(wù)或者工作負(fù)荷。服務(wù)器和客戶端常常經(jīng)由計(jì)算機(jī)網(wǎng)絡(luò)而連接,并且各類數(shù)據(jù)可在各個(gè)服務(wù)器和各個(gè)客戶端之間通過計(jì)算機(jī)網(wǎng)絡(luò)雙向傳輸。傳統(tǒng)上,服務(wù)器通常比客戶端具有更多的資源和更好的性能。服務(wù)器可與一個(gè)或多個(gè)客戶端共享它的資源,諸如為客戶端執(zhí)行特定的任務(wù)(即,為客戶端提供服務(wù))。由于服務(wù)器通常比客戶端具有更多的資源,因此服務(wù)器可以比客戶端所能做到的快得多地完成任務(wù),特別是占用資源的任務(wù)。
[0003]在服務(wù)器和客戶端之間所交換的數(shù)據(jù)可使用任何適當(dāng)?shù)臄?shù)據(jù)格式來表示,并使用任何適當(dāng)?shù)耐ㄐ艆f(xié)議來傳輸。例如,當(dāng)在服務(wù)器上為客戶端執(zhí)行應(yīng)用時(shí),應(yīng)用的輸出可使用結(jié)構(gòu)式文件來表示,諸如超文本標(biāo)記語(yǔ)言(HTML)文件或者可擴(kuò)展標(biāo)記語(yǔ)言(XML)文件等。服務(wù)器可通過在服務(wù)器和客戶端之間的超文本傳輸協(xié)議(HTTP)連接將包括表示應(yīng)用輸出的數(shù)據(jù)的HTML或者XML文件傳輸?shù)娇蛻舳恕.?dāng)接收到HTML或者XML文件時(shí),客戶端可以使用該文件,并利用該HTML或者XML文件在諸如在該客戶端上運(yùn)行的網(wǎng)頁(yè)瀏覽器中本地渲染應(yīng)用的輸出。
【發(fā)明內(nèi)容】
[0004]本發(fā)明總的涉及一種眾包圖形渲染系統(tǒng),其在一個(gè)或多個(gè)相連的客戶端之間分配渲染任務(wù),所述客戶端將渲染輸出傳輸回服務(wù)器,該服務(wù)器將客戶端輸出合成為一個(gè)單獨(dú)的、用于向所有相連的客戶端傳輸和顯不的渲染輸出。
[0005]在服務(wù)器端圖形渲染的情況下,單臺(tái)服務(wù)器可以包括一系列圖形處理單元(GPU),以用于渲染圖形對(duì)象并且將輸出傳輸?shù)娇蛻舳恕H欢?,在處理器周期方面,渲染?fù)雜的3D環(huán)境代價(jià)巨大,并且必須增加額外的GPU或者服務(wù)器以向所連接的客戶端充分地提供渲染后的幀或場(chǎng)景。因此,傳統(tǒng)的服務(wù)器端圖形渲染面臨著重大的可擴(kuò)展性問題。為了滿足數(shù)量不斷增長(zhǎng)的客戶端的需求,增加服務(wù)器或者GPU對(duì)于供應(yīng)商來說可能是過于昂貴的;相反,當(dāng)需求降至處理能力以下時(shí),對(duì)服務(wù)器或GPU等基礎(chǔ)設(shè)施的過度投資將導(dǎo)致利用不充分。
[0006]此外,具有能夠快速執(zhí)行較為復(fù)雜的3D渲染的能力的GPU的大眾化設(shè)備的數(shù)量近年來增長(zhǎng)迅猛。例如,在21世紀(jì)初,具備能夠在一分鐘之內(nèi)執(zhí)行3D場(chǎng)景的路徑追蹤的GPU的個(gè)人電腦的數(shù)量可能局限于為數(shù)不多的電腦,而目前超過四千萬臺(tái)個(gè)人電腦擁有附帶這種性能的GPU。因此,希望為這些客戶端GPU融資以謀求將圖形渲染任務(wù)從服務(wù)器轉(zhuǎn)移到客戶端,從而實(shí)施眾包的給定幀或環(huán)境的渲染。
[0007]在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)托管多個(gè)應(yīng)用程序?qū)嵗?,每個(gè)應(yīng)用程序?qū)嵗龑?duì)應(yīng)于一個(gè)遠(yuǎn)程的客戶端應(yīng)用程序。該計(jì)算機(jī)系統(tǒng)保持與托管應(yīng)用程序?qū)嵗拿總€(gè)遠(yuǎn)程客戶端應(yīng)用的網(wǎng)絡(luò)連接。在特定的實(shí)施例中,應(yīng)用程序?qū)嵗秊槿缦滤龅能浖鍢?。在特定的?shí)施例中,計(jì)算機(jī)系統(tǒng)將用于具有足夠強(qiáng)大的GPU的計(jì)算機(jī)的渲染資源傳輸給客戶端應(yīng)用,以有助于進(jìn)行渲染。在特定的實(shí)施例中,如下所述,計(jì)算機(jī)系統(tǒng)以視口狀態(tài)數(shù)據(jù)對(duì)象(VSDO)的形式傳輸渲染資源。在特定的實(shí)施例中,計(jì)算機(jī)系統(tǒng)也向每個(gè)參與眾包渲染處理的客戶端傳輸或者分配一個(gè)唯一的空間位置。在特定的實(shí)施例中,客戶端設(shè)備利用接收的渲染資源和唯一的視點(diǎn)來渲染幀或者環(huán)境。在特定的實(shí)施例中,客戶端設(shè)備執(zhí)行路徑追蹤以渲染一個(gè)場(chǎng)景或者環(huán)境的漫射照明。在完成其被分配的渲染任務(wù)之后,每個(gè)參與的客戶端設(shè)備將其渲染輸出傳輸回計(jì)算機(jī)系統(tǒng)。在特定的實(shí)施例中,渲染輸出為來自特定視點(diǎn)的幀。在特定的實(shí)施例中,渲染輸出為用于環(huán)境的漫射照明的光照貼圖。在特定的實(shí)施例中,渲染輸出為改進(jìn)的VSD0。當(dāng)接收到渲染輸出時(shí),計(jì)算機(jī)系統(tǒng)生成一個(gè)合成的渲染輸出,用于回傳給所有相連的客戶端,甚至是那些沒有參與眾包渲染處理的客戶端。
[0008]在特定的實(shí)施例中,每個(gè)相連的客戶端從完全相同的視點(diǎn)觀察場(chǎng)景,并且計(jì)算機(jī)系統(tǒng)將合成的幀從特定視點(diǎn)傳輸給每個(gè)相連的客戶端以用于顯示。在特定的實(shí)施例中,每個(gè)相連的客戶端從不同的視域觀察場(chǎng)景,并且計(jì)算機(jī)系統(tǒng)為各客戶端傳輸合成的渲染資源,以在其自己的渲染引擎上使用。在特定的實(shí)施例中,渲染資源為光照貼圖或者VSD0,而該VSDO包含表示環(huán)境的漫射照明的光照貼圖數(shù)據(jù)。因此,客戶端可以在保持高品質(zhì)的光能傳遞照明的同時(shí),使用渲染資源從不同的視點(diǎn)渲染場(chǎng)景。在特定的實(shí)施例中,客戶端與接收到的包含用于環(huán)境的眾包漫射照明的渲染資源相結(jié)合地在本地渲染快速變化的鏡面反射照明。因此,隨著具備高性能GPU的客戶端節(jié)點(diǎn)數(shù)量的增加,任何特定的場(chǎng)景都可以更快地或者以更高的圖形質(zhì)量被渲染出來。
[0009]在一個(gè)實(shí)施例中,公開了一種用于生成合成渲染的方法。該方法包括通過處理器將如下所述的信息傳輸給一個(gè)或者多個(gè)客戶端,即,所述信息包括:公共渲染資源;不同于其他被傳輸?shù)目臻g位置的唯一的空間位置;以及一個(gè)或多個(gè)利用公共渲染資源及其唯一的空間位置,或者利用公共渲染資源和被傳輸?shù)揭粋€(gè)或多個(gè)客戶端中的每一個(gè)的相應(yīng)的唯一空間位置生成渲染的指令。在一個(gè)實(shí)施例中,每個(gè)唯一的空間位置隨機(jī)生成。
[0010]在一個(gè)實(shí)施例中,生成渲染的指令包括從唯一的空間位置在渲染資源上執(zhí)行路徑追蹤的指令,其中,渲染的是用于包含渲染資源在內(nèi)的部分或者整個(gè)環(huán)境的光照貼圖。在一個(gè)實(shí)施例中,渲染的是一個(gè)幀,而且一個(gè)或多個(gè)指令進(jìn)一步包括用來渲染該幀的一個(gè)公共視點(diǎn)。在一個(gè)實(shí)施例中,渲染資源為視口狀態(tài)數(shù)據(jù)對(duì)象(VSD0),并且渲染的是由根據(jù)路徑追蹤的結(jié)果計(jì)算出的漫射照明數(shù)據(jù)來增強(qiáng)的渲染資源的集合。
[0011]該方法還包括:通過處理器從一個(gè)或多個(gè)客戶端中的每一個(gè)接收渲染;以及通過處理器由接收到的渲染生成合成的渲染。由此生成的合成渲染被處理器傳輸?shù)揭粋€(gè)或多個(gè)客戶端。在一個(gè)實(shí)施例中,通過處理器生成合成的渲染的過程包括:通過處理器添加接收到的光照貼圖以生成由包含渲染資源在內(nèi)的部分或者整個(gè)環(huán)境構(gòu)成的復(fù)合光照貼圖。在一個(gè)實(shí)施例中,通過處理器生成合成的渲染的過程還包括:添加接收到的幀以生成合成的幀。
[0012]本發(fā)明公開了一種接收合成渲染的方法。該方法包括:通過處理器從服務(wù)器接收渲染資源、唯一的空間位置以及一個(gè)或多個(gè)利用接收到的渲染資源和唯一的空間位置生成渲染的指令。所述方法還包括:通過處理器根據(jù)一個(gè)或多個(gè)指令生成渲染;通過處理器將生成的渲染傳輸給服務(wù)器;以及通過處理器從服務(wù)器接收合成的渲染。在一個(gè)實(shí)施例中,所述方法進(jìn)一步包括:通過處理器從獨(dú)立于服務(wù)器的視點(diǎn)渲染鏡面反射照明;通過處理器將渲染的鏡面反射照明與接收的合成渲染相結(jié)合;以及通過處理器將結(jié)合的渲染的鏡面反射照明和接收的合成渲染輸出給顯示器。
[0013]在一個(gè)實(shí)施例中,公開了一種用于生成合成渲染的系統(tǒng)。該系統(tǒng)包括:圖形處理單元、處理器以及用于有形地存儲(chǔ)由處理器在其上執(zhí)行的程序邏輯的存儲(chǔ)介質(zhì)。在一個(gè)實(shí)施例中,所述程序邏輯包括:公共渲染資源傳輸邏輯,其由處理器執(zhí)行,以將公共渲染資源傳輸?shù)揭粋€(gè)或多個(gè)客戶端;空間位置傳輸邏輯,其由處理器執(zhí)行,用于將不同于其他傳輸?shù)目臻g位置的唯一的空間位置傳輸?shù)揭粋€(gè)或多個(gè)客戶端中的每一個(gè);以及指令傳輸邏輯,其由處理器執(zhí)行,以將一個(gè)或多個(gè)指令傳輸?shù)揭粋€(gè)或多個(gè)客戶端中的每一個(gè),從而利用公共渲染資源及其唯一的空間位置生成渲染。在一個(gè)實(shí)施例中,程序邏輯進(jìn)一步包括:由處理器執(zhí)行的接收邏輯,其用于從一個(gè)或多個(gè)客戶端中的每一個(gè)接收渲染;由處理器執(zhí)行的合成渲染生成邏輯,其用于根據(jù)接收到的渲染生成合成的渲染;以及由處理器執(zhí)行的合成渲染傳輸邏輯,其用于將合成的渲染傳輸給一個(gè)或多個(gè)客戶端。
[0014]在一個(gè)實(shí)施例中,公開了一種用于接收合成的渲染的系統(tǒng)。該系統(tǒng)包括:圖形處理單元、處理器以及用于有形地存儲(chǔ)由處理器在其上運(yùn)行的程序邏輯的存儲(chǔ)介質(zhì)。在一個(gè)實(shí)施例中,所述程序邏輯包括:由處理器執(zhí)行的接收邏輯,其用于從服務(wù)器接收渲染資源、唯一的空間位置以及一個(gè)或多個(gè)有關(guān)利用接收到的渲染資源和唯一的空間位置生成渲染的指令。所述程序邏輯進(jìn)一步包括:由處理器執(zhí)行的渲染生成邏輯,其用于根據(jù)所述的一個(gè)或多個(gè)指令生成渲染;由處理器執(zhí)行的傳輸邏輯,其用于將生成的渲染傳輸給服務(wù)器;以及由處理器執(zhí)行的合成渲染接收邏輯,其用于從服務(wù)器接收合成的渲染。在一個(gè)實(shí)施例中,所述系統(tǒng)還包括:由處理器執(zhí)行的照明渲染邏輯,其用于從獨(dú)立于服務(wù)器的視點(diǎn)渲染鏡面反射照明。所述系統(tǒng)還包括:由處理器執(zhí)行的合并邏輯,其用于使渲染的鏡面反射照明和接收的合成渲染組合;以及由處理器執(zhí)行的輸出邏輯,其用于將合并的渲染鏡面反射照明和接收的合成渲染輸出到顯不器。
[0015]在一個(gè)實(shí)施例中,生成渲染的指令傳輸邏輯還包括從唯一的空間位置在渲染資源上執(zhí)行路徑追蹤的指令,其中,所述渲染是用于包含渲染資源在內(nèi)的部分或者整個(gè)環(huán)境的光照貼圖。在一個(gè)實(shí)施例中,合成渲染生成邏輯還包括添加邏輯,其可添加接收到的光照貼圖以生成包含渲染資源在內(nèi)的部分或者整個(gè)環(huán)境的合成光照貼圖。在一個(gè)實(shí)施例中,合成渲染生成邏輯進(jìn)一步包括由處理器運(yùn)行的添加邏輯,其添加接收到的幀以生成合成的幀。
[0016]通過參考以下的詳細(xì)說明和附圖,本領(lǐng)域的技術(shù)人員將會(huì)明了其特征能夠結(jié)合的上述和其他實(shí)施例。
【專利附圖】
【附圖說明】
[0017]圖1示出了實(shí)現(xiàn)眾包圖形渲染系統(tǒng)的一個(gè)示例性客戶機(jī)-服務(wù)器系統(tǒng)。
[0018]圖2示出了一種從固定的視點(diǎn)將幀的渲染分配給多個(gè)客戶端的方法。
[0019]圖3示出了用于給定場(chǎng)景的示例性的為接收的客戶端幀。[0020]圖3A示出了通過添加圖3所示接收的客戶端幀而生成的合成幀。
[0021]圖4示出了將環(huán)境的渲染分配給多個(gè)客戶端的方法。
[0022]圖5示出了示例性的用于圖4中的客戶端的顯示輸出。
[0023]圖6示出了示例性的網(wǎng)絡(luò)環(huán)境。
[0024]圖7示出了示例性的計(jì)算機(jī)系統(tǒng)。
【具體實(shí)施方式】
[0025]現(xiàn)在參考如附圖中所示的一些實(shí)施例來詳細(xì)描述本發(fā)明。為了更加透徹地理解本發(fā)明,在以下的描述中闡述了許多具體細(xì)節(jié)。但是,本領(lǐng)域技術(shù)人員可以明確的是,在缺少部分或全部這些具體細(xì)節(jié)的情況下也可以實(shí)現(xiàn)本發(fā)明。在其他情況下,為了不會(huì)使本發(fā)明存在不必要的不清楚之處,沒有具體描述公知的處理步驟和/或結(jié)構(gòu)。另外,盡管結(jié)合特定的實(shí)施例對(duì)本發(fā)明進(jìn)行描述,但應(yīng)該理解的是,該描述并不旨在將本發(fā)明限制于所描述的實(shí)施例。相反,該描述旨在覆蓋可包括在由所附權(quán)利要求書限定的本發(fā)明的精神和范圍內(nèi)的替換、改進(jìn)和等同方案。
[0026]可包括多個(gè)裝置、組件、模塊及類似物的系統(tǒng)將具有不同方面或者各種特征。需要明白和認(rèn)知的是,各種系統(tǒng)可以包括額外的設(shè)備、組件、模塊等和/或可以不包括結(jié)合附圖所討論的所有的設(shè)備、組件、模塊等。也可以使用這些方案的結(jié)合。
[0027]客戶機(jī)-服務(wù)器架構(gòu)使服務(wù)器能夠與一個(gè)或多個(gè)客戶端共享其資源。這樣的架構(gòu)具有很多優(yōu)點(diǎn)。例如,由于與客戶端相比服務(wù)器通常具有更多的資源(例如,處理器或者內(nèi)存)和更強(qiáng)大的性能,服務(wù)器能夠比客戶端所能更快地完成任務(wù)。當(dāng)任務(wù)為資源密集型或者當(dāng)客戶端的資源有限時(shí),上述的性能差異將特別顯著。同時(shí),當(dāng)服務(wù)器代表客戶端或者為客戶端執(zhí)行任務(wù)時(shí),客戶端的資源可被釋放以執(zhí)行其他的任務(wù),諸如那些需要在客戶端本地上執(zhí)行的任務(wù)(例如,與客戶端的用戶的交互)。
[0028]一種可適合于在服務(wù)器上執(zhí)行的任務(wù)類型可以是對(duì)由服務(wù)器托管的應(yīng)用進(jìn)行渲染以作為視頻輸出傳輸給客戶端。在計(jì)算機(jī)繪圖方面,渲染可以被認(rèn)為是通常通過計(jì)算機(jī)程序由模型生成圖像的過程。所述模型通常是對(duì)三維(3D)對(duì)象的描述并且能以嚴(yán)格定義的語(yǔ)言或者數(shù)據(jù)結(jié)構(gòu)來表示。模型可以包含幾何形狀、視點(diǎn)、紋理、照明、底紋、動(dòng)作以及其他適當(dāng)?shù)男畔㈩愋?。由模型渲染而成的圖像可以是由像素集合形成的數(shù)字圖像或者光柵圖形圖像。本說明書將渲染的概念擴(kuò)大到生成表示任何應(yīng)用的任何輸出的圖像??梢曰诎ǘS(2D )數(shù)據(jù)以及3D數(shù)據(jù)的任意數(shù)據(jù)執(zhí)行渲染。除了基于3D模型生成圖像之外,特定的實(shí)施例可以渲染表示如下所述應(yīng)用的輸出的圖像,即,所述應(yīng)用諸如(例如并且不限于)網(wǎng)頁(yè)瀏覽應(yīng)用,、文字處理應(yīng)用,電子表格應(yīng)用,多媒體應(yīng)用,科學(xué)和醫(yī)學(xué)應(yīng)用,以及游戲應(yīng)用。
[0029]然而,如上所述,單純的服務(wù)器端圖形渲染架構(gòu)由于額外的服務(wù)器和GPU的成本而規(guī)模較小。另外,為滿足高峰需求而適當(dāng)增添了服務(wù)器/GPU基礎(chǔ)設(shè)施的系統(tǒng)經(jīng)常在非高峰時(shí)段存在嚴(yán)重利用不足的情況,這導(dǎo)致了浪費(fèi)或者服務(wù)器或GPU資源閑置。
[0030]在本領(lǐng)域中眾所周知,可利用點(diǎn)對(duì)點(diǎn)(P2P)架構(gòu)在對(duì)等體之間分配任務(wù)。由于更多的節(jié)點(diǎn)進(jìn)入到網(wǎng)絡(luò)中,對(duì)等網(wǎng)絡(luò)具有增加系統(tǒng)總?cè)萘亢唾Y源的優(yōu)勢(shì)。例如,在BitTorrent網(wǎng)絡(luò)中,共享或者“播種”文件的節(jié)點(diǎn)越多,文件傳輸?shù)秸?qǐng)求文件的其它節(jié)點(diǎn)的速度就越快。對(duì)等網(wǎng)絡(luò)廣泛用于文件共享和流內(nèi)容分發(fā)應(yīng)用,但是由于其分散性本質(zhì),使得它們具有長(zhǎng)的等待時(shí)間,這通常使它們不適合于諸如圖形渲染的實(shí)時(shí)操作。本文提供了一種集中的基于服務(wù)器的服務(wù)器模型,其可將圖形渲染任務(wù)下放到客戶端節(jié)點(diǎn),由此在圖形渲染方面獲得了 P2P架構(gòu)的許多優(yōu)點(diǎn)。
[0031]此外,多GPU渲染的現(xiàn)有方法都規(guī)模較小。傳統(tǒng)上,多GPU系統(tǒng)采用分幀渲染模式(SFR)或交替幀渲染模式(AFR)這兩種方法中的一種。在SFR中,每個(gè)GPU渲染每個(gè)幀的一部分。然而,處理的分配往往是不均勻的,比如在幀的一部分包含復(fù)雜的幾何形狀而另一部分包含相對(duì)簡(jiǎn)單的幾何形狀的情況下。盡管許多分配算法可以考慮各部分的圖形復(fù)雜性,但是隨著GPU數(shù)量的增加,分配算法變得越來越復(fù)雜,并且處理器本身也變得越密集。AFR涉及以輪轉(zhuǎn)方式將完整的幀的渲染分發(fā)給各個(gè)GPU。然而,由于下一幀在這一幀的前一幀之前渲染而增加了延遲,使得這種技術(shù)規(guī)模較小。此外,由于GPU的數(shù)量接近幀率的有效百分率,所以對(duì)于下一個(gè)GPU來說在邏輯上不可能提前知道下一幀的樣子。
[0032]本發(fā)明的一個(gè)實(shí)施例通過采用路徑追蹤來渲染給定3D環(huán)境的漫射照明而解決了多GPU的可擴(kuò)展性問題。路徑追蹤是這樣一種渲染技術(shù),其試圖通過從虛擬攝像機(jī)追蹤經(jīng)過在物體上的數(shù)次反射或者穿過物體的多條光線,盡可能接近地模擬出光線的物理特性。由路徑追蹤所提供的圖像質(zhì)量通常優(yōu)異于利用傳統(tǒng)的渲染方法以非常大的計(jì)算需求為代價(jià)而產(chǎn)生的圖像的質(zhì)量。路徑追蹤自然地模擬很多需要被特別添加到其他方法(光線追蹤或者掃描線渲染)中的效果,例如軟陰影,景深,動(dòng)作模糊處理,焦散效果,環(huán)境光遮擋和間接照明。由于其精確性和無偏特性,在測(cè)試其他渲染算法的質(zhì)量時(shí),路徑追蹤被用于生成參考圖像。然而,由于具有無數(shù)假設(shè)的照明路徑,在渲染場(chǎng)景或者幀會(huì)聚到一個(gè)“完美發(fā)光”的圖像上之前,必須對(duì)數(shù)量相當(dāng)大的采樣進(jìn)行計(jì)算。通過分配路徑追蹤采樣的生成,本發(fā)明的實(shí)施例公開了一種分布式圖形渲染系統(tǒng),其提供了無限的可擴(kuò)展性以及P2P架構(gòu)的優(yōu)點(diǎn);即,參與眾包渲染處理的節(jié)點(diǎn)越多,渲染速度和輸出質(zhì)量就越高,并且不會(huì)有與傳統(tǒng)的與服務(wù)器端圖形渲染相關(guān)聯(lián)的高成本。
[0033]圖1示出了一個(gè)示例性的網(wǎng)絡(luò)環(huán)境,本發(fā)明的特定實(shí)施方式可以在該網(wǎng)絡(luò)環(huán)境中運(yùn)行。如圖1所示,本發(fā)明的特定實(shí)施方式可以在包括視頻傳輸系統(tǒng)(VTS) 20的網(wǎng)絡(luò)環(huán)境中運(yùn)行,所述VTS20被可操作地連接到可以包括因特網(wǎng)的網(wǎng)絡(luò)云60上。網(wǎng)絡(luò)云60通常表示一個(gè)或多個(gè)互聯(lián)的網(wǎng)絡(luò),本文所述的系統(tǒng)和主機(jī)能夠通過該網(wǎng)絡(luò)通信。網(wǎng)絡(luò)云60可以包括封包式廣域網(wǎng)(例如因特網(wǎng))、私有網(wǎng)絡(luò)、無線網(wǎng)絡(luò)、衛(wèi)星網(wǎng)絡(luò)、蜂窩網(wǎng)絡(luò)、尋呼網(wǎng)絡(luò),等等。網(wǎng)絡(luò)云60中的一些網(wǎng)絡(luò)可以是電路交換網(wǎng)絡(luò)。包括網(wǎng)絡(luò)60在內(nèi)的計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境可以是封包式通信環(huán)境,使用TCP/IP協(xié)議(例如)和/或其他合適的協(xié)議,并具有多個(gè)互連的數(shù)字分組傳輸站或路由節(jié)點(diǎn)。通過網(wǎng)絡(luò)服務(wù)提供商或任何其它合適的途徑將客戶端節(jié)點(diǎn)82和84可操作地連接到網(wǎng)絡(luò)環(huán)境上??蛻舳斯?jié)點(diǎn)82和84可以包括個(gè)人電腦或手機(jī),以及其他類型的移動(dòng)設(shè)備,例如手提電腦,個(gè)人數(shù)字助理(PDA),等等??蛻舳斯?jié)點(diǎn)82包括能夠執(zhí)行渲染給定幀或者場(chǎng)景所需的一些或者全部渲染任務(wù)的GPU。客戶端節(jié)點(diǎn)84可以包括低功率設(shè)備,例如PDA、移動(dòng)電話、平板電腦、便攜式游戲系統(tǒng)或類似設(shè)備;可以具有瘦客戶端,并且缺乏足夠的參與眾包渲染系統(tǒng)所需的圖形處理能力。
[0034]視頻傳輸系統(tǒng)20是一個(gè)網(wǎng)絡(luò)可尋址系統(tǒng),其托管一個(gè)或多個(gè)虛擬世界、一個(gè)或多個(gè)視頻或電影,或者可以被渲染以用于顯示在客戶端節(jié)點(diǎn)82和84上的任何3D環(huán)境。視頻傳輸系統(tǒng)20可以包括網(wǎng)站和服務(wù)器功能,在這方面,用戶可以通過計(jì)算機(jī)網(wǎng)絡(luò)請(qǐng)求并獲取指定的網(wǎng)頁(yè)、視頻和其他內(nèi)容。
[0035]在特定的實(shí)施方式中,視頻傳輸系統(tǒng)20包括一個(gè)或多個(gè)物理服務(wù)器22和一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)器24。所述的一個(gè)或多個(gè)物理服務(wù)器22經(jīng)由路由器26可操作地連接到計(jì)算機(jī)網(wǎng)絡(luò)60。一個(gè)或多個(gè)物理服務(wù)器22托管允許用戶瀏覽可用內(nèi)容的功能,例如從客戶端節(jié)點(diǎn)82和84接收請(qǐng)求,以及將響應(yīng)數(shù)據(jù)傳輸給客戶端節(jié)點(diǎn)82和84。從路由器26到網(wǎng)絡(luò)云60的連接應(yīng)具有足夠的帶寬,可同時(shí)支持從多個(gè)客戶端節(jié)點(diǎn)82和84接收渲染輸出,以及將合成的渲染輸出傳輸?shù)娇蛻舳斯?jié)點(diǎn)82和84。視頻傳輸系統(tǒng)20同時(shí)充當(dāng)接收器和播放器,并且路由器26的管道應(yīng)當(dāng)足夠?qū)挻蠡蚓哂懈叩膸?,以支持這種功能。在一種實(shí)施方式中,由一個(gè)或多個(gè)物理服務(wù)器所托管的功能可以包括web或HTTP服務(wù)器、RTSP服務(wù)
m坐坐
[0036]如上所述,物理服務(wù)器22托管有關(guān)支持和運(yùn)行視頻傳輸系統(tǒng)20的功能。在一種實(shí)施方式中,數(shù)據(jù)存儲(chǔ)器24可以存儲(chǔ)諸如數(shù)字內(nèi)容數(shù)據(jù)對(duì)象、用戶信息和其他媒體資源的視頻內(nèi)容。在特定的實(shí)施方式中,內(nèi)容數(shù)據(jù)對(duì)象或內(nèi)容對(duì)象是由通常被存儲(chǔ)或嵌入在數(shù)據(jù)文件或記錄中的數(shù)字信息構(gòu)成的獨(dú)立項(xiàng)目。內(nèi)容對(duì)象可以采取許多形式,包括:文本(例如,ASCI1、SGML、HTML)、圖像(例如,jpeg、tif和gif )、圖形(基于矢量或位圖)、音頻、視頻(例如,mpeg)、或其它多媒體,以及它們的組合。內(nèi)容對(duì)象數(shù)據(jù)也可以包括可執(zhí)行的代碼對(duì)象,對(duì)象或資源的定義等。在結(jié)構(gòu)上,內(nèi)容數(shù)據(jù)存儲(chǔ)器24暗含包括許多數(shù)據(jù)存儲(chǔ)和管理系統(tǒng)。在特定的實(shí)施方式中,內(nèi)容數(shù)據(jù)存儲(chǔ)器24可通過包括諸如數(shù)據(jù)庫(kù)服務(wù)器、海量存儲(chǔ)介質(zhì)、媒體庫(kù)系統(tǒng)的組件或類似物的任何合適的物理系統(tǒng)來實(shí)現(xiàn)。
[0037]在特定的實(shí)施例中,眾包渲染系統(tǒng)是通過軟件程序來實(shí)現(xiàn)的。在特定的實(shí)施例中,軟件程序(以下稱之為“軟件插樁”或簡(jiǎn)稱為“插樁”)可以安裝在客戶端節(jié)點(diǎn)82和84上并在其上運(yùn)行。在特定的實(shí)施例中,所述插樁可以在網(wǎng)絡(luò)節(jié)點(diǎn)82、84和視頻傳輸系統(tǒng)20之間建立網(wǎng)絡(luò)連接,并且通過網(wǎng)絡(luò)連接將計(jì)算機(jī)軟件程序從視頻傳輸系統(tǒng)20下載到客戶端節(jié)點(diǎn)82和84。在特定的實(shí)施例中,從視頻傳輸系統(tǒng)20下載到客戶端節(jié)點(diǎn)82/84的一款軟件的可執(zhí)行代碼可以嵌入在通過網(wǎng)絡(luò)連接從VTS20向客戶端節(jié)點(diǎn)82/84發(fā)送的數(shù)據(jù)流中。當(dāng)接收到數(shù)據(jù)流時(shí),所述插樁可以提取該款軟件的可執(zhí)行代碼,并且將其直接加載到客戶端82/84的隨機(jī)存取存儲(chǔ)器(RAM)中,以便在客戶端上執(zhí)行。這款軟件不會(huì)被保存或安裝到客戶端的任何永久性存儲(chǔ)器(例如,硬盤驅(qū)動(dòng)器)上。一旦該款軟件完成其在客戶端82/84上的運(yùn)行,其中裝載該款軟件的可執(zhí)行代碼的RAM空間就被釋放出來,而且該款軟件不再存在于客戶端82/84上的任何位置。在特定的實(shí)施例中,插樁程序在能夠加入眾包圖形渲染系統(tǒng)的客戶端節(jié)點(diǎn)82上安裝渲染引擎或應(yīng)用,并且在缺乏參與眾包渲染的必要處理能力的客戶端節(jié)點(diǎn)84上僅安裝瀏覽器應(yīng)用。
[0038]在特定的實(shí)施例中,插樁可以是保存或安裝在客戶端82/84上的可獨(dú)立應(yīng)用的軟件程序或安裝在客戶端82/84上的網(wǎng)頁(yè)瀏覽器中的插件式程序或外掛軟件。所述插樁可以利用任何合適的現(xiàn)有方法保存或安裝在客戶端82/84上,以用于將計(jì)算機(jī)軟件程序分配給各個(gè)計(jì)算機(jī)系統(tǒng)(例如CD、DVD、網(wǎng)絡(luò)下載等)。在特定的實(shí)施例中,所述插樁可以是一款瘦身軟件(即,規(guī)模較小),由此其不會(huì)占用太多客戶端節(jié)點(diǎn)82/84的存儲(chǔ)容量。如果所述插樁是一個(gè)可獨(dú)立應(yīng)用的軟件程序,則其可以獨(dú)自運(yùn)行,或者如果它是插件式程序或外掛程序,則其可通過網(wǎng)頁(yè)瀏覽器來運(yùn)行。[0039]通過使用插樁在客戶端82/84上下載并啟動(dòng)計(jì)算機(jī)軟件程序,只有插樁本身需要被永久保存或安裝在客戶端82/84上。其他款的軟件可以被下載到客戶端82/84上并在客戶端82/84上啟動(dòng),而無須將其保存或安裝在客戶端82/84上,這可以減少對(duì)客戶端82/84的存儲(chǔ)容量的使用。此外,由于一款軟件是在執(zhí)行之前才被下載到客戶端節(jié)點(diǎn)82/84之一上,所以每次該款軟件被下載和啟動(dòng)時(shí),特定的實(shí)施例有利于提供最新(或任何所需的)的軟件版本。
[0040]關(guān)于軟件插樁的詳細(xì)介紹,請(qǐng)參閱共同持有的美國(guó)發(fā)明專利申請(qǐng),美國(guó)專利申請(qǐng)N0.12/624,133,其發(fā)明名稱為“基于流的軟件應(yīng)用傳遞和啟動(dòng)系統(tǒng),申請(qǐng)日為2009年11月23日,該文件在此被全部引入作為參考。
[0041]雖然圖1描述了一種集中式客戶機(jī)-服務(wù)器架構(gòu),但是本發(fā)明也考慮了任何用于在多個(gè)客戶端節(jié)點(diǎn)之間進(jìn)行通信的網(wǎng)絡(luò)拓?fù)浞绞健T谔囟ǖ膶?shí)施例中,客戶端節(jié)點(diǎn)可被設(shè)置為一個(gè)對(duì)等網(wǎng)絡(luò),其中,一個(gè)特定的節(jié)點(diǎn)被指定為中央節(jié)點(diǎn)并且基本上執(zhí)行與VTS20相同的功能。在特定的實(shí)施例中,可以采用一種環(huán)形拓?fù)浣Y(jié)構(gòu),并且可以將一個(gè)特定的對(duì)等體指定為運(yùn)行與VTS20基本相同的功能的環(huán)形引導(dǎo)。本發(fā)明考慮了任何合適的用于將圖形處理分配給對(duì)等節(jié)點(diǎn)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),包括但不限于總線、星形、網(wǎng)狀和樹狀網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。
[0042]圖2顯示出了每個(gè)客戶端從相同的視點(diǎn)對(duì)單個(gè)幀進(jìn)行眾包渲染的方法的一個(gè)例子。例如,可以采用圖2所示的方法,其中,相連的客戶端節(jié)點(diǎn)82和84均在觀看同一部電影或視頻,比如像玩具總動(dòng)員3這樣的計(jì)算機(jī)生成的電影。由VTS20所執(zhí)行的動(dòng)作在圖2的左手邊示出,參與節(jié)點(diǎn)82的動(dòng)作在右上半邊中示出,并且所有客戶端節(jié)點(diǎn)82和84的動(dòng)作在右下半邊中示出。
[0043]在步驟201中,VTS20訪問渲染一個(gè)幀所需的渲染資源。在特定的實(shí)施例中,渲染資源可以被存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器24中并隨后從其中取出。在特定的實(shí)施例中,渲染資源可以由VTS20動(dòng)態(tài)地生成。在特定的實(shí)施例中,渲染資源可以是給定的環(huán)境、場(chǎng)景或幀中的真實(shí)的3D線框模型。但是,這種方法是帶寬密集型的,并且沒有利用3D對(duì)象的壓縮。在特定的對(duì)象中,渲染資源為來自攝像機(jī)視點(diǎn)的立方體貼圖。在特定的實(shí)施例中,渲染資源包括被稱為VSDO的分層立方體貼圖,其可以用像素或片段著色器渲染成用于給定幀的像素值。
[0044]立方體貼圖基本上是拼接成一個(gè)立方體的六個(gè)紋理貼圖。每個(gè)紋理貼圖包括紋素,其為場(chǎng)景相對(duì)于公共參考點(diǎn)的像素信息。可以通過使用立方體的面作為窗口矩形而從公共參考點(diǎn)渲染場(chǎng)景的方式來生成在立方體表面上的紋理貼圖。每一紋素可包含材料特性(折射率,顏色等)、與參考點(diǎn)的距離和表面法線向量??梢岳蒙疃葎冸x來獲得表示一個(gè)場(chǎng)景的一組分層紋理貼圖??梢韵拗苿冸x經(jīng)過的數(shù)量,以控制層的數(shù)目。VSDO可以以即時(shí)或存儲(chǔ)的方式在渲染設(shè)備上初始生成,以用于后續(xù)的響應(yīng)對(duì)視頻的請(qǐng)求而進(jìn)行的傳輸。渲染設(shè)備能夠利用立方體貼圖和多個(gè)經(jīng)過深度剝離或一些其它合適處理的渲染目標(biāo)在GPU上有效地生成VSDO。
[0045]分層紋素陣列(由場(chǎng)景的深度排序的層組成)的每個(gè)紋素在紋素的深度剝離層內(nèi)存儲(chǔ)了有關(guān)在參考點(diǎn)和最遠(yuǎn)對(duì)象點(diǎn)之間的所有對(duì)象點(diǎn)的信息。為了對(duì)應(yīng)于分層立方體貼圖地生成場(chǎng)景的渲染表現(xiàn),圖形處理單元可以從公共原點(diǎn)追蹤光線,以確定原點(diǎn)和場(chǎng)景中的對(duì)象之間的距離,利用片段著色器單元來計(jì)算從原點(diǎn)可見的點(diǎn)的輻亮度。渲染處理通常涉及光柵化場(chǎng)景幾何形狀和找出光線通過像素的第一命中點(diǎn)。關(guān)于VSDO和VSDO渲染的詳細(xì)介紹,請(qǐng)參見共同持有的美國(guó)發(fā)明專利申請(qǐng),美國(guó)專利申請(qǐng)N0.12/484,462,其發(fā)明名稱為“用于視頻壓縮的渲染資源的再利用”,申請(qǐng)日為2009年6月15日,該文在此被全部引入以作為參考。
[0046]在步驟202中,VTS20將渲染資源(在這個(gè)例子中,為場(chǎng)景或環(huán)境的VSD0)傳輸給任何具有能夠參與眾包渲染處理的GPU的客戶端節(jié)點(diǎn)82。在特定的實(shí)施例中,只有給定場(chǎng)景的第一幀需要將被傳輸給客戶端的VSD0,并且隨后的幀僅需要描述攝像機(jī)或各個(gè)對(duì)象如何變化的繪制指令。在特定的實(shí)施例中,一個(gè)特定場(chǎng)景的靜態(tài)元素可以作為一個(gè)VSDO被傳輸,而場(chǎng)景的動(dòng)態(tài)元素作為單獨(dú)的VSDO被傳輸。因此,即使在切換活躍的場(chǎng)景中,也只需要更新或傳輸動(dòng)態(tài)的VSD0。本發(fā)明預(yù)料到壓縮視頻數(shù)據(jù)或者通過對(duì)先前發(fā)送的VSDO再利用來節(jié)省帶寬的任何合適的方式。
[0047]VTS20也將唯一的空間位置傳輸給每個(gè)參與眾包渲染處理的客戶端節(jié)點(diǎn)82。唯一的空間位置代表用于路徑追蹤的虛擬眼睛或鏡頭的位置;每個(gè)客戶端節(jié)點(diǎn)82追蹤一個(gè)從其唯一的空間位置往回的假想光線,直到它碰到光源(可能永遠(yuǎn)不會(huì))。在特定的實(shí)施例中,被分配給每個(gè)客戶端節(jié)點(diǎn)82的唯一的空間位置是由VTS20隨機(jī)分配的。在特定的實(shí)施例中,唯一的位置并不基于試圖識(shí)別具有高命中光源概率的光線的路徑追蹤算法。在特定的實(shí)施例中,路徑追蹤算法稍微修正先前追蹤成功的路徑。在特定的實(shí)施例中,選擇唯一空間位置的路徑追蹤算法是蒙特卡羅、Kajiya或Metropolis-Hastings (如在Metropolis光傳輸中所描述的)算法。本發(fā)明考慮了任何合適的路徑追蹤算法或?qū)⑽ㄒ坏目臻g位置分配到參與眾包渲染處理的客戶端節(jié)點(diǎn)的方法。
[0048]在步驟203中,客戶端節(jié)點(diǎn)82從唯一的空間位置在接收到的渲染資源上執(zhí)行路徑追蹤。如前所述,渲染資源可以是一個(gè)或多個(gè)VSD0,針對(duì)先前發(fā)送的VSDO的變換指令或繪制指令,或者這兩者的任意組合。在特定的實(shí)施例中,客戶端節(jié)點(diǎn)82執(zhí)行雙向路徑追蹤。本發(fā)明預(yù)料到獲得路徑追蹤樣品的任何合適的方式。作為該路徑追蹤操作的結(jié)果,客戶端設(shè)備82生成粗略估計(jì)幀的漫射照明的樣本幀。即使對(duì)場(chǎng)景照明的估計(jì)較差并且具有很強(qiáng)的噪聲,客戶端節(jié)點(diǎn)82也能夠相對(duì)較快地生成這些樣本幀。
[0049]在步驟204中,參與眾包渲染處理的每個(gè)客戶端節(jié)點(diǎn)82將其渲染的幀傳輸回VTS20。在特定的實(shí)施例中,照明數(shù)據(jù)可以被添加到VSDO中,并且客戶端節(jié)點(diǎn)82可以傳輸回被照明數(shù)據(jù)增強(qiáng)的VSD0。在特定的實(shí)施例中,只有光照貼圖,或包括映射到VSDO上的照明信息的紋理被傳輸回VTS20。本發(fā)明預(yù)料到帶寬優(yōu)化或視頻壓縮的任何合適的方式。
[0050]在步驟205中,VTS20根據(jù)接收到的幀生成合成幀。由于光的相加性,VTS20可以通過將所有接收到的幀加到一起并且除以接收到的幀的數(shù)目的方式而快速地生成合成幀。在特定的實(shí)施例中,VTS20采用大的浮點(diǎn)緩沖器來存儲(chǔ)累加的結(jié)果。在特定的實(shí)施例中,VTS20由接收到的光照貼圖生成一個(gè)合成的光照貼圖,并且將合成的貼圖映射到VSDO上。本發(fā)明預(yù)料到生成合成幀的任何合適的方式。所述合成幀應(yīng)當(dāng)根據(jù)場(chǎng)景的復(fù)雜性和樣本的數(shù)目匯聚成完美的輻射度照明。例如,生成8個(gè)獨(dú)立樣本的8個(gè)客戶端節(jié)點(diǎn)可以產(chǎn)生相當(dāng)不錯(cuò)的幀的表示,64個(gè)將產(chǎn)生超低噪聲的合成幀,而1000個(gè)樣本可以產(chǎn)生具有完美的漫射照明的幀。
[0051]在步驟206中,VTS20將合成幀傳輸?shù)接^看視頻流的每個(gè)客戶端節(jié)點(diǎn)(包括參與節(jié)點(diǎn)82和未參與節(jié)點(diǎn)84),并且在步驟207中,各個(gè)客戶端節(jié)點(diǎn)82/84將接收到的合成幀顯示在其顯示器上。在步驟208,處理結(jié)束,VTS傳輸渲染資源、變換和繪制指令,或這兩者的結(jié)合,用于視頻序列中的下一幀。
[0052]圖3顯示出由客戶端節(jié)點(diǎn)82接收到的渲染幀的一個(gè)例子。每一幀301-320表示來自單個(gè)客戶端節(jié)點(diǎn)82的輸出,其通過從針對(duì)給定場(chǎng)景的唯一的空間位置執(zhí)行路徑追蹤而獲得。幀301-320的清晰度不等;例如,幀301和302描繪非常少的有關(guān)場(chǎng)景中的對(duì)象的細(xì)節(jié),而幀320為觀看者提供了一個(gè)相當(dāng)好的、但有噪音的場(chǎng)景表現(xiàn)。圖3A示出了通過添加幀301-320而生成的合成幀321的一個(gè)例子。雖然還是有些噪音,但是合成幀提供了場(chǎng)景的清晰畫面,并含有高度精確的漫射照明,包括柔和反射、陰影、投影膠片和焦散。圖3和圖3A描繪了光的相加性以及可通過組合由路徑追蹤生成的20幀而獲得的畫面質(zhì)量的表現(xiàn)。因此,本發(fā)明類似于對(duì)等文件共享;比如在BitTorrent中“播種”;參與的客戶端節(jié)點(diǎn)82的數(shù)目越大,渲染速度就越快,而且傳遞到請(qǐng)求輸出的所有節(jié)點(diǎn)的渲染輸出的質(zhì)量也越高。例如,在特定的實(shí)施例中,當(dāng)場(chǎng)景的將被合成的樣本的所需數(shù)目超過了參與節(jié)點(diǎn)的數(shù)目時(shí),中央服務(wù)器或參與節(jié)點(diǎn)必須執(zhí)行多個(gè)渲染,由此增加了總的渲染時(shí)間。隨著越來越多的擁有兼容GPU的客戶端節(jié)點(diǎn)“播種”場(chǎng)景,渲染速度得到提高。
[0053]圖4用于說明根據(jù)本發(fā)明的一個(gè)實(shí)施例的一種將環(huán)境渲染分配給多個(gè)客戶端的示例性方法。在特定的實(shí)施例中,VTS20的多個(gè)用戶可利用交互程序,其中,每個(gè)客戶端節(jié)點(diǎn)82/84的顯示并不被鎖定到一個(gè)特定的攝像機(jī)視點(diǎn)。例如,多個(gè)用戶可以使用諸如Maya或3D Studio Max這樣的計(jì)算機(jī)輔助設(shè)計(jì)(CAD)程序從各種不同的角度獨(dú)立觀察一個(gè)特定的環(huán)境。另一個(gè)例子是,一些客戶端節(jié)點(diǎn)可以與在同一環(huán)境中互動(dòng)的多個(gè)用戶玩視頻游戲。例如,在魔獸世界中,多個(gè)用戶可以通過處理能力不同的設(shè)備全部處在一個(gè)特定的房間。
[0054]圖5示出了這種情形的一個(gè)例子。在圖5中,3D環(huán)境500包括數(shù)個(gè)光源503和反射池504。當(dāng)渲染時(shí),反射池504可以同時(shí)包含漫射照明和鏡面反射照明。兩個(gè)用戶控制的人物501和502處在環(huán)境500中。每個(gè)用戶都有一個(gè)特定的攝像機(jī)視野和視口 501a和502a。鏡面反射照明,包括來自于光源503的在環(huán)境500中的反射,需要同時(shí)得知光線的路徑和每個(gè)用戶的視口 501a和502a。因此,特別是在快速、實(shí)時(shí)的應(yīng)用諸如動(dòng)作游戲或第一人稱射擊游戲中,漫射照明與鏡面反射照明相比是移動(dòng)比較緩慢和靜止的。對(duì)這個(gè)例子來說,用戶501正在使用一種能夠參與眾包渲染處理的設(shè)備(客戶端節(jié)點(diǎn)82),諸如具有強(qiáng)大GPU的個(gè)人電腦或者聯(lián)網(wǎng)的游戲機(jī),而用戶502正在使用一種缺乏執(zhí)行渲染、甚至其本身的鏡面反射照明的圖形處理能力的瘦客戶端設(shè)備,諸如移動(dòng)電話或平板電腦。
[0055]回到圖4,在步驟401中,VTS20生成或訪問特定環(huán)境500的VSDO。VTS20可響應(yīng)于來自在客戶端節(jié)點(diǎn)82和84上運(yùn)行的軟件插樁的請(qǐng)求而生成VSD0。例如,當(dāng)客戶端節(jié)點(diǎn)82/84的用戶啟動(dòng)游戲應(yīng)用程序或發(fā)送命令到VTS,表明他們的玩家正移動(dòng)到一個(gè)特定的環(huán)境或沿一個(gè)特定的方向察看時(shí),VTS20在用戶的人物周圍的環(huán)境中為目標(biāo)動(dòng)態(tài)地生成VSDO0
[0056]在步驟402中,VTS20將VSDO和唯一的空間位置傳輸給每個(gè)參與的客戶端節(jié)點(diǎn)82。在特定的實(shí)施例中,僅當(dāng)客戶端的用戶進(jìn)入新的環(huán)境時(shí),VTS20才會(huì)傳輸VSD0。此外,在步驟402中,VTS20將唯一位置指示器傳輸給參與的客戶端節(jié)點(diǎn)82。這種唯一位置指示器獨(dú)立于客戶端節(jié)點(diǎn)82所代表的用戶的視口 501a,但卻是一個(gè)很隨機(jī)的點(diǎn),從該點(diǎn)開始用于漫射照明的計(jì)算的路徑追蹤。在特定的實(shí)施例中,分配給每個(gè)客戶端節(jié)點(diǎn)82的唯一的空間位置是由VTS20隨機(jī)分配的。在特定的實(shí)施例中,唯一位置并不基于試圖識(shí)別具有高光源命中概率的光線的路徑追蹤算法。在特定的實(shí)施例中,路徑追蹤算法稍微修正先前追蹤成功的路徑。在特定的實(shí)施例中,選擇唯一的空間位置的路徑追蹤算法是蒙特卡羅算法、Kajiya算法或Metropolis-Hastings (如在Metropolis光傳輸中描述的)算法。本發(fā)明可適用任何合適的路徑追蹤算法或?qū)⑽ㄒ坏目臻g位置分配給參與眾包渲染處理的客戶端節(jié)點(diǎn)的方法。
[0057]在步驟403中,客戶端節(jié)點(diǎn)82執(zhí)行路徑追蹤以生成用于環(huán)境500的光照貼圖。光照貼圖僅僅是包含可以被映射或換膚(skin)到VSDO上的環(huán)境照明的或漫射照明數(shù)據(jù)的紋理。當(dāng)光照貼圖被映射到VSDO并且該VSDO通過渲染引擎被渲染時(shí),場(chǎng)景或環(huán)境向用戶準(zhǔn)確地顯現(xiàn)出發(fā)亮。在特定的實(shí)施例中,光照貼圖僅僅是VSDO的一個(gè)附加層。在特定的實(shí)施例中,光照貼圖可以與VSDO分開發(fā)送。在特定的實(shí)施例中,光照貼圖可以使用2D壓縮算法(諸如JPG或離散余弦轉(zhuǎn)換(DCT))進(jìn)行壓縮。
[0058]在步驟404中,每個(gè)參與的客戶端節(jié)點(diǎn)82將其光照貼圖傳輸給VTS20。在特定的實(shí)施例中,每個(gè)客戶端節(jié)點(diǎn)82傳輸回一個(gè)增強(qiáng)VSD0。在特定的實(shí)施例中,每個(gè)客戶端節(jié)點(diǎn)82在傳輸之前壓縮其生成的光照貼圖。本發(fā)明考慮了將渲染后的漫射照明信息反饋給VTS20的任何合適的方式。
[0059]在步驟405中,VTS20基于接收到的來自客戶端節(jié)點(diǎn)82的光照貼圖生成合成的光照貼圖。光的相加特性正如其對(duì)各個(gè)幀所做的那樣同樣適用于光照貼圖。在特定的實(shí)施例中,VTS20通過將所有接收到的光照貼圖的累加結(jié)果存儲(chǔ)在一個(gè)大的浮點(diǎn)緩沖器上,并且用該結(jié)果除以接收到的光照貼圖的數(shù)目,來生成合成的光照貼圖。在特定的實(shí)施例中,在已經(jīng)達(dá)到接收的光照貼圖的時(shí)間或數(shù)量的閾值之后,VTS自動(dòng)地生成合成的光照貼圖。由于在超過一定閾值之后每個(gè)客戶端節(jié)點(diǎn)的光照貼圖僅在一定程度上提高漫射照明的質(zhì)量,因此VTS20可以選擇在不等待因延遲而遲到的客戶端光照貼圖的情況下生成合成的光照貼圖。在特定的實(shí)施例中,為了每次刷新都能獲得最高質(zhì)量的光照貼圖,VTS20在生成合成的光照貼圖之前會(huì)一直等待,直到接收到每一個(gè)客戶端節(jié)點(diǎn)的光照貼圖。由于漫射照明與視點(diǎn)無關(guān)并且不隨環(huán)境而快速變化(假設(shè)光源不動(dòng)),平移改變其視點(diǎn)的用戶不太可能注意到刷新環(huán)境的漫射照明時(shí)的延遲,而渲染直接關(guān)系到用戶視點(diǎn)的鏡面反射照明時(shí)的延遲則是引人注意的。
[0060]在步驟406中,VTS20將合成的光照貼圖傳輸回參與的客戶端節(jié)點(diǎn)82。在特定的實(shí)施例中,VTS20傳輸回一個(gè)或多個(gè)由包含合成光照貼圖的層所增強(qiáng)的環(huán)境500的VSD0。在特定的實(shí)施例中,VTS20僅傳輸合成光照貼圖。在特定的實(shí)施例中,合成光照貼圖可以使用2D壓縮技術(shù)進(jìn)行壓縮。在特定的實(shí)施例中,VTS20只傳輸發(fā)送至客戶端節(jié)點(diǎn)82的同一VSDO的上一光照貼圖和合成光照貼圖之間的變化。本發(fā)明考慮了在將漫射照明數(shù)據(jù)傳輸給客戶端節(jié)點(diǎn)82時(shí)可節(jié)約帶寬的任何合適的方法。
[0061]在步驟407中,參與的客戶節(jié)點(diǎn)82基于它們自己的視點(diǎn)(如視點(diǎn)501a)渲染環(huán)境的鏡面反射照明。由于參與的客戶端節(jié)點(diǎn)82具備足夠強(qiáng)大的GPU從而可執(zhí)行用于漫射照明的路徑追蹤,因此它們應(yīng)該足夠強(qiáng)大到能夠渲染鏡面反射照明。同時(shí),隨著在步驟407中生成鏡面反射照明,每個(gè)客戶端節(jié)點(diǎn)82的用戶視口(如501a)被渲染在客戶端節(jié)點(diǎn)82的顯示器上。[0062]在特定的實(shí)施例中,由于用戶502利用的是未參與的客戶端節(jié)點(diǎn)84,其缺乏足夠強(qiáng)大的、可執(zhí)行路徑追蹤的GPU,VTS20假定客戶端設(shè)備84缺乏執(zhí)行依賴于其自身視點(diǎn)的鏡面反射照明的處理能力。因此,VTS20在服務(wù)器端為客戶端節(jié)點(diǎn)84渲染整個(gè)視口(如視口502a)。
[0063]在步驟409中,VTS20基于環(huán)境的VSD0、合成光照貼圖和從每個(gè)相連的客戶端節(jié)點(diǎn)84接收到的攝像機(jī)信息渲染瘦客戶端節(jié)點(diǎn)84的視口。在特定的實(shí)施例中,VTS20利用一個(gè)命中函數(shù)來校正VSDO的原點(diǎn)和每個(gè)客戶端84的參考點(diǎn)(攝像機(jī)視口)的差異。
[0064]在步驟410中,VTS20將每個(gè)瘦客戶端84的經(jīng)渲染的視口幀傳輸?shù)狡涓髯缘目蛻舳?。在特定的?shí)施例中,幀可以通過2D壓縮技術(shù)進(jìn)行壓縮。在步驟411中,客戶端設(shè)備84將其接收到的幀顯示在其各自的顯示器上。
[0065]因此,本發(fā)明的特定實(shí)施方式提供了一種可全面擴(kuò)展的、具有類似P2P質(zhì)量的分布式渲染架構(gòu),其中,最終的渲染圖像的質(zhì)量與參與分布式渲染系統(tǒng)的客戶端節(jié)點(diǎn)的數(shù)目直接相關(guān)。
[0066]可以在網(wǎng)絡(luò)環(huán)境中實(shí)現(xiàn)特定的實(shí)施方式。圖6示出了一個(gè)示例性的網(wǎng)絡(luò)環(huán)境600。網(wǎng)絡(luò)環(huán)境600包括將一個(gè)或多個(gè)服務(wù)器620與一個(gè)或多個(gè)客戶端630彼此連接的網(wǎng)絡(luò)610。在特定的實(shí)施例中,網(wǎng)絡(luò)610可以是企業(yè)內(nèi)部互聯(lián)網(wǎng)、外聯(lián)網(wǎng)、虛擬專用網(wǎng)絡(luò)(VPN)、局域網(wǎng)(LAN)、無線LAN (WLAN)、廣域網(wǎng)(WAN)、城域網(wǎng)(MAN)、通信網(wǎng)絡(luò)、衛(wèi)星網(wǎng)絡(luò)、國(guó)際互聯(lián)網(wǎng)絡(luò)的一部分、或者另一個(gè)網(wǎng)絡(luò)610或者兩個(gè)或多個(gè)上述網(wǎng)絡(luò)610的組合。本發(fā)明適用任何適當(dāng)?shù)木W(wǎng)絡(luò)610。
[0067]一個(gè)或多個(gè)鏈路650將服務(wù)器620或者客戶端630連接到網(wǎng)絡(luò)610。在特定的實(shí)施例中,一個(gè)或多個(gè)鏈路650的每一個(gè)都包括一個(gè)或多個(gè)有線的、無線的、或者光鏈路650。在特定的實(shí)施例中,一個(gè)或多個(gè)鏈路650的每一個(gè)都包括企業(yè)內(nèi)部互聯(lián)網(wǎng)、外聯(lián)網(wǎng)、VPN、LAN、WLAN、WAN、MAN、通信網(wǎng)絡(luò)、衛(wèi)星網(wǎng)絡(luò)、國(guó)際互聯(lián)網(wǎng)絡(luò)的一部分,或者另一個(gè)鏈路650或者兩個(gè)或多個(gè)上述鏈路650的組合。本發(fā)明考慮了將服務(wù)器620和客戶端630連接到網(wǎng)絡(luò)610的任何適當(dāng)?shù)逆溌?50。
[0068]在特定的實(shí)施例中,每個(gè)服務(wù)器620可以是單一式服務(wù)器或者可以是跨多個(gè)計(jì)算機(jī)或多個(gè)資料處理中心的分布式服務(wù)器。服務(wù)器620可以具有各種類型,諸如,舉例并不限于,網(wǎng)絡(luò)服務(wù)器、新聞服務(wù)器、郵件服務(wù)器、消息服務(wù)器、廣告服務(wù)器、文件服務(wù)器、應(yīng)用服務(wù)器、交換服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器或者代理服務(wù)器。在特定的實(shí)施例中,每個(gè)服務(wù)器620可包括硬件、軟件或者嵌入式邏輯元件或者兩個(gè)或多個(gè)上述元件的組合,以用于執(zhí)行由服務(wù)器620實(shí)施或者支持的適當(dāng)功能。例如,網(wǎng)絡(luò)服務(wù)器通常能夠托管包含網(wǎng)頁(yè)或者網(wǎng)頁(yè)的特定元素的網(wǎng)站。更具體地,網(wǎng)絡(luò)服務(wù)器可托管HTML文件或者其他文件類型,或者可根據(jù)需要?jiǎng)討B(tài)地創(chuàng)建或者構(gòu)造文件,并且響應(yīng)來自客戶端630的HTTP或者其他請(qǐng)求將它們傳送給客戶端630。郵件服務(wù)器通常能夠?yàn)楦鞣N各樣的客戶端630提供電子郵件業(yè)務(wù)。數(shù)據(jù)庫(kù)服務(wù)器通常能夠提供用于管理存儲(chǔ)在一個(gè)或者多個(gè)數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)的接口。
[0069]在特定的實(shí)施例中,每個(gè)客戶端630可以是電子設(shè)備,包括硬件、軟件或者嵌入式邏輯元件或者兩個(gè)或多個(gè)上述元件的組合,并能夠執(zhí)行由客戶端630實(shí)施或者支持的適當(dāng)功能。舉例而言但不限于,客戶端630可以是臺(tái)式計(jì)算機(jī)系統(tǒng)、筆記本計(jì)算機(jī)系統(tǒng)、上網(wǎng)本計(jì)算機(jī)系統(tǒng)、手持電子設(shè)備或者移動(dòng)電話??蛻舳?30可使在客戶端630的網(wǎng)絡(luò)用戶能訪問網(wǎng)絡(luò) 610??蛻舳?630 可以具有諸如 Microsoft Internet Explorer 或者M(jìn)ozilla Firefox的網(wǎng)頁(yè)瀏覽器,并可以具有一個(gè)或多個(gè)諸如Google Toolbar工具欄或者Yahoo Toolbar工具欄的附加軟件、插件或者其他擴(kuò)展件??蛻舳?30可使其用戶能夠與其他客戶端630上的其他用戶通信。本發(fā)明適用任何適當(dāng)?shù)目蛻舳?30。
[0070]在特定的實(shí)施例中,一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)器640可經(jīng)由一個(gè)或多個(gè)鏈路650與一個(gè)或多個(gè)服務(wù)器620交互鏈接。在特定的實(shí)施例中,數(shù)據(jù)存儲(chǔ)器640可被用于存儲(chǔ)各種類型的信息。在特定的實(shí)施例中,可根據(jù)具體的數(shù)據(jù)結(jié)構(gòu)來組織存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器640中的信息。特定的實(shí)施例可提供使得服務(wù)器620或者客戶端630能夠管理(例如,檢索、改變、增加或者刪除)保存在數(shù)據(jù)存儲(chǔ)器640中的信息的接口。
[0071]在特定的實(shí)施例中,每個(gè)服務(wù)器620可并行地為一個(gè)或多個(gè)客戶端630服務(wù)并對(duì)其支持的客戶端630運(yùn)行渲染。服務(wù)器620可通過對(duì)視頻流中渲染過的圖像進(jìn)行編碼,以每個(gè)渲染過的圖像作為一個(gè)特定幀的方式,為其支持的特定客戶端630傳輸渲染過的圖像,并且將該視頻流傳輸給客戶端630??蛻舳?30在接收視頻流時(shí),可解碼該視頻流以提取圖像幀用于顯示。
[0072]可通過硬件、軟件或者硬件和軟件的結(jié)合來實(shí)施特定的實(shí)施例。舉例而言但并不限于,一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)可執(zhí)行特定的邏輯或軟件以運(yùn)行本文所描述和闡明的一個(gè)或多個(gè)處理過程中的一個(gè)或多個(gè)步驟。一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)可以是單一式或分布式的,在適當(dāng)情況下,跨多個(gè)計(jì)算機(jī)系統(tǒng)或者多個(gè)資料處理中心。本發(fā)明適用任何適當(dāng)?shù)挠?jì)算機(jī)系統(tǒng)。在特定的實(shí)施例中,運(yùn)行本文中所描述和闡明的一個(gè)或多個(gè)處理過程的一個(gè)或多個(gè)步驟不必局限于一個(gè)或多個(gè)特定的地理位置并且不必具有時(shí)間限制。舉例而言但并不限于,一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)能以“實(shí)時(shí)”、“脫機(jī)”、“批處理方式”執(zhí)行它們的功能,另外,在適當(dāng)情況下,也可以前述的“實(shí)時(shí)”、“脫機(jī)”、“批處理方式”的合適的組合執(zhí)行。在適當(dāng)情況下,一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)可在不同的時(shí)間、在不同的場(chǎng)所、使用不同的處理執(zhí)行它們的一個(gè)或多個(gè)功能。在此,對(duì)邏輯的引用可包含軟件,并且在適當(dāng)情況下,反之亦然。對(duì)軟件的引用可包含一個(gè)或多個(gè)計(jì)算機(jī)程序,并且在適當(dāng)情況下,反之亦然。對(duì)軟件的引用可包含數(shù)據(jù)、指令或者它們兩者,并且在適當(dāng)情況下,反之亦然。類似地,對(duì)數(shù)據(jù)的引用可包含指令,并且在適當(dāng)情況下,反之亦然。
[0073]一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以存儲(chǔ)或以其他方式包含實(shí)現(xiàn)特定的實(shí)施例的軟件。在適當(dāng)情況下,計(jì)算機(jī)可讀介質(zhì)可以是能夠攜帶、通信、容納、持有、保持、傳播、保留、存儲(chǔ)、傳輸、輸送,或以其他方式包含軟件的任何介質(zhì)。在適當(dāng)情況下,計(jì)算機(jī)可讀介質(zhì)可以是生物的、化學(xué)的、電子的、電磁的、紅外的、磁性的、光學(xué)的、量子的或者其他適當(dāng)?shù)慕橘|(zhì),或者兩個(gè)或多個(gè)上述介質(zhì)的組合。計(jì)算機(jī)可讀介質(zhì)可包括一個(gè)或多個(gè)納米級(jí)元件或者以其他方式包含納米級(jí)設(shè)計(jì)或制造。示例性的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括但是不限于:壓縮光盤(CD)、現(xiàn)場(chǎng)可編程門陣列(FPGA)、軟盤、軟式光盤、硬盤、全息存儲(chǔ)設(shè)備、集成電路(IC)(諸如專用集成電路(ASIC ))、磁帶、高速緩沖存儲(chǔ)器、可編程邏輯器件(PLD )、隨機(jī)存取存儲(chǔ)器(RAM)設(shè)備、只讀存儲(chǔ)器(ROM)設(shè)備、半導(dǎo)體存儲(chǔ)器設(shè)備,和其他適當(dāng)?shù)挠?jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
[0074]在適當(dāng)情況下,實(shí)現(xiàn)特定的實(shí)施例的軟件能以任何適當(dāng)?shù)木幊陶Z(yǔ)言(其可以是程序性的或者面向?qū)ο蟮?或者編程語(yǔ)言的組合來進(jìn)行編寫。在適當(dāng)情況下,任何適當(dāng)類型的計(jì)算機(jī)系統(tǒng)(諸如單處理器或者多處理器計(jì)算機(jī)系統(tǒng))或者多個(gè)系統(tǒng)可執(zhí)行實(shí)施特定的實(shí)施例的軟件。在適當(dāng)情況下,通用計(jì)算機(jī)系統(tǒng)可執(zhí)行實(shí)施特定的實(shí)施例的軟件。
[0075]例如,圖7說明了適用于實(shí)施特定實(shí)施例的一個(gè)或多個(gè)部分的一個(gè)示例性的計(jì)算機(jī)系統(tǒng)700。雖然本發(fā)明描述和闡明了特定配置下的具有特定元件的特定計(jì)算機(jī)系統(tǒng)700,但本發(fā)明適用任何合適配置下的具有任何合適元件的任何合適的計(jì)算機(jī)系統(tǒng)。此外,計(jì)算機(jī)系統(tǒng)700可具有任何適當(dāng)?shù)奈锢硇问剑缫粋€(gè)或多個(gè)集成電路(1C)、一個(gè)或多個(gè)印刷電路板(PCB)、一個(gè)或多個(gè)手持或者其他設(shè)備(諸如移動(dòng)電話或PDA)、一個(gè)或多個(gè)個(gè)人計(jì)算機(jī)、或者一個(gè)或多個(gè)超級(jí)計(jì)算機(jī)。
[0076]系統(tǒng)總線710將計(jì)算機(jī)系統(tǒng)700的各子系統(tǒng)彼此連接起來。在此,對(duì)總線的引用包括提供常見功能的一個(gè)或多個(gè)數(shù)字信號(hào)線。本發(fā)明適用任何適當(dāng)?shù)南到y(tǒng)總線710,包括具有任何適當(dāng)?shù)目偩€架構(gòu)的任何適當(dāng)?shù)目偩€結(jié)構(gòu)(諸如一個(gè)或多個(gè)存儲(chǔ)器總線、一個(gè)或多個(gè)外圍總線、一個(gè)或多個(gè)本地總線、或者上述總線的組合)。示例性的總線架構(gòu)包括但不限于,工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)總線、增強(qiáng)ISA (EISA)總線、微通道架構(gòu)(MCA)總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)局部(VLB)總線、外圍元件互連(PCI)總線、PCI快速總線(PC1-X)以及圖形加速端口(AGP)總線。
[0077]計(jì)算機(jī)系統(tǒng)700包括一個(gè)或多個(gè)處理器720 (或者中央處理單元(CPU))。處理器720可包含緩存722,以用于暫時(shí)本地存儲(chǔ)指令、數(shù)據(jù)、或者計(jì)算機(jī)地址。處理器720與含有內(nèi)存730的一個(gè)或多個(gè)存儲(chǔ)設(shè)備相連。內(nèi)存730可包括隨機(jī)存取存儲(chǔ)器(RAM) 732和只讀存儲(chǔ)器(R0M)734。數(shù)據(jù)和指令可在處理器720與RAM732之間雙向傳輸。數(shù)據(jù)和指令可從R0M734單向傳輸?shù)教幚砥?20。RAM732和R0M734可包括任何適當(dāng)?shù)挠?jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
[0078]計(jì)算機(jī)系統(tǒng)700包括與處理器720雙向連接的固定的儲(chǔ)存器740。固定的儲(chǔ)存器740可經(jīng)由儲(chǔ)存控制單元752連接到處理器720。固定的儲(chǔ)存器740可提供額外的數(shù)據(jù)存儲(chǔ)容量并可包括任何適當(dāng)?shù)挠?jì)算機(jī)可讀存儲(chǔ)介質(zhì)。固定的儲(chǔ)存器740可存儲(chǔ)操作系統(tǒng)(OS)742、一個(gè)或多個(gè)可執(zhí)行文件744、一個(gè)或多個(gè)應(yīng)用或者程序746、數(shù)據(jù)748,等等。固定的儲(chǔ)存器740典型地為比主存儲(chǔ)器慢的輔助存儲(chǔ)介質(zhì)(諸如硬盤)。在適當(dāng)?shù)那闆r下,可把由固定的儲(chǔ)存器740存儲(chǔ)的信息作為虛擬內(nèi)存并入內(nèi)存730。
[0079]處理器720可與多種接口連接,諸如,例如,圖形控制754、視頻接口 758、輸入接口760、輸出接口 762、以及存儲(chǔ)器接口 764,這些接口又可以分別連接到適當(dāng)?shù)脑O(shè)備上。示例性的輸入或輸出設(shè)備包括但是不限于,視頻顯示器、軌跡球、鼠標(biāo)、鍵盤、麥克風(fēng)、觸敏顯示器、傳感器讀卡器、磁帶或者紙帶讀取器、平板電腦、手寫筆、語(yǔ)音或者手寫識(shí)別器、生物特征讀取器或者計(jì)算機(jī)系統(tǒng)。網(wǎng)絡(luò)接口 756可將處理器720連接到另一個(gè)計(jì)算機(jī)系統(tǒng)或者網(wǎng)絡(luò)780。通過網(wǎng)絡(luò)接口 756,處理器720可在執(zhí)行特定實(shí)施例的步驟的過程中從網(wǎng)絡(luò)780接收信息或者發(fā)送信息給網(wǎng)絡(luò)780。特定的實(shí)施例可在處理器720上單獨(dú)地運(yùn)行。特定的實(shí)施例可在處理器720上和在共同操作的一個(gè)或多個(gè)遠(yuǎn)程處理器上運(yùn)行。
[0080]在網(wǎng)絡(luò)環(huán)境中,在計(jì)算機(jī)系統(tǒng)700被連接到網(wǎng)絡(luò)780的情況下,計(jì)算機(jī)系統(tǒng)700可與連接到網(wǎng)絡(luò)780的其他設(shè)備進(jìn)行通信。計(jì)算機(jī)系統(tǒng)700可經(jīng)由網(wǎng)絡(luò)接口 756與網(wǎng)絡(luò)780通信。例如,計(jì)算機(jī)系統(tǒng)700可以在網(wǎng)絡(luò)接口 756上接收來自網(wǎng)絡(luò)780的呈現(xiàn)為一個(gè)或多個(gè)輸入包形式的信息(諸如來自另一個(gè)設(shè)備的請(qǐng)求或者響應(yīng)),并且內(nèi)存730可以存儲(chǔ)輸入包用于后續(xù)處理。計(jì)算機(jī)系統(tǒng)700可以將來自網(wǎng)絡(luò)接口 756的呈現(xiàn)為一個(gè)或多個(gè)輸出包形式的信息(諸如到另一個(gè)設(shè)備的請(qǐng)求或者響應(yīng))發(fā)送給網(wǎng)絡(luò)780,所述信息在發(fā)送之前可由內(nèi)存730存儲(chǔ)。根據(jù)特定需求,處理器720可訪問內(nèi)存730中的輸入或者輸出包以對(duì)其進(jìn)行處理。
[0081]計(jì)算機(jī)系統(tǒng)700可具有一個(gè)或多個(gè)輸入設(shè)備766 (其可包括按鍵、鍵盤、鼠標(biāo)、手寫筆等)、一個(gè)或多個(gè)輸出設(shè)備768 (其可包括一個(gè)或多個(gè)顯不器、一個(gè)或多個(gè)揚(yáng)聲器、一個(gè)或多個(gè)打印機(jī)等)、一個(gè)或多個(gè)存儲(chǔ)設(shè)備770、以及一個(gè)或多個(gè)存儲(chǔ)介質(zhì)772。輸入設(shè)備766可在計(jì)算機(jī)系統(tǒng)700外部或者內(nèi)部。輸出設(shè)備768可在計(jì)算機(jī)系統(tǒng)700外部或者內(nèi)部。存儲(chǔ)設(shè)備770可在計(jì)算機(jī)系統(tǒng)700外部或者內(nèi)部。存儲(chǔ)介質(zhì)772可在計(jì)算機(jī)系統(tǒng)700外部或者內(nèi)部。
[0082]特定的實(shí)施例中包括一個(gè)或多個(gè)計(jì)算機(jī)存儲(chǔ)產(chǎn)品,其包括一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包含用于執(zhí)行本文所描述或者闡明的一個(gè)或多個(gè)過程中的一個(gè)或多個(gè)步驟的軟件。在特定的實(shí)施例中,介質(zhì)的一個(gè)或多個(gè)部分、軟件或者它們兩者可被特別地設(shè)計(jì)和制造以執(zhí)行本文所描述或者闡明的一個(gè)或多個(gè)處理過程中的一個(gè)或多個(gè)步驟。此外或者作為一種選擇方案,在特定的實(shí)施例中,介質(zhì)的一個(gè)或多個(gè)部分、軟件或者它們兩者在沒有針對(duì)本文所描述或者闡明的過程進(jìn)行具體設(shè)計(jì)或者制造的情況下可以是通用的。示例性的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括但是不限于,CD (諸如CD-ROM)、FPGA、軟盤、軟式光盤、硬盤、全息存儲(chǔ)設(shè)備、IC(諸如ASIC)、磁帶、高速緩沖存儲(chǔ)器、PLD、RAM設(shè)備、ROM設(shè)備、半導(dǎo)體存儲(chǔ)器設(shè)備、及其他適當(dāng)?shù)挠?jì)算機(jī)可讀存儲(chǔ)介質(zhì)。在特定的實(shí)施例中,軟件可以是編譯器可生成的機(jī)器代碼或者是包含高級(jí)編碼的一個(gè)或多個(gè)文件,所述高級(jí)編碼可以由計(jì)算機(jī)通過使用譯碼器來執(zhí)行。
[0083]舉例而言但并不限于此,內(nèi)存730可包括一個(gè)或多個(gè)包含軟件的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),并且計(jì)算機(jī)系統(tǒng)700可提供本文所描述或者闡明的特定功能作為處理器720執(zhí)行所述軟件的結(jié)果。內(nèi)存730可存儲(chǔ)所述軟件,并且處理器720可執(zhí)行所述軟件。內(nèi)存730可從包含軟件的大容量存儲(chǔ)設(shè)備730中的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)讀取軟件,或者經(jīng)由網(wǎng)絡(luò)接口756從一個(gè)或多個(gè)其它的源讀取軟件。當(dāng)執(zhí)行軟件時(shí),處理器720可運(yùn)行本文所描述或者闡明的一個(gè)或多個(gè)處理過程中的一個(gè)或多個(gè)步驟,根據(jù)特定需求,其可以包括定義一個(gè)或多個(gè)存儲(chǔ)在內(nèi)存730中的數(shù)據(jù)結(jié)構(gòu),以及在軟件的一個(gè)或多個(gè)部分的指引下修改一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)。此外或者作為一種選擇方案,由于硬連接的或在電路中所包含的邏輯,計(jì)算機(jī)系統(tǒng)700可提供本文所描述或者闡明的特定功能,所述計(jì)算機(jī)系統(tǒng)可代替軟件或者和軟件一起操作以執(zhí)行本文所描述或者闡明的一個(gè)或多個(gè)過程的一個(gè)或多個(gè)步驟。根據(jù)特定的需求,本發(fā)明可包括任何合適的硬件和軟件的組合。
[0084]在特定的實(shí)施例中,計(jì)算機(jī)系統(tǒng)700可包括一個(gè)或多個(gè)圖形處理單元(GPU) 724。在特定的實(shí)施例中,GPU724可包含一個(gè)或多個(gè)針對(duì)圖形渲染中常用的數(shù)學(xué)運(yùn)算的集成電路和/或處理核。在一些實(shí)施例中,GPU724可使用專門的圖形單元指令集,而在其他的實(shí)施方式中,GPU可使用類似CPU的(例如,改進(jìn)的x86)指令集。圖形處理單元724可實(shí)施許多基本圖形操作,諸如位塊傳送、紋理映射、像素著色、幀緩沖,等等。在特定的實(shí)施例中,GPU724可以是圖形加速器,通用GPU (GPGPU),或者任何其他適當(dāng)?shù)奶幚韱卧?br>
[0085]在特定的實(shí)施例中,GPU724可被包含在圖形卡或顯示卡中,該圖形卡或顯示卡通過卡槽安裝在硬件系統(tǒng)架構(gòu)上。在其他實(shí)施方式中,GPU724可被集成到計(jì)算機(jī)系統(tǒng)架構(gòu)的主板上。適當(dāng)?shù)膱D形處理單??砂ɑ贏MD公司(Advanced Micro Devices)(r)AMD R7XX的 GPU 設(shè)備(Radeon (r)HD4XXX)、基于 AMD R8XX 的 GPU 設(shè)備(Radeon (r)HD7XXX)、基于英特爾公司(r) Larabee的GPU設(shè)備(未發(fā)布)、nVidia公司(r) 8系列GPU、nVidia (r) 9系列 GPU,nVidia (r)100 系列 GPU,nVidia (r)200 系列 GPU、以及任何其他的 DXll-capableGPU。
[0086]雖然本發(fā)明描述或者闡明以特定順序發(fā)生的特定操作,但是本發(fā)明適用以任何適當(dāng)?shù)捻樞虬l(fā)生的任何適當(dāng)?shù)牟僮鳌4送?,本發(fā)明適用以任何適當(dāng)?shù)捻樞虮恢貜?fù)一次或者多次的任何適當(dāng)?shù)牟僮?。雖然本發(fā)明描述或者闡明按順序發(fā)生的特定操作,但在合適的情況下,本發(fā)明適用基本上同時(shí)發(fā)生的任何適當(dāng)?shù)牟僮?。在合適的情況下,本文所描述或者闡明的任何適當(dāng)?shù)牟僮骰蛘卟僮黜樞蚩杀恢袛?、中止,或由另一個(gè)過程(諸如操作系統(tǒng)或者內(nèi)核)控制。動(dòng)作能夠在操作系統(tǒng)環(huán)境下進(jìn)行或者作為占用系統(tǒng)過程的全部或者主要部分的獨(dú)立應(yīng)用程序進(jìn)行。
[0087]本發(fā)明涵蓋本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的對(duì)本文示例性實(shí)施例所做的所有變更、替換、變化、更改和修改。同樣,在合適的情況下,所附權(quán)利要求涵蓋本領(lǐng)域技術(shù)人員可以理解的對(duì)本文示例性實(shí)施例所做的所有變更、替換、變化、更改和修改。
【權(quán)利要求】
1.一種方法,包括: 通過處理器將公共渲染資源傳輸?shù)揭粋€(gè)或多個(gè)客戶端; 通過所述處理器向所述一個(gè)或多個(gè)客戶端的每一個(gè)傳輸不同于其他傳輸?shù)目臻g位置的唯一的空間位置; 通過所述處理器向所述一個(gè)或多個(gè)客戶端的每一個(gè)傳輸一個(gè)或多個(gè)指令,以使用所述公共渲染資源及其唯一的空間位置生成渲染; 通過所述處理器從所述一個(gè)或多個(gè)客戶端的每一個(gè)接收渲染; 通過所述處理器由接收到的渲染生成合成渲染;以及 通過所述處理器將所述合成渲染傳輸給所述一個(gè)或多個(gè)客戶端。
2.如權(quán)利要求1所述的方法,其特征在于,每個(gè)唯一的空間位置是隨機(jī)生成的。
3.如權(quán)利要求1所述的方法,其特征在于,生成渲染的指令包括從唯一的空間位置在渲染資源上執(zhí)行路徑追蹤的指令。
4.如權(quán)利要求1所述的方法,其特征在于,所述渲染資源為視口狀態(tài)數(shù)據(jù)對(duì)象(VSDO)。
5.如權(quán)利要求3所述的方法,其特征在于,所述渲染為包含渲染資源在內(nèi)的部分或整個(gè)環(huán)境的光照貼圖。
6.如權(quán)利要求5所述的方法,通過所述處理器生成合成渲染包括:通過所述處理器添加接收到的光照貼圖以生成包含渲染資源在內(nèi)的部分或整個(gè)環(huán)境的合成光照貼圖。
7.如權(quán)利要求3所述的方法,其特征在于,所述渲染資源為視口狀態(tài)數(shù)據(jù)對(duì)象(VSDO),而且所述渲染為被作為路徑追蹤的結(jié)果而`計(jì)算出的漫射照明數(shù)據(jù)所增強(qiáng)的一組渲染資源。
8.如權(quán)利要求3所述的方法,其特征在于,所述渲染為幀,并且所述一個(gè)或多個(gè)指令還包括渲染該幀的公共視點(diǎn)。
9.如權(quán)利要求8所述的方法,通過所述處理器生成合成渲染包括添加接收到的幀以生成合成幀。
10.一種方法,包括: 通過處理器從服務(wù)器接收渲染資源和唯一的空間位置; 通過所述處理器從服務(wù)器接收一個(gè)或多個(gè)指令,以利用接收到的所述渲染資源和所述唯一的空間位置生成渲染; 按照所述一個(gè)或多個(gè)指令通過所述處理器生成所述渲染; 通過所述處理器將生成的渲染傳輸給所述服務(wù)器;以及 通過所述處理器從所述服務(wù)器接收合成渲染。
11.如權(quán)利要求10所述的方法,還包括: 通過所述處理器從與服務(wù)器無關(guān)的視點(diǎn)渲染鏡面反射照明; 通過所述處理器將渲染的鏡面反射照明與接收到的合成渲染進(jìn)行結(jié)合;以及通過所述處理器將結(jié)合在一起的經(jīng)渲染的鏡面反射照明和接收的合成渲染輸出到顯示器。
12.—種系統(tǒng),包括: 圖形處理單元; 處理器;以及 用于在其上有形地存儲(chǔ)由所述處理器執(zhí)行的程序邏輯的存儲(chǔ)介質(zhì),所述程序邏輯包括: 公共渲染資源傳輸邏輯,其由所述處理器執(zhí)行,用于將公共渲染資源傳輸給一個(gè)或多個(gè)客戶端; 空間位置傳輸邏輯,其由所述處理器執(zhí)行,用于將不同于其它傳輸?shù)目臻g位置的唯一的空間位置傳輸給所述一個(gè)或多個(gè)客戶端的每一個(gè); 指令傳輸邏輯,其由所述處理器執(zhí)行,用于將一個(gè)或多個(gè)指令傳輸給所述一個(gè)或多個(gè)客戶端的每一個(gè),所述一個(gè)或多個(gè)指令利用公共渲染資源及其唯一的空間位置生成渲染; 接收邏輯,其由所述處理器執(zhí)行,用于從所述一個(gè)或多個(gè)客戶端的每一個(gè)接收渲染; 合成渲染生成邏輯,其由所述處理器執(zhí)行,以從接收到的渲染生成合成渲染;以及 合成渲染傳輸邏輯,其由所述處理器執(zhí)行,用于將所述合成渲染傳輸給所述一個(gè)或多個(gè)客戶端。
13.如權(quán)利要求12所述的系統(tǒng),其特征在于,每個(gè)唯一的空間位置是隨機(jī)生成的。
14.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述的生成渲染的指令傳輸邏輯還包括從所述唯一的空間位置在所述渲染資源上執(zhí)行路徑追蹤的指令。
15.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述渲染資源為視口狀態(tài)數(shù)據(jù)對(duì)象(VSDO)。
16.如權(quán)利要求14所述的系統(tǒng),其特征在于,所述渲染為包含所述渲染資源在內(nèi)的部分或整個(gè)環(huán)境的光照貼圖。
17.如權(quán)利要求16所述`的系統(tǒng),所述合成渲染生成邏輯還包括添加邏輯,用于添加接收到的光照貼圖以生成包含所述渲染資源在內(nèi)的部分或整個(gè)環(huán)境的合成光照貼圖。
18.如權(quán)利要求14所述的系統(tǒng),其特征在于,所述渲染資源為VSDO,而且所述渲染為被作為路徑追蹤的結(jié)果而計(jì)算出的漫射照明數(shù)據(jù)所增強(qiáng)的一組渲染資源。
19.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述渲染為幀,并且所述一個(gè)或多個(gè)指令還包括渲染該幀的公共視點(diǎn)。
20.如權(quán)利要求12所述的系統(tǒng),所述合成渲染生成邏輯還包括由所述處理器執(zhí)行的添加邏輯,其用于添加接收到的幀以生成合成幀。
【文檔編號(hào)】G06F17/00GK103874991SQ201280039280
【公開日】2014年6月18日 申請(qǐng)日期:2012年8月9日 優(yōu)先權(quán)日:2011年8月11日
【發(fā)明者】朱利安·M·烏爾巴赫 申請(qǐng)人:Otoy公司