今年,Imagination技術團隊參加了在舊金山舉辦的游戲開發者大會(GDC),期間展示了與亞馬遜網絡服務(AWS)合作創建的光線追蹤demo。
在本文中,我們將重點介紹開創性的移動光線追蹤的實現,這是與亞馬遜網絡服務(AWS)合作完成。亞馬遜網絡服務(AWS)是開源實時3D引擎(O3DE)的主要創建者,該引擎可支持使用光線追蹤實現實時動態計算全局照明。
光線追蹤的強大功能
光線追蹤是一項強大的技術,允許開發人員通過計算光線在3D 引擎渲染器內的反彈情況來增強游戲動畫,或任何實時計算生成的圖像。挑戰在于它是計算密集型的,這就是為什么 Imagination 的IMG CXTGPU IP中的 PowerVR Photon 架構在幫助實現使此類實時計算所需的功率和帶寬效率方面如此關鍵。IMG CXT 代表了五級光線追蹤級別系統的第一個4 級解決方案。
光線追蹤級別系統
光線追蹤模擬了光線在現實世界中的工作方式,光子從光源發出并在場景中反彈,直到到達觀察者的眼睛。光線追蹤可以在3D 渲染中以多種方式使用,以生成燈光和陰影,使 3D 場景看起來更逼真。雖然游戲中的光線追蹤通常用于創建逼真的反射,但如果它用于全局照明 (GI),它可以真正模擬3D 場景在現實世界中的表現。
基于另一種(基于探針的)計算和使用場景內的二次光反彈方法,全局照明告訴渲染器場景環境的哪些部分更暗、更亮,以及燈光如何在附近對象之間擴散(強度和顏色)。為了更好地了解反射和GI 的視覺影響,請查看我們為啟動 IMG CXT GPU 而創建的光線追蹤演示,它們帶來的差異非常明顯。它演示了GI 如何比僅使用反射更有效地創建真實感。
我們于 2021 年 7 月開始著手 O3DE演示,在 O3DECon大會(開源3D基金會的官方大會)展示結束后,我們與開發人員取得了聯系。O3DE 是 AmazonLumberyard 的演進,捐贈給 了Linux 基金會,并由合作伙伴委員會和公眾組成的委員會開發和維護。我們花了第一個月的時間從長遠角度評估引擎的性能,找出它可以為我們的演示團隊提供哪些可能性。
我們發現該引擎可以使用光線追蹤來實時動態計算GI,因此我們決定將其用作即將到來的演示的主要功能。從那里開始,與 AWS 開發人員的展開了緊密合作,我們互相幫助;我們測試了引擎,并向開發人員提供了持續的反饋,基于這些反饋,他們實現了一些缺失的功能。
結果是我們稱之為“Buon(GI)orno”的圖形演示。
GI 如何對實時變化做出反應的演示
由于引擎處于早期階段,該項目確實給我們的藝術家和圖形工程師帶來了一些挑戰。然而,通過時間和耐心(以及遠見),我們設法同步,然后將我們的努力集中到現在非常易于使用的AAA 引擎中。
事不宜遲,這里是“BuonGIorno”圖形演示。這是一個意大利式小村莊的風格化表示,并展示了使用光線追蹤后全局照明如何實時工作。
第 0 節 – Buongiorno!該視頻是我們在 GDC 上展示的演示的更新版本,下面我們將解釋屏幕上發生的事情(可參照以下時間節點查看):– 0:00 到 0:15 :簡介。– 0:16 到 0:28 :基本功能描述。– 0:29 到 0:51 :顏色擴散和光遮擋。– 0:52 到 1 : 05:RTGI 對整個場景的影響(開/關)。– 1:06 到 1 :28 :當場景中的材質和光照條件發生變化時,由于光線追蹤,引擎實時動態處理RTGI 效果。– 1:29 至 2:00 :場景展示,由 Imagination 的 PowerVR Photon 架構 + 混合渲染提供支持,使用 O3DE。
關于 O3DE 引擎
我們將首先簡要介紹負責開發O3DE 的團隊。他們是藝術家和工程師的集合,他們的角色是通過圖形演示展示創新技術和功能。他們從使用新軟件中受益,因為這有助于他們增強作品的視覺效果,而公司則從性能數據收集中受益,這些數據代表了在發售設備中實施時,它們將如何在硬件上運行。
如果您對 O3DE 感興趣,那么入門很簡單。您可以從O3DE 的網站下載引擎,在穩定版本或每日構建版本(其中包含最新更新)之間進行選擇。與任何新事物一樣,第一步可能令人生畏,但不要擔心,堅持下去,您會在短時間內就適應它。
開發人員正在努力根據社區反饋(尤其是我們的反饋:作為引擎的早期采用者,我們與主要的O3DE 合作伙伴之一 AWS 密切合作)發布修改和更新,并提供有關如何使用這些功能的文檔。那么,經過測試,O3DE 帶來了什么?嗯,O3DE 具有其他游戲引擎的所有典型特征,例如多線程渲染器、數據驅動的動畫系統、實時物理引擎等等。
正如我們上面提到的,O3DE的突出之處在于,與其他游戲引擎不同,它可以使用光線追蹤實時動態地重新計算 GI,使其成為展示我們IMG CXT的硬件光線追蹤功能的完美合作伙伴。
除了 GI,我現在將介紹其他幾個主題,以展示熟悉引擎是多么容易,并根據我們在制作BuonGIorno 演示過程中學到的知識,為您提供一些提示。
創意工作流程
對于開發人員來說,從項目的第一天開始就有清晰的想法是多么重要,我怎么強調都不過分。制作演示或視頻游戲是一個艱巨的過程,因此您必須從一開始就擁有具體的愿景才能獲得好的結果。這意味著了解項目的目的。例如,我們演示的主要目的是展示如何通過使用光線追蹤GI,從物體擴散的鮮艷色彩可以實時動態地影響周圍環境照明和附近的實體。這就是我們如何想出創建一個意大利風格的小村莊并創建有彩色房屋的想法。
通過光線追蹤 GI 影響二次光反彈的材質開關
我們首先收集參考資料,并制作由白框組成的場景(或布局)的初稿,然后我們迭代相同的想法,實現簡單的動畫和基本的技術功能。通過這種方式,您可以立即了解您的概念是否有效,以及它的可行性。完成并獲得批準后,我們開始制作構成場景所需的資源。
第一階段是對資源進行建模。您甚至可以使用照片掃描或其他技術,但請注意,游戲引擎通常需要您生成經過優化的資源,因此您需要注意一些事項。
- 密切關注多邊形數量。
- 注意模型的拓撲。
- 根據您的 UV 接縫指定平滑組。
- 調節 UV 島的分布和間距,以避免顏色溢出。
達到這種優化水平意味著您將能夠制作干凈的高多邊形到低多邊形“烘焙”(這意味著通過某些貼圖通道將細節從高多邊形造型投影到同一模型的低多邊形版本,例如凹凸、法線或高度)。這對于認為資源已準備好接收動畫和紋理至關重要。
說到這里,讓我們進入資源制作流程的下一部分,即創建紋理貼圖和材質。
目前,基于物理渲染(PBR) 的 O3DE 工作流程要求您為每個材質通道設置獨立的紋理貼圖。然而,在未來的更新中,開發人員正在努力提供使用稱為“紋理打包”的技術的可能性。除此之外,要導出的紋理貼圖的數量和類型取決于您對著色器的要求。事實上,并不是每個著色器都針對相同的用途進行了優化或需要相同類型的紋理。
例如,在創建新的PBR 材質時,O3DE 允許您在不同的著色器之間進行選擇,每個著色器都支持不同的功能和紋理貼圖。這樣您就可以決定哪一個更適合您的需求。我希望您注意到,在O3DE 中這些不同版本的 PBR 材質之間,有一點是它們都支持 “輻照度”。
O3DE 中不同 PBR 材質預設中的輻照度
如果您可以在所有三個PBR實現技術中找到它,這一定很重要,對吧?
正確的!這是因為O3DE 中的輻照度是一個通道,當使用帶有“乘”值的 GI 來管理顏色擴散的強度時,它決定了從該特定材料擴散出什么顏色。在實施 GI 時,您需要注意這一點。
讓我們進入下一部分,這將是關于O3DE 中的資源和功能實現的。
O3DE 中的資源和功能實現
如何使用資源填充關卡是開始可視化演示或視頻游戲的第一件事。您只需從場景內的資源瀏覽器中拖動FBX 或 GLTF 文件(3D 文件的行業標準文件格式),就會自動創建具有網格組件的“實體”。從那里,您可以根據每個資源在場景中的用途開始添加“組件”。例如,讓您的關卡感覺生動是在演示或視頻游戲中實現的最重要的事情之一,因此您需要知道如何在某個點為某些對象或角色實現動畫。
O3DE 有兩種不同的動畫方法,一種最適合蒙皮(變形)對象,另一種最適合非蒙皮對象。第一種方法涉及將Actor 組件與 Simple Motion 組件或在 O3DE“動畫編輯器”中創建的運動系統一起使用。如果您不需要為實體蒙皮,您可以使用“軌跡視圖”編輯器并創建序列,在其中將動畫“關鍵幀”直接放入編輯器。選擇取決于您的需要,但請注意,O3DE中仍然不支持蒙皮對象主動影響 GI。對于開發人員來說,此功能仍在開發中,他們希望盡快實現它。
非蒙皮對象會影響光線追蹤 GI 探測器的實時激活,而蒙皮對象則不會。
預制件
預制件是一種特殊類型的組件,它允許將配置完全的游戲對象(O3DE中的“實體”)保存在項目中以供重復使用。然后,可以在場景甚至其他項目之間共享這些資源,而無需再次配置。這對于將被多次使用的對象非常有用;因此,它們至關重要,尤其是在關卡創建的模塊化或程序化方法上。O3DE 以預制件為中心,甚至您的關卡也會自動設置為預制件。
使用 Prefab 實例化游戲對象(實體)的強大功能
預制件在 O3DE 中很容易創建:您可以通過右鍵單擊實體來完成- 然后您必須決定將其存儲在項目中的哪個位置。然后,您只需從“資源瀏覽器”訪問它們,復制并通過雙擊它們從視口或大綱中進行編輯。您現在只需單擊幾下即可將您的更改從一個預制件反映到所有實例化副本!
我們現在已經知道如何在編輯器中實現資源了——但是如果您看不到演示或視頻游戲,那它又是什么?因此,下一個主題是照明。我不會專注于基本的照明特性,但我想讓你知道如何應用GI。
O3DE 中的 GI功能強大。首先,如果需要,它可以一次使用多個光源,包括定向燈、點光源、聚光燈和區域燈。接下來,它可以計算二次光反彈,既可以為您使用硬件光線追蹤核心來進行動態計算,也可以作為探針與光源的單一交互進行烘焙。第三,也是最重要的,GI也很容易設置。
您需要執行以下操作:
- 1. 首先,轉到您的“LevelName.prefab”并添加一個名為“DiffuseGlobal Illumination”的組件。2. 選擇您希望在場景中具有的GI 質量級別。3. 創建一個新實體,并向其中添加一個“Diffuse Probe Grid”組件(O3DE 將要求您創建一個“長方體組件”以確定將包含和分布探針的體積邊界)。4. 通過設置 GI 體積的尺寸并將其移動到場景內需要的位置來定義GI 體積的邊界(它必須完全包含您希望受 GI 影響的實體)。5. 開始調整 GI 參數,例如Probe Spacing、“Number of Rays per probe”、“Ambient Multiplier”(應保持為 1)和偏差。您可以通過激活探針的可視化,來幫助自己在這些參數之間達到正確的平衡(“show active/inactive probes”,這是 O3DE 中最近添加的功能)。6. 確保 GI 實體處于活動狀態,模式設置為“實時(光線追蹤)”,并開始在體積影響內播放實體、燈光、材質和動畫。您會注意到GI 會實時適應您的更改,從而提供更好的整體環境照明。這就是光線追蹤 GI 的強大之處。
7. 任何這些步驟和設置都可以隨時查看和修改。
最后,我想談談如何完成和導出您的項目。
完成項目時需要注意的是后期處理。設置后處理FXS 很簡單:它需要將“PostFX 層”組件添加到實體,然后您可以開始將所有其他單個效果組件添加到同一實體。目前, FX 功能有很多后處理特性可選,例如屏幕空間環境光遮蔽、自動或手動曝光控制、HDR顏色分級、色差、光暈等。
其他功能,例如光線追蹤屏幕空間反射,是O3DE 開發人員正在開發的東西,希望很快就會實現。
一些可用的后處理效果在 O3DE 中作為實體內部的“組件”實現。
測試和導出您的工作
O3DE 編輯器可以隨時播放和測試您的關卡,跟蹤頂點計數、圖元計數、繪制項目,并監控FPS速率。除了播放按鈕外,還有一個物理模擬按鈕,供想要嘗試該功能的人使用。
要導出您的作品(特別是我們演示的視頻),您可以從軌跡視圖中設置“camera director”,并創建最終的可播放序列。從那里,您可以直接在引擎中錄制視頻。
結論
您現在了解了我們在創建BuonGIorno 演示時了解的有關 O3DE 的所有內容。從本質上講,我們想要展示的是 ,O3DE 是多么容易實現既熟悉又驚人的新功能,以增強您在演示和視頻游戲中的視覺效果。通過關注全局照明而不僅僅是反射,我們了解了光線追蹤如何幫助當前和下一代開發人員制作更好、更逼真的環境照明。
雖然目前還沒有在O3DE 中同時實時運行光線追蹤反射和光線追蹤 GI 的選項,正如我多次提到的,開發人員正在開發它!感謝他們的努力,并且感謝 Imagination移動和桌面PowerVR Photon 架構,這些功能將很快成為視頻游戲和實時 CGI 世界的標準,讓每個人都能享受更好的視覺效果。
-
imagination
+關注
關注
1文章
573瀏覽量
61316 -
光線追蹤
+關注
關注
0文章
183瀏覽量
21473
發布評論請先 登錄
相關推薦
評論