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