Skip to content

Archive

Archive for October, 2012
现代3D游戏经常会需要用到decal,子弹孔、脚印……传统的decal渲染从Quake 2时代开始就没怎么变过,通过画一个紧贴着物体的四边形来实现。问题一直很多,比如光照的不一致,z-fighting造成的闪烁,渲染状态的来回切换,等等。那么到了deferred框架中,这种情况会有所好转吗? 有趣的是,deferred框架内实现decal不但非常容易:100行之内的代码量,不到20分钟就能完成,而且非常稳定,完全没有上述各种缺点。更有趣的是,deferred的decal被至少三组不同的人都提出过完全相同的算法,都在讨论会出现的相同问题,只是被分别叫成了不同的名字。现在看看这三组: Crytek的Jan Krassnigg在2010年于Game Engine Gems 1里的一篇文章A Deferred D ...
按照先前的计划,KlayGE 4.2中将加入volumetric light的效果,目前已经由Parsifal Wang实现并集成入引擎中。 这里的volumetric light,或者说light shaft,方法上类似于CE和3DMark的做法——把场景渲染得到的depth texture和color texture进行radial blur,得到的结果在通过alpha blend叠加回原先的结果。具体算法可以参考GPU Gems 3的文章。这个方法还是相当快的。在GTX 480上只要0.3ms,在NVS 4200M这种低端移动显卡上也只要2.5ms。目前仍存在一些优化的空间,以后速度还能更快。 打开volumetric light,静帧的效果没有动起来好看: 关闭volumetric light: