首页 > 其他分享 >浅浅了解延迟渲染(延迟着色)

浅浅了解延迟渲染(延迟着色)

时间:2023-10-17 19:22:40浏览次数:32  
标签:片段 颜色 渲染 浅浅 光源 着色 内存 延迟

延迟渲染

  • 一般采用正向渲染,也就是线进行着色,然后进行深度测试。但是这种渲染存在一个缺点,那就是如果一个颜色已经被渲染出来来的,但是经过深度测试,发现在它上面还有一种颜色需要渲染,那么就导致之前渲染的颜色所耗费的资源被浪费。因为最后看到的颜色之后是经过深度测试的颜色。
  • 对于延迟渲染来说,就是先进行深度测试,然后进行着色。这样我们只渲染最后一定可以看到的颜色,对于那些被深度测试pass掉的颜色不进行渲染,这样就极大的节省了计算资源,提高FPS。

注:延迟渲染是从G-buffer中读取纹理数据,而不是从顶点着色器的变量中,这样我们在渲染片段的时候,渲染的都是最顶层的片段(感觉就是通过深度测试的片段),所以每个像素都只处理一次(无法使用MSAA,因为msaa需要对每个像素进行多次采样,综合之后得出最终的颜色值)。但是传统的正向渲染就需要对像素处理多次(这里的“多”就是指光源个数,有多少个光源,就处理多少次)。

延迟渲染流程:

分两个阶段:几何处理阶段 -> 光照处理阶段

1)几何处理阶段:先渲染场景 -> 得到对象的几何信息(位置、颜色、法向量等)-> 存储到G-buffer中

2)光照处理阶段:G-buffer纹理数据 -> 计算每一个片段中的场景光照。(ps:通常光照处理阶段是从顶点着色器获取变量进行片段着色)

复杂度对比

这里的 m 可以认为是 m 个光源,n 可以指的是 n 个需要渲染的目标或者片段或者像素点。

  • 正向 O(m*n)
  • 延迟 O(m+n)

延迟渲染优缺点

  • 缺点显而易见:耗费内存、不支持混色(因为只渲染最顶层的片段,所以无法使用MSAA)
  • 优点也显而易见: 复杂度低、多光源场景非常适用

针对延迟渲染缺点进行的改进

  • 延迟光照 LightPre-Pass : 减少内存开销
  • 分块延迟渲染 Tile-Base Defferred Rendering:目的是分摊内存开销

延迟渲染真的好吗?

对于光源非常多的情况下,利用延迟渲染会极大的提高渲染效率。对于光源少的情况下,优先选择正向渲染。因为延迟渲染会造成非常大的内存开销。当内存开销非常大的时候,其实也会影响它的渲染效率。

标签:片段,颜色,渲染,浅浅,光源,着色,内存,延迟
From: https://www.cnblogs.com/peixu/p/17759522.html

相关文章

  • KingbaseES V8R6集群运维案例之---查看主备流复制之间的延迟
    案例说明:在主备流复制集群运维过程中,对于同步复制节点,在读写分离环境应用需要强一致性访问时,需要监控主备之间流复制的延迟。适用版本:KingbaseESV8R6一、主库查询流复制延迟1、通过sys_stat_replication获取sent_lsn、write_lsn、flush_lsn、replay_lsn获取备库延迟信息......
  • OpenGL——着色器设置绘制对象颜色及透明度
     {https://blog.csdn.net/weixin_46568899/article/details/129217018} {。着色器的编写结构如下:1.声明版本(很重要,版本不对的话会得到不同的绘制结果)。2.使用location指定输入变量。3.定义输入输出变量(用in和out关键字)。4.main函数。以下是一个简单的例子:   constcha......
  • Kafka不能满足我们的要求,其尤其表现在低延迟和高可靠性方面
    为什么选择RocketMQ|RocketMQhttps://rocketmq.apache.org/zh/docs/为什么RocketMQ​在阿里孕育RocketMQ的雏形时期,我们将其用于异步通信、搜索、社交网络活动流、数据管道,贸易流程中。随着我们的贸易业务吞吐量的上升,源自我们的消息传递集群的压力也变得紧迫。根据我们......
  • RabbitMQ 死信交换机、延迟队列、惰性队列
    如果一个队列设置了死信交换机,该队列的消息就有了极大的可靠性保障,当出现以下情况时,消息就会投递到死信交换机中:队列中的消息在被消费者处理后,抛出异常,返回了nack或者reject如果队列设置了ttl或者消息本身设置了ttl,消息因为超时而未消费队列容量已经满了,后续发来的消息......
  • 国标GB28181协议下视频监控平台EasyGBS播放器起播慢或延迟高问题解决方案
    GB28181视频监控国标平台EasyGBS是基于国标GB28181协议、支持多路设备同时接入的视频监控/视频云服务平台,支持对多平台、多终端分发RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。国标GB28181平台EasyGBS可提供视频直播监控、云端录像、云存储、检索回放、智能告警、语音对讲、平......
  • VCS代码保护+SOC中的复位电路+verdi生成部分原理图+verdi查看delta cycle+自定义的原
    VCS代码保护在新思公司的一些vip的实现中,一些代码进行了加密,导致无法查看源码,加密的方法也是使用新思的工具VCS。在编译的命令行添加+protect选项,在代码前后加上编译指示,则生成对应的加密vp、svp文件,中间的部分被加密。https://blog.csdn.net/woodhorse007/article/details/524......
  • 着色
    着色shading对于每一个shadingpoint赋予每个像素点:明暗或者颜色对一个物体添加材质的过程着色过程是只考虑单独物体,不考虑其他物体造成的光线遮挡,所以着色完成后之后有明暗,颜色,不会有阴影考虑局部shadingpoint所在的平面的法线与光线的夹角(法线向量与光线向量的夹角)导......
  • openGL学习<四>、着色器
    1//2//Createdbysryon2021/7/6.3//4#include<glad/glad.h>5#include<GLFW/glfw3.h>6#include<iostream>7#include<cmath>8usingnamespacestd;910voidframebuffer_size_callback(GLFWwindow*window,......
  • kitti彩色地图拼接<二>、单帧着色
    一、数据准备与处理这里使用的是kitti数据集中:2011_10_03_drive_0047_sync.zip、2011_10_03_calib.zip。直接在命令行解压上述两个压缩包:1unzip2011_10_03_calib.zip2unzip2011_10_03_drive_0047_sync.zip解压后效果如下:   三个txt文件分别是相关外参数,即:相机......
  • 乳胶漆着色防踩坑
     乳胶漆什么颜色好看?  你自己喜欢什么颜色就是好看,  乳胶漆千万别跟风刷网红色,很容易过时和后悔,  装修一套房子,至少住好几年,  1,所有的乳胶漆颜色都是以白色为底,以红黄蓝三原色进行调制  大部分网红色都加了黄,而且最后容易退色也是黄 ......