使用圖形管線對二維曲線的細化的制作方法
【專利說明】使用圖形管線對二維曲線的細化
【背景技術(shù)】
[0001] 二維(2D)圖形庫的主要任務(wù)之一是取得場景數(shù)據(jù),將其細化(tessellate)成諸如 弧線、貝塞爾(Bezier)曲線和線段運樣的高級圖元(primitive),并將所述數(shù)據(jù)光柵化W用 于在計算機顯示器上輸出或用于W位圖文件格式存儲。為了速度,圖形庫可W將呈現(xiàn) (render)的一些級(stage)卸載到圖形處理單元(GPU)上。諸如弧線和貝塞爾曲線運樣的幾 何圖形典型地對卸載提出了特殊的挑戰(zhàn),因為GPU通常不能使用(consume)運樣的幾何圖形 或者只能W高的每像素成本來使用運些類型的幾何圖形。因此,在卸載之前,中央處理單元 (CPU)必須首先將弧線和貝塞爾曲線轉(zhuǎn)變成GPU可W處理的低級圖元,比如S角形。運耗用 了寶貴的CPU處理能力并且常常在呈現(xiàn)過程中導致瓶頸。
【發(fā)明內(nèi)容】
[0002] 本概要被提供來W簡化的形式介紹概念的選擇,運些概念還將在下面的詳細說明 中進行描述。本概要既不打算標識所要求保護的主題的關(guān)鍵特征或必要特征,也不打算在 確定所要求保護的主題的范圍時被用作為幫助。
[0003]本發(fā)明的實施例設(shè)及尤其(among other things)用于使用運行在GPU上的圖形管 線來高效地細化2D曲線的系統(tǒng)、方法和計算機存儲介質(zhì)。CPU將具有一個或多個2D曲線的場 景數(shù)據(jù)和/或?qū)ο筠D(zhuǎn)換成具有至少一個貝塞爾扇形的中間細化(tessellation)。中間細化 被發(fā)送到圖形管線(gra地ics pipeline)上。圖形管線中的外殼著色器化ull shader)被配 置成通過基于包含貝塞爾扇形的控制點的定界框的寬度或高度的最大值來將貝塞爾扇形 曲線再分(subdivide)為定義數(shù)目的S角形而近似該曲線。圖形管線中的域著色器被配置 成沿著貝塞爾扇形的曲線確定對于每個所定義的=角形的頂點位置。
[0004]本發(fā)明的實施例可W與目標獨立光柵化(TIR)相結(jié)合地使用。TIR使得能獨立于為 所呈現(xiàn)的圖像分配的存儲器來指定在圖形管線中的光柵化級期間采用的像素采樣的數(shù)目 (稱為"采樣率")。
【附圖說明】
[000引 W下參考附圖詳細地描述了本發(fā)明,其中: 圖1是適合在實現(xiàn)本發(fā)明的實施例時使用的示范性計算環(huán)境的框圖; 圖2是適合在實現(xiàn)本發(fā)明的實施例時使用的示范性計算系統(tǒng)架構(gòu)的框圖,該示范性計 算系統(tǒng)架構(gòu)用于定義針對二維曲線的細化方法學; 圖3是適合在實現(xiàn)本發(fā)明的實施例時使用的圖形管線的圖,該圖形管線在將具有一個 或多個=角形和一個或多個貝塞爾扇形的中間細化光柵化中使用; 圖4是根據(jù)本發(fā)明的實施例的貝塞爾扇形的圖示; 圖5是根據(jù)本發(fā)明的實施例的中間細化的圖示; 圖6是根據(jù)本發(fā)明的實施例的、在運行于圖形處理單元上的圖形管線中已被細化的中 間細化的圖示; 圖7是根據(jù)本發(fā)明的實施例的、包圍貝塞爾扇形的四個控制點的定界框的圖示; 圖8是根據(jù)本發(fā)明的實施例的、在運行于圖形處理單元上的圖形管線中已被細化的中 間細化的圖示; 圖9是根據(jù)本發(fā)明的實施例的、呈現(xiàn)抗銀齒(antialias)的二維曲線的示范性方法的流 程圖;W及 圖10是根據(jù)本發(fā)明的實施例的、指令圖形處理單元來細化二維曲線的示范性方法的流 程圖。
【具體實施方式】
[0006] 本發(fā)明的主題在運里用特異性來描述,W滿足法定要求。然而,描述本身不打算限 制本專利的范圍。而是,本發(fā)明人預期所要求保護的主題也可W與其它當前的或?qū)淼募?術(shù)相結(jié)合地W其它方式來具體化,W便包括不同的步驟或類似于在本文檔中描述的步驟的 步驟組合。而且,雖然術(shù)語"步驟"和/或"方塊"在運里可被使用來意指所采用的方法的不同 單元,但運些術(shù)語不應(yīng)當被解譯為暗示在運里公開的各種步驟中間或之間的任何特定的次 序,除非且除了是在個體步驟的次序被明確地描述時。
[0007] 本文描述的技術(shù)的各方面總體上針對尤其用于使用運行在GPU上的圖形管線來高 效地細化2D曲線的系統(tǒng)、方法和計算機存儲介質(zhì)。CPU將具有一個或多個2D曲線的場景數(shù)據(jù) 對象轉(zhuǎn)換成具有至少一個貝塞爾扇形的中間細化,所述貝塞爾扇形具有扇形原點和四個控 制點。中間細化被發(fā)送到圖形管線上。圖形管線中的外殼著色器被配置成通過基于包含貝 塞爾扇形的四個控制點的定界框的寬度或高度的最大值來將貝塞爾扇形曲線再分為定義 數(shù)目的=角形而近似該曲線。圖形管線中的域著色器被配置成沿著貝塞爾扇形的曲線確定 對于每個所定義的=角形的頂點位置。
[0008] 本發(fā)明的實施例可W與目標獨立光柵化(TIR)相結(jié)合地使用。TIR使得能獨立于為 所呈現(xiàn)的圖像分配的存儲器來指定在圖形管線中的光柵化級期間采用的像素采樣的數(shù)目 (稱為"采樣率")。
[0009] 因此,在一個實施例中,本發(fā)明針對一個或多個計算機存儲介質(zhì),在所述計算機存 儲介質(zhì)上體現(xiàn)有計算機可執(zhí)行指令,所述計算機可執(zhí)行指令在被執(zhí)行時履行呈現(xiàn)抗銀齒的 2D曲線的方法。所述方法包括將場景數(shù)據(jù)轉(zhuǎn)換成中間細化,所述中間細化包括從場景數(shù)據(jù) 中的對象細化的幾何形狀組。幾何形狀組包括至少一個具有四個控制點和扇形原點的貝塞 爾扇形。生成第一指令,該第一指令用W將圖形管線中的外殼著色器配置成尤其通過基于 包含所述至少一個貝塞爾扇形的四個控制點的最小定界框的寬度或高度的最大值來將所 述至少一個貝塞爾扇形的曲線再分成定義數(shù)目的=角形而近似該曲線。生成第二指令,該 第二指令用W將圖形管線中的域著色器配置成沿著所述至少一個貝塞爾扇形的曲線確定 對于所述定義數(shù)目的=角形中每個=角形的頂點位置。中間細化被傳達至圖形管線。
[0010] 在另一實施例中,本發(fā)明針對一種在運行于GPU上的圖形管線中將對象的中間細 化光柵化的方法,其中,所述中間細化包括至少一個貝塞爾扇形,所述貝塞爾扇形具有四個 控制點和扇形原點。所述方法包括:從計算設(shè)備的CPU接收中間細化,并接收第一指令,該第 一指令用W將圖形管線中的外殼著色器配置成尤其通過將所述至少一個貝塞爾扇形的曲 線再分成定義數(shù)目的=角形而近似該曲線。基于第一指令來通過計算設(shè)備配置外殼著色 器。接收第二指令,所述第二指令用于將圖形管線中的域著色器配置成沿著所述至少一個 貝塞爾扇形的曲線確定對于所述定義數(shù)目的=角形中每個=角形的頂點位置?;诘诙?令來通過計算設(shè)備配置域著色器。
[0011] 在又一實施例中,本發(fā)明針對一種計算機存儲介質(zhì),其存儲用于控制GPU的應(yīng)用程 序接口(API)。所述API包括再分因子性質(zhì),所述再分因子性質(zhì)定義了被外殼著色器組件使 用來尤其通過基于最小定界框的寬度或高度的最大值來將至少一個貝塞爾扇形的曲線再 分成定義數(shù)目的=角形而近似該曲線的參數(shù),所述最小定界框包含定義了貝塞爾扇形的四 個控制點。所述API還包括位置因子性質(zhì),所述位置因子性質(zhì)定義了被域著色器組件使用來 沿著所述至少一個貝塞爾扇形的曲線確定對于所述定義數(shù)目的=角形中每個=角形的頂 點位置的參數(shù)。
[0012] 簡單描述了本發(fā)明的實施例的概述之后,描述適合在實現(xiàn)本發(fā)明的實施例時使用 的示范性操作環(huán)境。一般地參考附圖,且具體地首先參考圖1,用于實現(xiàn)本發(fā)明的實施例的 示范性操作環(huán)境被總地示出和標明為計算設(shè)備100。計算設(shè)備100只是合適的計算環(huán)境的一 個示例,并不打算暗示對于本發(fā)明的使用或功能性的范圍的任何限制。也不應(yīng)將計算設(shè)備 100解讀為具有與所圖示的任何一個組件或組件的任何組合有關(guān)的任何依賴性或要求。
[0013] 本發(fā)明的實施例可W在計算機代碼或機器可用指令的一般上下文中進行描述,計 算機代碼或機器可用指令包括由計算機或諸如個人數(shù)據(jù)助理或其它手持設(shè)備那樣的其它 機器執(zhí)行的計算機可執(zhí)行指令,諸如程序組件。通常,包括例程、程序、對象、組件和數(shù)據(jù)結(jié) 構(gòu)等等的程序組件指的是執(zhí)行具體任務(wù)或?qū)嵤┚唧w的抽象數(shù)據(jù)類型的代碼。本發(fā)明的實施 例可W在各種各樣的系統(tǒng)配置中實踐,包括手持設(shè)備、消費電子設(shè)備、通用計算機、專業(yè)計 算設(shè)備等等。本發(fā)明的實施例還可W在分布式計算環(huán)境中實踐,其中任務(wù)是由通過通信網(wǎng) 鏈接的遠程處理設(shè)備執(zhí)行的。
[0014] 繼續(xù)參照圖1,計算設(shè)備100包括總線110,它直接或間接地禪合W下設(shè)備:存儲器 112、一個或多個處理器114、一個或多個展示組件116、輸入/輸出(I/O)端口 118、I/O組件 120、說明性的電源122 W及GPU 124??偩€110代表可能是一個或多個總線(諸如地址總線、 數(shù)據(jù)總線或它們的組合)的事物。雖然圖1的各個方塊為了簡明起見用線示出,但事實上描 繪各種組件并不是如此明確,并且比喻性地,運些線更確切地將是灰色的和模糊的。例如, 人們可W把諸如顯示設(shè)備那樣的展示組件看作為I/O組件120。另外,CPU和GPU具有存儲 器。圖1的圖只是說明了可W結(jié)合本發(fā)明的一個或多個實施例被使用的示范性計算設(shè)備。在 諸如"工作站"、"服務(wù)器"、"膝上型計算機"、"手持設(shè)備"等等那樣的類別之間沒有加 W區(qū) 分,因為所有運些都預期在圖1的范圍內(nèi)并且都是對"計算機"或"計算設(shè)備"的引用。
[0015] 計算設(shè)備100典型地包括各種各樣的計算機可讀介質(zhì)。計算機可讀介質(zhì)可W是可 由計算設(shè)備100訪問的任何可得到的介質(zhì),并且既包括易失性介質(zhì)又包括非易失性介質(zhì)、既 包括可拆卸介質(zhì)又包括非可拆卸介質(zhì)。計算機可讀介質(zhì)包括計算機存儲介質(zhì)和通信介質(zhì); 計算機存儲介質(zhì)排除信號本身。計算機存儲介質(zhì)包括W任何方法或技術(shù)來實現(xiàn)的、用于存 儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)那樣的信息的易失性和非易失性、 可拆卸和非可拆卸介質(zhì)。計算機存儲介質(zhì)包括但不限于:RAM、R0M、EEPR0M、閃速存儲器或其 它存儲器技術(shù)、CD-ROM、數(shù)字通用盤(DVD)或其它光盤存儲裝置、盒式磁帶、磁帶、磁盤存儲 裝置或其它磁存儲設(shè)備、或可被使用來存儲想要的信息并可被計算設(shè)備100訪問的任何其 它介質(zhì)。另一方面,通信介質(zhì)將計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程