您當前的位置:首頁 > 攝影

keyshot中如何利用GPU 渲染焦散?

作者:由 在人間湊人數 發表于 攝影時間:2022-06-10

分析 KeyShot 中 Caustic 的與眾不同之處以及 GPU 技術進步所帶來的優勢。

焦散是自然界中最美麗的照明現象之一。焦散是由於光透過鏡面反射或反射而形成的。示例包括透過一杯干邑白蘭地聚焦的光線、游泳池底部的微光,甚至是從窗戶射入塵土飛揚的環境中的光束。

焦散歷史

長期以來,我一直對焦散著迷。我在參加 Peter Shirley(當時是康奈爾大學的客座教授)的主題演講後開始了我的計算機圖形學生涯,他說我們不知道如何渲染焦散,除了在漫反射平面上的焦散等簡單場景中。當時我還是一名學生,我一直在研究一種稱為光子對映的演算法,只是為了好玩,這正是他所說的。當時我不認為它會有用,但他的主題演講讓我不這麼認為,我開始發表論文,重點是渲染焦散[1]。我當時選擇的焦散場景是一杯干邑白蘭地,如圖 1 所示。幾年後,我與 Per Christensen 合作開發了mental images,我們擴充套件了光子對映來渲染體積焦散。

keyshot中如何利用GPU 渲染焦散?

光子對映的工作原理是將來自光源的光子追蹤到場景中,並在這些光子與場景中的表面或體積互動時儲存這些光子。第二步是使用光線追蹤(或路徑追蹤)演算法渲染場景,該演算法使用光子來計算焦散和其他照明元素。原始的光子對映演算法可以渲染漂亮的焦散和全域性照明,但它受限於可用於渲染給定場景的光子數量。我與加州大學聖地亞哥分校的博士生 Toshiya Hachisuka 一起克服了這一限制,並推動了漸進式光子對映 [2] 的發展。

keyshot中如何利用GPU 渲染焦散?

漸進光子對映是第一個能夠在一般場景中渲染全域性照明和焦散的演算法。為了說明這一點,圖 3 顯示了一個由點光源照亮的漫射平面上的簡單反射立方體。如果這個立方體是使用路徑追蹤渲染的,它完全沒有焦散,因為光從立方體反射到漫反射平面上。更高階的演算法,例如雙向路徑追蹤、都市光傳輸,可以在漫反射平面上渲染焦散,但這些方法都不能渲染該焦散立方體中的反射(所謂的鏡面反射-漫反射-鏡面反射相互作用)。目前的幾個“基於物理的渲染器”只能渲染中間影象中顯示的焦散,而缺乏渲染焦散反射的能力。

keyshot中如何利用GPU 渲染焦散?

eyShot 從一開始就一直在使用漸進式光子貼圖,並且從第一版開始,KeyShot 就能夠透過單擊來渲染焦散。KeyShot 正在使用更新的自適應漸進光子對映 [3] 來計算複雜間接照明上的焦散。該演算法非常複雜,需要複雜的資料結構來跟蹤光子,並且只能在 CPU 上執行。

GPU 上的焦散

快進到 2018 年,我參加了 NVIDIA 主題演講,其中執行長 Jensen Huang 介紹了新的 RTX 硬體光線追蹤技術。他還展示了包括焦散的新硬體的互動式演示。在主題演講之後,我與 Jacopo Pantaleoni(NVIDIA 的研究科學家)進行了交談,他告訴我他必須為演示實施焦散,因為 Jensen Huang 明確要求這樣做。Jacopo 實現了一種光子對映的變體,它使用基於螢幕的重建核心來避免構建複雜的資料結構。

SIGGRAPH 2018 上的互動式路徑追蹤和焦散演示令人大開眼界,在與 NVIDIA 的幾位研究人員討論 RTX 技術並聽取他們的演講後,很明顯我們在 KeyShot 中需要這項技術。挑戰在於如何將 KeyShot 中的複雜演算法對映到 GPU?Jacopo 的演算法執行良好,但它無法處理如圖 3 所示的焦散反射。在 KeyShot 9 中,我們最終在 GPU 上實現了一個完整的漸進光子對映演算法,能夠渲染包括反射在內的焦散。GPU 光子對映演算法渲染的影象與 CPU 版本相同,但沒有那麼複雜。在大多數情況下,RTX GPU 的原始功率對此進行了補償,並可能在 GPU 上完全渲染焦散,而且速度仍然相當快。

GPU 上的焦散速度極快

KeyShot 9 是第一個充分利用 GPU 的 KeyShot 版本。RTX 技術與成熟的 CUDA 程式設計框架相結合,使得在 GPU 上執行所有光線追蹤、光子對映、著色等成為可能。在開發 KeyShot 10 時,我們深入研究了 GPU 實現,並決定看看我們是否可以改進光子貼圖實現並獲得更快的焦散。這需要相當多的咖啡(感謝 Rocket espresso),但最終我們不僅能夠匹配 CPU 演算法,而且還超過了它。最終結果是一種焦散演算法,該演算法可以處理數千種燈光,快速近距離渲染高度詳細的焦散,並且在新的 NVIDIA RTX Ampere GPU 上執行速度極快。

keyshot中如何利用GPU 渲染焦散?

“然而,KeyShot 10。2 中的新焦散演算法可以在 10 秒內為遠景和近景渲染這些細節。”

使用 KeyShot 10 中的新焦散演算法,我們開始獲取焦散中的細節和精細結構,由於達到此細節級別需要時間,因此通常不會看到這些細節和精細結構。圖 5 顯示了圖 1 中干邑玻璃焦散的特寫。請注意,焦散中的結構是由干邑玻璃製成的三角形而不是連續光滑表面造成的。通常情況下,這不會被看到,因為這種級別的細節需要很長的渲染時間。然而,KeyShot 10。2 中的新焦散演算法可以在 10 秒內為遠景和近景渲染此細節。

keyshot中如何利用GPU 渲染焦散?

keyshot中如何利用GPU 渲染焦散?

圖7:焦散包括由於光在此場景中被玻璃球和二向色玻璃反射器折射和反射而產生的體積焦散。Dries Vervoort 的場景。

圖 6 顯示了來自 Will Gibbons 和 Brad Adelmann 的香水瓶的焦散。圖 7 顯示了由規則電介質和二向色玻璃的折射和反射引起的複雜體積焦散,導致光束的光譜分離。圖 8 顯示了一杯沒有焦散的橙汁,而焦散是由光線透過玻璃聚焦到橙汁中形成的。請注意,橙汁如何變得更亮,同時仍然顯示出光透過玻璃表面折射時形成的焦散圖案。在 GPU 上渲染的所有影象都可以在 KeyShot 10 中進行互動操作,焦散會隨著對場景的任何更改而更新。

keyshot中如何利用GPU 渲染焦散?

“KeyShot 10 突破了我認為在渲染引擎中使用焦散可以實現的界限,”Vyzdom創始人兼首席創意人 David Merz說道。“由於長時間的渲染以及有問題的噪音和螢火蟲,我過去在工作中完全避免焦散,這很不幸,因為這些美麗的折射和反射是我們現實世界中至關重要的視覺線索,對於實現照片寫實很重要。使用”最新的更新,我正在創造更令人印象深刻的作品,而不會犧牲寶貴的時間。能夠透過單擊按鈕獲得無與倫比的焦散效果,這是一股清新的空氣。”他繼續說道,“KeyShot 10 中的焦散增強了我的工作流程 - 特別是因為它可以在NVIDIA RTX A6000上無縫執行- 速度讓我可以快速進行小迭代,而不用等待數小時才能看到我的決定結果。我在幾分鐘內得到了一個非常乾淨的表示。”

雲渲染

支援keyshot GPU渲染,解決本地渲染資源不足,渲染卡頓,渲染慢,趕工期等問題,可批次渲染,批量出結果,渲染速度更快,效率更高。

keyshot中如何利用GPU 渲染焦散?

keyshot中如何利用GPU 渲染焦散?

結論

我們相信 KeyShot 10 中新的基於 RTX GPU 的焦散演算法對於任何使用透明或反光產品(如香水、珠寶、照明設計師等)的人來說都是一種遊戲規則的改變。我們相信這是可用於在 GPU 或 CPU 上渲染焦散的最佳演算法,我們期待在野外看到更精美的焦散渲染。

keyshot中如何利用GPU 渲染焦散?

Henrik Wann Jensen 博士

Henrik Wann Jensen 博士(碩士、博士)是 Luxion 的首席科學家,KeyShot 的製造商,也是加州大學聖地亞哥分校計算機科學系的名譽教授。他的研究重點是逼真的影象合成、全域性照明、自然現象的渲染和外觀建模。他對計算機圖形學的貢獻包括用於全域性照明的光子對映演算法,以及在半透明材料中有效模擬次表面散射的第一種技術。他是AK Peters 2001 年

“Realistic Image Synthesis using Photon Mapping”

的作者。由於在渲染半透明材料方面的開創性研究,他獲得了美國電影藝術與科學學院頒發的奧斯卡獎(技術成就獎)。

標簽: 焦散  渲染  KeyShot  GPU  光子