那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于光線追蹤的渲染算法實現

穎脈Imgtec ? 2024-10-30 08:06 ? 次閱讀

本文翻譯自Scratchapixel 3.0[1],是一個關于計算機圖形學的系統性的學習教程如果有誤,歡迎在評論區討論。

我們已經涵蓋了所有需要說的內容!我們現在準備寫我們的第一個光線追蹤器。你現在應該能夠猜到光線追蹤算法是如何工作的了。

首先,注意到自然界中光的傳播只是從光源發出無數條射線,反彈直到它們撞到我們眼睛的表面。因此,光線追蹤是優雅的,因為它直接基于我們周圍發生的事情。除了它按照相反的順序跟隨光線的路徑外,它是一個完美的自然模擬器。光線追蹤算法使用由像素組成的圖像。對于圖片中的每個像素,它向場景中發射一個主射線。該主射線的方向是通過從眼睛到該像素中心的線追蹤得到的。一旦我們設置了該主射線的方向,我們檢查場景中的每個對象,看它們是否與任何對象相交。在某些情況下,主射線將與多個對象相交。當這種情況發生時,我們選擇離眼睛最近的交點所在的對象。然后,我們從交點向光源發射一個陰影射線(圖 1)。

d996eb9c-9652-11ef-8084-92fbcf53809c.gif

圖1:我們通過像素中心發射一個主射線來檢查可能的對象相交。當我們找到一個對象時,我們發射一個陰影射線來確定該點是否被照亮或在陰影中。

如果這條射線在到達光源的路上沒有與其他對象相交,那么擊中點就被照亮了。如果它與另一個對象相交,那個對象就會對它產生陰影(圖 2)。

d9a78a42-9652-11ef-8084-92fbcf53809c.gif

圖2:小球在大球上投下了陰影。陰影射線在到達光源之前與小球相交。

如果我們對每個像素重復這個操作,我們就可以得到我們三維場景的二維表示(圖 3)。

d9c00680-9652-11ef-8084-92fbcf53809c.gif

圖3:為了渲染一個幀,我們為每個幀緩沖區的像素發射一個主射線。

以下是算法的偽代碼實現:

for (int j = 0; j < imageHeight; ++j) { for (int i = 0; i < imageWidth; ++i) { // compute primary ray direction Ray primRay; computePrimRay(i, j, &primRay); // shoot prim ray in the scene and search for the intersection Point pHit; Normal nHit; float minDist = INFINITY; Object object = NULL; for (int k = 0; k < objects.size(); ++k) { if (Intersect(objects[k], primRay, &pHit, &nHit)) { float distance = Distance(eyePosition, pHit); if (distance < minDistance) { object = objects[k]; minDistance = distance; //update min distance } } } if (object != NULL) { // compute illumination Ray shadowRay; shadowRay.direction = lightPosition - pHit; bool isShadow = false; for (int k = 0; k < objects.size(); ++k) { if (Intersect(objects[k], shadowRay)) { isInShadow = true; break; } } } if (!isInShadow) pixels[i][j] = object->color * light.brightness; else pixels[i][j] = 0; }}

正如我們所看到的,光線追蹤的美妙之處在于它只需要幾行代碼;一個基本的光線追蹤器只需要 200 行代碼。與其他算法(如掃描線渲染器)不同,光線追蹤的實現需要很少的努力。Arthur Appel 在 1969 年的一篇名為“一些用于給固體著色的機器渲染技術”的論文中首次描述了這種技術。那么,如果這個算法如此出色,為什么它沒有取代所有其他渲染算法呢?主要原因在于速度,當時(甚至今天在某種程度上)是這樣的。正如 Appel 在他的論文中所提到的:

“這種方法非常耗時,通常需要比線框圖繪制多幾千倍的計算時間才能獲得有益的結果。其中約有一半時間用于確定投影和場景之間的點對點對應關系。”

換句話說,它很慢(正如 Kajiya 所說的,他是所有計算機圖形學歷史上最有影響力的研究人員之一:“光線追蹤不慢,計算機慢”)。查找光線和幾何圖形之間的交點非常耗時。幾十年來,算法的速度一直是光線追蹤的主要缺點。然而,隨著計算機變得更快,它越來越不是問題。盡管仍有一件事必須說:與其他技術(如 z 緩沖算法)相比,光線追蹤仍然要慢得多。然而,隨著今天的快速計算機,我們可以在幾分鐘內計算出以前需要一個小時才能完成的幀。實時和交互式光線追蹤器是一個熱門話題

總之,重要的是要記住,渲染例程可以被認為是兩個單獨的過程。一步確定一個物體表面上的點是否從特定的像素可見(可見性部分),第二步著色該點(著色部分)。不幸的是,這兩個步驟都需要昂貴和耗時的光線-幾何交點測試。這個算法是優雅而強大的,但是它迫使我們在渲染時間和精度之間進行權衡。自 Appel 發表論文以來,已經進行了大量研究來加速光線-物體交點例程。隨著計算機變得更加強大并結合這些加速技術,光線追蹤成為了日常生產環境中可用的方法,并且是大多數渲染離線軟件所使用的事實標準。視頻游戲引擎仍在使用光柵化算法。然而,隨著 GPU 加速光線追蹤技術(2017-2018)和 RTX 技術的最近出現,實時光線追蹤也在可及范圍內。雖然一些視頻游戲已經提供了可以打開光線追蹤的模式,但僅限于簡單的效果,如清晰的反射和陰影。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 光源
    +關注

    關注

    3

    文章

    711

    瀏覽量

    67893
  • 追蹤器
    +關注

    關注

    0

    文章

    171

    瀏覽量

    25770
  • 光線追蹤
    +關注

    關注

    0

    文章

    183

    瀏覽量

    21539
收藏 人收藏

    評論

    相關推薦

    GPU在虛擬現實中的表現 低功耗GPU的優缺點

    數據,以實現沉浸式的體驗。以下是GPU在虛擬現實中的幾個關鍵表現: 圖像渲染能力 :GPU需要快速渲染復雜的三維場景,以保持高幀率,這對于減少運動模糊和暈動癥至關重要。 實時光線
    的頭像 發表于 11-19 10:58 ?478次閱讀

    基于光線追蹤實現反射折射效果

    本文翻譯自Scratchapixel3.0[1],是一個關于計算機圖形學的系統性的學習教程。如果有誤,歡迎在評論區討論。光線追蹤的另一個優點是,通過擴展光線傳播的思想,我們可以非常容易地「模擬反射
    的頭像 發表于 11-09 01:07 ?271次閱讀
    基于<b class='flag-5'>光線</b><b class='flag-5'>追蹤</b><b class='flag-5'>實現</b>反射折射效果

    光線追蹤算法概覽

    本文翻譯自Scratchapixel3.0[1],是一個關于計算機圖形學的系統性的學習教程。如果有誤,歡迎在評論區討論。由伊本·海塔姆描述的現象解釋了我們看到物體的原因。基于他的觀察,可以得出兩點有趣的評論:首先,沒有光,我們什么也看不見;其次,如果我們環境中沒有物體,我們也看不到光。如果我們在星際空間旅行,這通常就會發生。如果我們周圍沒有物質,我們只能看到
    的頭像 發表于 10-12 08:07 ?258次閱讀
    <b class='flag-5'>光線</b><b class='flag-5'>追蹤</b><b class='flag-5'>算法</b>概覽

    光線追蹤的工作原理

    本文翻譯自Scratchapixel3.0[1],是一個關于計算機圖形學的系統性的學習教程。如果有誤,歡迎在評論區討論。注:本課程更多地是關于3D渲染的一般介紹。如果您有興趣了解射線跟蹤技術,請查看
    的頭像 發表于 09-30 08:05 ?292次閱讀
    <b class='flag-5'>光線</b><b class='flag-5'>追蹤</b>的工作原理

    AMD光線追蹤專家加盟高通,共筑Adreno GPU性能新高度

    在科技行業日新月異的今天,頂尖人才的流動往往預示著技術創新與突破的新篇章。近日,一則令人矚目的消息在半導體與圖形處理領域引起了廣泛關注——AMD前光線追蹤技術領域的杰出專家Paritosh
    的頭像 發表于 07-11 10:03 ?630次閱讀

    CPU渲染和GPU渲染優劣分析

    使用計算機進行渲染時,有兩種流行的系統:基于中央處理單元(CPU)或基于圖形處理單元(GPU)。CPU渲染利用計算機的CPU來執行場景并將其渲染到接近完美。這也是執行渲染的更傳統方式。
    的頭像 發表于 05-23 08:27 ?694次閱讀
    CPU<b class='flag-5'>渲染</b>和GPU<b class='flag-5'>渲染</b>優劣分析

    解碼AI驅動的DLSS 3.5光線重建功能

    神經網絡渲染器提高了光線追蹤圖像質量,使用可在采樣光線之間生成更高質量像素的 AI 網絡取代需要人工設計的降噪器。
    的頭像 發表于 05-11 11:06 ?622次閱讀
    解碼AI驅動的DLSS 3.5<b class='flag-5'>光線</b>重建功能

    HarmonyOS實戰開發-合理選擇條件渲染和顯隱控制

    開發者可以通過條件渲染或顯隱控制兩種方式來實現組件在顯示和隱藏間的切換。本文從兩者原理機制的區別出發,對二者適用場景分別進行說明,實現相應適用場景的示例并給出性能對比數據。 原理機制 條件渲染
    發表于 05-10 15:16

    MediaTek攜手望塵科技通過移動端光線追蹤技術打造沉浸體育游戲體驗

    MediaTek攜手望塵科技(GALA Sports),在手游領域實現光線追蹤技術的革命性應用。該技術現已成功融入望塵科技旗下的釣魚與籃球體育游戲中,極大地提升了玩家的視覺沉浸體驗,讓游戲畫面更加逼真。
    的頭像 發表于 05-07 11:39 ?728次閱讀

    【RTC程序設計:實時音視頻權威指南】音頻采集與渲染

    的原始數據需要通過預處理來提高音頻的質量,使音頻數據更加適合后續的編解碼處理,常用的算法, 有回聲消除AEC、自動增益控制、語音活動檢測,這三個就是最主要的3a算法。 音頻渲染的核心是將數字音頻
    發表于 04-28 21:00

    【RTC程序設計:實時音視頻權威指南】視頻采集與渲染

    領域,現在也有一些新技術,例如,光線追蹤等等,都可以給計算機帶來更高的渲染質量和視覺效果。在進行跨平臺渲染時,需要用到OpenGL,著色器編程是OpenGL中一個重要的組成部分,通過編
    發表于 04-25 08:40

    MediaTek攜手望塵科技共同推進移動端光線追蹤技術在手游中的應用落地

    MediaTek 與望塵科技(GALA Sports)攜手合作,共同推進移動端光線追蹤技術在手游中的應用落地,將該技術成功導入了望塵科技旗下的釣魚和籃球體育在線類游戲,為玩家帶來更具沉浸感的逼真游戲畫面。
    的頭像 發表于 04-18 10:04 ?456次閱讀
    MediaTek攜手望塵科技共同推進移動端<b class='flag-5'>光線</b><b class='flag-5'>追蹤</b>技術在手游中的應用落地

    AMD Radeon RX 7000M系列顯卡特性分析

    AMD RDNA 3架構 – 新的計算單元在渲染、AI和光線追蹤之間共享資源,以更有效地利用每個晶體管,實現快速又高效的性能。
    發表于 04-15 11:31 ?692次閱讀
    AMD Radeon RX 7000M系列顯卡特性分析

    微軟:SSD固態硬盤可降低顯存占用,提高光線追蹤性能

    其專利說明如下:由于光線追蹤加速結構常需占用其他數據存儲空間(如幾何圖形和紋理數據),導致系統需大增內存負擔,且所需帶寬大。本文方法旨在緩解這一問題。
    的頭像 發表于 03-25 15:46 ?656次閱讀

    Exarion芯片公司推出聲音追蹤計算芯片,與臺積電共同生產

    Exarion表示,音效追蹤技法相類光合卡GPU使用的光線追蹤,通過模擬計算虛擬環境中的音軌及反射,實現逼真音效。此項技術能夠分辯來自左右上下的聲音,且需進行大規模計算。
    的頭像 發表于 03-08 15:29 ?707次閱讀
    大发888娱乐城俄罗斯| 噢门百家乐官网注码技巧| 大发888娱| 贵族百家乐官网的玩法技巧和规则 | 武汉百家乐官网庄闲和| 百家乐官网赢赌场百家乐官网| 皇冠官方网址| 大发888优惠代码 官网| 二八杠规则| 威尼斯人娱乐上网导航| 百家乐那里可以玩| 盐城百家乐官网的玩法技巧和规则| 网络百家乐官网玩法| 百家乐官网换房| 太阳城百家乐官网下载网址| 百家乐官网规则好学吗| 二八杠口诀| 申博太阳城娱乐网| 大发8888娱乐城 真钱| 大发888娱乐场下载lm0| 大发888boaicai| 二八杠麻将做记号| 大发888我发财| 娱乐城大全| 巧家县| 缅甸百家乐官网网上投注| 百家乐官网开户最快的平台是哪家| 百家乐官网棋牌游戏正式版| 奔驰百家乐官网游戏电玩| 百家乐官网棋牌官网| 百家乐官网任你博娱乐平台| 豪享博百家乐官网的玩法技巧和规则 | 百家乐官网鞋业| 百家乐官网玩的技巧| 百家乐技术秘籍| 百家乐游戏机价格| 百家乐破解赌戏玩| 百家乐必胜法技巧| 大发888主页优惠| 云龙县| 澳门百家乐官网什么规则|