用。貝塞爾扇 形400由稱為扇形原點0的單一頂點410和稱為扇形輪廓411的S次貝塞爾來定義。如圖4所 示,扇形輪廓411覆蓋了所有點知舜簽鎌拜古沒巧-鴻令滿私 塞爾扇形在[0,1]區(qū)間上(例如,在點412和414之間)的參數(shù)化,W及0是扇形原點410。如在 圖4中看出的,變量t描述了沿著貝塞爾曲線第一點(點416)位于多遠處,并且變量V描述了 第二點(點418)沿著連接扇形原點0與第一點416的線的距離。
[0031] 圖4所示的貝塞爾扇形400是在CPU取得對象并將對象細化成具有諸如貝塞爾扇形 400和=角形運樣的高級圖元的中間細化之后產(chǎn)生的。例如,相對于諸如圖5所示的對象510 運樣的對象,CPU選擇對象510的定界框的中屯、作為圖原點512。然后"走過"對象510的每一 段。當遇到線段時,輸出具有由線端點和圖原點512定義的頂點的S角形。運由圖5的S角形 514、516和518示出。當遇到貝塞爾段時,使用貝塞爾曲線自身作為扇形輪廓并使用圖原點 512作為扇形原點來輸出貝塞爾扇形。圖5描繪了兩個貝塞爾扇形520和522。W運種方式產(chǎn) 生的貝塞爾扇形可W被定義或編碼為四個控制點和扇形原點的組。例如,可W使用作為扇 形原點的圖原點512W及控制點524、526、528和530來編碼貝塞爾扇形520。
[0032] 作為W上過程的結果得到的貝塞爾扇形可W是自相交的,并且圖元可W重疊。運 可W通過由CPU進一步再分貝塞爾扇形W確保扇形不自相交并且圖元不重疊來操控??商?換地,如果最終得到的覆蓋掩模的任何部分重疊,則可W首先利用XOR邏輯混合將覆蓋掩模 呈現(xiàn)到中間位圖中。盡管圖5所示的中間細化包括=次貝塞爾扇形,然而本發(fā)明的實施例可 W擴展為支持附加的段類型,比如弧形和二次貝塞爾,代價是附加的多遍通過圖形管線。在 可替換的實施例中,具有N種段類型的對象可W被再分成與S角形和N-I組扇形類型相對應 的腺且圖元,其中扇形輪廓由對應類型的段來定義。
[0033] 現(xiàn)在轉向圖6,圖6描繪了在被諸如圖3的外殼著色器314運樣的外殼著色器操作之 后的貝塞爾扇形600。如W上相對于圖5說明的,外殼著色器接收定義了貝塞爾扇形600的扇 形原點610和四個控制點612、614、616和618作為輸入。外殼著色器利用參數(shù)組來對貝塞爾 扇形600操作。參數(shù)組包括: 域 劃分:"整數(shù)" 輸出拓撲:"t;riangle_cw" SV-TessFactor:(1, 1, contourTessellationFactor} SV-InsideTessFactor:I。
[0034] tri域參數(shù)指定了貝塞爾扇形600將被當作變形的S角形。在可替換的實施例中, 貝塞爾扇形600可W被當作變形的矩形。整數(shù)劃分參數(shù)指示將使用整數(shù)劃分來對變形的= 角形的內部進行劃分。例如,使用內部點620,將貝塞爾扇形600劃分成了曲線段626和兩個 S角形622和624,兩個S角形622和624各自與曲線段626的周界共用邊緣(例如,線628和 630)。曲線段626從點612延伸到點618。在可替換的實施例中,可W使用分數(shù)劃分來對變形 的=角形的內部進行劃分。輸出拓撲參數(shù)指定了將使用一組=角形來近似曲線段626,運組 =角形中的每個=角形的頂點將W順時針次序被指定。
[0035] 內側細化因子影響著由細化產(chǎn)生出多少內部S角形。內部S角形被定義為不與貝 塞爾扇形600的曲線段的周界共用邊緣(例如,線628和630)的=角形。內側細化因子被設置 為1,運指示細化沒有產(chǎn)生內部=角形。輪廓細化因子是通過利用離線生成的查找表在運行 時動態(tài)挑選的整數(shù)。輪廓細化因子指定了有多精細地使用如圖6所示的從內部點620福射出 來的=角形來再分曲線段626。換句話說,輪廓細化因子指定了在再分中要使用的=角形的 數(shù)目。一般地,當曲線段被過于粗略地細化時,呈現(xiàn)的圖像將具有可見的小面(faceting)。 另一方面,當曲線段被過于精細地細化時,GPU變得負擔過重并且處理時間變得延長。本發(fā) 明使用輪廓細化因子來達成在細化過于粗略和細化過于精細之間的平衡。
[0036] 如提到的,輪廓細化因子是通過利用查找表在運行時動態(tài)挑選的整數(shù)。查找表是 通過挑選預定義的一組輪廓細化因子(例如,2、4、8、16、32和64)并針對每個輪廓細化因子 計算關聯(lián)的定界框維度而(在編譯之前)離線生成的。具體地,對于每個細化因子n,計算 £'狂沖:'>k扣、本靴)、乙。抑H向最大值(此后稱作Dn),其中: 簿I玲譽解獻,:梗,綜!與抗獄《-、壤朵,聽;嚴:藥攘并且 B(t)是基于W下的針對S次貝塞爾的伯恩斯坦基函數(shù)的貝塞爾的正則參數(shù)化(其中t 的范圍從0到1): 齡戶卡30 -…Or:;*打中:H! '…祇*〇十0…妒*技 其中Co,……,C3是四個貝塞爾控制點,允許所述貝塞爾控制點的X坐標和y坐標各自的 范圍是在區(qū)間[0, 1]中。Ln(t)是連接了點
的折線段的歸一化 弧長參數(shù)化(其中t的范圍從0到1),并且t的范圍是在區(qū)間[0,1]中。運是具有9個未知數(shù)(控制 點的X坐標和y坐標W及t)和18個約束(16個針對控制點并且兩個針對t)的非線性約束優(yōu)化問 題,并且可W使用眾所周知的技術來解析地或數(shù)值地對該非線性約束優(yōu)化問題求解。本發(fā)明 包括實現(xiàn)可調諧(implemen化tion-tun油Ie)的常數(shù)e,其是貝塞爾細化可W從真實貝塞爾(本 發(fā)明挑選)偏離的最大距離的上界。最終,值
被存儲在外殼著色器可訪問的表中。
[0037] W下提供了示范性查找表
[0038] 在運行時,計算包圍貝塞爾扇形的四個控制點的最小定界框。圖7示出了示范性定 界框724;定界框724包含貝塞爾扇形的四個控制點,如在點Co 710、Ci 712、C2714和C3 716 處所示。定界框724具有高度720和寬度722。確定定界框724的最大維度(例如,高度720或寬 度722)。將最大維度與查找表中的適當范圍匹配,并挑選最小輪廓細化因子n,使得
則在CPU上將貝塞爾扇形細化 成二角形。
[0039] 域著色器從外殼著色器接收貝塞爾扇形控制點(:〇、(:1、〔2、〔3、扇形原點〇和5¥_ DomainLocation(t,u,v)作為輸入。域位置是在重屯、坐標中被指定的,意味著 持皆起:裕氷沒1.并且護卡化子F二1,其允許將U忽略。域著色器發(fā)出(emit)沿曲線段 (例如,圖6的曲線段626)的每個=角形的頂點位置P作為輸出。使用W下公式來計算每個頂 點位置P:
其中B(t)是伯恩斯坦多項式:
[0040] 圖8中描繪了域著色器的輸出。圖8圖示了與圖6所示相同的貝塞爾扇形(現(xiàn)在標記 為貝塞爾扇形800)。每個=角形在頂點位置P處遇到曲線段626(例如,頂點位置Pi,…,P9)。 在數(shù)字810和812處示出了兩個示范性頂點位置。
[0041] 現(xiàn)在轉向圖9,描繪了呈現(xiàn)抗銀齒2D曲線的示范性方法的流程圖,并總地用數(shù)字 900來引用該流程圖??广y齒圖形是具有看起來直或平滑而非階梯式的線和/或曲線的呈現(xiàn) 的圖像??广y齒的呈現(xiàn)的圖像由抗銀齒過程產(chǎn)生,所述抗銀齒過程利用諸如圖3的圖形管線 300運樣的圖形管線的組件。呈現(xiàn)是生成場景數(shù)據(jù)的光柵化位圖表示的過程。實際上不必為 了完成呈現(xiàn)過程而顯示呈現(xiàn)的圖像。方法900可W由圖像組件來執(zhí)行。圖像組件的示例包括 文字處理應用、電子表格應用、演示應用、個人聯(lián)系人應用、游戲和產(chǎn)生二維圖像的其他應 用。
[0042] 在步驟910,通過生成從場景數(shù)據(jù)中的對象細化的幾何形狀組,將場景數(shù)據(jù)轉換成 中間細化。所述中間細化包括至少一個由扇形原點和四個控制點定義的貝塞爾扇形。其他 示范性幾何形狀可W包括S角形和弧線段。在一個實施例中,轉換步驟由運行在CPU上的軟 件來進行。
[0043] 在步驟912,生成用于配置圖形管線中的外殼著色器的第一指令。外殼著色器被配 置成通過W下方式來近似貝塞爾扇形的曲線或曲線段,即:基于包含定義了貝塞爾扇形的 四個控制點的最小定界框的寬度或高度的最大值來將貝塞爾扇形的曲線再分成定義數(shù)目 的=角形。如W上說明的,基于預先計算的查找表來確定被用于近似該曲線的=角形的數(shù) 目,所述查找表包括最大高度或寬度值的一個或多個范圍和對應的再分因子或輪廓細化因 子??蒞將第一指令傳達至API, API進而配置GPU上的外殼著色器。
[0044] 在步驟914,生成用于配置圖形管線中的域著色器的第二指令。域著色器被配置成 使用例如伯恩斯坦多項式,沿著貝塞爾扇形處的曲線確定對于所述定義數(shù)目的=角形中每 個S角形的頂點位置。也可W將第二指令傳達至API ,API進而配置GPU上的域著色器。在步 驟916,將中間細化從CPU傳達至運行在GPU上的圖形管線。
[004引方法900還可W包括生成第=指令,該第=指令用W定義圖形管線中的呈現(xiàn)目標 存儲值。呈現(xiàn)目標存儲值定義了分配給所呈現(xiàn)的圖像的存儲器量。所呈現(xiàn)的圖像可W是通 過圖形管線運行中間細化的最終結果。可W將第S指令傳達至API, API進而配置GPU上的過 程。
[0046] 還可W生成第四指令,該第四指令用W定義圖形管線中的光柵化器的采樣率。所 述采樣率是獨立于呈現(xiàn)目標存儲而被定義的。由于運些項目是分開定義的,所W它們的值 不需要被束縛在一起。在一個實施例中,將存儲器或呈現(xiàn)目標存儲值設置成Ix所呈現(xiàn)的位 圖表示。例如,如果所呈現(xiàn)的圖像是480像素 X480像素,則所分配的存儲器可足W存儲 230400像素。由于采樣率是獨立定義的,所W甚至有用于480x480所呈現(xiàn)位圖表示上的 230400像素的存儲器分配,采樣率也可W是每像素四個子像素。可W將第四指令傳達至 API ,API進而配置GPU上的過程。
[0047] 還可W生成附加的指令。例如,可W生成用于配置圖形管線中的像素著色器W處 理中間細化的指令。該指令可W依賴于中間細化內的幾何形狀是重疊還是