● 浩如烟海的沙子
shadow volume是对光源与遮蔽物边缘延长线以内像素的采样和判断,soft shadow是对阴影内部不同深度值上像素的判断,从shadow volume到soft shadow,增加的像素和每个像素上增加的算法所带来的运算难度和规模的增长我们已经见识到了,那么SSAO呢?
SSAO过程
因为视野内所有的物体都有出现反射散射的可能性,既然所有地方的所有物体都有可能成为新的光源,那么SSAO所进行的间接光照和场景闭塞性检查,就很自然的成了对视野内所有像素的判断操作。
是的,所有像素。
我们无需深入SSAO的处理过程,只需要知道他是对摄像机角度出发的所有可见像素进行的操作即可。因为有了soft shadow过程的前车之鉴,这个操作的难度和复杂性应该是个人都可以想象出来了。
数学终于褪去了她美丽的伪装,彻底显露出了他丑陋野蛮人的本来面目。方程组是美丽的,但美丽的数学方程组如果从1个变成1000个,你还会觉得她很美丽很精巧么?变成10000个呢?100000个呢?2304000个呢?
传统光栅化过程的核心特点,就是对像素的操作。因为光线本身在光栅化过程中并不存在,涉及光影的特效表达,最终都是通过像素操作来完成的。而且伴随着视觉要求的提升,视野中或者说屏幕上的像素数越来越多,被赋予到像素上的数学关系的规模也跟着被各种放大。最后,我们得到的最直观的结果就是幁数的下降。
既然这样,我们通过回避这种增长来换取幁数可不可以呢?从shadow volume到soft shadow再到SSAO,我想你应该能够看出规律了——由于光栅化过程的基本操作单元并不是关系,而是像素,所以要想在全屏幕范围内实现正确的各种图形关系,对所有的像素进行操作就是无可避免的结果了。
神降下的第二个灾厄,也就是因果律,现在发挥作用了。沙子的陷阱已经无底了。