用可編程偏移位置處理紋理樣本的方法和系統的製作方法
2023-10-06 09:56:04
專利名稱:用可編程偏移位置處理紋理樣本的方法和系統的製作方法
技術領域:
本發明大體上涉及計算機圖形,且更明確地說,涉及一種用可編程偏移位置處理紋 理樣本的方法和系統。
背景技術:
除非本文另外指示,否則此部分中所描述的方法不作為本申請案中的權利要求書的 現有技術,且不因包括在此部分中而被承認是現有技術。
用以解決混疊假像的常用紋理過濾方法涉及沿著圍繞映射到紋理空間中的像素中 心的不同軸存取和過濾相等數目的紋素。此方法通常採用雙線性過濾器或三線性過濾 器。作為說明,圖1A是紋理圖100,其中現有技術2x2過濾器核心在單個時鐘循環中 存取圍繞像素中心102的四個鄰近紋素104、 106、 108和110且接著對所述紋素進行雙 線性過濾。
然而, 一些紋理應用以不同方式過濾紋素。 一個實例是基於紋理的陰影圖,且另一 實例是高度動態範圍(HDR)渲染。陰影映射是一種用以在計算機所產生的場景中增強 真實感的陰影渲染技術。更具體地說,在陰影映射過程期間,首先從光的觀點對場景進 行渲染以產生特殊紋理圖(通常稱為陰影圖),其中陰影圖中的每一紋素存儲與可見表 面相關聯的深度值。接著,從觀測者的觀點對場景視圖進行渲染,通過此操作將屏幕空 間中的處於(x,y)位置處的像素投影到光-空間坐標並接著測試其可見性。此測試將像 素的深度值與存儲在深度圖中的相應位置處的深度值進行比較,以確定所述像素是否位 於物體後面。基於所述比較結果,以陰影繪製所述像素或照亮所述像素。為了呈現令眼 睛舒服的光滑陰影,可能需要對每個像素取樣來自陰影圖的四個以上紋素,且這些紋素 通常不是彼此鄰近的。
就HDR渲染技術來說,其是一種用於保留具有顯著對比差異的場景中的細節的技 術。換句話說,如果在場景中存在黑暗和明亮區域兩者,那麼可使用此技術來準確表示 所述區域兩者。類似於上文描述的陰影映射技術,HDR渲染技術也可對每個像素取樣四 個以上紋素。這些紋素通常比2x2區更稀疏地分布,例如圖1B所示的紋素124、 126、128和130。
在前述陰影映射和HDR渲染操作中採用現有技術2x2過濾器核心具有若干缺點。 首先,2x2過濾器核心有可能僅能夠在每個時鐘循環中存取稀疏分布的紋素中的一者。 因而,為了存取所有所需紋素,需要多個時鐘循環。為了說明,假設紋理應用需要存取 紋素124、 126、 128和130,且使用現有技術2x2過濾器核心。因為2x2過濾器核心的 尺寸沒有大到足以同時覆蓋所有四個所需紋素,但可覆蓋所述四個紋素中的一者(例如 紋素124),所以過濾器核心的可用紋理存取帶寬的四分之三沒有被使用。對於需要對每 個像素存取四個以上紋素(例如,16個紋素)的紋理應用來說,2x2過濾器核心的低效 率將甚至更為明顯。第二,現有技術2x2過濾器核心雙線性地權衡所取樣的紋素,這可 能對於某些紋理應用來說不是最佳的,例如涉及上文論述的陰影映射和HDR渲染操作 的紋理應用。
如前文說明,此項技術中因此需要一種紋理過濾技術,其可有效且靈活地取樣指定 紋素並至少解決上文陳述的問題。
發明內容
本發明揭示一種用用戶指定的偏移位置來執行紋理操作的方法和系統。具體地說,
本發明的一個實施例陳述一種方法,其包括以下步驟基於與投影在紋理圖中的像素相
關聯的原始樣本位置和由用戶指定的第一偏移位置來導出第一目的地紋素位置;以及取
出所述第一目的地紋素位置處的紋素屬性以用於紋理操作。
本文所揭示的本發明的至少一個優點是對用戶指定的偏移位置所確定的位置處的 紋理樣本進行操作以便可靈活實施並有效進行紋理操作的能力。
為了能詳細理解本發明的上述特徵,可參看實施例來對上文簡要概述的本發明作出 更明確描述,所述實施例中的一些在附圖中說明。然而,應注意附圖僅說明本發明的典 型實施例且因此不應認為是限制其範圍,因為本發明可承認其它同等有效的實施例。
圖1A是紋理圖,其中現有技術2x2過濾器核心在單個時鐘循環中存取圍繞像素中 心的四個鄰近紋素且接著對所述紋素應用雙線性過濾;
圖1B是紋理圖,其說明紋理操作中所需要的稀疏分布的紋素;
圖2A是經配置以實施本發明的一個或一個以上方面的計算裝置的概念圖2B是根據本發明一個實施例的圖2A所示的GPU 250的一部分的示意圖,所述
GPU 250用可編程偏移位置進行紋理過濾操作;
圖2C是根據本發明一個實施例的紋理圖的一部分,其說明具有可編程偏移位置的 紋理操作;
圖2D是說明根據本發明一個實施例向目的地紋素位置處的一些紋素應用深度圖測 試所得的一組結果的概念圖2E是根據本發明一個實施例說明從單個用戶指定的偏移位置導出紋素位置的概 念圖;以及
圖3是根據本發明一個實施例的用於在紋理單元中用可編程偏移位置執行紋理操作 的方法步驟的流程圖。
具體實施例方式
在本發明中,術語"用戶"始終廣義上指代在計算裝置上執行的軟體程序的用戶或 開發者。另外,術語"用戶指定"和"可編程"可互換使用以限制可由用戶指定或修改 的紋理樣本位置或紋理樣本偏移。紋理樣本通常稱為紋素。同樣,本文所提及的"計算 機可讀媒體"的一些實例包括(但不限於)非易失性媒體(例如,光碟或磁碟)和易失
性媒體(例如,動態存儲器)。
圖2A是經配置以實施本發明的一個或一個以上方面的計算裝置200的概念圖。計 算裝置200包括中央處理單元(CPU) 202、系統接口 204、系統存儲器210、圖形處理 單元(GPU) 250、 GPU本地存儲器260和顯示器270。 CPU 202連接到系統存儲器210 和系統接口 204。 CPU 202執行存儲在系統存儲器210中的編程指令,對存儲在系統存 儲器210中的數據進行操作,且通過系統接口 204與GPU 250通信。在替代實施例中, CPU 202、 GPU 250、系統接口 204或其任何組合可集成為單個處理單元。另外,GPU 250 的功能性可包括在晶片組或其它某種類型的專用處理單元或協處理器中。系統存儲器 210通常包括動態隨機存取存儲器(DRAM),其經配置以直接或替代地經由系統接口 204連接到CPU 202(如圖所示)。GPU 250接收由CPU 202傳輸的指令並處理所述指令, 以便在顯示器270上呈現GPU本地存儲器260中所存儲的圖形數據和圖像。顯示器270
是能夠發射對應於輸入數據信號的視覺圖像的輸出裝置。
系統存儲器210含有應用程式212、高級著色器程序214、應用程式編程接口 (API) 216和GPU驅動器218。應用程式212可調用高級著色器程序214的一個或一個以上實 例。高級著色器程序通常包括經設計以對GPU 250內的一個或一個以上處理引擎進行操 作的高級編程指令的原始碼文本。可通過GPU驅動器218中所包括的編譯器或彙編器
或替代地通過在計算機裝置200或其它計算機裝置上操作的脫機編譯器或彙編器將高級 著色器程序214翻譯成可執行程序對象,例如可執行著色器程序262。
可執行著色器程序262、紋理緩衝器266和幀緩衝器268全部駐留在GPU本地存儲 器260中。可執行著色器程序262在由GPU 250中的像素著色器引擎254執行時向渲染 管線252的不同組件發布指令。紋理緩衝器266通常存儲紋理圖,其中包括陰影圖。幀 緩衝器268包括至少一個二維表面,其用於驅動顯示器270。
渲染管線252包括像素著色器引擎254,其進一步包括紋理單元256。紋理單元256 能夠從紋理緩衝器266用可編程偏移位置檢索所請求的紋素屬性,處理器過濾器權數, 且執行深度比較操作和紋理過濾操作。隨後段落將進一步詳細說明紋理單元256的功能 和操作。
圖2B是根據本發明一個實施例的圖2A所示的GPU 250的一部分的示意圖,所述 GPU 250用可編程偏移位置進行紋理過濾操作。為了說明,假設紋理過濾操作是為圖2C 所示的屏幕像素P產生陰影狀態值S。在一個實施方案中,向紋理單元256發布的著色 器程序指令包括輸出自變量S和多個輸入自變量,例如P、偏移i和紋理[n]。此處,S 表示所計算的陰影結果的佔位符。P表示投影在陰影圖280中的屏幕像素的紋理坐標。 偏移i指代陰影圖280中的可編程(Ui, Vi)對。紋理[n]對應於紋理緩衝器266中所存儲 的特定陰影圖,例如陰影圖280。
使用P、 S、偏移i和紋理[n]作為輸入,紋理單元256通過將偏移,應用於P來導出 目的地紋素位置D,、 D2、 D3和D4。舉例來說,如果P由(u0, vo)表示且偏移i由(u偏 移,v偏移)表示,那麼D1於是為(uo+u偏移,vo+v偏移)或(u,v。。另外,如圖2C所示, 其中原點在P處,每對(Ui, Vi)還與向量Vi相關聯。舉例來說,V!與P處的原點和偏 移!相關聯。此外,在此實施方案中,用戶指定四個不同的(u,v)對,且不需要其彼此
對稱。具體地說,偏移,中的U,長度不需要與偏移2、偏移3和偏移4中的U或V長度中 的任一者相等。類似地,偏移!中的V ,長度也不需要與偏移2、偏移3和偏移4中的V 或U長度中的任一者相等。因此,覆蓋這些目的地紋素位置的過濾器核心的尺寸和形狀 可以是任意的。所屬領域的技術人員應容易明白在不超過本發明範圍的情況下用iV個 偏移對來按比例縮放到W個樣本。
通過目的地紋素位置,紋理單元256向紋理緩衝器266發送讀取請求以取出D!、 D2、 Ds和D4處的恰當紋素屬性,例如深度值。接著,將所述深度值中的每一者與深度 圖測試中的與P相關聯的深度值進行比較。圖2D是說明向紋素D,、 D2、 D3和D4應用 深度圖測試所得的一組結果的概念圖。與P相關聯的深度值是大於還是小於存儲在D,、D2、 D3和D4處的深度值由1或0表示。為了導出最終陰影狀態值S,紋理單元256向 深度圖測試的結果應用過濾器權數。在一個實施例中,紋理單元256通過僅對深度圖測 試的結果求平均值來計算陰影狀態值以模糊混疊效應。此處,因為存在四個樣本,所以 四個過濾器權數中的每一者等於1/4。或者,紋理單元256還可應用基於所取樣紋素與 所投影像素之間的相對距離的過濾器權數,例如在常規的雙線性過濾器中。紋理單元256 將最終陰影狀態值S返回到像素著色器引擎254。
儘管前述實施例描述其中從用戶指定的偏移位置導出每一所取樣紋素的位置的一 個實施方案,但本發明預期用以導出目的地紋素位置的其它可能方式。根據本發明的替 代實施例,圖2E是說明從單個用戶指定的偏移位置導出紋素位置的概念圖。明確地說, 代替如前述實施例接收四個用戶指定的(u,v)對,紋理單元256此處接收單個偏移i, 例如(u,,v,)。接著,在沒有進一步用戶幹涉的情況下,紋理單元256對稱地將所述(Ul, v,)對轉換以產生其它三個偏移。在一個實施方案中,偏移2、偏移3和偏移4分別為(v,, -Ul)、 (-v,,u,)禾B (-Ul,-Vl)。舉例來說,如果(u1>Vl)具有值(3,1),那麼偏移2、偏
移3和偏移4分別具有值(1,-3)、 (-1,3)和(-3,-l)。通過這些偏移"偏移2、偏移3
和偏移4以及所投影屏幕像素P的原始樣本位置,計算目的地紋素位置D,'、 D2'、 D3' 和D4'。值得注意的是,不同於圖2C所示和上文論述的實施方案,此實施方案中所採用 的對稱轉換自動產生彼此鏡射的目的地紋素位置,且覆蓋這些鏡射紋素的過濾器核心的 尺寸和形狀不能是任意的。
根據本發明的又一實施例,紋理單元256向所有偏移應用用戶指定的比例因數a。 假設a為3。回頭參看上文論述的實例,按比例縮放的偏移,、偏移2、偏移3和偏移4 分別變為(9, 3)、 (3,-9)、 (-3,9)和(-9,-3)。使用所述比例因數,可容易修改覆蓋目 的地紋素位置的過濾器核心的尺寸。
根據本發明的另一實施例,代替僅指定單個(u, v)對和依賴於紋理單元256來產 生其它三個偏移,紋理單元256接收兩個用戶指定且非鏡射的(u, v)對,並在沒有進 一步用戶幹擾的情況下產生其它兩個對。舉例來說,回頭參看圖2E,假設紋理單元256 接收(u,,v,)和(-",u》。在此實施方案中,紋理單元256對稱地鏡射所接收的(u, v) 對以分別產生(-Ul,-Vl)、 (Vl,-Ul)。
為了觸發紋理單元256執行前述操作中的任一者, 一種方法是向紋理單元256發布 具有某些輸入自變量的特定著色器程序指令。此類別的著色器程序指令稱為"可編程紋 素位置(PTP)指令"。所述PTP指令的輸入自變量中的一者可以是一個用戶指定的偏 移位置或一陣列用戶指定的偏移位置。或者,所述輸入自變量中的一者觸發紋理單元256
查找由用戶指定並存儲在表中的一個或一個以上偏移位置。根據本發明的一個實施例, PTP指令的一些實例不受限制地包括 攻存,
攻存—
藩—c,2 攻摔—cj^;j4
執行上述PTP指令中的任一者會觸發紋理單元256存取特定偏移位置處與所投影像 素相關聯的許多紋素。後綴"ptp"此處意味著在指令中只為一個像素指定一個可編程偏 移位置。響應於具有"ptp"後綴的此指令,紋理單元256基於單個用戶指定的偏移位置 來產生其它三個偏移位置。後綴"ptp2"意味著在指令中指定兩個可編程偏移位置。響 應於具有"ptp2"後綴的指令,紋理單元256產生鏡射所述兩個用戶指定的偏移位置的 其它兩個偏移位置。最後,後綴"ptp4"用於指示在指令中定義四個可編程偏移位置。 先前段落詳細說明了從用戶指定的偏移位置導出偏移位置的一些實施方案。
圖3是根據本發明一個實施例的用於在紋理單元256中執行PTP指令的方法步驟流 程圖,其涉及可編程偏移位置。更具體地說,結合圖2A所示的像素著色器引擎254和 紋理單元256,在像素著色器引擎254執行可執行著色器程序262時,可向紋理單元256 發布具有至少一個用戶指定的偏移位置的PTP指令。為了說明,假設所發布的PTP指 令具有後綴"ptp4"且含有四個(u,v)對。在步驟302中,紋理單元256接收指令並從 所述指令的後綴中辨認出存在多個(u, v)對。在步驟304中,紋理單元256檢索所述 四對用戶指定的偏移位置,且接著在步驟306中導出目的地紋素位置。另一方面,如果 所發布的PTP指令改為具有後綴"ptp",那麼紋理單元256仍在步驟304中檢索單個用 戶指定的偏移位置,並在步驟306中執行上文詳述的對稱轉換以導出其它三個目的地紋 素位置。
一旦確定了目的地紋素位置,紋理單元256便在步驟308中從PTP指令中所指定的 紋理圖中取出相關紋素屬性,例如深度值。在步驟310中,取決於所發布的PTP指令的 類型和內容,紋理單元256執行所述指令所請求的操作。舉例來說,如果PTP指令是攻 ^^_ip^/p^2/pfp4/,那麼過濾所取出的紋素屬性並對每個像素產生唯一紋素。如果PTP 指令是歡存一c_//7f/7/prP2/pfP4/,那麼對所取出的紋素屬性執行深度比較,並將所述結果 過濾以對每個像素產生唯一紋素。如果PTP指令是加載4—[ptp/ptp2/ptp4],那麼對每個 像素返回所取出的紋素屬性。既不執行深度比較操作,也不執行過濾操作。如果PTP指 令是勿載"J/^7/Wp2/pfp47,那麼對所取出的紋素屬性執行深度比較,且對每個像素返 回所述結果。不執行過濾操作。
在一個實施方案中,此新類別的PTP指令是圖2A所示的API216的一部分,使得 其可由使用API216開發的任何應用程式調用且可不依賴於硬體平臺。而且,這些指令 結合紋理單元256使得開發者能夠有效實施產生具有較大尺寸和動態產生的形狀的過濾 器核心的取樣方法,例如隨機取樣技術。此外,除上文論述的雙線性過濾和等效平均過 濾外,所屬領域的技術人員還應容易明白在例如各向異性過濾和各向同性過濾等其它過 濾方案中使用可編程偏移位置。舉例來說,如果各向異性過濾操作需要查找並過濾16 個樣本,那麼在一個實施方案中,將所述PTP指令中的一者發布四次,使得向所有16 個樣本應用16個偏移位置。
以上描述內容說明了本發明的各種實施例連同可如何實施本發明各方面的實例。不 應將以上實例、實施例、指令語義和圖式認為是僅有實施例,且展現其是為了說明由所 附權利要求書界定的本發明的靈活性和優點。
權利要求
1.一種用於執行紋理操作的方法,其包含基於與投影在紋理圖中的像素相關聯的原始樣本位置和由用戶指定的第一偏移位置來導出第一目的地紋素位置;以及取出所述第一目的地紋素位置處的紋素屬性以用於所述紋理操作。
2. 根據權利要求1所述的方法,其中所述第一 目的地紋素位置處的第一 目的地紋素是 與所述紋理圖中的所述像素相關聯並位於其鄰近處的四個雙線性樣本中的一者。
3. 根據權利要求2所述的方法,其進一步包含從來自所述第一偏移位置的所述四個雙線性樣本中導出第二目的地紋素的第二 偏移位置;基於所述原始取樣位置和所述第二偏移位置導出所述第二目的地紋素的第二目 的地紋素位置;以及取出所述第二目的地紋素位置處的紋素屬性以用於所述紋理操作。
4. 根據權利要求3所述的方法,其中所述第二目的地紋素位置沿著所述紋理圖的至少 一個軸對稱於所述第一 目的地紋素位置。
5. 根據權利要求4所述的方法,其進一步包含將由所述用戶指定的比例因數應用於所 述第一偏移位置和所述第二偏移位置。
6. 根據權利要求3所述的方法,其進一步包含將所述第二偏移位置的沿著沿所述紋理圖的第一軸的坐標值設為等於所述第一 偏移位置的沿著沿所述紋理圖的第二軸的坐標值。
7. 根據權利要求2所述的方法,其進一步包含基於所述原始樣本位置和由用戶指定的第二偏移位置從所述四個雙線性樣本中 導出第二目的地紋素的第二目的地紋素位置;以及取出所述第二目的地紋素位置處的紋素屬性以用於所述紋理操作。
8. 根據權利要求1所述的方法,其中所述紋理操作包括向所述四個雙線性樣本應用過 濾器權數以為所述像素產生唯一值。
9. 根據權利要求8所述的方法,其中所述過濾器權數可具有任意值。
10. 根據權利要求1所述的方法,其中所述紋理操作包括在所述像素與所述取出的紋素 屬性之間執行深度比較。
11. 根據權利要求IO所述的方法,其中所述紋理操作包括對深度比較操作的結果應用 過濾操作。
12. —種經配置以執行紋理操作的計算裝置,所述計算裝置包含處理單元,其具有紋理單元;以及本地存儲器,其耦合到所述處理單元且含有紋理圖,其中所述紋理單元經配置以 基於與投影在紋理圖中的像素相關聯的原始樣本位置和由用戶指定的第一偏移位置來導出第一目的地紋素位置;且取出所述第一目的地紋素位置處的紋素屬性以用於所述紋理操作。
13. 根據權利要求12所述的計算裝置,其中所述第一目的地紋素位置處的第一目的地紋素是與所述紋理圖中的所述像素相關聯並位於其鄰近處的四個雙線性樣本中的 一者。
14. 根據權利要求13所述的計算裝置,其中所述紋理單元進一步經配置以從來自所述第一偏移位置的所述四個雙線性樣本中導出第二目的地紋素的第二偏移位置;基於所述原始取樣位置和所述第二偏移位置導出所述第二目的地紋素的第二目的地紋素位置;且取出所述第二目的地紋素位置處的紋素屬性以用於所述紋理操作。
15. 根據權利要求14所述的計算裝置,其中所述第二目的地紋素位置沿著所述紋理圖 的至少一個軸對稱於所述第一目的地紋素位置。
16. 根據權利要求15所述的計算裝置,其中由所述用戶指定的比例因數被應用於所述 第一偏移位置和所述第二偏移位置。
17. 根據權利要求14所述的計算裝置,其中所述紋理單元進一步經配置以將所述第二 偏移位置的沿著沿所述紋理圖的第一軸的坐標值設為等於所述第一偏移位置的沿 著沿所述紋理圖的第二軸的坐標值。
18. 根據權利要求13所述的計算裝置,其中所述紋理單元進一步經配置以基於所述原始樣本位置和由用戶指定的第二偏移位置從所述四個雙線性樣本中 導出第二目的地紋素的第二目的地紋素位置;且取出所述第二目的地紋素位置處的紋素屬性以用於所述紋理操作。
19. 根據權利要求12所述的計算裝置,其中所述紋理單元進一步經配置以在所述紋理 操作中向所述四個雙線性樣本應用相等過濾器權數以為所述像素產生唯一值。
20. 根據權利要求12所述的計算裝置,其中所述紋理單元進一步經配置以在所述紋理 操作中在所述像素與所述取出的紋素屬性之間執行深度比較。
全文摘要
本發明揭示一種用用戶指定的偏移位置來執行紋理操作的方法和系統。具體地說,本發明的一個實施例陳述一種方法,其包括以下步驟基於與投影在紋理圖中的像素相關聯的原始樣本位置和由用戶指定的第一偏移位置來導出第一目的地紋素位置;以及取出所述第一目的地紋素位置處的紋素屬性以用於所述紋理操作。
文檔編號G06T15/04GK101339647SQ20081011100
公開日2009年1月7日 申請日期2008年5月29日 優先權日2007年5月30日
發明者於裡·Y·烏拉爾斯凱, 亞歷山大·L·明金, 佩米特·R·費爾南多, 克里斯多福·J·米格達爾, 盧普-延·彼得·揚, 威廉·P·小紐霍爾, 安德斯·M·庫格勒, 穆罕默德·傑姆·傑貝諾揚 申請人:輝達公司