專利名稱:圖形分析技術(shù)的制作方法
圖形分析技術(shù)
背景技術(shù):
由計算機(jī)應(yīng)用使用的圖形正在變得越來越復(fù)雜。例如,游戲應(yīng)用通常提供在實時 基礎(chǔ)上被動畫化的三維圖形。這樣的圖形繼續(xù)逐漸變得更加逼真。隨著這樣的圖形的復(fù)雜性增大,對于應(yīng)用開發(fā)者的挑戰(zhàn)也增大。例如,開發(fā)者必須 調(diào)試未正確地工作或者顯現(xiàn)的圖形渲染。而且,開發(fā)者必須應(yīng)對受限的處理能力。因此,需 要分析和經(jīng)常地改善由圖形渲染施加的處理負(fù)荷,以符合這樣的受限能力。對圖形進(jìn)行測試、分析和調(diào)試的工具對于圖形應(yīng)用的開發(fā)是很重要的。
在附圖中,相同的標(biāo)號一般指示相同、功能類似和/或結(jié)構(gòu)類似的部件。其中部件 首次出現(xiàn)的圖用對應(yīng)標(biāo)號中的最左數(shù)位來指示。將參考附圖來描述本發(fā)明,其中圖1是示例性操作環(huán)境的圖;圖2是可以在圖形分析工具中包括的實現(xiàn)的圖;圖3是示例性用戶界面的圖;圖4-9是邏輯流程圖;以及圖10是示例性平臺的圖。
具體實施例方式實施例提供了用于分析圖形應(yīng)用的技術(shù)。例如,一種裝置可以包括圖形應(yīng)用程序 接口(API)、圖形引擎和圖形分析工具。所述圖形分析工具可以接收向圖形API發(fā)出的多 個繪制調(diào)用,并且將這些繪制調(diào)用布置為多個序列,每個序列對應(yīng)于特定的渲染目標(biāo)。根據(jù) 該信息,可以執(zhí)行各種分析任務(wù)。例如,可以產(chǎn)生超量繪制(overdraw)圖像。而且,可以根 據(jù)對應(yīng)的像素選擇來產(chǎn)生像素歷史。而且,還可以確定繪制調(diào)用對于所選擇的像素的效果。 而且,可以以每個渲染目標(biāo)為基礎(chǔ)執(zhí)行這些任務(wù)。在說明書中通篇提到“一個實施例”或者“一實施例”意指結(jié)合該實施例描述的特 定特征、結(jié)構(gòu)或特性被包括在至少一個實施例中。因此,短語“在一個實施例中”或“在一實 施例中”在說明書中各處出現(xiàn)并非必須全都指同一實施例。此外,所述特定特征、結(jié)構(gòu)或特 性可以在一個或多個實施例中以任何適當(dāng)?shù)姆绞浇M合。圖1是示例性操作環(huán)境100的圖,其可以使用在此描述的技術(shù)。環(huán)境100可以包括 各種部件。例如,圖1示出了環(huán)境100,其包括圖形應(yīng)用102、圖形應(yīng)用程序接口(API) 104、 圖形引擎106和圖形分析工具110。可以以硬件和/或軟件的任何組合來實現(xiàn)這些部件。 而且,實施例并不限于圖1的部件。在實施例中,圖形應(yīng)用102是計算機(jī)應(yīng)用(例如用戶應(yīng)用),其使用在一個或多個 顯示器上輸出的圖形(例如三維圖形)。示例性用戶應(yīng)用包括(但是不限于)視頻游戲和 仿真工具。圖形API 104向圖形應(yīng)用102提供圖形引擎106的服務(wù)。在實施例中,這可以通過各種例程、數(shù)據(jù)結(jié)構(gòu)、對象類和/或協(xié)議來提供。圖形API 104的這樣的使用在此被稱為 “繪制調(diào)用(draw call)”。實施例可以使用(但是不限于)商業(yè)可獲得的API。這樣的API 的示例包括OpenGL和DirectX等。在一般的操作中,圖形應(yīng)用102可以在圖形的產(chǎn)生中使用多個渲染目標(biāo)。渲染目 標(biāo)是受圖形應(yīng)用102通過圖形API 104發(fā)起的繪制操作影響的緩沖器(由圖形引擎106維 護(hù))??梢砸愿鞣N方式來使用多個渲染目標(biāo)。例如,圖形應(yīng)用102可以使用多個渲染目 標(biāo),其中,每個渲染目標(biāo)對應(yīng)于一個特定的效果。示例性效果包括(但是不限于)陰影效果、 霧化效果、光照效果和與運(yùn)動相關(guān)聯(lián)的模糊效果等。作為補(bǔ)充或者替代,多個渲染目標(biāo)中的 每一個可以對應(yīng)于一個或多個渲染的對象或者基元。但是,實施例不限于渲染目標(biāo)的這些 示例性使用。圖形引擎106執(zhí)行針對圖形應(yīng)用102圖形操作。如上所述,可以響應(yīng)于通過圖形 API 104接收和處理的繪制調(diào)用來執(zhí)行這樣的操作。示例性操作包括向顯示設(shè)備渲染和輸 出圖像(幀)。因此,圖形引擎106使用圖形管線。如上所述,可以以硬件和/或軟件的任 何組合來實現(xiàn)圖形引擎106。因此,在實施例中,圖形引擎106包括圖形處理單元(GPU)。圖1示出了耦合到圖形API 104和圖形引擎106的圖形分析工具110。圖形分析 工具110可以執(zhí)行涉及分析圖形應(yīng)用的操作。為此,圖形分析工具110可以獲得由圖形應(yīng) 用102作出的繪制調(diào)用。根據(jù)這些繪制調(diào)用,圖形分析工具110可以使用圖形引擎106來 產(chǎn)生關(guān)于繪制調(diào)用的操作信息。這樣的信息可以包括(但是不限于)超量繪制圖像和像素 歷史。而且,圖形分析工具110可以獲得(或者捕獲)由圖形引擎106渲染的幀。而且, 圖形分析工具110可以獲得與這些所捕獲的幀相關(guān)的繪制調(diào)用。而且,圖形分析工具110 可以控制產(chǎn)生對應(yīng)于應(yīng)用102的幀的速率。通過這樣的控制,可以以期望步調(diào)來使幀步進(jìn)。 這樣的步調(diào)可以由用戶建立。如上參考圖1所描述的,圖形分析工具110可以執(zhí)行涉及分析圖形應(yīng)用的操作。圖 2是可以在圖形分析工具110中包括的示例性實現(xiàn)200的圖。圖2示出了實現(xiàn)200,其包括 圖形API攔截器模塊202、圖形API調(diào)用日志數(shù)據(jù)庫204、重建模塊206、超量繪制分析模塊 207、像素歷史分析模塊208、重放模塊210和用戶界面模塊212??梢砸杂布?或軟件的 任何組合來實現(xiàn)這些部件。圖形API攔截器模塊202復(fù)制圖形應(yīng)用(諸如圖形應(yīng)用102)產(chǎn)生的圖形API操 作(在此被稱為繪制調(diào)用)。而且,圖形API攔截器模塊202將所復(fù)制的繪制調(diào)用轉(zhuǎn)發(fā)到圖 形API調(diào)用日志數(shù)據(jù)庫204。繼而,圖形API調(diào)用日志數(shù)據(jù)庫204存儲這些所接收的繪制調(diào)用。圖形API調(diào)用日志數(shù)據(jù)庫204可以以各種方式存儲所接收的繪制調(diào)用。例如,圖 形API調(diào)用日志數(shù)據(jù)庫204可以以時間順序存儲繪制調(diào)用。而且,可以按照針對多個渲染 目標(biāo)中的每一個的繪制調(diào)用來安排這樣的按時間順序的存儲。重建模塊206可以根據(jù)在圖形API調(diào)用日志數(shù)據(jù)庫204中存儲的繪制調(diào)用來產(chǎn)生 各種圖像(幀)。這樣的重建包括使用圖形引擎,諸如圖形引擎106。而且,在產(chǎn)生這樣的 圖像的過程中,重建模塊206可以引導(dǎo)圖形引擎來使用特定的設(shè)置。例如,可以改變設(shè)置,
4以使得渲染圖像指示發(fā)生的特定事件(例如超量繪制)的數(shù)量。而且,重建模塊206可以 啟動或者停用在圖形引擎中的各種管線測試。超量繪制分析模塊207 (以每個渲染目標(biāo)為基礎(chǔ))確定與特定繪制調(diào)用相關(guān)聯(lián)的 超量繪制。這可以包括引導(dǎo)重建模塊206基于所選擇的(或者是用戶選擇的或者是自動 選擇的)繪制調(diào)用和渲染目標(biāo)來產(chǎn)生各種超量繪制圖像。下面參考圖4來描述關(guān)于這些特 征的示例性操作。像素歷史分析模塊208確定使得像素被寫入(“觸及(touch) ”)的繪制調(diào)用序列。 這可以包括引導(dǎo)重建模塊206根據(jù)各種設(shè)置來產(chǎn)生特定圖像。下面參考圖5、6和7來描 述關(guān)于這些特征的示例性操作。用戶界面模塊210提供了與圖形分析工具110的用戶交互。例如,在實施例中,用 戶界面模塊210提供了圖形用戶界面,其提供了在此所描述的技術(shù)的高效用戶操作。幀存儲模塊212存儲由圖形引擎(例如圖形引擎106)產(chǎn)生的一個或多個幀(圖 像)。這些幀包括對應(yīng)于可以在顯示設(shè)備(未示出)上輸出的位置的多個像素。所述幀可 以具有各種格式。示例性格式包括(但是不限于)各種RGB和CMYK格式。而且,幀捕獲數(shù) 據(jù)庫108可以使用各種壓縮和/或編碼方案來存儲幀。在實施例中,可以根據(jù)在此所描述的技術(shù)來產(chǎn)生這些幀。例如,幀存儲模塊212可 以存儲通過應(yīng)用102、圖形API 104和圖形引擎106的正常操作產(chǎn)生的幀。而且,幀存儲模 塊212可以存儲包括超量繪制圖像幀、像素歷史幀和其他類型的幀在內(nèi)的各種幀。實施例提供了用戶界面,其向用戶顯示與圖形相關(guān)的信息。圖3是示例性用戶界 面(也稱為界面控制臺)300的圖。界面控制臺300允許用戶觀看與圖形操作相關(guān)聯(lián)的各 種信息。如圖3中所示,界面控制臺300包括繪制調(diào)用域302、渲染目標(biāo)域304、圖像渲染域 306和像素歷史域308。渲染目標(biāo)域304指示與特定圖像相關(guān)聯(lián)的多個渲染目標(biāo)。在實施例中,這樣的渲 染目標(biāo)可以被指示為圖標(biāo)或者其他圖形表示。用戶可以通過⑶I交互(例如通過光標(biāo)定位 和雙擊)來選擇特定的繪制調(diào)用。在實施例中,繪制調(diào)用域302以時間順序(例如從左向右)條形圖的形式指示繪 制調(diào)用(例如對應(yīng)于在域304選擇的渲染目標(biāo)的繪制調(diào)用)。因此,每個條形對應(yīng)于特定的 繪制調(diào)用。而且,每個條形的高度指示由對應(yīng)的繪制調(diào)用引起的圖形引擎操作(例如管線 操作)的數(shù)量。在實施例中,用戶可以通過GUI交互(例如通過光標(biāo)定位和雙擊)來選擇 特定的繪制調(diào)用。根據(jù)所選擇的繪制調(diào)用,用戶可以在圖像渲染域306中觀看超量繪制圖像。下文 中參考圖4來描述涉及超量繪制圖像的特征。根據(jù)這樣的超量繪制圖像,用戶可以選擇特 定的像素來進(jìn)行分析。根據(jù)這樣的像素選擇,可以在圖像渲染域306中顯示像素歷史圖像。 而且,可以在像素歷史域308中顯示繪制調(diào)用的對應(yīng)像素歷史。下文中參考圖5-7來提供 關(guān)于像素歷史的示例性細(xì)節(jié)??梢詤⒖枷旅娴母綀D和所附的示例進(jìn)一步描述各個實施例的操作。一些附圖可以 包括邏輯流程。雖然在此給出的這些附圖可以包括特定的邏輯流程,但是可以明白,所述邏 輯流程僅僅提供了可以如何實現(xiàn)在此所描述的一般功能的示例。而且,除非另外指示,否則 并不必然需要以所給出的順序來執(zhí)行給定的邏輯流程。另外,可以通過硬件部件、由一個或多個處理器執(zhí)行的軟件部件或者其任何組合來實現(xiàn)給定的邏輯流程。實施例并不限于此。實施例提供了用于分析圖形應(yīng)用的各種技術(shù)。這樣的技術(shù)包括對超量繪制、像素 歷史和繪制調(diào)用等進(jìn)行分析。而且,這樣的技術(shù)可以使用替代的圖像重建和表示。這些替代的重建和表示可以有利地允許從圖形場景中更快地提取性能相關(guān)的信 息。這種替代的重建和表示的示例包括以每個渲染目標(biāo)為基礎(chǔ)執(zhí)行的超量繪制分析。根據(jù) 該分析,可以產(chǎn)生對應(yīng)的像素歷史。這些特征可以有利地支持從圖形操作的序列中提取要 不然會隱藏的信息。下面參考圖4描述涉及這樣的超量繪制分析和像素歷史產(chǎn)生的示例。圖4說明了邏輯流程400,其可以表示由一個或多個實施例執(zhí)行的操作。在圖1 和2的環(huán)境中描述該流程。但是,該流程也可以在其他環(huán)境中使用。雖然圖4示出了特定 序列,但是也可以使用其他序列。而且,可以以各種并行和/或順序組合來執(zhí)行所描述的操 作。在框402,存儲圖形API調(diào)用(繪制調(diào)用)的序列。這個序列可以對應(yīng)于特定圖 像(幀)。在圖2的環(huán)境中,這可以包括API攔截器模塊202攔截這些繪制調(diào)用,以及圖形 API調(diào)用日志數(shù)據(jù)庫204存儲它們。在框404,將所存儲的API調(diào)用的序列分類為針對多個渲染目標(biāo)中的每一個的序 列。參考圖2,這可以包括重建模塊206根據(jù)每個API調(diào)用來確定渲染目標(biāo)。在實施例中, 重建模塊206可以使用圖形引擎(例如圖形引擎106)來進(jìn)行該操作。在框406,對于這些渲染目標(biāo)組中的每一個,創(chuàng)建超量繪制圖像。再一次參見圖2, 這可以包括重建模塊206引導(dǎo)圖形引擎(例如圖形引擎106)來執(zhí)行針對每個渲染目標(biāo)的 繪制調(diào)用。但是,取代正常操作的是,圖形引擎被配置為使得像素值被累加。更具體地,圖 形引擎可以被配置,從而繪制調(diào)用使得對應(yīng)的渲染目標(biāo)像素值在每次這些像素被寫入(“觸 及”)時被進(jìn)行累加(遞增像素命中計數(shù))。因此,在每個渲染目標(biāo)中,產(chǎn)生針對每個像素的 計數(shù)。該計數(shù)指示該像素被觸及多少次。在框408,選擇渲染目標(biāo)之一。該選擇可以是由用戶來進(jìn)行或者是自動進(jìn)行。在實 施例中,該渲染目標(biāo)可以選自在顯示器上提供(例如作為圖標(biāo)或者其他圖形表示)的包括 多個渲染目標(biāo)的列表。在框409,可以在視覺上增強(qiáng)所選擇的渲染目標(biāo)的超量繪制圖像。這種增強(qiáng)可以包 括提高超量繪制圖像的動態(tài)范圍。下文中參考圖8描述了關(guān)于這種增強(qiáng)的細(xì)節(jié)。在框410,顯示針對所選擇的渲染目標(biāo)的超量繪制圖像。如上所述,超量繪制圖像 表示了像素已經(jīng)被觸及的次數(shù)。在實施例中,這些數(shù)量可以被表示為在所顯示的超量繪制 圖像中的像素亮度。但是,實施例并不限于這個特征。在框412,可以選擇這個超量繪制圖像的一個或多個對應(yīng)像素。這種選擇可以由 用戶來進(jìn)行或者通過自動技術(shù)來進(jìn)行。用戶選擇可以包括通過圖形用戶界面(GUI)來與 超量繪制圖像進(jìn)行交互。例如,用戶可以通過光標(biāo)、通過圖形十字線、通過輸入數(shù)值坐標(biāo)和 /或通過其他技術(shù)來選擇像素??商娲兀詣舆x擇可以包括根據(jù)像素的超量繪制值來自 動地選擇所述像素。例如,可以自動地選擇指示最高觸及次數(shù)的像素。在框414,為用戶獲得一個或多個所選擇的像素中的每一個的像素歷史。像素歷史 可以包括影響過該像素(或者導(dǎo)致對其進(jìn)行過寫入)的每個繪制調(diào)用。在實施例中,這些 繪制調(diào)用可以被限制為僅僅是影響在框408選擇的渲染目標(biāo)的那些繪制調(diào)用。但是,作為補(bǔ)充或者替代地,實施例可以提供影響其他渲染目標(biāo)的對應(yīng)繪制調(diào)用。在框416,可以顯示該像素歷史。在實施例中,這種顯示可以是圖標(biāo)序列的形式,其 中每個圖標(biāo)表示一個繪制調(diào)用。用戶可以在這樣的圖標(biāo)上進(jìn)行選擇(例如雙擊)來觀看關(guān) 于該繪制調(diào)用的詳細(xì)信息。但是,也可以使用顯示像素歷史的其他技術(shù)(例如文本列表)。圖4的流程有利地提供了用于從場景中最復(fù)雜的像素中提取信息的直接方式。例 如,根據(jù)在框410顯示的超量繪制圖像,可以選擇已經(jīng)被觸及的次數(shù)相對較大的像素(也被 稱為具有高復(fù)雜性的像素)。如上所述,可以通過其顯示亮度來使這樣的像素明顯。在選擇了具有高復(fù)雜性的像素后,用戶可以觀看影響過該像素的API調(diào)用(像素 歷史)。另外,用戶可以觀看圖像的正常表示(非超量繪制表示)。通過分析繪制調(diào)用,用 戶可以確定是否可以進(jìn)行更高效的一組API調(diào)用。因此,通過識別這樣的像素,開發(fā)者可以 改善應(yīng)用以減少繪制像素的次數(shù)。這可以有利地提高圖形應(yīng)用性能。如上所述,實施例提供了關(guān)于像素的信息的提取。而且,實施例可以向用戶通知繪 制調(diào)用使得像素被觸及的次數(shù)。單個繪制調(diào)用可以觸及特定像素不止一次。例如,命令圖 形引擎(例如圖形引擎106)渲染三維對象的繪制調(diào)用可能需要圖形引擎渲染具有重疊的 像素位置的表面。作為示例,渲染的立方體可以具有重疊的前側(cè)與后側(cè)。實施例可以(針 對特定的渲染目標(biāo))在每次一特定的繪制調(diào)用觸及一個像素時進(jìn)行檢測和指示。下面參考 圖5來描述涉及這樣的特征的示例。圖5說明了邏輯流程500,其可以表示由一個或多個實施例執(zhí)行的操作。在圖1和 2的環(huán)境中描述該流程。但是,該流程也可以在其他環(huán)境中使用。雖然圖5示出了特定的 序列,但是也可以使用其他序列。而且,可以以各種并行和/或順序組合來執(zhí)行所描述的操作。在框502,選擇渲染目標(biāo)??梢杂捎脩暨M(jìn)行這種選擇??商娲兀@種選擇可以是 自動進(jìn)行的。而且,在框504,選擇一個或多個像素??梢砸愿鞣N方式來選擇該像素。例如, 該像素可以是基于超量繪制由用戶選擇或者自動選擇的,如上參考圖4所描述的。但是,實 施例并不限于此。在框506,用戶選擇對應(yīng)于所選擇的像素的繪制調(diào)用。例如,用戶可以從在像素歷 史(諸如在圖4的框414產(chǎn)生的像素歷史)中識別的多個繪制調(diào)用(例如繪制調(diào)用的序 列)中選擇該繪制調(diào)用。相應(yīng)地,如果這是序列中的第一個選擇,則實施例可以在框507將 其指定為初始選擇的繪制調(diào)用。此時,可以在框509確定關(guān)于觸及(在所選擇的渲染目標(biāo)中的)所選擇的像素的 次數(shù)的信息。在實施例中,該確定可以針對所選擇的繪制調(diào)用。可替代地,該確定可以針對 繪制調(diào)用的序列,該序列從在框507指定的初始繪制調(diào)用開始,并且以在框506選擇的繪制 調(diào)用為結(jié)束。如圖5中所示,這樣的確定可以包括多個階段(pass)。例如,第一階段可以包括 執(zhí)行繪制調(diào)用,而不啟動任何圖形管線測試。此外,第二階段可以包括執(zhí)行繪制調(diào)用,其中 啟動特定的圖形管線測試。此外,第三階段可以包括執(zhí)行繪制調(diào)用,其中進(jìn)行阿爾法混合 (alpha blending)。在框509中的這三個階段的描述是為了說明而不是限定的目的。相應(yīng) 地,實施例可以使用其他的階段組合和/或其他序列。下文中參考圖6提供關(guān)于這些階段 的另外的細(xì)節(jié)。
在框510,用戶可以選擇下一個繪制調(diào)用。該下一個繪制調(diào)用可以是在影響所選擇 的渲染目標(biāo)中所選擇的像素的繪制調(diào)用的按時間順序的序列內(nèi)。例如,該下一個繪制調(diào)用 可以是跟隨在最近選擇(在框506或者框510)的繪制調(diào)用之后的繪制調(diào)用。如圖5中所 示,如果選擇了下一個繪制調(diào)用,則操作返回到框509。因此,圖5的特征允許用戶選擇一個或多個感興趣的繪制調(diào)用,并且分析它(或它 們)對于特定像素的影響。這樣的特征有利地允許評估一個場景的在特定渲染目標(biāo)的任何 像素上的復(fù)雜性。這個信息可以有利地幫助用戶決定是否降低特定場景的復(fù)雜性或者修改 應(yīng)用設(shè)置以提高特定3D操作的性能。如上所述,可以以多個階段來執(zhí)行關(guān)于(所選擇的渲染目標(biāo)中)所選擇的像素被 觸及的次數(shù)的確定。圖6提供了這樣的多個階段的示例。具體地,圖6是包括第一階段602、第二階段604和第三階段606的流程圖600。 這些階段中的每一個包括多個操作。例如,圖6示出了第一階段602,其包括框610-614。 在框610,禁止特定的圖形管線測試(例如剪裁測試、矩形測試、Z測試,模板測試(stencil test)和/或阿爾法測試)。在框612,確定在禁止這些測試的同時繪制調(diào)用觸及了所選擇 的像素多少次。這可以包括使用修改的渲染操作來執(zhí)行繪制調(diào)用。例如,可以修改像素著 色器代碼,以使得每次繪制調(diào)用觸及所選擇的像素時提高(例如遞增1)所選擇的像素的明 暗度(shading)。但是實施例并不限于這種技術(shù)。該確定的結(jié)果在框614被輸出給用戶。這些結(jié)果可以以圖形形式(例如在所選擇 的像素位置被顯示為對應(yīng)的亮度、明暗度或者透明度)被輸出??商娲兀@些結(jié)果可以以 文本形式被輸出。圖6示出了包括框620-632的第二階段604。在框620,用戶可以啟動特定測試。 例如,用戶可以啟動有范圍的剪裁測試、ζ測試或者模板測試。在框622,確定是否選擇了測 試。如果是,則操作進(jìn)行到框624。否則,操作進(jìn)行到在框640處的第三階段。在框624,清理所選擇的渲染目標(biāo)。其后,在框626,在圖形引擎中使能所選擇的測 試。在框628,執(zhí)行繪制調(diào)用。在框630,這些繪制調(diào)用的結(jié)果被輸出給用戶。這些結(jié)果可以以圖形形式被輸出 (例如在所選擇的像素位置被顯示為對應(yīng)的亮度或者透明度)。可替代地,可以以文本形式 輸出這些結(jié)果。如果結(jié)果是0(沒有像素值),則這指示所選擇的測試在其每次被調(diào)用時都 失敗。但是,如果結(jié)果不是0,則至少有一次被調(diào)用時通過了所選擇的測試。如框632所示,用戶可以選擇另一個測試。如果是,則操作返回到框620。否則,操 作進(jìn)行到在框640處的第三階段。圖6示出了包括框640的第三階段。在這個框處,執(zhí)行正常的渲染以確定像素的 輸出顏色。對于圖6的流程,現(xiàn)在進(jìn)一步提供關(guān)于一個像素已經(jīng)被觸及的次數(shù)的各種非限定 性說明示例。例如,“觸及”次數(shù)可以是所渲染的幾何形狀與該像素相交的次數(shù)。例如,當(dāng)被 渲染的幾何形狀是包含在兩個面的三角形的球體時,則中央像素將具有為2的超量繪制計 數(shù)一次針對正面,一次針對背面。(在這種情況下禁止ζ測試)。而且,如果所渲染的幾何 形狀是包含在一個面的三角形的球體,則中央像素將具有為1的超量繪制計數(shù)一次針對 正面,0次針對背面(因為其被背面剔除,(在這種情況下使能剔除))。
8
而且,“觸及”的次數(shù)可以是該像素實際被寫入到緩沖器的次數(shù)(丟棄了幾何形狀 被ζ測試拒絕的次數(shù))。例如,當(dāng)從觀看者的角度看渲染在彼此上方的三個三角形時,觸及 的次數(shù)取決于繪制順序。例如,如果最遠(yuǎn)的首先被繪制,然后是中間的,再然后是最近的,則 對于其中所有三個三角形都重疊的像素計數(shù)將是3。然而,如果最近的首先被繪制,然后是 中間的,再然后是最遠(yuǎn)的,則對于同樣的像素,計數(shù)將是1。這是因為后兩次被ζ測試拒絕。如上所述,實施例允許用戶確定繪制調(diào)用對于特定像素的效果。而且,實施例允許 禁止繪制調(diào)用。例如,用戶可以禁止一個或多個繪制調(diào)用,并且確定該禁止對于像素處理的 影響。因此,可以確定計算的差別。例如,可以確定場景渲染是否變得更快。而且,用戶可 以確定該禁止對于所渲染的圖像在視覺上的影響。例如,用戶可以確定禁止繪制調(diào)用是否 使得場景看起來不可接受。下面參考圖7來描述涉及這樣的特征的示例。圖7說明了邏輯流程700,其可以表示由一個或多個實施例執(zhí)行的操作。在圖1和 2的環(huán)境中描述了該流程。但是,該流程也可以在其他環(huán)境中使用。雖然圖7示出了特定 序列,但是也可以使用其他序列。而且,可以以各種并行和/或順序組合來執(zhí)行所描述的操 作。如圖7中所示,在框702,選擇渲染目標(biāo)。該選擇可以由用戶進(jìn)行或者通過自動技 術(shù)進(jìn)行。同樣,在框704,選擇像素??梢砸愿鞣N方式來選擇該像素。例如,像素可以是用戶 選擇的或者自動選擇的,如上參考圖4所描述的。但是,實施例并不限于此。在框706,用戶選擇要禁止的一個或多個繪制調(diào)用。該選擇可以是從繪制調(diào)用序 列中進(jìn)行的。在框708,針對繪制調(diào)用序列確定像素歷史。在實施例中,這可以包括執(zhí)行如 上參考圖5所描述的操作。因此,可以確定在有禁止的繪制調(diào)用的情況下像素被觸及的次 數(shù)。如上參考圖5所描述的,可以在啟動或者停用各種圖形管線測試(例如剪裁測試、矩形 測試、Z測試,模板測試和/或阿爾法測試)的情況下來進(jìn)行這樣的確定。因為被禁止的繪 制調(diào)用不被渲染,所以針對隨后的繪制調(diào)用進(jìn)行這樣的測試可能具有不同的測試結(jié)果。因 此,禁止繪制調(diào)用提供了動態(tài)像素歷史。在框710,在禁止所選擇的繪制調(diào)用的情況下針對繪制調(diào)用序列來渲染圖像。在框 712,向用戶顯示所渲染的圖像。如上所述,實施例提供了超量繪制圖像。而且,實施例提供了這樣的能力使能或 者禁止任何用戶選擇的繪制調(diào)用,以分解超量繪制圖像的構(gòu)成,并且更深度地檢查所渲染 的像素。超量繪制圖像可以包含難以在視覺上識別的細(xì)小差別。例如,一個區(qū)域可能比相 鄰的區(qū)域略暗(因此指示了在所述區(qū)域已經(jīng)被觸及的次數(shù)上有差別)。實施例可以在視覺 上增強(qiáng)這些差別。例如,在圖4的框409,增強(qiáng)超量繪制圖像。這樣的增強(qiáng)可以提高超量繪制圖像的動態(tài)范圍。結(jié)果,在超量繪制圖像中的細(xì)小 差別顯著地變得更容易看到??梢允褂酶鞣N技術(shù)來提供這種動態(tài)范圍上的提高。例如,實 施例可以使用箝入(clamping)操作。圖8說明了邏輯流程800,其可以表示由一個或多個實施例執(zhí)行的操作。雖然圖8 示出了特定序列,但是也可以使用其他序列。而且,可以以各種并行和/或順序組合來執(zhí)行 所描述的操作。在框802,提供超量繪制圖像。在框804,確定在超量繪制圖像中的最小和最大值。
9
在框806,根據(jù)最小和最大值來產(chǎn)生矩陣。然后在框808,使用所述矩陣來處理超 量繪制圖像。該處理產(chǎn)生可以在框810顯示的增強(qiáng)的超量繪制圖像?,F(xiàn)在提供這種技術(shù)的示例。這個示例包含5x5矩陣。這是對圖像數(shù)據(jù)執(zhí)行線 性操作的標(biāo)準(zhǔn)技術(shù)。假定像素值在范圍W,255]內(nèi),并且矩陣值是浮點(diǎn)縮放因子(scale factor),使用下面的公式[Mrr Mrg Mrb Mra 0 ][ Mgr Mgb Mgb Mga 0 ] [Ob] =[ Ir Ig Ib Ia 1] [ Mbr Mbg Mbb Mba 0 ][ Mar Mag Mab Maa 0 ][TlrTlgTlbTla 1 ]這是基本矩陣乘法運(yùn)算,其中,原始的RGBA圖像顏色(Ir,Ig, lb, Ia)乘以5x5矩 陣M,以計算經(jīng)調(diào)整的RGBA圖像顏色(Or,0g, Ob, 0a)。通過調(diào)整M的20個可變元素的值, 可以執(zhí)行許多顏色調(diào)整操作。在超量繪制圖像的情況下,調(diào)整矩陣值來縮放超量繪制圖像 以擴(kuò)展感興趣的數(shù)據(jù)的范圍。作為示例,假定在整個渲染目標(biāo)中的每個像素被寫入20次(假定整個渲染目標(biāo)四 元組都在彼此的頂部被混合),然后假定向渲染目標(biāo)寫入另外3個小三角形,其中兩個具有 一些重疊。在這個示例中,大多數(shù)像素將具有為20的超量繪制,幾個像素將具有為21的超 量繪制(這幾個像素被所述小三角形所觸及),還有幾個像素將具有為22的超量繪制(這 幾個像素位于重疊的兩個小三角形的相交處)。如果用戶正常地觀看該圖像,則其看起來很暗,并且很難看到該幀的具有超量繪 制值為21和22的部分。在這個實施例中,觀看經(jīng)調(diào)整的圖像,其中,正常圖像中的每個像 素乘以矩陣M以計算超量繪制圖像經(jīng)調(diào)整的顏色。這里是所使用的值,假定采用8比特的 顏色通道(在原始和超量繪制圖像中的RGBA值中的每一個具有在W,255]內(nèi)的值),但是 這種技術(shù)將不限于這種情況,并且如果使用了不同的色深也會工作let min = 20//在超量繪制圖像中的最小值let max = 22//在超量繪制圖像中的最大值let delta 彡(min—max)//負(fù) deltaif (delta = 0)delta = _1 ;// 保證 delta 不是 0let s 彡(_255/delta)/3 ;//縮放let t ( min/delta ;// 平移set M to [s s s 0 0][S S S 0 0 ]
[t t t 1 1]給定這個示例和下面的矩陣計算,在圖像中有三個唯一的原始值
10
這些值通過矩陣乘法而進(jìn)行下面的變換
權(quán)利要求
一種方法,包括基于多個圖形應(yīng)用程序接口(API)繪制調(diào)用來創(chuàng)建超量繪制圖像;根據(jù)所創(chuàng)建的超量繪制圖像來產(chǎn)生在視覺上增強(qiáng)的超量繪制圖像;以及顯示所述在視覺上增強(qiáng)的超量繪制圖像。
2.根據(jù)權(quán)利要求1所述的方法,其中,產(chǎn)生所述在視覺上增強(qiáng)的超量繪制圖像包括提 高所創(chuàng)建的超量繪制圖像內(nèi)的動態(tài)范圍。
3.根據(jù)權(quán)利要求1所述的方法,其中,創(chuàng)建所述超量繪制圖像包括每次像素被寫入時 累加像素值。
4.根據(jù)權(quán)利要求1所述的方法,還包括在有形存儲介質(zhì)中存儲所創(chuàng)建的超量繪制圖像。
5.根據(jù)權(quán)利要求1所述的方法,還包括在有形存儲介質(zhì)中存儲所述在視覺上增強(qiáng)的 超量繪制圖像。
6.一種裝置,包括圖形應(yīng)用程序接口(API); 圖形引擎;以及圖形分析工具,所述圖形分析工具用于基于多個圖形應(yīng)用程序接口(API)繪制調(diào)用來創(chuàng)建超量繪制圖像; 根據(jù)所創(chuàng)建的超量繪制圖像來產(chǎn)生在視覺上增強(qiáng)的超量繪制圖像;以及 顯示所述在視覺上增強(qiáng)的超量繪制圖像。
7.根據(jù)權(quán)利要求6所述的裝置,其中,產(chǎn)生所述在視覺上增強(qiáng)的超量繪制圖像包括提 高所創(chuàng)建的超量繪制圖像的動態(tài)范圍。
8.根據(jù)權(quán)利要求6所述的裝置,其中,所述圖形引擎包括圖形處理單元(GPU)。
9.根據(jù)權(quán)利要求6所述的裝置,還包括顯示設(shè)備,所述圖形分析工具在所述顯示設(shè)備 上顯示所述在視覺上增強(qiáng)的超量繪制圖像。
10.根據(jù)權(quán)利要求6所述的裝置,還包括有形存儲介質(zhì),用于存儲所述在視覺上增強(qiáng)的 超量繪制圖像。
11.一種制品,包括其上存儲有指令的機(jī)器可訪問介質(zhì),當(dāng)所述指令被機(jī)器執(zhí)行時使得 所述機(jī)器基于多個圖形應(yīng)用程序接口(API)繪制調(diào)用來創(chuàng)建超量繪制圖像; 根據(jù)所創(chuàng)建的超量繪制圖像來產(chǎn)生在視覺上增強(qiáng)的超量繪制圖像;以及 顯示所述在視覺上增強(qiáng)的超量繪制圖像。
12.根據(jù)權(quán)利要求11所述的制品,其中,所述在視覺上增強(qiáng)的超量繪制圖像具有比所 創(chuàng)建的超量繪制圖像更大的動態(tài)范圍。
全文摘要
實施例提供了用于分析圖形應(yīng)用的技術(shù)。例如,一種裝置可以包括圖形應(yīng)用程序接口(API)、圖形引擎以及圖形分析工具。所述圖形分析工具可以接收向所述圖形API發(fā)出的多個繪制調(diào)用,將所述多個繪制調(diào)用布置為多個序列,每個序列對應(yīng)于特定的渲染目標(biāo)。根據(jù)該信息,可以執(zhí)行各種分析任務(wù)。例如,可以產(chǎn)生超量繪制圖像。這樣的超量繪制圖像可以被增強(qiáng)以提高它們的動態(tài)范圍。而且,可以根據(jù)對應(yīng)的像素選擇來產(chǎn)生像素歷史。還可以確定繪制調(diào)用對于所選擇的像素的效果。而且,可以以每個渲染目標(biāo)為基礎(chǔ)執(zhí)行這樣的任務(wù)。
文檔編號G06T13/20GK101937573SQ20101021429
公開日2011年1月5日 申請日期2010年6月25日 優(yōu)先權(quán)日2009年6月26日
發(fā)明者C·J·科馬克, L·E·維克斯特倫 申請人:英特爾公司