GI - KlayGE游戏引擎 Skip to content

Archive

Tag: GI
从KlayGE 4.0确定了Deferred Rendering的框架以来,每个版本都有一些小改进。在正在开发的4.3里,多个改进经过这几个版本的融会贯通,产生了一些新的变化。这里做个系列总结一下。 GI和Deferred的分离 最早提到这个问题的是团队成员陈顺斌。他在去年就提出Deferred rendering layer太过复杂,应该把相对独立的GI拆出去。当时我的想法是,Deferred和MRSIL GI(Multiresolution splatting for indirect lighting)在逻辑上关联甚大,应该是一体的。后来实现了SSGI,也放在Deferred框架内,复杂度进一步增加。Deferred也成了个带有多种GI方法的怪物,各个组件之间的耦合度很高。 在分析了MRSIL、SSGI以及未来可能支持的SVO等多种GI方法之后 ...
正如不久前的帖子所描述的,KlayGE 4.0的渲染系统将会过渡到deferred rendering的框架。这样做 好处 各种效果都可以在这个框架内得到整合、发挥和发展 方便未来编辑器的构建 坏处 只需要一些底层的geek变得不方便了 我现在的考虑是,把渲染系统分为两层,底下一层是API抽象层,负责把图形API抽象成同样的接口;上一层是deferred rendering层,提供高级功能。这样就可以兼顾两种应用需要。 在deferred rendering里面,除了deferred框架本身,还会包含GI、SSVO、HDR tone mapping、FXAA、Color grading以及Stereo。
GI组的atyuwen同学上个月用KlayGE实现了Multi-resolution Splatting Indirect Illumination的效果,现在开发版本的KlayGE正式加入了Realtime Global Illumination的例子。效果截屏如下: 对比GI关闭的效果: 可以看出间接光照还是蛮明显的。 目前的GI在NVIDIA 9800GT上,1280x800的时候需要花费6.6ms;在GTX 480上需要2.5ms。下一步将要做的改进是: 用light volume的方法优化virtual lighting的速度。 根据BRDF生成不同形状的light volume。 Importance sampling 优化的目标是在9800GT上降低到2.5ms左右。