響GPU 120繪制三角形A時(shí)的行為,而"狀 態(tài)Tri B1"和"狀態(tài)Tri B2"命令可影響GPU 120繪制三角形B時(shí)的行為。"狀態(tài)Tri B1" 和"狀態(tài)Tri B2"命令僅指示可針對(duì)每一三角形執(zhí)行多個(gè)狀態(tài)命令。另一方面,如果倉(cāng)的可 見性流指示所述倉(cāng)不包含可見三角形,那么GPU 120可執(zhí)行存儲(chǔ)在陰影渲染IB2中的狀態(tài) 更新和線內(nèi)操作。
[0054] 存儲(chǔ)倉(cāng)指令322可指向存儲(chǔ)IB2324,其包含用以將經(jīng)渲染倉(cāng)從GMEM存儲(chǔ)到存儲(chǔ)器 (例如幀緩沖器)中的命令??舍槍?duì)與組成場(chǎng)景的瓦片326相關(guān)聯(lián)的剩余倉(cāng)中的每一者重 復(fù)渲染遍次。
[0055] 圖4是說明基于瓦片的渲染架構(gòu)中的場(chǎng)景的瓦片的概念圖。如圖4中所展示,例 如圖1中展示的處理器102等CPU可經(jīng)由例如圖1中展示的圖形驅(qū)動(dòng)器116等圖形驅(qū)動(dòng)器 將圖形渲染命令發(fā)送到例如圖1中展示的GPU 120等GPU,以渲染3D圖形對(duì)象406。對(duì)象 206可由例如基元408等基元組成。在圖4中展示的實(shí)例中,基元可為包含三個(gè)頂點(diǎn)的三角 形。在其它實(shí)例中,基元可為點(diǎn)、線等等。GPU可將含有圖形對(duì)象406的場(chǎng)景402劃分為瓦 片,例如瓦片404。GPU可至少部分地基于圖形存儲(chǔ)器的大小確定場(chǎng)景402的每一瓦片(例 如瓦片404)的大小。舉例來說,場(chǎng)景402的每一瓦片可經(jīng)設(shè)定大小使得瓦片中包含的場(chǎng)景 402的部分可全部在例如圖1中展示的圖形存儲(chǔ)器122等圖形存儲(chǔ)器中渲染。場(chǎng)景402的 每一瓦片可被視為在所述瓦片中包含三角形的倉(cāng)。在一個(gè)實(shí)例中,倉(cāng)的寬度和高度可由32 個(gè)像素對(duì)準(zhǔn)。因?yàn)閳?chǎng)景402劃分成瓦片的5x5柵格,所以存在圖4中展示的場(chǎng)景402的總 共25個(gè)瓦片。
[0056] GPU 120可通過執(zhí)行用于渲染三角形的命令而渲染三角形。因此,GPU 120可通過 執(zhí)行用于渲染構(gòu)成圖形對(duì)象406的三角形中的每一者的命令而渲染圖形對(duì)象406。GPU120 可將場(chǎng)景的三角形分類到倉(cāng)中,使得每一倉(cāng)可包含命令流(命令的集合)以渲染所述倉(cāng)中 包含的三角形。因?yàn)榇嬖趫?chǎng)景402的總共25個(gè)瓦片,所以可存在場(chǎng)景402的25個(gè)對(duì)應(yīng)倉(cāng)。 GPU 120可將每一倉(cāng)的命令流存儲(chǔ)在存儲(chǔ)器(例如圖1中展示的系統(tǒng)存儲(chǔ)器118)中的間 接緩沖器中。GPU 120通過執(zhí)行每一倉(cāng)的命令流以將倉(cāng)中的每一者中的三角形渲染到圖形 存儲(chǔ)器122上而渲染圖形對(duì)象406。在GPU 120將倉(cāng)中包含的場(chǎng)景402的部分渲染到圖形 存儲(chǔ)器122上之后,場(chǎng)景402的所述經(jīng)渲染部分從圖形存儲(chǔ)器122加載到存儲(chǔ)器(例如圖 1中展示的幀緩沖器124)。GPU 120可重復(fù)以下過程:執(zhí)行命令流、將倉(cāng)的三角形渲染到圖 形存儲(chǔ)器122上,以及將場(chǎng)景402的所述經(jīng)渲染部分從圖形存儲(chǔ)器122加載到每一倉(cāng)的幀 緩沖器124以渲染整個(gè)場(chǎng)景402。
[0057] 圖5為展示根據(jù)本發(fā)明的方面的在倉(cāng)之間劃分的基元的概念圖。如圖5中所展示, 各自含有像素的4X4柵格的倉(cāng)502、504、506和508經(jīng)渲染/光柵化以含有多個(gè)像素510。 一或多個(gè)圖形基元可在每一倉(cāng)中可見。舉例來說,三角形A (Tri A)的部分在倉(cāng)502和倉(cāng) 506兩者中可見。三角形B(Tri B)的部分在倉(cāng)502、倉(cāng)504、倉(cāng)506和倉(cāng)508中的每一者中 可見。三角形C(Tri C)僅在倉(cāng)504中可見。在渲染遍次期間,GPU 120可將場(chǎng)景分割為倉(cāng) 且可將三角形指派到所述倉(cāng)。如果三角形在一個(gè)以上倉(cāng)中可見,那么GPU 120可將三角形 指派到其中三角形為可見的倉(cāng)中的僅一者,使得三角形不隨著渲染倉(cāng)502、504、506和508 中的每一者而被渲染多次。
[0058] GPU 120還可通過執(zhí)行裝倉(cāng)遍次確定倉(cāng)中的哪些三角形在最終植染的場(chǎng)景中實(shí)際 上可見。舉例來說,一些三角形可在一或多個(gè)其它三角形后方且將在最終渲染的場(chǎng)景中不 可見。以此方式,不必渲染針對(duì)所述倉(cāng)的不可見的三角形。
[0059] GPU 120可通過針對(duì)每一倉(cāng)識(shí)別與所述倉(cāng)相交的基元而確定哪些三角形與每一倉(cāng) 相交,包含確定基元的頂點(diǎn)的位置。GPU 120可通過使用僅包含影響頂點(diǎn)的位置的指令的其 圖形管線中的簡(jiǎn)化頂點(diǎn)著色器而確定頂點(diǎn)的位置。舉例來說,顏色指令、紋理坐標(biāo)和并不影 響基元頂點(diǎn)的位置的其它指令可從簡(jiǎn)化的頂點(diǎn)著色器移除。GPU 120還可使用粗略光柵化 而非精細(xì)光柵化以確定每一基元的近似深度。粗略光柵化以與精細(xì)光柵化相比較低的精確 度(例如,使用較低位數(shù))計(jì)算深度值??蓛H必需近似深度值來確定基元是否在倉(cāng)中可見。
[0060] 除使用裝倉(cāng)遍次以確定每一倉(cāng)中包含的基元外,GPU 120還可使用裝倉(cāng)遍次以產(chǎn) 生可見性流,所述可見性流指示倉(cāng)中的特定基元是否實(shí)際上在最終渲染的場(chǎng)景中可見。舉 例來說,一些基元可在場(chǎng)景中的另一基元后方,且在一些情形中(例如,當(dāng)前方的基元為不 透明時(shí)或當(dāng)不使用摻合時(shí))將不可見。更確切地說,在以下情況下特定倉(cāng)中的基元可在最 終渲染的場(chǎng)景中不可見:如果基元經(jīng)背面剔除、如果基元并不命中倉(cāng)區(qū)域,或如果基元通過 例如低分辨率Z檢查等深度測(cè)試而被遮擋。執(zhí)行裝倉(cāng)遍次可包含執(zhí)行致使GPU120執(zhí)行圖 形管線的簡(jiǎn)化版本的命令,但具有額外步驟:基于深度測(cè)試(Z測(cè)試)和確定基元是否在最 終渲染的場(chǎng)景中可見的任何額外測(cè)試針對(duì)倉(cāng)中的每一基元更新可見性流。
[0061] 當(dāng)執(zhí)行特定渲染遍次時(shí),與所述特定渲染遍次相關(guān)聯(lián)的倉(cāng)的像素?cái)?shù)據(jù)可存儲(chǔ)在圖 形存儲(chǔ)器(例如圖1中展示的圖形存儲(chǔ)器122(有時(shí)稱為倉(cāng)緩沖器))中。在執(zhí)行渲染遍次 之后,GPU 120可將圖形存儲(chǔ)器122的內(nèi)容傳遞到幀緩沖器124。在一些情況下,GPU 120可 用存儲(chǔ)在圖形存儲(chǔ)器122中的數(shù)據(jù)重寫幀緩沖器124中的數(shù)據(jù)的一部分。在其它情況下, GPU 120可將幀緩沖器124中的數(shù)據(jù)與存儲(chǔ)在圖形存儲(chǔ)器122中的數(shù)據(jù)合成或組合。在將 圖形存儲(chǔ)器122的內(nèi)容傳遞到幀緩沖器124之后,GPU 120可將圖形存儲(chǔ)器122初始化為 默認(rèn)值且開始相對(duì)于不同倉(cāng)的后續(xù)渲染遍次。
[0062] 圖6為說明可經(jīng)配置以實(shí)施本發(fā)明的一或多個(gè)方面的裝置的實(shí)例的框圖。舉例來 說,圖6說明裝置602。裝置602的實(shí)例包含(但不限于)視頻裝置、媒體播放器、機(jī)頂盒、 無線手持機(jī)(例如移動(dòng)電話和所謂的智能電話)、個(gè)人數(shù)字助理(PDA)、臺(tái)式計(jì)算機(jī)、膝上型 計(jì)算機(jī)、游戲控制臺(tái)、視頻會(huì)議單元、平板計(jì)算裝置等等。
[0063] 在圖6的實(shí)例中,裝置602可包含處理器102、系統(tǒng)存儲(chǔ)器118和GPU 120。出于 簡(jiǎn)潔的目的,不相對(duì)于圖6進(jìn)一步描述處理器102、系統(tǒng)存儲(chǔ)器118和GPU 120,因?yàn)橄惹耙?經(jīng)相對(duì)于圖1描述了這些組件。裝置602還可包含顯示處理器624、收發(fā)器模塊626、用戶 接口 628和顯示器630。收發(fā)器模塊626和顯示處理器624兩者可為與處理器102和/或 GPU 120相同的集成電路(1C)的一部分,兩者可在包含處理器102和/或GPU120的1C外 部,或可形成于在包含處理器102和/或GPU 120的所述1C外部的1C中。
[0064] 出于清晰性的目的,裝置602可包含圖6中未圖示的額外模塊或單元。舉例來說, 裝置602可包含揚(yáng)聲器和麥克風(fēng)(其均未在圖6中展示)以在裝置602為移動(dòng)無線電話或 揚(yáng)聲器(其中裝置602為媒體播放器)的實(shí)例中實(shí)現(xiàn)電話通信。裝置602還可包含攝像機(jī)。 此外,裝置602中展示的各種模塊和單元在裝置602的每一實(shí)例中可并非必需的。舉例來 說,在其中裝置602為臺(tái)式計(jì)算機(jī)或經(jīng)裝備以與外部用戶接口或顯示器介接的其它裝置的 實(shí)例中,用戶接口 628和顯示器630可在裝置602外部。
[0065] 用戶接口 628的實(shí)例包含(但不限于)跟蹤球、鼠標(biāo)、鍵盤和其它類型的輸入裝 置。用戶接口 628還可為觸摸屏且可作為顯示器630的一部分并入。收發(fā)器模塊626可包 含用以允許裝置602與另一裝置或網(wǎng)絡(luò)之間的無線或有線通信的電路。收發(fā)器模塊626可 包含調(diào)制器、解調(diào)器、放大器和用于有線或無線通信的其它此類電路。
[0066] 在一些實(shí)例中,GPU 120可將完全形成的圖像存儲(chǔ)在系統(tǒng)存儲(chǔ)器118中。顯示處理 器624可從系統(tǒng)存儲(chǔ)器118檢索圖像,且輸出致使顯示器630的像素照明以顯示所述圖像 的值。顯示器630可為顯示由GPU 120產(chǎn)生的圖像內(nèi)容的裝置602的顯示器。顯示器630 可為液晶顯示器(IXD)、有機(jī)發(fā)光二極管顯示器(0LED)、陰極射線管(CRT)顯示器、等離子 體顯示器或另一類型的顯示裝置。
[0067] 在一或多個(gè)實(shí)例中,所描述功能可以用硬件、軟件、固件或其任何組合來實(shí)施。如 果在軟件中實(shí)施,那么可將所述功能作為一或多個(gè)指令或代碼而存儲(chǔ)在計(jì)算機(jī)可讀媒體上 或經(jīng)由計(jì)算機(jī)可讀媒體發(fā)射。計(jì)算機(jī)可讀媒體可包含計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)媒體或通信媒體,通 信媒體包含促進(jìn)將計(jì)算機(jī)程序從一處傳遞到另一處的任何媒體。數(shù)據(jù)存儲(chǔ)媒體可以是可由 由一或多個(gè)計(jì)算機(jī)或一或多個(gè)處理器存取以檢索用于實(shí)施本發(fā)明中描述的技術(shù)的指令、代 碼和/或數(shù)據(jù)結(jié)構(gòu)的任何可用的媒體。借助于實(shí)例而非限制,此些計(jì)算機(jī)可讀媒體可包括 RAM、ROM、EEPROM、CD-ROM或其它光盤存儲(chǔ)裝置、磁盤存儲(chǔ)裝置或其它磁性存儲(chǔ)裝置。如本 文所使用,磁盤和光盤包含壓縮光盤(CD)、激光光盤、光學(xué)光盤、數(shù)字多功能光盤(DVD)、軟 性磁盤和藍(lán)光光盤,其中磁盤通常以磁性方式再現(xiàn)數(shù)據(jù),而光盤用激光以光學(xué)方式再現(xiàn)數(shù) 據(jù)。上述各項(xiàng)的組合也應(yīng)包含在計(jì)算機(jī)可讀媒體的范圍內(nèi)。
[0068] 代碼可以由一或多個(gè)處理器執(zhí)行,所述一或多個(gè)處理器例如是一或多個(gè)數(shù)字信號(hào) 處理器(DSP)、通用微處理器、專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程邏輯陣列(FPGA)、或其它 等效的集成或離散邏輯電路。因此,如本文中所使用的術(shù)語(yǔ)"處理器"可指前述結(jié)構(gòu)或適合 于實(shí)施本文中所描述的技術(shù)的任何其它結(jié)構(gòu)中的任一者。另外,在一些方面中,本文所描述 的功能性可以提供于經(jīng)配置用于編碼和解碼的專用硬件和/或軟件模塊內(nèi),或者并入于組 合編解碼器中。而且,可將所述技術(shù)完全實(shí)施于一或多個(gè)電路或邏輯元件中。
[0069] 本發(fā)明的技