Contents

UE4 RHIThread

RHIThread并不是所有平台都需要的。默认仅给PC平台开启。

https://papalqiblog.oss-cn-beijing.aliyuncs.com/blog/picture20210625145111.png

RHI线程的话,做三件事情:

  1. DrawCommand to GPU Command, 把DrawCommand转化为渲染API的GPU Command
  2. GPU Command submit, 提交DrawCall。
  3. Flip GPU,等待Swapchain发生。

我们的输入和最后的呈现其实会有6帧的延迟 https://papalqiblog.oss-cn-beijing.aliyuncs.com/blog/picture20210625145556.png

  1. 主线程处理
  2. 渲染线程处理
  3. RHI等提交给GPU
  4. GPU垂直同步
  5. 双重缓冲交换

为什么需要RHI线程

在某些平台上比如d3d11,提交渲染命令不支持并行化。为了解决这个问题,提交渲染命令是最初是放到渲染线程的,后来为了加快渲染线程的计算,把提交渲染命令单独抽到了一个线程,这个线程就是RHI线程。 https://papalqiblog.oss-cn-beijing.aliyuncs.com/blog/picture20210625120443.png

我们可以看到,开启RHI线程后将会变的非常平滑 https://papalqiblog.oss-cn-beijing.aliyuncs.com/blog/picture20210625152327.png