好久没有更新过博克了,春节的最后一天更新一下,写一下关于游戏中关于光影效果的方法,以及我的实现.
去年有个机会和call duty3的程序总监聊天(此人是一个华人,当时已经回国在腾讯做互动娱乐部门副总,想找我过去),他提到次时代游戏和前一代游戏的最大区别之一就是游戏的光影效果,可见游戏中光影效果是如此的重要。
关于游戏中的光照,就目前来看大致两种方式,一种是Unreal的与渲染光照贴图+ShadowMap,另一种则是Crysis的完全实时光影。效果上都不错,下面来简单分析一下。
在讨论之前先要明确一点,游戏中的光影真的要追求和现实中一样的物理机理么?答案是否定的。画面是一个视觉艺术,只要看上去真是,亮丽就可以了,至于现实中是不是真的是这样再次,只要大的光影与现实中一致就行,细节和实现方法可以不遵循真实的物理原理。
先说一下Unreal3的光影方案。总的来说就是直接光照生成光照贴图再加上运行时运动物体的ShadowMap,通过对其编辑器的使用并没有发现很明显的全局光照的影子。反而是使用了大量的光源来模拟全局光照。对于模型可以选择是使用顶点色还是光照贴图。从实际效果上看,其实使用直接光照,通过手动放置更多的光源是可以达到很不错的光影效果。这样做的问题并不在效果上,而是不能做到实时的所见即所得,必须要通过编译光照得到结果,光照贴图只能针对静态物体,同时从引擎设计上来看在编辑器模式和游戏模式中可能会涉及到不同的光照方案,毕竟只有编译后的结果才是游戏中真正的运行的结果。
Crysis的光照方案强调的是所见即所玩,而且是实时的。在Crysis1的光照方案就是直接光照+ShadowMap+SSAO。很明显没什么需要编