वस्तुओं के सभी समूहों को खोजने से शुरू करें, जहां वस्तुओं का एक समूह वस्तुओं का एक संग्रह है जो ओवरलैप करता है। मानक टक्कर का पता लगाने का काम करना चाहिए। प्रत्येक समूह को एक विशिष्ट रंग प्रदान करें। कोई भी रंग करेगा।
अपनी सभी वस्तुओं को ठोस रंगों के रूप में प्रस्तुत करें, समूह रंग का उपयोग करके, एक बनावट के लिए।
रेंडर टारगेट के समान आयामों के साथ एक नई रूपरेखा बनावट बनाएं। रेंडर टारगेट के प्रत्येक टेक्सल के माध्यम से स्कैन करें और निर्धारित करें कि क्या यह किसी भी आसपास के टेक्सल्स के लिए एक अलग रंग है। यदि ऐसा है, तो आउटलाइन टेक्सटाइल में संबंधित टेक्सल को अपने इच्छित लाइन कलर में बदलें।
अंत में, इस रूपरेखा बनावट को लें और इसे उस छवि के शीर्ष पर रेंडर करें जिसे आप स्क्रीन पर खींचना चाहते हैं (आप निश्चित रूप से इसे उसी समय कर सकते हैं जैसे कि खंड टुकड़े में किनारे का पता लगाने और पहले में किनारे की बनावट बनाने से बचें। जगह)।
यदि आप रेंडर टारगेट के टेक्सल्स के माध्यम से जाने के लिए लूप का उपयोग करके सीपीयू पर यह कदम उठाते हैं, तो यह बहुत धीमी गति से होगा, लेकिन शायद कुछ मामलों में परीक्षण और यहां तक कि उपयोग करने के लिए पर्याप्त है। वास्तविक समय में इसका उपयोग करने के लिए, आपको इसे छायादार में संभालना सबसे अच्छा होगा।
इस किनारे का पता लगाने के लिए एक टुकड़ा shader इस तरह लग सकता है;
precision mediump float;
uniform sampler2D s_texture;
varying vec2 v_texCoord;
void main()
{
gl_FragColor = vec4(0.0);
vec4 baseColor = texture2D(s_texture, v_texCoord);
gl_FragColor += baseColor - texture2D(s_texture, top);
gl_FragColor += baseColor - texture2D(s_texture, topRight);
gl_FragColor += baseColor - texture2D(s_texture, right);
gl_FragColor += baseColor - texture2D(s_texture, bottomRight);
gl_FragColor += baseColor - texture2D(s_texture, bottom);
gl_FragColor += baseColor - texture2D(s_texture, bottomLeft);
gl_FragColor += baseColor - texture2D(s_texture, left);
gl_FragColor += baseColor - texture2D(s_texture, topLeft);
}
जहां बुनावट 2 डी में दूसरा मूल्य दिखता है, v_texCoord के सापेक्ष 2d समन्वित है। आप इसे पूर्ण स्क्रीन क्वाड पर बनावट के रूप में पहला रेंडर लक्ष्य प्रदान करके लागू करेंगे। यह कैसे आप एक guassian कलंक के रूप में पूर्ण स्क्रीन धुंधला प्रभाव लागू होगा के समान है।
ठोस रंगों के साथ पहले रेंडर टारगेट का उपयोग करने का कारण केवल यह सुनिश्चित करना है कि ओवरलैप करने वाली विभिन्न वस्तुओं के बीच कोई कथित बढ़त नहीं है। यदि आप स्क्रीन इमेज पर बस किनारे का पता लगाते हैं, तो आप शायद पाएंगे कि यह ओवरलैप्स पर किनारों का पता लगाता है (यह मानते हुए कि ऑब्जेक्ट्स के अलग-अलग रंग / बनावट / प्रकाश व्यवस्था हैं)।