位置: 编程技术 - 正文

Forward Render VS Deferred Rendering

编辑:rootadmin
Forward Render

推荐整理分享Forward Render VS Deferred Rendering,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

传统的渲染方式,你提供给显卡形状Mesh,它将其打散成一堆节点,接着经过一系列的变换和分割成为Fregment或者像素,在呈现在屏幕之前已经完成了所有的渲染处理。

这是相当线性的,每一个形状都会在生成完整图像之前经过流水线的每一个阶段。

Deferred Rendering

中文称为延迟渲染,渲染的工作被放在最后,直到所有的形状到都完成了前面的工作,一旦所有需要的缓冲建好,就直接被读进一种着色算法中,合并在一起从而得出最后的结果。 这样,着色一个场景所需的计算和内存的带宽被减少到了这些可见的部分中,从而降低了着色深度的复杂性。

G Buffer - 指Geometry Buffer,亦即“物体缓冲”。区别于普通的仅将颜色渲染到纹理中,G-Buffer指包含颜色、法线、世界空间坐标的缓冲区,亦即指包含颜色、法线、世界空间坐标的纹理。由于G-Buffer需要的向量长度超出通常纹理能包含的向量的长度,通常在游戏开发中,使用多渲染目标技术来生成G-Buffer,即在一次绘制中将颜色、法线、世界空间坐标分别渲染到三张浮点纹理中。

常见的做法是将颜色,深度和法线分别渲染到不同的buffer里面,在最后计算光照的时候的通过这三个buffer和光源的信息计算出最终pixel的颜色。

Color, Depth, and Normal buffer

Final lighting (shading) result generated using the three buffers

比较

在一个标准的Forward Rendering 的渲染管线里,对于每个光源,必须计算场景中每个顶点的光照(使用Vertex shading)。假设场景中有个物体,每个物体有个顶点,那就差不多有个多边形,显卡处理这个量集的定点数是很随意的,但是当把这些多边形发送到fregment shader中进行处理, 在这里的光照计算会消耗大量的性能。

开发者总是试图将更多的光照计算放到Vertex Shader而不是放到fregment shader,这样能够节省很多性能。每一块可见的片段都会进行昂贵的光照的计算,不管它是不是被其他的片段遮挡,度过屏幕的像素是 * ,那么将有将近个像素需要渲染,那么渲染的每一帧在都可能在在fregment shader 中进行数百万次,甚至那些经过深度测试已经被遮挡的像素也要被计算,这样将会造成很大的性能浪费。

更可怕的是,当你在场景中再加上一盏灯的时候,那么fragment shader又要为这个光源再重新计算一遍,想像一下一条满是灯光的街道...

Forward Render VS Deferred Rendering

Forward Rendering渲染的复杂度可以用O(num_geometry_fragments * num_lights)来表示,可以看出复杂度和集合体的面数还有光源的数量正相关。

一些引擎通过一些算法进行了优化,比如太远处的光源不参与计算,合并光源,或者使用light map(只能是静态),但是i如果想要实现动态多光源,那就需要一个更好的解决方案。

Deferred Rendering 就是一个很好的解决方案。它能够很好的减少渲染物体的数量,也就是渲染片段的数量,在进行光照计算的时候用的是屏幕上的像素数量,而不是所有片段像素的总和。它的光照渲染的时间复杂度可以用O(screen_resolution * num_lights)来表示,他和场景中物体的数量是无关的,只和光源数量有关。

如何抉择

简单的回答是,如果你使用的是很多动态光源,那么就使用Deferred Rendering,但是它也有一些缺点:

1.需要比较新的显卡,支持多目标渲染;

2.需要很大的显卡带宽,用来传递Buffer;

3.不用处理透明的对象(除非把Forward rendering 和 Deferred rendering结合起来);

4.没法用传统的抗锯齿方法, 比如MSAA,但是屏幕空间的FXAA是适用的;

5.只能使用一种材质,但是有一种解决方法是Deferred Lighting;

6.阴影的数量还是和光源的数量有关。

如果游戏中没有很多的光源并且需要兼容老的设备,那么最好选择Forward Rendering,然后采用静态的Light map,效果也很不错。

参考

Forward Rendering vs. Deferred Rendering - shading - Shading Rendering Path - Rendering Path -

【UNITY3D 游戏开发之三】NGUI && HUDText 的练习源码及资源 本站文章均为李华明Himi原创,转载务必在明显处注明:(作者新浪微博:@李华明Himi)转载自【黑米GameDev街区】原文链接:

unity 脚本的enabled属性设置成false的问题 在游戏中,会给游戏对象编写AI脚本。游戏结束时,需要将这些功能暂停,一种办法是设置Time.timeScale=0,不过这将停止一切。如果只想停止相关AI脚本,

unity自习之源码剖析(5) 二、道具篇2.1、金币获取玩家经过路边的金币,可以获取金币,同时让金币消失。首先,准备好金币的图片:创建一个材质球(修改成金黄色,类金币

标签: Forward Render VS Deferred Rendering

本文链接地址:https://www.jiuchutong.com/biancheng/383503.html 转载请保留说明!

上一篇:Unity3d UGUI 滚动视图ScrollView的使用教程之简易背包(unity中滚动条控件详解)

下一篇:【UNITY3D 游戏开发之三】NGUI && HUDText 的练习源码及资源(unity 3d游戏开发)

  • 小规模30万免增值税1点怎么申报税款
  • 纳税人规模证明是什么
  • 报销为什么不能多家赔付
  • 税控盘解锁是什么意思
  • 车辆备注栏备注怎么填
  • 生产企业出口转内销增值税申报
  • 质保金扣款要进项税转出吗
  • 外贸企业出口采购流程
  • 小规模企业发票跨月可以作废吗?
  • 开公司前期费用有什么
  • 定额发票用来干嘛
  • 文化建设事业费逾期申报有罚款吗
  • 增值税可以不计提,直接缴纳吗
  • 其他收益等于什么
  • 计提税金和缴纳税金的会计分录
  • 在建工程计提减值准备可以转回吗
  • 专项资金如何做账务处理
  • 利润表的上期金额和本期金额之间的关系
  • 虚增利润
  • 苹果电脑设置壁纸为什么重启就没了
  • 土地补偿款会议记录范文
  • PHP:mb_ereg_search()的用法_mbstring函数
  • PHP+Mysql+jQuery中国地图区域数据统计实例讲解
  • deepin 终端命令
  • 怎么扣除税费
  • wordpress.org
  • 个人出租有形动产怎么交税
  • wamp环境搭建的过程
  • 【2023亲测可用】JS 获取电脑本地IP 和 电脑网络IP(外网IP|公网IP)
  • 头歌java第一课
  • php redis常用命令
  • 房产税土地税用不用计提
  • php提供的字符串函数
  • 新成立公司建账
  • 路径规划原理
  • vue中webpack用来干啥
  • 能用javascript 最终
  • 【Pytorch深度学习50篇】·······第六篇:【常见损失函数篇】-----BCELoss及其变种
  • idea2021版本创建项目
  • cp命令复制系统文件/etc/profile
  • 计提工会经费怎么做账务处理
  • 营业外收支核算的内容有哪些?
  • 6月收到4月的单子怎么办
  • 个体户开票超过10万怎么交税
  • 收到进项税发票
  • photoshop虚化局部
  • 设备购买与租赁的分析中,购买优于租赁的条件是
  • 换电脑了怎么办
  • 小规模企业免征增值税如何做账
  • 社保工伤保险可以退吗
  • SQL Server 2008 R2 为用户权限分配的操作步骤
  • 提交表单数据有哪几种方法,php如何获取表单提交的数据
  • 工程结算审核资料清单
  • 取得税控服务费会计分录
  • 固定资产的处理方法
  • 技术咨询服务开票代码
  • 可供分配利润的计算公式
  • 主营业务成本包括哪些
  • 航天税盘服务费分录
  • 医疗器械行业进货未取得发票怎么做会计分录的
  • mysql子句
  • 同一个sql语句 连接两个数据库服务器
  • centos配置网络地址命令
  • win8适合打游戏吗
  • grub4dos linux
  • w7系统如何设置
  • win10系统更新后网速变慢
  • win7 64位旗舰版下载后怎样禁用搜索记录?win7禁用搜索记录的设置方法
  • 怎么提升win7性能
  • 关于我和鬼变成家人的那件事
  • 批处理传输文件夹到ftp
  • Node.js中的construct构造函数
  • shell脚本运行linux命令
  • python爬虫的几种方法
  • javascript Keycode对照表
  • python图片批量重命名
  • 扣缴义务人申报和综合所得年度自行申报
  • 病历证明在医院保存多久
  • 怎样理解句子我还没弄清楚是怎么回事
  • 海关进口增值税怎么认证抵扣
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设