मेरा प्रश्न विशेष रूप से धातु के संबंध में है, क्योंकि मुझे नहीं पता कि क्या उत्तर किसी अन्य एपीआई के लिए बदल जाएगा।
मेरा मानना है कि मैं अब तक यह समझता हूं:
एक mipmapped बनावट में "विस्तार का स्तर" होता है, जहां कुछ सार्थक तरीके से मूल बनावट को नीचे करके विस्तार के निम्न स्तर बनाए जाते हैं।
Mipmap स्तरों को विस्तार के अवरोही स्तर में संदर्भित किया जाता है, जहां स्तर
0
मूल बनावट है, और उच्च-स्तर इसके पावर-ऑफ-टू हैं।अधिकांश GPU ट्रिलिनियर फ़िल्टरिंग को लागू करते हैं, जो प्रत्येक नमूने के लिए दो पड़ोसी मिपमैप स्तर चुनता है, प्रत्येक स्तर से नमूने बिलिनियर फ़िल्टरिंग का उपयोग करता है, और फिर उन नमूनों को रैखिक रूप से मिश्रित करता है।
मुझे यह समझ में नहीं आता है कि इन माइपमैप स्तरों का चयन कैसे किया जाता है। में प्रलेखन धातु मानक पुस्तकालय के लिए, मुझे लगता है कि नमूने के साथ या एक का एक उदाहरण निर्दिष्ट किए बिना, लिया जा सकता है देखने के lod_options
प्रकार। मुझे लगता है कि इस तर्क में बदलाव होता है कि कैसे मीमैप के स्तर का चयन किया जाता है, और स्पष्ट रूप से lod_options
2 डी बनावट के लिए तीन प्रकार हैं:
bias(float value)
level(float lod)
gradient2d(float2 dPdx, float2 dPdy)
दुर्भाग्य से, दस्तावेज़ीकरण यह समझाने में परेशान नहीं करता है कि इनमें से कोई भी विकल्प क्या है। मैं अनुमान लगा सकता हूं कि bias()
कुछ स्वचालित रूप से विवरण के स्तर को पूर्वाग्रह करता है, लेकिन फिर पूर्वाग्रह का क्या value
मतलब है? यह किस पैमाने पर काम करता है? इसी तरह, कैसे है lod
की level()
असतत मिपमैप स्तरों में अनुवाद किया? और, इस धारणा के तहत काम कर रहा है किgradient2d()
बनावट के ढाल का उपयोग करता है समन्वय, यह कैसे ढाल का उपयोग करता है mipmap स्तर का चयन करने के लिए?
इससे भी महत्वपूर्ण बात, अगर मैं इसे छोड़ देता हूं lod_options
मीमैप लेवल को कैसे चुना जाता है? क्या यह कार्य निष्पादित होने के प्रकार के आधार पर भिन्न होता है?
और, यदि sample()
फ़ंक्शन का डिफ़ॉल्ट नो-लॉज-विकल्प-निर्दिष्ट ऑपरेशन कुछ ऐसा करने के लिए हैgradient2D()
(कम से कम एक टुकड़ा shader में), क्या यह साधारण स्क्रीन-स्पेस डेरिवेटिव का उपयोग करता है, या क्या यह सीधे rasterizer और प्रक्षेपित बनावट निर्देशांक के साथ काम करता है एक सटीक ढाल की गणना करने के लिए?
और अंत में, डिवाइस से डिवाइस तक इस व्यवहार में से कितना सुसंगत है? एक पुराना लेख (DirectX 9 के रूप में पुराना) मैंने जटिल उपकरण-विशिष्ट mipmap चयन को संदर्भित पढ़ा, लेकिन मुझे नहीं पता कि mipmap चयन नए आर्किटेक्चर पर बेहतर परिभाषित है या नहीं।