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