<sub id="n0hly"></sub>
<sub id="n0hly"></sub>

      <small id="n0hly"><progress id="n0hly"></progress></small>
    1. <address id="n0hly"></address>
      1. 加急見(jiàn)刊

        基于CPU的光跟蹤算法

        來(lái)源:投稿網(wǎng) 時(shí)間:2024-01-12 10:00:08

        1.引言

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

        2.基于GPU的光線(xiàn)跟蹤。

        2.1相關(guān)工作。

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

        第二種方法是由Purcell和其他人提出的。改變方法將整個(gè)光跟蹤器移植到CPU進(jìn)行實(shí)現。GPU執行從產(chǎn)生光線(xiàn)、加速結構遍歷到最終著(zhù)色過(guò)程。從那時(shí)起,許多相同的項目都是基于Purcell模型的。

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

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

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

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

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

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

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

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

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

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

        1)如果光線(xiàn)射出場(chǎng)景,像素將被賦予整體背景色。

        2)如果一條光擊中一個(gè)漫反射材料表面,就會(huì )發(fā)射陰影射線(xiàn)(shdowray)。這些光的起點(diǎn)是擊中點(diǎn),方向是從擊中點(diǎn)指向光源。

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

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

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

        與Carr等人的程序不同,本文采用的程序沒(méi)有浮點(diǎn)精度過(guò)低的問(wèn)題,因為Ceforce7300支持整個(gè)管道中真正的32個(gè)浮點(diǎn)操作。

        亚欧成人中文字幕一区-日韩影音先锋AV乱伦小说-成人精品久久一区二区-成人美女视频在线观看
        <sub id="n0hly"></sub>
        <sub id="n0hly"></sub>

          <small id="n0hly"><progress id="n0hly"></progress></small>
        1. <address id="n0hly"></address>