● 第一粒沙子——shadow volume
第一个捡到沙子的人,叫Franklin C. Crow。
Franklin C. Crow于1977年发表了一篇名为《Shadow Algorithms For ComputerGraphic》的论文,详细阐明了构筑正确的光源与遮蔽物空间位置关系以及场景内所有物体进行阴影检测的算法,但受限于当时过于低下的运算能力和图形实践手段,这篇意义非凡的论文无法得到验证以及任何的实质性应用。它以及它背后那粒被上帝附上了灾厄的沙子,就这样被遗忘在了角落里。
Franklin C. Crow被遗忘到连照片都没有留下
由于应用的发展和需要,开发更加真实的阴影效果的需求变得越来越迫切,程序员们开始了对没有光却能变出影子的方法的寻找。这种投机并且撇开数学的方法显然得不到任何好的结果,再加上AA等来自其他领域的干扰,诸多构筑优秀阴影效果的尝试,比如perspective shadow map和adaptive shadow map等均以失败告终。
adaptive shadow map
就在所有人都一筹莫展的时候,一个人发现了在角落里发着光的那粒沙子。这个人就是John Carmack,而他从沙子中得到的启示,叫shadow volume。
采用shadow volume的DOOM3
第一次看到DOOM III中卫生间摇曳灯光下怪物满屋拖动的阴影时,你是否有一种惊为天人的震撼?这就是赋予阴影正确数学关系之后的结果。shadow volume通过计算光源与物体之间的放射角度来构筑阴影的形状,因为考虑了Occlusion的关系,shadow volume第一次在数学层面上还原了主光线-物体-阴影三者正确的位置和交互关系。通过数学关系的对应,光源的移动可以被直接反映到阴影上。
光锥关系
虽然“光线”依旧不存在,但是光线背后的数学关系已经正确的将光源、遮蔽物和阴影这三者紧密的联系在了一起,无论动态光源如何移动,阴影都能根据光源以及遮蔽物两者之间的位置关系调节自己的位置。John Carmack的shadow volume开创了游戏特效领域的新纪元,他将视觉真实感提升到了前所未有的高度,全世界的程序员都膜拜在了他的脚下,人们甚至称他为图形界的教父。
图形界教父John Carmack
John Carmack的shadow volume带给世界的,不仅仅是极近真实的视觉体验,还有这种体验背后的灾厄——数学,shadow volume的应用,标志着完整的数学体系正式进入了程序构筑的光影的世界,开始了对每一个像素的实时影响。
三秦IT网的官方微信:更多资讯请关注:三秦IT网官方微博