久久久91精品国产一区二区,国产91精品久久久久999,国产精品拍自在线观看,亚洲精品久中文字幕,欧美国产日本高清不卡免费 ,欧美日韩不卡视频,日本中文字幕视频在线看

服務(wù)熱線熱線:

13818745178

九游(ninegame)娛樂中國官方網(wǎng)頁-企業(yè)入口

行業(yè)洞察

2020-03-25 UE4實(shí)時(shí)渲染

發(fā)布時(shí)間:2025-06-15點(diǎn)擊次數(shù):

  劃水大半年,還沒正式開始做項(xiàng)目。簡單記錄一下最近看的ue4實(shí)時(shí)渲染(RTR)原理,以后在實(shí)際項(xiàng)目中應(yīng)該能用到。當(dāng)然,以下內(nèi)容只是我對(duì)虛幻4實(shí)時(shí)渲染的初步理解,可能會(huì)有一些認(rèn)知上的不足導(dǎo)致理解有誤。

  實(shí)時(shí)渲染有兩種實(shí)現(xiàn)方式,延遲渲染(Deferred Rendering 適用于復(fù)雜的應(yīng)用)和正向渲染(Forward Rendering 適用于簡單的應(yīng)用)。在ue4中默認(rèn)使用的是延遲渲染,以下內(nèi)容也是基于延遲渲染的。

  當(dāng)對(duì)象尺寸足夠小,距離鏡頭足夠遠(yuǎn)時(shí),可以不進(jìn)行渲染,以提高性能。在UE4中,可以使用 剔除距離體積(Cull Distance Volume)來設(shè)置距離剔除。

  提前計(jì)算出攝像機(jī)在各個(gè)位置時(shí),actor的可見性,并存儲(chǔ)在場景中。在運(yùn)行時(shí),當(dāng)攝像機(jī)移動(dòng)到某一區(qū)域,可以立即獲取到當(dāng)前狀態(tài)下各個(gè)actor的可見性。適用于中小型、靜態(tài)對(duì)象較多、攝像機(jī)移動(dòng)區(qū)域受限的場景,用空間換時(shí)間。在UE4中開啟世界場景設(shè)置(World Settings) 預(yù)計(jì)算可視性(Preputed Visibility)后,使用預(yù)計(jì)算可視性體積(Preputed Visibility Volume)來實(shí)現(xiàn)這一功能。

  這個(gè)環(huán)節(jié)要注意的就是繪制調(diào)用(Drawcall)次數(shù),性能的控制和優(yōu)化就在于繪制調(diào)用的次數(shù)。一組相同屬性的多邊形是一次drawcall,一個(gè)材質(zhì)是一次drawcall,這里能做的就是合并模型減少繪制調(diào)用。

  但是,合并模型會(huì)影響遮擋剔除、光照貼圖、碰撞檢測使他們更加復(fù)雜,還會(huì)增加內(nèi)存開銷。因此合并模型遵循以下原則:

  1.使用次數(shù)多,面數(shù)少的網(wǎng)格體。(可以在 **窗口-統(tǒng)計(jì)數(shù)據(jù)** 中篩選) 2.在同一空間內(nèi)。(不同空間的網(wǎng)格體合并后,會(huì)使遮蔽剔除和碰撞檢測變得復(fù)雜) 3.擁有相同的材質(zhì)。(不同材質(zhì)會(huì)導(dǎo)致多次繪制調(diào)用,合并了也不會(huì)有改善) 4.不需要碰撞或者碰撞體積簡單。 5.體積非常小或只接受動(dòng)態(tài)光照。 6.距離攝像機(jī)很遠(yuǎn)。(可以使用HLOD來實(shí)現(xiàn))

  另外,對(duì)于草地一類的需要大量重復(fù)繪制的網(wǎng)格體,可以使用實(shí)例化網(wǎng)格體組件(InstancedStaticMesh)來實(shí)現(xiàn)。

  利用頂點(diǎn)著色器可以實(shí)現(xiàn)水面、風(fēng)吹草地的動(dòng)畫效果,在材質(zhì)編輯器中修改世界坐標(biāo)偏移。

  三維模型最終要渲染到二維的屏幕上,三維到二維的轉(zhuǎn)換就叫做光柵化(Rasterizing)。

  模型是由一個(gè)個(gè)三角形面構(gòu)成,光柵化就是要將一個(gè)個(gè)三角形對(duì)應(yīng)顯示在一個(gè)個(gè)像素點(diǎn)上,在這里像素點(diǎn)是以2 * 2矩陣為最小單位進(jìn)行計(jì)算的,因此即使一個(gè)矩陣中只有一個(gè)像素點(diǎn)對(duì)應(yīng)上了三角形,那其他三個(gè)點(diǎn)也會(huì)參與一次計(jì)算。如果一個(gè)矩陣的4個(gè)點(diǎn)分別對(duì)應(yīng)著4個(gè)三角形,此時(shí)就會(huì)有2 * 2 * 4次計(jì)算,4個(gè)像素點(diǎn)執(zhí)行了16次計(jì)算,這就是過度著色(Overshading)。

  在ue4中可以使用視圖模式-優(yōu)化視圖模式-四邊形過度繪制來查看場景中的過度著色。

  模型距離攝像機(jī)越來越遠(yuǎn)時(shí),近大遠(yuǎn)小,他在屏幕上的繪制區(qū)域也會(huì)變小,三角形的密度就會(huì)變大。這就可以使用距離剔除和LOD來進(jìn)行優(yōu)化。

  光柵化之后,就開始渲染圖像了,這些圖像就是GBuffer。從這時(shí)開始的計(jì)算,都不在基于幾何體了,而是基于GBuffer。

  GBuffer是一組圖像,他包括靜態(tài)光照貼圖、法線貼圖、金屬色組合貼圖(R:金屬性,G:高光,B:粗糙度)、紋理貼圖、深度緩沖等10張圖像。如果你的游戲是60fps,那么每秒就會(huì)有600張圖像被渲染和傳輸。

  如果紋理的寬高都是2的指數(shù)冪,那么ue4會(huì)在導(dǎo)入紋理時(shí)自動(dòng)生成多級(jí)漸進(jìn)紋理,多級(jí)漸進(jìn)紋理可以有效的改善模型縮小時(shí)產(chǎn)生的噪點(diǎn)。

  著色器是一段運(yùn)行在GPU上的程序,像素著色器用來計(jì)算每個(gè)像素點(diǎn)的值,廣泛應(yīng)用于渲染的每個(gè)步驟。材質(zhì)系統(tǒng)、光照、霧、反射、后處理、顏色校正等都是有像素著色器實(shí)現(xiàn)的。

  ue4提供了很多HLSL的模板代碼,從而支撐起一個(gè)可視化材質(zhì)編輯器。通過在材質(zhì)編輯器中簡單拖拽編輯,然后編譯成著色語言。

  像素著色器的渲染很慢,因?yàn)樯婕跋袼刂鞯墓ぷ鲀?nèi)容太多了。分辨率越高,材質(zhì)越復(fù)雜,影響也就越大(消耗 ≈ 像素點(diǎn)數(shù) * 材質(zhì)復(fù)雜度)。使用視圖模式-優(yōu)化視圖模式-著色器復(fù)雜度可以查看材質(zhì)的復(fù)雜度。

  在場景中添加一個(gè)球體反射采集(Sphere Reflection Capture)或者盒體反射采集(Box Reflection Capture),然后構(gòu)建反射采集(預(yù)計(jì)算)。在游戲中用預(yù)編譯好的紋理,直接疊加到反射材質(zhì)上就有效果了(速度快)。但是,因?yàn)槭穷A(yù)編譯好的靜態(tài)文件,只有攝像機(jī)和反射采集對(duì)象在同一位置時(shí)才能看到反射的最佳效果,否則會(huì)產(chǎn)生偏移,并且反射的影像不會(huì)隨著場對(duì)象的移動(dòng)發(fā)生變化,因?yàn)樗穷A(yù)編譯好的靜態(tài)紋理(不精確)。而且攝像機(jī)一旦離開反射采集球體/盒體的范圍,就看不到反射效果了(只影響局部區(qū)域)。

  添加一個(gè)平面反射對(duì)象(PlanarReflection)在光滑平面上,這個(gè)平面就可以精準(zhǔn)的實(shí)現(xiàn)反射效果,但是反射到的內(nèi)容會(huì)被渲染兩次,導(dǎo)致渲染工作量翻倍。

  特點(diǎn):實(shí)時(shí),有噪點(diǎn),性能消耗很大,只能反射出當(dāng)前可見的幾何體(站在你后面的人,不會(huì)映在你面前的鏡子中(可怕))

  像反射一樣,光照和陰影在實(shí)時(shí)渲染中也很難計(jì)算,需要占用大量硬件性能,并且計(jì)算速度慢,因此對(duì)于光照也會(huì)使用預(yù)計(jì)算/預(yù)渲染,生成光照貼圖,在渲染時(shí)和模型的底色貼圖相乘,這就是靜態(tài)光照。

  7.靜態(tài)光照的質(zhì)量取決于光照貼圖分辨率和UV布局,UV布局可能導(dǎo)致光照貼圖出現(xiàn)接縫。而光照貼圖的分辨率會(huì)有上限,導(dǎo)致巨型模型沒有足夠的空間存儲(chǔ)貼圖和UV,為了避免浪費(fèi),遠(yuǎn)距離的模型也不應(yīng)該使用高分辨率光照貼圖。

  但是,這些光照貼圖都是基于已經(jīng)存在于場景中的靜態(tài)模型渲染的,如果在游戲運(yùn)行后,走過來一個(gè)模型,他是如何對(duì)光照做出反應(yīng)呢?

  使用顯示-可視化-體積光照采樣可以查看ILC的存儲(chǔ)點(diǎn),每個(gè)點(diǎn)中就存儲(chǔ)了光照信息。在動(dòng)態(tài)模型的lightmass設(shè)置中可以設(shè)置間接光照緩存的質(zhì)量,從而確定如何使用場景中的ILC

  1.最常用的類似就是常規(guī)動(dòng)態(tài)陰影(Regular Dynamic Shadows),設(shè)置為可移動(dòng)(Movat)并且打開投射陰影(Cast Shadows)的光源,就會(huì)生成常規(guī)動(dòng)態(tài)陰影,陰影特點(diǎn)是清晰甚至過于銳利。

  2.逐對(duì)象陰影(Per Object Shadows)或者叫固定光源陰影---將光源的移動(dòng)性設(shè)置為固定(Statior)。固定光源陰影會(huì)通過靜態(tài)陰影和動(dòng)態(tài)陰影混合實(shí)現(xiàn)陰影效果,效果比常規(guī)動(dòng)態(tài)陰影柔和一些。

  4.距離場陰影(Distance Field Shadows),級(jí)聯(lián)陰影雖然可以實(shí)現(xiàn)很好的過度效果,但是對(duì)于處理超遠(yuǎn)距離的陰影,還是有性能上的浪費(fèi),這時(shí)就需要距離場陰影。距離場陰影使用距離場信息計(jì)算陰影,而不是幾何體信息,他的效果不夠精確,但是消耗低。需要打開項(xiàng)目設(shè)置引擎渲染LightingGenerate Mesh Distance Fields來生成體積紋理。

  5.插圖陰影(Inset Shadow)他的本質(zhì)還是逐對(duì)象陰影,在一些動(dòng)態(tài)模型上能提供更高的陰影分辨率,角色通常會(huì)默認(rèn)開啟插圖陰影,這樣即使附近沒有適合的光源,也能投射出高分辨率的陰影。

  7。膠囊體陰影(Capsule Shadow)非常簡單的陰影,消耗也非常低。

  4.幾何體到光源的距離。(這個(gè)就是大量消耗性能的地方,需要用光源當(dāng)作攝像機(jī),渲染出一張只有深度信息的360度全景貼圖)

  然后用這4個(gè)信息合成一張陰影貼圖,再用這張陰影貼圖去和光照貼圖、法線貼圖、紋理貼圖等去混合,生成最終效果。這些都是像素著色器做的事情。

  7.幾何體的面數(shù)會(huì)影響動(dòng)態(tài)陰影質(zhì)量,在陰影復(fù)雜的環(huán)境中,需要降低多邊形數(shù)量。

  10.適當(dāng)混合使用靜態(tài)和動(dòng)態(tài)光照。(例如將一個(gè)強(qiáng)度弱,范圍廣的靜態(tài)光源和一個(gè)高強(qiáng)度小范圍的可移動(dòng)光源組合使用,就可以實(shí)現(xiàn)近距離動(dòng)態(tài),遠(yuǎn)距離靜態(tài)的效果。技術(shù)上來講,也可以用一個(gè)固定光源來代替這兩個(gè)光源。)

  距離霧會(huì)隨著距離而消退。通過像素著色器將深度緩沖、霧的基礎(chǔ)色、光照和之前渲染的圖像混合在一起,就實(shí)現(xiàn)了霧的效果。

  1.用正向渲染來渲染透明,再將結(jié)果混合到延遲渲染中。(修改材質(zhì)細(xì)節(jié)面板的光照模式為“正向著色”)

  2.半透明的著色模型盡量不要使用“默認(rèn)光照”,而是用“無光照”并且改變自發(fā)光效果,手動(dòng)去適配周圍環(huán)境光。

  在渲染的最后階段,再次使用GBuffer和像素著色器進(jìn)行渲染處理,這就是后期處理。在ue4的后期處理體積 PostProcessVolume中可以做出很多效果。

  平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

  【GPU精粹與Shader編程】(二) 《GPU Gems 1》全書核心內(nèi)容提煉總結(jié) · 上篇

  毛星云網(wǎng)名「淺墨」,微軟MVP,《Windows游戲編程之從零開始》作者 本文將總結(jié)提煉“GPU精粹三部曲“11本...

  【GPU精粹與Shader編程】(三) 《GPU Gems 1》全書核心內(nèi)容提煉總結(jié) · 下篇

  毛星云網(wǎng)名「淺墨」,微軟MVP,《Windows游戲編程之從零開始》作者 本篇文章將總結(jié)提煉“GPU精粹三部曲“1...

  OpenGL 圖形庫的使用(四十)—— 高級(jí)光照之延遲著色法Deferred Shading

  版本記錄 前言 OpenGL 圖形庫項(xiàng)目中一直也沒用過,最近也想學(xué)著使用這個(gè)圖形庫,感覺還是很有意思,也就自然想著...

  版本記錄 前言 OpenGL 圖形庫項(xiàng)目中一直也沒用過,最近也想學(xué)著使用這個(gè)圖形庫,感覺還是很有意思,也就自然想著...

  【GPU精粹與Shader編程】(一) 開篇 & 全系列11本書核心知識(shí)點(diǎn)總覽

  毛星云網(wǎng)名「淺墨」,微軟MVP,《Windows游戲編程之從零開始》作者 系列文章前言 《GPU Gems》1~3...九游娛樂中心九游娛樂中心

上一篇:Unity退出中國虛幻引擎成新寵?深度解析國內(nèi)游戲引擎新格局

返回列表

下一篇:js中如何渲染