OpenGL के टेक्सेलफच और बनावट अलग-अलग कैसे होते हैं?


18

मैं बीच texelFetchऔर मुख्य अंतर को समझता हूं texture, लेकिन विवरण के बारे में कुछ प्रश्न हैं:

  • क्या texelFetchएक प्रदर्शन दंड शामिल है? जैसे कि कैश का इस्तेमाल नहीं करना या ऐसे?
  • कर रहे हैं texelFetchऔर textureपरस्पर विनिमय का उपयोग करते समय GL_NEAREST?

1
आप एक टेस्ट केस लिख सकते हैं और देख सकते हैं ...
ThorinII

1
क्या आप किसी उत्तर को स्वीकार करना भूल गए हैं, या यह अभी भी एक खुला मुद्दा है?
एको

जवाबों:


23

texelFetchसे काफी अलग है texture

textureआपकी सामान्य बनावट एक्सेस फ़ंक्शन है जो फ़िल्टरिंग और सामान्यीकृत ( [0,1]) बनावट निर्देशांक को संभालती है । texelFetchसीधे बनावट में नोवेल का उपयोग करता है (कोई फ़िल्टरिंग नहीं) अप्राकृतिक निर्देशांक का उपयोग करके (जैसे (64,64)कि 128x128 बनावट बनाम (.5,.5)सामान्यीकृत निर्देशांक में मध्य-ईश टेक्सल में )।


4
+1 मैं जोड़ना चाहूंगा कि टेक्सेलफच डेटा एक्सेस के लिए है जब बनावट विशेष रूप से एक छवि के रूप में प्रदर्शित होने के लिए नहीं होती है, लेकिन बनावट के विपरीत अन्य प्रकार के डेटा, जो टेक्सल्स तक पहुंचते हैं जब वे छवियों के रूप में उपयोग करने के लिए होते हैं, इसलिए यह फ़िल्टरिंग आदि का उपयोग करता है -
अवधारणा 3 डी

क्या प्रदर्शन में अंतर है?
लेनार होयट

1
@ mcb: हो सकता है, लेकिन मुझे उम्मीद नहीं है कि यह बहुत बड़ा होगा, और यह हार्डवेयर विक्रेता द्वारा बहुत भिन्न होगा। प्रदर्शन बिल्कुल गलत मीट्रिक है जिसका उपयोग इन निर्णयों में से किसका उपयोग करने के लिए किया जाता है: उस स्थिति का उपयोग करें जो आपकी स्थिति के लिए सही है (आपको या तो हार्डवेयर के फ़िल्टरिंग की आवश्यकता है और इसलिए textureआपको फ़िल्टरिंग नहीं करने के लिए हार्डवेयर का उपयोग करना चाहिए या आपको इसकी आवश्यकता है और इसलिए इसका उपयोग करना चाहिए texelFetch)।
सीन मिडिलडच

3
@SeanMiddleditch इस मामले में गलत मीट्रिक का प्रदर्शन कैसा है? यदि texelFetchतेज़, और निकटतम पड़ोसी फ़िल्टरिंग सफ़ेदी है, तो आप एनएन फ़िल्टरिंग के संदर्भ को किसी भी कारण से नहीं बदल सकते हैं, इसे पसंद करना उचित होगा texture
लेनार होयट

@ एमसीबी: texelFetchऔर textureमौलिक तरीकों से अलग तरीके से काम करें। इनपुट भी देखें: बनावट निर्देशांक बनाम सामान्यीकृत निर्देशांक। वे विभिन्न उद्देश्यों की पूर्ति करते हैं। एक दूसरे का अनुकूलन नहीं है।
शॉन मिडिलडविच

6

चूंकि कोई स्वीकृत जवाब नहीं है, मैं कुछ जानकारी जोड़ता हूं, मैं चाहता था कि उनके उत्तर में पहले से ही शॉन द्वारा कही गई चीजें न जोड़ें।

टेक्सेलफैच बनावट को एक छवि के रूप में मानता है, जिससे आप पिक्सल की सामग्री तक पहुंच सकते हैं। आप आमतौर पर ऐसा करते हैं, जब आपको उस सामग्री की आवश्यकता होती है, जो कुछ ही समय में उपयोगी होती है:

  • कुछ पोस्ट प्रोसेसिंग फिल्टर्स (गुआसियन ब्लर टेक्सचर सैंपल इंटरपोलेशन का फायदा उठाते हैं और इसलिए यह टेक्सेलफच का उपयोग नहीं कर सकते हैं)
  • जब कोने को बनावट से डेटा पढ़ने की आवश्यकता होती है और यह एक ऑपरेशन है जो 2 निर्देशांक पर निर्भर करता है

टेक्स 2 डी टेक्सचर को टेक्सचर की तरह मानता है । आप एक पिक्सेल की सटीक सामग्री नहीं चाहते हैं, लेकिन आप सबसे यथार्थवादी परिणाम चाहते हैं। एक मानक बनावट पढ़ा गया एक बहुत ही जटिल ऑपरेशन है और इसमें एक या एक से अधिक mipmap स्तरों से प्रक्षेपित डेटा पढ़ना शामिल है और फिर यह फिर से प्रक्षेपित होता है। उन सभी महंगे ऑपरेशन दृश्य कलाकृतियों से बचने के लिए हैं।

GL_NEAREST समान काम नहीं करेगा क्योंकि सबसे छोटे बहुभुजों पर आप छोटे mipmap स्तर में डेटा पढ़ रहे हैं, वही सटीक डेटा नहीं है जो आप टेक्सल भ्रूण से पढ़ेंगे।

एक मामला है जहां टेक्स 2 डी (लगभग) टेक्सेलफच के समान काम करता है:

  1. फ़िल्टर GL_NEAREST है
  2. आप 1 स्तर के साथ एक अधूरा मिपम पिरामिड का उपयोग कर रहे हैं
  3. आपके UVs सामान्यीकृत शीर्ष घटक नहीं हैं (लेकिन आपको उन्हें छाया में सामान्य करना होगा)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.