開源生態的建設根植於社群,開發者在社群共享、共創、共贏,將會激發出無限的創造力,這就是開源最大的魅力!
選擇開源,源於我們堅信,“獨行快,眾行遠”!
Orillusion 引擎
WebGPU 經過六年的時間,終於在 2023 年 4 月 6 日,由 Chrome 團隊釋出。5 月 2 號,在 Chrome113 版本上,WebGPU 被預設啟動。自此,Web 上有望出現 3A 級渲染的 3D 應用了!
Orillusion 團隊三年前開始關注 WebGPU 發展,經過兩年多研發,多次框架重構,效能調優後,Orillusoin 引擎在今天以開源的形式正式跟大家見面!
Orillusion 致力於在瀏覽器中實現桌面級的渲染效果,支援超大複雜場景的 3D 呈現,為 3D 場景爆發時代提供底層引擎基礎工具。
Github 地址:https://github.com/Orillusion/orillusion
引擎優勢
WebGPU 是基於 Web 瀏覽器的全新現代圖形 API,使網頁能夠直接呼叫 GPU 執行計算任務,並繪製複雜影像。
Orillusion 是一套基於 WebGPU 圖形 API 的 Web3D 渲染引擎,能夠媲美 PC 端圖形 API 的渲染能力。Orillusion 引擎中使用了非常多的 GPU 開放能力,比如靈活操作的 GPU 快取(GPU Buffer),強大的著色器(Webgpu Shader/WGSL),以及備受矚目的 Compute Shader 計算核心,充分發揮 GPU 在非光柵化階段的並行處理能力。
ECS 元件系統
Orillusion 使用 ECS(Entity-Components-System/實體-元件-系統)元件式架構做為引擎的整體設計思路。消除了繼承模式中的繼承鏈複雜、功能交織的問題,透過解耦,封裝和模組化設計,開發者可以更靈活的進行功能組合及擴充套件。實體(entity)一旦掛接了元件(component),不需要複雜的繼承關係就擁有了元件的全部能力,再配合上系統內設定的生命週期,使得開發者可以實現更靈活呼叫。
元件系統
內建元件
基礎效能
連續記憶體 GPU 資料提交機制
傳統 3D 引擎在渲染的鏈路中,CPU 與 GPU 相互等待是效能消耗的主要原因之一。其中一部分等待時長是在每一幀畫面渲染前,CPU 自身的資料準備和 CPU 向 GPU 傳輸資料的等待過程中產生的,另外一部分等待時長是 GPU 狀態切換頻率過多,導致 CPU 產生了更多的空等待。Orillusion 引擎透過減少 CPU 向 GPU 寫入資料的頻率以及降低 GPU 渲染狀態的切換頻率,最終來實現效能提升。
效能的提升離不開 GPU 快取(GPUBuffer)的利用。在大量資料場景中,可以利用 StorageGPUBuffer 把資料寫入到一個 ByteStream 中,再統一寫入到 GPUBuffer 進行一次性提交;在少量資料頻繁互動的場景中,更多的會把資料寫入到一個小記憶體塊(UniformGPUBuffer)中,而後寫入到 GPUBuffer 進行一次性提交。需要指出的是 StorageGPUBuffer 中的資料是可讀、可寫、可複製的,但 UniformGPUBuffer 中的內容僅支援寫入。
GPUBuffer
全域性連續記憶體矩陣機制
Orillusion 引擎還提供了用於提高效能的全域性連續記憶體矩陣(StorageGPUBuffer+BindGroup),它將整合渲染中會使用到的所有矩陣,在渲染前進行統一提交。最終可以實現在不影響渲染結果的情況下,減少資料提交頻率、CPU 和 GPU 資料寫入時間以及 GPU 狀態切換頻率,從而很大程度上改善渲染效能。
全域性連續矩陣內效能最佳化
渲染
叢集光照剔除
場景渲染離不開豐富的光照,所以引擎採用叢集光照(Cluster Lighting)來解決燈光數量限制的問題,也可避免延時渲染帶來的諸多弊端。
光照數量中最常見的一個弊端是由傳統前向渲染(Forward Rendering)中暫存器和效能的限制引起的,導致每個畫素能計算的光源數量非常的小,且存在大量 GPU 效能浪費的情況。引擎透過 Cluster Lighting 預先算出光源在當前畫面區塊中畫素的使用情況,精確統計出每一個區塊畫素受到的光源影響,合理裁剪區塊畫素的計算資源,從而實現效能的提升。而且,結合 HDR Lighting 和 Lighting IES 能力,可以渲染出更多豐富飽滿的畫面效果。
同螢幕 128+動態光源
PBR 渲染
Orillusion 引擎中提供了基於物理的材質渲染(PBR-Physical Based Rendering),從而可以支援金屬、皮革、橡膠等有各自不同物理屬性的材質渲染,讓物體擁有豐富的細節,更強的質感表現。
後處理
後處理(Post-Process Effect)的種類非常豐富,常見的輝光、模糊、景深等都屬於該範疇,為了方便使用,Orillusion 目前提供了 Bloom、GTAO、SSR 等後處理特效。
Bloom
輝光(Bloom)表現為高光物體帶有的泛光效果,合理運用可以使平淡的畫面具備影視作品的視覺效果。在引擎的物理光照中,物體表面的反射、折射、自發光等亮度超過了自定義的閾值後,就會形成光溢位的效果。
GTAO
環境光遮蔽(AO/Ambient Occlusion)是讓整個畫面展示接近現實陰影效果的重要手段,Orillusion 提供的 GTAO(Ground-Truth Ambient Occlusion)可以在一定半徑內檢測遮擋關係,讓遮罩陰影的展現更貼合實際場景。
SSAO/GTAO 對比
SSR
反射在日常生活中隨處可見,反射的擬真程度也是渲染結果好壞的重要影響因素之一。對此,Orillusion 提供了螢幕空間反射(SSR) 的能力,以實現真實合理的反射效果。
左側:水面 SSR 倒影 右側:場景內的倒影
粒子系統
現實生活中許多現象或內容是難以使用 Mesh 模型來呈現的,例如常見的火焰、煙、霧、雨雪等,這種場景一般會採用粒子系統來實現。Orillusion 引擎中藉助 Compute Shader 強大的計算能力,既可追求精緻的粒子效果,又能保證較高的效能,甚至還可結合場景探索與 GPU 粒子進行實時互動,以提高視覺特效的上限與質量。
粒子發射器
計算著色器
計算能力是 WebGPU 中最為矚目的能力之一,也是新一代圖形 API 標準中質的飛躍。Orillusion 引擎對原生計算著色器(Compute Shader)進行了封裝,作為計算核心使用,以便連線引擎特有的多類 GPUBuffer,充分利用 GPU 的計算能力。引擎透過 Compute Shader 呼叫 GPU 計算核心,將計算任務或影像處理任務分配到每一個核心中進行平行計算,可以在極短的時間內返回結果。
GPU 計算核心
透過 Compute Shader 我們可以實時改變正在渲染的模型網格、頂點等 attribute buffer,實現物理模擬模擬的能力。
流體模擬
柔體模擬
引擎效能
除了上文中提到的使用 GPU 快取(GPUBuffer)提高基礎效能之外,引擎還針對不同的使用者使用場景進行了三個效能最佳化方案的對比。以下就以繪製 55000 個 box 為場景對比不同渲染方案的效能消耗:
Orillusion 引擎使用結構清晰且高效的 ECS 元件系統為基礎,利用 WebGPU 開放能力,尤其是強大的 GPU 快取與計算核心,對比傳統的 Web 端引擎,在效能,效果和易用性上都有了飛躍式的提升:
- 效能:得益於多種 GPU 快取與全域性連續記憶體機制的使用;
- 效果:透過合理的光照系統、豐富的後處理特效、粒子系統等整體靈活的相互間配合,可以讓三維場景更貼合實際,有效的滿足繁雜業務的展示需求;
- 易用性:不單單受 ECS 元件系統的提升,許多已封裝的 API 同樣帶來了更加便捷的使用方式,可以降低開發者的學習難度和維護成本。
https://www.bilibili.com/video/BV1314y1w7SU/?aid=776765136&ci...
建設開源生態
開源不等於免費,開源更不等於單純的公開程式碼。我們理解開源是一種開放、共享的創新協作模式,它突破物理邊界,透過高效敏捷的溝通和協同,實現技術創新。技術人員可以花更多的精力放到創造性工作上,避免重複造輪子。而且,從整個軟體產業的供應鏈上看,開源已經成為未來資訊科技的主戰場。
最近大家都已經被 ChatGPT 的相關內容刷屏。由於 OpenAI 目前並沒有對最新訓練模型進行開源,導致中國企業如果做出類似的產品,從技術演算法角度來看可能至少需要一到兩年的時間。但是“大模型”的訓練不只是單純的演算法問題,還需要算力和資料的支援,所以這可能導致中國的大模型需要更長的研發迭代時間。
- 算力指的就是 GPU 晶片:大模型訓練需要效率更高的更先進的晶片工藝支援,由於技術封鎖,目前看很難在 14nm 以下的製程上快速實現國產化的突破。
- 資料指的是有價值的高質量資料:國內的企業很多都會把平臺內容當做私有財產,放到自己的 APP 裡,無法公開的被獲取到。海外的主要網際網路內容幾乎都有 Web 版形態,便於透過搜尋引擎進行資料分析。有了大量的原始資料池,才能激勵完成後續優質資料的標註工作。
因此,我們更加相信開放的 Web 生態未來的前景非常光明。
Orillusion 在創立之初就堅定地擁抱開源,開放包容、共創共贏是基本理念。透過開源可以幫助社群更好地瞭解技術,也可以透過社群影響力對技術進行推廣,邀請更多開發者參與。技術社群積極快速的反饋也能幫助我們汲取更多的需求場景輸入,幫助技術迭代更新。我們一直堅信,軟體再優秀,如果沒有構建起良好的生態,沒有開發者和合作夥伴的共建,是很難走得更好更遠的。一個開源產品,社群的文化氛圍和協同創造力,才是區別於他人的根本。在社群共享、共創、共贏,將會激發出無限的創造力,這也是開源最大的魅力!
對於國內來說,開源發展起步較晚,國內的開源基礎軟體需要更多的時間。所有想參與其中的角色,不論是技術人員,開源公司,還是投資人,都需要更大的耐心!
圖源:O3DF
目前,Orillusion 引擎已經得到了 Linux 基金會 O3DF 的認可,即將正式加入 Linux 開源基金會的大家庭。未來,希望藉助國際開源基金會的力量,把我們國人自己的開源專案做大做強,為中國的開源生態貢獻一份力量。
AI 時代的機遇與挑戰
ChatGPT 的發展歷史
ChatGPT 自 2022 年 11 月釋出以來,我們幾乎每天都在感慨變革是如此迅猛,甚至產生了極大的 AI 焦慮,生怕一天不緊跟前沿,就會錯過最新的 AI 技術或者 AI 應用的訊息。當下,可以確定的是,一個全新的 AI 時代,已經進入了展開期。後續的 AI 應用,必然也會層出不窮。
我們先簡單回顧下 ChatGPT 的歷史。
總體來說,由於 OpenAI 成立之初,選擇了 Transformer 做為解碼器,堅持不懈的把標準的語言模型做為預訓練的目標函式,因此開啟了 ChatGPT 的誕生之路。
從 2018 年開始,GPT1 最早在 NLP 任務上使用 pre-training + fine-tuning 的工作正規化。不到一年後,GPT2 在 GPT1 的基礎上,用更大的資料集訓練了一個更大的模型,證明了模型的泛化能力併發掘出了模型 zero-shot 的潛力。2020 年,GPT3 不再追求 zero-shot 的極致表現,而是考慮人類的學習方式,透過極少數樣本 few-shot(in-context learning)和稀疏注意力的模型結構,把訓練資料(45TB)和模型(1750 億引數)提高到 GPT2 規模的 100 倍,暴力出奇跡,達到完成人類難以區分的新聞撰寫的驚豔效果。當然,也出現了不符合人類偏好的模型“偏見”。
2021 年-2022 年,InstructGPT 基於 GPT3,透過有監督微調(SFT)和基於人類反饋的強化學習(RLHF),解決了模型的“偏見”問題,實現了模型回答和人類意圖之間的對齊(Alignment)。同時,OpenAI 以程式碼做為訓練資料,在 GPT3 的某個中間版本上進行另外一個路線的訓練,推出了 Codex 初代模型。
2022 年 4 月-7 月,基於 InstructGPT 和 Codex 初代模型的後續迭代版本,透過進一步的程式碼訓練和微調,創造了第一個 GPT3.5 家族的模型 code-davinci-002,也稱為 Codex。
2022 年 5 月-6 月,基於 code-davinci-002,透過有監督指令微調(supervised instruction tuning)得到了 text-davinci-002。
2022 年 11 月,在 text-davinci-002 的基礎上,透過 RLHF 獲得了兩個不同的模型變體,即 text-davinci-003 和 ChatGPT。前者恢復了一些 text-davinci-002 所犧牲的上下文學習能力,同時提高了 zero-shot 能力。
而 ChatGPT 則透過犧牲上下文學習能力來換取建模對話歷史的能力。2023 年 3 月,進入 GPT4 的時代。它可以理解影像內容,體現了強大的“多模態”特性;有了更強的記憶力,token 數量從 GPT3.5 的 4K 提升到 32K; 有了更強的語言理解能力和推理能力;在各種考試中的表現也是得到了顯著的提高。
GPT發展史
我們 Orillusion 團隊在 2021 年就關注過 GPT3 的技術和能力,當時大模型已經展現出了很好的協作和概念理解能力,但是還不能實現多輪對話。ChatGPT 的出現,補齊了這一短板,而且在其他各個方面都有了大幅度提升。這項革命性的產品,讓我們看到了一個巨大的機會。對於引擎產品品類來說,結合大語言模型的能力,使得引擎可以理解人們的意圖,變的更加“聰明”,是接下來充滿挑戰的必經之路。伴隨著 ChatGPT 的出現,我們認真的進行了長達半年多的思考、試錯和工程最佳化,努力尋找著大模型和 3D 引擎之間的銜接橋樑。
AIGC 在 3D 應用場景的機會
隨著現象級應用 ChatGPT 的出現,LLM 的多模態能力已經在文字和圖片的生成上表現出了非常好的效果,大幅度提高了生產效率,甚至改變了人們的生活習慣。下一個被 LLM 覆蓋的場景,必然是 3D 內容的生成。而且這也是降低 3D 內容創作門檻的最終解決方法。AIGC 在 3D 行業的突破,我們理解為兩種表現形式:生成派和呼叫派。
生成派
比如 ChatGPT,Jasper,Imagen,Dall·E 2,Stable Diffusion,Midjourney 等,都是在文字或圖片的場景裡,從 0 到 1 的直接創造內容。對於 3D 資產,透過 AI 最終也一定可以實現從 0 到 1 的直接創造。從當前 3D 內容生產工作流相容性的角度,考慮到 3D 資產需要應用到渲染管線,3D 資產最流行的 representation 就是 Mesh,除此之外還包括 NeRF,體素,點雲,SDF 等。當下,可以基於 3D 資料集直接訓練 AI 模型,實現 3D Mesh 資產的創作(GET3D),也可以基於 2D 圖片資訊,來生成各種 representation 的 3D 資產(Point·E,Magic3D,Dreamfusion,Phorhum)。雖然目前來看,3D 資產的生成還是處於相對早期的階段,距離成熟商用可能至少需要半年到一年的時間,甚至是更久,這些不同的 representation 最終都會透過 AI,實現從 0 到 1 的直接生成創造。
呼叫派
在 3D 應用場景中,LLM 是否可以學習各種 DCC 軟體(透過教程,案例,程式碼等),直接完成對這些基礎軟體的控制,透過“呼叫”的方式,完成 3D 內容的創作。比如我們是不是未來可以教會 LLM 使用 Unity 引擎或者 3DMax 工具,透過輸入 prompt 指令,就可以直接生成我們需要的 3D 場景或者 3D 模型。LLM 本身更擅長的是對文字內容的理解,而複雜繁瑣的專業性工作,有很多成熟的工具可以完成。我們未來是不是隻需要把這些操作工具的過程交給 AI 來完成,而不再透過人工的操作。這好比我們的大腦只需要完成思考,再透過控制我們的手腳來完成工作一樣。這種呼叫派的邏輯更像是 ChatGPT 當下的外掛機制,如果想購買機票,只需要告訴 ChatGPT 我們的意圖,然後透過外掛呼叫成熟的機票購買服務就好了。
AIGC 在引擎產品的現狀
這兩種派別,我們認為第一種生成派是必然會發生的,就好比文字和影像的 AIGC 一樣,目前大量的研究都集中在此。透過這種方式,我們可以快速的獲得獨立的 3D 資產,從而可以提高 3D 建模的效率,甚至是跳過這個專業的繁瑣的 3D 建模階段。而 3D 場景應用是一個比文字、圖片、影片創作複雜的多的工作流,生成 3D 資產只是這個複雜工作流中的一個環節。比如,一個 3D 應用,需要策劃給出方案,先完成原畫的設計,建模師再完成建模,然後進入到 3D/遊戲引擎中搭建更復雜的場景,編寫互動邏輯,最後釋出應用。假設生成派可以實現 3D 資產從 0 到 1 的創造,那在 3D 應用場景中,AI 又能如何加速傳統的工作流呢?如果真正想實現 3D 應用場景全鏈路的 AI 化,我們認為呼叫派所覆蓋的這些 DCC 工具,尤其是可以完成複雜場景搭建和邏輯編寫的 3D 引擎工具,都存在巨大的革命性機會。
而且,在這個革命性機會到來的過程中,由 3D 引擎公司接入 AI 能力來實現會更為順暢。因為這件事情的本質是垂直行業對於 AI 能力的應用,這需要團隊深入瞭解 3D 引擎框架,能力和特徵,也需要很強的 know how 經驗。怎樣讓 AI 理解 3D 場景,快速學會 3D 引擎工具的功能,完成 3D 場景的搭建和 3D 應用的開發,就變的至關重要。
Roblox
Spline
當 ChatGPT 出現之後,已經有很多 3D 引擎公司表達了對於 AIGC 的認可,也出現了很多官方以及第三方的 Demo 展示,例如 Roblox,Unity,Unreal,Spline 等。雖然這個過程可能會相對漫長,也存在巨大挑戰,但是 AIGC 在加速 3D 應用場景的創作上,已經成為了整個行業的共識。
AIGC 在 Orillusion 引擎的應用
AIGC 一直是我們 Orillusion 團隊關注的重點。在引擎設計之初,我們就開始考慮 AI 對於引擎的適配問題。在 ChatGPT 出現以後,LLM 的多模態表現,對語言內容的理解,包括上下文的邏輯推理能力,都實現了巨大的突破,這讓我們感到格外興奮!接下來,唯一的問題就是怎樣教會 LLM 去理解 3D 場景,學習 Orillusion 引擎的功能,最終完成 3D 應用的創作。這恰恰是我們擅長,且必須要做的事情。
https://www.bilibili.com/video/BV1FV4y1o7ib/?aid=867712777&ci...
這件事情的 Hard Core 有三個方面:
- 基於 WebGPU 標準的 Orillusion 引擎,這是我們的重要核心技術之一。3 年前,團隊開始關注 WebGPU 的發展,至今經歷了兩年多的 WebGPU 引擎研發工作,今天以開源的形式正式和大家見面。未來,我們期待和眾多開發者一起努力,共建國人自己的 Web3D 引擎底層生態。
- 如何教會大語言模型,理解 3D 場景,學會使用 Orillusion 引擎,來構建 3D 場景應用。透過標準化結構化的引擎功能封裝,加快大語言模型的學習速度和準確度。基於資料反饋機制,對大模型進行再次 finetune,使其對 3D 場景和引擎功能的理解越來越準確。
- 如何實現 AI 能力在 3D 場景中的擴充套件。我們都知道 ChatGPT 本身是語言模型,要擴充套件能力就需要外掛幫忙。借鑑這種外掛思路,我們也在垂直的 3D 場景中,基於 Orillusion 引擎實現了構建 3D 空間能力的外掛化擴充套件方式,開發者可以透過外掛,擴充更加複雜的 3D 應用開發能力。
基於外掛的擴充套件能力,如果有更多的開發者參與,就會實現更多的垂直化外掛功能,也就可以滿足更多的使用者需求。而更多的使用者,就可以產生更多的資料反饋,從而為 AI 模型帶來更大的最佳化空間。當然,這個正向飛輪最終還要依靠廣大的開發者和我們共同努力。因此,我們堅持開源,選擇擁抱生態!
基於 WebGPU 標準的 WebLLM 專案,深度挖掘了 WebGPU 的潛力,最近得到了大量的關注。那未來“訓練在雲,推理在端”的 AI 框架,是不是也更加值得想象呢?
相關閱讀:SegmentFault AIGC Hackathon 2023 線上駭客馬拉松圓滿收官,見證 40 個創新應用的誕生!