Archive for December, 2012

Per Pixel Lens flare

Sunday, December 30th, 2012

不知道从什么时候开始。像这种lens flare已经成为游戏中的标配。包括游戏bf,cod,引擎unreal4,ce3在内的商业程序中都统一同时出现了这样的特效。

前几天上网搜了一下,网上倒是有详细的制作原理和讲解。实现了一下,如下图,看起来效果还是不错的。

 

我把HDR的filter更新了一下,把原来camera horizon滤镜(见以前的post)换成了lens flare。

下图是使用“lens dirt”贴图与原始lens flare的两张截图:

追记:图中有误,最终的camera dirty采样应该是在fullscreen下进行的。图中直接在brightness里面采样了。改了以后一直没换新图。今天才发现,就追加一下说明。

Reflective Shadow Maps Demo

Sunday, December 16th, 2012

全局照明是这些年实时图形学中最热门的话题,RSM(Reflective Shadow Maps)的提出使得实时辐照技术的实际应用成为可能。近年来大量的实时辐照paper阐述的内容基本上全都是围绕RSM的优化,缺陷的修补展开的讨论。

RSM主要存在两大亟待完善的缺陷:性能问题和遮挡计算。

我比较关注的游戏业界的解决方案著名的Crytek的Cascaded Light Propagation Volumes, Unreal的Sparse Voxel Octree Global Illumination,这两个都已经基本解决了两大缺陷,性能上相当优秀,不过有些细节上还是输给学院派。

学院派的就更多了,相关论文逐年递增,大型国际期刊上的到今年为止估计有约60篇相关讨论,就我看到过的比较著名的优化手段就有五六种。比如优化采样效率的Imperfect Shadow Maps(siggraph 08),建立类似lightcache缓存的Image-space hierarchical coherence buffer,自适应分辨率的Interactive Indirect Illumination Using Adaptive Multiresolution Splatting ,直接用消隐优化建立RSM的Parallel Many-View Level-of-Detail Selection for Real-Time Global Illumination

下图是RSM的简单实现,图中是direct light+indirect light。

rsm01

rsm02

rsm03