Decal Buffer相关
延迟渲染与前向渲染
前向渲染或叫正向渲染,每一个图元都经过顶点着色器,图元着色器,片段着色器,在片段着色器内连同光照一起计算,效率和图元数量有关。
延迟渲染会先计算出G-BUFFER,就是不含光照计算,但有光照需要的信息的BUFFER,最后在一个片段着色器内进行一次光照计算,效率和屏幕像素有关。
http://m.elecfans.com/article/651416.html 比较概括
https://learnopengl-cn.github.io/05 Advanced Lighting/08 Deferred Shading/ 比较详细
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
Decal Buffer相关的更多相关文章
- Innodb buffer 相关参数
buffer相关参数: show GLOBAL VARIABLES LIKE 'innodb_buffer_pool_instances'; show GLOBAL VARIABLES LIKE 'i ...
- 杂谈.netcore的Buffer相关新类型
1 文章范围 本文将.netcore新出现的与Buffer操作相关的类型进行简单分析与讲解,由于资料有限,一些见解为个人见解,可能不是很准确.这些新类型将包括BinaryPrimitives.Span ...
- nodejs缓冲模块buffer相关资料
buffer模块的详细使用教程 浅析nodejs的buffer类 深入浅出NodeJS--Buffer Node Buffer/Stream 内存策略分析
- Nginx proxy buffer相关的设置和解释
proxy_buffer_size 4k; proxy_buffering on;proxy_buffers 4 4k;proxy_busy_buffers_size 8k;proxy_max_tem ...
- Oracle buffer cache
Buffer Cache buffer cache 结构图 HASH链 ORACLE使用HASH算法,把buffer cache中每个buffer的buffer header串联起来,组成多条hash ...
- 转:Java NIO系列教程(三) Buffer
Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的. 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被包装成NIO ...
- 【转】Netty那点事(二)Netty中的buffer
[原文]https://github.com/code4craft/netty-learning/blob/master/posts/ch2-buffer.md 上一篇文章我们概要介绍了Netty的原 ...
- Netty那点事: 概述, Netty中的buffer, Channel与Pipeline
Netty那点事(一)概述 Netty和Mina是Java世界非常知名的通讯框架.它们都出自同一个作者,Mina诞生略早,属于Apache基金会,而Netty开始在Jboss名下,后来出来自立门户ne ...
- Java NIO系列教程(三) Buffer(转)
Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的. 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被包装成NIO ...
- MySQL · 引擎特性 · InnoDB Buffer Pool
前言 用户对数据库的最基本要求就是能高效的读取和存储数据,但是读写数据都涉及到与低速的设备交互,为了弥补两者之间的速度差异,所有数据库都有缓存池,用来管理相应的数据页,提高数据库的效率,当然也因为引入 ...
随机推荐
- 杭电oj 偶数求和
Problem Description 有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值 ...
- (app笔记)Appium如何开启、配置、启用
1.安装adb 2.打开手机调试 3.连接手机 4.appium运行前,手机需要io.appium.uiautomator2.server 和 Appium Settings. 5.appium操作: ...
- 蓝牙mesh组网实践(手机配网例程配合wch mesh手机app的使用)
目录 CH582的官方EVT在22年7月更新后,修改了手机配网代码以支持wch mesh手机app.使用该app可以保存手动配网信息,设置订阅地址分组,OTA升级,极大方便了用户管理节点. 老版本的E ...
- ubuntu 查看已安装软件命令
一.查看所有已安装软件包 dpkg -l 二.过滤安装包 yang@ubuntu:~/ansible$ dpkg -l | grep vim ii vim 2:8.1.2269-1ubuntu5.9 ...
- PYTHON中的CONCURRENT.FUTURES模块
一 : 概述 concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor:线程池,提供异步调用 ProcessPoolExecutor: 进程池,提供异 ...
- 计算机视觉——SSD和YOLO简介
前言 本文记录用,防止遗忘 计算机视觉--SSD和YOLO简介 课件(单发多框检测SSD) 生成锚框 对每个像素,生成多个以它为中心的锚框 给定n个大小 s1, ...,s2,和m个高宽比,那么生成 ...
- 【面试】TCP-IP经典
整理之前的笔记,发现网络通信通俗易懂的解释. 搞清这15个问题,那你就精通了TCP! 网络协议那么多, 为什么面试喜欢问TCP? 原因无外乎两个: TCP协议直接与进程打交道,写网络程序要用: TCP ...
- linux添加分辨率
由于屏幕分辨率是1920X1080,但是虚拟机中的centos的分辨率设置中没有这个值,因此需要添加一个.在终端中输入如下命令:1.cvt 1920 1080得到: # 1920x1080 59.96 ...
- WPF 使用Path(自定义控件,圆形进度条)
原文:https://www.cnblogs.com/tsliwei/p/5609035.html 原文链接:https://blog.csdn.net/johnsuna/article/detail ...
- Django中的app模型细节TypeError: __init__() missing 1 required positional argument: 'on_delete' 解决办法
TypeError: init() missing 1 required positional argument: 'on_delete' 解决办法 当执行应用app模型迁移时: python man ...