當前位置:首頁 » 文件管理 » 虛幻引擎如何緩存

虛幻引擎如何緩存

發布時間: 2022-09-01 12:13:21

❶ 《虛幻4》引擎正版下載途徑是什麼

《虛幻4》引擎正版下載途徑為《虛幻4》官網:
https://www.unrealengine.com/zh-CN/what-is-unreal-engine-4

❷ ue4怎麼渲染

虛幻引擎在FEngineLoop::PreInit中對渲染線程進行初始化。使用ue4渲染慢卡頓可以藉助雲桌面來完成渲染。
渲染線程的啟動位於StartRenderingThread全局函數中。
創建渲染線程類實例
通過FRunnableThread::Create函數創建渲染線程
等待渲染線程准備好,從TaskGraph取出任務並執行
注冊渲染線程
創建渲染線程心跳更新線程
渲染線程的主要執行在全局函數RenderingThreadMain中,游戲線程會藉助EQUEUE_Render_COMMAND宏,向渲染線程的TaskMap中添加渲染任務。渲染線程則不斷的提取這些任務去執行。
這里需要注意,渲染線程並非直接向GPU發送指令,而是將渲染命令添加到RHICommandList,也就是RHI命令列表中。由RHI線程不斷取出指令,向GPU發送。並阻塞等待結果。此時,RHI線程雖然阻塞,但是渲染線程依然正常工作,可以繼續處理向RHI命令列表填充指令,從而增加CPU時間的利用率,避免渲染線程憑空等待GPU的處理。
渲染架構
虛幻引擎對於場景中所有不透明物體的渲染方式,是延遲渲染
對於半透明物體的渲染方式,是前向渲染
在虛幻引擎中,先進行延遲光照計算不透明物體,然後藉助深度排序,計算半透明物體。
FDeferedSceneRender::Render函數
1、初始化視口 InitViews
進行必要的可見性剔除。分為三步:預設置可見性,可見性計算,完成可見性計算。
預設置可見性 PreVisibilityFrameSetup
1.根據當前畫質,設置TemporalAA的采樣方式,同時確定采樣位置。采樣位置用來微調視口矩陣。TemporalAA采樣,每一幀渲染的時候,讓這個像素覆蓋的位置進行微弱的偏移,然後混合前面幾幀的渲染結果。
2.設置視口矩陣,包括視口投影矩陣和轉換矩陣。
可見性計算 ComputeViewVisibility
1.初始化用於可視化檢測的緩沖區,位數組,用0和1表示是否可見。翻譯為點陣圖BitMap
2.視椎體剔除,對應函數FrustumCull,該函數內部使用ParallelFor函數的線性剔除,進行並行化的非同步剔除。
3.遮擋剔除
4.根據可見性點陣圖,設置每個需要渲染對象的可見性,即Hidden flags
5.開發者控制對象可見
6.獲取所有對象的渲染信息,對應函數是每個RenderProxy的GetDynamicMeshElements函數。
網格物體組件對應的容器是RenderProxy,材質對象的容器是MaterialRenderProxy
完成可見性計算 PostVisibilityFrameSetup
1.對半透明的對象進行排序。半透明對象的渲染由於涉及互相遮擋,必須按照從後往前的順序來渲染。
2.對每個光照確定當前光照可見的對象列表
3.初始化霧與大氣的常量值。
4.完成對陰影的計算。包括對覆蓋整個世界的陰影,對固定光照的級聯陰影貼圖和對逐對象的陰影貼圖的計算。
虛幻引擎的剔除方式是藉助ParallelFor的線性剔除,並行化的線性結構剔除在性能上優於基於樹的剔除。
2、PrePass 預處理階段
降低Base Pass的渲染工作量。通過渲染一次深度信息,如果某個像素點的深度不符合要求,這個像素點就不會進行工作量最大的像素渲染器計算。
不是基於分塊的GPU,渲染器的EarlyZPassMode參數不為DDM_None,或GEarlyZPassMovable不為0,才會進行PrePass計算。
對象的渲染按照設置渲染狀態,載入著色器,設置渲染參數,提交渲染請求,寫入渲染目標緩沖區的步驟進行。
設置渲染狀態 SetupPrePassView
關閉顏色寫入,打開深度測試與深度寫入。PrePass不需要計算顏色,只需要計算每個不透明物體像素的深度。
渲染靜態數據
三個繪制列表由靜態模型組成,通過可見性點陣圖控制是否可見。
只繪制深度的PositionOnlyDepthDrawList
主要繪制不透明物體的DepthDrawList
帶蒙版的深度繪制列表MaskedDepthDrawList,蒙版對應材質系統中的Mask類型
渲染動態數據
通過ShouldUseAsOccluder函數詢問Render Proxy是否被當做一個遮擋物體,是否為可移動,決定是否需要在這個階段繪制。
寫入渲染目標緩沖區
通過RHI的SetRenderTarget設置。
TStaticMeshDrawList::DrawVisible函數
繪制可見對象
繪制可見對象的基礎是可見對象列表,在繪制之前,每個繪制列表已經進行了排序,盡可能共用同樣的繪制狀態。
每個繪制列表都共用以下著色器狀態,區別只是在於具體參數不同:
頂點描述 Vertex Declaration
頂點著色器 Vertex Shader
殼著色器 Hull Shader
域著色器 Domain Shader
像素著色器 Pixel Shader
幾何著色器 Geometry Shader
載入公共著色器的信息 SetBoundShaderState 和SetSharedState
SetBoundShaderState 載入需要的著色器
SetSharedState 對於TBasePass,設置頂點著色器和像素著色器的參數。
逐元素渲染
1.對於每個DrawingPolicy調用SetMeshRenderState函數,設置渲染狀態。包括調用每個著色器的SetMesh函數,以設置與當前Mesh相關的參數
2.調用Batch Element的DrawMesh函數,完成繪制。調用RHICmdList的DrawIndexedPrimitive函數,指定頂點緩沖區和索引緩沖區的位置。
3、BasePass
極為重要的階段,通過對逐對象的繪制,將每個對象和光照相關的信息都寫入到緩沖區中。
BasePass和PrePass的過程非常接近,分為設置渲染狀態,渲染靜態數據和渲染動態數據。
設置渲染狀態
1.如果PrePass已經寫入深度,則深度寫入被關閉,直接使用已經寫入的深度結果。
2.通過RHICmdList.SetBlendState,打開前4個渲染目標的RGBA寫入。TStaticBlendStateWriteMask用模板參數定義渲染目標是否可寫入,最高支持8個渲染目標。
RHICmdList.SetBlendState(TStaticBlendStateWriteMask<CW_RGBA, CW_RGBA, CW_RGBA, CW_RGBA>::GetRHI());
3.設置視口區域大小。這個大小會因為是否開啟InstancedStereoPass而有所變化。
渲染靜態數據
如果PrePass已經進行深度渲染,那麼會先渲染Masked蒙版對象,然後渲染普通不透明對象。否則,先渲染不透明對象,再渲染蒙版對象。
渲染動態數據
與PrePass基本相同
BasePass採用MRT(Multi_Render Target)多渲染目標技術,從而允許Shader在渲染過程中向多個渲染目標進行輸出。
渲染目標來自哪裡?
渲染目標由當前請求渲染的視口(Viewport)分配,對應FSceneViewport::BeginRenderFramw函數。
如何寫入?輸出到何處?
並沒有在C++代碼中,而是在Shader著色器代碼中。打開Engine/Shader/BasePassPixelShader.usf文件,大體過程:
通過GetMaterialXXX函數,獲取材質的各個參數,比如BaseColor基本顏色,Metallic金屬等。
然後,填充到GBuffer結構體中
最後,通過EncodeGBuffer函數,把GBuffer結構體壓縮、編碼後,輸出到SV_Target。
RenderOccusion渲染遮擋
虛幻引擎的遮擋計算,實質上是在PrePass中直接進行基於並行隊列的硬體遮擋查詢。除非在r.HZBOcclusion這個控制台變數被設置為1的情況下,或者有些特效需要的情況下,才會開啟Hierarchical Z-Buffer Occlusion Culling 作用遮檔查詢。
全平台默認關閉
總體來說,這個步驟是為了盡可能剔除處於屏幕內但是被其他對象遮擋的對象。在視口初始化階段,剔除了處於視錐體之外的對象。但是依然有大量對象處於視錐體內,卻被其他對象遮擋。比如一座山背面的一大堆石頭,這些石頭能夠正常通過我們的視錐體遮擋測試,卻並不需要渲染。
因此, HZB渲染遮擋技術被用於解決這個問題,通常的HZB步驟如下:
(1)預先准備屏幕的深度緩沖區,這個緩沖區將會作為深度測試的基礎數據。因此,這個步驟必須在PrePass之後,如果沒有PrePass,則必須在BasePass 之後。
(2)逐層創建緩沖區的Mipmap級聯貼圖。層級越高,貼圖解析度越低,對應的區域越大。而每個層級對應這個區域「最遠」元素到屏幕的距離(深度最大值)。
(3)計算所有需要進行測試的對象的包圍球半徑,根據這個半徑,選擇對應的深度緩沖區層級進行深度測試,判斷是否被遮擋。這個的用意在於,如果對象較大,我們可以直接用更高的層級進行測試,這個對象的深度若比這個層級對應的距離還遠,那麼該對象一定被遮擋,因為層級對應的是這一片區域中可見元素的最遠距離。
需要注意的是, OpenGL平台下不會進行這個測試。這個步驟中的第二步可以使用像素著色器多次繪制完成級聯貼圖層級,第三步則可以使用計算著色器ComputeShader,或者使用頂點著色器進行計算,將結果寫入到一個渲染目標中。從而藉助GPU的高度並行化來加速這個遮擋剔除過程。
這個步驟輸出的結果會被用於下一幀計算,而不是在本幀。
光照渲染
對應函數RenderLights,光照渲染與陰影渲染是分離的,陰影渲染是在視口初始化階段完成的,光照渲染大體步驟如下:
收集可見光源。對可見性的判斷,利用視口初始化階段保存的VisibleLightInfos信息,以當前Id查詢即可獲得結果。對每個光源構建FLightSceneInfo結構,然後通過ShouldRenderLights對光源是否需要渲染進行計算。
對收集好的光源進行排序。將不需要投射陰影、無光照函數的光源排在前面。
如果是TiledDeferredLighting,則通過RenderTiledDeferredLighting對光照進行計算。如果是PC平台,使用RenderLight函數進行光照計算。
如果平台支持Shader Model 5,則會計算反射陰影貼圖與PLV信息。
核心光照渲染RenderLight函數
每個光源都會調用這個函數,遍歷所有視口,計算光照強度,並疊加到屏幕顏色上。
1. 設置混合模式為疊加
2. 判斷光源類型
平行光源
載入延遲渲染光照對應的頂點著色器(TDeferredLightVS)和像素著色器(TDeferredLightPS)
設置光照參數
繪制一個覆蓋全屏幕的矩陣,調用著色器。
非平行光源
判斷攝像機是否在光源范圍內
如果是,關閉深度測試,從而避免背面被遮蓋部分不進行光照渲染
否則,打開深度測試,以加速渲染
載入著色器
設置光照參數
根據是點光源還是聚光燈,繪制一個對應的幾何體,從而排除幾何體外對象的渲染,加速光照計算。
ShaderMap
頂點工廠:負責抽象頂點數據以供後面的著色器獲取,從而讓著色器忽略由於頂點類型造成的差異。
當前著色器繼承自FMaterialShader,則對每個材質類型編譯出一組對應渲染管線的著色器
當前著色器繼承自FMeshMaterialShader,則對每個材質類型的每個頂點工廠類型編譯出一組頂點著色器和像素著色器。
通過GetMaterialXXX,可以獲取材質的參數。
資訊來自網路

❸ 如何在移動硬碟上運行虛幻引擎

需要安裝虛幻引擎,跟電腦連接。
虛幻引擎就是一款游戲引擎。游戲引擎是指一些已經編寫好的可編輯電腦游戲系統或者一些互動式實時圖像應用程序的核心組件。

❹ 虛幻4引擎怎麼卸載真的全網搜不到幫幫我

打開Epic Games Launcher,點擊側邊欄的「虛幻引擎」,點擊「庫」,然後在「引擎版本」一欄中點擊那個「X」就可以卸載了。

《虛幻4引擎》是由Epic Games公司推出的一款游戲開發引擎,相比其他引擎,虛幻引擎不僅高效、全能,還能直接預覽開發效果,賦予了開發商更強的能力。虛幻引擎4在大約2分半的Demo演示中,將其強大的功能發揮得淋漓盡致。與之相關的游戲有《連線》《絕地求生:刺激戰場》等等。

Epic Games發推表示,他們將與任天堂合作,幫助游戲開發商虛幻引擎4帶到新游戲機Switch上。

但是Epic同時對虛幻引擎4引擎是否支持WiiU的問題上做出了基本否定的回答,在之前的訪問中,Epic的創始人之一Mark Rein就說過Epic並打算把虛幻4帶到WiiU上,不過當時他也說:「如果消費者們想要在WiiU上獲得一個虛幻引擎4游戲的移植版,他們還是有可能玩到。」

❺ 虛幻4引擎怎麼安裝和啟動

你這個是安裝程序,打開你的圖中的engine文件,還有個engine,打開它,找到extras文件打開,找到unrealenginelauncher文件,打開有兩個文件,一個圖標是電腦光碟,這是安裝程序啟動,雙擊安裝

❻ Unreal Engine 下載不了了,該怎麼辦

Unreal Engine 下載不了,可以通過另一個工具Epic Game Launcher下載。

打開Epic Game Launcher,登錄賬號,在左邊的選項卡中單擊虛幻引擎選項,在右上角點擊黃色的下載按鈕就開始下載引擎。安裝完成後右上角的黃色按鈕就變成啟動鍵了,也可以直接雙擊桌面上的「Unreal Engine」來啟動。注意路徑最好為全英文。

Unreal Engine 3效果

「Unreal Engine 3」3D引擎採用了最新的即時光跡追蹤、HDR光照技術、虛擬位移…等新技術,而且能夠每秒鍾實時運算兩億個多邊形運算,效能是「Unreal Engine」的100倍。

而通過NVIDIA的GeForce 6800顯示卡與「Unreal Engine 3」3D引擎的搭配,可以實時運算出電影CG等級的畫面,效能非常非常恐怖。

❼ 虛幻4是否可以修改頂點緩沖區

當然可以呀,主流引擎應該都是可以的(猜的),無非是麻煩程度不同了。

假設你和我一樣是個c++苦手,那麼推薦你一份內置的引擎插件「CustomMeshComponent」,這個插件是什麼意思呢,就是你可以不用考慮頂點工廠那些渲染相關的東西啦,專注於生成頂點數據本身就好了。

當然也是有缺點的,作為使用者來說我覺得有兩點:

1.寫死的頂點數據,只有1套uv,tangent這種東西都是手算還存個啥。

2.沒啥內容也很少升級,4.24preview里我又試了試還老碰到check。

上面是在上家公司的時候自己做著玩的體素生成,可惜匆匆散夥沒做完也忘了拷出來

❽ 如何卸載虛幻4引擎

打開Epic Games Launcher,點擊側邊欄的「虛幻引擎」,點擊「庫」,然後在「引擎版本」一欄中點擊那個「X」就可以卸載了。



《虛幻4引擎》是由Epic Games公司推出的一款游戲開發引擎,相比其他引擎,虛幻引擎不僅高效、全能,還能直接預覽開發效果,賦予了開發商更強的能力。虛幻引擎4在大約2分半的Demo演示中,將其強大的功能發揮得淋漓盡致。與之相關的游戲有《連線》《絕地求生:刺激戰場》等等。

熱點內容
快手怎麼上傳gif 發布:2024-10-12 18:15:02 瀏覽:512
ctr演算法 發布:2024-10-12 18:13:32 瀏覽:244
如何創建伺服器賬號 發布:2024-10-12 18:13:19 瀏覽:723
物理存儲是指快閃記憶體嗎 發布:2024-10-12 18:00:21 瀏覽:541
怎麼看bcg是否配置到vs里 發布:2024-10-12 17:53:54 瀏覽:731
linux下sql 發布:2024-10-12 17:19:34 瀏覽:113
搭建sql伺服器 發布:2024-10-12 17:11:25 瀏覽:821
拼圖游戲源碼 發布:2024-10-12 16:52:22 瀏覽:765
luxu776ftp下載 發布:2024-10-12 16:21:32 瀏覽:770
電腦上怎樣壓縮文件 發布:2024-10-12 16:12:36 瀏覽:558