当您的项目中没有任何内容时,实时渲染的性能最佳。从现在开始,您所做的一切都会使其变慢。换句话说,实时渲染是关于管理损失。这就是为什么重要的是要了解幕后发生的事情。
实时渲染大图
*这篇文章的重点是延迟渲染
粗略地说,它是这样发生的:硬盘 → RAM → CPU ? GPU
它从您的计算机在其硬盘驱动器上存储信息的位置开始。
接下来,此信息被传输到 RAM。
项目运行时,内存(RAM)存储信息。同样重要的是要了解带宽与传输信息有关。
然后,信息将从内存传输到 CPU/GPU。
它们在 CPU 中计算,并在 CPU 和 GPU 之间来回切换。CPU 和 GPU 在渲染中都有自己的部分,但它们大部分时间是同步的。这就是为什么两者都可能成为彼此的瓶颈。这意味着,只要 GPU 负载很重,即使 CPU 性能完美,您的项目也会运行缓慢。在这种情况下,无论你如何卸载 CPU,它都不会帮助你的整体性能。这就是为什么您需要知道问题出在哪里才能正确优化。
实时渲染细分
渲染前
渲染前有一些准备工作。实际渲染发生在 GPU 之后。
1. 中央处理器
CPU 和 GPU 以相同的速度计算并且同步,但是 CPU 线程首先运行。在渲染之前,CPU 检查对象的“位置和内容”。
2. 绘制(主要是CPU)
绘图线程接收在 CPU 中计算的信息并决定“显示什么”。因为如果它渲染它接收到的所有东西,它会太重。下面列出了按顺序绘制线程处理的计算——首先计算更容易,以便稍后处理较重的计算的对象更少。这些计算针对每个对象进行。
- ① 距离剔除:根据距离剔除物体
- ② 截锥体剔除:剔除相机外的物体
? 始终开启。 - ③ 预计算可见性:根据指定区域裁剪对象。
? 使用起来有点棘手。虽然它有助于 CPU,但它对内存很重。因为你放的每一卷都必须存储相当多的信息。 - ④ Occlusion Cullung:最终通过哪个对象来显示
? 如果要计算的对象超过 10000 个,它往往会变得很重。
3.GPU
现在我们已经拥有了我们需要的一切,实际的渲染将开始——几何渲染。它将按 Drawcall 计算。
什么是 Draw 调用?
了解什么是绘图调用很重要。如果您不确定,请阅读这篇文章。
开始渲染
使用之前准备好的几何信息,实际渲染将按照下面的顺序开始。请注意,根据您的材质设置,DepthPass 是在 Pixel Shader 之前或之后计算的。
顶点着色器?光栅化器?G缓冲区?像素着色器(照明和阴影等)?后期处理
1. 顶点着色器(GPU only)
顶点着色器用于各种动画,例如随风摇曳的树叶。
澄清一下,它只是抵消 vertices,而不是改变模型本身。它不会在 CPU 中计算。例如,云下方的动画也只是偏移了模型的顶点。这就是为什么在原始位置计算碰撞等。顶点着色器也经过高度优化,对性能有好处。
2.光栅化器
这是每次绘制调用都会发生的计算,并将 3D 日期转换为像素。它发生在后台,你无法真正控制。从这个意义上说,理解并不那么重要。
3.G-缓冲器
G-buffer 是一组渲染图像,它们是在光栅化后生成的。结合光栅化,这个过程称为“BassPass”。这是渲染中非常重要和基本的部分。这些图像用于标记材料和照明。从这一点开始,您仅将 G-buffer 中的信息用于任何计算,而不是几何图形。说的很简单,就像Photoshop 中的过滤一样。
G-buffer 使用相当多的图形内存 (vRAM) 和带宽。
4.像素着色器
以及随之发生的几何渲染和绘制调用,它是对性能影响最大的部分。但由于每个主题都有很多要谈的,我将在另一篇文章中解释。
- ?光影
- ?雾和透明度
后期处理
后期处理是指在处理结束时发生的视觉效果。
它使用 Pixel Shader 处理并重用 G-Buffer 并组合图像。因为也有很多主题涉及到这个,所以我会单独写一篇文章,包括具体的例子。计划如下。
- ? 使用后期处理制作自定义纹理效果
- ? 带有后处理材料的程式化过滤器
ue4渲染试试渲云渲染
很多的ue小伙伴们都会遇到的因为本地配置不足而导致的渲染慢渲染卡顿、崩溃等一系列的问题,这是十分影响工作效率的问题,如果想要高效渲染,但是本地电脑不支持怎么办,推荐你可以选择渲云来进行unreal渲染哦。
渲云影视现在支持unreal,目前是国内仅此一家云渲染支持unreal,渲染过程中,支持实时预览。再也不用渲染太慢赶不上进度等情况了,快来试试看吧。
如若转载,请注明出处:https://www.hanjifoods.com/21685.html