当前位置:首页 » 文件管理 » 虚幻引擎如何缓存

虚幻引擎如何缓存

发布时间: 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演示中,将其强大的功能发挥得淋漓尽致。与之相关的游戏有《连线》《绝地求生:刺激战场》等等。

热点内容
linux下sql 发布:2024-10-12 17:19:34 浏览:111
搭建sql服务器 发布:2024-10-12 17:11:25 浏览:820
拼图游戏源码 发布:2024-10-12 16:52:22 浏览:764
luxu776ftp下载 发布:2024-10-12 16:21:32 浏览:767
电脑上怎样压缩文件 发布:2024-10-12 16:12:36 浏览:556
iphone压缩包怎么解压 发布:2024-10-12 16:11:59 浏览:106
刀心点编程 发布:2024-10-12 16:06:29 浏览:537
阿里云服务器反应慢 发布:2024-10-12 16:03:22 浏览:628
丙烯的存储 发布:2024-10-12 15:32:46 浏览:39
plc编程入门视频教程 发布:2024-10-12 15:23:23 浏览:165