子畫(huà)面圖形渲染系統(tǒng)的制作方法
【專(zhuān)利說(shuō)明】子畫(huà)面圖形渲染系統(tǒng)
【背景技術(shù)】
[0001] 本公開(kāi)整體涉及計(jì)算機(jī)圖形領(lǐng)域。更具體地,但并非作為限制,本公開(kāi)涉及在與圖 形處理單元(GPU) -起使用的渲染系統(tǒng)中用于操控子畫(huà)面(sprite)的技術(shù)。
[0002] 子畫(huà)面是一種集成到更大場(chǎng)景中的二維(2D)圖像或動(dòng)畫(huà)??蓪⒆赢?huà)面映射到三 維(3D)場(chǎng)景中??蓮娜魏蝸?lái)源創(chuàng)建子畫(huà)面,該任何來(lái)源包括預(yù)先渲染的圖像、動(dòng)態(tài)3D圖 形、矢量圖并且甚至文本。由于圖形處理單元(GPU)已變得可用,因此已開(kāi)發(fā)出子畫(huà)面庫(kù)和 圖形處理例程以提供一種渲染系統(tǒng),該渲染系統(tǒng)允許使用GPU的能力以用于更快地渲染圖 形,而不是完全依賴(lài)于普通中央處理單元(CPU)的處理能力。通常,CPU和GPU兩者均在由 這些庫(kù)提供的圖形處理操作中涉及到,其中大部分圖形處理是由GPU進(jìn)行的。
[0003] 這些渲染系統(tǒng)通常在場(chǎng)景樹(shù)中表示圖形操作。場(chǎng)景圖是一種布置圖形場(chǎng)景的邏輯 和常見(jiàn)(但未必一定)空間表示的結(jié)構(gòu)。場(chǎng)景圖是圖或樹(shù)結(jié)構(gòu)中的節(jié)點(diǎn)的集合。節(jié)點(diǎn)可有 很多子節(jié)點(diǎn),但常常僅有單一父節(jié)點(diǎn),其中父節(jié)點(diǎn)的效果適用于所有其子節(jié)點(diǎn)。在一個(gè)組上 執(zhí)行的操作將其效果自動(dòng)傳播到其所有成員。常見(jiàn)的特征是能夠?qū)⑾嚓P(guān)形狀/對(duì)象分組成 復(fù)合對(duì)象,然后可如單個(gè)對(duì)象那樣容易地移動(dòng)、變換、選擇等。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明提供了圖形渲染系統(tǒng)的軟件開(kāi)發(fā)者工具包(SDK)形式的一組工具以改善 總體圖形操作。一般來(lái)講,該工具涉及分析場(chǎng)景樹(shù)并將其呈現(xiàn)優(yōu)化為一個(gè)或多個(gè)圖形處理 單元(GPU),以便改善渲染操作。這一總體目標(biāo)是通過(guò)若干不同功能提供的,通過(guò)新的應(yīng)用 編程接口(API)向軟件開(kāi)發(fā)者呈現(xiàn)每種功能。
【附圖說(shuō)明】
[0005] 圖1是示出了圖形渲染系統(tǒng)的一個(gè)實(shí)施例的框圖。
[0006] 圖2是示出了具有多個(gè)并行操作以同時(shí)執(zhí)行多個(gè)線(xiàn)程的計(jì)算處理器(例如計(jì)算單 元)的計(jì)算設(shè)備的實(shí)例的框圖。
[0007] 圖3是表示簡(jiǎn)單場(chǎng)景圖的樹(shù)圖。
[0008] 圖4是示出了根據(jù)一個(gè)實(shí)施例的自動(dòng)批處理技術(shù)的流程圖。
[0009] 圖5是示出了根據(jù)一個(gè)實(shí)施例的用于使用索引緩沖區(qū)和頂點(diǎn)緩沖區(qū)的技術(shù)的流 程圖。
[0010] 圖6是示出了根據(jù)一個(gè)實(shí)施例的由效果節(jié)點(diǎn)代替子樹(shù)的簡(jiǎn)單場(chǎng)景圖的圖示。
[0011] 圖7是示出了根據(jù)一個(gè)實(shí)施例的用于生成效果節(jié)點(diǎn)的技術(shù)的流程圖。
[0012] 圖8是示出了根據(jù)一個(gè)實(shí)施例的用于自動(dòng)生成紋理圖集的技術(shù)的流程圖。
[0013] 圖9是不出了根據(jù)一個(gè)實(shí)施例的實(shí)例場(chǎng)景圖和掩蔽場(chǎng)景圖的子樹(shù)的兩種方式的 圖示。
[0014] 圖10是示出了根據(jù)一個(gè)實(shí)施例的用于植染系統(tǒng)的視錐(view frustrum)的框圖。
[0015] 圖11是示出了根據(jù)一個(gè)實(shí)施例的用于使用模板緩沖區(qū)進(jìn)行掩蔽的技術(shù)的流程 圖。
[0016]圖12是根據(jù)一個(gè)實(shí)施例的與渲染系統(tǒng)一起使用的計(jì)算機(jī)系統(tǒng)的框圖。
【具體實(shí)施方式】
[0017] 在以下描述中,出于解釋的目的闡述了許多具體細(xì)節(jié)以便提供對(duì)本發(fā)明的徹底理 解。然而,對(duì)本領(lǐng)域的技術(shù)人員而言將顯而易見(jiàn)的是,可在不存在這些具體的情況下實(shí)踐本 發(fā)明。在其他情況下,以框圖的形式示出了結(jié)構(gòu)和設(shè)備,以便避免模糊本發(fā)明。提到?jīng)]有下 標(biāo)或后綴的數(shù)字將被理解為參考與所提到數(shù)字對(duì)應(yīng)的下標(biāo)和后綴的所有情況。此外,本公 開(kāi)中所使用的語(yǔ)言主要被選擇用于可讀性和指導(dǎo)性目的,并且可能沒(méi)有被選擇為劃定或限 定該發(fā)明性主題,訴諸于所必需的權(quán)利要求以確定此類(lèi)發(fā)明性主題。在說(shuō)明書(shū)中提到"一個(gè) 實(shí)施例"或"一種實(shí)施例"意指包括在本發(fā)明的至少一個(gè)實(shí)施例中的結(jié)合該實(shí)施例進(jìn)行描述 的特定特征、結(jié)構(gòu)或特性,并且多次提到"一個(gè)實(shí)施例"或"一種實(shí)施例"不應(yīng)被理解為全部 必然地參考相同的實(shí)施例。
[0018] 下圖中示出的過(guò)程由處理邏輯部件執(zhí)行,該處理邏輯部件包括硬件(例如電路、 專(zhuān)用邏輯部件等)、軟件(諸如在通用計(jì)算機(jī)或?qū)S脵C(jī)器上運(yùn)行的軟件)、或兩者的組合。盡 管下文根據(jù)一些順序操作描述了各過(guò)程,但可按照不同的次序執(zhí)行所述的一些操作,并可 并行而非順序地執(zhí)行一些操作。
[0019] 圖形處理單元(GPU)可以是實(shí)施非常高效的圖形操作諸如2D、3D圖形操作和/或 數(shù)字視頻相關(guān)功能的專(zhuān)用圖形處理器。GPU可包括專(zhuān)用(可編程)硬件以執(zhí)行圖形操作,例 如,位塊傳輸器操作、紋理映射、多邊形渲染、像素著色和頂點(diǎn)著色。已知GPU會(huì)從幀緩沖區(qū) 獲取數(shù)據(jù)并將像素混合到一起以將圖像返回到幀緩沖區(qū)中以用于進(jìn)行顯示。GPU還可控制 幀緩沖區(qū),并允許使用幀緩沖區(qū)來(lái)刷新顯示器,諸如CRT或IXD顯示器。常規(guī)上,GPU可從 與GPU耦接的一個(gè)或多個(gè)中央處理單元(CPU)獲取圖形處理任務(wù),以通過(guò)顯示控制器向顯 示設(shè)備輸出光柵圖形圖像。
[0020] 典型的GPU通常是單指令多數(shù)據(jù)(SMD)設(shè)備,其中每條指令可以并行操作多條數(shù) 據(jù)。正如CPU從單個(gè)處理單元發(fā)展到能夠在每個(gè)核中獨(dú)立執(zhí)行指令的多核處理器那樣,更 新近的GPU提供矢量計(jì)算的"通道",可以將每個(gè)通道理解為獨(dú)立的線(xiàn)程。單一硬件序列發(fā) 生器通常并行操作一組此類(lèi)線(xiàn)程。如果全部執(zhí)行同一指令,它們就可以說(shuō)是相干的。單一 指令取出被廣播到所有單個(gè)處理元件。如果線(xiàn)程在不同方向上出現(xiàn)分支,則它們被稱(chēng)為分 叉的。單一指令序列發(fā)生器跟蹤哪些線(xiàn)程已分叉。在它的每個(gè)周期獲取單個(gè)指令并將其分 配到掩碼啟用的所有那些處理元件。
[0021] 圖1是示出了圖形渲染系統(tǒng)100的一個(gè)實(shí)施例的框圖,圖形渲染系統(tǒng)100使用包 括CPU和/或GPU的計(jì)算設(shè)備來(lái)為應(yīng)用程序執(zhí)行并行計(jì)算。系統(tǒng)100可實(shí)施并行計(jì)算架構(gòu)。 在一個(gè)實(shí)施例中,系統(tǒng)100可以是包括通過(guò)數(shù)據(jù)總線(xiàn)190與一個(gè)或多個(gè)CPU 170和一個(gè)或 多個(gè)GPU 180耦接的一個(gè)或多個(gè)主機(jī)處理器的圖形系統(tǒng)。可在主機(jī)系統(tǒng)110中將多個(gè)主機(jī) 處理器聯(lián)網(wǎng)在一起。多個(gè)CPU 170可包括來(lái)自不同供應(yīng)商的多核CPU。計(jì)算處理器或計(jì)算 單元諸如CPU或GPU可與一組功能相關(guān)聯(lián)。例如,GPU可具有專(zhuān)用的紋理渲染硬件。另一 個(gè)媒體處理器可以是支持專(zhuān)用紋理渲染硬件和雙精度浮點(diǎn)運(yùn)算兩者的GPU。多個(gè)GPU可連 接在一起。
[0022] 在一個(gè)實(shí)施例中,主機(jī)系統(tǒng)110可支持軟件堆棧。軟件堆??砂ㄜ浖褩2考?諸如應(yīng)用程序120、計(jì)算應(yīng)用程序庫(kù)130、計(jì)算平臺(tái)層140,例如OpenCL平臺(tái)、計(jì)算運(yùn)行時(shí)層 150和計(jì)算編譯器160。應(yīng)用程序120可通過(guò)API調(diào)用與其他堆棧部件進(jìn)行交互。一個(gè)或多 個(gè)處理元件或線(xiàn)程可針對(duì)主機(jī)系統(tǒng)110中的應(yīng)用程序120同時(shí)運(yùn)行。計(jì)算平臺(tái)層140可維 護(hù)數(shù)據(jù)結(jié)構(gòu)或計(jì)算設(shè)備數(shù)據(jù)結(jié)構(gòu),為每個(gè)附接的物理計(jì)算設(shè)備存儲(chǔ)處理能力。在一個(gè)實(shí)施 例中,應(yīng)用程序可通過(guò)計(jì)算平臺(tái)層140檢索關(guān)于主機(jī)系統(tǒng)110的可用處理資源的信息。應(yīng) 用程序可通過(guò)計(jì)算平臺(tái)層140選擇和指定用于執(zhí)行處理任務(wù)的能力要求。因此,計(jì)算平臺(tái) 層140可為物理計(jì)算設(shè)備確定配置,以分配和初始化來(lái)自附接的CPU 170和/或GPU 180 的處理資源以用于處理任務(wù)。
[0023] 計(jì)算運(yùn)行時(shí)層109可例如基于一個(gè)或多個(gè)邏輯計(jì)算設(shè)備根據(jù)應(yīng)用程序103的配 置的處理資源來(lái)管理處理任務(wù)的執(zhí)行。在一個(gè)實(shí)施例中,執(zhí)行處理任務(wù)可包括創(chuàng)建表示處 理任務(wù)的計(jì)算程序?qū)ο笠约胺峙浯鎯?chǔ)器資源,例如,用于保持可執(zhí)行文件、輸入/輸出數(shù)據(jù) 等。為計(jì)算程序?qū)ο?