Answers:
这可以通过掩膜来完成。有多种方法可以做到这一点。
一种方法是拥有一种渲染前景元素的阴影版本的方法。绘制背景。然后绘制前景元素,以仅输出黑色的方式,根据您希望照明的移动方式稍稍偏移。然后正常绘制前景。
另一种方法是将前景渲染到缓冲区中,比实际看到的要多一点。然后进行一些“黑化”传递,并进行模糊传递。现在,渲染这组通道的输出,然后渲染前景缓冲区的可见部分。
要支持不同角度的多个光源,您可以多次执行上一个步骤,也可以将它们全部累积在一个缓冲区中。数学运算会根据您要达到的目标而有所不同,但是,第一个视频的第一个猜测是,它们只是将光的位置与摄像头的位置(可见区域的中心)相对,并且然后使用该矢量(缩放比例)确定如何补偿阴影。就像是:
draw background
for each light intersecting viewing bounds:
offset = light.position - camera.position
offset *= SCALE FACTOR (0.25 maybe)
draw shadow foreground at offset
draw foreground
“更接近”场景的灯光将具有较小的比例因子。如果您想要多个深度,则需要一些数学运算,简单的几何图形。