Decal Buffer相关
延迟渲染与前向渲染
前向渲染或叫正向渲染,每一个图元都经过顶点着色器,图元着色器,片段着色器,在片段着色器内连同光照一起计算,效率和图元数量有关。
延迟渲染会先计算出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相关相关推荐
- 通过案例学调优之--和 LOG BUFFER 相关的主要 Latch
4.1.和 LOG BUFFER 相关的主要 Latch 有: Latch:Redo Copy Latch:Redo Allocation Latch 4.2 当一个进程在修改数据时候 ...
- protocol buffer相关
protocol buffer简介 protocol buffer全称Google Protocol Buffers,是google开发的一套用于数据存储,网络通信的协议编解码的工具库,与XML或者J ...
- 【IO专栏】Buffer相关知识点详解【003】
- Unity内置Shader解读3——Decal
1.Shader在什么情况下使用 Decal(贴花)贴花就是类似于CF里的喷漆,或者汽车/墙上等贴一个贴纸. image.png 2.Shader的价值(用的多不多),Shader的难度 这个应该是极 ...
- TCP性能和发送接收Buffer的关系
本文希望解析清楚,当我们在代码中写下 socket.setSendBufferSize 和 sysctl 看到的rmem/wmem系统参数以及最终我们在TCP常常谈到的接收发送窗口的关系,以及他们怎样 ...
- Java NIO系列教程(五)Buffer
Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的.交互图如下: 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被 ...
- Java NIO学习系列一:Buffer
从本文开始我会开始总结NIO部分,Java NIO(注意,这里的NIO其实叫New IO)是用来替换标准Java IO以及Java 网络API的,其提供了一系列不同与标准IO API的方式来处理IO, ...
- 《Ceph源码分析》——第2章,第2节Buffer
本节书摘来自华章出版社<Ceph源码分析>一书中的第2章,第2.2节Buffer,作者常涛,更多章节内容可以访问云栖社区"华章计算机"公众号查看 2.2 Buffer ...
- MySQL 引擎特性 · InnoDB Buffer Pool
前言 用户对数据库的最基本要求就是能高效的读取和存储数据,但是读写数据都涉及到与低速的设备交互,为了弥补两者之间的速度差异,所有数据库都有缓存池,用来管理相应的数据页,提高数据库的效率,当然也因为引入 ...
最新文章
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
- JVM(Java虚拟机)优化大全和案例实战
- 高级考题_经济师考过就满足?还有这个高级职称等你拿!
- 科大星云诗社动态20210228
- Knockout中ViewModel与Model的互转
- dbeaver 数据转化 mapping_Python机器学习实例:数据竞赛-足球运动员身价估计
- springboot 静态资源访问,和文件上传 ,以及路径问题
- 动态规划 —— 背包问题 P01 —— 0-1背包
- 物以类聚:对象也有生命
- C++ 11使用thread类多线程编程
- Linux select 机制深入分析
- 【机器学习笔记之八】使用朴素贝叶斯进行文本的分类
- 【益智题】十块钱去哪了?
- 12306UserScript
- CNTV视频深入挖掘分析
- 超级压缩,将3D压缩成一种图片
- 网工必须要了解BGP外部网关路由选择协议
- PDF文件如何加密?分享两种好用方法
- m3u8.sqlite文件转视频工具(开源免费)
- MLB的选秀会有哪些规定和流程·棒球6号位