男人摸女人的胸视频,91精品国产91久久久久久最新,黄色视频性爱免费看,黄瓜视频在线观看,国产小视频国产精品,成人福利国产一区二区,国产高清精品自拍91亚洲,国产91一区二区

加急見刊

基于CPU的光跟蹤算法

來源:投稿網 時間:2024-01-12 10:00:08

1.引言

近年來,CPU在計算能力和可編程性方面都有了很大的提高,GPU在需要大量計算的密集計算領域發揮了重要作用。基于CPU的各種密集計算被移植到GPU上,以利用GPU的巨大計算能力加速整個計算過程。光跟蹤算法是生成真實圖形的一種非常重要的方法。廣泛應用于電影、游戲、廣告等行業,光跟蹤算法也是典型的密集計算算法。使用基于CPU的原始光跟蹤渲染圖片是非常耗時的操作。因此,如果CPU上的光跟蹤算法能夠映射到CPU上,加快光跟蹤算法的實施時間,將帶來巨大的經濟效益。因此,基于CPU的光跟蹤算法已成為國內外研究人員的研究熱點。

2.基于GPU的光線跟蹤。

2.1相關工作。

目前,使用CPU加速光跟蹤算法主要有兩種方法。第一種是Carr和其他人提出將CPU轉換為一個蠻力的計算器來執行光的一個三角形,并在CPU上完成任何光的生成和著色過程。這就要求CPU仍然執行大部分渲染工作。Carr等人指出,在ATIradeon8500上,每秒最快可執行1.2億次光的一個三角形。同時,作者還指出,由于GPU單精度浮點的限制,圖片中仍存在一些不真實的地方。

第二種方法是由Purcell和其他人提出的。改變方法將整個光跟蹤器移植到CPU進行實現。GPU執行從產生光線、加速結構遍歷到最終著色過程。從那時起,許多相同的項目都是基于Purcell模型的。

2.2GPU上光跟蹤算法的映射模式。

將傳統CPU上執行的光跟蹤算法映射成GPU協助或基于GPU的光跟蹤器有很多方法。以下是本文實現中提出的基于CPU的Whited模型的Purcell的映射模型和光跟蹤器。光跟蹤器的布局如圖2.1所示:

在Purcell的論文中,它將光的一三角形求交,以及遍歷過程分為兩個獨立的遍歷核和求交核。在本文的實現中,光跟蹤算法也根據上述模型圖分解為三個步驟:光生成、光一三角求交和著色。

在跟蹤光線之前,需要生成從視點指向屏幕的原始光線(primaryray)。在GPU上,光柵的插值能力可以在單核調用中產生所有原始光。

給定觀察矩形的四個角度和視點(用于生成圖片的投影平面的一部分)首先計算視錐的四個邊緣。如果光柵在這四種光之間按照512×512的規格插入,最終可以產生512×512圖片(像素和采樣點)的所有原始光的方向。同時,這些方向可以存儲在一種紋理中,并將其作為內核的輸入。所有的原始光都有相同的起點,但仍然存儲在同一方向的紋理中,具有相同的維度。因為當產生陰影光或反射光時,光的原點就會發生變化。

求交核心將光的原點、方向和場景描述作為輸入數據。核心被調用幾次后,我們將每個像素輸出一個擊中記錄。如果一條光擊中場景中的三角形,返回擊中點的三個重心坐標和相關擊中的三角形。此外,還將輸出發現的交叉點沿光線的距離和擊中三角形的材料。這需要五個浮點值來形成一個擊中記錄。紋理只能支持四個顏色通道(RCBA),因此如果擊中記錄可以減少到四個值,它將是非常有益的。

觀察發現,只需要三個重心坐標的兩個,因為在三角形內部,它們總是加1個。這使得將交點記錄存儲在單獨的RGBA紋理中是可行的,其維度與其他兩個光紋理相同。

Moller和Trumbore提出了一種高效的光一三角求交算法,利用CPU在向量計算中的優勢進行求交計算。以下是求交代碼,也顯示了如何利用向量指令提高效率。

當所有原始光都計算出交叉狀態時,您可以查詢著色過程所需的表面法線和材料信息。每個擊中記錄都存儲一個指向材料紋理的索引,包括三角形法線、材料顏色和類型。根據擊中記錄的中心坐標插入三個頂點的法線。最終顏色可以根據(N-L)C計算,這里是法線,L是光源的方向,G是三角形的顏色。

目前,根據擊中三角形的材料類型(漫反射材料或鏡面反射材料),需要產生二次光來計算陰影和反射。

1)如果光線射出場景,像素將被賦予整體背景色。

2)如果一條光擊中一個漫反射材料表面,就會發射陰影射線(shdowray)。這些光的起點是擊中點,方向是從擊中點指向光源。

3)如果一條光擊中了鏡面反射材料的表面。發射鏡面反射光。鏡面發射光的起點也在擊中點,但其方向是關于入射光和插值后的法線對稱方向。一個真正的Whited類型的光跟蹤器也支持透明材料,從而產生折射光。但由于主要研究加速結構,本文沒有考慮折射光。

4)如果陰影光擊中一個幾何體,則表明在光源和擊中點之間存在一個幾何體,因此該像素應為黑色(在陰影中)。當跟蹤陰影光時,不要關心最近的擊中點,而是更關心是否有這樣的擊中點。因此,當發現交叉點時,可以停止整個交叉過程,從而加速算法的處理過程。在本文的實現中,以同樣的方式跟蹤陰影光和反射光,因此沒有使用此優化策略。

每個像素已經產生了正確的二次光。如有必要,可執行另一個歷程/交付過程,跟蹤上述二次光。每次調用著色程序,每個像素都可以返回一個顏色值和一個新的光。著色核心還可以將上一個著色程序的輸出作為著色程序的輸入。這使得這些連續鏡面反射的顏色可以在跟蹤連續光時合并。

與Carr等人的程序不同,本文采用的程序沒有浮點精度過低的問題,因為Ceforce7300支持整個管道中真正的32個浮點操作。