延迟渲染与前向渲染

前向渲染或叫正向渲染,每一个图元都经过顶点着色器,图元着色器,片段着色器,在片段着色器内连同光照一起计算,效率和图元数量有关。
延迟渲染会先计算出G-BUFFER,就是不含光照计算,但有光照需要的信息的BUFFER,最后在一个片段着色器内进行一次光照计算,效率和屏幕像素有关。
http://m.elecfans.com/article/651416.html 比较概括
https://learnopengl-cn.github.io/05%20Advanced%20Lighting/08%20Deferred%20Shading/ 比较详细

https://www.cnblogs.com/wangchengfeng/p/3440097.html
https://blog.csdn.net/taotaoah/article/details/52633822
https://zhuanlan.zhihu.com/p/39464715

G-Buffer

Geometry Buffer,亦即“几何缓冲”。区别于普通的仅将颜色渲染到纹理中,G-Buffer指包含颜色、法线、世界空间坐标的缓冲区,亦即指包含颜色、法线、世界空间坐标的纹理。
一般还有 Albedo反射率 Specular镜面反射

Base Pass

对非透明的物体进行演算并填充到GBuffer,使用缓冲区可视化模式可以在视图中看到效果。几乎所有的延迟渲染都受到其影响,因此才叫基础通道。
其计算结果包括base color, metallic, specular, roughness, normal, sss profile,并且Decals、Fog以及Velocity的计算也在此处。
其开销受到屏幕空间尺寸、物体数量、面数、Decals的数量、Shader的复杂度,生成的过程中包含光照贴图的推送,因此也会受到光照贴图的大小的影响。
可以通过Stat rhi指令检查各种贴图和triangle的消耗。

Deferred Decal Buffer 延迟贴花缓冲

在完成正常的G-Buffer渲染后,即可得到对应的Buffer,但是此时仍没有进行光照计算,这时就需要将Decal渲染到对应的Diffuse(Albedo) buffer中(UE4里应该是BaseColor)。
为了实现Decal,这里需要在G-Buffer后再增加一个Pass,并使用Diffuse buffer作为Render target,并使用Decal shader进行渲染,计算并更新Decal所能够影响到的那些像素。

https://blog.csdn.net/ZJU_fish1996/article/details/86852579 贴花的计算方法
大致流程:利用GBUFFER里的深度,坐标,经过一系列局部空间转全局空间坐标变换

DBuffer Decals

是否在Base Pass之前将decals属性累积到缓冲区
D-Buffer贴花正确影响光照贴图和天空照明
不像常规的延迟贴花
D-Buffer启用prepass开启
更改此设置需要重新启动编辑器

whether to accumulate decals properties to a buffer before the base pass
dbuffer decals correctly affect lightmap and sky lighting
unlike regular deferred decals
dbuffer enabled forces a full prepass
changing this setting requires restarting the editor

从引擎渲染路径分析


UE4使用reverse-Z来保存深度,意味着近裁面的深度值为1,远裁面的深度值为0。这使得深度缓冲的精度更高,避免在远处发生z-fighting的现象。从该pass的名字可以看出这一步是由“DBuffer”触发的。DBuffer是UE4用来保存延迟贴花(deferred decal)的缓冲,这一步需要场景深度,所以会启动Z-prepass

其他

UE4渲染分析:https://zhuanlan.zhihu.com/p/33865743

转载于:https://www.cnblogs.com/mattins/p/11474235.html

Decal Buffer相关相关推荐

  1. 通过案例学调优之--和 LOG BUFFER 相关的主要 Latch

    4.1.和 LOG BUFFER 相关的主要 Latch  有:  Latch:Redo Copy       Latch:Redo Allocation Latch 4.2 当一个进程在修改数据时候 ...

  2. protocol buffer相关

    protocol buffer简介 protocol buffer全称Google Protocol Buffers,是google开发的一套用于数据存储,网络通信的协议编解码的工具库,与XML或者J ...

  3. 【IO专栏】Buffer相关知识点详解【003】

  4. Unity内置Shader解读3——Decal

    1.Shader在什么情况下使用 Decal(贴花)贴花就是类似于CF里的喷漆,或者汽车/墙上等贴一个贴纸. image.png 2.Shader的价值(用的多不多),Shader的难度 这个应该是极 ...

  5. TCP性能和发送接收Buffer的关系

    本文希望解析清楚,当我们在代码中写下 socket.setSendBufferSize 和 sysctl 看到的rmem/wmem系统参数以及最终我们在TCP常常谈到的接收发送窗口的关系,以及他们怎样 ...

  6. Java NIO系列教程(五)Buffer

    Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的.交互图如下: 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被 ...

  7. Java NIO学习系列一:Buffer

    从本文开始我会开始总结NIO部分,Java NIO(注意,这里的NIO其实叫New IO)是用来替换标准Java IO以及Java 网络API的,其提供了一系列不同与标准IO API的方式来处理IO, ...

  8. 《Ceph源码分析》——第2章,第2节Buffer

    本节书摘来自华章出版社<Ceph源码分析>一书中的第2章,第2.2节Buffer,作者常涛,更多章节内容可以访问云栖社区"华章计算机"公众号查看 2.2 Buffer ...

  9. MySQL 引擎特性 · InnoDB Buffer Pool

    前言 用户对数据库的最基本要求就是能高效的读取和存储数据,但是读写数据都涉及到与低速的设备交互,为了弥补两者之间的速度差异,所有数据库都有缓存池,用来管理相应的数据页,提高数据库的效率,当然也因为引入 ...

最新文章

  1. kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
  2. JVM(Java虚拟机)优化大全和案例实战
  3. 高级考题_经济师考过就满足?还有这个高级职称等你拿!
  4. 科大星云诗社动态20210228
  5. Knockout中ViewModel与Model的互转
  6. dbeaver 数据转化 mapping_Python机器学习实例:数据竞赛-足球运动员身价估计
  7. springboot 静态资源访问,和文件上传 ,以及路径问题
  8. 动态规划 —— 背包问题 P01 —— 0-1背包
  9. 物以类聚:对象也有生命
  10. C++ 11使用thread类多线程编程
  11. Linux select 机制深入分析
  12. 【机器学习笔记之八】使用朴素贝叶斯进行文本的分类
  13. 【益智题】十块钱去哪了?
  14. 12306UserScript
  15. CNTV视频深入挖掘分析
  16. 超级压缩,将3D压缩成一种图片
  17. 网工必须要了解BGP外部网关路由选择协议
  18. PDF文件如何加密?分享两种好用方法
  19. m3u8.sqlite文件转视频工具(开源免费)
  20. MLB的选秀会有哪些规定和流程·棒球6号位

热门文章

  1. 第一节:(2)逻辑芯片工艺特性指标
  2. BF发卡网开源源码+详细教程
  3. 【Python自学笔记】学习Python控制键盘鼠标的库 pyautogui
  4. 安卓P 自动调节亮度打开的状态下,手动拖动亮度条后,自动调节亮度失效
  5. IP地址和long互转
  6. 32位二进制里有多少个1
  7. windows XP 安装Sql Server 2000企业管理器无法打开(MMC)的解决方法(亲试,可用)
  8. java币值转换_-PAT-java-5-23 币值转换 (20分)
  9. 奢侈太后慈禧的起居生活
  10. 转载:电脑cmd命令怎么测试网速详细步骤