新四季網

使用點採樣和預計算光傳輸信息進行的渲染的製作方法

2023-06-07 05:13:36 1

使用點採樣和預計算光傳輸信息進行的渲染的製作方法
【專利摘要】渲染系統將點採樣和體積採樣操作進行結合來產生渲染輸出。例如,為了確定3D場景內的曲面位置的顏色信息,在該曲面位置周圍的體積內進行一個或多個點採樣操作,並且在距離該曲面位置更遠處進行體積光傳輸數據的一個或多個採樣操作。可以在點採樣與體積採樣之間提供過渡區,在其中進行點採樣操作和體積採樣操作兩者。可以在確定該曲面位置的顏色信息中混合從點採樣與體積採樣操作獲得的數據。例如,為了對另一曲面與光線之間的有待著色的相交進行標識,通過針對每個點樣本對該光線進行追蹤來獲得多個點樣本,並且從嵌套的3D體積元素柵格獲得多個體積樣本,這些柵格表達了不同粒度等級下的光傳輸數據。
【專利說明】使用點採樣和預計算光傳輸信息進行的渲染

【技術領域】
[0001]以下涉及來自虛擬3D場景的渲染。

【背景技術】
[0002]使用光線追蹤對來自3D場景的圖像進行渲染是基於對渲染方程進行求值,渲染方程包括對不同光行為進行建模的多個嵌套積分,並且難於對其進行分析求解。因此,可以使用對這些方程進行求值的非分析方法。一套逼近渲染方程的成功方法是使用採樣技術。在多個可以隨機地確定的離散值下對積分進行求值以從樣本得出積分的概率性估值。


【發明內容】

[0003]在一個方面中,混合渲染系統使用光線追蹤和體積地散布在3D空間內的光傳輸數據的採樣。例如,一種用於在來自虛擬3D場景的渲染中使用的方法包括在一個方向上從3D場景的一個點直到過渡區的最大距離對光線進行追蹤。如果針對該光線,沒有在比過渡區的最小距離更近的距離處檢測到相交,則該方法使圓錐截面沿著光線的方向前進穿過3D場景中的3D體積元素柵格。每個體積元素與表示傳播通過該體積元素的曲面的光能量的數據相關聯。基於擴展因數和3D場景中的點到當前採樣點的距離確定前進的圓錐截面的面積。在前進過程中從與圓錐截面相交的體積元素收集光能量數據,並且針對3D場景中的該點自從體積元素收集的光能量中產生光照信息。在一些方面中,多種方法可以讓用於每條發射光線的圓錐體(其對圓錐截面進行定義)前進。每個圓錐體可以沿著對應光線的方向軸向地定中心。圓錐體可以在距離光線原點最小距離處開始前進,並且可以根據光線的特徵確定該最小距離。
[0004]在圓錐體前進過程中訪問對光能量傳播進行描述的數據。這種數據可以表達與從對應體積元素傳播的光能量相關聯的方向和強度數據。這種光能量可以包括源自體積元素的光和傳播通過該體積元素的光(並且可以根據這種體積元素內包含的對象的特徵對光進行修改)。例如,每個3D柵格元素可以是一個立方體,並且該立方體的每個面可以具有光方向以及與光方向相關聯的強度數據。給定柵格的每個立方體包含一個體積,該體積包含在一個或多個更大的柵格元素(最大元素除外)內。更細粒度的元素展示3D場景中的更小的體積並且更精確地展示光方向和顏色強度數據,因為較粗粒度的元素包括多個更細粒度元素的方向和顏色強度數據的混合。可以通過對來自每個光源的一條或多條光線進行正向追蹤並根據正向追蹤的結果將離散的光能量記錄存放在3D場景中來產生光傳輸數據。例如,正向追蹤可以對3D場景中的幾何體之間與正向追蹤光線之間的相交進行檢測,並且其可以引起存放具有根據該曲面的特徵確定的特徵的光能量記錄。在將這些光能量記錄存放在該場景內之後,可以根據將表達該數據所用的一種或多種特定格式來處理這些記錄。這些光能量記錄還可以用於多種目的,包括提供光子地圖供光子查詢中使用。
[0005]另一方面涉及一種用於為3D渲染提供全局光照數據。該系統包括光能量記錄的集合,其中每條記錄在3D場景中具有一個位置並且包括與3D場景的一部分中的光能量傳輸相關的數據。該系統包括一個可操作用於接收對3D場景的子部分進行定義的查詢的查詢解析器,光能量傳輸數據將返往該子部分。該查詢解析器可操作用於搜索光能量記錄集合以對該3D場景的子部分內的記錄進行標識和將抽象過程應用於所標識的記錄上以便為查詢產生抽象結果,並返回該抽象結果。例如,可以將該抽象結果返回至在處理器上執行的著色程序模塊。該著色程序模塊可能已經發出該查詢。可以通過固定或有限功能電路實現該查詢解析器,該電路被耦合耦合成用於在著色過程執行的過程中從執行機器代碼的處理器接收對解決方案的查詢,該機器代碼使用來自這些查詢的結果。
[0006]該抽象過程會涉及到將多個抽象函數應用到所標識的記錄上,其中,該多個抽象函數中的每個抽象函數將不同的相對權重集合應用到所標識的記錄上。可以針對對應的預先確定數量的記錄對該多個抽象函數中的每個抽象函數進行調諧。該抽象過程會涉及到對所標識的多個記錄進行計數,並當所計數的標識記錄數量在那兩個抽象過程的記錄的對應的預先確定數量之間時在兩個抽象過程的結果之間進行內插。
[0007]可以用能夠配置有從多個預定義程序之間選定的程序的程序執行單元來實施查詢解析器,以實施抽象過程。查詢解析器可以可操作用於使用定義的步長來執行光線的前進。查詢解析器中的執行單元可以可配置用於沿著該前進在每個點處對函數進行求值。可以通過對有待前進的光線進行定義的光線數據結構來對該函數進行標識。可以通過有待使光線前進所在的包圍體內的幾何體對該函數進行標識。查詢可以包括方向指示,並且查詢解析器可以使用該方向指示來對光能量記錄中的光能量傳輸的方向進行比較,並排除不符合該查詢中的方向指示的記錄。
[0008]查詢解析器可以基於到查詢所定義的軌跡(locus)的相對距離來產生所標識的記錄的排序。查詢解析器可以將加權函數應用到每條記錄上,該加權函數使用該記錄在排序中的位置來確定有待應用到該記錄中的光能量傳輸數據上的權重。
[0009]查詢可以包括一個參數,並且查詢解析器可以可操作用於根據該查詢內的參數來對抽象過程進行配置。查詢可以包括一個對該查詢的查詢解析器有待應用的(從多個預定義抽象過程中選出的)抽象過程進行的指示。查詢可以具有用於有待在為所標識的每條記錄生成相對加權重中使用的函數的信息,以便產生抽象結果。例如,該查詢可以選擇一個多項式和用於該多項式的係數,其中,當以來自該查詢中指定的軌跡的遞增距離順序對記錄進行標識時,則遞增地對該多項式進行求值。本披露的各方面涉及通過這種查詢解析器實施的方法和通過結合了這種查詢解析器的系統實施的方法。

【專利附圖】

【附圖說明】
[0010]圖1描繪了使用光線追蹤和體積渲染輸入的混合渲染系統的各組件;
[0011]圖2和圖3描繪了使用體積元素的柵格來定位3D空間中的光能量表徵信息的各方面;
[0012]圖4描繪了可以用於在3D場景中對光線進行追蹤的幾何體加速結構;
[0013]圖5至圖7描繪了體積元素柵格內的混合光線追蹤和圓錐體前進的示例的2D視圖;
[0014]圖8描繪了一種產生包含光能量表徵信息的體積兀素柵格的不例方法;
[0015]圖9和圖10描繪了混合光線追蹤和體積光能量估算的示例方法,例如用於確定用於3D場景中的多個點的著色信息或正在產生的渲染的像素;
[0016]圖11描繪了圖9和圖10的更多特定示例的進一步概括;
[0017]圖12描繪了一個處理系統的示例,在其中可以實現所披露的各方面;
[0018]圖13描繪了一種示例查詢解析器系統;
[0019]圖14描繪了位於體積元素內的光能量記錄;
[0020]圖15描繪了一種響應於最近的鄰近查詢而確定記錄集合的方法的各方面;
[0021]圖16描繪了可以應用於有待響應於給定查詢而確定的記錄的數據的多條加權曲線.-^4 ,
[0022]圖17描繪了光記錄的遞增距離排序,涉及響應於查詢而從記錄中抽象數據;
[0023]圖18描繪了混合函數,並且查詢針對記錄集合內的多種不同的記錄特徵可以具有不同的相對加權或優先性;
[0024]圖19描繪了一種用於查詢解決的示例系統,該系統具有多個查詢解析器,每個查詢解析器可以具有用於執行指定功能的有限可編程性電路;
[0025]圖20描繪了一種被視為響應於查詢而從記錄中抽象數據的示例過程;
[0026]圖21描繪了抽象過程的一個示例;以及
[0027]圖22描繪了根據本披露執行查詢解決和數據抽象的系統內的示例數據流。

【具體實施方式】
[0028]光線追蹤可以從3D場景清晰度上產生生動且詳細的圖像,並且可以用來對複雜的光行為和效應進行建模。光線追蹤此處用作一種用於為3D場景的各部分對光傳輸數據進行採樣或開發的採樣技術,這些部分距離為其獲得著色信息的點相對近。在此,當樣本來自距離光線原點相對近的點時,將不像從距離光線原點較遠的點獲得的樣本那麼嘈雜,因為從其中獲得樣本的空間的體積隨著距離原點的距離的增大而增大。如果樣本具有3D場景的距離光線的原點相對遠的多個部分,可以在相對低的採樣密度(如將產生噪聲圖像的採樣密度)下進行光線採樣。保持相對低的採樣密度允許較低的光線追蹤計算成本。
[0029]結合本光線追蹤方法,進行與3D場景的距離光線原點較遠(例如,在光線被追蹤所到的最大距離以外)的多個子部分相關聯的離散光傳輸記錄的採樣(以下進行了解釋)。由於一處或多處光線相交和來自光線傳輸記錄的數據兩者引起的著色中的一個或多個的結果都可以用來得到最後的著色結果。
[0030]更詳細地,光線追蹤涉及對在3D場景中行進的光線與曲面之間的相交進行標識。然後,可以對該曲面進行著色以產生將用來確定從中發射光線的曲面的特徵的點樣本。對光線的相交進行標識會是一項計算上昂貴的操作。為了在計算上更加高效地進行相交測試,可以提供在3D場景中具有多個包圍著曲面(其可以由圖元形成)的各個部分的元素的幾何體加速結構。例如,幾何體加速結構可以包括一個軸對準包圍盒的分層樹,這些包圍盒以葉節點結束,這些包圍盒共同包圍著形成3D場景中的曲面的所有圖元。該幾何體加速結構用來對可以與光線相交的更小曲面集合進行標識;因此,首先貫穿該加速結構對光線進行遍歷,並且然後對光線進行與仍然是與該光線相交的候選者的任何曲面的相交測試。
[0031]一種提供用於對3D場景中的預先確定的空間體積內的光傳輸信息進行預計算的方法可以用來在這種3D場景的不同部分中對光傳輸信息進行表徵。在渲染過程中,可能期望確定到達3D場景中的給定點處的光能量的特徵,並且可以使用預計算的光傳輸信息。如以下解釋的,體積元素柵格可以提供一種使具體光信息與3D場景的具體部分相關聯的方式。
[0032]體積元素柵格的示例是對3D場景進行填充的「封裝」體積集合,所述「封裝」體積典型地具有均勻的形狀。例如,可以封裝給定維數的立方體的集合來填充3D場景。在一些情況下,可以限定多個體積元素柵格多次對3D場景進行填充。例如,可以使用多個體積元素柵格來填充該場景,每個柵格分別具有給定維度的立方體的集合。在功能上,這意味著一個柵格中的較大立方體將具有其中包含的較小尺寸的不同柵格的多個立方體(例如,如果沿著每一維將一個元素分開,則將產生8個組成元素)。然而,並非沿著從較大至較小體積元素的鏈路或路徑對這些體積元素柵格進行遍歷。而是在從一個點(例如,光線的原點)的前進過程中在穿過3D場景的方向上訪問這些體積元素,並且對來自前進過程中相交的體積元素的數據進行訪問。當多個不同大小的柵格填充3D場景時,可以在3D場景中有待進行採樣所在的每個位置處向樣本選擇體積元素的具體大小。可以通過對預定義形狀(例如,圓錐體)進行與體積元素序列的重疊測試來進行前進。體積元素可以重疊,如當所測試的體積元素的大小變化時。
[0033]舉例來講,可以產生一個體積元素集合,範圍從小元素到包括較小元素的較大元素。每個體積元素可以是規則的6邊形(例如,立方體)。該形狀的每個面可以使行進穿過該面的光參數化。包括其他體積元素的體積元素將會與表示每個所包括的體積元素的光傳輸信息的混合的數據相關聯。因此,每個體積元素可以使用相同的數據量來表示光傳輸信息,從而為在不同程度特異性下可用的給定空間體積產生光傳輸信息。換言之,可以產生多種大小的嵌套體積元素集合,如位於3D場景空間內的緊密封裝的立方體元素(與被定位成和大小確定成用於包圍場景幾何體的體積元素的稀疏樹形成對照),其中,每個體積元素包括從該體積元素的每個面發出的光線的表徵。較大的體積元素表示來自位於其內的多個較小體積元素中的每個元素的光發射,但沒那麼精確。
[0034]在創建體積元素之後,體積元素可以用於通過使來自攝像機的圓錐截面或3D場景內的曲面相交以及對來自在該圓錐截面的路徑上遇到的所有體積元素麵的光發射進行收集從而進行渲染。離該圓錐體(在每個採樣位置處截取其圓錐截面)的原點越近,則訪問越小的體積元素並且使用光發射信息,而距離該原點越遠,則訪問越大的體積元素。對這種一個或多個體積元素進行採樣的一個特徵在於,體積元素結構內的每個較遠的層次會需要八倍更大的內存(其中,在對於不同維度而言是同質的柵格內對每一維進行等分)。因此,不僅需要絕對的內存大小來存儲增加的體積元素集合,而且渲染過程中所需的內存帶寬也將增加,因為對更多的小體積元素進行採樣比對更少的大體積元素進行採樣需要更大的內存帶寬(保持用於表示相關光照信息的數據量恆定)。因此,在層級中具有更多的層將產生更精確的結果,但引起高內存成本。此處的圓錐體是指一種圍住體積的形狀,並且其在垂直於該形狀的縱軸的方向上具有遞增的橫截面面積,因為該形狀在該軸上變得越來越細長。在一些情況下,該圓錐截面可以是繞著這種軸是對稱的。在此,圓錐截面(體積的橫截面)並不暗示這種橫截面具有任何特定的形狀。例如,該圓錐截面可以是圓形、橢圓形、矩形等。
[0035]在以下披露中,披露了使用點採樣和體積採樣技術兩者(例如,光線追蹤和體積元素採樣)以便確定3D場景中的一個位置處的光照信息的示例。作為以下內容的總結,針對被限制到點的閾值距離內的一個或多個樣品進行點採樣。例如,可以對光線進行追蹤以在點的閾值距離內確定相交(如果有的話)。在該閾值距離以外,可以執行體積採樣。在一個示例中,通過使圓錐截面前進穿過體積元素的柵格來進行體積採樣。可以根據到所述點的距離來確定所採樣的體積元素的大小。還可以根據與圓錐體相關聯的擴展因數選擇這種大小,其中,該擴展因數作為距離的函數對圓錐體擴展速度進行指示。
[0036]圖1描繪了混合光線追蹤系統10的功能元件。系統10包括一個光線定義數據源12,該數據源向光線相交測試模塊14提供輸入。光線相交測試模塊14還具有作為輸入端的加速結構15和3D場景數據的一個或多個來源19。光線相交測試模塊14將相交測試結果傳至光線相交著色模塊29。光線相交著色模塊29將著色結果輸出至樣本緩衝區17。
[0037]體積渲染過程27通過體積數據訪問模塊25接收從體積元素獲得的光傳輸信息。如以下更加詳細描述的,體積數據訪問模塊25可以從光子結構21和從體積柵格存儲器23中的一個或多個接收輸入,該光子結構或該體積柵格存儲器包含光傳輸數據。柵格生成器22可操作用於產生可以存儲在柵格23或從其中提供的體積元素柵格。圖1還描繪了可以提供光子查詢過程28用於對存儲為光子地圖20的光子地圖進行查詢。可以結合體積元素柵格23的產生來產生光子地圖20,作為用光能量記錄21執行的處理的進一步的產物。體積渲染過程27可以用作一個用於體積採樣任務的控制器,並控制有待對哪些體積元素進行採樣,以及還對從這種採樣中接收的結果進行處理。
[0038]圖2描繪了體積元素柵格40,其中特別地對這些體積元素之一 41進行了標識。圖3描繪了體積元素柵格43,這些體積元素具有比柵格40更小且密度更大的體積元素。由於柵格43包含比柵格40更小的元素,所以柵格43中的多個元素可以存在於柵格40的一個元素內。圖2和圖3並不暗示柵格41和43的體積元素是分層的,或者體積元素41與佔用體積元素41的多個部分的體積元素之間存在關係,(例如,並不暗示從較大的元素到較小的元素對這些柵格進行遍歷,在被較大元素包含的體積內,而分層加速結構可能是這種情況)。
[0039]在圖3中,特別地對體積元素50-52進行標識。體積元素與光傳輸表徵數據相關聯。用於給定體積兀素的光傳輸表徵數據對來自該兀素的光能量的傳輸進行表徵,可以在該體積元素內生成這種光能量,或者光能量可以源自該元素以外。在一個實現方式中,每個體積元素可以與來自該體積元素內的曲面的能量輻射的一條或多條記錄相關聯。可以基於從發射源開始的正向追蹤來對這種輻射能量進行表徵。
[0040]舉例來講,這種數據可以表示穿過體積元素的特定面的光傳輸。為了描述的清晰性,圖3不出了兀素50具有面90,該面與光傳輸表徵82相關聯。光傳輸表徵82可以包括關於從元素50內部發射到元素50的外部的光的信息。光傳輸表徵82還可以包括關於行進到元素50、穿過面90兩者的信息,並且反之亦然。針對元素51的面91對類似的光傳輸表徵83進行了標識。針對元素51的其他面示出了光傳輸表徵84和85。在一個示例中,光傳輸表徵81是一種較粗粒度的光傳輸表徵。這種光傳輸表徵81-85可以包括關於光方向性、光的顏色和強度的信息。該數據可以包括一條或多條方向和在那些方向的每個方向上行進的光能量的量化。光傳輸表徵可以對在僅一個方向上(例如,在體積外)、在方向的一定範圍上行進的、以及雙向的光傳輸進行表徵。在其他實現方式中,可以提供對光能量在每個面的曲面上的圖案或分布進行定義的統計分布或曲線。
[0041]在一個示例中,可以使用同一分布函數提供光能量的分布,其中可以為每個表徵完成各參數。可以根據發射的實際光能量來擬合該圖案或分布。在一些示例中,一種單類型圖案具有一個或多個可以針對每個面而被調諧的參數,並且然後選擇那些參數用來與實際分布儘量匹配。如所解釋的,光能量傳播通過體積元素的多個面的關聯性是一個示例,因為對這種體積元素內的光傳輸進行表達可能有多種方式。通常,將以一種允許對沿著圓錐體前進的光傳輸進行求值的方式來表達這種光傳輸。
[0042]體積元素41進而包括體積元素43,圖3中描繪了其中(8個中的)4個。圖3還描繪了該幾何體,如圖元45-46和形狀47位於如體積元素43佔用的同一體積內,即使可能沒有對哪個這種幾何體位於給定體積元素內進行指示的邏輯連結或連接。
[0043]在一個示例中,每個體積元素集合具有在3D場景中的均勻分布,因為該集合的體積元素被安排在一個規則的、非稀疏的結構內。光線追蹤中使用的許多種類的數據結構是規則的,並且其被設計用來減少表示數據結構所需的存儲空間。在一個方面中,每個集合內的體積元素在預先確定的對應位置中,並且每個體積元素與表示該體積的邊界內的光能量的數據相關聯(「包含」)。相比之下,用於在3D場景中抽象出(abstract)用於對光線進行相交測試中使用的幾何體的加速結構具有根據該場景內的該幾何體而定位和確定大小的體積元素。
[0044]對從燈到3D場景內的光能量進行正向追蹤可以用於確定將在每個體積元素內展示的光能量。正向追蹤可能涉及對來自每個光源的光線進行追蹤,並且針對光線相交的每個地方,將存放表示光能量的數據。這種存放是附加的,因為隨著存放更多的光能量,3D場景將變得更亮。這種正向追蹤與光子貼圖具有一些相似性,因為光子貼圖也涉及到從燈進行正向追蹤。然而,光子貼圖提供一種當存放光子時保持場景內的光能量的總量恆定的規範化操作。該規範化操作產生具有多個光子的曲面,這些光子與光如何與該曲面相交的相對複雜程度相關。例如,無光塗牆可能僅存放了一些光子,而玻璃面的小平面可能具有許多光子。在一些方法中,最精細的體積元素柵格(例如,帶有最小元素的柵格)可以具有大約個2~24量級的元素,其可以被表達為根下方的8個層次。如果在沒有使用光線追蹤的情況下使用體積元素柵格,則最細小的柵格可能需要大約2~40量級的元素,或在柵格結構的最細粒度等級下具有大約32000倍更多的量級下的柵格元素。這些示例是非限制性的,但是定性的。
[0045]圖4描繪了一個示例幾何體加速結構101,可以用存儲在加速結構存儲器15內的數據表示。幾何體加速結構101包括一個與子元素104-106相關聯的根元素102。每個子元素104-107進而可以與子元素107-109相關。此關係鏈可以繼續,直到到達葉節點110-112的集合。在一些實現方式中,每個元素包圍著3D空間的一部分,其中存在一個或多個幾何體元素。在一些實現方式中,幾何體加速結構101是稀疏的,從而使得3D場景中的不包含幾何體的區域沒有幾何體加速結構元素。此外,每個加速結構元素(除了根)與一個或多個父元素、以及一個或多個子元素相關。多個子元素可以與同一個父元素相關,並且多個父元素也可以與一個單個子元素相關。舉例來講,父節點包圍著空間的一給定子部分,該子部分內存在幾何體的某些部分,並且子節點包圍著該父節點中的幾何體的選集。幾何體加速結構可以具有在根與每個葉之間帶有不同數量節點的分支,可以不具有顯式定義的根,可以具有被僅包圍圖元或包圍其他節點的節點所包圍的所有圖元。如此,圖4就幾何體加速結構的實現方式而言是示例性的並且是非限制性的。
[0046]例如,用於包圍場景幾何體的加速結構可以包括一個軸對準包圍盒樹(樹在這裡是指從該樹中的起點到另一點進行遍歷所可以沿著的元素之間存在一定關係)。例如,軸對準包圍盒樹可以是分層的,並且使該層級的葉節點包圍所有幾何體。加速結構的其他示例包括K-D樹和球體層級。在功能上,可以通過以下步驟對分層加速結構進行遍歷:在可以包圍所有場景幾何體的根節點處開始(作為整個3D場景的範圍,該根節點可以是隱式的),並且然後找出該根節點的所有子節點,對它們進行相交測試,並且然後按照相同模式繼續對所有與光線相交的子節點的分支進行遍歷。因此,在對幾何體的加速結構進行遍歷中,可以在3D場景的多個不同部分中並行地對光線進行相交測試。光線相交測試模塊14也對來自3D場景數據源19 (圖1)的3D場景數據進行訪問。這種3D場景數據可以包括組成3D場景中的對象的多個圖元,並且在一個示例中,當與葉節點相交時對該數據進行訪問,從而對該葉節點內的幾何體進行相交測試。
[0047]光線相交測試模塊14使用幾何體加速結構101將不必進行隱式相交測試的場景幾何體子集清除。對於被發現與給定光線相交的葉節點,對那些葉節點內存在的幾何體進行與該光線的相交測試,並且可以將最近相交的信息發送至光線相交著色模塊29。一旦發現了相交曲面,則可以運行著色程序來確定該曲面將對產生的渲染具有什麼影響。著色程序例如可以發射反射光線,並且還可以發射引向光源的光線,以便確定什麼光碰撞該相交曲面。
[0048]圖9描繪了根據本披露針對3D場景中的一個點產生光照信息的示例過程。圖5至圖7用於對圖9的過程的各方面進行解釋(出於簡潔性,圖5至圖7描繪了 2D展示,而不是3D模型)。在圖9中,在265,將一個點(圖5中的123)標識為針對有待獲得光照信息的位置。例如,該位置可以是場景中的對象的曲面上的一個點,或者渲染中的像素的樣本。在267,將一條光線(圖5的光線124)定義成在一個方向上從該點附近發射出來並且其與擴展因數相關聯。在圖5中,將擴展因數的表達描繪(在2D下)成由對光線124進行劃界的邊界125和126限定的圓錐體。在269,對過渡區進行定義並且其包括最大和最小光線追蹤距離(圖5中的最小距離131和最大距離132)。在一個示例中,基於擴展因數來定義該過渡區。在一個示例中,寬擴展因數產生更靠近原點123的過渡區。
[0049]在271,使用幾何體加速結構在3D場景中對光線進行追蹤以對該過渡區的最大距離132內的交點進行標識(如果有的話)。在圖5中,如以上解釋的,從原點123到最大距離131對光線124進行追蹤(圖9中的271),從而試圖對光線與曲面幾何體的最近交點進行標識。在273,如果該過渡區前面存在相交(比圖5中的最小距離131更近),則在275,對該交點進行著色的結果用來確定光照信息。
[0050]在277,從最小距離131開始,圓錐體開始前進。光線追蹤繼續通過該過渡區,並且在279,如果在該過渡區內沒有光線相交,則在281,該圓錐體前進的結果將用於為該點產生光照信息。在279,如果該過渡區中存在光線相交,則在283,該圓錐體前進的結果與從該光線相交引起或由其引起的著色的結果(例如,著色輸出)混合。
[0051]現在,圖5用於解釋圖9中介紹的圓錐體前進的進一步的方面。該圓錐體前進包括邊界125和126限定的圓錐截面從點123投射到空間內(在2D下,該圓錐截面變成一條在2D平面內移動的線)。圖5描繪了與其他柵格的體積元素相比每個具有相對小的體積的體積元素柵格被選擇用於比較靠近點123的採樣。累積每個與該圓錐截面相交的體積元素的光表徵信息(此處,該示例假設光表徵信息與體積元素的面相關聯,這是一種示例實現方式)。這種累積可以包括對累積在各頻率光譜內的光能量的量進行追蹤並且還累積與每個相交曲面相關聯的不透明度值。可以從位於該體積元素內部的事物的特徵推導出該不透明度值。不透明度值可以用來決定何時終止圓錐體前進。例如,黑色的牆將吸收光能量並且是不透明的,所以可以基於對指明這些特性的體積元素的光表徵數據進行採樣來停止圓錐體前進。
[0052]圖5還描繪了當被採樣的體積元素柵格尺寸增加時,可以提供過渡區在那裡對兩種尺寸的體積元素都被採樣。以具體示例來講,當在具有根據體積元素128的大小的體積元素的柵格到具有體積元素129例示的大小的體積元素的柵格之間切換時,在134和135之間對過渡區進行劃界。以虛線形式勾劃出的體積元素(例如140)描繪了發現累積的不透明度值使得不需要進一步的圓錐體前進。關於何時停止前進的決策準則可以根據應用而不同。
[0053]圖6描繪了關於圖5討論的圓錐投影的橫截面142。在圖6中,這些體積元素的大小與體積元素127的大小相似。因此,圖6描繪了一些體積元素全部在橫截面142的區域內。一些體積元素僅部分地在橫截面142內(例如,區域144)。對於那些體積元素,光表徵信息的加權組合可以與其他光表徵信息的加權組合相組合。圖7類似地描繪了體積元素的大小增加(例如,現在這些體積元素的大小與體積元素128的大小相似),但圓錐截面的橫截面143也已經增大。圖7還描繪了,實際上,一些體積元素將在其他元素之前從圓錐體前進中退出;並且具體地,元素146沒有參與圓錐體前進,但包圍元素參與了。圖6和圖7還用來展示將在圓錐體前進過程中對多個體積元素進行採樣,並且可以混合光表徵信息以得出可以在著色點123中使用的結果、或視情況用於其他處理的結果。
[0054]圖10描繪了對圖9的過程的一部分的替代方案。不是執行穿過一個或多個預定義的體積元素柵格的圓錐體前進(圖9中的277),而是可以組合(assemble)由離散的光能量記錄組成的查詢集合。可以針對沿著圓錐投影路徑圍住空間體積的不同空間區域生成這些查詢,該圓錐投影沿著光線路徑穿過場景。特別是,圖10在314描繪了可以確定查詢集合。在一個示例中,查詢可以具有一個球形範圍,在該範圍中,可以基於光線的擴展因數和到點123 (圖5)的距離來確定這些查詢的半徑。所查詢的體積的大小將隨著查詢到點123的距離的增加而增大。
[0055]在一種方法中,可以提供包含離散光記錄的不同地圖或數據結構供這種查詢中使用。每張地圖或每個數據結構可以具有不同抽象層次的光能量數據。例如,粗糙的地圖可以包含離散光能量記錄,每條記錄表示多個這種離散光能量記錄的混合。可以選擇合適粒度的地圖或數據結構來滿足每個查詢。因此,帶有大體積的查詢不一定返回更多記錄,而是可以用來對具有光能量記錄(每條記錄表示更細粒度記錄的混合)的數據結構進行查詢(進而可以使用不同的數據結構對這些更細粒度記錄進行查詢)。在這種方法中,可能合適的是提供可以用於每個查詢的單個數據結構,但選擇合適粒度等級下的記錄來滿足給定的查詢。可以基於多種因素來確定所述合適的等級,包括查詢的體積或大小,其可以與到一點(為該點聚集光能量信息)的距離相關。
[0056]因此,離散光能量記錄可以開始作為空間中一個點處的光能量的描述,但當與其他記錄混合時,或抽象到體積元素時,可以針對所確定的體積生成結果光能量記錄。可以提前完成或根據需要完成這種生成。在一種方法中,當根據需要完成這種生成時,可以緩存這種生成的結果。在一個示例中,可以對用於多個前進過程(如不同的圓錐體前進)的常見體積進行標識,並且然後可以生成合適粒度等級(見圖4和圖5,作為示例)下的光能量表徵數據。在一個示例中,圓錐體可以從不同的原點開始前進,但這些全都需要來自3D場景的同一部分的相同粒度等級(可以根據到對應原點的距離和例如對應擴展因數來確定該粒度等級)下的光能量表徵數據。
[0057]在另一種方法中,可以從多個重疊體積形成查詢,並且可以應用布爾邏輯來確定最後查詢結果。例如,可以進行球形查詢以在一定程度上重疊,並且僅可以返回該重疊部分內存在的光子。這些技術可以用來逼近查詢與體積元素柵格的曲面(見圖3)相關聯的光能量數據。如在圖9中,當在過渡區中沒有檢測到光線相交時,則在318,光子查詢結果可以用來針對該點產生著色輸出。如果該過渡區內存在相交(不是在過渡區前面,見圖9),則在320,可以使光子查詢結果與來自對該交點進行著色的結果混合。
[0058]接著以上披露的更加特定的示例,圖11描繪了可以在本披露的實現方式中實踐的更一般的過程。圖11描繪了,在345,對獲得光照信息所針對的位置進行標識。例如,這個位置可以是3D場景中的一個點(例如,對象的曲面上的點)或針對渲染的2D圖像所取的樣本。光照信息用於本披露中以包括任何種類的渲染信息,並且將預期這種光照信息根據所產生的渲染的類型而不同。為了產生這種光照信息,在347,取到達該位置的照明的一個或多個點樣本。在349,針對可能對獲得照明信息所針對的位置產生影響的光照條件來確定一個或多個體積樣本。在351,建立對這種體積採樣的距離限制(到該位置的定義半徑以外的距離),同時相反地,可以將點樣本限制在該半徑以內。在353,執行這些點和體積樣本。在355,對來自相對近的點樣本的結果的加權比獲得的其他樣本更高。在357,可以組合點和體積採樣的結果以產生針對該位置的光照信息。因此,關於可以如何取點樣本和體積樣本,圖11中描述的過程是通用的。可以將點樣本限制到距離該位置相對近的距離,或者根據到該位置的距離按其他方式加權,同時從該位置在橫掃3D場景的體積上累積體積樣本。3D場景的衰減或範圍例如可以支配進行體積採樣所在的最大距離。
[0059]以上披露主要涉及從指定的數據源產生渲染輸出(例如,相交結果的著色和從一個或多個體積元素柵格中的元素聚集數據)。圖8提供了用於產生在產生渲染輸出中使用的數據源的示例過程的概述。
[0060]圖8描繪了一個示例過程205,通過該過程可以產生光傳輸數據以供3D場景的渲染過程中使用。圖8描繪了該過程205在206提供了可以從燈到3D場景內對光線進行正向追蹤。例如,當可以根據光線的強度或重要性確定每個集合內的多條光線時,可以針對每條光線確定對應的光線集合。在一種方法中,可以使用蒙特卡羅或準蒙特卡羅原理來指定這些光線。還可以基於對象在3D場景內的對象的已知位置來指定光線。美術師還可以直接指定有待正向追蹤的光線或光線束。此正向追蹤建立該場景中的對象對每條光的可見性。此外,一旦確定了每條光的可見性,則可以根據與這些對象中的每個對象相交的對應曲面的特徵對光線的進一步生成進行正向追蹤。在208,可以根據該曲面的特徵將離散光能量記錄存放在每個相交曲面處。例如,漫反射面可以具有散布在該曲面上的光能量記錄的集合,而發光面可以具有更密集包裝的光能量記錄表示的鏡面反射。並且,還將根據該曲面的性質確定從給定曲面追蹤的光線。例如,可以根據斯涅爾定律從鏡面開始對光線進行追蹤。在一個示例中,漫反射面對光的散射程度更大,並且因此結果是射出更多的在不同方向上行進的但在較短距離上可以被追蹤的光線。
[0061]在210,可以基於所存放的光能量記錄的位置和合適的規範過程來產生用於在光線地圖查詢中使用的加速結構。該加速結構可以與用於在該場景中對光線進行追蹤的加速結構分離開,並且還可以與體積元素的柵格不同。可以共享這些結構的多個部分或全部。
[0062]在214,可以通過將這些記錄描述的光能量數據聚集到3D場景的位於這些體積元素的不同體積元素內的對應體積內來產生體積元素柵格。在一種方法中,可以從所聚集的數據產生光能量傳播的面特定(face-specific)表示。在216,可以產生用於光線追蹤的加速結構;可以根據常規方法繼續進行所描繪的過程205的這個部分。然而,在一些示例中,被處理用於產生3D體積元素柵格(在214)的體積柵格元素可以被用作用於產生加速結構的元素的輸入。例如,可以針對光能量記錄和幾何體兩者對所處理的最小體積元素進行處理,儘管體積元素柵格的最終組成元素和加速結構的最終組成元素不同。在一些實現方式中,這些(用於光子查詢、用於抽象場景幾何體,和這些3D柵格)加速結構中的一個或多個加速結構可以是共享或部分共享的結構。例如,軸對準包圍盒集合可以抽象場景幾何體,並且離根節點更近,還用作柵格元素,而葉節點可以是稀疏的。
[0063]可以連續地描繪上述過程205的每個部分。然而,這些過程部分可以並行進行。例如,如果在3D場景的給定體積部分內工作,則可以執行多個過程部分(例如,210、212、214和216)中的一部分,並且然後可以接下來處理該3D場景的不同體積部分。此外,可以分配多個獨立的線程(或處理單元)用於對該過程的不同部分進行處理,從而使得它們可以並行地進行。
[0064]圖12描繪了一個示例系統401,該系統包括一個或多個可編程元件和固定功能元件中,其中可以實現以上所披露的各方面。系統401包括主機接口 403,該主機接口可以向主要致力於針對所選定的處理功能性(如圖形處理)執行可以使用系統401的應用程式的處理器提供接口。這種處理器可以整合在片上系統內。總線404在下述各組件之間提供通信。在一些方法中,應用程式處理器還可以連接到總線404上,並且因此,主機接口 403不是一個必需的組件。多種數據管理器402可以用來設置有待在系統401上執行的計算。這種數據管理器402包括頂點數據管理器405、像素數據管理器406、計算數據管理器407和光線數據管理器408。頂點數據管理器405可以用來對有待在計算集群陣列410上執行的幾何體處理進行設置。像素數據管理器406可以用來對有待在陣列410上執行的像素著色操作進行設置。計算數據管理器407可以用來對陣列410上的通用並行計算進行設置。光線數據管理器408可以用來對陣列410上的光線追蹤操作進行設置,如光線相交測試和光線著色操作。
[0065]陣列410包括一組被標識為核心421-424的計算元件。每個核心421-424包括一個對應的本地內存435-438。在一個示例中,陣列410還可以包括共享紋理管線430和431。調度程序440可以在有待針對每個數據管理器405-408執行的工作之間進行仲裁。任務分配器441可以與調度程序440進行通信以便對有待在陣列410上執行的計算任務進行分配。可以提供光線協處理器445來幫助光線追蹤計算。在一個示例中,光線協處理器445包括根據一個或多個分組準則將有待處理的光線收集到多個組內的收集器功能。系統401還可以包括多種其他可以是用於不同活動(如音頻處理或其他數位訊號處理)的特殊用途硬體的協處理器451-453。紋理載入器454可以用來將紋理信息作為卸載內容加載到紋理管線430-431。陣列410可以與高速緩存層次461通信,該高速緩存層次還可以與系統內存接口 462耦合。可以通過對陣列410進行編程、通過使用光線協處理器445、使用一個或多個協處理器或其組合,在系統401中實現圖1中所描繪的各元件。取決於實現方式,可以在根據圖12的系統內提供不同的、更少的、或附加組件。例如,不是所有的系統可以在相同的物理計算資源上按照像素著色或光線處理來實施幾何體處理。
[0066]可以對陣列410進行編程以執行圖1中所示的過程或以其他方式實現所示的功能。還可以提供固定功能電路來執行這種功能或其中的多個部分。系統401的各部分可以執行在此所述的過程和操作的不同部分。例如,頂點數據管理器405可以操作用於獲得創建抽象場景幾何體的加速結構中所用的頂點數據,並且還在正向追蹤過程中創建離散光數據記錄。可以用響應於光線相交而激活的著色程序來對陣列410進行編程。還可以對陣列410進行編程以執行計算(所述計算用於使圓錐截面行進穿過所披露的體積元素柵格)和其他任務,例如,如光線相交測試。可以提供光線協處理器445用於執行針對光線操作的一些特定任務。例如,光線協處理器445可以操作用於對被提交到陣列410用於並行執行的光線進行收集,並且操作用於將開始不能充分使用陣列410的計算帶寬或其可獨立調度部分的光線處理任務換出。可以執行陣列410的各部分來並行地執行不同的任務。例如,陣列410的一部分可以產生用於前進的柵格的一部分,而另一部分使圓錐截面前進穿過該柵格的之前產生的部分。
[0067]圖13描繪了一個示例系統的各方面,該系統可以接收並響應發現光線能量記錄所涉及到的查詢。在提供更加詳細的解釋之前,介紹了所描繪的系統的元件。通用處理集群475可以執行著色程序代碼477-479。例如,可以實例化(instantiate)這些著色程序代碼部分中的每個部分或者其響應於光線與曲面之間的標識相交而開始執行。通用處理集群475在執行過程中可以使用主內存471存儲數據並且可以包括可以用於下述目的緩衝空間473。舉例來講,著色程序代碼477發出與光能量記錄的發現相關的查詢480,查詢解析器485將服務於該查詢。可以通過提供一個或多個調用的API484來接收本查詢,該一個或多個調用可以指定有待在每個這種調用中制定的準則。API484向查詢提供統一的格式並且可以提供用於在不同實現方式中可以具有不同能力的底層硬體的抽象。在一些實現方式中,API484可以支持基線類型的一個或多個查詢,並且在其他實現方式中,可以支持擴展的查詢類型或格式。
[0068]查詢解析器485可以從可以被實現為互連元件集合的圖表的加速結構487中讀取,這些互連元件抽象出位於3D場景中的光能量記錄子集。可以將光能量記錄489中的光能量記錄子集標識為有待讀取。工作內存491可以存儲光子查詢的中間結果。可以存儲抽象建模過程493的描述並且查詢解析器485可以使用這些描述來針對其接收的每個查詢(如查詢480)產生一個或多個結果。
[0069]當執行對光記錄信息的著色代碼請求(例如,發出一個查詢以發現指定點的定義半徑內的光子)時,該著色代碼可以已經編碼有與響應於給定查詢可以返回多少光子相關的某種初步猜測或啟發。然而,在僅返回所有滿足給定規範的記錄的查詢中,對發現和返回的記錄的數量沒有先驗限制。因此,著色程序代碼可以預訂一個緩衝空間(例如,緩衝區473)來接收從查詢返回的記錄。然而,將需要根據「最壞情況」情形確定這種緩衝空間預訂的大小,其中,所述最壞情況下返回大量記錄。此外,在內存受到限制的情況下,或者在希望減少數據流量(例如,針對功耗)的情況下,本方法可能不是令人希望的。以下披露提供了多種示例方法,其能夠使著色程序代碼能夠具有更多的對這種查詢的可預測響應,能夠實現更多種查詢的服務和對這種查詢的有用響應的計算進行加速。這些查詢還可以用於產生預計算光傳輸數據以供以上披露的技術和系統中使用。根據本披露的查詢還可以用於查詢和返回這種預計算光傳輸數據。
[0070]圖14描繪了位於3D空間的定義體積元素內的光能量記錄的示例。查詢解析器485可以發現並處理這些光能量記錄。圖14描繪了光能量記錄可以包含多種不同的信息。光能量記錄中的信息可以結合不同種類的查詢定義或其他處理方法一起使用以對給定的查詢產生最終結果。光能量記錄的示例包括光能量記錄496和501。光能量記錄496包括對具有光能量的方向特定分布的發射497進行定義的數據。發射497可以表示為參數化的分布,如為可選擇的方向特定加權函數提供係數。光能量記錄501的發射498示出了方向和強度向量的更簡單的示例。
[0071]圖15A描繪了一種示例情況,其中針對光能量記錄的查詢在查詢軌跡502的半徑504內。在圖15A中,記錄505-507位於半徑504內。查詢解析器485可以在包圍著由查詢圍住的空間體積的一個或多個元素的加速結構內進行搜索。可以存在共同包圍該體積的多個這種元素。查詢解析器485可以搜索該加速結構的這些元素並以任何順序對合適的記錄進行標識(即,不保證查詢解析器485以已知的順序對記錄進行標識,如按照到原點502距離遞增進行的排序)。並且,位於該查詢體積內的多條記錄最初將是未知的。
[0072]然而,某些種類的查詢可以受益於或需要多條記錄之間的選定的相對排序或分類。例如,查詢可以向一條軌跡請求指定的或最大數量的最近記錄(「k最近鄰居」(knn)查詢),並且該軌跡還可以被限制到最大的搜索半徑。在這種情況下,將需要對查詢解析器485發現的結果進行比較或分類以便正確地對響應記錄進行標識。查詢解析器485可能不具有足夠的工作內存來存儲這些結果。因此,一種實現knn查詢的方法是發出一系列最近鄰居查詢,但每個查詢按照最小距離對之前標識的記錄的距離進行追蹤。此最小距離還可以包含關於之前標識的記錄的標識信息。此信息允許對不位於相同距離處的兩條記錄進行區分(在測試的精度內)。
[0073]圖15B描繪了可以如何實現knn (其中k=3)查詢的更加具體的示例。最初,進行一個向軌跡502請求單個最近記錄的查詢。本查詢返回記錄504。進行後續查詢,該查詢包括關於到返回的之前最近記錄的距離的信息(表示為半徑510)。查詢解析器485可以因此排除對到軌跡502比此距離更近的空間的任何部分進行搜索。查詢解析器485可以發現記錄507和記錄506兩者具有離軌跡502相同的距離。查詢解析器485將操作用於根據每條記錄的標識符信息從記錄506和507選擇一條記錄來返回。例如,查詢解析器485可以用順序上更早的ID選擇一條記錄。例如,該第二查詢可以返回記錄506,該記錄與半徑512相關聯。發出一個第三查詢,並且其與半徑512相關聯並且對從記錄506推導出來的信息(例如,來自ID的選定數量的低階位)進行標識。如果查詢解析器首先找到記錄506,則其可以基於標識符位來排斥此記錄,並且然後最終將找到記錄507,並返回該記錄。
[0074]當查詢解析器485可能是一個當對每個查詢進行求解時僅具有少量可用存儲量(例如,可能具有僅用於對單個記錄的信息進行標識的空間)的固定功能或有限可編程電路的情況下,這種方法是合適的。在這種情況下,查詢解析器每次對可以響應於查詢的記錄進行標識時,其可能需要返回該記錄或者替換現有的存儲標識符。這種查詢解析器可以確定性地響應於最近鄰居查詢,並且通過根據上述技術延伸至knn查詢,k>l。
[0075]圖16用於對抽象針對查詢標識的記錄並呈現組合結果的技術的各方面進行描述。這些技術可以用於增加對查詢將生成的數據流量的確定性,減少查詢緩衝要求,並提供用於處理查詢結果的硬體加速,並且允許美術師控制查詢結果的硬體加速過濾或抽象的各方面。更具體地說,圖16描繪了具有作為自變量的多條光記錄和作為應變量的貢獻率的曲線530-534集合。在一些實現方式中,這些曲線用於通過增加到具體軌跡的距離而組織的光記錄的集合。因此,在一些方法中,這些曲線中的每條曲線用於描述被組織成距離遞增順序的光記錄集合的不同的總加權。例如,曲線532描述了所發現的每條增量光記錄的貢獻率的線性下降,而曲線534和533描述了貢獻率的更快速的下降。
[0076]這些技術的暗示在於可以根據不同的策略和基於其他光記錄的相對位置或密度對到軌跡不同距離處的光記錄進行混合。例如,在線性曲線532中,可以對每條增量記錄加權一個線性遞減權重。在一些方法中,總加權可以是一個恆定值,例如,從而使得該混合不放大這些記錄表示的總能量,而是混合以產生能量恆定的結果。可以結構化這些曲線,從而使得它們具有用於每條增量記錄的預定義加權,假設預先確定一定數量的記錄;還可以對它們進行參數化,從而使得基於發現的記錄的總數量而確定每條記錄的加權。可以通過在對每條記錄進行加權和將該輸出累積成總和之前首先確定記錄的總數量,來實現基於發現的記錄的總數量而確定每條記錄的最終權重。
[0077]此外,可以將這些曲線中的兩條或更多條曲線混合在一起以便得出一條內插曲線。例如,如果針對15條記錄對曲線532進行加權,同時針對8條記錄對曲線534進行加權,則如果針對給定的查詢標識10條記錄,則可以通過對這些曲線中的每條曲線描述的加權進行混合來確定用於那些記錄的加權。
[0078]在一些實現方式中,可以在查詢解析器485可訪問的電路內對一組曲線進行預定義和存儲或編碼,並且其可以是抽象建模過程493的一部分。在一些實現方式中,可以由不同的多項式指定曲線的順序和形狀。可以用查詢傳遞一個或多個多項式的選集與用於那些多項式的參數。查詢可以用多種方式中的任一種方式指定有待針對記錄搜索的體積,如一個或多個點的軌跡和距離那些點、突出物、盒、球體等的距離。一些查詢可以不明示最大體積,但卻可以指定最大記錄數量。一些查詢可以指定一個方向性來排除某些記錄。例如,查詢可以要求記錄的方向與該查詢指定的方向得到正的點積。圖18提供了關於查詢定義選項的示例的更多細節。
[0079]圖17描繪了一個示例,其中不同的查詢536、538和539具有距離原點540不同的最大半徑,並且因此包括不同的記錄集合。可以根據從圖16選擇的曲線來混合關於每個查詢發現的記錄。例如,如果根據曲線533混合針對查詢538標識的記錄,並且在2條和4條記錄之間從高到低轉變曲線533,則第5記錄將對加權總和具有相對小的貢獻,而第一記錄將具有高得多的貢獻。如果曲線534在大約6條記錄處完成轉變,並且曲線532在12完成轉變,則曲線534和曲線532之間的混合可以用來混合查詢539標識的10條記錄的集合。
[0080]圖18描繪了可以基於多種特徵來對混合進行控制,這些特徵可以包括該查詢指定的那些特徵,並其還包括記錄本身的那些特徵。圖18示出了查詢可以針對光能量記錄的多個不同特徵中的每個特徵指定一條混合曲線。例如,方向的相似性可以是最終加權確定中的一個因素,光能量記錄的顏色(或更普遍的,光譜含量)可以是另一個因素,並且離指定軌跡的距離是又另一個示例特徵。這些曲線可以共同地指定一個最終加權函數。在一些示例中,可以對一條記錄的不同通道進行不同的加權。可以通過查詢來指定這些選項。這種查詢可以參考預先安排的查詢簡檔的慣例、搜索準則的組合的其他選擇。可以提供查詢解析器電路來對這種搜索進行加速。
[0081]圖19描繪了示例系統401的修改版,其中提供了光線和光子協處理器550並且其包括解析器單元551-553的集合。每個解析器單元551-553包含相交測試單元、求值單元556和本地內存557。相交測試單兀555可以為一種形狀返回一個最近相交結果。該形狀可以是組成場景幾何體的圖元、加速結構的元素、位移或隱式幾何體、或可以被定義和進行與光線的相交測試的另一個曲面。求值單元556可以實現上述查詢相關披露的各方面。求值單元556可以包括例如僅可以執行非分支指令流的電路。求值單元556可以包括可以針對係數集合和自變量值對指定多項式(如線性和二次多項式)集合進行求值的電路。求值單元556還可以包括一個乘法器單元(如整數)、固定點、單或雙精度浮點單元。該乘法器可以使用一個或多個被乘數的塊浮點展示。求值單元556還可以實現一個可以將這些計算的結果累積到緩衝區內的累加器。
[0082]求值單元556還可以用於對主要在相交測試單元555、陣列410中的核心或其組合上執行的算法的多個部分進行加速。例如,求值單元556可以返回函數求值流,其中根據步長增加該一個或多個自變量,如相交測試單元555設置的步長。此求值流可以用於執行體積渲染技術、光線前進、圓錐體前進等。在一個示例中,求值單元556可以被編程用於繼續對表達式進行求值,直到該表達式的輸出改變符號,並且然後報告一個或多個自變量的當前值。單元556可以在該符號變化的指定範圍內輸出多個值,如之前值和當前值,對該表達式的零交叉點進行劃界。
[0083]圖20描繪了可以總結在此披露的各方面的示例過程。在561,可以接收一個查詢用於處理。在563,對該查詢定義的體積內的記錄進行標識。根據應用到記錄上的抽象模型對這些記錄進行抽象以產生查詢結果。這種查詢結果可以具有與將已經針對單條光能量記錄返回的查詢結果相同或相似的格式,或可以表達所標識的記錄的分布的某個方面。在567,返回該查詢結果。
[0084]圖21描繪了查詢抽象的示例過程。在569,可以基於拒絕準則(例如,方向性比較)拒絕體積內的一條或多條記錄。當測試儀可以首先對指定體積內的記錄進行標識但不對其他查詢參數進行測試而是對這種記錄進行標識以供進一步分析時,這是一種合適的方法。在571,可以對剩餘的記錄進行計數,並且在573,可以定義或選擇相對加權或混合準則。在575,對這些記錄進行加權,並且在577,對這些加權值進行求和以產生查詢結果。在578,可以對這些加權或混合準則的不同準則的結果進行內插。在一個示例中,可以針對預先確定的記錄數量來對每個加權函數進行調諧,並且在對確定響應於該查詢的記錄總數量進行確定之後,可以從這些加權或混合過程中的任一過程選擇一個結果,如根據離實際記錄數量最近的預先確定的數量。在一個實現方式中,可以內插來自不同加權或混合過程的結果其中的兩個結果,如果它們的預先確定的數量對確定為響應的實際記錄數量進行劃界。
[0085]圖22進一步描繪了這些披露的一種實現方式的各個方面。通用可編程單元591執行著色程序代碼589。著色程序代碼589發出查詢480,該查詢可以包括以下各項中的一項或多項:查詢包圍信息604、材料特性605、程序引用607和參數609。材料特性605的示例包括一個雙向反射分布函數(BRDF)。在這種情況下,可以通過查詢提供用於材料的BRDF,並且該BRDF可以用於響應於查詢480而對返回的結果進行計算。以具體示例來講,可以進行計算來確定在該BRDF定義的邊界內有多少光能量記錄定義的分布能量被發出。
[0086]著色程序代碼589可以用應用程式接口(API )484支持的格式對查詢進行表達。可以通過計算機可執行模塊實現API484,這些模塊提供一個接受用於查詢593的參數集合和其他信息的接口,用查詢說明符模塊595表示。查詢說明符模塊595可以產生適合於查詢解析器597的能力的一個或多個組成查詢說明,該查詢解析器將提供查詢593的結果。例如,API484可以支持knn查詢調用,其將這種查詢轉換成查詢說明集合,底層硬體為每條查詢說明進行服務,並且這些單獨的查詢說明的結果共同地對knn搜索的結果進行定義。圖22還描繪了可以提供的從查詢解析器485到查詢說明符595的反饋迴路。查詢解析器485可以向簡單的程序執行單元611提供當它們可用時的結果(例如,結果601-603)。當查詢解析器485通過對所有響應查詢進行標識來完成查詢時,查詢解析器485可以提供一個完成指示604。還可以與針對查詢返回的最後結果一起提供這種指示。
[0087]簡單的執行單元611可以配置有來自程序商店613的程序。這種程序可以具有適合於簡單程序執行單元611的特徵的特定限制。例如,舉例來講,一些執行單元可能不支持分支指令,可能僅執行按次序的指令執行,可能不支持條件句,或可能不支持循環。可以進行這些限制以便減少實現該執行單元所需的矽量,和/或避免或減少分支代碼。在一個示例中,可以將程序實現為用於算法的一個增量或步驟的指令集。這種程序可以報告一個或多個增量的中間結果、或僅報告最後結果。然後,查詢解析器485可以為後續步驟或增量提供信息。例如,簡單程序執行單元611可以實施以下內容中的一個步驟:光線前進或圓錐體前進、體積渲染操作、紋理坐標內插、體積內插、增量自變量的函數求值等。可以通過與查詢480 —起提供的一個或多個程序引用607對簡單程序執行單元611執行的一個或多個程序進行標識。簡單程序執行單元611的另一種方法是提供可以選擇性地被選擇由執行單元611實施的數學函數模塊615集合。舉例來講,這些模塊可以包括多個多項式函數。可以用查詢480提供參數和該一個或多個自變量的一個或多個當前值。還可以由查詢說明符595提供或從初始值更新這些參數和當前值。例如,當執行單元611可以對函數進行求值,並將該求值結果返回到查詢解析器485時,該查詢解析器可以決定對變量進行增量或改變參數,並請求對該函數進行重新求值。
[0088]執行單元611還可以與從執行單元611接受多個值並將這些值累計到緩衝區位置內的本地累積函數617協作。在一個示例中,該累積可以包括一個簡單的求和,如當執行單元611執行一個對已經累積在該緩衝區內的值進行解釋的加權時。在其他情況下,本地累積可以對關於被累積的值的更多統計進行追蹤。可以將本地累積617實現為到本地內存的特定部分的寫指令;在一些實現方式中,不保護本內存受到不正確的程序執行,從而使得執行單元611可以在不需要訪問仲裁的情況下對此值進行更新。在最後累積之後,可以將該本地累積值返回至全局結果緩衝區618。可以由查詢480指定全局緩衝區位置。執行單元611還可以用於使其他渲染任務自動化或加速。舉例來講,微分可以與光線相關聯。可以通過對通常在與原始光線相同的方向上行進的但不恰好共平行的兩條或更多條附加光線進行追蹤來對光線的微分進行建模。為了利用光線微分,可以製作這些附加光線相對於原始光線在哪兒相交的模型。執行單元611可以基於附加光線的方向和與原始光線相交的曲面的模型對逼近每條附加光線將會碰撞的地方的函數進行求值。在一個示例中,可以對交點處的切平面進行定義,並且基於每條微分光線和原始光線之間形成的角,執行單元611可以對函數進行求值以對這個切平面上的相交位置進行標識。因此,對於光線與曲面之間的給定交點,執行單元可以對這些微分光線的交點進行標識。可以在曲面(例如,切面)上參數地表達這些點。
[0089]術語「光能量表徵」在此用於包括能量或其他材料的任何種類的導向流,如為了對能量傳播的強度和/或方向性進行建模或量化。「光能量記錄」是指與η維空間(例如,η=3)內的點相關聯的數據,其對能量的傳播進行表徵。例如,該記錄可以包括對輻亮度(如光的輻亮度)或電磁波能量的傳播進行表徵的數據。這種記錄可以包括對輸入(inbound)到曲面上的點或從其中輸出(outbound)的能量或對定義軌跡或定義體積的區域內存在的能量進行表徵的數據。不同的記錄可以涵蓋不同的空間體積並且可以具有重疊體積。不同的記錄可以表示不同抽象層次下的同一或部分重疊體積。以一般示例來講,如紅外輻射能做的一樣,可以使用這種能量表徵數據對傳播電磁波(如X光)、微波或無線電波進行建模。因此,使用術語「光」暗示關於能夠被本披露的實現方式建模的能量的種類或其傳輸上沒有限制。在本披露中,可以產生並可以訪問光照和著色信息。一些光照和著色信息用作到最終產生最後渲染輸出的其他過程的輸入。因此,光照和著色信息可能不是最後的產物,而是其中間產物。這種中間數據可以採取多種形式並且不需要直接表達顏色、亮度、色度等等。在3D渲染的背景下,光能量記錄的示例是如3D渲染應用背景下使用的「光子」,但光能量記錄不需要符合「光子」的隱含或明確限制。
[0090]除了硬體實施例(例如,在中央處理單元(「CPU」)內或耦合到其上的微處理器、微控制器、數位訊號處理器、處理器核心、片上系統(「S0C」),或任何其他可編程或電子器件),實現方式還可以體現在例如被配置用於存儲軟體的計算機可用(例如,可讀)介質內所存放的軟體(例如,計算機可讀代碼、程序代碼、以任何形式存放的指令和/或數據,如源、對象或機器語言)內。這種軟體可以例如能夠實現在此描述的裝置和方法的功能、製造、建模、仿真、描述和/或測試。例如,可以通過使用通用程式語言(例如,C語言、C++語言)、GDSII資料庫、包括Verilog HDL、VHDL、系統C寄存器傳輸級(RTL)等的硬體描述語言(HDL)、或其他可用程序、資料庫、和/或電路(即,示意圖)捕捉工具來完成以上內容。實施例可以布置在計算機可用介質內,包括非瞬態內存,如使用半導體的內存、磁碟、光碟、鐵基存儲器、電阻內存等。
[0091]以特定示例來講,應理解到,可以在硬體描述語言(HDL)中所體現的、可以用來產生特定集成電路實現方式的半導體智慧財產權核心或其中一部分(如微處理器核心)內實現所披露的裝置和方法的實現方式。計算機可讀介質可以體現或存儲這種描述語言數據,並因此組成製造品。非瞬態機器可讀介質是計算機可讀介質的一個示例。其他實施例的示例包括存儲可以被適配成用於在特定架構或微架構實現方式中使用的寄存器傳送語言(RTL)的計算機可讀介質。此外,在此所述的裝置和方法可以體現為硬體與對硬體進行配置或編程的軟體的組合。
[0092]如將從本披露中明顯的,所披露的某些組件和功能性可以在硬體、軟體、固件、或其任意組合中實現。如果在固件和/或軟體中實現,則這些功能可以被存儲為計算機可讀介質上的一個或多個指令或代碼,在一個示例中,該介質是非瞬態的。示例包括用數據結構編碼的計算機可讀介質和用電腦程式編碼的計算機可讀介質。機器可讀介質包括非瞬態機器可讀介質。其他種類的介質包括傳輸介質。非瞬態介質可以是如下介質,該介質不是傳輸介質並且可以被機器訪問。舉例來講,但不具有限制性,這種計算機可讀介質可以包括RAM、ROM、EEPROM、CD-ROM或其他光碟存儲器、磁碟存儲器、或其他磁存儲裝置、或任何可以用來以指令或數據結構的形式存儲所希望的程序代碼和可以被機器訪問的其他介質。
[0093]本領域技術人員還將認識到結合在此披露的實施例描述的各說明性邏輯塊、模塊、電路和算法步驟可以被實現為電子硬體、計算機可讀介質內的計算機軟體、或兩者的組合。為了清晰地展示硬體和軟體的此可互換性,通常就其功能性,以上已經對各說明性組件、塊、模塊、電路和步驟進行了描述。這種功能性是否被實現為硬體或軟體取決於強加在整個系統上的具體應用和設計約束條件。本領域技術人員可以針對每個具體應用以不同的方式實現所述的功能性,但不應將這種實現方式決定解釋為引起對本發明的範圍的偏離。
[0094]提供各方面的特徵的描述用來使本領域的技術人員能夠製作和使用這些系統和裝置以及執行所披露的方法。各種修改將對本領域的技術人員是明顯的,在不偏離本披露的精神和範圍的情況下可以將本文件內描述的原理應用到其他方面。因此,本說明書並不旨在限制權利要求書。相反,權利要書求書是要符合與在此披露的原理和新穎性特徵一致的範圍。
[0095]附圖包括結構的相對安排和過程組件的排序,僅作為幫助理解本說明書。這些相對安排和編號並非隱含公開對權利要求書中的元素和步驟的排序或安排的任何特定限制。在不背離本披露的範圍的情況下可以順序地互換過程限制,權利要求書並且裝置加功能短語旨在涵蓋被描述為執行所引用的功能、不僅包括結構等效物而且還包括等效的結構。
[0096]儘管使用了各種示例和其他信息來解釋所附權利要求書的範圍內的多個方面,但並非要基於這種示例中的具體特徵或安排來暗示對權利要求書進行限制,因為普通技術人員將能夠使用這些示例推導出很多種實現方式。進一步地,並且儘管以結構特徵和/或方法步驟的示例專用的語言描述了某個主題,但應理解到,所附權利要求書中限定的主題不一定局限於這些描述的特徵或動作。例如,功能性可以分布在與除了在此標識的組件以外的組件、附加的組件或更少的組件中,或在其中執行。相反,公開了所述特徵和步驟是作為所附權利要求書的範圍內的系統和方法的組件的示例。
【權利要求】
1.一種用於在從虛擬3D場景進行渲染中使用的方法,包括: 在一個方向上並且從一點開始直到過渡區的最大距離,對3D場景中的光線進行追蹤;以及 如果針對該光線,沒有在比所述過渡區的最小距離更近的距離處檢測到相交, 則使圓錐截面前進穿過所述3D場景中的3D體積元素柵格,每個體積元素與表示從所述體積元素傳播的光能量的數據相關聯,其中,基於擴展因數和到所述3D場景內的所述點的距離確定所述圓錐截面的面積,以及 在所述前進過程中從與所述圓錐截面相交的體積元素收集光能量數據; 針對所述3D場景內的所述點從在所述體積元素中收集的光能量產生著色信息。
2.根據權利要求1所述的用於在從虛擬3D場景進行渲染中使用的方法,其中,表示從每個體積元素傳播的光能量的所述數據包括與位於所述3D場景內的嵌套結構的元素的對應曲面相關聯的方向和強度數據,所述嵌套結構的元素具有不同的粒度,其中更細粒度的元素表示所述3D場景內的更小的體積並且更精確地表示所述方向和顏色強度數據,而較粗粒度的元素包括多個更細粒度元素的方向和顏色強度數據的混合。
3.根據權利要求1所述的用於在從虛擬3D場景進行渲染中使用的方法,其中,表示傳播穿過每個體積元素的光能量的所述數據包括用於穿過每個體積元素的曲面的光能量的對應數據。
4.根據權利要求1所述的用於在從虛擬3D場景進行渲染中使用的方法,其中,所述圓錐截面的前進沿著所述光線的方向軸向地定中心。
5.根據權利要求1所述的用於在從虛擬3D場景進行渲染中使用的方法,進一步包括:如果針對所述光線,在所述過渡區的最小距離和最大距離之間檢測到相交,則通過使由對所述相交進行著色引起的光照信息與從與所述過渡區內由所述圓錐截面相交的體積元素的多個曲面收集的光能量混合來產生光照信息。
6.根據權利要求1所述的用於在從虛擬3D場景進行渲染中使用的方法,其中,所述前進包括選擇體積元素的集合,所述體積元素形成包括被所述光線圍住的體積的連續體積。
7.根據權利要求1所述的用於在從虛擬3D場景進行渲染中使用的方法,進一步包括:基於擴展因數和到所述點的特定距離確定所述圓錐截面在到所述3D場景中的所述點的所述特定距離處的大小。
8.根據權利要求1所述的用於在從虛擬3D場景進行渲染中使用的方法,其中,所述3D場景內的所述3D體積元素柵格包括嵌套體積元素集合,所述嵌套集合內的體積元素具有表示傳播穿過嵌套在其中的元素的曲面的光能量的混合的數據,如果有所述光能量的話,並且進一步包括基於擴展因數和到所述光線起源所在的點的給定距離確定有待在到所述3D場景中的所述點的所述給定距離處採樣的體積元素的大小。
9.根據權利要求1所述的用於在從虛擬3D場景進行渲染中使用的方法,其中,所述3D體積元素柵格是所述3D場景中的多個3D體積元素柵格中的一個柵格,其中,所述多個柵格中的不同3D柵格具有不同大小的組成體積元素。
10.根據權利要求9所述的用於在從虛擬3D場景進行渲染中使用的方法,其中,所述前進包括:迭代地確定所述3D場景中的有待採樣的位置;從所述多個3D體積元素柵格中選擇有待在所述採樣中使用的3D體積元素柵格;以及執行所述採樣。
11.根據權利要求1所述的用於在從虛擬3D場景進行渲染中使用的方法,其中,所述前進包括使所述圓錐截面前進穿過所述過渡區,並且所述著色信息的產生包括執行所述過渡區內的光照信息與對交點進行著色引起的著色信息的取決於深度的混合。
12.根據權利要求1所述的用於在從虛擬3D場景進行渲染中使用的方法,其中,所述3D場景中的所述一個或多個3D體積元素柵格與用於在所述3D場景中對光線進行追蹤的加速結構分離開。
13.根據權利要求1所述的用於在從虛擬3D場景進行渲染中使用的方法,其中,所述前進包括選擇至少兩種不同大小的體積元素的集合,所述集合包括多個元素,並且所述體積元素集合的相對於所述光線的原點的空間安排隨著到所述光線原點的距離的增加而提供逐漸更大的體積元素。
14.一種用於從3D場景產生渲染輸出的系統,包括: 存儲表示以下內容的數據的或多個非瞬態內存 一個或多個體積元素集合,以及與每個體積元素相關聯的對應的光傳輸數據,所述數據在用於所述3D場景的體積元素定義數據內對光的傳輸進行描述,以及 位於所述3D場景內的幾何體; 加速結構,包括包圍著位於所述3D場景內的所述幾何體的對應選擇的元素; 光線追蹤模塊,用於在所述3D場景內對光線進行追蹤,被耦合成用於在光線在其中遍歷的過程中檢索所述加速結構的元素; 光線著色模塊,用於對所述3D場景內的光線與幾何體之間的相交進行著色; 體積採樣模塊,用於對來自所述體積元素集合的選擇的光傳輸數據進訪問;以及 控制器,用於針對位置通過使用所述光線追蹤和光線著色模塊進行一個或多個點採樣操作和使用所述體積採樣模塊進行一個或多個體積採樣操作來產生著色信息。
15.根據權利要求14所述的用於從虛擬3D場景產生渲染輸出的系統,其中,所述控制模塊可操作用於對用於每個點採樣操作的對應的一條或多條光線進行定義,每條光線與對應的擴展因數和小於所述3D場景的範圍的最大距離相關聯,並且每個點採樣操作包括將用於所述點採樣操作的光線僅追蹤到所述最大距離。
16.根據權利要求15所述的用於從虛擬3D場景產生渲染輸出的系統,其中,基於與所述光線相關聯的擴展因數,所述控制模塊可操作用於針對每條光線對體積採樣操作進行定義並且針對每條光線對圓錐截面進行定義。
17.根據權利要求16所述的用於從虛擬3D場景產生渲染輸出的系統,其中,在距離有待產生光照信息的位置的最小距離開始進行每個體積採樣操作,其中,所述最小距離小於所述最大距離。
18.根據權利要求16所述的用於從虛擬3D場景產生渲染輸出的系統,其中,所述控制模塊使用針對所述最小距離以內的光線相交產生的光線追蹤的結果,而不使用體積採樣操作的結果。
19.根據權利要求16所述的用於從虛擬3D場景產生渲染輸出的系統,其中,使針對所述最小距離與所述最大距離之間的光線相交產生的光線追蹤的結果與所述最小距離與所述最大距離之間進行的體積採樣操作的結果相混合。
【文檔編號】G06T15/00GK104050707SQ201410096436
【公開日】2014年9月17日 申請日期:2014年3月14日 優先權日:2013年3月15日
【發明者】L·T·彼得森, C·奧茲達斯 申請人:想像技術有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀