सबसे पहले, यह जानने में मदद करता है कि GPUs हमेशा एक समय में पिक्सेल के 2x2 ब्लॉकों पर टुकड़े / पिक्सेल शेड का मूल्यांकन करते हैं। (भले ही उन पिक्सेल में से कुछ को अंततः खींचने की आवश्यकता होती है, जबकि अन्य बहुभुज के बाहर हैं या बंद हैं - अनावश्यक टुकड़ों को अंत में लिखे जाने के बजाय बाहर निकाल दिया जाता है)।
v
आपके shader में एक चर (या अभिव्यक्ति) के स्क्रीनस्पेस व्युत्पन्न v
इस 2x2 पिक्सेल क्वाड के एक तरफ से (कोड में उस बिंदु पर) के मूल्य में अंतर है । अर्थात। ddx
का मूल्य है v
शून्य से सही पिक्सेल में का मूल्य v
बाएं भाग में स्थित है, और इसी तरह के लिए ddy
खड़ी पर।
इसका उत्तर " v
हम स्क्रीन पर क्षैतिज (ddx) या लंबवत (ddy) बढ़ने पर कितनी तेजी से बढ़ते या घटते हैं?" - अर्थात। कैलकुलस शब्दों में, यह आपके वैरिएबल के अनुमानित डेरिवेटिव को अनुमानित करता है (अनुमानित क्योंकि यह फंक्शन के अनन्तमूलक व्यवहार का मूल्यांकन करने के बजाय प्रत्येक टुकड़े में असतत नमूनों का उपयोग करता है)
स्केलर मात्रा के लिए, हम इसे एक ढाल वेक्टर के रूप में भी देख सकते हैं ∇v = float2(ddx(v), ddy(v))
जो स्क्रीनस्पेस दिशा के साथ इंगित करता v
है जिसमें सबसे तेजी से बढ़ रहा है।
इस प्रकार की जानकारी का उपयोग अक्सर आंतरिक रूप से बनावट देखने के लिए एक उपयुक्त मिपमैप या अनिसोट्रोपिक फ़िल्टरिंग कर्नेल का चयन करने के लिए किया जाता है । उदाहरण के लिए, यदि मेरा कैमरा uv
टेक्सचर्ड फ्लोर प्लेन की वर्टिकल दिशा के लगभग समानान्तर दिखता है, तो स्क्रीन ddy(uv.y)
की तुलना ddx(uv.x)
में वर्टिकल ऐक्सिस को फोर्स किया जाता है (- जब एक पिक्सेल स्ट्रेट वर्टिकल स्ट्रैचर स्पेस का लंबा स्ट्रेच कवर करता है) की तुलना में बहुत बड़ा होगा। बनावट के नमूने के हार्डवेयर को बताता है कि मुझे ऐलिसोट्रोपिक फ़िल्टरिंग की आवश्यकता है ताकि उर्जा कलाकृतियों से बचने के लिए ऊर्ध्वाधर बनावट दिशा को क्षैतिज से अधिक धुंधला किया जा सके।
सबसे सरल प्रभावों के लिए आपको इन डेरिवेटिवों का उपयोग करने की आवश्यकता नहीं है, क्योंकि मूल 2 डी बनावट नमूने के तरीके आपके लिए इसे संभालते हैं। लेकिन जैसा कि ऊपर दिए गए एक टिप्पणी में ले कॉम्टे डू मेरडे-फू ने उल्लेख किया है, जब आप अपने बनावट के लुकअप को विकृत कर रहे हैं, तो आपको उपयुक्त फ़िल्टरिंग (जैसे) के माध्यम से हार्डवेयर का चयन करने में मदद करने के लिए स्क्रीनस्पेस डेरिवेटिव को मैन्युअल रूप से प्राप्त करने और / या मालिश करने की आवश्यकता हो सकती है। tex2Dlod
HLSL में)
स्क्रीनस्पेस डिकैल्स एक ऐसा मामला है, जहां एक एकल 2x2 ब्लॉक गणना की गई बनावट के समन्वय में एक बड़ी छलांग को कवर कर सकता है, यदि आप सिस्टम को फ़िल्टरिंग स्तर की गणना करने की अनुमति देते हैं, तो एक स्मीयर या अलियास किए गए किनारे पर चलते हैं। यह लेख इस कलाकृति के बारे में विस्तार से बताता है और इसे कम करने के लिए दृष्टिकोण करता है ।
जब आप प्रक्रियात्मक बनावट में शोर कार्यों का उपयोग कर रहे हैं तो ये व्युत्पन्न भी काम कर सकते हैं। यदि कहें, तो आप प्रक्रियात्मक शोर को एक सामान्य मानचित्र में बदलना चाहते थे, ddx & ddy एक सरल, यदि अनुमानित है, तो यह गणना करने का तरीका कि वर्तमान टुकड़े के आसपास के क्षेत्र में शोर का मूल्य कैसे बदल रहा है, और यह किस तरह से ढलान है, तो आप एक उचित सामान्य निर्माण कर सकते हैं।
एंटीअलियासिड लाइनों या चौराहे पर प्रकाश डालने के लिए तकनीकें स्क्रीनस्पेस गति का भी उपयोग कर सकती हैं, यह सुनिश्चित करने के लिए कि मोटाई / फ़ॉलऑफ़ सुसंगत है और ज्यामिति या व्यू एंगल पर निर्भर नहीं है।
जर्नी में सैंड रेंडरिंग के बारे में इस बात में , स्पीकर का उल्लेख है कि वे इन व्युत्पन्न कार्यों का इस्तेमाल कर सकते थे ताकि यह नियंत्रित किया जा सके कि चमकते किनारों के साथ रेत कितनी चमकीली है ... यदि वे समय पर उनके बारे में जानते थे (इसके बजाय उन्होंने एक mipmapping ट्रिक का उपयोग किया था,) जो हुड के तहत वैसे भी इन प्रकार के डेरिवेटिव द्वारा संचालित होता है)
एक आखिरी नोट: जागरूक होने के लिए स्क्रीनस्पेस डेरिवेटिव की गणना "मोटे" / कम परिशुद्धता पर की जा सकती है (जिसका अर्थ है कि डेरिवेटिव की एक जोड़ी को पूरे क्वाड द्वारा साझा किया जाता है) या "ठीक" / उच्च परिशुद्धता (प्रत्येक पिक्सेल की तुलना केवल अपने तत्काल के साथ की जाती है) क्वाड में पड़ोसी, जो क्वाड के ऊपर चार अलग-अलग व्युत्पन्न जोड़े दे सकते हैं)। मोटे तौर पर आम तौर पर बहुत होता है, लेकिन यदि आप नोटिस करते हैं कि आपको अपने प्रभाव में 2x2 ब्लॉक दिखाई दे रहे हैं, तो यह एक अच्छा सुराग है जिसे आप ठीक / उच्च परिशुद्धता पर स्विच करना चाहते हैं। ;)
(शीर्ष पर चित्र में मैंने ठीक व्युत्पन्न के लिए गणना का उपयोग किया है, लेकिन खबरदार है कि बस अपने आप ही ddx / ddy को मोटे व्युत्पन्न करने के लिए डिफ़ॉल्ट हो सकता है)