UE5像素流:比較 HTML5、WebGL 、像素流送
將虛幻引擎內(nèi)容流送到多個平臺
比較 HTML5、WebGL 和像素流送
| 簡介
常見的辦法是,首先確定目標(biāo)受眾可能使用的性能最低的平臺,然后確定受眾能夠接受的質(zhì)量級別,最后以此為基準(zhǔn)開發(fā)內(nèi)容。然而,這種方法的弊端是會普遍降低所有最終用戶的體驗(yàn)。
而且在這類部署中,負(fù)責(zé)為最終用戶顯示實(shí)時內(nèi)容的設(shè)備同時還需下載相關(guān)的數(shù)據(jù)和代碼,并將結(jié)果渲染到屏幕上。將數(shù)據(jù)下載到設(shè)備中容易產(chǎn)生多種問題,比如為了減小下載文件的尺寸或者加快下載速度,有時不得不犧牲一些畫面質(zhì)量。
| 發(fā)布內(nèi)容時面臨的挑戰(zhàn)
在一些基于 WebGL 或 HTML5 技術(shù)的傳統(tǒng)或現(xiàn)代解決方案中,顯示內(nèi)容的真實(shí)程度和交互體驗(yàn)取決于消費(fèi)者的設(shè)備性能,特別是該設(shè)備的硬件性能、顯示機(jī)制和操作系統(tǒng)。這就意味著如果要讓內(nèi)容盡可能地觸及到更多用戶,就要以性能最低的設(shè)備為基準(zhǔn)開發(fā)應(yīng)用程序,并在所有其它平臺上共享該應(yīng)用,或者針對各個平臺開發(fā)出多個版本的應(yīng)用程序,以便滿足不同平臺用戶的需求。
在創(chuàng)建流送解決方案時,開發(fā)人員面臨的一大挑戰(zhàn)是如何通過多個通信渠道交付內(nèi)容,并且無論最終用戶使用哪種設(shè)備,都能保證畫面的真實(shí)感以及交互性,并忠實(shí)還原品牌的外觀和感受。要實(shí)現(xiàn)這一目標(biāo),就需要將共享應(yīng)用程序本身與運(yùn)行它的高端硬件分離開來,讓用戶的顯示設(shè)備只負(fù)責(zé)顯示畫面。
用戶體驗(yàn)的性能和因素
播放速度——內(nèi)容本身可能需要針對實(shí)時性能進(jìn)行優(yōu)化。首先,你需要界定這些應(yīng)用程序的受眾可接受的播放速度范圍。雖然讓用戶產(chǎn)生沉浸感的公認(rèn)標(biāo)準(zhǔn)幀率為 60FPS,但有些應(yīng)用程序可能只需要 5FPS,而其他應(yīng)用程序則可能需要 90FPS。
圖像質(zhì)量——用戶體驗(yàn)到的畫面質(zhì)量和真實(shí)程度,通常取決于應(yīng)用程序端的內(nèi)容設(shè)置(包括實(shí)時播放相關(guān)因素)、編碼質(zhì)量和硬件的 GPU 性能。畫面質(zhì)量預(yù)期以及成本考量會影響商業(yè)用例的實(shí)現(xiàn)方式,從而確定該設(shè)置方案的最終輸出效果。
技術(shù)因素
用戶負(fù)載——用戶數(shù)量和應(yīng)用程序的復(fù)雜程度將決定單個托管實(shí)例能夠發(fā)送哪些內(nèi)容,以及需要何種負(fù)載平衡來響應(yīng)并發(fā)用戶。一個擁有高真實(shí)度和完全交互式體驗(yàn)的車輛配置器,可能需要一萬個擁有相同設(shè)置的實(shí)例。所需服務(wù)器的數(shù)量取決于首次交互發(fā)生時所需的速度,其往往是一項(xiàng)關(guān)鍵因素。
流送帶寬——如果目標(biāo)用戶使用某個特定平臺,比如移動設(shè)備,那么你可能就需要準(zhǔn)備好大小不同的視頻流送內(nèi)容,以保證流送內(nèi)容不會超出該平臺的最大帶寬限制。
更新——如何部署更新并修復(fù)錯誤?是替換整個應(yīng)用程序,還是想辦法實(shí)時更新內(nèi)容?你還需要考慮如何在大量實(shí)例上大規(guī)模更新內(nèi)容。
安全性——使用用例首先會受到主機(jī)和客戶端之間的訪問情況和安全性因素的影響。如果系統(tǒng)要求對設(shè)計(jì)審查中的保密數(shù)據(jù)進(jìn)行分享和探討,或者必須在一定時間范圍內(nèi)部署新信息并且要稍后才能訪問,那么就有必要在網(wǎng)絡(luò)或訪問站點(diǎn)上實(shí)施安全措施。
指標(biāo)——如果用戶行為和場景統(tǒng)計(jì)數(shù)據(jù)屬于關(guān)鍵績效指標(biāo),那么你就需要對需要跟蹤和保存到分析軟件的事件進(jìn)行定義、激活和關(guān)聯(lián)。
| 不同發(fā)布方案之間的比較
Epic Games 最初在為虛幻引擎(UE4)尋求內(nèi)容發(fā)布方案時,開發(fā)團(tuán)隊(duì)的想法是在現(xiàn)有技術(shù)中尋找方案并以此為基礎(chǔ)進(jìn)行開發(fā)。在分析了 WebGL 和 HTML5 這兩種方案后,Epic 決定創(chuàng)建一個全新的像素流送插件,以此作為新的解決方案。
WebGL
WebGL 基于 OpenGL ES(OpenGL 的衍生版本,專用于嵌入式系統(tǒng))實(shí)現(xiàn),OpenGL 專為智能手機(jī)、平板電腦、視頻游戲主機(jī)和掌上電腦等嵌入式系統(tǒng)設(shè)計(jì)。WebGL 通過 HTML5 的 Canvas 元素工作,該元素可用于在網(wǎng)站頁面上繪制圖形。
WebGL 支持基于 GPU 加速的物理模擬、圖像處理和效果。
WebGL 的部署內(nèi)容包含兩部分:
由 JavaScript 編寫的控制代碼
由 OpenGL ES 著色器語言(OpenGL ES SL)編寫的著色器代碼
為 WebGL 編寫內(nèi)容
PlayCanvas——PlayCanvas 編輯器是一個高級WebGL 編輯環(huán)境,其本質(zhì)上是一種 WebGL 游戲引擎。JavaScript 可用于編寫 2D 或 3D 圖形模擬。所有的代碼都采用 HTML5 編寫;作為一種在標(biāo)準(zhǔn)上兼容多種平臺的語言, HTML5 能夠用于所有主流瀏覽器和設(shè)備。
Sketchfab——Sketchfab 是一個用于分享和發(fā)布 3D 內(nèi)容的在線商城。3D 查看器無需安裝插件就能部署在瀏覽器上,并且支持 VR 和 AR 功能。所有內(nèi)容必須托管在 Sketchfab 的服務(wù)器上并從那里發(fā)布內(nèi)容。
WebGL 的局限性
此外,WebGL 的顯示效果完全依賴于客戶端瀏覽器的功能以及客戶端本身的硬件性能;圖像質(zhì)量則取決于瀏覽器的顯示能力。數(shù)據(jù)必須下載到客戶端中,而下載時間決定了用戶必須等待一段時間才能開始體驗(yàn)。如果用戶的體驗(yàn)內(nèi)容十分復(fù)雜并且包含大量數(shù)據(jù),那么客戶端還必須保證具有足夠的數(shù)據(jù)儲存空間。
如果數(shù)據(jù)十分敏感或者需要保密,那么還需要在客戶端使用額外措施以保證數(shù)據(jù)安全。
*WebGL 部署中的數(shù)據(jù)流
如果 WebGL 內(nèi)容需要與其他途徑生成的內(nèi)容混合使用,那么 WebGL 的畫面質(zhì)量將成為用戶體驗(yàn)的界定標(biāo)準(zhǔn)。如果考慮到其它一些平臺,則系統(tǒng)必須至少維持兩套數(shù)據(jù)、著色器模型和創(chuàng)意設(shè)置,以便用于兩種不同的終端通道。
關(guān)于指標(biāo),可以通過網(wǎng)站的常用通道收集登錄和會話時間數(shù)據(jù)。
盡管有其局限性,但 WebGL 作為一種易于部署的方案,十分適合那些數(shù)據(jù)量小、安全要求低以及畫質(zhì)要求不高的用戶體驗(yàn)。為了支持這類體驗(yàn),Epic 正在為虛幻引擎開發(fā)一種能夠直接從 UE4 導(dǎo)出到 WebGL 的選項(xiàng),導(dǎo)出內(nèi)容包括 glTF 格式的文件以及一個用于更換著色器的支持庫。我們計(jì)劃在 2020 年第一季度推出該選項(xiàng)。
針對擁有更高要求的虛幻引擎體驗(yàn),Epic 會繼續(xù)研發(fā)更加合適的解決方案。
HTML5
HTML5 的局限性
與 WebGL 一樣,這類方案要求系統(tǒng)維持兩套數(shù)據(jù)標(biāo)準(zhǔn),并且無法保證用戶在查看原始內(nèi)容和發(fā)布內(nèi)容時,能夠獲得一致的用戶體驗(yàn)。如果要更新和維護(hù)發(fā)布內(nèi)容,必須完全替換它,這對于那些需要頻繁更新的內(nèi)容來說非常麻煩。此外,HTML5 和 WebGL 擁有相同的安全性考量。
虛幻引擎內(nèi)置了將項(xiàng)目發(fā)布到 HTML5 平臺的工具。不過,從 UE 4.24 開始,Epic 把 HTML5 的支持功能遷移到了GitHub,只通過社區(qū)形式支持該平臺,所以官方將不再提供支持。
像素流送
Epic 認(rèn)為,一個理想的跨平臺交互式實(shí)時內(nèi)容發(fā)送系統(tǒng)應(yīng)該包括以下特性:
主機(jī)可以向客戶端流送像素,同時客戶端無需下載任何數(shù)據(jù)
高端和低端用例共享一組數(shù)據(jù)設(shè)置
獨(dú)立于平臺的部署
所有平臺和設(shè)備的質(zhì)量都是確定性的
高真實(shí)度和高質(zhì)量
能夠展示虛幻引擎的所有特性
簡單明了,易于維護(hù)和更新
體驗(yàn)剛開始就能快速訪問內(nèi)容
在部署前后和部署期間保護(hù)數(shù)據(jù)和設(shè)置的安全
能為不同用例提供各種潛在配置
具備可延展性;可以通過單臺服務(wù)器或云部署
能夠捕獲用戶和會話的數(shù)據(jù)指標(biāo)
由于數(shù)據(jù)保存在主機(jī)上,并且只有像素被流送到查看設(shè)備上,所以諸如像素流送這類流送解決方案本質(zhì)上要比客戶端下載方案更快速、更安全。此外,用戶會話數(shù)據(jù)可以在 UE4 中捕獲以滿足任何指標(biāo)需求。
*位于啟動器界面中的像素流送插件
WebRTC 協(xié)議
要求
借助 WebRTC 協(xié)議,像素流送插件可以在主機(jī)服務(wù)器上與網(wǎng)絡(luò)中的服務(wù)器或客戶端進(jìn)行通信。最簡單的方式就是通過本地 IP 地址和網(wǎng)絡(luò)端口 80、8124 和 8888 訪問本地主機(jī)。
顯卡
英偉達(dá)的 GPU 自從 Kepler 架構(gòu)開始都包含一個名為 NVENC 的硬件編碼器,它能為視頻編碼提供獨(dú)立于圖形性能的全面硬件加速功能。通過將涉及編碼的復(fù)雜計(jì)算任務(wù)轉(zhuǎn)移到 NVENC 上,圖形引擎和 CPU 將能夠?qū)W⒂谄渌僮鳌?/span>NVENC 使得以下工作成為可能:
在不使用 CPU 的情況下,以高質(zhì)量和超低延遲對游戲和應(yīng)用程序進(jìn)行編碼和流送
為歸檔、OTT 流送和網(wǎng)絡(luò)視頻提供極高質(zhì)量的編碼
單次流送編碼的功耗極低(瓦特/流送)
隨著行業(yè)標(biāo)準(zhǔn)的不斷發(fā)展以及 GPU 和驅(qū)動程序的不斷普及,虛幻引擎 4.24 版本將支持采用 AMD 顯卡進(jìn)行像素流送。我們將持續(xù)探索其他硬件支持方案,以便滿足未來版本的需要。
*硬件編碼以及像素流送的生成過程。NVENC 編碼器通過緩沖區(qū)與CPU 和CUDA 核心協(xié)同工作并生成像素流,然后通過CPU 發(fā)送到分發(fā)網(wǎng)絡(luò)中。
像素流送的用例設(shè)置
注意,如果主機(jī)和客戶端因網(wǎng)絡(luò)防火墻而無法通信,你可能需要搭建 STUN(NAT 的會話遍歷實(shí)體)服務(wù)器和TURN(使用圍繞 NAT 的中繼遍歷)服務(wù)器為主機(jī)和客戶端建立通信。由于常規(guī)限制,某些客戶端的防火墻可能會禁止訪問或接收主機(jī)服務(wù)。如遇到這種情況,STUN/TURN 服務(wù)器會嘗試各種合理方法來為主機(jī)和發(fā)出請求的客戶端建立有效通信線路。借助這種方式,STUN/TURN 服務(wù)器能夠?yàn)榉阑饓Ρ澈蟮挠脩羟宄系K,否則用戶每次需要使用流送應(yīng)用程序時,都必須聯(lián)系系統(tǒng)管理員以獲得特殊權(quán)限。
| 局域網(wǎng)中的協(xié)作
| 溝通、審核、展示
| 遠(yuǎn)程協(xié)作設(shè)計(jì)、共享體驗(yàn)、消費(fèi)者應(yīng)用程序、配置器
每個堆棧都需要一個唯一的標(biāo)識符和端口來控制體驗(yàn)。許多消費(fèi)級顯卡最多只能同時運(yùn)行兩個編碼器,從而限制了電腦上可以運(yùn)行的實(shí)例數(shù)量。對于專業(yè)級顯卡來說,例如英偉達(dá)的 Quadro 或 Tesla 系列,或者基于云的GPU 實(shí)例(AWS)則沒有這些限制。
匹配器會負(fù)責(zé)將每個請求者重定向至屬于它的信令和網(wǎng)絡(luò)服務(wù)器,從而為客戶端及其 WebRTC 代理服務(wù)器建立連接。只要用戶在服務(wù)器上一直保持活躍狀態(tài),匹配器就會不斷為用戶流送內(nèi)容。匹配器組件可以在虛幻引擎以及其他服務(wù)器組件中找到。如需了解更多信息,請?jiān)L問虛幻引擎像素流送文檔,查閱創(chuàng)建主機(jī)和網(wǎng)絡(luò)連接指南專題中的“配對時的多個完整堆?!?/strong>一節(jié)。
| 總結(jié)
在當(dāng)前的主機(jī)環(huán)境中,WebGL 的部署成本低廉,并且能夠滿足多數(shù)簡單用例。Epic 正在為虛幻引擎開發(fā)一個WebGL 導(dǎo)出器,不過它只適用于實(shí)現(xiàn)一些簡單效果。
基于 HTML5 的解決方案則很難帶來商業(yè)利潤,并且該領(lǐng)域的開發(fā)尚未涉及商業(yè)用途。這些方案的部署將依賴于自定義開發(fā),并且重點(diǎn)將位于目標(biāo)用例和應(yīng)用程序上。
像素流送滿足了在體驗(yàn)時代流送內(nèi)容所需考慮的所有用戶和技術(shù)因素,其重點(diǎn)是讓用戶在享受到最佳內(nèi)容的同時又能獲得最真實(shí)的內(nèi)容體驗(yàn)。像素流送可以分享高端體驗(yàn),而且無需擔(dān)心客戶端或平臺的限制;今后它將被用于更為復(fù)雜的平臺布局,并且這些平臺布局將能夠包含各種用于離線或在線內(nèi)容的渠道。
| 相關(guān)內(nèi)容
如需進(jìn)一步了解 UE4 中的像素流送設(shè)置方法,請參閱以下鏈接中的設(shè)置示例:
https://launcher-website-prod07.ol.epicgames.com/ue/learn/pixel-streaming-demo
https://docs.unrealengine.com/en-US/Resources/Showcases/PixelStreamingShowcase/index.html
轉(zhuǎn)載自:數(shù)字孿生UnrealEngine 作者:石幾衣束