यह मास्किंग के साथ किया जा सकता है। इसे करने के कई तरीके हैं।
एक तरीका अग्रभूमि तत्वों के छाया संस्करण को प्रस्तुत करने का एक तरीका होगा। पृष्ठभूमि ड्रा करें। फिर अग्रभूमि तत्वों को आकर्षित करें, इस बात पर थोड़ा ऑफसेट करें कि आप प्रकाश को कैसे स्थानांतरित करना चाहते हैं, इस तरह से कि आप केवल काले रंगों का उत्पादन करते हैं। फिर अग्रभूमि को सामान्य रूप से खींचें।
एक और तरीका यह होगा कि आप अग्रभूमि को बफर में प्रस्तुत करें, जितना आप वास्तव में देखेंगे उससे थोड़ा अधिक। फिर कुछ "टू ब्लैक" पास करें और शायद ब्लर पास। अब पास के इस सेट के आउटपुट को प्रस्तुत करें और फिर अग्रभूमि बफर के दृश्य अनुभाग।
विभिन्न कोणों पर कई रोशनी का समर्थन करने के लिए, आप बस पिछले चरण को कई बार कर सकते हैं, या उन सभी को एक ही बफर में जमा कर सकते हैं। गणित उस चीज़ के आधार पर अलग-अलग होगा जिसे आप प्राप्त करने की कोशिश कर रहे हैं, लेकिन उस पहले वीडियो में क्या चल रहा है, इसका एक अनुमान यह है कि वे कैमरे की स्थिति के खिलाफ प्रकाश की स्थिति लेते हैं (दृश्य क्षेत्र का केंद्र) फिर उस वेक्टर (स्केल्ड) का उपयोग करके निर्धारित करें कि छाया को कैसे ऑफसेट किया जाए। कुछ इस तरह:
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
रोशनी जो दृश्य के "करीब" हैं, में एक छोटे पैमाने पर कारक होगा। यदि आप एक से अधिक गहराई चाहते हैं, तो वहां कुछ गणित काम करना है, सरल ज्यामितीय सामान।