TWI443599B - 執行紋理取樣的方法和系統及機器可讀取儲存媒體 - Google Patents
執行紋理取樣的方法和系統及機器可讀取儲存媒體 Download PDFInfo
- Publication number
- TWI443599B TWI443599B TW099114666A TW99114666A TWI443599B TW I443599 B TWI443599 B TW I443599B TW 099114666 A TW099114666 A TW 099114666A TW 99114666 A TW99114666 A TW 99114666A TW I443599 B TWI443599 B TW I443599B
- Authority
- TW
- Taiwan
- Prior art keywords
- shader
- texture
- sampler
- texture sampler
- language
- Prior art date
Links
- 238000005070 sampling Methods 0.000 title claims description 61
- 238000000034 method Methods 0.000 title claims description 33
- 238000009877 rendering Methods 0.000 claims description 23
- 230000000694 effects Effects 0.000 claims description 16
- 239000000872 buffer Substances 0.000 claims description 13
- 238000002360 preparation method Methods 0.000 claims description 8
- 238000004040 coloring Methods 0.000 claims description 2
- 238000001914 filtration Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000004807 localization Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000001125 extrusion Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005498 polishing Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Description
本發明係有關於紋理取樣技術。
大致上,紋理係指包含可被用來遮蔽圖形圖案之重複圖案的影像。紋理資料可使用根據尼奎斯特(Nyquist)準則之紋理取樣技術而被取樣。紋理取樣技術正逐漸地變成更複雜且被廣泛地使用。紋理取樣技術可包含點取樣、雙線性過濾、三線性過濾、各向異性過、反鋸齒、及其他類似的技術。例如紋理取樣正藉由頂點著色器、幾何著色器、及像素著色器而漸增地被使用。
又,此等紋理取樣技術的複雜度及用法正與日俱增,且所伴隨之被使用來執行紋理取樣的硬體複雜性亦大大地增加。存在有可能需要紋理取樣技術之使用的至少幾個應用程式,而紋理取樣技術可能不需要硬體裝置,或可能沒有對硬體裝置直接存取。而且,現有的硬體裝置可能無法完全地支援複雜的紋理取樣操作,或現有的硬體裝置可能無法有效率地執行複雜的紋理取樣操作。
下面的說明敍述使用以著色器語言所實施之紋理取樣器來執行紋理取樣的技術。在下面的說明中,為了要提供本發明之更徹底的瞭解,將提出諸如邏輯實施、資源分配
或共享、或系統組件之重覆實施、類型及相互關係,以及邏輯分割或整合選擇之許許多多特定的細節。然而,將被熟習於本項技藝之人士所理解的是,本發明可無需該等特定的細節即可被實行。換言之,為了避免混淆本發明,控制結構、閘層級電路、及完全軟體指令順序並未被詳細地顯示。有了所包含的說明,一般熟習本項技藝之該等人士將能實施適當的功能性,而不需有過度的實驗。
在說明書中所提及的“一實施例”、“實施例”、“實例實施例”表示所敍述之實施例可包含特定的特性、結構、或特徵,但每個實施例無需一定要包含該特定的特性、結構、或特徵。而且,此等用語無需一定要意指相同的實施例。此外,當特定的特性、結構、或特徵係相關於某實施例而被敍述時,被認為是不管是否已明確地敍述,要影響到相關於其他實施例之該特性、結構、或特徵係在熟習於本項技藝之人士的知識之內。
本發明之實施例可以用硬體、韌體、軟體、或它們的任何組合來加以實施。本發明之實施例亦可被實施為被儲存於機器可讀取媒體上之指令其可被一或更多個處理器所讀取及執行。機器可讀取儲存媒體可包含用來以可被機器(例如,計算裝置)讀取之形式來儲存或傳送資訊的任何機制。
例如,機器可讀取儲存媒體可包含:唯讀記憶體(ROM);隨機存取記憶體(RAM);磁碟儲存媒體;光學儲存媒體;快閃記憶體裝置;電氣、光學形式之信號。此
外,韌體、軟體、常式、和指令可在此被描述為執行某些動作。然而,應理解的是,此種說明僅係用於便利之緣故,且事實上,該等動作係因執行韌體、軟體、常式、和指令之計算裝置、處理器、控制器、及其他裝置所造成的。
在多個著色器與紋理取樣器之間所共享的多對多關係之實施例係描繪於第1圖中。在一實施例中,該關係圖可包含“M”個著色器110-A至110-M,以及可以用各式各樣的取樣器狀態(例如,“p”個取樣器狀態)來支援各式各樣的取樣操作(例如,“N”個取樣操作)之“K”個紋理取樣器120-A至120-K。在一實施例中,紋理取樣器120可以用取樣器狀態來予以組態,且可根據取樣器狀態而接收將要被執行的取樣操作。在一實施例中,著色器110-A可自紋理取樣器120-A至120-K中檢索出紋理取樣。在其他實施例中,著色器110-A可自例如紋理取樣器120-B,120-D,120-G,及120-J檢索出紋理取樣。在一實施例中,著色器110-A至110-M可表示例如頂點、幾何、外殼、定域、像素、或計算著色器。在一實施例中,著色器110-A可包含可被使用於取樣之多個取樣器狀態(SS),且例如,著色器110-A可使用特定的取樣器狀態來執行多個取樣操作。在一實施例中,取樣器狀態可具有個別的邏輯以供該等取樣操作之用。在編譯時,可將該取樣器狀態添加至該等取樣器狀態(SS)而獲得供特定的取樣器狀態及取樣器操作用的最佳碼。在一實施例中,紋理取樣器120-A至120-K可
表示紋理取樣器操作,其可實施支援取樣操作及取樣器狀態之紋理取樣器的子集。
在一實施例中,各個著色器110可檢索由一或更多個紋理取樣器120所產生之紋理取樣。在一實施例中,該等紋理取樣器120-A至120-K可使用諸如組合語言、Cg、GLSL、HLSL之著色器語言及其他著色器語言而被離線地實施。在一實施例中,紋理取樣器120可在該等著色器110的產生期間,或在正交取樣器狀態目標的產生期間,或者在產生階段後之稍後的時間點之需求上被編譯。在一實施例中,在著色器110需要紋理取樣的同時,取樣器之二進制(SS-BIN)可被產生且可被該等著色器110所使用。
在一實施例中,著色器110和紋理取樣器120可被使用於,例如,3D圖形可編程管道中。在一實施例中,該3D圖形可編程管道可包含可自Microsoft® Corporation獲得之DirectX應用程式介面(API)的Direct3D10(D3D10),Direct3D11(D3D11),或其他此種管道級(pipeline stages);或可自Silicon Graphics Inc.獲得之跨平台的OpenGL管道級。然而,該等紋理取樣器120亦可在其他的環境中被任一個著色器所使用。
可使用利用高階著色器語言所實施之紋理取樣器的三維(3D)圖形可編程管道之實施例係描繪於第2圖中。在一實施例中,3D圖形可編程管道200可包含諸如輸入資料處理方塊210之級;諸如頂點著色器220、外殼著色器230、定域著色器250、幾何著色器260、及像素著色器
270之複數個著色器;鑲嵌單元235;光柵化方塊265;摻和器275;紋理取樣器280-A至280-K;以及記憶體290。
在一實施例中,該等可編程管道級可產生例如用於諸如電玩(gaming)之即時應用的圖形。在一實施例中,管道級200可表示可自Microsoft® Corporation獲得之DirectX應用程式介面(API)的D3D11。
在一實施例中,輸入資料處理方塊210可使用分別被儲存於記憶體290之緩衝器290-A及290-B中的索引資料及頂點資料,以產生資料單元。在一實施例中,該頂點資料可表示三角形、點、線的頂點及其他類似的資料。在一實施例中,輸入資料處理方塊210可提供該等資料單元至頂點著色器220。在一實施例中,輸入資料處理方塊210可在提供幾何資料至頂點著色器220及幾何著色器260之前,使用儲存於緩衝器290-A及290-B中的頂點及索引資料,以組成該幾何資料。
在一實施例中,頂點著色器220可使用由紋理取樣器280-A至280-K所產生之紋理取樣,以處理自輸入處理方塊210所接收到的頂點。在一實施例中,頂點著色器220可使用由任一或一些或所有的該等紋理取樣器280-A至280-K所產生之紋理取樣。在一實施例,頂點著色器220可產生單一輸出頂點,其可在接收到單一輸入頂點之後,使用該等紋理取樣而被處理。在一實施例中,頂點著色器220可執行轉換以提供諸如打光(lighting)及去皮(skinning)
之特殊效應至輸入頂點。在一實施例中,頂點著色器220可執行數學運算以改變輸入頂點的顏色、紋理、或位置。在一實施例中,頂點著色器220可使用諸如組合語言、用於圖形之C(Cg)語言,OpenGL著色器語言(GLSL),或高階著色器語言(HLSL)之著色器語言、或任何其他的著色器語言來予以實施。
在一實施例中,外殼著色器230可接收補綴(patch)控制點,且可準備該等補綴控制點以供固定功能鑲嵌單元235之用。在一實施例中,外殼著色器230可自一或更多個紋理取樣器280-A至280-K接收紋理取樣。在一實施例中,外殼著色器230可自紋理取樣器280-A及280-B接收紋理取樣。在一實施例中,外殼著色器230可使用著色器語言來予以實施。在一實施例中,鑲嵌單元235可根據來自外殼著色器230的控制輸入而細分補綴,且可傳遞鑲嵌的結果至定域著色器250。在一實施例中,定域著色器250可使用來自鑲嵌單元之輸入及來自一或更多個紋理取樣器280-A至280-K的紋理取樣,以操縱所產生之頂點而使該等頂點與形狀相符,或執行位移映射(displacement mapping)。在一實施例中,定域著色器250可使用由紋理取樣器280-B所提供的紋理取樣。在一實施例中,定域著色器250可提供結果至幾何著色器260或光柵化方塊265。在一實施例中,定域著色器250可使用高階著色器語言來予以實施。
在一實施例中,幾何著色器260可回應於接收來自頂
點著色器220或定域著色器250之所有的原型(primitives)以及自一或更多個紋理取樣器280-A至280-K所產生之紋理取樣,而產生渲染的原型。在一實施例中,幾何著色器260可接收由紋理取樣器280-A及280-K所產生的紋理取樣。在一實施例中,所有的原型可包含複數個頂點。在一實施例中,幾何著色器260可回應於接收複數個頂點及紋理取樣做為輸入,而產生零個或更多個渲染的原型。
在一實施例中,複數個頂點可包含三角形的三個頂點、或線的二個頂點、或點的單一個頂點連同相鄰的資訊做為輸入,且可產生零個或更多個渲染的頂點做為輸出。在一實施例中,幾何著色器260可執行諸如點條紋產生、幾何鑲嵌、及陰影體擠出之操作,以產生渲染的原型。在一實施例中,幾何著色器260可編譯一或更多個紋理取樣器280,而後呼叫該等紋理取樣器280-A至280-K,以便自儲存於例如緩衝器290-D中之紋理取樣值獲得到紋理取樣。在一實施例中,幾何著色器260可使用組合語言(Assembly)、Cg、HLSL、及GLSL語言來予以編程。
在一實施例中,光柵化方塊265可自頂點著色器220和幾何著色器260接收頂點(向量圖形資訊),且產生包含可顯示於顯示裝置上之像素或點的光柵影像。在一實施例中,光柵化方塊265可執行諸如變換、裁切(clipping)、掃描轉換、剔除、紋理過濾、及其他技術之光柵化技術。在一實施例中,光柵化方塊265可提供像素至像素著色器270,以供處理光域影像之用。
在一實施例中,像素著色器270可對光柵影像執行增強的渲染(shading)技術,以產生每個像素之輸出。在一實施例中,像素著色器270可執行例如每個像素之打光以及諸如凹凸映射(bump mapping)、調色、陰影、反光強調、及半透明之相關效應的技術,以提供清晰且更加逼真的影像。在一實施例中,像素著色器270可使用組合語言(Assembly)、Cg、HLSL、及GLSL語言,或其他類似的語言來予以編程。在一實施例中,像素著色器270可在產生渲染效應(shading effects)之前自光柵化方塊265接收到像素資料,及自一或更多個紋理取樣器280-A至280-K接收到紋理取樣。在一實施例中,像素著色器270可自紋理取樣器280-B及280-K接收到紋理取樣。在一實施例中,像素著色器270亦可自緩衝器290-F直接接收到紋理資料值。在一實施例中,像素著色器270的輸出可被提供至摻和器(blender)275,以供進一步處理之用。
在一實施例中,紋理取樣器280-A至280-K可取樣紋理緩衝器290-C,290-D,及290-F,以及其他緩衝器中所儲存的紋理資料值。在一實施例中,紋理取樣器280-A至280-K可利用實施著色器220,230,250,260,及270所使用的著色器語言來予以實施。此方法可允許複雜的紋理取樣功能能夠被實施為可與取樣器狀態相匹配之一件軟體碼。在一實施例中,紋理取樣器280-A至280-K可使用Cg、HLSL、及GLSL語言來予以實施。在一實施例中,該等紋理取樣器280-A至280-K可在離線階段期間,使用
高階著色器語言來予以實施。在一實施例中,該等紋理取樣器280-A至280-K可在準備階段期間,使用著色器編譯器來予以編譯,以產生使用著色器語言所實施之取樣器的二進制。在一實施例中,在調用著色器220至270的同時,一或更多個紋理取樣器二進制檔案可被著色器220,230,250,260,及270所呼叫。在一實施例中,一或更多個紋理取樣器280-A至280-K可在著色器220,230,250,260,及270的產生期間、在正交取樣器狀態目標的產生期間,或在產生階段後之稍後的時間點之需求上被編譯。
在一實施例中,紋理取樣器280-A至280-K可執行諸如解析多層級精細度(LOD)、決定取樣、解析像素(texel)位址、提取取樣、及合併取樣之操作。在一實施例中,紋理取樣器280-A至280-K之操作可使用著色器語言來予以實施。在一實施例中,解析多層級精細度可決定多重細節層映射表(mipmaps),其可識別自其選擇出取樣的區域。在一實施例中,解析紋理像素位址可決定自其提取出取樣的位址。在一實施例中,紋理取樣器280-A至280-K可支援諸如點取樣、雙線性取樣、三線性取樣、及各向異性過濾之取樣技術。在一實施例中,相較於使用以一般軟體為主之紋理取樣技術所實施的紋理取樣器,為了匹配著色器220至270的取樣器狀態而使用著色器語言所實施之紋理取樣器280-A至280-K可改善紋理取樣的操作速度。
在一實施例中,可使用紋理取樣器280-A至280-K以提供紋理取樣至頂點著色器220、外殼著色器230、定域
著色器250、幾何著色器260、及像素著色器270。在一實施例中,使用著色器語言所實施之紋理取樣器280-A至280-K可在頂點著色器220的產生期間,或在取樣器狀態目標的產生期間被編譯。在一實施例中,在調用頂點著色器220的同時,紋理取樣器280-A,280-B,及280-K可被頂點著色器220所呼叫。在一實施例中,在調用外殼著色器230的同時,紋理取樣器280-A及280-B可被外殼著色器230所呼叫。在一實施例中,在調用定域著色器250的同時,紋理取樣器280-B可被定域著色器250所呼叫。在一實施例中,在調用幾何著色器260的同時,紋理取樣器280-B及280-K可被幾何著色器260所呼叫,且在調用像素著色器270的同時,紋理取樣器280-B及280-K可被像素著色器270所呼叫。
此一方法可允許複雜的紋理取樣功能能夠被實施為一件軟體碼,其可與著色器220,230,250,260,及270的取樣器狀態相匹配,或可匹配正交取樣器狀態。在一實施例中,相較於使用以一般軟體為主之紋理取樣技術所實施的紋理取樣器,為了匹配著色器220,230,250,260,及/或270的取樣器狀態而使用著色器語言所實施之紋理取樣器280可改善紋理取樣的操作速度N倍。在一實施例中,相較於具有以一般軟體為主之紋理取樣的性能為X之以一般軟體為主的紋理取樣技術,使用著色器語言所實施之紋理取樣器280可以改善性能達N=KX,且K為正整數值。
敍述使用高階著色器語言所實現之紋理取樣器280的
流程圖300係描繪於第3圖中。在方塊310中,紋理取樣器280-A至280-K可使用著色器語言來予以產生。在一實施例中,紋理取樣器280-A至280-K可使用諸如組合語言、Cg、HLSL、及GLSL之著色器語言來予以發展出。在一實施例中,例如紋理取樣器280-A至280-K可被離線地產生,且同時發展驅動器模組。
在方塊320中,被使用來產生紋理取樣器280-A至280-K之著色器取樣器可被編譯於取樣器狀態目標產生時間。在其他實施例中,著色器取樣器可視需求而被產生。在一實施例中,例如若繪圖命令需要取樣操作,則可依需求而產生特定的取樣操作。
在方塊330中,紋理取樣器280-A至280-K可使用高階著色器編譯器而被編譯成目標機器碼。在一實施例中,紋理取樣器280-A至280-K可使用目標機器編譯器而被編譯成目標機器碼。在一實施例中,紋理取樣器280-A,280-B,及280-K可使用高階頂點著色器編譯器而被編譯成目標機器碼。類似地,一或更多個紋理取樣器280-A至280-K可使用該等著色器230至270之高階著色器編譯器而被編譯成目標機器碼。
在方塊340中,可調用該等著色器220至270。在一實施例中,可調用諸如頂點著色器220、外殼著色器230、定域著色器250、幾何著色器260、及像素著色器270之著色器。
在方塊360中,一或更多個紋理取樣器280-A至280-
K可被著色器所呼叫。在一實施例中,回應於正由頂點著色器220所呼叫,紋理取樣器280-A,280-B,及280-K可執行取樣操作,且可產生紋理取樣。在一實施例中,外殼著色器230可呼叫紋理取樣器280-A及280-B,定域著色器250可呼叫紋理取樣器280-B,幾何著色器260可呼叫紋理取樣器280-A及280-K,以及像素著色器270可呼叫紋理取樣器280-B及280-K。
在方塊380中,紋理取樣器280-A至280-K可使用儲存於記憶體190內之紋理緩衝器中的紋理資料,以產生紋理取樣。在一實施例中,紋理取樣器280-A可執行取樣操作,而使用儲存於例如一或多個紋理緩衝器290-C至290-F中之紋理資料以產生紋理取樣。在一實施例中,紋理取樣器280-B可執行取樣操作,而使用儲存於紋理緩衝器290-D中之紋理資料以產生紋理取樣,且可提供該等紋理取樣至像素著色器270。
在方塊390中,由紋理取樣器280-A至280-K所產生之紋理取樣可被著色器220至270所使用,而對圖形元件產生渲染效應。在一實施例中,頂點著色器220可接收單一頂點值,並且對該頂點產生渲染效應。在一實施例中,幾何著色器260可接收全部的原型,並且可對全部的原型產生渲染效應。在一實施例中,像素著色器270可對像素或點(或光柵影像)產生渲染效應。
描述產生及使用利用高階著色器語言所實施的紋理取樣器之流程圖400的實施例係描繪於第4圖中。在一實施
例中,流程圖400描述三級,即級401、級411、及級481。在一實施例中,級401可表示離線階段,級411可表示準備階段,以及級481可表示渲染(rendering)階段。
在一實施例中,級401可包含紋理取樣器產生方塊410。在一實施例中,紋理取樣器產生方塊410可表示諸如紋理取樣器280-A至280-K之紋理取樣器的產生,其可離線及使用諸如Cg、HLSL、及來予以產生,如方塊310中所述者。
在一實施例,級411可包含取樣器狀態方塊415、產生取樣器方塊420、著色器編譯器方塊445、編譯取樣器方塊450、及取樣器著色器二進制(SS-BIN)方塊470。在一實施例中,取樣器狀態方塊415可表示輸入資料值。在一實施例中,方塊415的輸入資料值可決定由方塊410之紋理取樣所執行的取樣操作。方塊420描述產生紋理取樣器方塊,其回應於接收來自方塊410的紋理取樣器碼及來自方塊415的輸入資料值,以產生諸如280-A至280-K之紋理取樣器。
方塊445描述著色器編譯器方塊,其可檢索在一抽象層級處之紋理取樣器的著色語言,且可將紋理取樣器碼編譯成另一抽象層級。在一實施例中,著色器編譯器方塊445可自產生紋理取樣器方塊420檢索出紋理取樣器碼,且可致使該紋理取樣器碼的編譯,如同編譯取樣器著色器方塊450所描述者。
在一實施例中,於方塊420中,紋理取樣器碼可使用
高階著色器語言來予以產生,且該編譯取樣器著色器方塊450編譯紋理取樣器碼及產生諸如組合語言碼之中間碼。在一實施例中,編譯取樣器著色器方塊450可進一步包含諸如圖形著色器編譯器或中央處理單元(CPU)著色器編譯器之機器特定著色器編譯器,其可將組合語言中的中間碼編譯成機器特定碼。在一實施例中,圖形處理單元或中央處理單元可支援該機器特定碼的執行。
方塊470描述取樣器著色器二進制(SS-BIN),其可由於由方塊450所執行之編譯的結果而被產生。在一實施例中,取樣器著色器二進制(SS-BIN)可在渲染階段中被著色器所使用。
在一實施例中,級481可表示渲染階段,其中,諸如頂點或所有的原型之圖形元件係在著色器對該等圖形元件提供渲染效應之後,被渲染於顯示裝置上。在一實施例中,級481可包含著色器調用方塊485、執行著色器方塊490、及呼叫SS-BIN方塊495。在一實施例中,著色器調用方塊485可調用諸如頂點著色器220、外殼著色器230、定域著色器250、幾何著色器260、和像素著色器270之著色器,如同方塊340中所描述者。
在一實施例中,執行著色器方塊490可致使著色器220至270之二進制被執行。在一實施例中,圖形處理單元可支援著色器220至270的二進制之執行。在一實施例中,呼叫SS-BIN方塊495可呼叫一或更多個紋理取樣器280-A至280-K的二進制檔案。在一實施例中,若方塊
490可執行頂點著色器220,則方塊495可呼叫紋理取樣器280-A,280-B,及280-K的SS-BIN。在一實施例中,若方塊490可執行外殼著色器230,則方塊495可呼叫紋理取樣器280-A及280-B的SS-BIN。在一實施例中,若方塊490可執行定域著色器250,則方塊495可呼叫紋理取樣器280-B的SS-BIN。在一實施例中,若方塊490可執行幾何著色器260,則方塊495可呼叫紋理取樣器280-A及280-K的SS-BIN。在一實施例中,若方塊490執行像素著色器270,則方塊495可呼叫紋理取樣器280-B及280-K的SS-BIN。
在一實施例中,回應於接收到來自著色器220至270之呼叫,紋理取樣器280-A至280-K可對紋理資料執行紋理取樣操作,且可產生紋理取樣。在一實施例中,該等紋理取樣可被著色器所使用,而對圖形元件產生渲染效應。
參閱第5圖,電腦系統500可包含通用處理器502及圖形處理器單元(GPU)505,而通用處理器502包含單一指令多重資料(SIMD)處理器。在一實施例中,除了執行各種其他的任務之外,處理器502可執行增強操作或儲存一序列之指令,以提供增強操作於機器可讀取儲存媒體525中。然而,亦可將該序列之指令儲存於記憶體520中或儲存於任何其他合適的儲存媒體之中。在一實施例中,圖形應用程式介面GPI 510可被處理器502或GPU 505所支援。
雖然在第5圖中描述分離的圖形處理器單元GPU
505,但在某些實施例中,可使用處理器502來執行增強操作,而做為另一實例。操作電腦系統500之處理器502可為耦接至邏輯530之一或更多個處理器核心。邏輯530可被耦接至可提供介面給電腦系統500之一或更多個I/O裝置。例如,在一實施例中,邏輯530可為晶片組邏輯。邏輯530係耦接至記憶體520,而記憶體520可為任何類型的儲存器,其包含光學、磁性、或半導體儲存器。圖形處理器單元505係透過框緩衝器而被耦接至顯示器540。
在一實施例中,可將圖形應用程式介面(GPI)510設置於處理器502之內。然而,在其他實施例中,可將圖形應用程式介面(GPI)510設置於(由虛線框所顯示)GPU505之內。在一實施例中,GPI 510可支援3D管道,且可使用高階著色器語言而實施紋理取樣器。在一實施例中,GPI 510可離線地且使用高階著色器語言而實施紋理取樣器280-A至280-K,並且如此所實施之紋理取樣器280-A至280-K可根據目標機器而被編譯。在一實施例中,紋理取樣器280-A至280-K可被一或更多個著色器220至270所呼叫,以取得紋理取樣。在一實施例中,著色器220至270可使用由紋理取樣器280-A至280-K所產生之紋理取樣,而對圖形元件產生渲染效應。
在此所敍述之圖形處理技術可被實施於各種的硬體架構中。例如,可將圖形功能性集成於晶片組之內。替換地,亦可使用分離的圖形處理器。做為仍一實施例,圖形功能可藉由包含多重核心處理器之通用處理器來予以實
施,或者可被實施成為一組儲存於機器可讀取媒體中之軟體指令。
110-A~110-M,110‧‧‧著色器
120-A~120-K,120,280-A~280K,280‧‧‧紋理取樣器
200‧‧‧3D圖形可編程管線
210‧‧‧輸入資料處理方塊
220‧‧‧頂點著色器
230‧‧‧外殼著色器
250‧‧‧定域著色器
260‧‧‧幾何著色器
270‧‧‧像素著色器
235‧‧‧鑲嵌單元
265‧‧‧光柵化方塊
275‧‧‧摻和器
290‧‧‧記憶體
290A,290B,290C,290D,290F‧‧‧緩衝器
300,400‧‧‧流程圖
310~390‧‧‧方塊
401,411,481‧‧‧級
410‧‧‧紋理取樣器產生方塊
415‧‧‧取樣器狀態方塊
420‧‧‧產生取樣器方塊
445‧‧‧著色器編譯器方塊
450‧‧‧編譯取樣器方塊
470‧‧‧取樣器著色器二進制(SS-BIN)方塊
485‧‧‧著色器調用方塊
490‧‧‧執行著色器方塊
495‧‧‧呼叫SS-BIN方塊
500‧‧‧電腦系統
502‧‧‧通用型處理器
505‧‧‧圖形處理器單元(GPU)
520‧‧‧記憶體
510‧‧‧圖形應用程式介面GPI
530‧‧‧邏輯
560‧‧‧I/O裝置
540‧‧‧顯示器
在此所敍述之本發明係利用實例而被描繪於附圖中,且非為限制性的。為了描繪的簡明和清晰,在圖式中所描繪的元件不一定按照比例而被繪製。例如,為了於清晰之緣故,若干元件相對於其他元件的尺寸可能被誇大。此外,其中在該等圖式中所重複的參考符號將被視為特定地指示相對應或類似的元件。
第1圖描繪依據一實施例之圖形處理技術,其使用利用著色器語言所實現的紋理取樣器;第2圖描繪依據一實施例之使用利用著色器語言所實現的紋理取樣器之圖形處理技術的三維管道級;第3圖係流程圖,其描繪依據一實施例之使用著色器語言所實現的紋理取樣器;第4圖描繪流程圖,其描述依據一實施例之使用著色器語言的紋理取樣處理;以及第5圖描繪電腦系統500,其中,使用著色器語言之紋理取樣可依據一實施例而被實施。
110-A,110-B,110-M‧‧‧著色器
120-A,120-B,120-K‧‧‧紋理取樣器
Claims (26)
- 一種執行紋理取樣的方法,包含:使用著色器語言以實施紋理取樣器;藉由根據提供至該紋理取樣器的輸入值而編譯該紋理取樣器成目標機器,以產生紋理取樣器二進制碼;自複數個著色器之至少第一著色器呼叫該紋理取樣器二進制碼,且同時調用該第一著色器;以及當該紋理取樣器被該第一著色器所呼叫的同時,使用由該紋理取樣器所產生之第一組取樣而對圖形元件產生渲染效應,其中,該等圖形元件包含線及三角形的頂點。
- 如申請專利範圍第1項的方法,進一步包含:自該複數個著色器之至少第二著色器呼叫該紋理取樣器二進制碼,且同時調用該第二著色器;以及當該紋理取樣器被該第二著色器所呼叫的同時,使用由該紋理取樣器所產生之第二組取樣而對圖形元件產生渲染效應。
- 如申請專利範圍第1項的方法,其中,使用著色器語言來實施該紋理取樣器係在準備階段之前,先被執行於離線階段中。
- 如申請專利範圍第3項的方法,進一步包含根據離線所實施之紋理取樣器碼及在準備階段中之取樣器狀態輸入值以產生該紋理取樣器,其中,該等取樣器狀態輸入值決定由該紋理取樣器所執行的取樣操作。
- 如申請專利範圍第4項的方法,其中,編譯該紋理 取樣器成目標機器包含:使用著色器編譯器以自實施於該著色器語言中之該紋理取樣器產生中間語言碼;以及使用機器特定著色器編譯器以自該中間語言產生機器層級碼。
- 如申請專利範圍第5項的方法,其中,該著色器語言為高階語言,以及該中間語言為組合層級語言。
- 如申請專利範圍第1項的方法,進一步包含當該第一著色器被執行於渲染階段中的同時,從該第一著色器呼叫該紋理取樣器二進制碼。
- 如申請專利範圍第2項的方法,進一步包含當該第二著色器被執行於渲染階段中的同時,自該第二著色器呼叫該紋理取樣器二進制碼。
- 如申請專利範圍第2項的方法,進一步包含使第一紋理取樣器與該第一著色器及該第二著色器相關聯,其中,該第一紋理取樣器係要產生用於該第一著色器及該二著色器之取樣。
- 一種機器可讀取儲存媒體,包括回應於處理器之執行結果的複數個指令,包含:使用著色器語言來實施紋理取樣器;藉由根據取樣器狀態及取樣器操作而編譯該紋理取樣器成目標機器,以產生紋理取樣器二進制碼;當調用第一著色器的同時,自該第一著色器呼叫該紋理取樣器二進制碼;以及 當該紋理取樣器被該第一著色器所呼叫的同時,使用由該紋理取樣器所產生之第一組取樣而對圖形元件產生渲染效應,其中,該等圖形元件包含線及三角形的頂點。
- 如申請專利範圍第10項的機器可讀取儲存媒體,進一步包含:當調用第二著色器的同時,自該第二著色器呼叫該紋理取樣器二進制碼;以及當該紋理取樣器被該第二著色器所呼叫時,使用由該紋理取樣器所產生之第二組取樣而對圖形元件產生渲染效應。
- 如申請專利範圍第10項的機器可讀取儲存媒體,其中,使用著色器語言來實施該紋理取樣器係在準備階段之前,先被執行於離線階段中。
- 如申請專利範圍第12項的機器可讀取儲存媒體,進一步包含根據離線所實施之紋理取樣器碼及在準備階段中之取樣器狀態輸入值以產生該紋理取樣器,其中,該等取樣器狀態輸入值決定由該紋理取樣器所執行的取樣操作。
- 如申請專利範圍第13項的機器可讀取儲存媒體,其中,編譯該紋理取樣器成目標機器包含:使用著色器編譯器以自實施於該著色器語言中之該紋理取樣器產生中間語言碼;以及使用機器特定著色器編譯器以自該中間語言產生機器層級碼。
- 如申請專利範圍第14項的機器可讀取儲存媒體,其中,該著色器語言為高階語言,以及該中間語言為組合層級語言。
- 如申請專利範圍第10項的機器可讀取儲存媒體,進一步包含當該第一著色器被執行於渲染階段中的同時,自該第一著色器呼叫該紋理取樣器二進制碼。
- 如申請專利範圍第11項的機器可讀取儲存媒體,進一步包含當該第二著色器被執行於渲染階段中的同時,自該第二著色器呼叫該紋理取樣器二進制碼。
- 如申請專利範圍第11項的機器可讀取儲存媒體,進一步包含使第一紋理取樣器及第二紋理取樣器與該第一著色器相關聯,以及使該第二紋理取樣器及第三紋理取樣器與該第二著色器相關聯。
- 一種執行紋理取樣的系統,包含:處理器,其中,該處理器係要支援複數個圖形應用程式,及一或更多個圖形應用程式可編程介面;圖形處理單元;以及記憶體,係耦接至該處理器及該圖形處理單元,其中,該圖形應用程式可編程介面係要包含使用著色器語言所實施之一或更多個紋理取樣器,其中,紋理取樣器二進制碼係藉由根據取樣器狀態及取樣器操作而編譯該紋理取樣器成目標機器所產生,其中,當調用第一著色器的同時,該紋理取樣器二進制碼係呼叫自該第一著色器,且 其中,當該紋理取樣器被該第一著色器所呼叫的同時,使用由該紋理取樣器所產生之第一組取樣而對圖形元件產生渲染效應,其中,該等圖形元件包含線及三角形的頂點。
- 如申請專利範圍第19項的系統,其中,該記憶體包含一或更多個緩衝器,以儲存紋理資料,其中,該一或更多個紋理取樣器自該一或更多個緩衝器中檢索出資料值且產生紋理取樣器。
- 如申請專利範圍第19項的系統,其中,使用著色器語言所實施之該紋理取樣器係在準備階段之前,先被執行於離線階段中。
- 如申請專利範圍第21項的系統,其中,該紋理取樣器係根據離線所實施之紋理取樣器碼及在準備階段中之取樣器狀態輸入值而被產生,其中,該等取樣器狀態輸入值決定由該紋理取樣器所執行的取樣操作。
- 如申請專利範圍第22項的系統,其中,編譯該紋理取樣器成目標機器包含:使用著色器編譯器以自實施於該著色器語言中之該紋理取樣器而產生中間語言碼;以及使用機器特定著色器編譯器以自該中間語言而產生機器層級碼,其中,該著色器語言為高階語言,以及該中間語言為組合層級語言。
- 如申請專利範圍第19項的系統,進一步包含: 當該第一著色器被執行於渲染階段中的同時,自該第一著色器呼叫該紋理取樣器二進制碼;以及當第二著色器被執行於渲染階段中的同時,自該第二著色器呼叫該紋理取樣器二進制碼。
- 如申請專利範圍第19項的系統,進一步包含:使第一紋理取樣器及第二紋理取樣器與該第一著色器相關聯;以及使第一紋理取樣器及第三紋理取樣器與第二著色器相關聯,其中,該第一紋理取樣器係要產生用於該第一著色器及該第二著色器的取樣,其中,該第二紋理取樣器係要產生用於該第一著色器的取樣,且其中,該第三紋理取樣器係要產生用於該第二著色器的取樣。
- 如申請專利範圍第19項的系統,其中,該圖形處理單元係要支援該圖形應用程式可編程介面;其中,該圖形應用程式可編程介面係要包含圖形可編程管道,其中,該圖形可編程管道進一步包含複數個著色器及使用著色器語言所實施之一或更多個紋理取樣器;其中,該一或更多個紋理取樣器的紋理取樣器二進制碼係藉由根據提供至該一或更多個紋理取樣器之輸入值,以編譯該一或更多個紋理取樣器成目標機器而被產生;其中,當調用該複數個著色器的至少其中一者的同時,該紋理取樣器二進制碼係自該複數個著色器的該至少其中一者被呼叫出;以及 其中,當該一或更多個紋理取樣器被該複數個著色器的該至少其中一者所呼叫的同時,該一或更多個紋理取樣器係要產生紋理取樣,其中,該複數個著色器的該至少其中一者係要使用該等紋理取樣而對圖形元件產生渲染效應,其中,該等圖形元件包含線及三角形的頂點以及點。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/493,900 US8289341B2 (en) | 2009-06-29 | 2009-06-29 | Texture sampling |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201126450A TW201126450A (en) | 2011-08-01 |
TWI443599B true TWI443599B (zh) | 2014-07-01 |
Family
ID=42334694
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099114666A TWI443599B (zh) | 2009-06-29 | 2010-05-07 | 執行紋理取樣的方法和系統及機器可讀取儲存媒體 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8289341B2 (zh) |
CN (2) | CN103489213B (zh) |
DE (1) | DE102010025310A1 (zh) |
GB (1) | GB2471926B (zh) |
RU (1) | RU2459260C2 (zh) |
TW (1) | TWI443599B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8289341B2 (en) * | 2009-06-29 | 2012-10-16 | Intel Corporation | Texture sampling |
US8633928B2 (en) * | 2009-08-13 | 2014-01-21 | Intel Corporation | Reducing the bandwidth of sampler loads in shaders |
US8917271B2 (en) * | 2009-10-05 | 2014-12-23 | Nvidia Corporation | Redistribution of generated geometric primitives |
US9619918B2 (en) * | 2011-04-28 | 2017-04-11 | Digital Media Professionals Inc. | Heterogenious 3D graphics processor and configuration method thereof |
US10559123B2 (en) * | 2012-04-04 | 2020-02-11 | Qualcomm Incorporated | Patched shading in graphics processing |
US9235926B2 (en) * | 2012-12-24 | 2016-01-12 | Intel Corporation | Techniques for improving MSAA rendering efficiency |
US9569883B2 (en) | 2013-12-12 | 2017-02-14 | Intel Corporation | Decoupled shading pipeline |
US20170178278A1 (en) * | 2014-07-10 | 2017-06-22 | Intel Corporation | Method and apparatus for updating a shader program based on current state |
US10089775B2 (en) * | 2015-06-04 | 2018-10-02 | Samsung Electronics Co., Ltd. | Automated graphics and compute tile interleave |
US10235778B2 (en) | 2016-03-25 | 2019-03-19 | Microsoft Technology Licensing, Llc | GPU-accelerated pencil ink effect rendering |
US10559056B2 (en) * | 2017-06-12 | 2020-02-11 | Arm Limited | Graphics processing |
CN108010095B (zh) * | 2017-11-14 | 2021-06-04 | 创新先进技术有限公司 | 一种纹理合成的方法、装置及设备 |
CN108648252A (zh) * | 2018-05-17 | 2018-10-12 | 成都明镜视觉科技有限公司 | 一种骨骼动画兼容处理方法 |
US11037356B2 (en) | 2018-09-24 | 2021-06-15 | Zignal Labs, Inc. | System and method for executing non-graphical algorithms on a GPU (graphics processing unit) |
CN109785417B (zh) * | 2018-11-29 | 2023-06-09 | 武汉凌久微电子有限公司 | 一种实现OpenGL累积操作的方法及装置 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6130674A (en) * | 1997-03-31 | 2000-10-10 | Cirrus Logic, Inc. | Dynamically selectable texture filter for computer graphics |
US7564460B2 (en) * | 2001-07-16 | 2009-07-21 | Microsoft Corporation | Systems and methods for providing intermediate targets in a graphics system |
US7324116B2 (en) * | 2002-06-20 | 2008-01-29 | Microsoft Corporation | Systems and methods for providing controllable texture sampling |
US7733347B2 (en) * | 2004-11-05 | 2010-06-08 | Microsoft Corporation | Automated construction of shader programs |
US7800620B2 (en) * | 2004-11-05 | 2010-09-21 | Microsoft Corporation | Optimizing automated shader program construction |
US7782334B1 (en) * | 2005-09-13 | 2010-08-24 | Nvidia Corporation | Pixel shader-based data array resizing |
CN1928918B (zh) * | 2005-10-14 | 2012-10-10 | 威盛电子股份有限公司 | 图形处理装置及于图形处理装置中执行着色操作的方法 |
US20070091088A1 (en) * | 2005-10-14 | 2007-04-26 | Via Technologies, Inc. | System and method for managing the computation of graphics shading operations |
US20080024510A1 (en) * | 2006-07-27 | 2008-01-31 | Via Technologies, Inc. | Texture engine, graphics processing unit and video processing method thereof |
US7859548B1 (en) * | 2006-10-19 | 2010-12-28 | Nvidia Corporation | Offloading cube map calculations to a shader |
US20080094408A1 (en) * | 2006-10-24 | 2008-04-24 | Xiaoqin Yin | System and Method for Geometry Graphics Processing |
US7623136B1 (en) | 2006-12-05 | 2009-11-24 | Nvidia Corporation | Method and system for processing texture samples with programmable filter weights |
US8355021B2 (en) | 2007-05-17 | 2013-01-15 | Siemens Aktiengesellschaft | Fused volume rendering |
US8495602B2 (en) * | 2007-09-28 | 2013-07-23 | Qualcomm Incorporated | Shader compile system and method |
US8174534B2 (en) * | 2007-12-06 | 2012-05-08 | Via Technologies, Inc. | Shader processing systems and methods |
US8289341B2 (en) | 2009-06-29 | 2012-10-16 | Intel Corporation | Texture sampling |
-
2009
- 2009-06-29 US US12/493,900 patent/US8289341B2/en active Active
-
2010
- 2010-05-07 TW TW099114666A patent/TWI443599B/zh active
- 2010-05-12 GB GB1007971.3A patent/GB2471926B/en not_active Expired - Fee Related
- 2010-06-28 RU RU2010126453/08A patent/RU2459260C2/ru not_active IP Right Cessation
- 2010-06-28 DE DE102010025310A patent/DE102010025310A1/de not_active Withdrawn
- 2010-06-29 CN CN201310360869.2A patent/CN103489213B/zh not_active Expired - Fee Related
- 2010-06-29 CN CN201010220862.7A patent/CN101937556B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
TW201126450A (en) | 2011-08-01 |
US8289341B2 (en) | 2012-10-16 |
CN101937556A (zh) | 2011-01-05 |
GB201007971D0 (en) | 2010-06-30 |
RU2010126453A (ru) | 2012-01-10 |
GB2471926B (en) | 2011-12-28 |
US20100328309A1 (en) | 2010-12-30 |
CN103489213A (zh) | 2014-01-01 |
CN101937556B (zh) | 2013-09-18 |
CN103489213B (zh) | 2016-08-17 |
GB2471926A (en) | 2011-01-19 |
RU2459260C2 (ru) | 2012-08-20 |
DE102010025310A1 (de) | 2011-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI443599B (zh) | 執行紋理取樣的方法和系統及機器可讀取儲存媒體 | |
US9177351B2 (en) | Multi-primitive graphics rendering pipeline | |
US9747718B2 (en) | System, method, and computer program product for performing object-space shading | |
US9754407B2 (en) | System, method, and computer program product for shading using a dynamic object-space grid | |
JP6013661B1 (ja) | グラフィックス処理におけるターゲット独立ステンシル | |
CN107392988B (zh) | 利用投影几何失真用于以可变采样率渲染的系统、方法和计算机程序产品 | |
EP3121786B1 (en) | Graphics pipeline method and apparatus | |
US9483861B2 (en) | Tile-based rendering | |
US9224227B2 (en) | Tile shader for screen space, a method of rendering and a graphics processing unit employing the tile shader | |
US10733785B2 (en) | Graphics processing | |
CN109564694B (zh) | 用于基于入库的图形处理的顶点着色器 | |
EP3180773A1 (en) | Bandwidth reduction using texture lookup by adaptive shading | |
JP5616333B2 (ja) | ジオメトリシェーダを用いる平面充填エンジンのためのシステム、方法及びコンピュータプログラム | |
US20150179142A1 (en) | System, method, and computer program product for reduced-rate calculation of low-frequency pixel shader intermediate values | |
KR20210095914A (ko) | 가변 레이트 셰이딩과 슈퍼 샘플 셰이딩의 통합 | |
TW201706962A (zh) | 圖形處理 | |
CN107209951A (zh) | 单遍表面溅射 | |
US10192348B2 (en) | Method and apparatus for processing texture | |
US7109999B1 (en) | Method and system for implementing programmable texture lookups from texture coordinate sets | |
US7965289B1 (en) | Apparatus, system, and method for rendering objects with position and orientation computed on a graphics processing unit | |
CN118761898A (zh) | 图形系统和相应地图形处理方法 | |
KR20110015034A (ko) | 분산형 레벨 1 캐시 시스템 및 중앙집중형 레벨 2 캐시를 구비한 복합형 쉐이더 | |
KR20180070314A (ko) | 그래픽스 처리 장치 및 그래픽스 처리 장치에서 그래픽스 파이프라인을 처리하는 방법 |