qt 读取gif一帧_译:Unreal渲染一帧详解(Unreal Frame Breakdown)

本文深入解析Unreal Engine的渲染流程,从Particle PreRender到PostProcessing,涵盖预渲染、深度缓冲、阴影、体积雾、光照计算、反射、透明处理等关键步骤,通过动态GIF帮助理解渲染过程。
摘要由CSDN通过智能技术生成

7f6da0c432fc3cbe5ffd7aec7223e94b.png

译者前言:

上一篇文章,我补充翻译了”How Unreal renders 1 Frame?”的第三篇,在找资料过程中,又发现了一篇挺好的文章,同样是基于”How Unreal renders 1 Frame?”来进行了更进一步的尝试和分析,觉得可以把这篇文章也翻译一下,从而方便更多的读者。

这篇文章的优势主要是给出了一些更细致的GIF贴图,一一种动态的方式来让大家更好地来理解整个渲染过程。当然,在一些理论知识上的介绍,比原有的博文介绍的比较简单,大家最好对照着来看。毕竟两个场景是比较类似的。

原文链接:

Unreal Frame Breakdown​viclw17.github.io
12535352801b1cccd288c9c6d384b200.png

作者:Victor Li,似乎是个华人,这是在他的技术BLog上发表的。

-----------------------------------------------------------------------------------------------

原文

9f37f5d1f40436004497cd6c41147aaf.png

这个是我自己版本的“How Unreal Render One Frame?”,我试着按照这篇博文来profile一帧来学习延迟渲染的整个过程。

我按照这篇blog来构建了一个测试的场景。首先将Unreal设置为”延迟渲染“,如果设置为”forward rendering“的话,整个渲染过程会有非常大的差异,后面我也会来介绍一下这个渲染管线。在我的测试例子中,umap被命名为NewWorld。它包含以下内容:

  1. 1个方向灯,从左上到右下
  2. 1静态光,白色
  3. 2个固定灯,均为蓝色
  4. 2个移动灯,一绿一红
  5. 标记为可移动的岩石网格
  6. 其余所有网格都是静态的
  7. 所有带有阴影的网格
  8. 1个火粒子系统
  9. 体积照明
  10. 天空盒

1、Particle PreRender

在GPU上进行粒子模拟(只有GPU Sprites Particle类型的粒子)。因为我们在粒子系统中有两个GPU粒子发射器,所以,粒子模拟的pass有了两个Draw Call。

2995c9057f49f16cbe85e24d79aef8b9.png
 EID  | Event                                              | Draw # | Duration (Microseconds)
      |   - GPUParticles_PreRender                         | 2      | 36.864
      |    - GPUParticles_SimulateAndClear                | 2      | 23.552
      |      - ParticleSimulationCommands                 | 2      | 23.552
      |        - ParticleSimulation                       | 2      | 23.552
115   |          - DrawIndexed(48)                        | 2      | 23.552
121   |           - API Calls                              | 3      | 0.00
      |     - ParticleSimulation                           | 4      | 13.312
138   |      - DrawIndexed(48)                            | 4      | 13.312
144   |       - API Calls                                  | 5      | 0.00
148   |     - API Calls                                    | 6      | 0.00

这个Pass会输出下面2个Render Target(RT):

1、RT0: 粒子的位置信息

2、RT1:粒子的速度信息

e87f534686b621266764601d68f605ce.png

2、PrePass

PrePass获取所有不透明的(例如,使用opaque或masked的材质)mesh,并输出 Depth Z pass(Z-prepass)。 DBuffer需要其结果,也就是“ Forced by DBuffer”,这个过程也可以通过启动Forward Shading来启动。 pre-pass也可以被用于遮挡剔除来使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值