这是我以前升级Ogre引擎,实现的一个方案,愿意拿出来分享下经验。
每个精通Ogre的程序员,都会对Ogre自带的阴影方案感到失望,不管是模板阴影,还是投影阴影,都是固定渲染管线的阴影,效果都不好。
畅游《天龙八部》都升级到3了,还采用以前的阴影方案,说明要找个理想的方案替换以前的真是很难。
天龙的方案是,人物用模板阴影,场景用静态烘培的阴影贴图贴地形上。效果一般般,这是以前很多游戏的做法。由于模板阴影是基于模型顶点的,没法支持alpha test。
那么树叶这种带有alpha test的模型的阴影用不了。而静态烘培的光照图,精度决定了用在树木这种模型上的效果很不好,而且都不支持自投影,
而投影阴影,本身有3个缺陷,比如反向投影,无自投影,和地形穿插的投影有穿帮等bug,也不太实用,很早就被天龙抛弃了。
固定管线的阴影方案迟早都要被淘汰,而基于shader实现的shadow map阴影技术是比较主流的高级阴影技术。
shadow map的技术分支,就太多了,几十种都有,但每种技术都是不完美的,也有各种各样的问题。国外次世代游戏多用VSM和CSM这种。
我要考虑的前提效率。 效率必须是第一位,在国内开发引擎,任何NB的效果,如果效率有问题,就没任何适用价值。
权衡一下,结合了自己2.5D锁视角游戏的实际情况,我选择了传统的depth shawow map。