转载请注明出处为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的改进就讲到这里,下一篇将讲高质量的地形渲染。

最新文章

  1. j-query应用---鼠标悬停不同文字显示不同背景图片banner动画
  2. POJ 1066 Treasure Hunt --几何,线段相交
  3. TPLink 备份文件bin文件解析[续]
  4. HDU 1158 Employment Planning【DP】
  5. flappy pig小游戏源码分析(3)——解剖util
  6. 共享受限资源,Brian的同步规则
  7. 【转】在ubuntu12.04中安装wine和sourceinsight
  8. 【Perl学习笔记】1.perl的ref 函数
  9. JMeter打开jmx文件报错解决方法
  10. 动态添加数据源,根据用户登录切换数据库.编程式Spring事务.
  11. 关于js的语句类型运算符等
  12. 「拥抱开源, 又见 .NET」系列第三次线下活动简报
  13. 定位linux jdk安装路径
  14. CH0802 占卜DIY
  15. android系统下消息推送机制
  16. web socket
  17. ARMV8 datasheet学习笔记3:AArch64应用级体系结构之Memory order
  18. BZOJ5120 [2017国家集训队测试]无限之环 费用流
  19. maven springMVC SSM框架中 出现的406 (Not Acceptable)
  20. 解决 PermGen space Tomcat内存设置(转)

热门文章

  1. ListView之头部浮动效果
  2. Websocket Component
  3. 【Java】深深跪了,OJ题目Java与C运行效率对比(附带清华北大OJ内存计算的对比)
  4. UI拼图导出脚本,兼容cegui的ImageSet格式
  5. TestNG参数化测试【转】
  6. project.VERSION_NAME定义
  7. 用Win7自带的磁盘管理工具给硬盘分区
  8. 练习2-3:十六进制数字字符串转换为等价整型值,字符串允许包含的数字包括:0~9、a~f、A~F、x、X(C程序设计语言 第2版)
  9. Spring声明式事务管理基于@Transactional注解
  10. sphinx的配置