本系列的前三篇讲的都是关于Deferred Rendering的改进,本篇会专注于流水线后端的Post Process。
Post Process链
在KlayGE的渲染流水线里,不管用不用deferred,post process链是都会执行的。完整的post process链由一系列单独的post process组成,流程如下图所示。
前三个属于HDR的,经过tone mapping转成LDR之后,又经过三次post process,得到渲染结果。如果开了stereo,就会被stereoscopic的post process处理成立体的。
不管是用CUDA里的GPU kernel launch还是用图形API里的Draw Call来启动一个GPU任务,常见的改进规则都是,如果某次GPU任务不依赖于上次任务的其他单元,就应该和上次任务合并起来。这样可以省去GPU写入和读 ...
正如不久前的帖子所描述的,KlayGE 4.0的渲染系统将会过渡到deferred rendering的框架。这样做
好处
各种效果都可以在这个框架内得到整合、发挥和发展
方便未来编辑器的构建
坏处
只需要一些底层的geek变得不方便了
我现在的考虑是,把渲染系统分为两层,底下一层是API抽象层,负责把图形API抽象成同样的接口;上一层是deferred rendering层,提供高级功能。这样就可以兼顾两种应用需要。
在deferred rendering里面,除了deferred框架本身,还会包含GI、SSVO、HDR tone mapping、FXAA、Color grading以及Stereo。
在NVIDIA的新网页3D Vision and Surround Technology上,提供了一份名为Stereo Unprojection Sample的示例代码。在里面提供的NVAPI和独立的NVAPI在stereo的部分不全相同。这个NVAPI提供了NvAPI_Stereo_SetDriverMode,可以把stereo分成两个模式,Direct和Automatic。Automatic顾名思义就是原先的自动修改VS的模式,而Direct应该就是自己提供左右眼渲染结果,而让NV驱动完成stereo的方法。它也提供了NvAPI_Stereo_SetActiveEye,可以让你设置当前激活的是左眼还是右眼。也就是说,很可能用这种方式直接就可以跨API地直接控制stereo,而不用再像在程序中使用NV 3D Vision一文所说的那么麻烦了。
在NVIDIA 3D VISION AUTOMATIC里,不但缺了很多公式,而且结尾提到了可以用来控制stereo的nvstereo.h。而nvstereo.h包含在NV SDK 11中。我原先的文章“在程序中使用NV 3D Vision”提到的方法虽然有效,但毕竟是个hack。也许只有等NV SDK 11发布了,才能得到完整的3D VISION AUTOMATIC文档,以及方便控制stereo的方法。期待它在2011年初发布!
多年前NVIDIA就发布了3D Vision技术,能提供多种立体渲染的效果。随着2009年的电影阿凡达所带来的世界性3D狂潮,你是否也想在自己的程序中加入立体渲染呢?
3D Vision的原理
根据http://developer.nvidia.com/object/3d_stereo_dev.html,3D Vision的原理如下:
在驱动内部,所有3D场景都渲染两次——一次用左眼,一次用右眼。驱动会自动“在线”修改典型的3D游戏vertex shader,所以在执行期可以产生正确的图像。
注意加粗的几个词所透露出来的信息。首先,你的每一个Draw call都被驱动变成了两个Draw call;其次,立体化的过程是自动的,无法自由控制;第三,它只能处理典型的vertex shader,而不是任意的vertex shader,比如sky box的vert ...
[zh]
KlayGE SVN中的版本增加了立体渲染模式,同时上层代码完全不需要修改。KlayGE成为第一个原生支持立体显示的开源游戏引擎!目前支持红青眼镜,即将加入更多不同的颜色组合和LCD shutter模式。
[/zh]
[en]
KlayGE in SVN now has stereo rendering mode while the code using KlayGE don't need modification a bit. KlayGE turns into the first Open Source Game Engine that natively support stereo rendering! Currently only red-cyan glass is supported, more color anaglyphs and LCD shutter mode will be added into future system.
[/en]