国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      圖形處理系統(tǒng)的制作方法

      文檔序號:6580906閱讀:157來源:國知局
      專利名稱:圖形處理系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及圖形處理系統(tǒng),具體來說,涉及圖形處理系統(tǒng)中的平滑形狀、如平滑曲
      線的渲染。
      背景技術(shù)
      具體參照三維圖形的處理來描述本發(fā)明,但是本領(lǐng)域的技術(shù)人員會理解,它同樣也可適用于二維圖形的處理。 本領(lǐng)域已知,通常通過首先將待顯示的場景分為多個相似基本成分(所謂的"圖元(primitive)")以便允許3D圖形處理操作更易于執(zhí)行,來執(zhí)行3D圖形處理。這些"圖元" 一般采取簡單多邊形、如三角形的形式。 待顯示的場景的圖元通常由圖形處理系統(tǒng)的應(yīng)用程序接口使用從需要顯示圖形的應(yīng)用程序(例如游戲)所接收的圖形繪制指令(請求)來生成。 各圖元在這個階段通常由頂點集合來定義并且表示為頂點集合。圖元的各頂點與
      其關(guān)聯(lián)了表示頂點的數(shù)據(jù)集合(例如位置、顏色、紋理和其它屬性數(shù)據(jù))。然后,例如當光柵
      化(rasterize)和渲染頂點(頂點與其相關(guān)的圖元)供顯示時,使用這種數(shù)據(jù)。 —旦場景的圖元及其頂點已經(jīng)生成和定義,它們可由圖形處理系統(tǒng)來處理,以便
      例如在輸出顯示裝置、如屏幕或打印機上顯示該場景。 這個過程基本上包括確定覆蓋待處理的場景區(qū)域的取樣點陣列的哪些取樣點由圖元來覆蓋,然后確定各取樣點應(yīng)當具有的外觀(例如在其顏色等方面)以表示在那個取樣點的圖元。這些過程通常分別稱作光柵化和著色(shading)。 光柵化過程確定應(yīng)當用于圖元的樣本位置(即,將要用于表示待顯示的場景中的
      圖元的樣本點的(x,y)位置)。這通常使用圖元的頂點的位置來進行。 著色過程則得出在樣本點顯示圖元所需的數(shù)據(jù),例如紅、綠和藍(RGB)色值以及
      "a"(透明度)值(即,對各樣本點"著色(shaded)")。如本領(lǐng)域已知,這可包括應(yīng)用紋
      理、混合樣本點數(shù)據(jù)值等。(在3D圖形文獻中,術(shù)語"光柵化"有時用于表示到樣本位置的圖元轉(zhuǎn)換和著色兩者。但是,本文中的"光柵化"僅用于表示將圖元數(shù)據(jù)轉(zhuǎn)換成取樣點地址。)
      通常通過將取樣點"表示"為對其執(zhí)行圖形處理操作(例如著色)、通常稱作"片元(fragments)"的離散圖形實體來執(zhí)行這些過程。各取樣點實際上由用于對所述的取樣點處的圖元著色的片元來表示。片元可表示(與其關(guān)聯(lián)了)單個取樣點或多個取樣點。"片元"是經(jīng)過著色過程(著色管線(shading pipeline))的圖形實體。(因此,"片元"實際上是(與其關(guān)聯(lián)了 )內(nèi)插到圖元的給定屏幕空間樣本點的圖元數(shù)據(jù)集合或者圖元點。它還可包括需要對所述的樣本點(片元位置)處的圖元著色的按圖元(per-primitive)數(shù)據(jù)和其它狀態(tài)數(shù)據(jù)。各圖形片元可合理地被認為實際上相當于在被處理時的場景的"像素")。 各圖形"片元"可對應(yīng)于最終輸出顯示中的單個像素(像元)(因為當像素是最終
      5顯示中的奇點時,在圖形處理器對其進行操作(渲染)的"片元"與顯示的像素之間可存在一對一映射)。但是,情況可能是,在片元與顯示像素之間不存在一一對應(yīng),例如在顯示最終圖像之前對渲染圖像執(zhí)行后處理的特定形式、如按比例縮小的情況下。 在圖形處理系統(tǒng)中,能夠有效準確地渲染平滑形狀、具體來說是平滑曲線定義的(具有平滑形狀作為其邊緣或邊界)形狀供顯示越來越合乎需要。 一般來說,從圖形處理的觀點來看,具有連續(xù)的邊緣或邊界曲線并且其中曲線的一階導(dǎo)數(shù)是逐段連續(xù)的形狀可被認為是平滑形狀(平滑曲線所定義的形狀)(并且為了本發(fā)明和申請的目的,被認為是平滑形狀以及相應(yīng)地被認為是平滑曲線)。圖形處理中的這類平滑曲線的示例是貝塞爾曲線、樣條曲線和弧形。 例如,近年來,越來越常見的是在計算機圖形中利用所謂的"矢量圖形"。 矢量圖形基于使用個別定義的幾何對象、如一個或多個線段,例如在定位點連接
      在一起以形成路徑的直線或曲線(例如二次方(貝塞爾)曲線、橢圓弧、三次(貝塞爾)曲線)。 矢量圖形對象/路徑通常在所說的"用戶空間"中被定義和操控。但是,為了在視頻顯示器或打印機上顯示矢量圖形對象/路徑,例如,用戶空間定義的矢量圖形必須轉(zhuǎn)換成適合基于像素的顯示的格式,即,轉(zhuǎn)換成基于圖元和取樣點的形式。當執(zhí)行這種轉(zhuǎn)換時,可能難以保留矢量圖形對象的任何平滑曲線或形狀,因為對象實際上必須光柵化成用于顯示該對象的取樣位置和像素。 —種已知的用于渲染平滑形狀供顯示的技術(shù)是將形狀細分(sub-divide)為大量小線性部分以便進行渲染過程。但是,例如在CPU時間和渲染帶寬方面,這具有高性能成本。 另一種已知的用于渲染平滑曲線的技術(shù)是使用隱式曲線,S卩,評估用于確定給定取樣點是在曲線之內(nèi)還是之外的隱式方程。但是,并非所有平滑形狀均可轉(zhuǎn)換成這種隱式形式,并且這種技術(shù)在任何情況下都需要專用渲染硬件或者超高精度片元著色器(shader)硬件用于評估隱式曲線。 因此,本申請人認為,仍然存在用于渲染平滑曲線和平滑曲線所定義的形狀的改進技術(shù)和系統(tǒng)的范圍。

      發(fā)明內(nèi)容
      根據(jù)本發(fā)明的第一方面,提供一種圖形處理系統(tǒng)中渲染平滑曲線所定義的形狀的方法,該方法包括 通過針對圖元內(nèi)的取樣位置對紋理中的紋理值進行取樣,將表示與定義形狀的曲線對應(yīng)的曲線的圖形紋理應(yīng)用于待渲染圖元;以及 使用取樣紋理值來確定取樣位置應(yīng)當看作在曲線的哪一側(cè);其中 通過將圖形紋理配置成使得紋理表示的第一曲線一側(cè)的所有紋理位置將返回小
      于第一閾值的取樣紋理值,而那個曲線另一側(cè)的所有紋理位置將返回大于第一閾值的取樣
      紋理值,并且使得紋理表示的第二曲線一側(cè)的所有紋理位置將返回小于第二不同閾值的取
      樣紋理值,而那個曲線另一側(cè)的所有紋理位置將返回大于第二閾值的取樣紋理值,來配置
      圖形紋理以表示兩個平滑曲線。
      根據(jù)本發(fā)明的第二方面,提供一種用于圖形處理系統(tǒng)中渲染平滑曲線所定義的形狀的設(shè)備,該設(shè)備包括 用于存儲各表示兩個或更多平滑曲線的一個或多個圖形紋理的部件,通過將圖形紋理配置成使得紋理表示的第一曲線一側(cè)的所有紋理位置將返回小于第一閾值的取樣紋理值,而那個曲線另一側(cè)的所有紋理位置將返回大于第一閾值的取樣紋理值,并且使得紋理表示的第二曲線一側(cè)的所有紋理位置將返回小于第二不同閾值的取樣紋理值,而那個曲線另一側(cè)的所有紋理位置將返回大于第二閾值的取樣紋理值,來配置每個這種圖形紋理以表示至少兩個平滑曲線; 用于執(zhí)行以下步驟的部件通過針對圖元內(nèi)的取樣位置對紋理中的紋理值進行取
      樣,將表示兩個或更多平滑曲線的所存儲圖形紋理應(yīng)用于待渲染圖元;以及 用于使用取樣紋理值來確定取樣位置應(yīng)當看作在紋理表示的曲線之一的哪一側(cè)
      的部件。 本申請人已經(jīng)認識到,通過將圖形紋理配置成使得紋理表示的曲線一側(cè)的所有紋
      理位置將返回小于特定閾值的取樣紋理值,而曲線另一側(cè)的所有紋理位置將返回大于該閾
      值的取樣紋理值,則對該紋理取樣時,取樣紋理值可用于確定取樣點是位于曲線之內(nèi)還是
      之外(即,取決于取樣紋理值是大于還是小于(或者反過來)曲線的紋理閾值)。
      因此,在本發(fā)明中,平滑曲線表示為紋理,并且平滑曲線所定義(即,實際上使平
      滑曲線作為其邊緣或邊界)的形狀則通過將該紋理應(yīng)用于適當?shù)膱D元來渲染。通過對紋
      理中的紋理值進行取樣并且使用取樣值確定各取樣點是在曲線的哪一側(cè),來繪制形狀供顯
      示。這允許圖形處理系統(tǒng)有效地確定任何給定點應(yīng)當看作是在曲線(因而形狀)之內(nèi)還是之外。 通過在紋理中表示平滑曲線,然后將它應(yīng)用于圖元以便按照這種方式繪制形狀(曲線),本發(fā)明提供一種可用于使用低成本的現(xiàn)有已知紋理映射(texture mapping)系統(tǒng)和硬件來渲染平滑形狀(和平滑曲線)。因此,如下面進一步論述,本發(fā)明使得能夠僅使用"普通"紋理映射更有效地渲染平滑形狀(和曲線)。本發(fā)明相應(yīng)地促進在更低成本、如固定功能的圖形硬件以及在未修改和傳統(tǒng)的現(xiàn)有固定功能圖形硬件上更有效地渲染平滑形狀(和曲線),并且可避免例如使用當前用于平滑曲線渲染的細分技術(shù)和/或?qū)S糜布男枰?本申請人還認識到,當按照這種方式在紋理中表示平滑曲線時,有可能通過將紋理和曲線的閾值適當?shù)嘏渲贸杀硎鞠嗤y理空間中多于一個曲線(使用相同質(zhì)素(texel)),即,將多于一個曲線"裝入"紋理。具體來說,如下面進一步論述,本發(fā)明能夠并且確實有效地在單個紋理中層疊地(on top of each other)存儲多個平滑曲線描述(使用相同質(zhì)素)。 這則允許給定的單個紋理用于表示一個以上平滑曲線,由此允許例如表示給定的一組平滑曲線需要更少和/或更小的紋理,并且促進更有效的紋理緩存和使用紋理時降低的功耗。 此外,這可無需使用紋理壓縮方法(它可能不一定對于每一種數(shù)據(jù)始終合乎需要或者適合)來實現(xiàn)。 此外,下面進一步論述,例如與使用直接多級編碼(它不會保持與本發(fā)明相同的值精度量)相比,本發(fā)明可允許多個曲線描述裝入紋理中,同時仍然保留較高的個別平滑曲線描述的值精度量(如果它將單獨在紋理中表示)。 取樣紋理值優(yōu)選地用于通過將取樣紋理值與曲線的閾值進行比較,來確定取樣位置在曲線的哪一側(cè)。這種比較可以是大于(">")或者大于或等于("> =")比較(或小于("<")或者小于或等于("< =")比較。在一個優(yōu)選實施例中,使用大于或等于(或者小于或等于)測試,因為已經(jīng)發(fā)現(xiàn)它在使用本發(fā)明時與典型圖形處理器所執(zhí)行的舍入更好地配合。 因此,根據(jù)本發(fā)明的第三方面,提供一種圖形處理系統(tǒng)中渲染平滑曲線所定義的形狀的方法,該方法包括 通過針對圖元內(nèi)的取樣位置對紋理值進行取樣,將表示與定義形狀的曲線對應(yīng)的曲線的圖形紋理應(yīng)用于待渲染圖元,通過將紋理配置成使得紋理表示的第一曲線一側(cè)的所有紋理位置將返回小于第一閾值的取樣紋理值,而那個曲線另一側(cè)的所有紋理位置將返回大于第一閾值的取樣紋理值,并且使得紋理表示的第二曲線一側(cè)的所有紋理位置將返回小于第二不同閾值的取樣紋理值,而那個曲線另一側(cè)的所有紋理位置將返回大于第二閾值的取樣紋理值,來配置紋理以表示兩個平滑曲線;以及 將圖元的所取樣的取樣點的取樣紋理值與被渲染曲線的所選紋理閾值進行比較,以便確定圖元的所取樣的取樣點應(yīng)當看作在曲線的哪一側(cè)。 根據(jù)本發(fā)明的第四方面,提供一種用于圖形處理系統(tǒng)中渲染平滑曲線所定義的形狀的設(shè)備,該設(shè)備包括 用于存儲各表示兩個或更多平滑曲線的一個或多個圖形紋理的部件,通過將圖形紋理配置成使得紋理表示的第一曲線一側(cè)的所有紋理位置將返回小于第一閾值的取樣紋理值,而那個曲線另一側(cè)的所有紋理位置將返回大于第一閾值的取樣紋理值,并且使得紋理表示的第二曲線一側(cè)的所有紋理位置將返回小于第二不同閾值的取樣紋理值,而那個曲線另一側(cè)的所有紋理位置將返回大于第二閾值的取樣紋理值,來配置每個紋理以表示至少兩個平滑曲線; 執(zhí)行以下步驟的部件通過針對圖元內(nèi)的取樣位置對所存儲紋理的紋理值進行取樣,將表示至少兩個平滑曲線的所存儲紋理應(yīng)用于待渲染圖元,以便渲染與平滑曲線之一對應(yīng)的曲線所定義的形狀供顯示;以及 用于執(zhí)行以下步驟的部件將圖元的所取樣的取樣點的取樣紋理值與紋理表示的曲線之一的紋理閾值進行比較,以便確定圖元的取樣點應(yīng)當看作在那個曲線的哪一側(cè)。
      類似地,根據(jù)本發(fā)明的第五方面,提供一種渲染平滑曲線所定義的形狀供顯示的方法,該方法包括 生成覆蓋其中將要顯示形狀的場景區(qū)域的一個或多個圖元; 光柵化圖元以生成一個或多個圖形片元,每個所生成的片元表示圖元所覆蓋的取樣點; 通過對于各分片對紋理中的對應(yīng)位置進行取樣以確定取樣紋理值,將表示與定義形狀的平滑曲線對應(yīng)的平滑曲線的圖形紋理應(yīng)用于所生成的片元,通過將紋理配置成使得紋理表示的第一曲線一側(cè)的所有紋理位置將返回小于第一閾值的取樣紋理值,而那個曲線另一側(cè)的所有紋理位置將返回大于第一閾值的取樣紋理值,并且使得紋理表示的第二曲線
      8一側(cè)的所有紋理位置將返回小于第二不同閾值的取樣紋理值,而那個曲線另一側(cè)的所有紋
      理位置將返回大于第二閾值的取樣紋理值,來配置紋理以表示兩個平滑曲線; 將片元的取樣紋理值與對應(yīng)于定義待渲染形狀的曲線的曲線的紋理閾值進行比
      較;以及 根據(jù)比較將片元和/或該片元所表示的取樣位置看作是在曲線之內(nèi)或之外。
      根據(jù)本發(fā)明的第六方面,提供一種用于渲染平滑曲線所定義的形狀供顯示的設(shè) 備,該設(shè)備包括 用于生成覆蓋其中將要顯示形狀的場景區(qū)域的一個或多個圖元的部件; 用于光柵化圖元以生成零個或多個圖形片元的部件,每個所生成的片元表示圖元
      所覆蓋的取樣點; 用于執(zhí)行以下步驟的部件通過對于各分片對紋理中的對應(yīng)位置進行取樣以確定 取樣紋理值,將表示與定義形狀的平滑曲線對應(yīng)的平滑曲線的圖形紋理應(yīng)用于所生成的片 元,通過將紋理配置成使得紋理表示的第一曲線一側(cè)的所有紋理位置將返回小于第一閾值 的取樣紋理值,而那個曲線另一側(cè)的所有紋理位置將返回大于第一閾值的取樣紋理值,并 且使得紋理表示的第二曲線一側(cè)的所有紋理位置將返回小于第二不同閾值的取樣紋理值, 而那個曲線另一側(cè)的所有紋理位置將返回大于第二閾值的取樣紋理值,來配置紋理以表示 至少兩個平滑曲線; 用于將片元的取樣紋理值與對應(yīng)于定義待渲染形狀的曲線的曲線的紋理閾值進 行比較的部件;以及 用于根據(jù)比較將片元和/或該片元所表示的取樣位置看作是在曲線之內(nèi)或之外 的部件。 本發(fā)明的這些方面能夠并且優(yōu)選地在適當時確實包括本文所述的本發(fā)明的優(yōu)選 和可選特征的任何一個或多個或者全部。因此,例如,比較測試優(yōu)選地是大于或等于(或者 小于或等于)測試。 這里還應(yīng)當注意,如本領(lǐng)域已知,有可能使覆蓋其中將要顯示形狀的場景區(qū)域的 圖元光柵化到零片元,即有效地表示形狀在被顯示時不會在場景中看到。在這種情況下,不 存在紋理將要應(yīng)用到其中的片元。但是,圖元通常光柵化到一個或多個片元(到至少一個 片元),并且在這種情況下紋理則將如上所述應(yīng)用于那些片元。 關(guān)于取樣位置在曲線的哪一側(cè)的確定(例如比較測試)的結(jié)果優(yōu)選地用于控制那 個取樣位置的將來處理。優(yōu)選地,確定的結(jié)果實際上用于適當?shù)乇3秩游恢没蛘邚年P(guān)于 平滑形狀(曲線)的進一步處理丟棄取樣位置。優(yōu)選地,如果測試表明取樣位置在曲線之 內(nèi),則圖元中的對應(yīng)位置相應(yīng)地著色(shaded)(例如上色(coloured)),但是如果它在曲線 之外,則圖元中的位置不著色,以便具有所述的平滑形狀所需的屬性(例如,優(yōu)選地從形狀 的進一步處理丟棄)。 因此,在一個優(yōu)選實施例中,本發(fā)明包括用于按照關(guān)于取樣位置在曲線的哪一側(cè) 的確定的結(jié)果(比較測試的結(jié)果)對取樣位置著色的步驟或部件。 因此,例如,優(yōu)選地,確定是在曲線之內(nèi)的點優(yōu)選地具有對其施加的特定顏色和/ 或外觀,并且確定是在曲線之外的點允許具有(并且具有)對其施加的不同顏色(例如由 場景中的另外某個對象或形狀確定的顏色)。
      換言之,所述或每個取樣位置優(yōu)選地至少部分按照已經(jīng)確定它在曲線的哪一側(cè)來 著色(上色)。 著色例如可在與應(yīng)用紋理的遍(pass)相同的處理遍中執(zhí)行,或者紋理測試的結(jié) 果可被存儲(例如存儲在模板緩沖器(stencil buffer)中),而著色則在以后的遍中執(zhí)行。 在一個優(yōu)選實施例中,著色在下一遍中執(zhí)行,因為這在需要組合平滑曲線和正多邊形(它 們可相互相交和重疊)時有幫助。 在一個優(yōu)選實施例中,每個片元存在單個紋理查找,并且由于比較測試而丟棄 (或者不丟棄)片元。 如上所述,本發(fā)明中使用的紋理應(yīng)當以上述方式表示至少兩個平滑曲線。給定紋 理可能僅表示兩個平滑曲線,但以優(yōu)選方式,紋理可表示多于兩個平滑曲線(以及在一個 優(yōu)選實施例中,紋理的一個或多個表示多于兩個平滑曲線)。因此, 一般來說,各紋理可表示 兩個或更多平滑曲線。(這里還應(yīng)當注意,本發(fā)明并不排除也存儲和使用僅表示單個平滑曲 線或者以不同方式配置的某些紋理,只是表示將存在至少一個紋理以本發(fā)明的方式表示并 且可用于渲染兩個(或兩個以上)平滑曲線。) 在紋理表示多于兩個平滑曲線的情況下,則應(yīng)當對于第三(以及任何后續(xù)曲線) 類似地來配置,即,使得"第三"曲線具有與該紋理還表示的第一和第二曲線的第一和第二 閾值不同的第三閾值,并且使得對紋理表示的第三曲線一側(cè)的所有紋理位置進行取樣將返 回小于第三閾值的取樣紋理值,而第三曲線另一側(cè)的所有紋理位置將返回大于第三閾值的 取樣紋理值(對于任何后續(xù)(第四、第五等)曲線依此類推)。 因此, 一般來說,要求在于,紋理表示至少兩個平滑曲線,并且紋理表示的各曲線 將具有與紋理表示的曲線的閾值不同的曲線"閾值",以及紋理將配置成使得對紋理表示的 相應(yīng)曲線一側(cè)的所有紋理位置進行取樣將返回小于那個曲線的閾值的取樣紋理值,而那個 曲線另一側(cè)的所有紋理位置將返回大于那個曲線的閾值的取樣紋理值。 本發(fā)明中用于表示平滑曲線(以及用于渲染平滑形狀)的紋理可根據(jù)需要來構(gòu)成 和配置。如上所述,各平滑曲線應(yīng)當在紋理中表示,使得對紋理中的給定位置的紋理值進行 取樣允許系統(tǒng)確定紋理中的那個位置在曲線的哪一側(cè)。 在一個優(yōu)選實施例中,如本領(lǐng)域已知,紋理配置為質(zhì)素值陣列,各質(zhì)素(紋理位 置)具有與其關(guān)聯(lián)的紋理圖中那個位置的對應(yīng)紋理值。構(gòu)成紋理的質(zhì)素的質(zhì)素值在這個布 置中應(yīng)當相應(yīng)地經(jīng)過選擇和設(shè)置,使得當對紋理中的紋理位置進行取樣時,取樣紋理值可 適當?shù)刂甘炯y理位置在紋理表示的各曲線的哪一側(cè)。 本發(fā)明還擴展到表示曲線的紋理的構(gòu)造以及紋理本身。例如,也許是紋理將單獨 和/或預(yù)先生成(和存儲),然后例如提供給圖形處理器使用。本發(fā)明擴展到這些活動,以 及擴展到當實際渲染平滑形狀(和曲線)時使用紋理。 因此,根據(jù)本發(fā)明的第七方面,提供一種生成圖形處理系統(tǒng)中用于渲染平滑曲線 所定義的形狀的紋理的方法,該方法包括 通過以下步驟來生成包括用于表示至少兩個平滑曲線的紋理質(zhì)素陣列的圖形紋 理圖 設(shè)置紋理的質(zhì)素值,使得取自位于紋理要表示的第一平滑曲線在紋理中出現(xiàn)時其 一側(cè)的紋理圖中的位置的紋理樣本將返回小于第一紋理閾值的紋理值,而使得取自位于紋
      10理中的那個平滑曲線另一側(cè)的位置的紋理樣本將返回大于第一紋理閾值的紋理值,并且使 得取自位于紋理要表示的第二平滑曲線在紋理中出現(xiàn)時其一側(cè)的紋理圖中的位置的紋理 樣本將返回小于不同的第二紋理閾值的紋理值,而使得取自位于紋理中的那個平滑第二曲 線另一側(cè)的位置的紋理樣本將返回大于第二紋理閾值的紋理值。 根據(jù)本發(fā)明的第八方面,提供一種用于生成圖形處理系統(tǒng)中用于渲染平滑曲線所 定義的形狀的紋理的設(shè)備,該設(shè)備包括 用于生成包括用于表示兩個平滑曲線的紋理質(zhì)素陣列的圖形紋理圖的部件,包 括 用于執(zhí)行以下步驟的部件設(shè)置紋理的質(zhì)素值,使得取自位于紋理要表示的第一 平滑曲線在紋理中出現(xiàn)時其一側(cè)的紋理圖中的位置的紋理樣本將返回小于第一紋理閾值 的紋理值,而使得取自位于紋理中的那個平滑曲線另一側(cè)的位置的紋理樣本將返回大于第 一紋理閾值的紋理值,并且使得取自位于紋理要表示的第二平滑曲線在紋理中出現(xiàn)時其一 側(cè)的紋理圖中的位置的紋理樣本將返回小于不同的第二紋理閾值的紋理值,而使得取自位 于紋理中的那個第二平滑曲線另一側(cè)的位置的紋理樣本將返回大于第二紋理閾值的紋理 值。 根據(jù)本發(fā)明的第九方面,提供一種在圖形處理系統(tǒng)中用于渲染平滑曲線所定義的 形狀的圖形紋理圖,該紋理圖包括
      紋理質(zhì)素陣列,其中 設(shè)置紋理的質(zhì)素值,使得取自位于紋理要表示的第一平滑曲線在紋理中出現(xiàn)時其 一側(cè)的紋理圖中的位置的紋理樣本將返回小于第一紋理閾值的紋理值,而使得取自位于紋 理中的那個平滑曲線另一側(cè)的位置的紋理樣本將返回大于第一紋理閾值的紋理值,并且使 得取自位于紋理要表示的第二平滑曲線在紋理中出現(xiàn)時其一側(cè)的紋理圖中的位置的紋理 樣本將返回小于不同的第二紋理閾值的紋理值,而使得取自位于紋理中的那個第二平滑曲 線另一側(cè)的位置的紋理樣本將返回大于第二紋理閾值的紋理值。 本領(lǐng)域的技術(shù)人員會理解,本發(fā)明的所有這些方面和實施例能夠并且優(yōu)選地在適 當時確實包括本文所述的優(yōu)選特征的任何一個或多個或者全部。例如,優(yōu)選地存儲所生成 的紋理圖供將來使用。 如上所述,在本發(fā)明的這些方面和實施例中,表示曲線的紋理圖經(jīng)過配置,使得紋 理表示的給定曲線任一側(cè)的取樣紋理點將提供大于或小于那個曲線的閾值的取樣紋理值。 這意味著,當對紋理取樣時,取樣紋理值可用于確定取樣點是在曲線之內(nèi)還是之外(取樣 紋理值是大于還是小于(或者反過來)曲線的紋理閾值)。 這里應(yīng)當注意,本發(fā)明的所有方面和實施例的目標及意圖是確保紋理中的給定曲 線一側(cè)的所有紋理位置將返回小于那個曲線的所選閾值的取樣紋理值,反過來也是一樣, 以便允許紋理位置所在的曲線一側(cè)易于確定。 但是,情況也許是,取樣紋理位置將返回等于給定曲線的所選閾值的值。實際上,
      紋理中通常存在將返回等于曲線的閾值的取樣紋理值的紋理位置的線條。 取樣時返回曲線的閾值的這些紋理位置相應(yīng)地形成紋理中的輪廓線(在被取樣
      時),在輪廓線上,那個輪廓上的任何點的取樣紋理值將等于曲線的紋理閾值。紋理中的這
      個輪廓(在被取樣時)因此將有效地表示并且因此能有效地被認為表示由紋理指示時(對
      11紋理取樣時)的曲線的線條(由于對曲線閾值輪廓上的紋理位置進行取樣將返回曲線的 閾值,因此這種位置可看作曲線在紋理中出現(xiàn)時實際上位于其"上"而不是曲線一側(cè)或另一 側(cè))。 相應(yīng)優(yōu)選地,盡可能將紋理配置成使得與曲線的閾值集對應(yīng)的紋理中的輪廓接近 地匹配并且接近地表示、優(yōu)選地盡可能接近表示紋理要表示的那個平滑曲線的線條(因此 實際上平滑形狀的邊緣),因為這則應(yīng)當意味著紋理在被取樣時將會更準確地反映那個曲 線(和形狀)。這優(yōu)選地對于紋理要表示的各曲線進行。 雖然有可能將具有給定曲線的閾值的輪廓"上"(即,被取樣時返回曲線的閾值) 的樣本紋理位置看作特殊情況(例如區(qū)分渲染時的曲線的線條),但在一個優(yōu)選實施例中 沒有這樣做,而只是優(yōu)選地按照被采用的比較測試(例如是其中曲線閾值的輪廓"上"的點 將看作與大于閾值的點相同的"大于或等于"測試還是其中曲線閾值的輪廓"上"的點將看 作與小于閾值的點相同的"大于"測試,等等)來處理等于閾值的任何紋理樣本。
      相應(yīng)地還應(yīng)當注意,雖然一般會希望將紋理配置成使得紋理中的某個、優(yōu)選地每 個曲線的閾值輪廓(線)上的位置將接近地匹配、優(yōu)選地盡可能接近地匹配紋理要表示的 曲線的線條,但是不需要特意將紋理的取樣配置成使得閾值輪廓上的點將看作或識別為特 殊情況。而是優(yōu)選地,只是進行測試以便查看取樣位置應(yīng)當看作是在曲線之內(nèi)還是之外。
      如上所述,紋理表示的多個曲線的每個具有用于對照確定紋理位置在曲線的哪一 側(cè)進行測試的不同閾值。因此,如果紋理表示兩個曲線,則將存在兩個不同的閾值,如果它 表示三個曲線,則將存在三個不同的閾值,依此類推。 紋理的質(zhì)素值應(yīng)當設(shè)置成使得它們在被取樣時將返回對于那個紋理位置指示在 紋理中表示(r印resented in the texture)時的各曲線的適當一側(cè)的值。因此,質(zhì)素應(yīng)當 具有相對于在紋理中表示時的各曲線的閾值適當設(shè)置的值。 例如,如果紋理中的質(zhì)素的位置位于在紋理中表示的所有曲線之內(nèi)(或者反過
      來),則那個質(zhì)素應(yīng)當具有低于(或高于)紋理要表示的所有曲線的閾值的值。 但是,其紋理位置在在紋理中表示時的一個曲線之內(nèi)但在紋理中表示時的另一個
      曲線之外的質(zhì)素應(yīng)當具有高于曲線之一的閾值但低于另一個曲線的閾值的值(即,曲線的
      閾值之間的值),依此類推。 本申請人已經(jīng)認識到,實際上,雖然優(yōu)選的是沿著和圍繞在紋理中出現(xiàn)時的給定 曲線的線條(實際上圍繞紋理中的曲線的閾值輪廓)準確地設(shè)置質(zhì)素的值(使得對紋理取 樣時可準確地指示曲線的位置),但是,離該曲線的路徑較遠的質(zhì)素(例如與其閾值輪廓距 離多于兩個質(zhì)素)的值對于所述的曲線不太關(guān)鍵,因為那些位置應(yīng)當完全在曲線之內(nèi)或者 之外,只要在那些位置的質(zhì)素值適當?shù)馗哂诨虻陀谇€的閾值,它們的精確值不應(yīng)當不利 地影響紋理中的那個曲線位置的精確度。 例如,這意味著,在離給定曲線的路徑(因而閾值輪廓)較遠的質(zhì)素可使其值根據(jù) 表示不同曲線、具有不同閾值的要求來設(shè)置,而沒有不利地影響紋理中的第一曲線的表示。 (實際上,從以上所述會理解,不同曲線的閾值應(yīng)當是可使用例如全部小于(或大于)第一 曲線的閾值的質(zhì)素值來指示的值(因為質(zhì)素全部位于第一曲線的一側(cè)或另一側(cè),因而它們 的值必須反映那種情況)。) 本申請人已經(jīng)認識到,因此,其效果在于,離紋理中的給定曲線的路徑(和閾值)輪廓較遠的質(zhì)素有效地、自由地(free)對用于指示另一個曲線的位置(閾值輪廓)的附加 信息進行編碼,由此允許多個曲線比較準確地在相同紋理(在相同的紋理空間,使用相同 的質(zhì)素)中表示。 相應(yīng)地會理解,按照這些原理,本發(fā)明的紋理的一個優(yōu)選構(gòu)造是使第一曲線具有 在紋理中表示的第一閾值,而第二曲線具有低于第一曲線的閾值的第二閾值,其位置在紋 理中在與表示第一曲線的路徑的紋理位置間隔開并且在紋理中由小于第一曲線的閾值的 取樣紋理值指示的第一曲線的路徑一側(cè)的紋理位置處表示(即,使得第二曲線的閾值輪廓 在紋理中在與表示第一曲線的閾值輪廓的紋理位置間隔開并且在紋理中由小于第一曲線 的閾值的取樣紋理值指示的第一曲線的路徑一側(cè)的紋理位置處出現(xiàn))。 類似地,如果紋理對第三曲線進行編碼(表示),則第三曲線優(yōu)選地具有小于第一 和第二曲線的閾值的第三閾值,并且其路徑優(yōu)選地在紋理中在與表示第一和第二曲線的路 徑的紋理位置間隔開并且在紋理中由小于第一和第二曲線的閾值的取樣紋理值指示的第 一和第二曲線的路徑一側(cè)的紋理位置處表示(即,使得第三曲線的閾值輪廓在紋理中在與 表示第一和第二曲線的閾值輪廓的紋理位置間隔開并且在紋理中由小于第一和第二曲線 的閾值的取樣紋理值指示的第一和第二曲線的路徑一側(cè)處的紋理位置出現(xiàn)),依此類推。
      為了更充分利用上述觀測和可能性,相應(yīng)地特別優(yōu)選的是,實際上指示紋理中的 曲線的路徑的位置的質(zhì)素(實際上并且優(yōu)選的是指示紋理被取樣時的曲線的閾值輪廓的 那些質(zhì)素,即,優(yōu)選的是位于紋理中的每個曲線的閾值輪廓上和/或與紋理中的閾值輪廓 的位置直接相鄰的質(zhì)素)在紋理中沒有相互重疊(間隔開)。 換言之,特別優(yōu)選的是使不同的質(zhì)素集合指示紋理要表示的每個不同曲線的閾值 輪廓。(本質(zhì)上,優(yōu)選的是曲線的閾值輪廓在紋理中沒有相互重疊)。 這則允許指示待適配(tailor)的給定曲線的路徑的質(zhì)素更專門用于指示該曲線 路徑的位置的目的。 因此,在一個特別優(yōu)選實施例中,紋理經(jīng)過配置,使得對于紋理表示的各曲線,在 紋理中表示時的那個曲線的路徑的位置在紋理中沒有與紋理表示(當它們在紋理中表示 時)的其它曲線的任一個的路徑在物理上重疊。 類似地,最優(yōu)選地,紋理經(jīng)過配置,使得對于紋理表示的各曲線,被取樣時將指示 在紋理中表示時的曲線的閾值輪廓的位置的質(zhì)素(的位置)在紋理中沒有與被取樣時將指 示紋理表示(當它們在紋理中表示時)的其它曲線中任一個的閾值輪廓的位置的質(zhì)素在物
      理上重疊。 下面進一步論述,將指示被取樣時在紋理中的曲線的閾值輪廓的位置(因而優(yōu)選 地不應(yīng)當在紋理中重疊)的特定質(zhì)素例如取決于在使用中要如何對紋理進行取樣,但是它 們可以例如并且在一個優(yōu)選實施例中確實包括位于在紋理中出現(xiàn)時的輪廓上和/或與其 直接相鄰的質(zhì)素。 例如,在紋理濾波、如雙線性濾波要被用于使用中的紋理進行取樣的情況下,被取 樣時將指示紋理中的那個輪廓的位置的質(zhì)素的紋理中的閾值輪廓周圍的"過渡"區(qū)域大于 沒有使用濾波的情況(因為在那種情況下,只存在將指示形狀的邊緣的質(zhì)素的單線)。
      在一個特別優(yōu)選實施例中,在這方面沒有重疊的質(zhì)素至少包括并且在一個優(yōu)選實 施例中僅包括構(gòu)成跨越或跨接曲線(在紋理中出現(xiàn)時)的路徑(和優(yōu)選地閾值輪廓)的每
      13對直接相鄰質(zhì)素的質(zhì)素(即,在質(zhì)素之間(并且沒有截取(interc印t)另一個質(zhì)素)繪制 的直線對其將被在紋理中出現(xiàn)時的曲線的路徑相交的每對直接相鄰質(zhì)素)。下面進一步論 述,在使用中使用雙線性濾波對紋理取樣的情況下,這是特別優(yōu)選的。 如上所述,用于紋理要表示的各曲線的閾值應(yīng)當相互不同。這使得能夠允許在紋 理被取樣時區(qū)別不同曲線。 此外,本申請人已經(jīng)認識到,下面進一步論述,優(yōu)選的是使用將指示紋理中的給定 曲線的閾值輪廓(路徑)的位置的質(zhì)素的質(zhì)素值范圍(因為這應(yīng)當例如允許紋理中的輪廓 位置的更佳的精確度)。 相應(yīng)特別優(yōu)選的是,用于指代(denote)紋理中的各曲線的閾值輪廓的質(zhì)素值的 范圍沒有相互重疊(即,用于將指示紋理中的給定曲線的閾值輪廓的位置(如上所述)的 質(zhì)素的質(zhì)素值沒有與用于將指示紋理要表示的其它曲線的位置的質(zhì)素的質(zhì)素值重疊)。
      類似地,相應(yīng)優(yōu)選的是,紋理要表示的各曲線的閾值相互間隔開,優(yōu)選地盡可能 遠,使得有可能允許質(zhì)素值的最大范圍用于各曲線的閾值輪廓,而要用于一個曲線的質(zhì)素 值沒有與用于另一個曲線的質(zhì)素值重疊。由此看來,對于紋理的可用質(zhì)素值的給定整體范 圍,曲線閾值優(yōu)選地在那個范圍之內(nèi)以及之上(within and across)等間距地間隔開,例 如,如果要表示兩個曲線,則在范圍的1/3和2/3,如果要表示3個曲線,則在范圍的1/4、 1/2和3/4,依此類推。 鑒于上述考慮因素,本發(fā)明中使用的紋理的一個特別優(yōu)選配置是當從紋理的一側(cè) 移動到另一側(cè)時使紋理要表示的曲線以間隔開的方式依次逐漸定位,并且當從一個曲線到 下一個曲線、從紋理的一側(cè)移動到另一側(cè)時使曲線的閾值逐漸增加(或減小)(優(yōu)選地在質(zhì) 素值的整個可用范圍按照相等步長)。 只要滿足上述原理,則分配給紋理的質(zhì)素的值可通過任何適當且預(yù)期的方式來設(shè) 置和配置。例如,可使用任何預(yù)期的質(zhì)素值的范圍和曲線紋理閾值。 質(zhì)素值應(yīng)當使用多于1位來指代。這將允許使用紋理中的質(zhì)素值的更細顆粒分辨 率。因此,在一個優(yōu)選實施例中,使用質(zhì)素值的灰度。優(yōu)選地使用8位或16位值。可使用 定點或浮點紋理(質(zhì)素值)。 在一個特別優(yōu)選實施例中,可用于紋理中的質(zhì)素值限制于O至1的整體范圍([O, l])。 在這種情況下,在紋理要表示兩個曲線的情況下,優(yōu)選地,一個曲線的閾值(至少 對于定點紋理)設(shè)置成1/3,而另一個曲線的閾值設(shè)置成2/3。這盡可能地在可用質(zhì)素值的 范圍內(nèi)間隔開曲線的閾值,并且對于用于對具有1/3的閾值的曲線進行編碼的質(zhì)素值提供 例如范圍
      (因為0是可用范圍的基底,而2/3是下一個曲線"向上"的閾值),而對 于用于對具有2/3的閾值的曲線進行編碼的質(zhì)素值提供范圍[1/3, 1]。
      類似地,如果紋理要表示三個曲線,則優(yōu)選地使用分別提供編碼范圍
      、
      、
      的曲線閾值O. 25、0. 5和0. 75 (至少對于定點紋理),依此類推。
      這里應(yīng)當注意,在浮點紋理的情況下,在浮點格式具有m位尾數(shù)和e位指數(shù)的情況 下,則通過以1.5X2n來設(shè)置紋理中的各曲線的閾值(其中n是正或負整數(shù),并且具有取決 于用于這些數(shù)字的位數(shù)的范圍;例如,對于IEEE浮點格式數(shù)字,n將從_2"+2到2e—M (因 此對于32位數(shù)字為-126. . . 0. . . 127,而對于16位浮點數(shù)字為-30. . . 0. . . 31),高達2e_2個
      14曲線可存儲在紋理中,其中各具有可用于各曲線的質(zhì)素范圍的大約m位分辨率(在如上所
      述指代閾值輪廓的質(zhì)素還優(yōu)選地在紋理中沒有在物理上重疊的條件下)。換言之,對于浮點
      紋理,優(yōu)選地,各曲線的閾值設(shè)置成某個或每個給定(不同的)指數(shù)范圍中的中點值。這則
      允許全尾數(shù)精度用于用來定義各曲線的閾值輪廓的質(zhì)素值。 可允許質(zhì)素值延續(xù)到其它范圍,并且在需要時可使用其它閾值。 本申請人已經(jīng)認識到,對于給定紋理樣本從紋理圖返回到那個紋理的值取決于所
      使用的紋理查找(取樣)過程,例如取決于對紋理取樣時是否應(yīng)用任何形式的濾波或內(nèi)插。
      例如,對于相同的質(zhì)素陣列,與只是獲取與取樣位置最接近質(zhì)素的值的紋理查找相比,使用
      雙線性濾波的紋理取樣過程可返回給定取樣位置的不同質(zhì)素值。 此外,本申請人已經(jīng)認識到,這可在構(gòu)造表示本發(fā)明中使用的平滑曲線的紋理時 用于提供更好地渲染結(jié)果。具體來說,本申請人已經(jīng)認識到,如果表示平滑曲線的紋理中的 質(zhì)素值對于使用紋理時所使用的紋理取樣過程(濾波)經(jīng)過適配或優(yōu)化,則可對于給定紋 理分辨率實現(xiàn)平滑形狀(曲線)的更準確渲染。(應(yīng)當注意,始終有可能通過簡單地增加紋理的分辨率,來增加曲線渲染的精度。 但是,那可能不一定始終是可能或合乎需要的。紋理對于要使用的紋理取樣技術(shù)的適配提 供增加渲染精度的備選方式,而無需增加紋理分辨率和/或?qū)τ诖鎯ζ魇褂弥械慕o定增 加,可提供有效紋理分辨率的更大增加)。 因此,在一個特別優(yōu)選實施例中,表示平滑曲線的紋理的質(zhì)素值的一些或全部按 照(或者根據(jù))在用于渲染平滑曲線時應(yīng)用于紋理的紋理取樣過程來設(shè)置或選擇。因此,例 如,在使用中對紋理取樣時將要使用雙線性濾波的情況下,對于紋理所存儲的質(zhì)素值優(yōu)選 地選擇成使得當雙線性濾波用于對紋理中的給定位置進行取樣時,將適當紋理值返回(以 指示該點是在曲線之內(nèi)還是之外)。 換言之,表示平滑曲線的紋理優(yōu)選地對于要使用的紋理取樣(內(nèi)插)技術(shù)經(jīng)過適 配。這將在紋理濾波(取樣)之后改進渲染結(jié)果。 因此,根據(jù)本發(fā)明的第十方面,提供一種圖形處理系統(tǒng)中渲染平滑曲線所定義的 形狀的方法,該方法包括 通過使用為其配置紋理的特定紋理濾波過程針對圖元內(nèi)的取樣位置對紋理值進 行取樣,將表示與定義形狀的曲線對應(yīng)的曲線的圖形紋理應(yīng)用于待渲染圖元,通過將圖形 紋理配置成使得紋理表示的第一曲線一側(cè)的所有紋理位置將返回小于第一閾值的取樣紋 理值,而那個曲線另一側(cè)的所有紋理位置將返回大于第一閾值的取樣紋理值,并且使得紋 理表示的第二曲線一側(cè)的所有紋理位置將返回小于第二不同閾值的取樣紋理值,而那個曲 線另一側(cè)的所有紋理位置將返回大于第二閾值的取樣紋理值,以及紋理的質(zhì)素值還設(shè)置成 使得紋理在使用特定所選紋理濾波過程對紋理取樣時將最準確地表示各平滑曲線,來配置 圖形紋理以表示兩個平滑曲線;以及 在這樣做時,將圖元的所取樣的取樣點的取樣紋理值與紋理表示的與定義形狀的 曲線對應(yīng)的曲線之一的紋理閾值進行比較,以便確定圖元的所取樣的取樣點應(yīng)當看作在那 個曲線的哪一側(cè)。 根據(jù)本發(fā)明的第十一方面,提供一種用于圖形處理系統(tǒng)中渲染平滑曲線所定義的 形狀的設(shè)備,該設(shè)備包括
      用于存儲各表示兩個或更多平滑曲線的一個或多個圖形紋理的部件,通過將圖形 紋理配置成使得紋理表示的第一曲線一側(cè)的所有紋理位置將返回小于第一閾值的取樣紋 理值,而那個曲線另一側(cè)的所有紋理位置將返回大于第一閾值的取樣紋理值,并且使得紋 理表示的第二曲線一側(cè)的所有紋理位置將返回小于第二不同閾值的取樣紋理值,而那個曲 線另一側(cè)的所有紋理位置將返回大于第二閾值的取樣紋理值;以及紋理的質(zhì)素值還設(shè)置成 使得紋理在使用特定所選紋理濾波過程被取樣時將最準確地表示平滑曲線,來配置圖形紋 理以表示兩個或更多平滑曲線; 用于執(zhí)行以下步驟的部件通過使用為其配置紋理的特定紋理濾波過程針對圖元 內(nèi)的取樣位置對紋理值進行取樣,將表示兩個或更多平滑曲線的所存儲紋理應(yīng)用于待渲染 圖元;以及 用于執(zhí)行以下步驟的部件將圖元的所取樣的取樣點的取樣紋理值與紋理表示的 與定義待渲染形狀的曲線對應(yīng)的曲線之一的紋理閾值進行比較,以便確定圖元的取樣點應(yīng) 當看作在那個曲線的哪一側(cè)。 類似地,根據(jù)本發(fā)明的第十二方面,提供一種渲染平滑曲線所定義的形狀供顯示 的方法,該方法包括 生成覆蓋其中將要顯示形狀的場景區(qū)域的一個或多個圖元; 光柵化圖元以生成一個或多個圖形片元,每個片元表示圖元或圖元之一所覆蓋的 取樣點; 通過以下步驟將表示至少兩個平滑曲線的圖形紋理應(yīng)用于片元,通過將圖形紋理
      配置成使得紋理表示的第一曲線一側(cè)的所有紋理位置將返回小于第一閾值的取樣紋理值,
      而那個曲線另一側(cè)的所有紋理位置將返回大于第一閾值的取樣紋理值,并且使得紋理表示
      的第二曲線一側(cè)的所有紋理位置將返回小于第二不同閾值的取樣紋理值,而那個曲線另一
      側(cè)的所有紋理位置將返回大于第二閾值的取樣紋理值,以及紋理的質(zhì)素值還設(shè)置成使得紋
      理在使用特定所選紋理濾波過程對紋理取樣時將最準確地表示平滑曲線,來配置圖形紋理
      以表示兩個平滑曲線 對于各片元, 使用為其配置紋理的特定紋理濾波過程對紋理中的對應(yīng)位置進行取樣,以便確定 取樣紋理值; 將片元的取樣紋理值與紋理表示的與定義待渲染形狀的曲線對應(yīng)的曲線之一的 紋理閾值進行比較;以及 根據(jù)比較將片元和/或該片元所表示的取樣位置看作是在曲線之內(nèi)或之外。
      根據(jù)本發(fā)明的第十三方面,提供一種用于渲染平滑曲線所定義的形狀供顯示的設(shè) 備,該設(shè)備包括 用于生成覆蓋其中將要顯示形狀的場景區(qū)域的一個或多個圖元的部件; 用于光柵化圖元以生成零個或多個圖形片元的部件,每個所生成的片元表示圖元
      或圖元之一所覆蓋的取樣點; 用于執(zhí)行以下步驟的部件通過對于各片元,使用為其配置紋理的特定紋理濾波 過程對紋理中的對應(yīng)位置進行取樣以確定取樣紋理值,將表示至少兩個平滑曲線的圖形紋 理應(yīng)用于所生成的片元,通過將圖形紋理配置成使得紋理表示的第一曲線一側(cè)的所有紋理位置將返回小于第一閾值的取樣紋理值,而那個曲線另一側(cè)的所有紋理位置將返回大于第 一閾值的取樣紋理值,并且使得紋理表示的第二曲線一側(cè)的所有紋理位置將返回小于第二 不同閾值的取樣紋理值,而那個曲線另一側(cè)的所有紋理位置將返回大于第二閾值的取樣紋 理值,以及每個紋理的質(zhì)素值還設(shè)置成使得紋理在使用特定所選紋理濾波過程對紋理取樣 時將最準確地表示平滑曲線,來配置圖形紋理以表示兩個平滑曲線; 用于將片元的取樣紋理值與紋理表示的與定義待渲染形狀的曲線對應(yīng)的曲線的 紋理閾值進行比較的部件;以及 用于根據(jù)比較將片元和/或該片元所表示的取樣位置看作是在曲線之內(nèi)或之外 的部件。 本發(fā)明的這些方面能夠并且優(yōu)選地在適當時確實包括本文所述的本發(fā)明的優(yōu)選 和可選特征的任何一個或多個或者全部。因此,例如,比較測試優(yōu)選地是大于或等于(或者 小于或等于)測試。類似地,比較的結(jié)果優(yōu)選地被存儲并且在下一個處理遍中用于控制片 元和/或取樣位置的著色(使得片元和/或取樣位置有效地相應(yīng)保持在形狀(曲線)之內(nèi) 或之外或者被丟棄)。 類似地,在本發(fā)明的這些方面的一個優(yōu)選實施例中,每個片元存在單個紋理查找, 并且由于比較測試而丟棄(或者不丟棄)片元。 對應(yīng)地,根據(jù)本發(fā)明的第十四方面,提供一種生成圖形處理系統(tǒng)中用于渲染平滑 曲線所定義的形狀的紋理的方法,該方法包括 通過以下步驟來生成包括用于表示至少兩個平滑曲線的紋理質(zhì)素陣列的圖形紋 理圖 根據(jù)預(yù)計在對紋理取樣時使用的特定紋理濾波過程來選擇將要用于紋理的一些
      或全部質(zhì)素的質(zhì)素值;以及 設(shè)置紋理的質(zhì)素值,使得 使用特定紋理濾波過程取自紋理圖中位于紋理要表示的第一平滑曲線一側(cè)的位 置的紋理樣本將返回小于第一紋理閾值的紋理值,而使得使用特定紋理濾波過程取自位于 那個平滑曲線另一側(cè)的位置的紋理樣本將返回大于第一紋理閾值的紋理值;以及使得
      使用特定紋理濾波過程取自紋理圖中位于紋理要表示的第二平滑曲線一側(cè)的位 置的紋理樣本將返回小于第二不同紋理閾值的紋理值,而使得使用特定紋理濾波過程取自 位于那個平滑曲線另一側(cè)的位置的紋理樣本將返回大于第二紋理閾值的紋理值。
      根據(jù)本發(fā)明的第十五方面,提供一種用于生成圖形處理系統(tǒng)中用于渲染平滑曲線 所定義的形狀的紋理的設(shè)備,該設(shè)備包括 用于生成包括用于表示至少兩個平滑曲線的紋理質(zhì)素陣列的圖形紋理圖的部件, 包括 用于根據(jù)預(yù)計在對紋理取樣時使用的特定紋理濾波過程來選擇要用于紋理的部 分或全部質(zhì)素的質(zhì)素值的部件;以及
      用于設(shè)置紋理的質(zhì)素值的部件 使得使用特定紋理濾波過程取自紋理圖中位于紋理要表示的第一平滑曲線一側(cè) 的位置的紋理樣本將返回小于第一紋理閾值的紋理值,而使得使用特定紋理濾波過程取自 位于那個平滑曲線另一側(cè)的位置的紋理樣本將返回大于第一紋理閾值的紋理值;以及
      使得使用特定紋理濾波過程取自紋理圖中位于紋理要表示的第二平滑曲線一側(cè)
      的位置的紋理樣本將返回小于第二不同紋理閾值的紋理值,而使得使用特定紋理濾波過程
      取自位于那個平滑曲線另一側(cè)的位置的紋理樣本將返回大于第二紋理閾值的紋理值。 根據(jù)本發(fā)明的第十六方面,提供一種在圖形處理系統(tǒng)中用于渲染平滑曲線所定義
      的形狀的圖形紋理圖,該紋理圖包括 紋理質(zhì)素陣列,其中 質(zhì)素值設(shè)置成使得 取自紋理圖中位于紋理表示的第一平滑曲線一側(cè)的位置的紋理樣本將返回小于 第一紋理閾值的紋理值,而使得取自位于那個平滑曲線另一側(cè)的位置的紋理樣本將返回大 于第一紋理閾值的紋理值;以及使得 取自紋理圖中位于紋理表示的第二平滑曲線一側(cè)的位置的紋理樣本將返回小于 第二不同紋理閾值的紋理值,而使得取自位于那個平滑曲線另一側(cè)的位置的紋理樣本將返 回大于第二紋理閾值的紋理值,以及其中 紋理的部分或全部質(zhì)素的質(zhì)素值還設(shè)置成使得紋理在使用特定所選紋理濾波過 程對紋理取樣時最準確地表示平滑曲線。 本領(lǐng)域的技術(shù)人員會理解,本發(fā)明的所有這些方面和實施例能夠并且優(yōu)選地在適 當時確實包括本文所述的優(yōu)選特征的任何一個或多個或者全部。 在本發(fā)明的這些方面和實施例中,紋理可配置與任何預(yù)期的紋理濾波過程配合使 用。最優(yōu)選地,特定所選紋理濾波過程是內(nèi)插過程,即內(nèi)插位于質(zhì)素之間的位置的紋理值的 濾波過程。 一般來說,有可能將紋理中的質(zhì)素值適配為匹配任何紋理內(nèi)插(濾波)技術(shù), 對于此技術(shù),在任何給定取樣位置的內(nèi)插加權(quán)和坐標(co-ordinate)對于特定質(zhì)素是可預(yù) 測的。因此,一般來說,可使用任何各向同性內(nèi)插過程。因此,例如,紋理可能并且在一個優(yōu) 選實施例中經(jīng)適配(優(yōu)化)與三線性濾波配合使用。這則允許例如表示平滑曲線的紋理以 mipm即的形式來提供。 在一個特別優(yōu)選實施例中,對于使用雙線性濾波的取樣來適配(優(yōu)化)表示平滑 曲線的紋理。雙線性濾波是同樣存在于"低成本"固定功能圖形硬件中的常用紋理取樣技 術(shù),因此使本發(fā)明適合與雙線性濾波配合使用增強了它對圖形處理器以及特別是對較低成 本圖形處理硬件的適用性。 因此,在一個特別優(yōu)選實施例中,表示平滑曲線的紋理圖中存儲的質(zhì)素值根據(jù)雙 線性濾波將用于對紋理取樣來選擇(即,使得當雙線性濾波用于對紋理中的位置進行取樣 時,返回適當?shù)募y理值)。類似地,優(yōu)選地當用于渲染平滑形狀時使用雙線性濾波技術(shù)對紋 理進行取樣。 當某種形式的內(nèi)插或濾波功能、如雙線性濾波用于對紋理取樣并且紋理的質(zhì)素具 有大于1的位分辨率(即,各質(zhì)素具有表示其值可用的多個位)、如8位或16位質(zhì)素值時, 那則允許質(zhì)素值的更細顆粒分辨率,以及當與對應(yīng)紋理濾波過程組合時例如可允許返回的 取樣位置值更接近地匹配曲線的真實路徑。 這里還應(yīng)當注意,在使用某種形式的濾波或內(nèi)插過程對紋理進行取樣的情況下, 雖然特定曲線的給定一側(cè)的質(zhì)素值將始終大于(或者分別小于)曲線的閾值,但在紋理中 的曲線的閾值輪廓周圍,可以是下列情況更接近那個輪廓的質(zhì)素將具有比在曲線同一側(cè)但離曲線的閾值輪廓更遠的質(zhì)素更高(或者分別更低)的值。 這是因為,為了使預(yù)期的紋理值在使用濾波過程、如雙線性濾波對曲線的線條周 圍的紋理位置進行取樣時被返回,可需要曲線的給定一側(cè)的質(zhì)素具有它們的曲線側(cè)的變化 值。實際上,一般對給定曲線的閾值輪廓周圍的質(zhì)素值的范圍可存在某種變化,即使質(zhì)素值 在與曲線的閾值輪廓的較大距離處可以是相同的。 因此,在一個特別優(yōu)選實施例中,紋理經(jīng)過構(gòu)成,使得各曲線的閾值輪廓附近的質(zhì) 素值在某個值的范圍上變化,但是與曲線的閾值輪廓較大距離的給定曲線的給定一側(cè)的質(zhì) 素各具有相同的質(zhì)素值。質(zhì)素值在其中變化的曲線的閾值輪廓周圍的范圍的寬度例如將取 決于在對紋理取樣時所應(yīng)用的濾波核(filter kernel)的大小。優(yōu)選地,例如在雙線性濾 波的情況下,質(zhì)素值對于(每個)曲線的閾值輪廓的每一側(cè)的高達兩個或者高達四個質(zhì)素 的距離變化。 最優(yōu)選地,與給定曲線的閾值輪廓較大距離(直至達到(接近)那個方向上的紋 理中的下一個曲線的閾值輪廓(如果存在的話))的所有質(zhì)素在那個曲線的一側(cè)設(shè)置成大 于該曲線的閾值的給定值(但小于那個方向的下一個曲線的閾值(如果存在的話)),并且 那個曲線另一側(cè)的與那個曲線較大距離(同樣直至達到那個方向的下一個曲線(如果存在 的話))的所有質(zhì)素設(shè)置成小于該曲線的閾值的給定值(但大于那個方向的下一個曲線的 閾值(如果存在的話))。 類似地,優(yōu)選的是,接近曲線的閾值輪廓并且在由小于曲線的閾值的紋理值指代 的曲線一側(cè)的質(zhì)素能夠并且確實具有甚至低于曲線的那一側(cè)的離曲線的閾值輪廓較遠的 質(zhì)素的質(zhì)素值,反過來也是一樣。 紋理(用于紋理的質(zhì)素值的部分或全部)可對要使用的紋理取樣過程經(jīng)過優(yōu)化或
      適配,并且使得對于那個取樣過程以任何預(yù)期和適當?shù)姆绞阶顪蚀_地表示曲線。 優(yōu)選地,設(shè)置(計算)紋理中的值,以便使采用所述紋理取樣過程進行取樣之后的
      (局部)誤差之和為最小。因此,在雙線性濾波的情況下,例如,優(yōu)選地設(shè)置紋理中使用的
      值,以便使雙線性濾波之后的(局部)誤差之和為最小,而不是例如必要地旨在具有質(zhì)素中
      心的正確值。 在一個特別優(yōu)選實施例中,通過得出可用于表示取樣過程的成本函數(shù),然后使用 一個或多個優(yōu)化算法、如模擬退火使那個成本函數(shù)為最小,來確定和選擇(設(shè)置)要使用的 質(zhì)素值。 優(yōu)選地,通過使表示位于紋理中時(每個)曲線的位置與當使用特定紋理取樣過 程對紋理的質(zhì)素進行取樣時的所述(每個)曲線的所示位置之間的相應(yīng)誤差的成本函數(shù)為 最小,來確定用于紋理的質(zhì)素值集合。 優(yōu)選地通過建立包括質(zhì)素值作為變量的成本函數(shù),然后嘗試使那個成本函數(shù)為最 小,并且相應(yīng)地選擇質(zhì)素值,來執(zhí)行質(zhì)素值的優(yōu)化。優(yōu)選地,相對于紋理要單獨表示的各曲 線來得出和應(yīng)用成本函數(shù)。 在一個特別優(yōu)選實施例中,通過考慮紋理中的質(zhì)素之間的所述的曲線的路徑(建 立用于得出要使用的質(zhì)素值的成本函數(shù)),然后設(shè)法優(yōu)化部分或全部質(zhì)素的值以便(盡可 能地)返回在曲線的路徑位于質(zhì)素之間的點處的曲線的紋理閾值(因為這則應(yīng)當確保紋理 中的閾值輪廓盡可能地匹配紋理中的曲線的路徑(線條)(通過紋理的質(zhì)素陣列)),來確定
      19用于紋理要表示的給定曲線的質(zhì)素值的部分或全部。 在一個特別優(yōu)選的這種實施例中,特別是在表示曲線的紋理將對于雙線性濾波經(jīng)
      過優(yōu)化的情況下,通過考慮相應(yīng)的相鄰質(zhì)素對之間(紋理中)的曲線的路徑(建立用于得
      出要使用的質(zhì)素值的成本函數(shù)),然后設(shè)法優(yōu)化該對中質(zhì)素的值以便返回在曲線與連接質(zhì)
      素對的線條相交的點處的紋理閾值,來確定要使用的質(zhì)素值的部分或全部。
      因此,在一個特別優(yōu)選實施例中,通過將紋理要表示(通過質(zhì)素陣列)的曲線的路
      徑(線條)分解為曲線的路徑(線條)與連接相應(yīng)質(zhì)素中心的線條的一系列相交,然后設(shè)法
      調(diào)整相應(yīng)質(zhì)素值以便在曲線與連接相應(yīng)兩個質(zhì)素中心的線條的相交點產(chǎn)生預(yù)期曲線閾值,
      來生成成本函數(shù)。 這優(yōu)選地對于曲線的每個適當相應(yīng)的質(zhì)素對重復(fù)進行,并且曲線的所有質(zhì)素對的 總體成本函數(shù)(優(yōu)化)確定為各質(zhì)素對的個別成本函數(shù)之和。 因此,在一個特別優(yōu)選實施例中,使用作為相對于所述的曲線的每個相關(guān)質(zhì)素對
      (優(yōu)選地,跨接紋理中曲線的路徑(線條)(在實踐中,實際上為紋理中的閾值輪廓)(因為
      那個輪廓預(yù)計匹配曲線的路徑)的每個(并且僅每個)質(zhì)素對)所確定的局部成本函數(shù)之
      和的全局成本函數(shù),然后使用全局優(yōu)化方法嘗試找到使全局(總體)誤差(它在這個布置
      中是局部(個別質(zhì)素對的)誤差之和)為最小的配置,來確定要用于紋理要表示的給定曲
      線的紋理的質(zhì)素值的部分或全部。 這優(yōu)選地對于紋理要表示的各曲線進行。 在這些布置中(以及一般來說),每個相應(yīng)質(zhì)素對的局部成本函數(shù)(兩個質(zhì)素值的 調(diào)整)優(yōu)選地看作是一系列相互聯(lián)系的優(yōu)化問題。 對于每個質(zhì)素對的成本函數(shù)(優(yōu)化),優(yōu)選地,某個或目標(成本考慮因素)是使 連接質(zhì)素對(在其之間)的線條上的曲線的實際交叉(相交)點與對質(zhì)素值取樣時指示的 交叉點之間的差異為最小。(理想地,對質(zhì)素值取樣應(yīng)當指示曲線的真正交叉點,但是這可 能不一定始終是可能的,因此目標是使這個誤差為最小。) 優(yōu)選地通過在成本函數(shù)中包括實際交叉點位置與質(zhì)素值所指示的位置之間的誤 差來考慮這個因素。 也優(yōu)選的是,使成本函數(shù)配置成使得它產(chǎn)生的質(zhì)素值將使用(對于在所述的紋理 中表示的特定曲線)可用的質(zhì)素值的盡可能大的、優(yōu)選地整體范圍(例如灰度)(例如
      )。這將幫助確保曲線的閾值輪廓采用較高分辨率來定義。 這優(yōu)選地、特別是在上述布置中通過將成本函數(shù)設(shè)置成使得所考慮的質(zhì)素對的質(zhì) 素值的差將反映曲線相對連接所述的質(zhì)素對的線條形成的角度來實現(xiàn)。例如,如果曲線與 兩個質(zhì)素之間的線條垂直,則理想地,質(zhì)素值之間的差應(yīng)當?shù)扔谫|(zhì)素值的整體可用(容許) 范圍(例如"2/3")。另一方面,如果曲線與兩個質(zhì)素之間的線條平行,則質(zhì)素值的差應(yīng)當 為"0"(零)。 在一個優(yōu)選實施例中,成本函數(shù)使用曲線與兩個質(zhì)素間的線條之間的角的正弦作 為說明并且設(shè)法實現(xiàn)這個方面的因子。 又優(yōu)選的是,使成本函數(shù)配置成將較小加權(quán)應(yīng)用于其中曲線與質(zhì)素對之間的線條 幾乎平行的邊緣,因為在這種情況下,對質(zhì)素值進行取樣時的任何"誤差"不會趨向于同樣 多地使曲線的位置失真。這優(yōu)選地通過將與曲線和質(zhì)素間的線條之間的角度的正弦的平方相關(guān)的因子包含在成本函數(shù)中以便適當?shù)貙Φ贸龅?成本"值加權(quán)來進行。 這個成本函數(shù)優(yōu)選地相對每個適當?shù)南鄳?yīng)質(zhì)素對來得出和應(yīng)用,并且以這種形式
      所定義的每個相應(yīng)質(zhì)素值對的成本函數(shù)對于所考慮(測試)的所有質(zhì)素對進行求和,以便
      給出曲線的總體或"全局"成本函數(shù),然后使用優(yōu)化算法使它為最小,以便得出用于所述的
      曲線的質(zhì)素值(找到用于各質(zhì)素對的最佳質(zhì)素值)??墒褂萌魏芜m當?shù)膬?yōu)化過程,但模擬退
      火是優(yōu)選的。 這個過程(優(yōu)選地)對于紋理要表示的各曲線重復(fù)進行,使得適當優(yōu)化各曲線的 質(zhì)素值。 然后,所確定的質(zhì)素值優(yōu)選地作為表示平滑曲線的圖形紋理來存儲。
      優(yōu)選地,關(guān)于某個(每個)曲線(和相應(yīng)地質(zhì)素值集合)的成本函數(shù)僅相對于對 紋理取樣時將會影響曲線的路徑(閾值輪廓)的位置的指示的那些質(zhì)素(質(zhì)素對)(例如 并且優(yōu)選地,跨越(span)或跨接(straddle)閾值輪廓的位置(即曲線的路徑經(jīng)過其中) 的相應(yīng)的(直接)相鄰質(zhì)素對)來評估。這是因為(離閾值輪廓較遠的)其它質(zhì)素當紋理 被取樣時(例如并且具體來說,如果雙線性濾波用于對紋理取樣)不應(yīng)當影響那個輪廓的 確定的所指示位置,因此可根據(jù)其位置簡單地相應(yīng)設(shè)置成高于或低于曲線的閾值的值。
      (類似地,如果用于指示紋理中的各曲線的路徑(閾值輪廓)的質(zhì)素沒有重疊(如 上所述),則可單獨優(yōu)化各曲線,因為被優(yōu)化的各質(zhì)素僅參與指示其曲線(輪廓)的位置,因 此優(yōu)化那個曲線(其閾值輪廓)不應(yīng)當影響用于指示其它曲線(其閾值輪廓)的質(zhì)素。
      因此,在一個特別優(yōu)選實施例中,成本函數(shù)用于(僅)確定接近曲線的閾值輪廓的 質(zhì)素的質(zhì)素值,優(yōu)選地(僅)對于與曲線的閾值輪廓相鄰的質(zhì)素,最優(yōu)選地(僅)對于跨越 或跨接曲線的閾值輪廓的直接相鄰質(zhì)素對,其中剩余質(zhì)素(即離曲線的線條(閾值輪廓) 較遠的質(zhì)素)只是分別設(shè)置成高于或低于曲線的閾值的值(而不是使用成本函數(shù)來得出用 于那些質(zhì)素的值)。 類似地,在一個優(yōu)選實施例中,如上所述,紋理中的給定曲線的路徑實際上分解為 跨接曲線的相應(yīng)質(zhì)素對之間的曲線的一系列相交,其中各對的兩個質(zhì)素值的調(diào)整被看作一 系列互相聯(lián)系的優(yōu)化問題,其中與曲線較遠的任何質(zhì)素適當?shù)卦O(shè)置成高于或低于曲線的所 選閾值的值。 類似地,特別優(yōu)選的是,紋理對于特定紋理取樣(濾波)過程的優(yōu)化或適配(基于 預(yù)計紋理取樣過程的質(zhì)素值的設(shè)置)僅相對于紋理被取樣時將會影響閾值輪廓的位置的 指示的那些質(zhì)素(例如并且優(yōu)選地,跨越或跨接那個輪廓的位置(即輪廓經(jīng)過其中)的相 應(yīng)的(直接)相鄰質(zhì)素對)來執(zhí)行。如上所述,這是因為其它質(zhì)素(離閾值輪廓較遠)當 紋理被取樣時不應(yīng)當影響那個輪廓的確定的所指示位置,因此可根據(jù)其位置簡單地相應(yīng)設(shè) 置成高于或低于曲線的閾值的值。 因此,在一個特別優(yōu)選實施例中,只有部分但并非全部質(zhì)素值根據(jù)要使用的紋理 取樣過程具體設(shè)置。最優(yōu)選地,只有接近曲線的閾值輪廓的質(zhì)素的質(zhì)素值,優(yōu)選地(僅)對 于與曲線的閾值輪廓相鄰的質(zhì)素,最優(yōu)選地(僅)對于跨越或跨接曲線的閾值輪廓的直接 相鄰質(zhì)素對,才根據(jù)要使用的紋理取樣過程具體設(shè)置(在至少使用雙線性濾波對紋理取樣 的情況下;其它類型的濾波可能要求設(shè)置其它質(zhì)素),其中剩余質(zhì)素(即離曲線的線條(閾 值輪廓)較遠的質(zhì)素)只是分別設(shè)置成高于或低于曲線的閾值的值,如上所述。
      21
      —旦以本發(fā)明的方式表示兩個或更多平滑曲線的紋理已經(jīng)創(chuàng)建,則它可以并且 優(yōu)選地存儲供將來使用,以便渲染曲線(曲線所定義的形狀(具有曲線作為其邊緣(邊 界)))。 本發(fā)明的紋理的實際用于渲染它表示的平滑曲線所定義的形狀可使用例如任何 適當?shù)膱D形紋理映射過程來進行。 如上所述,在一個特別優(yōu)選實施例中,通過首先生成覆蓋其中要出現(xiàn)形狀的場景 區(qū)域的圖元,然后將紋理應(yīng)用于圖元,并且相應(yīng)地對圖元著色,使用紋理來渲染平滑形狀供 顯示。 例如可通過定義覆蓋其中要出現(xiàn)待繪制形狀的場景區(qū)域的邊界框,根據(jù)需要來生 成圖元。 當生成圖像時可能需要確保所生成的圖元僅對紋理的預(yù)期(和適當)區(qū)域進行取 樣。(下面進一步論述,在相同紋理中表示多組多個曲線的情況下,情況尤其是這樣。)這 可在必要時根據(jù)需要來實現(xiàn)。在一個優(yōu)選實施例中,生成覆蓋待渲染的輸入曲線(形狀) 的控制點的凸包的圖元以便設(shè)法確保這個方面。(必要時,例如在兩個端點之一不是凸包的 一部分的情況下,輸入曲線(形狀)可分為兩個,以便確保兩個端點之間的線條是凸包的一 部分。) 然后,所生成的圖元被光柵化成取樣點并且生成片元,以及通過對與圖元取樣點 (和/或片元)位置對應(yīng)的紋理中的位置進行取樣,將表示曲線的紋理應(yīng)用于圖元的各取樣 點(和/或片元),這是本領(lǐng)域已知的。(如上所述,優(yōu)選地使用適當紋理濾波過程、例如并 且優(yōu)選地雙線性濾波來對紋理取樣。) 然后將取樣紋理值與所述的曲線(即紋理要表示的待繪制曲線的特定曲線)的閾 值集進行比較,并且相應(yīng)地保持或丟棄對應(yīng)取樣位置和/或片元。 這種"比較和丟棄"可通過任何預(yù)期和適當方式對于所述的圖形處理系統(tǒng)來執(zhí)行。
      例如,在具有可編程片元著色器硬件的圖形處理系統(tǒng)中,可以并且優(yōu)選地使 用比較和條件丟棄例程,其中條件丟棄測試設(shè)置成所述的曲線的閾值(例如if(gl_ FragColor. a < threshold)discard)。 通過具有固定功能硬件的圖形處理系統(tǒng),a測試可以并且優(yōu)選地用于比較取樣紋 理值并且丟棄曲線之外的取樣點。例如,a測試的比較a值可設(shè)置成曲線的閾值,以便丟 棄超出曲線之外的取樣點和/或片元。 將a測試用于此目的時,如果a測試必須對照整個繪制調(diào)用(draw call)的固 定比較值、如0.5來執(zhí)行(情況通常會是這樣,這是本領(lǐng)域已知的),則為了對照所述的曲線 的實際閾值(它可能不等于對于繪制調(diào)用的a測試所設(shè)置的值)適當?shù)剡M行測試,偏置或 偏移可以并且優(yōu)選地加入取樣紋理值(和/或從其中減去),以便允許a測試不會對照曲 線的閾值來測試取樣值但對照對于繪制調(diào)用所設(shè)置的a值對它們進行測試的事實。
      因此,必要時,優(yōu)選地調(diào)整取樣紋理值,以便允許以下事實不會將它們與所述的 曲線的實際閾值進行比較(即,以便實際上將取樣紋理值"移動"與曲線的閾值必須移動的 相同的量,以便將它設(shè)置成用于a測試(對于繪制調(diào)用設(shè)置(例如0.5))的a值。
      例如,對于閾值為1/3但其中a測試設(shè)置成0. 5的曲線,在各取樣紋理值輸入到 a測試之前,應(yīng)當被加上(0.5-(1.0/3.0)),以適當偏置(偏移)取樣紋理值以便與0.5的
      22繪制調(diào)用a值而不是l/3的曲線閾值進行比較。 在一個特別優(yōu)選實施例中,待繪制的給定形狀(曲線)分為兩個或更多單獨形狀 (曲線),然后單獨渲染形狀(曲線)的每個不同部分(例如使用不同的曲線表示紋理或者 相同曲線紋理的不同部分)。 在一個優(yōu)選實施例中,進行這個步驟以便在一個或多個奇異點處將具有奇異點的 曲線(包含尖端的曲線)所定義的形狀分割,從而在曲線(幾何形狀)的奇異點的每側(cè)單 獨繪制形狀(曲線)的部分。這種布置可消除對于使曲線中的奇異點正好位于紋理中的紋 理柵格線上的需要(如下所述)。(也有可能的是,在由紋理表示的曲線具有一個或多個奇異點的情況下,將紋理配 置成使得曲線中的奇異點正好位于連接紋理的質(zhì)素中心的柵格線上(并且在一個優(yōu)選實 施例中進行這個操作)。這將確保奇異點的不連續(xù)導(dǎo)數(shù)位于質(zhì)素"柵格"上,因此可消除在 "奇異點"處分割曲線的需要。) 還可能希望將很大的形狀分為較小形狀用于渲染過程,例如幫助減少渲染偽像 (artefact)的數(shù)量。 類似地,自相交形狀、如其中具有環(huán)形的曲線所定義的形狀可分為沒有自相交的 兩個(或更多)形狀,然后單獨繪制,以便促進將本發(fā)明的技術(shù)用于這類形狀。
      在一個特別優(yōu)選實施例中,各表示多個不同曲線和/或給定曲線的多個不同部分 的多個不同紋理被生成和存儲。然后,為了繪制任何給定形狀(曲線),最適合那個形狀(曲 線)的紋理可被識別和選擇,并且用于渲染該形狀(曲線)。通過表示紋理中的曲線的適當 范圍,則應(yīng)當能夠渲染幾乎任何任意彎曲形狀。 實際上,本申請人已經(jīng)認識到,在實踐中希望繪制的即使不是全部也是大部分曲 線段將落入幾個曲線族之一,因此有可能表示希望使用較少紋理來繪制的即使不是全部也 是大部分曲線。 在一個優(yōu)選實施例中,多組多個不同曲線(這樣的每個組以本發(fā)明的方式表示兩 個或更多曲線)存儲在同一個紋理圖中。這例如可通過以下步驟來進行空間分離紋理中 的曲線集合,然后對所述的曲線集合的紋理中的適當區(qū)域進行取樣。 在要使用本發(fā)明的情況下,則優(yōu)選地,表示平滑曲線的紋理預(yù)先生成,然后例如并 且優(yōu)選地連同圖形處理系統(tǒng)將使用的其它(靜態(tài))紋理圖一起適當存儲供圖形處理系統(tǒng)使 用。給定應(yīng)用則可要求當所述的平滑曲線(所述的平滑曲線所定義的形狀)要繪制時應(yīng)用 該紋理。 在本發(fā)明中,紋理中表示的平滑形狀和平滑曲線可包括任何適當和預(yù)期的這類形 狀和曲線。如上所述,在一個特別優(yōu)選實施例中,各平滑曲線是連續(xù)的并且對于其曲線(曲 線的路徑)的一階導(dǎo)數(shù)是分段連續(xù)的曲線。優(yōu)選地,作為補充或替代,它是貝塞爾曲線、樣 條曲線和/或弧形。 類似地,本發(fā)明可適用(并且應(yīng)用到)的平滑曲線所定義的形狀可以是具有適當 平滑曲線作為其邊緣或邊界的任何形狀。因此,在本發(fā)明中,紋理中表示(并且使用紋理來 渲染)的平滑形狀能夠并且優(yōu)選地確實包括具有連續(xù)的曲線作為其邊緣(邊界)的任何形 狀并且其曲線(曲線的路徑)的一階導(dǎo)數(shù)分段連續(xù)。優(yōu)選地,定義形狀(定義形狀的邊緣) 的曲線是貝塞爾曲線、樣條曲線和/或弧形。
      本申請人還認識到,某些曲線族內(nèi)的所有曲線可使用仿射變換來變換到預(yù)定義的 單個或基礎(chǔ)基準曲線、本文中稱作"典范曲線(canonical curve)"的至少一部分。例如,在 二次曲線的情況下,任何給定二次曲線可使用仿射變換來變換到基礎(chǔ)二次曲線y二x2,它相 應(yīng)地是可用于二次曲線的"典范"曲線。 因此,這允許與單曲線、即典范曲線有關(guān)的信息用于確定與可定義圖形處理系統(tǒng) 接收供渲染的平滑曲線的多個平滑曲線有關(guān)的信息。換言之,例如不是必須得出或存儲涉 及可定義可由圖形處理系統(tǒng)接收供渲染的平滑形狀的每個單獨平滑曲線的數(shù)據(jù),僅需要得 出或存儲與典范曲線有關(guān)的數(shù)據(jù)。然后,這個數(shù)據(jù)可用于渲染屬于"典范曲線"表示的平滑 曲線族(集合)的單獨平滑曲線的每個所定義的形狀。 因此,在一個特別優(yōu)選實施例中,表示多個基準或"典范"曲線的紋理被生成和使 用。 本領(lǐng)域的技術(shù)人員會理解,例如,如果定義待繪制形狀的曲線沒有完全匹配在紋 理中表示時曲線的取向,則定義待渲染形狀的給定輸入平滑曲線可能不會完全匹配在紋理 中表示和存儲時的對應(yīng)平滑曲線的剖面(profile)。例如,輸入形狀、因而曲線可相對在紋 理中表示時的曲線旋轉(zhuǎn)或縮放。在這些情況下,紋理中記錄的曲線將需要適當?shù)赜成涞酱?顯示的形狀(曲線),以便它在顯示器上出現(xiàn)時正確繪制輸入形狀(曲線)。
      這種變換可優(yōu)選地包括使用仿射變換將紋理與待繪制形狀(曲線)匹配。因此, 在一個優(yōu)選實施例中,本發(fā)明包括變換紋理,使得它可在應(yīng)用紋理之前映射到待繪制形狀 (曲線)。 在紋理中表示曲線時將曲線映射到待繪制形狀(曲線)的過程可通過任何適當和
      預(yù)期方式來執(zhí)行。在一個優(yōu)選實施例中,將紋理中記錄的曲線映射到待顯示圖像的過程通
      過以下步驟來進行計算定義待繪制的輸入曲線(定義待繪制形狀的曲線)的控制點的紋
      理坐標,然后對曲線線性內(nèi)插紋理坐標(例如使用圖形處理器的內(nèi)插硬件)。 在控制點處的紋理坐標可根據(jù)需要來確定,并且在需要時不同的方法可用于不同
      類型的曲線。 例如,在二次曲線的情況下,各輸入曲線應(yīng)當正好是紋理中存儲的曲線的仿射變 換形式。通過每次使用整個曲線,固定紋理坐標可用于每個控制點,并且必要的變換通過將 表面空間(surfaces pace)中的控制點與(紋理空間中的)紋理坐標組對隱式定義。
      對于三次曲線,曲線優(yōu)選地首先分類為蛇形、環(huán)形、尖端、"無窮尖端"(即帶有具有 無窮遠拐點的尖端的曲線)、退化或拋物曲線。拋物曲線是二次曲線,并且優(yōu)選地同樣處理。 退化曲線優(yōu)選地通過將它分為一個或多個線條來處理。 對于其它曲線,優(yōu)選地計算曲線的拐點(infl0和infll)。然后,如果所存儲曲線 配置成使得其拐點始終在-1和l,則可計算從[infl0..inni]-> [-l..l]的線性變換。 這樣,輸入曲線的起始和結(jié)束點(0和1)的參數(shù)位置可變換到它們在紋理空間中的位置。紋 理需要覆蓋的典范紋理空間中的參數(shù)范圍這時為已知。 對于環(huán)形曲線和蛇形曲線,則搜索所存儲紋理以找到覆蓋所需參數(shù)范圍的紋理 (例如最大程度放大紋理)。(這對于尖端和無窮尖端曲線不是必要的。)
      (拐點在-l和1的)所存儲曲線則優(yōu)選地重新縮放以便將拐點映射到輸入曲線的 拐點inf10和infll。然后,這種變換優(yōu)選地應(yīng)用于所存儲曲線的控制點,以便給出適當變換的控制點位置,然后能夠并且優(yōu)選地將它們用作輸入曲線的對應(yīng)控制點的紋理坐標。
      在多組曲線在空間上裝入紋理的情況下,可需要將變換應(yīng)用于紋理坐標,以便對紋理的正確(空間)子集進行取樣。這優(yōu)選地通過以下步驟來進行計算將"輸入"框變換到覆蓋所存儲紋理的預(yù)期部分的"框"(即,變換
      x[O. . l]- > [u_l. . u_2]x[v_l..v_2])所需的縮放和平移,然后將確定的變換應(yīng)用于已經(jīng)計算的紋理坐標,好像曲線覆蓋整個紋理那樣。 從以上所述會理解,在本發(fā)明的一個優(yōu)選實施例中,圖形處理系統(tǒng)將接收平滑曲線所定義的輸入形狀(即,使平滑曲線作為其邊緣(邊界))以便進行渲染供顯示。然后,圖形處理系統(tǒng)識別表示與定義待渲染形狀的曲線對應(yīng)的曲線的紋理,得出將紋理中表示和定義的曲線與定義待渲染形狀的曲線進行匹配所需的任何必要的映射或變換,然后使用任何得出的必要變換或映射,使用表示與定義待渲染形狀的曲線對應(yīng)的曲線的紋理以本發(fā)明的方式渲染該形狀。 從以上所述會理解,本發(fā)明可有效地繪制使紋理中定義的平滑曲線作為其邊緣或邊界的形狀(因為曲線一側(cè)的點以不同于曲線另一側(cè)的點的方式來繪制)。因此,本發(fā)明可有效地用于渲染使相關(guān)曲線作為其邊緣或邊界和/或使相關(guān)曲線作為其輪廓或邊界的形狀(即,使得曲線的不同側(cè)的點應(yīng)當以不同方式來繪制)。 實際上,本發(fā)明可用于識別定義(表示)形狀的邊緣的曲線任一側(cè)的點,由此允許有效地繪制形狀。因此,用于本發(fā)明的紋理可看作表示定義待渲染形狀的邊緣或輪廓的曲線。 因此,本發(fā)明可用于渲染具有連續(xù)的邊緣或輪廓曲線的(平滑)形狀并且其中邊緣或輪廓曲線的一階導(dǎo)數(shù)分段連續(xù)的(即,本發(fā)明可用于渲染的平滑曲線所定義的形狀)。
      (在需要時,本發(fā)明的紋理和技術(shù)當然也可用于實際上繪制曲線本身,因為它們也可定義曲線本身。) 在一個特別優(yōu)選實施例中,本發(fā)明的各種功能在生成和輸出被寫入用于顯示裝置的幀緩沖器的數(shù)據(jù)的單個圖形處理平臺上執(zhí)行。 本發(fā)明可適用于任何形式或配置的渲染器,例如具有"管線"布置的渲染器(在那種情況下,渲染器將采取渲染管線形式)。在一個優(yōu)選實施例中,它適用于硬件圖形渲染管線。本發(fā)明的各種功能和元件等可根據(jù)需要例如并且優(yōu)選地通過適當?shù)墓δ軉卧?、處理邏輯、處理器、微處理器布置等來實現(xiàn)。 本發(fā)明可適用于所有形式的渲染,例如立即模式渲染(immediatemoderendering)、延遲模式渲染、基于拼貼(tile)的渲染等。在一個優(yōu)選實施例中,它用于以及用來延遲模式渲染和基于拼貼的渲染器(renderer)。 從以上所述會理解,本發(fā)明不是排他地、但特別適合于3D圖形處理器和處理裝置,并且相應(yīng)地擴展到包括根據(jù)本文所述的本發(fā)明的方面的任何一個或多個的設(shè)備或者按照其進行操作的3D圖形處理器和3D圖形處理平臺。在執(zhí)行上述特定功能所需的任何硬件的條件下,此類3D圖形處理器另外可包括3D圖形處理器包括的常用功能單元的任何一個或多個或者全部。 本發(fā)明類似地擴展到2D圖形處理器和2D圖形處理。 雖然以上具體參照紋理用于表示平滑曲線和平滑形狀以便進行渲染來描述了本發(fā)明,但是本申請人已經(jīng)認識到,本發(fā)明的原理可用于裝(pack)具有"輪廓"區(qū)域并且可更 有效地表示為二維數(shù)據(jù)結(jié)構(gòu)中的"平滑形狀"的其它形式的數(shù)據(jù)。 本發(fā)明相應(yīng)地擴展到將本發(fā)明的原理用于存儲和使用與表示平滑曲線供圖形渲 染的數(shù)據(jù)不同的數(shù)據(jù)。 因此,根據(jù)本發(fā)明的另一方面,提供一種生成用于存儲與兩個或更多曲線的位置 相關(guān)的信息的二維數(shù)據(jù)結(jié)構(gòu)的方法,該方法包括 通過以下步驟來生成包括用于表示兩個或更多曲線的位置的二維區(qū)域內(nèi)的所選 取樣位置陣列的值集合的二維數(shù)據(jù)結(jié)構(gòu) 設(shè)置陣列中的取樣位置的值,使得取自位于數(shù)據(jù)結(jié)構(gòu)要表示的第一曲線在數(shù)據(jù)結(jié) 構(gòu)中出現(xiàn)時其一側(cè)的數(shù)據(jù)結(jié)構(gòu)表示的區(qū)域中的位置的樣本將返回小于第一閾值的取樣值, 而使得取自位于數(shù)據(jù)結(jié)構(gòu)中的那個曲線另一側(cè)的位置的樣本將返回大于第一閾值的取樣 值,并且使得取自位于數(shù)據(jù)結(jié)構(gòu)要表示的第二曲線在數(shù)據(jù)結(jié)構(gòu)中出現(xiàn)時其一側(cè)的數(shù)據(jù)結(jié)構(gòu) 中的位置的樣本將返回小于不同的第二閾值的取樣值,而使得取自位于數(shù)據(jù)結(jié)構(gòu)中的那個 第二曲線另一側(cè)的位置的樣本將返回大于第二閾值的取樣值。 類似地,根據(jù)本發(fā)明的另一方面,提供一種用于生成用于存儲與兩個或更多曲線 的位置相關(guān)的信息的二維數(shù)據(jù)結(jié)構(gòu)的設(shè)備,該設(shè)備包括 用于通過以下步驟來生成包括用于表示兩個或更多曲線的位置的二維區(qū)域內(nèi)的 所選取樣位置陣列的值集合的二維數(shù)據(jù)結(jié)構(gòu)的部件 設(shè)置陣列中的取樣位置的值,使得取自位于數(shù)據(jù)結(jié)構(gòu)要表示的第一曲線在數(shù)據(jù)結(jié) 構(gòu)中出現(xiàn)時其一側(cè)的數(shù)據(jù)結(jié)構(gòu)表示的區(qū)域中的位置的樣本將返回小于第一閾值的取樣值, 而使得取自位于數(shù)據(jù)結(jié)構(gòu)中的那個曲線另一側(cè)的位置的樣本將返回大于第一閾值的取樣 值,并且使得取自位于數(shù)據(jù)結(jié)構(gòu)要表示的第二曲線在數(shù)據(jù)結(jié)構(gòu)中出現(xiàn)時其一側(cè)的數(shù)據(jù)結(jié)構(gòu) 中的位置的樣本將返回小于不同的第二閾值的取樣值,而使得取自位于數(shù)據(jù)結(jié)構(gòu)中的那個 第二曲線另一側(cè)的位置的樣本將返回大于第二閾值的取樣值。 根據(jù)本發(fā)明的又一方面,提供一種用于存儲與兩個或更多曲線的位置相關(guān)的信息 的二維數(shù)據(jù)結(jié)構(gòu),包括 二維區(qū)域內(nèi)的所選取樣位置陣列的值集合,其中 陣列中的取樣位置的值設(shè)置成使得取自位于數(shù)據(jù)結(jié)構(gòu)要表示的第一曲線在數(shù)據(jù) 結(jié)構(gòu)中出現(xiàn)時其一側(cè)的數(shù)據(jù)結(jié)構(gòu)表示的區(qū)域中的位置的樣本將返回小于第一閾值的取樣 值,而使得取自位于數(shù)據(jù)結(jié)構(gòu)中的那個曲線另一側(cè)的位置的樣本將返回大于第一閾值的取 樣值,并且使得取自位于數(shù)據(jù)結(jié)構(gòu)要表示的第二曲線在數(shù)據(jù)結(jié)構(gòu)中出現(xiàn)時其一側(cè)的數(shù)據(jù)結(jié) 構(gòu)中的位置的樣本將返回小于不同的第二閾值的取樣值,而使得取自位于數(shù)據(jù)結(jié)構(gòu)中的那 個第二曲線另一側(cè)的位置的樣本將返回大于第二閾值的取樣值。 本領(lǐng)域的技術(shù)人員會理解,本發(fā)明的所有這些方面和實施例能夠并且優(yōu)選地在適 當時確實包括本文所述的本發(fā)明的優(yōu)選可選特征的任何一個或多個或者全部。因此,例如, 數(shù)據(jù)值優(yōu)選地適配待使用的特定數(shù)據(jù)取樣方案。類似地,曲線優(yōu)選地布置在數(shù)據(jù)結(jié)構(gòu)中,使 得它們在數(shù)據(jù)結(jié)構(gòu)中的位置沒有重疊,并且優(yōu)選地是以上所述形式的(平滑)曲線。數(shù)據(jù) 結(jié)構(gòu)優(yōu)選地是圖形紋理。 本領(lǐng)域的技術(shù)人員還會理解,本發(fā)明的所有所述方面和實施例能夠并且優(yōu)選地在
      26適當時確實包括本文所述的優(yōu)選和可選特征的任何一個或多個或者全部。 根據(jù)本發(fā)明的方法可至少部分使用軟件、如計算機程序來實現(xiàn)。因此將會看到,從
      其它方面來看時,本發(fā)明提供在安裝到數(shù)據(jù)處理部件時特別適合執(zhí)行本文所述的方法的計
      算機軟件、包括當程序單元運行于數(shù)據(jù)處理部件時用于執(zhí)行本文所述方法的計算機軟件代
      碼部分的計算機程序單元以及包括當程序運行于數(shù)據(jù)處理系統(tǒng)時適合執(zhí)行本文所述的某
      一方法或這些方法的所有步驟的代碼部件的計算機程序。數(shù)據(jù)處理器可以是微處理器系
      統(tǒng)、可編程FPGA(現(xiàn)場可編程門陣列)等。 本發(fā)明還擴展到包括這種軟件的計算機軟件載體,其中軟件在用于操作圖形處理 器、渲染器或者包括數(shù)據(jù)處理部件的微處理器系統(tǒng)時,結(jié)合所述數(shù)據(jù)處理部件使所述處理 器、渲染器或系統(tǒng)執(zhí)行本發(fā)明的方法的步驟。這種計算機軟件載體可以是例如ROM芯片、CD ROM或磁盤等物理存儲介質(zhì),或者可以是例如通過線路的電子信號、光信號或者例如到衛(wèi)星 的無線電信號等等。 還應(yīng)理解,并非本發(fā)明的方法的所有步驟都需要通過計算機軟件來執(zhí)行,因此,從 另一個廣義方面來看,本發(fā)明提供計算機軟件,并且這種軟件安裝在計算機軟件載體上,用 于執(zhí)行本文所述的方法的步驟的至少一個。 本發(fā)明可相應(yīng)地適當體現(xiàn)為與計算機系統(tǒng)配合使用的計算機程序產(chǎn)品。這種實現(xiàn) 可包括固定在實體介質(zhì),諸如例如磁盤、CD-R0M、 ROM或硬盤等計算機可讀介質(zhì)上或者經(jīng)由 調(diào)制解調(diào)器或其它接口裝置、通過包括但不限于光或模擬通信線路的實體介質(zhì)或者使用包 括但不限于微波、紅外線或其它傳輸技術(shù)的無線技術(shù)以無形方式傳送到計算機系統(tǒng)的一系 列計算機可讀指令。計算機可讀指令系列實施本文先前所述的功能性的全部或部分。
      本領(lǐng)域的技術(shù)人員會理解,這類計算機可讀指令可通過與許多計算機架構(gòu)或操作 系統(tǒng)配合使用的許多編程語言來編寫。此外,這類指令可使用當前或?qū)淼陌ǖ幌抻?半導(dǎo)體、磁或光的任何存儲器技術(shù)來存儲,或者使用當前或?qū)淼陌ǖ幌抻诠?、紅外線 或微波的任何通信技術(shù)來傳送。考慮這種計算機程序產(chǎn)品可作為附有印刷或電子文檔的可 移動介質(zhì)來分發(fā),例如收縮包裝軟件(shrinkir即pedsoftware),使用計算機系統(tǒng)預(yù)加載 在例如系統(tǒng)ROM或固定磁盤上,或者通過例如因特網(wǎng)或萬維網(wǎng)等網(wǎng)絡(luò)從服務(wù)器或電子公告 板分發(fā)。


      現(xiàn)在僅作為實例、參照附圖來描述本發(fā)明的多個優(yōu)選實施例,附圖包括 圖1示意示出在本發(fā)明中使用的紋理中的平滑曲線的表示; 圖2示意示出用于圖1的平滑曲線的質(zhì)素值的推導(dǎo)的一個實施例; 圖3示意示出表示單個紋理圖中的多個平滑曲線的紋理的存儲; 圖4示意示出圖1的紋理中的曲線的輪廓區(qū)域的放大部分; 圖5示意示出例如圖1所示的紋理對圖形圖元的應(yīng)用; 圖6示意示出本發(fā)明的一個實施例中供顯示的平滑曲線的渲染; 圖7示意示出本發(fā)明的一個實施例中包含圖形紋理中的尖端的曲線的表示; 圖8a示意示出根據(jù)本發(fā)明將兩個平滑曲線裝入單個紋理;以及 圖8b示意示出紋理值在圖8a所示的紋理上如何改變。
      具體實施例方式
      如上所述,本發(fā)明的基本前提是在紋理中表示平滑曲線,使得對曲線一側(cè)的紋理 進行取樣將給出小于特定閾值的取樣紋理值,而對曲線另一側(cè)的紋理進行取樣將給出大于 特定閾值的取樣紋理值。 為了便于說明,首先相對于單個平滑曲線來描述這個原理以及如何生成紋理的原
      理,然后描述根據(jù)本發(fā)明將兩個或更多這類平滑曲線裝入單個紋理。
      圖1示出用于表示平滑曲線1的這種紋理的布置。 圖la)以較低分辨率示出總體紋理,并且基本上說明使曲線1每側(cè)的紋理位置設(shè) 置成并且返回不同的紋理值的原理。圖lb)示出在紋理中出現(xiàn)時曲線1的線條周圍的圖 la)的紋理的放大視圖,并且具體示出在紋理中出現(xiàn)時的曲線1附近紋理值如何改變。
      如圖l所示,曲線l之內(nèi)的質(zhì)素設(shè)置成大于"0.5"的值(值"l"在圖1中示為白 色),而曲線l之外的質(zhì)素設(shè)置成小于"0.5"的值(值"O"在圖1中示為黑色)。因此,當 查找紋理中的取樣位置時,對于取樣位置所返回的紋理值可用于確定取樣位置是否在曲線 l之內(nèi)。實際上,曲線1的閾值可認為是O. 5。(大家會理解,圖l所示的紋理同樣可用于繪制"反向"或反曲線或形狀,使得"黑 色"看作在曲線"之內(nèi)",而"白色"看作在曲線之外。實際上,在一個優(yōu)選實施例中,配置圖 形系統(tǒng)以便能夠進行這個操作。這例如可通過以下步驟來進行從曲線的閾值的兩倍減去 取樣紋理值(B卩,通過取2X閾值(它在本例中給出l.O)-取樣文件值(sampled_texture_ value)),然后將那個值與閾值(它實際上"翻轉(zhuǎn)(flip)"了紋理的含義)進行比較。)
      圖1所示的紋理是8位紋理(S卩,使用8位來表示各質(zhì)素值)。各質(zhì)素具有與其關(guān) 聯(lián)的單值(因此紋理可方便地是單道紋理(singlechannel texture))。
      在這種布置中,允許紋理中的質(zhì)素具有落入范圍(包含)0至1的值,并且曲線輪 廓的閾值設(shè)置成0.5。其它布置當然也是可能的。 圖4示意示出圖1所示的紋理中存儲的曲線1的曲線輪廓區(qū)域26的放大部分24。 可以看到,輪廓26周圍的質(zhì)素值改變到曲線輪廓的任一側(cè),包括離曲線的輪廓26較近、具 有比高于曲線的閾值的值表示的曲線一側(cè)上的離曲線輪廓26更遠的質(zhì)素28更高(更淡) 的值的一些質(zhì)素27,反過來也是一樣。下面進一步論述,這樣以便確保當曲線經(jīng)過雙線性取 樣時,返回預(yù)期紋理值。 如上所述,在本發(fā)明中,將通過圖l所示的布置的方式的兩個或更多平滑曲線的 表示裝入單個紋理(即,使用相同的質(zhì)素集合來表示)。 本申請人具體認識到,雖然圍繞和沿著紋理中要表示的給定曲線的路徑或線條的 質(zhì)素的準確值對于紋理被取樣時正確地指示曲線的位置會是重要的,但是離曲線的路徑較 遠、即完全在曲線之內(nèi)或之外的質(zhì)素的值不是那么重要,只要那些質(zhì)素的值全部高于曲線 的閾值(例如曲線之外或者反過來)或者全部低于那個閾值(例如在曲線之內(nèi)或者反過 來)。這意味著,只要滿足這些要求,則離曲線較遠的質(zhì)素可使其值改變,以便提供附加信 息,例如具體來說是用于指示紋理中的另一個曲線的路徑(線條)的位置的信息。
      圖8a說明這種情況,并且示出裝入單個紋理(相同質(zhì)素空間)82的兩個平滑曲線 80、81的表示。
      圖8a中使用的不同陰影(shades)表示紋理內(nèi)不同的質(zhì)素值。紋理82的準許質(zhì) 素值的范圍是0至1。 如圖8a所示,紋理中表示的第一 曲線80具有第一較低閾值,即當前實施例中的 1/3,而第二曲線81具有較高閾值,即當前實施例中的2/3。 這意味著,其中還有可能使用質(zhì)素值的范圍來指代曲線81的路徑的位置,而沒有 使那些質(zhì)素值減小到低于曲線80的閾值(它在對紋理取樣以便繪制曲線80時則可產(chǎn)生錯 誤讀數(shù)),反過來也是一樣。(實際上,質(zhì)素值的范圍可用于指代各曲線80、81的路徑,只要 那些質(zhì)素值沒有減小到另一個曲線的閾值的錯誤一側(cè)。) 圖8a說明這種情況,并且示出質(zhì)素值沿圖8a所示線條a_a從左至右的進展。
      如圖8b所示,在當前實施例中被認為在兩個平滑曲線之外的區(qū)域83中的質(zhì)素值 設(shè)置成小于兩個曲線80、81的閾值的值(S卩,實際上低于較小閾值曲線80的閾值1/3)。
      在圍繞曲線80的線條的"過渡"區(qū)域84中,質(zhì)素值圍繞曲線80的閾值1/3改變, 以便當紋理被取樣時更準確地指示曲線80的位置。但是,如圖8b所示,這些質(zhì)素值在任何 點都沒有超過曲線81的閾值2/3(以便避免為了繪制曲線81而對值取樣時的錯誤讀數(shù))。
      這意味著,實際上,如圖9所示,可用于指代曲線80的線條的質(zhì)素值的范圍是0至 2/3。這是可用的全質(zhì)素值范圍O-l的三分之二,因此,實際上,0.6位的精度由于紋理中存 在第二曲線81而損失。但是,另一方面,定義兩個曲線所需的質(zhì)素的數(shù)量減少(因為如果 兩個曲線要在不同的紋理圖中定義,則需要兩倍的質(zhì)素)。 則存在位于兩個曲線80 、 81之間、即當前實施例中第一 曲線80之內(nèi)但在第二曲線 81之外的區(qū)域85。在這種情況下,這個區(qū)域內(nèi)的質(zhì)素值設(shè)置成兩個曲線的閾值之間的值, 使得那些質(zhì)素在被取樣時適當?shù)刂甘舅鼈兿鄬蓚€曲線的位置。 然后到達將用于指示紋理中的曲線81的路徑的"過渡"區(qū)域86。此外,在這個區(qū) 域中,質(zhì)素值同樣在值的某個范圍上改變,以便當紋理被取樣時更準確地指示曲線81的線 條的位置。但是,這個區(qū)域86中的變化質(zhì)素值同樣限制成使得它們沒有減小到低于曲線80 的閾值。因此,實際上,區(qū)域86中可用于指示曲線81的線條的位置的質(zhì)素值的范圍是3/1 至l,如圖8b所示。 最后,到達當前實施例中被認為在兩個曲線80和81之內(nèi)的區(qū)域87。在這種情況 下,那個區(qū)域中的質(zhì)素值只是設(shè)置成高于曲線80的閾值和曲線81的閾值,以便當紋理被取 樣時適當?shù)刂甘灸切┪恢迷诟髑€之內(nèi)。 曲線80、81也裝入紋理82,其方式是,如圖8a所示,在紋理中出現(xiàn)時曲線80、81的 線條(路徑)周圍的質(zhì)素沒有相互重疊。這又幫助避免一個曲線的表示影響另一個曲線的 取樣。 從圖8a和圖8b可看到,在當前實施例中,兩個曲線80和81通過以下步驟存儲在 相同紋理空間中賦予各曲線不同的閾值,設(shè)置質(zhì)素值以使得它們相對各曲線的閾值適當 取值,并且確保兩個曲線的線條的位置在紋理中實際上沒有相互重疊。具體來說,只要質(zhì)素 值不會不適當?shù)嘏c曲線的閾值交叉,有可能部分地將曲線層疊地放入紋理,并且實際上定 義曲線的線條(路徑)的質(zhì)素沒有相互重疊。 雖然圖8a和圖8b所示的布置在紋理中存儲兩個曲線80、81 ,但是當然有可能以相 似方式在紋理中存儲多于兩個曲線,并且使用例如不同范圍的質(zhì)素值和不同的曲線閾值。
      還有可能使用浮點格式紋理而不是定點紋理。實際上,在其中浮點格式具有m位 尾數(shù)和e位指數(shù)的浮點紋理的情況下,通過將各曲線的閾值設(shè)置成1. 5X2n,則高達26-2個 曲線可在紋理中層疊地存儲,各具有大約m位分辨率(在也滿足指代(圍繞)紋理中的曲 線的線條的質(zhì)素的任何不重疊要求的條件下)。(換言之,通過在使用浮點紋理時將閾值設(shè) 置成指數(shù)范圍的中值,可保持用于指代各曲線的線條的全尾數(shù)精度。)
      下面進一步論述,對于使用雙線性濾波的取樣來優(yōu)化用于當前實施例的紋理。
      (本領(lǐng)域已知,雙線性濾波是一種根據(jù)分配給紋理圖的質(zhì)素的值用于紋理圖中的 位置的內(nèi)插值的方式。它可看作是對取樣位置的四個最接近質(zhì)素的凸組合,其中系數(shù)從重 心坐標得出 bili固r(s,t) = (l_s) (l_t) texe",」+s (l_t)
      texeli+1, j+(1-s) t texel^ j+1+s t texeli+1, j+1 其中,(s,t)是所述的取樣位置的坐標,以及texeli,j等是對那個位置的四個最接 近質(zhì)素。) 如上所述,本申請人已經(jīng)認識到,通過對于使用雙線性濾波的取樣來優(yōu)化表示曲
      線的紋理,在紋理被使用時的取樣過程能夠并且將會產(chǎn)生所述的曲線的更好表示。 與雙線性濾波配合使用的紋理的優(yōu)化在本實施例中通過以下步驟來執(zhí)行對于紋
      理要表示的各曲線建立包括實際上指代紋理中的曲線的輪廓的位置的質(zhì)素的質(zhì)素值作為
      變量的成本函數(shù),然后嘗試使那個成本函數(shù)為最小并且相應(yīng)地選擇質(zhì)素值。
      在當前實施例中,這個成本函數(shù)通過以下步驟來生成將特定曲線的路徑(線條)
      分解為曲線的路徑與連接相應(yīng)質(zhì)素中心的線條的一系列相交,然后設(shè)法調(diào)整相應(yīng)質(zhì)素值以
      便在曲線與連接相應(yīng)兩個質(zhì)素中心的線條的相交點產(chǎn)生預(yù)期曲線閾值。 圖2說明這種情況,并且示出質(zhì)素11的示范柵格,平滑曲線IO經(jīng)過其中。如果考
      慮質(zhì)素12、13,則理想地,它們相應(yīng)的質(zhì)素值應(yīng)當設(shè)置成使得如果紋理在曲線10與連接質(zhì)
      素12、13的線條15相交的點14經(jīng)過雙線性取樣,則取樣紋理值應(yīng)當完全等于曲線的紋理
      閾值(可以是例如1/3)。 但是,各質(zhì)素可參與其值需要對于所述的曲線以這種方式進行優(yōu)化的一個以上質(zhì) 素對,因此它可能不一定始終能夠?qū)①|(zhì)素值設(shè)置成相對于任何給定質(zhì)素對會產(chǎn)生預(yù)期結(jié)果 的準確值。 因此,用于指代曲線的路徑的質(zhì)素的質(zhì)素值通過以下步驟來確定使用作為相對 于每個相關(guān)質(zhì)素對所確定的局部成本函數(shù)之和的全局成本函數(shù)(實際上,跨接所述的曲線 的路徑(線條)的各質(zhì)素對(實際上,這也是跨接紋理中具有曲線的閾值的輪廓的各質(zhì)素 對)),然后使用全局優(yōu)化方法來設(shè)法找到使(所述的曲線的)全局(總體)誤差為最小的 配置,以便設(shè)法找到要使用的最佳質(zhì)素值。 每個相應(yīng)質(zhì)素對的局部成本函數(shù)(兩個質(zhì)素值的調(diào)整)在當前實施例中看作是如 下一系列互相聯(lián)系的優(yōu)化問題。 首先,如上所述, 一個目標是使連接質(zhì)素對的線條15上的曲線的實際交叉點14與 質(zhì)素值所確定的交叉點(即,其中對質(zhì)素12、13的值雙線性取樣將給出等于所定義曲線閾 值(在本例中為1/3)的取樣值的線條15上的點)之間的差異為最小。通過在成本函數(shù)中 包括實際交叉點位置與質(zhì)素值所指示的位置之間的誤差來考慮這個因素。
      30sin2 S 其次,成本函數(shù)配置成使得質(zhì)素值中所產(chǎn)生的差將反映曲線10與連接質(zhì)素對的 線條15交叉的角9。這樣以便設(shè)法確保,如果曲線10與線條15垂直,則質(zhì)素值12、13之 間的差是它可以是的最大值(假定可用于所述的曲線的值的范圍)(在本例中為2/3),以及 如果曲線10與線條15差不多平行,則質(zhì)素值12、 13之間的差應(yīng)當接近0 (零)。這幫助確 保質(zhì)素可被分配(使用)整個范圍的可用質(zhì)素值(本例中為0至2/3),由此定義具有較高 分辨率的曲線。 在當前實施例中,這通過使用曲線10與連接質(zhì)素的線條15之間的角e作為成本 函數(shù)中的因子來實現(xiàn)。 最后,不太重要的是在曲線與質(zhì)素之間的線條15差不多平行的情況下準確定位 曲線10的交叉點14(因為紋理被取樣時的交叉點中的任何誤差在這種情況下不太有害)。 在當前實施例中,通過使用與交叉角e的正弦的平方相關(guān)的因子在成本函數(shù)中對邊緣進 行加權(quán),來允許這種情況。 然后,對于所考慮的所有質(zhì)素值對,將用于以這種形式所定義的每個相應(yīng)的質(zhì)素
      值對的成本函數(shù)求和,以便給出所述的曲線的"全局"或總體成本函數(shù)。 這在當前實施例中產(chǎn)生如下形式的成本函數(shù)
      A「vt^ 'lwantedcrosspoint,. — bilinearcrosspoint,. |
      cost = Z ^ , ' 、. ^
      w2.1—— tex:e/!.J - sin《| 其中 Wl和w2是可選擇并且根據(jù)需要改變的加權(quán)值,例如迭代地測試變化的優(yōu)化; i是對其測試成本函數(shù)的質(zhì)素對; N是對其將成本函數(shù)進行評估和求和的質(zhì)素對的總數(shù); e,是對于第i個質(zhì)素對的曲線的交叉角; texelia和texelib是第i個質(zhì)素對的質(zhì)素的相應(yīng)質(zhì)素值; wantedcrosspointi是連接第i對質(zhì)素的線條上真正曲線交叉的點;以及 bilinearcrosspointi是連接第i對質(zhì)素的線條上采用給定質(zhì)素值的雙線性濾波
      的結(jié)果返回所定義的曲線閾值(在本例中為0.5)的點,因此是bilinearcrosspointj =-;-;—這個等式通過對于bilinearcrosspointi求解閾值 =
      bilinear (bilinearcrosspointi, 0)來得出。 實際上,在這個成本函數(shù)中,因子 I wantedcrosspoint「bilinearcrosspointi 表示當質(zhì)素值被取樣時所確定的曲線的交叉點與曲線的所需交叉點(wanted crossing point)之間的差的絕X寸值;
      因子 |texelib-texelj-sin 、 確保使用全范圍的可用質(zhì)素值(防止解將所有所分配質(zhì)素值落到(collapse to) 閾值(本例中為0.5));以及
      因子
      sin2 9 i 使曲線與質(zhì)素之間的線條差不多平行的情況下邊緣在成本函數(shù)中具有較小加權(quán) (反過來也是一樣)。 然后使這個成本函數(shù)為最小,以便找到用于將指示紋理中的曲線的輪廓的位置的 各質(zhì)素對的最佳質(zhì)素值texelia、 texelib(實際上,當前實施例中跨接(跨越)輪廓的質(zhì)素 對)。在當前實施例中,這使用模擬退火來進行,但是如果需要可使用其它優(yōu)化算法。然后, 所確定的質(zhì)素值存儲在表示平滑曲線的圖形紋理中。 然后,這對于紋理要表示的各平滑曲線重復(fù)進行,使得為了使用雙線性濾波的取 樣而適當優(yōu)化將指示紋理中的各曲線的閾值輪廓的質(zhì)素的質(zhì)素值。 在當前實施例中,由于紋理中的各曲線的路徑(閾值輪廓區(qū)域)沒有重疊,所以任 何給定質(zhì)素不能參與指示紋理中多于一個曲線的位置(閾值輪廓)。這意味著,紋理中任何 給定曲線的位置(閾值輪廓)的優(yōu)化不會影響將指示紋理中任何其它曲線的位置(閾值輪 廓)的任何質(zhì)素。因此,各曲線可獨立優(yōu)化。 這里還應(yīng)當注意,可能需要縮放和偏置優(yōu)化的結(jié)果(得出的質(zhì)素值),以便確保那 些值在用于表示給定曲線的所需最小和最大質(zhì)素值范圍之內(nèi)。在當前實施例中,這在必要 時進行。 在當前實施例中,這個過程對于多組不同的平滑曲線和/或給定平滑曲線的部分 重復(fù)進行,以便構(gòu)建各表示多個不同平滑曲線的一組紋理圖。 在當前實施例中,在紋理中表示的平滑曲線包括連續(xù)的并且其一階導(dǎo)數(shù)分段連續(xù) 的曲線。它們可以是例如貝塞爾曲線、樣條曲線和/或弧形。 表示一個或多個基準或"典范"曲線的紋理也被生成和使用。(如上所述,"典范曲 線"是給定曲線族內(nèi)的所有曲線可使用仿射變換來變換成的基準或基礎(chǔ)曲線。)
      在當前實施例中,通過空間分離紋理中的不同組曲線,紋理圖可用于存儲多組多 個不同平滑曲線和/或平滑曲線的部分的紋理表示。 圖3示出在表示單曲線的紋理的情況下的這個方面,并且示出單個總體紋理23中 存儲的多個平滑曲線20、21、22等。通過對紋理23的適當區(qū)域進行取樣,可繪制其中表示 的平滑曲線。在紋理的各段20、21、22等通過本發(fā)明的方式表示多個曲線的情況下,可使用 相同的布置。 將表示不同組平滑曲線的紋理作為相同紋理圖的不同部分存儲允許許多組曲線 存儲在單個紋理中,并且可減少例如使用本發(fā)明時渲染平滑曲線所需的紋理變化數(shù)量。
      實際上,本申請人已經(jīng)發(fā)現(xiàn),在實踐中可需要在圖形處理中繪制的即使并非全部 也是大部分平滑曲線段可通過較少的曲線族來表示,使得較容易實現(xiàn)使用較少紋理來表示 所有那些預(yù)期曲線。 —旦表示平滑曲線組的紋理集合已經(jīng)通過這種方式生成并且存儲供圖形處理系 統(tǒng)使用,則紋理可用于繪制平滑曲線所定義的形狀(即,使對應(yīng)于平滑曲線的曲線作為其 邊緣(邊界)的形狀)。這基本上通過以下步驟來進行生成覆蓋其中要繪制形狀的場景 (顯示)區(qū)域的圖元,然后將適當紋理應(yīng)用到圖元以繪制該形狀。 當紋理應(yīng)用于圖元時,針對圖元內(nèi)的取樣點來對紋理值進行取樣,并且取樣紋理 值用于在曲線之內(nèi)(即,實際上,在曲線所定義的形狀的邊緣或邊界之內(nèi))(如果取樣紋理值小于曲線的閾值,或者反過來)時有條件地繪制(著色)樣本位置或者在曲線(形狀) 之外(如果取樣紋理值大于或等于曲線的閾值或者反過來)時丟棄樣本位置。
      圖5說明這種情況,并且示意示出表示曲線50的紋理對圖元51的應(yīng)用。在這種 情況下,圖元51的較淡上色區(qū)域52繪制為處于曲線50之內(nèi)。 現(xiàn)在更詳細地描述用于在當前實施例中使用紋理來渲染形狀的過程的一個優(yōu)選 實施例。 首先,圖形處理系統(tǒng)識別渲染"平滑"形狀的需要。然后以正常方式生成覆蓋其中 要顯示形狀的屏幕區(qū)域的圖元。在當前實施例中,生成覆蓋定義待繪制形狀的邊緣的曲線 的控制點的凸包的三角形。 然后以正常方式將這些圖元光柵化成片元,這些片元傳遞給著色管線進行著色。 (可能發(fā)生的是,如果光柵化圖元沒有生成任何片元(因為圖元實際上沒有覆蓋在將被顯 示時的場景的任何取樣點),則該過程可在此停止,因為這意味著,形狀在將被顯示的場景 中實際上不會看到。) 然后,通過本領(lǐng)域已知的從表示圖元覆蓋的場景中的取樣點的位置的平滑曲線的 紋理取紋理樣本,將與定義要繪制的形狀的邊緣的平滑曲線對應(yīng)的紋理圖(或者紋理圖的 部分)應(yīng)用于圖元。在當前實施例中,每個片元進行單個紋理查找。(其它布置當然也是可 能的。) 然后將各取樣紋理值與對于所述的曲線所定義的紋理閾值進行比較,以及取決于 比較結(jié)果樣本位置則在處于曲線(因而形狀)之內(nèi)時被繪制(渲染)或者在處于曲線之外 時被丟棄。使用雙線性濾波(具有雙線性濾波使能)來獲取紋理樣本,因為在這個實施例 中,如上所述,紋理圖適配使用雙線性濾波的取樣。 取樣紋理值和曲線閾值的比較可在具有可編程片元著色器硬件的圖形處理系統(tǒng) 中使用比較和條件丟棄例程來執(zhí)行,例如其中條件丟棄測試設(shè)置成所述的曲線的閾值(例 如if(gl_FragColor. a < threshold)discard)。 在固定功能圖形硬件中,取樣紋理值和曲線閾值的比較可使用圖形"a測試"來執(zhí) 行,其中a測試的比較a值設(shè)置成曲線閾值(在本例中例如l/3),以便丟棄處于曲線之外 的取樣點和/或片元。 將a測試用于此目的時,如果a測試必須對照整個繪制調(diào)用的固定比較值、如 0. 5來執(zhí)行(情況通常會是這樣,這是本領(lǐng)域已知的),則為了對照所述的曲線的實際閾值 (它可能不等于對于繪制調(diào)用的a測試所設(shè)置的值)適當?shù)剡M行測試,偏置或偏移加入取 樣紋理值或者從其中減去,以便允許a測試不會對照曲線的閾值來測試取樣值但對照對 于繪制調(diào)用所設(shè)置的a值對它們進行測試的事實。 換言之,在當前實施例中,在使用a測試的情況下,必要時,調(diào)整取樣紋理值,以 便允許以下事實不會將它們與所述的曲線的實際閾值進行比較(情況將會是那樣),以便 實際上將取樣紋理值"移動"與曲線的閾值必須移動的相同的量,以便將它設(shè)置成用于a 測試的a值(即,對于繪制調(diào)用設(shè)置的a值)。 例如,對于閾值為1/3但其中a測試設(shè)置成0. 5的曲線,各取樣紋理值在它輸入 到a測試之前應(yīng)當被加上(0. 5-(l. 0/3. O)),以便適當偏置(偏移)取樣紋理值以便與O. 5 的繪制調(diào)用a值而不是l/3的曲線閾值進行比較。
      33
      在當前實施例中,大于或等于( >=)測試用于比較和丟棄測試。這個測試的結(jié) 果則存儲在模板緩沖器中,并且當應(yīng)用著色時在以后的處理遍中用于繪制曲線。(當然同樣 有可能在與曲線測試的相同遍中進行著色。) 本領(lǐng)域的技術(shù)人員會理解,可存在其中要繪制的形狀(定義形狀的邊緣的曲線) 沒有完全匹配存儲于紋理中時(stored in a texture)的曲線。這種情況下,待繪制的形 狀(曲線)必須映射到在存儲于紋理中時的曲線,使得然后可適當應(yīng)用(取樣)表示曲線 的紋理。類似地,被渲染的圖像內(nèi)的取樣位置必須映射到表示曲線的紋理內(nèi)的適當取樣位 置,同樣使得可正確繪制形狀(曲線)。 在當前實施例中,將紋理中記錄的曲線映射到待顯示圖像的過程通過以下步驟來 進行計算定義待繪制的輸入形狀的曲線的控制點的紋理坐標,然后使用圖形處理器的內(nèi) 插硬件對曲線線性內(nèi)插紋理坐標。 在二次曲線的情況下,各輸入曲線應(yīng)當正好是紋理中存儲的曲線的仿射變換形 式。因此,在當前實施例中,每次使用整個曲線,使得固定紋理坐標可用于每個控制點,并且 必要的變換通過將表面空間中的控制點與(紋理空間中的)紋理坐標組對來隱式定義。
      對于三次曲線,曲線優(yōu)選地首先分類為蛇形、環(huán)形、尖端、"無窮尖端"(即帶有具有 無窮遠拐點的尖端的曲線)、退化或拋物曲線。拋物曲線是二次曲線,并且同樣處理。退化 曲線通過將它分為一個或多個線條來處理。 對于其它曲線,計算曲線的拐點(inflO和infll)。所存儲曲線(紋理)配置成使 得其拐點始終在-1和1,因此可計算從"1^10..11^11]-> [-l..l]的線性變換。這樣,輸 入曲線的起始和結(jié)束點(0和1)的參數(shù)位置可變換到它們在紋理空間中的位置。紋理需要 覆蓋的典范紋理空間中的參數(shù)范圍這時為已知。 對于環(huán)形曲線和蛇形曲線,則搜索所存儲紋理以找到覆蓋所需參數(shù)范圍的紋理
      (例如最大程度放大紋理)。(這對于尖端和無窮尖端曲線不是必要的。)(拐點在-l和1的)所選的所存儲曲線(紋理)則重新縮放以便將拐點映射到輸
      入曲線的拐點inflO和infll。然后,這種變換應(yīng)用于所存儲曲線的控制點,以便給出適當
      變換的控制點位置,然后將它們用作輸入曲線的對應(yīng)控制點的紋理坐標。 在多組曲線在空間上裝入紋理的情況下,可需要將變換應(yīng)用于紋理坐標,以便對
      紋理的正確空間子集(區(qū)域)進行取樣。這在當前實施例中通過以下步驟來進行計算變
      換框
      x
      -> [u_l..U_2]X[V_l..v_2])所需的縮放和平移,然后將變換應(yīng)用于
      已經(jīng)計算的紋理坐標,好像曲線覆蓋整個紋理那樣。 圖6說明這些過程,并且示意示出定義待繪制形狀的曲線通過分類、紋理搜索、紋 理坐標計算和渲染級的移動。 如圖6所示,定義待繪制形狀70的給定輸入平滑曲線首先在步驟a)分類。在這 個示例中,分類將曲線識別為"蛇形曲線"。 然后,系統(tǒng)搜索表示蛇形曲線的所存儲紋理71,以便找到最接近地匹配輸入曲線 70的所存儲蛇形曲線(步驟b))。這種搜索應(yīng)當識別(并且返回)那個曲線所在的紋理坐 標(那個曲線所在的紋理的區(qū)域)和曲線的閾值。 —旦進行這種操作,將輸入曲線70映射到紋理71中的所存儲曲線所需要的紋理 坐標計算和圖元生成如圖6的步驟c)所示來執(zhí)行。
      最后,如圖6的步驟d)所示,輸入曲線使用所選紋理來渲染。 在當前實施例中,還有可能將待繪制的給定輸入曲線(形狀)分為獨立段,各段則 單獨繪制(例如使用不同的紋理或者相同紋理的不同部分)。這可對于貝塞爾曲線例如使 用Casteljau的算法來進行。需要時當然可使用其它適當?shù)乃惴ā?在當前實施例中,待繪制形狀(曲線)的這種分割在繪制極大形狀時進行,從而將 它們分為較小形狀以便減少渲染偽像。類似地,自相交形狀、如其中具有環(huán)形的曲線所定義 的形狀分為沒有自相交的兩個(或更多)形狀,然后單獨繪制(渲染)這些形狀。
      還進行待繪制曲線(形狀)的這種分割以便在奇異點分割具有奇異點(尖端)的 曲線,從而避免曲線中的奇異點引起渲染誤差。(用于改進曲線中的奇異點的處理的一個備選機制是確保,當曲線在紋理中表示 時,所有奇異點都處于連接質(zhì)素的水平和垂直線的柵格上。圖7說明這種情況,并且示出在 紋理63中表示的尖端曲線60,使得尖端的奇異點61位于連接質(zhì)素的中心64的柵格線62 上。) 如上所述并且從以上所述會理解,通過本發(fā)明的方式來渲染平滑曲線的效果是繪 制使曲線作為其邊緣或邊界的形狀(因為曲線一側(cè)的點以不同于曲線另一側(cè)的點的方式 來繪制)。例如,從圖8可看到,用于本發(fā)明的紋理可看作表示使所述的曲線作為其邊緣或 邊界或輪廓的形狀。 因此,當前實施例和本發(fā)明可有效地考慮用于渲染使相關(guān)曲線作為其邊緣或邊界 和/或使相關(guān)曲線作為其輪廓或邊界的形狀(即,使得曲線的不同側(cè)的點應(yīng)當以不同方式 來繪制)。 雖然以上具體參照紋理用于表示多個平滑曲線和平滑形狀以便在圖形處理系統(tǒng) 中進行渲染來描述當前實施例,但是本申請人已經(jīng)認識到,也有可能使用本發(fā)明的原理在 相似的數(shù)據(jù)結(jié)構(gòu)中以相似方式來存儲可采取曲線、輪廓線和平滑形狀的形式表示的其它數(shù) 據(jù)。 從以上所述可看到,本發(fā)明至少在其優(yōu)選實施例中提供用于有效地渲染使平滑曲 線作為其邊緣(邊界)的形狀的方法和系統(tǒng),它其中還可用于低成本固定功能3D圖形硬件 和未修改現(xiàn)有硬件圖形加速器。例如,這允許更新的曲線渲染API和應(yīng)用使用較低成本和 /或固定功能圖形硬件進行硬件加速。 因此,本發(fā)明可以僅使用"基本"圖形硬件來實現(xiàn)。例如與用于渲染平滑曲線的現(xiàn) 有細分方式相比,它還使用顯著更小的CPU時間和渲染帶寬因而較小的功率。
      這至少在本發(fā)明的優(yōu)選實施例中通過以下步驟來實現(xiàn)將平滑曲線表示為圖形紋 理,然后使用圖形紋理映射來渲染曲線所定義的形狀。 此外,本發(fā)明通過以下步驟來提供用于進行這種操作的特別有效機制將多個基 于紋理的平滑曲線描述裝入單個紋理圖(使用單個質(zhì)素集合),由此其中還提高將曲線存 儲在紋理中的方式的效率。因此,多個曲線表示裝入單個二維紋理,由此節(jié)省紋理空間和紋 理帶寬。 這至少在本發(fā)明的優(yōu)選實施例中通過以下步驟來實現(xiàn)將多個曲線的表示布置在 紋理中,其中各曲線具有用于指示曲線之內(nèi)或之外的不同閾值水平,并且優(yōu)選地確保指示 各曲線的線條的質(zhì)素在紋理中沒有相互重疊。
      權(quán)利要求
      一種圖形處理系統(tǒng)中渲染平滑曲線所定義的形狀的方法,所述方法包括通過針對圖元內(nèi)的取樣位置對紋理值進行取樣,將表示與定義所述形狀的曲線對應(yīng)的曲線的圖形紋理應(yīng)用于待渲染的圖元,通過將紋理配置成使得所述紋理表示的第一曲線一側(cè)的所有紋理位置將返回小于第一閾值的取樣紋理值,而那個曲線另一側(cè)的所有紋理位置將返回大于所述第一閾值的取樣紋理值,并且使得所述紋理表示的第二曲線一側(cè)的所有紋理位置將返回小于第二不同閾值的取樣紋理值,而那個曲線另一側(cè)的所有紋理位置將返回大于所述第二閾值的取樣紋理值,來配置所述紋理以表示兩個平滑曲線;以及將所述圖元的所取樣的取樣點的所述取樣紋理值與對應(yīng)于定義待渲染的所述形狀的所述曲線的曲線的所述所選紋理閾值進行比較,以便確定所述圖元的所取樣的取樣點應(yīng)當看作在所述曲線的哪一側(cè)。
      2. —種生成圖形處理系統(tǒng)中用于渲染平滑曲線所定義的形狀的紋理的方法,所述方法包括通過以下步驟來生成包括用于表示至少兩個平滑曲線的紋理質(zhì)素陣列的圖形紋理圖設(shè)置所述紋理的質(zhì)素值,使得取自位于所述紋理要表示的第一平滑曲線在所述紋理中出現(xiàn)時其一側(cè)的所述紋理圖中的位置的紋理樣本將返回小于第一紋理閾值的紋理值,而使得取自位于所述紋理中的那個平滑曲線另一側(cè)的位置的紋理樣本將返回大于所述第一紋理閾值的紋理值,并且使得取自位于所述紋理要表示的第二曲線在所述紋理中出現(xiàn)時其一側(cè)的所述紋理圖中的位置的紋理樣本將返回小于不同的第二紋理閾值的紋理值,而使得取自位于所述紋理中的那個平滑第二曲線另一側(cè)的位置的紋理樣本將返回大于所述第二紋理閾值的紋理值。
      3. 如權(quán)利要求1或2所述的方法,其中,所述紋理表示多于兩個平滑曲線。
      4. 如以上權(quán)利要求中的任一項所述的方法,其中,不同的質(zhì)素集合用于指示所述紋理表示的每個不同曲線的所述閾值輪廓。
      5. 如以上權(quán)利要求中的任一項所述的方法,其中,所述紋理表示的各曲線的所述閾值在可用于所述紋理的質(zhì)素值的所述總體范圍之內(nèi)以及之上等間距分隔開。
      6. 如以上權(quán)利要求中的任一項所述的方法,其中,對于采用特定紋理取樣過程的取樣來適配表示所述平滑曲線的所述紋理的所述質(zhì)素值的一些或全部。
      7. —種用于圖形處理系統(tǒng)中渲染平滑曲線所定義的形狀的設(shè)備,所述設(shè)備包括用于存儲各表示兩個或更多平滑曲線的一個或多個圖形紋理的部件,通過將每個紋理配置成使得所述紋理表示的第一曲線的一側(cè)的所有紋理位置將返回小于第一閾值的取樣紋理值,而那個曲線的另一側(cè)的所有紋理位置將返回大于所述第一閾值的取樣紋理值,并且使得所述紋理表示的第二曲線的一側(cè)的所有紋理位置將返回小于第二不同閾值的取樣紋理值,而那個曲線的另一側(cè)的所有紋理位置將返回大于所述第二閾值的取樣紋理值,來配置每個紋理以表示至少兩個平滑曲線;用于執(zhí)行以下步驟的部件通過針對圖元內(nèi)的取樣位置對所存儲紋理的紋理值進行取樣,將表示至少兩個平滑曲線的所存儲紋理應(yīng)用于待渲染的所述圖元,以便渲染與所述平滑曲線之一對應(yīng)的曲線所定義的形狀供顯示;以及用于執(zhí)行以下步驟的部件將圖元的所取樣的取樣點的取樣紋理值與所述紋理表示的與定義待渲染形狀的所述曲線對應(yīng)的所述曲線之一的所述紋理閾值進行比較,以便確定所 述圖元的取樣點應(yīng)當看作在那個曲線的哪一側(cè)。
      8. —種用于生成在圖形處理系統(tǒng)中用于渲染平滑曲線所定義的形狀的紋理的設(shè)備,所 述設(shè)備包括用于生成包括用于表示兩個平滑曲線的紋理質(zhì)素陣列的圖形紋理圖的部件,包括 用于執(zhí)行以下步驟的部件設(shè)置所述紋理的質(zhì)素值,使得取自位于所述紋理要表示的 第一平滑曲線在所述紋理中出現(xiàn)時其一側(cè)的所述紋理圖中的位置的紋理樣本將返回小于 第一紋理閾值的紋理值,而使得取自位于所述紋理中的那個平滑曲線另一側(cè)的位置的紋理 樣本將返回大于所述第一紋理閾值的紋理值,并且使得取自位于所述紋理要表示的第二平 滑曲線在所述紋理中出現(xiàn)時其一側(cè)的所述紋理圖中的位置的紋理樣本將返回小于第二不 同紋理閾值的紋理值,而使得取自位于所述紋理中的那個第二平滑曲線另一側(cè)的位置的紋 理樣本將返回大于所述第二紋理閾值的紋理值。
      9. 如權(quán)利要求7或8所述的設(shè)備,其中,所述紋理表示多于兩個平滑曲線。
      10. 如權(quán)利要求7至9中的任一項所述的設(shè)備,其中,不同的質(zhì)素集合用于指示所述紋理表示的每個不同曲線的所述閾值輪廓。
      11. 如權(quán)利要求7至10中的任一項所述的設(shè)備,其中,所述紋理表示的各曲線的所述閾 值在可用于所述紋理的質(zhì)素值的所述總體范圍之內(nèi)以及之上等間距分隔開。
      12. 如權(quán)利要求7至11中的任一項所述的設(shè)備,其中,對于采用特定紋理取樣過程的取 樣來適配表示所述平滑曲線的所述紋理的所述質(zhì)素值的一些或全部。
      13. —種在圖形處理系統(tǒng)中用于渲染平滑曲線所定義的形狀的圖形紋理圖,所述紋理圖包括紋理質(zhì)素陣列,其中設(shè)置所述紋理的質(zhì)素值,使得取自位于所述紋理要表示的第一平滑曲線在所述紋理中 出現(xiàn)時其一側(cè)的所述紋理圖中的位置的紋理樣本將返回小于第一紋理閾值的紋理值,而使 得取自位于所述紋理中的那個平滑曲線另一側(cè)的位置的紋理樣本將返回大于所述第一紋 理閾值的紋理值,并且使得取自位于所述紋理要表示的第二平滑曲線在所述紋理中出現(xiàn)時 其一側(cè)的所述紋理圖中的位置的紋理樣本將返回小于第二不同紋理閾值的紋理值,而使得 取自位于所述紋理中的那個第二平滑曲線另一側(cè)的位置的紋理樣本將返回大于所述第二 紋理閾值的紋理值。
      14. 如權(quán)利要求13所述的紋理圖,其中,所述紋理的一些或全部質(zhì)素的所述質(zhì)素值還 設(shè)置成使得所述紋理在使用特定所選紋理濾波過程對所述紋理取樣時最準確地表示所述 平滑曲線。
      15. 如權(quán)利要求13或14所述的紋理圖,其中,所述紋理表示多于兩個平滑曲線。
      16. 如權(quán)利要求13至15中的任一項所述的紋理圖,其中,不同的質(zhì)素集合用于指示所 述紋理表示的每個不同曲線的所述閾值輪廓。
      17. 如權(quán)利要求13至16中的任一項所述的紋理圖,其中,所述紋理表示的各曲線的所 述閾值在可用于所述紋理的質(zhì)素值的所述總體范圍之內(nèi)以及之上等間距分隔開。
      18. —種生成用于存儲與兩個或更多曲線的位置相關(guān)的信息的二維數(shù)據(jù)結(jié)構(gòu)的方法, 所述方法包括通過以下步驟來生成包括用于表示兩個或更多曲線的位置的二維區(qū)域內(nèi)的所選取樣位置陣列的值集合的二維數(shù)據(jù)結(jié)構(gòu)設(shè)置所述陣列中的取樣位置的值,使得取自位于所述數(shù)據(jù)結(jié)構(gòu)要表示的第一曲線在所述數(shù)據(jù)結(jié)構(gòu)中出現(xiàn)時其一側(cè)的所述數(shù)據(jù)結(jié)構(gòu)表示的區(qū)域中的位置的樣本將返回小于第一閾值的取樣值,而使得取自位于所述數(shù)據(jù)結(jié)構(gòu)中的那個曲線另一側(cè)的位置的樣本將返回大于所述第一閾值的取樣值,并且使得取自位于所述數(shù)據(jù)結(jié)構(gòu)要表示的第二曲線在所述數(shù)據(jù)結(jié)構(gòu)中出現(xiàn)時其一側(cè)的所述數(shù)據(jù)結(jié)構(gòu)中的位置的樣本將返回小于不同的第二閾值的取樣值,而使得取自位于所述數(shù)據(jù)結(jié)構(gòu)中的那個第二曲線另一側(cè)的位置的樣本將返回大于所述第二閾值的取樣值。
      19. 一種計算機程序單元,包括用于當所述程序單元在數(shù)據(jù)處理部件上運行時執(zhí)行權(quán)利要求1至6中的任一個所述的方法的計算機軟件代碼部分。
      全文摘要
      本發(fā)明為圖形處理系統(tǒng),通過將曲線80之內(nèi)的質(zhì)素設(shè)置成大于曲線80的預(yù)定閾值的值,并且將曲線80之外的質(zhì)素設(shè)置成小于曲線80的閾值的值(反過來也是一樣),在圖形紋理中表示平滑曲線。通過以下步驟將兩個平滑曲線80和81的這類表示裝入單個圖形紋理(相同質(zhì)素空間)82賦予各曲線80、81不同的閾值,設(shè)置質(zhì)素值以使得它們相對各曲線的閾值適當取值,并且確保兩個曲線的閾值輪廓的位置在紋理中實際上沒有相互重疊。
      文檔編號G06T15/00GK101714258SQ20091017909
      公開日2010年5月26日 申請日期2009年9月30日 優(yōu)先權(quán)日2008年10月6日
      發(fā)明者J·尼斯塔德, R·霍爾姆 申請人:Arm有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1