網(wǎng)站性能檢測評分
注:本網(wǎng)站頁面html檢測工具掃描網(wǎng)站中存在的基本問題,僅供參考。
面數(shù)量
看虛幻引擎技術(shù)大神分享燒腦干貨《克服VR眩暈之幀數(shù):提升UE4內(nèi)容實(shí)時(shí)渲染效率》 效率視頻課程
在10月24日精彩落幕的2015創(chuàng)領(lǐng)發(fā)現(xiàn)VRDAY的活動中,主辦方創(chuàng)領(lǐng)發(fā)現(xiàn)(UCCVR)有幸邀請到了虛幻引擎的原廠技術(shù)大牛來現(xiàn)場與各位VR相關(guān)的制作人/開發(fā)者進(jìn)行面對面的交流與分享。下面讓我們來仔細(xì)解讀一下該場分享的技術(shù)內(nèi)容。 ?VR已經(jīng)成為了當(dāng)今最火熱的一個(gè)話題,帶上頭盔之后,從此進(jìn)入一個(gè)奇妙的世界,在這里你不再是觀眾,你參與這個(gè)世界發(fā)生的每一件事件。整個(gè)世界從此與眾不同。在賽道上飛馳,在戰(zhàn)場上縱橫。 但是生理機(jī)制讓我們的大腦在身體并沒有移動,而視覺在不斷告訴我正在飛速前行的迷惑中產(chǎn)生了暈眩。如何解決因?yàn)閂R而產(chǎn)生的眩暈,就成為每一位設(shè)計(jì)師需要面對的問題。 引起VR眩暈有很多原因,比如設(shè)計(jì)上的,技術(shù)上的。渲染的幀數(shù)高低必定是其中一個(gè)最主要的原因之一。關(guān)于UE4里對VR內(nèi)容的優(yōu)化方法和思路大部分是和傳統(tǒng)的3D游戲優(yōu)化是一致的,有部分是VR尤其相關(guān)的。接下來就以O(shè)culus為平臺和大家一起分享一下在UE4里常見內(nèi)容的一些設(shè)置和優(yōu)化的思路和方法。 首先我們來看一個(gè)優(yōu)化過程的實(shí)例,先有個(gè)大概的了解。打開一個(gè)UE4下載的項(xiàng)目,particlecave,VRpreview,帶上眼鏡就能體驗(yàn)了,對,就這么簡單,雖然說這個(gè)并不是一個(gè)針對VR的項(xiàng)目。 這里做了一些簡單的設(shè)置:?1.發(fā)現(xiàn)攝像機(jī)是以預(yù)設(shè)軌道在飛,而且明顯感覺幀率不高,哦,好暈。為了比較方便衡量接下來優(yōu)化,我做了一些攝像機(jī)的設(shè)置,讓攝像機(jī)開始游戲后固定在一個(gè)我認(rèn)為幀數(shù)最低的畫面。 2.確保幀數(shù)沒有被限制住,關(guān)閉垂直同步,把最高幀數(shù)限制上限提高好了,再run一下,固定住了,轉(zhuǎn)轉(zhuǎn)頭可以,真的挺卡的。 再接個(gè)命令證實(shí)一下,最直接和GPU渲染效率有關(guān)的就是分辨率。 HMDSP10054FPS?幀數(shù)立馬提高不少,果然是GPU渲染瓶頸! 降低渲染品質(zhì)?Adjustscalabilitytomedium72FPS?成功了?還沒有哦,這個(gè)太暴力了,這個(gè)肯定不是最優(yōu)的優(yōu)化結(jié)果了。因?yàn)榭隙ㄓ行┛梢赃M(jìn)一步做大量的優(yōu)化,有些和視覺相關(guān)比較大的調(diào)整可以提高質(zhì)量。而非粗暴的都調(diào)低了,那接下來就得找原因了。 打開GPUprofiling:(Ctrl+Shift+,)?看下最大的GPU開銷在哪里: Basepass:DeferredDecals Lighting:ReflectionEnvironment: Translucency:Postprocessing: 從最大開銷的幾個(gè)點(diǎn)入手:?BASEPASS:敲入幾個(gè)渲染選項(xiàng)命令行:?r.Earlyzpass1:增加drawcalls和一部分GPU的消耗,但大大降低basepass的消耗?關(guān)閉了一些不需要的PP效果?一套最優(yōu)POP設(shè)置組合: Postprocessingsetting: Scenecolor; Fringeintensity0 Grainintensity0 Colorgradingintensity0 Bloomsetting LPV0 Ambientocclusion0 DOFMethodGaussian,其他參數(shù)全部0 Motionblurall0 AAFXAA SSR0MAXroughness0.01 Ambientcubemap0 再VRpreview,?嗯,還是75,當(dāng)然了,DK2上頂格是75,再優(yōu)化看不出效果?13.39ms75FPS? 把品質(zhì)調(diào)高成highScalabilityhigh,還是75,哈哈,沒問題!?現(xiàn)在算優(yōu)化完了吧?其實(shí)還可以再優(yōu)化,這時(shí)候的優(yōu)化就是以盡量提升畫質(zhì)但不降低幀數(shù)為目標(biāo)。? 看看哪些還可以優(yōu)化的?當(dāng)然有!之前的Translucency花費(fèi)好高。?Viewmode:shadecomplexity好紅,一堆overdraw?Decal的花費(fèi)也很高,Statscenerendering,decalsinview?環(huán)境反射的花費(fèi)很高:選中spherereflectioncapture,看一下總共有幾個(gè),觀察他們影響范圍是否重疊嚴(yán)重。 ? Vertexintensity:好密啊。高密度的三角面幾乎看上去就像一個(gè)實(shí)體了,一個(gè)三角面的大小在屏幕上的面積小于2*2個(gè)像素就會極大的增加開銷。 還有Particle。?現(xiàn)在基本上已經(jīng)定位到可執(zhí)行層面的原因了,一些原因也已經(jīng)通過可接受的渲染參數(shù)調(diào)整解決了;另外一些就必須要artist來優(yōu)化Assets本身了。哪些工作最快,質(zhì)量損失最小,能夠換其他更能提升品質(zhì)的選項(xiàng)。 啟示他們并不需要這么多面,assets的優(yōu)化需要更多的時(shí)間。把scaleability有些選項(xiàng)提升到EPIC,當(dāng)然他們并不是全部。 一些引起DRAWCALL數(shù)量多的原因: 同屏看到的Actor太多,如果材質(zhì)復(fù)雜這個(gè)因素還會加成。合并Actor,尤其是中遠(yuǎn)處 材質(zhì)ID太多(orSection;Meshelements)。重用材質(zhì)貼圖,盡量把同一材質(zhì)物體合成為一個(gè)物體 每個(gè)actor上的feature太多。主要是增加投影的屬性,增加customdepth的屬性 太多燈光投影(這里投影的消費(fèi)來自于需要計(jì)算哪些物體需要被投影) MESHDRAWCALL往往是個(gè)大頭,MESHID的數(shù)量可以在STATISTICS統(tǒng)計(jì)可以很方便的查看,從經(jīng)驗(yàn)判斷哪些資源制作不合理。 ??關(guān)于ACTOR設(shè)置feature會增加DRAWCALL數(shù)的是投影和customdepth,可以通過一些工具來檢查這些設(shè)置。使用propertymatrix來過濾,檢查,并修改。? ?另外一個(gè)經(jīng)常使用的查找原因的方法排除法:?通過隱藏各種元素,尋找哪個(gè)是導(dǎo)致DRAWCALL數(shù)量的大頭?記得隱藏HUD,有的時(shí)候HUD也是個(gè)大頭之一。 Showflag.slate1?如果是GPU瓶頸,最快速的驗(yàn)證方式就是改變分辨率,降低分辨率可以極大提高幀數(shù)。為了抵消畸變糾正而產(chǎn)生的圖像模糊,或者分辨率的丟失,在渲染的的buff里往往是實(shí)際屏幕尺寸的120-130%,這樣增加了圖像的銳利度,但降低了渲染的速度。 ?HMDSP全稱是HMD的screenpercentage,這個(gè)參數(shù)就是來修改渲染buff的尺寸的,HMDSP120是默認(rèn)值,改成100看看。 ?如果像剛才例子看到的,幀數(shù)有大幅度的提高,那就是GPU負(fù)擔(dān)太大的問題了,如果分辨率的改變對于幀數(shù)影響不大,很有可能是因?yàn)槊嫣嗔恕?? 對這些內(nèi)容重點(diǎn)做檢查,看看有沒有超標(biāo)的現(xiàn)象出現(xiàn): 分辨率 HMDSP 投影貼圖 面數(shù)/點(diǎn)數(shù)(燈光的多少,陰影的設(shè)置,多少物體) LOD,關(guān)閉shadow,燈光屏幕面積 面數(shù)密度太高,高到一個(gè)三角面小于2*2的像素,這個(gè)往往發(fā)生在遠(yuǎn)處物體 點(diǎn)處理,點(diǎn)太多 點(diǎn)動畫的shader太復(fù)雜 tessellation太復(fù)雜 太多UV,太多SG 查看staticmesheditor里點(diǎn)和面數(shù)的差別是否大 點(diǎn)沒有合并等 viewcost(HZBocclusionculling) Precumputedvisibilityvolume ScenecostGPUparticlesimulation 材質(zhì)復(fù)雜度 qualityswitch,sin,pow,cos,pide,Noise很費(fèi) 由于Texture太多,太大Texturecaching反復(fù)的pageinandoutof顯存 遮擋的culling計(jì)算 Precumputedvisibilityvolume 延遲燈光 當(dāng)使用lightingfunction,IES,接受投影,區(qū)域光,復(fù)雜shadingmodes的時(shí)候會變得更貴。?反射ssr有問題,關(guān)掉。后期,AO,很費(fèi)。? ?知道哪里有問題了,接下來就可以著手行動了,但之前做個(gè)目標(biāo)規(guī)劃還是可以事半功倍的。最小化圖像質(zhì)量妥協(xié),是一種有的放矢的妥協(xié)策略。比如高質(zhì)量的陰影對于高品質(zhì)的抗鋸齒而言對于最終項(xiàng)目實(shí)際的表達(dá)效果次要。減小陰影品質(zhì)來換取高品質(zhì)AA就是一種有的放矢的妥協(xié)策略。因此盡量大的減小不是非常關(guān)心的渲染品質(zhì)部分,增加更可見的渲染品質(zhì)部分。 ?從容易做起,從開關(guān)一些渲染選項(xiàng),品質(zhì)參數(shù)調(diào)整,到直接刪東西,優(yōu)化一個(gè)用到幾百次的物件,這些都是立竿見影的方式,這樣可以做允許的時(shí)間計(jì)劃內(nèi)完成目標(biāo),如果有更多時(shí)間和預(yù)算可以對相對低性價(jià)比的。目標(biāo)75幀是必須的,不要說68,70,都不行,必須75,做實(shí)際體驗(yàn)中有很大區(qū)別。? 最常見的問題所在: 測試環(huán)境不合適,燈光沒有build Actor或者材質(zhì)ID太多 面太多,沒有任何的LOD設(shè)置 燈光使用沒有節(jié)制:各種動態(tài)投影,燈光類型隨意 沒有合理的設(shè)置CULL的條件 透明太多 Postprocess太高級了 這些原因又互相影響,一方面的增加也會增加另外方面的開銷:? 其他一些VR的特有行為: VR需要畸變色差糾正 VR需要雙屏 VR需要更大的渲染分辨率 VR需要傳遞傳感器信息 比如對于Oculus部分是在驅(qū)動層級做掉了,比如如何糾正畸變,如何雙屏,如何傳遞傳感器信息。對于傳感器信息和視頻匹配的準(zhǔn)確性,以及渲染的屏幕覆蓋率,在UE4里是可以根據(jù)需要來修改的,除了這些,其他就和以往的優(yōu)化思路一致了。 創(chuàng)建測試環(huán)境,找原因: Testinginastableenviroment runStandalonegame usepauseorslomo0.001topreventrandomnumbers Measuringfewtimes 確保幀數(shù)不封頂 s.Vsync0 s.MaxFPS 了解瓶頸 GPU瓶頸 profileGPU(ctol+shift+,) 分辨率 HMDSP 投影貼圖 面數(shù)/點(diǎn)數(shù)(燈光的多少,陰影的設(shè)置,多少物體) LOD,關(guān)閉shadow,燈光屏幕面積 面數(shù)密度太高,高到一個(gè)三角面小于2*2的像素,這個(gè)往往發(fā)生在遠(yuǎn)處物體 點(diǎn)處理,點(diǎn)太多 點(diǎn)動畫的shader太復(fù)雜 tessellation太復(fù)雜 太多UV,太多SG 查看staticmesheditor里點(diǎn)和面數(shù)的差別是否大 點(diǎn)沒有合并等 viewcost(HZBocclusionculling) Precumputedvisibilityvolume ScenecostGPUparticlesimulation 材質(zhì)復(fù)雜度 qualityswitch,sin,pow,cos,pide,Noise很費(fèi) 遮擋的culling計(jì)算 Precumputedvisibilityvolume 延遲燈光 當(dāng)使用lightingfunction,IES,接受投影,區(qū)域光,復(fù)雜shadingmodes的時(shí)候會變得更貴 反射ssr有問題,關(guān)掉,后期AO,很費(fèi) cup瓶頸,CUPGAME瓶頸 statgame AI復(fù)雜度 BP raycast 物理 內(nèi)存分配 CUPRENDER瓶頸 statscenerendering 材質(zhì)ID太多 重用材質(zhì)貼圖,盡量把同一材質(zhì)物體合成為一個(gè)物體 actor太多,如果材質(zhì)復(fù)雜這個(gè)因素還會加成 合物體,尤其是中遠(yuǎn)處 每個(gè)actor上的feature太多,比如增加投影的屬性,增加customdepth的屬性 太多燈光投影(這里投影的消費(fèi)來自于需要計(jì)算哪些物體需要被投影)? 找到瓶頸的方法: statunit disable一些stuff,然后看效率上的區(qū)別 一些可調(diào)的showflag 開關(guān)屏幕反射 開關(guān)AO 開關(guān)AA 開關(guān)bloom 開關(guān)延遲燈光 開關(guān)燈光類型 開關(guān)動態(tài)陰影 開關(guān)GI 開關(guān)后期 開關(guān)環(huán)境反射 開關(guān)折射 開關(guān)貼畫 開關(guān)半透明 開關(guān)tessellation viemode ProfileGPU ProfileCPU statgame statscenerendering Profiler? 后期優(yōu)化首選項(xiàng): Scenecolorfringe; ambientcubemap, imagebasedlensflares; LPVoff; Grainintensity, DOFoff, ssroff, orroughness0.01; Motionbluroff 最后選擇的參數(shù)需要應(yīng)用到DEVICEPROFILES里或者BP里:? ?減小shader的instruction的數(shù)量:?減少Texturesample的數(shù)量:把經(jīng)常使用到同一個(gè)物體上的Pattern合在一張貼圖上;去掉對質(zhì)量影響很小的貼圖,比如Specular,AO在實(shí)際情況中平衡來使用qualityswitch,sin,pow,cos,pide,Noise,多向量的計(jì)算總是大于單向量的計(jì)算。 ??UE4里由于使用了延遲燈光,所以燈光的優(yōu)化比前向渲染方便的多。最快速最有效的方法:使用靜態(tài)光源。如果使用的是動態(tài)光減小Lightingcull,半徑,衰減,ZINTERSSECTION,cone大小角度??傊M量減少重疊。? 投影的開銷最大往往不是來自于pixelshader,而是來自于被投影的mesh面數(shù)太多,還會被燈光數(shù)量,投影物體數(shù)量放大。?關(guān)閉投影的燈光;減小范圍或張角;減面,加LOD?r.Shadow.MaxResolution? 創(chuàng)造性作假: 三角面: 遠(yuǎn)處mattinpaiting 投影面片,畫在貼圖上 一個(gè)作品的優(yōu)化不是一朝一夕的事情,需要確定目標(biāo)配置:確定最低配置,配置范圍小,這樣的優(yōu)化才更有針對性,并且學(xué)會在開闊的視野在設(shè)計(jì)時(shí)需要巧妙的避免不必要的內(nèi)容,學(xué)會如何制定Budget:質(zhì)量優(yōu)先驅(qū)動;快速原型制作;分析制定。 對內(nèi)容制作者前期的培訓(xùn)花費(fèi)是值得的,完成這些工作之后,一個(gè)高品質(zhì)的VR作品就會誕生。 2015創(chuàng)領(lǐng)發(fā)現(xiàn)VR/AR行業(yè)大賽,舉辦的宗旨是為了更好的尋找和發(fā)現(xiàn)優(yōu)秀的VR/AR制作人/開發(fā)者,我們將圍繞著與開發(fā)相關(guān)的任何需求,打造國內(nèi)最專業(yè)的VR/AR社區(qū)與孵化平臺。大家可以登錄www.uccreate.com官方網(wǎng)站進(jìn)行提前報(bào)名,不限于Demo或者成品,大賽截止時(shí)間安排在于明年3月,感興趣的伙伴們可以抓緊啦!
優(yōu)化四大關(guān)鍵功能 UCloud CDN產(chǎn)品全面升級 流量視頻課程
經(jīng)過一年多的產(chǎn)品迭代與內(nèi)部架構(gòu)優(yōu)化,UCloud內(nèi)容分發(fā)網(wǎng)絡(luò)CDN產(chǎn)品(以下簡稱“UCDN”)于近日完成全面升級,已支持http2.0,并且在國內(nèi)外專線建設(shè)以及海外CDN節(jié)點(diǎn)大規(guī)模擴(kuò)容的條件下,搭建起一套全球動態(tài)路由網(wǎng)絡(luò),用于承載動態(tài)數(shù)據(jù)加速、海外直播等業(yè)務(wù)。同時(shí),為支持各類視頻平臺的發(fā)展需求,UCDN將視頻處理能力提升到一個(gè)全新量級。全面支持http2.0在互聯(lián)網(wǎng)安全已經(jīng)成了業(yè)界關(guān)注焦點(diǎn)的當(dāng)下,由于傳統(tǒng)http明文傳輸存在諸多安全隱患,蘋果、谷歌等巨頭都在不遺余力的推進(jìn)https普及。而http2.0主要跑在https之上,對優(yōu)化網(wǎng)站性能起到重要作用。全新升級的UCDN已經(jīng)在全網(wǎng)范圍內(nèi)支持http2.0協(xié)議。目前,主流瀏覽器的較新版本都已經(jīng)支持http2.0,包括Chrome、Safari、Firefox等。多路復(fù)用、并發(fā)請求、二進(jìn)制傳輸、頭部壓縮等是http2.0引入的新特性,這些特性減少了客戶端與服務(wù)器之間的交互次數(shù),降低了請求時(shí)頭部的數(shù)據(jù)傳輸量。采用支持http2.0的UCDN,網(wǎng)站平均訪問速度可以提升30%-50%,尤其是對頁面元素分散的網(wǎng)站或者App,加速性能更好,能較大幅度提升用戶體驗(yàn)。加速布局海外CDN節(jié)點(diǎn)在當(dāng)前國內(nèi)企業(yè)爭相“出海”的大背景下,UCDN除了在國內(nèi)提升覆蓋質(zhì)量,也加快了海外CDN節(jié)點(diǎn)部署的步伐。現(xiàn)在,UCND海外自建和合作的節(jié)點(diǎn)數(shù)量已超過150個(gè),尤其是在華人較多的東南亞地區(qū),UCDN基本能保證每個(gè)國家和地區(qū)都有節(jié)點(diǎn)覆蓋到,包括柬埔寨、緬甸、老撾等人口基數(shù)較少或者網(wǎng)絡(luò)欠發(fā)達(dá)的國家。打造全球動態(tài)傳輸網(wǎng)絡(luò)國內(nèi)與海外各個(gè)節(jié)點(diǎn)之間存在一定的互通問題,再加上跨國線路延時(shí)高、穩(wěn)定性差,這些都是CDN全球加速需要迫切解決的問題。UCloud除了建設(shè)中美、中日、美歐等專線外,還引入了一套動態(tài)智能路由系統(tǒng)。該系統(tǒng)將所有節(jié)點(diǎn)組成一個(gè)邏輯上的網(wǎng)狀結(jié)構(gòu),并且以十秒為周期,探測節(jié)點(diǎn)兩兩之間的延時(shí)以及丟包率,通過最短路徑算法,將所有節(jié)點(diǎn)連接成一張優(yōu)勢路由網(wǎng)絡(luò)。該網(wǎng)絡(luò)的路由會根據(jù)實(shí)時(shí)探測和歷史網(wǎng)絡(luò)情況,每分鐘對路由做重新計(jì)算和調(diào)整,通過不斷選取優(yōu)勢網(wǎng)絡(luò),很好地解決了跨網(wǎng)跨地區(qū)網(wǎng)絡(luò)質(zhì)量不穩(wěn)定問題。目前,直播、動態(tài)加速等對網(wǎng)絡(luò)質(zhì)量要求高的業(yè)務(wù),也均可以運(yùn)行在這張動態(tài)路由網(wǎng)絡(luò)上。(圖:動態(tài)路由選擇最優(yōu)路徑示例)視頻處理能力數(shù)量級提升視頻是網(wǎng)絡(luò)流量的第一大戶。對于CDN來說,一方面需要給視頻客戶節(jié)省流量成本,另一方面還需要保障視頻在各種網(wǎng)絡(luò)環(huán)境下的流暢播放。視頻壓縮以及其它視頻處理能力是各CDN平臺必不可少的功能,因?yàn)橐曨l處理比較耗費(fèi)計(jì)算資源,對于UGC產(chǎn)生的海量視頻,一般面臨著視頻串行處理延時(shí)過高,用戶上傳的視頻無法及時(shí)推送到平臺的問題。基于UCloud強(qiáng)大的云計(jì)算基礎(chǔ)設(shè)施平臺,UCloud媒體工廠產(chǎn)品UMedia通過容器部署的方式,具備了同時(shí)調(diào)度20000個(gè)以上計(jì)算節(jié)點(diǎn)的能力,可并發(fā)處理40000-60000數(shù)量級別的視頻,并融合了視頻AI的功能,提供視頻審核服務(wù),很好地滿足了如糖豆廣場舞、唱吧等客戶的需求。(圖:UCDN視頻處理與分發(fā)流程)在產(chǎn)品功能和質(zhì)量提升的同時(shí),UCDN產(chǎn)品還將秉承UCloud整個(gè)云計(jì)算服務(wù)平臺快速響應(yīng)的服務(wù)標(biāo)準(zhǔn),切實(shí)做到“客戶為先”。