これはマスキングで行うことができます。それを行うには複数の方法があります。
1つの方法は、前景要素のシャドウバージョンをレンダリングする方法を持つことです。背景を描きます。次に、前景の要素を描画します。黒の色のみを出力するように、照明の移動方法に応じて少しオフセットします。次に、通常の方法でフォアグラウンドを描画します。
別の方法は、フォアグラウンドをバッファーにレンダリングすることです。実際に表示されるよりも少し多いです。次に、「黒に」パスを実行し、おそらくぼかしパスを実行します。次に、このパスのセットの出力をレンダリングしてから、フォアグラウンドバッファーの可視セクションをレンダリングします。
さまざまな角度で複数のライトをサポートするには、前のステップを複数回実行するか、それらすべてを単一のバッファーに蓄積します。数学はあなたが達成しようとしていることに基づいて異なりますが、その最初のビデオで何が起こっているかについての最初の推測は、カメラの位置(可視領域の中心)に対して光の位置をとるだけであり、次に、そのベクトル(スケーリングされた)を使用して、影のオフセット方法を決定します。何かのようなもの:
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
シーンに「より近い」ライトは、より小さいスケール係数を持ちます。複数の深度が必要な場合は、簡単な幾何学的なもので計算できます。