转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=2749
 

上一篇讲了TBDR的实现,本篇继续讲解deferred rendering层的一些重要改进。

切换到ESM

原先deferred系统用的是VSM,现在切换到开销更小的ESM。具体参见我之前的一篇文章。用ESM之后只需要一个通道,空间占用减少,性能也有所提升。下个版本会进一步改成支持打包到RGBA8的纹理,让不支持浮点纹理的硬件也可以使用ESM。

Multi-resolution层

KlayGE很早就引入了multi-resolution的概念,用来加速SIL的GI。但原先的MR、SIL和Deferred绑在了一起。从上一版开始,MRSIL从Deferred独立出来之后,这个版本继续改进,把MR和SIL也分开了。现在MR可以用于其他地方,比如SSGI。原本SSVO也打算上MR,但后来来不及改了。

这个分离的思路是,MR层负责维护多层的分离和合并,而至于具体在每一层上做什么操作,由使用MR层的组件决定。这么一来,理论上甚至连Deferred都可以用MR来加速。

忽略小物体

去年,Gameloft的大牛凃鸣就提议过对于小物体应该在一些渲染的情况下忽略掉,并且找到了快速计算AABB投影面积的方法。这个版本也作了这样的改进,通过AABB的投影面积作判断,小于一个threshold就不放入渲染队列。这个threshold是以不影响可见效果来调整的。目前只有生成shadow map的时候threshold > 0,其他时候还是保守地设置为0。

Resizer

在很多平台上,窗口大小是不由程序控制的。这个时候如果希望保持统一的输出大小,就需要一个放缩。所以这个版本在流水线的末端增加了resize一步。前不久我也专门写过一个介绍放缩的文章,里面有关于resizer的细节。以后有可能进一步发展成支持dynamic resolution的放缩。

关于deferred的改进就讲到这里,下一篇将讲高质量的地形渲染。

KlayGE 4.4中渲染的改进(二):DR的其他改进的更多相关文章

  1. KlayGE 4.4中渲染的改进(一):只需要SM3的TBDR

    转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=2736 KlayGE从4.0开始引入deferred rendering层(DR),并且这几个 ...

  2. KlayGE 4.4中渲染的改进(五):OpenGL 4.4和OpenGLES 3

    转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=2796 上一篇我们提到了SSSSS,作为本系列的最后一篇,本文将介绍KlayGE 4.4的Op ...

  3. KlayGE 4.4中渲染的改进(三):高质量无限地形

    转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=2761   本系列的上一篇讲了DR中的一些改进.本篇开始将描述这个版本加入的新功能,高质量地形 ...

  4. KlayGE 4.4中渲染的改进(四):SSSSS

    转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=2774 本系列的上一篇提到了KlayGE 4.4将会出现的高质量地形渲染.本篇仍讲一个新功能, ...

  5. flask 在模板中渲染错误消息

    在模板中渲染错误消息 如果form.valicate_on_submit()返回False,说明验证没有通过,对于没有验证通过的字段,WTForms会把错误信息添加到表单类的errors属性中,这是一 ...

  6. MVVM模式和在WPF中的实现(二)数据绑定

    MVVM模式解析和在WPF中的实现(二) 数据绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

  7. 从零开始编写自己的C#框架(13)——T4模板在逻辑层中的应用(二)

    最近这段时间特忙,公事私事,忙得有时都没时间打开电脑了,这两周只能尽量更新,以后再将章节补回来. 直接进入主题,通过上一章节,大家明白了怎么使用模板类编写T4模板,本章进的是一些简单技巧的应用 1.首 ...

  8. SQL Server 2016中In-Memory OLTP继CTP3之后的新改进

    SQL Server 2016中In-Memory OLTP继CTP3之后的新改进 转译自:https://blogs.msdn.microsoft.com/sqlserverstorageengin ...

  9. 怎么在ZBrush中渲染漫画风格的插画

    创建“漫画插画”的外观和感觉想必一定很有趣吧,但是,获得想要的精确外观有时也会令人相当沮丧,因此了解一些基本原则,创建类似于ZBrush漫画MatCaps的作品很有必要. 若有疑问亦或者想查看具体的视 ...

随机推荐

  1. LightHttpd源码分析

    源码:https://github.com/EZLippi/Tinyhttpd 要在Linux中编译,无需像代码注释所说那样: /* This program compiles for Sparc S ...

  2. oracle创建视图

    create or replace view view_fwaqjcjl as select T_FWAQJCJL.FWAQJCJL_ID,T_FWAQJCJL.ZCBM,T_FWAQJCJL.FWB ...

  3. CCNA第二章TCP/IP简介考试要点学习笔记

    1.描述网络是如何工作的     DoD过程/应用层 -- OSI应用.表示和会话层(定义了结点到结点的应用通信协议以及对用户界面规范的控制): DoD主机到主机层 -- OSI传输层(保证了数据包的 ...

  4. bat运行时不弹出那个黑框框的完美解决方案

    批处理文件运行时经常出现讨厌的黑框,以下的方法,即可以解决 保存为run.vbs运行即可:   set ws = createobject("wscript.shell") ws. ...

  5. printf(""); 输出小题目

    #define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>  int main(){ int i=43; printf("%d\n&q ...

  6. 新版SDWebImage的使用

    第一步,下载SDWebImage,导入工程.github托管地址https://github.com/rs/SDWebImage 第二步,在需要的地方导入头文件 1 #import "UII ...

  7. storysnail的Linux串口编程笔记

    storysnail的Linux串口编程笔记 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据Ge ...

  8. angular ng-repeat+sortable 拖拽demo

    由于项目需求,需要使用angular 实现列表的增.删.改,并且列表支持拖拽. 看了下angular-ui 里面的sortable组件,使用起来也是非常简单,几十行代码就完成了所需功能. 我现在懒得想 ...

  9. TypeScript - 基本类型系统

    对于程序来说我们需要基本的数据单元,如:numbers, strings, structures, boolean 等数据结构.在TypeScript中我们支持很多你所期望在JavaScript中所拥 ...

  10. 2015继续任性——不会Git命令,照样玩转Git

    最近事情比较多,一眨眼,已经半个月没有写博客了~不得不感慨光阴似箭啊!当然,2015年有很多让我们期待的事情,比如win10正式版..NET开源.VS2015等等.想想都让人兴奋啊~~ 为了迎接VS2 ...