आभासी बनावट वास्तव में कैसे कुशल हो सकती है?


27

संदर्भ के लिए, जो मैं उल्लेख कर रहा हूं वह तकनीक के लिए "जेनेरिक नाम" है (मेरा मानना ​​है कि) idTech 5 के MegaTexture तकनीक के साथ पेश किया गया है। वीडियो देखें यहाँ यह कैसे काम करता है पर एक नज़र के लिए।

मैं इससे संबंधित कुछ कागजात और प्रकाशनों को हाल ही में प्रस्तुत कर रहा हूं, और जो मुझे समझ नहीं आ रहा है वह यह है कि यह संभवतः कैसे कुशल हो सकता है। क्या इसे वर्चुअल टेक्सटाइल निर्देशांक में "ग्लोबल टेक्सचर पेज" स्पेस से यूवी निर्देशांक के निरंतर पुनर्गणना की आवश्यकता नहीं है? और यह कि ज्यामिति को पूरी तरह से बैचने के अधिकांश प्रयासों पर अंकुश कैसे नहीं लगाया जाता है? यह मनमाने ढंग से ज़ूमिंग की अनुमति कैसे दे सकता है? यह कुछ बिंदु पर बहुभुज उप-विभाजन की आवश्यकता नहीं होगी?

बस इतना ही मुझे समझ में नहीं आता है, और मैं इस विषय पर वास्तव में आसानी से स्वीकार्य संसाधनों को खोजने में असमर्थ रहा हूं।

जवाबों:


20

अवलोकन

वर्चुअल टेक्सचरिंग (VT), या स्पार्स वर्चुअल टेक्सचर का मुख्य कारण , जैसा कि इसे कभी-कभी कहा जाता है, मेमोरी ऑप्टिमाइज़ेशन के रूप में होता है। बात का सार केवल वीडियो मेमोरी में वास्तविक टेक्सल्स (पृष्ठों / टाइलों के रूप में सामान्यीकृत) में स्थानांतरित करना है जो आपको एक प्रदान किए गए फ्रेम के लिए आवश्यक हो सकता है। तो यह आपको ऑफ़लाइन या धीमी गति से भंडारण (HDD, ऑप्टिकल-डिस्क, क्लाउड) में बनावट के डेटा की तुलना में अधिक करने की अनुमति देगा, अन्यथा यह वीडियो मेमोरी या मुख्य मेमोरी पर भी फिट होगा। यदि आप आधुनिक ऑपरेटिंग सिस्टम द्वारा उपयोग की जाने वाली वर्चुअल मेमोरी की अवधारणा को समझते हैं , तो यह उसके सार में समान है (नाम दुर्घटना से नहीं दिया गया है)।

VT को इस अर्थ में UVs की पुनर्संरचना की आवश्यकता नहीं है कि आप एक मेष रेंडर करने से पहले प्रत्येक फ्रेम करेंगे, फिर वर्टेक्स डेटा को फिर से सबमिट करेंगे, लेकिन इसके लिए आने वाले UVs से अप्रत्यक्ष रूप से प्रदर्शन करने के लिए वर्टेक्स और फ्रेग्मेंट शेड्स में कुछ पर्याप्त काम की आवश्यकता होती है। हालांकि, एक अच्छे कार्यान्वयन में, यह अनुप्रयोग के लिए पूरी तरह से पारदर्शी होना चाहिए, अगर यह एक आभासी बनावट या पारंपरिक का उपयोग कर रहा है। दरअसल, ज्यादातर समय एक एप्लिकेशन दोनों प्रकार की बनावट, आभासी और पारंपरिक को मिलाएगा।

सिद्धांत में बैचिंग बहुत अच्छी तरह से काम कर सकती है, हालांकि मैंने कभी भी इसके विवरण पर ध्यान नहीं दिया। चूंकि ज्यामिति को समूहीकृत करने के सामान्य मानदंड बनावट हैं, और VT के साथ, दृश्य में प्रत्येक बहुभुज समान "असीम रूप से बड़ी" बनावट साझा कर सकता है, सैद्धांतिक रूप से, आप 1 ड्रॉ कॉल के साथ पूर्ण दृश्य ड्राइंग प्राप्त कर सकते हैं। लेकिन वास्तव में, अन्य कारक इस अव्यवहारिक बनाने में आते हैं।

वीटी के साथ मुद्दे

वीटी सेटअप में संभालना सबसे आसान काम है। यह एक स्थिर दृश्य के लिए बहुत आकर्षक लग सकता है, लेकिन एक बार जब चीजें बढ़ने लगती हैं, तो बाहरी बनावट के लिए स्ट्रीम करने की तुलना में अधिक बनावट वाले पृष्ठ / टाइलों का अनुरोध किया जाएगा। Async फ़ाइल IO और थ्रेडिंग मदद कर सकती है, लेकिन अगर यह एक रीयल-टाइम सिस्टम है, जैसे कि गेम में, आपको बस कुछ रेजोल्यूशन के लिए कम रेजोल्यूशन वाली टाइलों के लिए रेंडर करना होगा, जब तक कि हाई-रेज वाले नहीं आ जाते, तब तक एक धुंधली बनावट में जिसके परिणामस्वरूप। यहां कोई चांदी की गोली नहीं है और यह तकनीक के साथ सबसे बड़ा मुद्दा है, आईएमओ।

वर्चुअल टेक्सचरिंग भी पारदर्शिता को आसान तरीके से नहीं संभालती है, इसलिए पारदर्शी बहुभुजों को उनके लिए एक अलग पारंपरिक प्रतिपादन मार्ग की आवश्यकता होती है।

सभी सब में, वीटी दिलचस्प है, लेकिन मैं इसे हर किसी के लिए नहीं सुझाऊंगा। यह अच्छी तरह से काम कर सकता है, लेकिन इसे लागू करना और अनुकूलित करना कठिन है, साथ ही मेरे स्वाद के लिए बहुत सारे कोने के मामले और केस-विशिष्ट ट्विक्स भी हैं। लेकिन बड़े ओपन-वर्ल्ड गेम्स या डेटा विज़ुअलाइज़ेशन ऐप्स के लिए, यह उपलब्ध हार्डवेयर में सभी सामग्री को फिट करने का एकमात्र संभव तरीका हो सकता है। बहुत काम के साथ, इसे सीमित हार्डवेयर पर भी काफी कुशलता से चलाने के लिए बनाया जा सकता है, जैसे कि हम आईडी के रेज के PS3 और XBOX360 संस्करणों में देख सकते हैं ।

कार्यान्वयन

मैं कुछ हद तक ओपन-ईएस के साथ आईओएस पर वीटी काम करने में कामयाब रहा हूं। मेरा कार्यान्वयन "shippable" नहीं है, लेकिन अगर मैं चाहता था और संसाधन थे, तो मैं ऐसा कर सकता हूं। आप यहां स्रोत कोड देख सकते हैं , यह बेहतर विचार प्राप्त करने में मदद कर सकता है कि टुकड़े एक साथ कैसे फिट होते हैं। यहां iOS सिम पर डेमो का वीडियो चल रहा है। यह बहुत ही आकर्षक लग रहा है क्योंकि सिम्युलेटर शेड्स का अनुकरण करने में भयानक है, लेकिन यह एक डिवाइस पर आसानी से चलता है।

निम्नलिखित चित्र मेरे कार्यान्वयन में सिस्टम के मुख्य घटकों की रूपरेखा देते हैं। यह सीन के एसवीटी डेमो (लिंक डाउन बॉलो) से काफी अलग है, लेकिन यह आर्किटेक्चर के सबसे करीब है जो कि पहले जीपीयू प्रो बुक (लिंक बेलो) में पाए जाने वाले वर्चुअल टेक्स्ट्यूरिंग यूजिंग CUDA द्वारा प्रस्तुत पेपर के करीब है ।

आभासी बनावट प्रणाली

  • Page Filesआभासी बनावट हैं, पहले से ही टाइलों (AKA पृष्ठों) में एक प्रीप्रोसेसिंग चरण के रूप में काटा जाता है, इसलिए वे जब भी जरूरत होती है डिस्क से वीडियो मेमोरी में स्थानांतरित करने के लिए तैयार होते हैं। एक पेज फ़ाइल में mipmaps का पूरा सेट भी होता है, जिसे वर्चुअल mipmaps भी कहा जाता है ।

  • Page Cache Managerएक आवेदन-पक्ष का प्रतिनिधित्व करता है Page Tableऔर Page Indirectionबनावट। चूँकि ऑफलाइन स्टोरेज से मेमोरी में पेज बढ़ना महंगा होता है, हमें पहले से ही जो उपलब्ध है उसे फिर से लोड करने से बचने के लिए कैशे की जरूरत होती है। यह कैश एक बहुत ही सरल लिस्ट हाल ही में उपयोग किया गया (LRU) कैश है। कैश भी डेटा के अपने स्थानीय प्रतिनिधित्व के साथ भौतिक बनावट को अप-टू-डेट रखने के लिए जिम्मेदार घटक है।

  • Page Providerएक async काम कतार कि पृष्ठों दृश्य की एक विशेष दृश्य के लिए की जरूरत को लाने और उन्हें कैश करने के लिए भेज देंगे है।

  • Page Indirectionबनावट आभासी बनावट में प्रत्येक पृष्ठ / टाइल के लिए एक पिक्सेल, कि करने के लिए भेजे यूवी मैप कर देगा के साथ एक बनावट है Page Tableकैश बनावट वास्तविक Texel में डेटा होगा। यह बनावट काफी बड़ी हो सकती है, इसलिए इसे कुछ कॉम्पैक्ट प्रारूप का उपयोग करना होगा, जैसे RGBA 8: 8: 8: 8 या RGB 5: 6: 5।

लेकिन हम अभी भी एक महत्वपूर्ण टुकड़ा याद कर रहे हैं, और यह निर्धारित करना है कि कौन से पृष्ठों को भंडारण से कैश में लोड किया जाना चाहिए और परिणामस्वरूप Page Table। यही वह जगह है जहाँ प्रतिक्रिया पास और Page Resolverदर्ज करें।

प्रतिक्रिया पास दृश्य का एक पूर्व-रेंडर है, एक कस्टम shader के साथ और बहुत कम रिज़ॉल्यूशन पर, जो आवश्यक पृष्ठों की आईडी को कलर फ्रेमबफ़र पर लिख देगा। घन और क्षेत्र के ऊपर रंगीन पैचवर्क आरजीबीए रंग के रूप में एन्कोडेड वास्तविक पृष्ठ सूचकांक हैं। यह प्री-पास रेंडर तब मुख्य मेमोरी में पढ़ा जाता है और Page Resolverपेज इंडेक्स को डीकोड करने और नए अनुरोधों को आग के साथ संसाधित करता है Page Provider

प्रतिक्रिया पूर्व पास के बाद, दृश्य को वीटी लुकिंग शेड्स के साथ सामान्य रूप से प्रस्तुत किया जा सकता है। लेकिन ध्यान दें कि हम नए पेज के अनुरोध के समाप्त होने की प्रतीक्षा नहीं करते हैं, यह भयानक होगा, क्योंकि हम केवल सिंक्रोनस फ़ाइल IO पर ब्लॉक करेंगे। अनुरोध अतुल्यकालिक हैं और अंतिम दृश्य प्रदान किए जाने तक तैयार नहीं हो सकते हैं या नहीं हो सकते हैं। यदि वे तैयार हैं, मिठाई हैं, लेकिन यदि नहीं, तो हम हमेशा कैश में एक कम-रिज़ल्ट वाले मिपमैप का लॉक पेज एक कमबैक के रूप में रखते हैं, इसलिए हमारे पास उपयोग करने के लिए कुछ बनावट के आंकड़े हैं, लेकिन यह धुंधला होने वाला है।

अन्य संसाधनों की जाँच के लायक है

VT अभी भी कंप्यूटर ग्राफिक्स पर कुछ हद तक गर्म विषय है, इसलिए इसमें बहुत अच्छी सामग्री उपलब्ध है, आपको बहुत कुछ खोजने में सक्षम होना चाहिए। अगर कुछ और है तो मैं इस जवाब को जोड़ सकता हूं, कृपया बेझिझक पूछें। मैं इस विषय पर थोड़ा कठोर हूँ, पिछले एक साल से इसके बारे में ज्यादा नहीं पढ़ा है, लेकिन यह सामान को फिर से लाने के लिए मेमोरी के लिए अच्छा है :)


हे, उत्कृष्ट उत्तर के लिए धन्यवाद। मुझे पता है कि यह आम तौर पर होता है, लेकिन मेरे पास विभिन्न मुद्दे हैं, इसलिए मैं ज्यादातर चीजों के बारे में सोचता हूं - भविष्य के लिए विषयों का सहज अवलोकन प्राप्त करने के लिए (मुझे ठीक से सीखने में डर लगता है और चीजों को लागू करना मेरी पहुंच से बाहर है। ) - वैसे भी, यदि संभव हो, तो क्या आप प्रक्रिया को रेखांकित करते हुए एक छद्मकोड उदाहरण को पोस्ट कर सकते हैं, आदर्श रूप से, लेकिन जरूरी नहीं, सचित्र?
लेलमेड्डन

1
@Llamageddon, यह सिर्फ इतना है कि मैं अभी भी हाथ में एक आरेख था;) मुझे डर है कि छद्म कोड प्रदान करने के लिए थोड़ा मुश्किल हो रहा है, क्योंकि इसमें काफी वास्तविक कोड है। लेकिन मुझे उम्मीद है कि विस्तारित उत्तर तकनीक का एक सामान्य विचार देने में मदद करता है।
ग्लैमपर्ट

3
यह ध्यान देने योग्य है कि अधिकांश आधुनिक हार्डवेयर अब प्रोग्राम योग्य पेज टेबल को उजागर करते हैं, जो पुनर्निर्देशन बनावट की आवश्यकता को समाप्त करते हैं। यह उदाहरण के माध्यम से सामने आ रहा है directx12 आरक्षित संसाधनों , पर बनाता है जो इंटरनेट 11 टाइलों संसाधनों , या ओपन विरल बनावट
MooseBoys

1
@ लैलामेड्डन, प्री-पास कम रेस में कम से कम कंप्यूटिंग और मेमोरी को बचाने के लिए किया जा सकता है, क्योंकि एक पेज के लिए पिक्सल आम तौर पर दोहराए जाएंगे (आप मेरे डेमो में बड़े रंगीन वर्गों को नोटिस कर सकते हैं)। आप सही हैं कि यह अंततः एक दृश्य पृष्ठ को याद कर सकता है, लेकिन यह आमतौर पर एक बड़ा दृश्य प्रभाव नहीं होने वाला है क्योंकि सिस्टम को हमेशा कैश में उपलब्ध पूरे वीटी के कम से कम न्यूनतम मापांक को रखना चाहिए। मैंने जो दूसरा पेपर जोड़ा है उसमें परिशिष्ट में सभी शेडर उदाहरण हैं, आप अपने स्वयं के प्रोजेक्ट के लिए रेपो का भी उल्लेख कर सकते हैं, वे समान हैं।
glampert

1
@glampert आह, मैं देख रहा हूं; यह समझ आता है। फिर भी, मुझे लगता है कि पारदर्शिता को संभालने के लिए बहुत सारे विकल्प हैं; पेज आईडी पास में, आप (या तो हिस्टोग्रामिंग सभी पृष्ठों को देख सकते हैं, जब तक कि बड़ी संख्या में पारदर्शी परतें न हों), या के -बफर दृष्टिकोण का उपयोग करें , या यहां तक ​​कि बस आधारभूत बनावट बनावट निवास जिस पर ऑब्जेक्ट्स पास हैं कैमरा (एक प्रतिक्रिया पास में उन्हें प्रदान करने के विपरीत)।
नाथन रीड

11

वर्चुअल टेक्सचर बनावट एटलस का तार्किक चरम है।


एक बनावट एटलस एक विशालकाय बनावट है, जिसमें इसके अंदर व्यक्तिगत जाल के लिए बनावट होती है:

बनावट एटलस उदाहरण

बनावट atlases इस तथ्य के कारण लोकप्रिय हो गई कि बदलते बनावट के कारण GPU पर एक पूर्ण पाइपलाइन फ्लश हो जाता है। मेष बनाते समय, UVs को संकुचित / स्थानांतरित किया जाता है ताकि वे संपूर्ण बनावट एटलस के सही 'भाग' का प्रतिनिधित्व करें।

जैसा कि @ nathan-reed ने टिप्पणियों में उल्लेख किया है, बनावट atlases की मुख्य कमियों में से एक दोहराव, दबाना, सीमा, आदि जैसे रैप मोड खो रहे हैं। इसके अलावा, यदि बनावट के चारों ओर पर्याप्त सीमा नहीं है, तो आप गलती से कर सकते हैं। फ़िल्टरिंग करते समय आसन्न बनावट से नमूना। इससे रक्तस्राव कलाकृतियों को हो सकता है।

बनावट एटलस में एक प्रमुख सीमा होती है: आकार। ग्राफिक्स एपीआई एक नरम सीमा रखता है कि बनावट कितनी बड़ी हो सकती है। उस ने कहा, ग्राफिक्स मेमोरी केवल इतनी बड़ी है। तो आपके वी-राम के आकार द्वारा दी गई बनावट के आकार की एक कठिन सीमा भी है। आभासी बनावट इस समस्या को हल करती है, वर्चुअल मेमोरी से अवधारणाओं को उधार लेकर ।

आभासी बनावट इस तथ्य का फायदा उठाती है कि ज्यादातर दृश्यों में, आपको केवल सभी बनावट का एक छोटा हिस्सा दिखाई देता है। अतः, केवल उस उप-विषयवस्तु को ही विक्रम में होना चाहिए। बाकी मुख्य रैम या डिस्क पर हो सकता है।

इसे लागू करने के कुछ तरीके हैं, लेकिन मैं शॉन बैरेट द्वारा उनके जीडीसी वार्ता में वर्णित कार्यान्वयन की व्याख्या करूंगा । (जो मैं देखने की सलाह देता हूं)

हमारे पास तीन मुख्य तत्व हैं: आभासी बनावट, शारीरिक बनावट और देखने की मेज।

आभासी बनावट

आभासी बनावट सैद्धांतिक मेगा एटलस का प्रतिनिधित्व करती है अगर हमारे पास सब कुछ फिट करने के लिए पर्याप्त विक्रम होता। यह वास्तव में कहीं भी स्मृति में मौजूद नहीं है। शारीरिक बनावट यह दर्शाती है कि वास्तव में हमारे पास कौन से पिक्सेल डेटा हैं। लुकअप टेबल दोनों के बीच मैपिंग है। सुविधा के लिए, हम सभी तीन तत्वों को समान आकार की टाइलों, या पृष्ठों में तोड़ देते हैं।

लुकअप तालिका भौतिक बनावट में टाइल के ऊपरी-बाएँ कोने के स्थान को संग्रहीत करती है। तो, पूरे आभासी बनावट के लिए एक यूवी दिया, हम शारीरिक बनावट के लिए इसी यूवी कैसे प्राप्त करते हैं?

सबसे पहले, हमें भौतिक बनावट के भीतर पृष्ठ का स्थान खोजने की आवश्यकता है। फिर हमें पृष्ठ के भीतर यूवी के स्थान की गणना करने की आवश्यकता है। अंत में हम भौतिक बनावट के भीतर यूवी के स्थान को प्राप्त करने के लिए इन दोनों ऑफसेटों को एक साथ जोड़ सकते हैं

float2 pageLocInPhysicalTex = ...
float2 inPageLocation = ...
float2 physicalTexUV = pageLocationInPhysicalTex + inPageLocation;


PageLocInPhysicalTex की गणना करना

अगर हम लुकअप टेबल को आभासी बनावट में टाइलों की संख्या के समान आकार का बनाते हैं, तो हम सिर्फ निकटतम पड़ोसी नमूने के साथ लुकअप टेबल का नमूना ले सकते हैं और हमें पृष्ठ की ऊपरी-बाएँ कोने का स्थान भौतिक बनावट के भीतर मिल जाएगा।

float2 pageLocInPhysicalTex = lookupTable.Sample(virtTexUV, nearestNeighborSampler);


InPageLocation की गणना

inPageLocation एक यूवी समन्वय है जो पूरे बनावट के शीर्ष-बाएं के बजाय पृष्ठ के शीर्ष-बाएं के सापेक्ष है।

इसकी गणना करने का एक तरीका पृष्ठ के शीर्ष बाईं ओर के यूवी को घटाकर, फिर पृष्ठ के आकार को स्केल करना है। हालाँकि, यह काफी गणित है। इसके बजाय, हम शोषण कर सकते हैं कि IEEE फ़्लोटिंग पॉइंट का प्रतिनिधित्व कैसे किया जाता है। IEEE फ़्लोटिंग पॉइंट बेस 2 फ्रैक्शंस की एक श्रृंखला द्वारा संख्या के भिन्नात्मक भाग को संग्रहीत करता है।

यहाँ छवि विवरण दर्ज करें

इस उदाहरण में, संख्या है:

number = 0 + (1/2) + (1/8) + (1/16) = 0.6875

अब आभासी बनावट के सरलीकृत संस्करण को देखें:

सरल आभासी बनावट

1/2 बिट हमें बताता है कि क्या हम बनावट के दाईं ओर या दाईं ओर हैं। 1/4 बिट हमें बताता है कि हम आधे में से किस तिमाही में हैं। इस उदाहरण में, चूंकि बनावट 16 में विभाजित है, या 4 एक तरफ, ये पहले दो बिट्स हमें बताते हैं कि हम किस पेज में हैं। बिट्स हमें पृष्ठ के अंदर का स्थान बताते हैं।

हम एक्सपैट 2 () के साथ फ्लोट को शिफ्ट करके और उन्हें फ्रैक्चर से बाहर निकालकर शेष बिट्स प्राप्त कर सकते हैं।

float2 inPageLocation = virtTexUV * exp2(sqrt(numTiles));
inPageLocation = fract(inPageLocation);

जहाँ numTiles एक int2 है जो बनावट के अनुसार प्रति टाइल की संख्या दे रहा है। हमारे उदाहरण में, यह (4, 4) होगा

तो चलो हरे बिंदु के लिए inPageLocation की गणना करते हैं, (x, y) = (0.6875, 0.375)

inPageLocation = float2(0.6875, 0.375) * exp2(sqrt(int2(4, 4));
               = float2(0.6875, 0.375) * int2(2, 2);
               = float2(1.375, 0.75);

inPageLocation = fract(float2(1.375, 0.75));
               = float2(0.375, 0.75);

एक आखिरी बात हम करने से पहले करते हैं। वर्तमान में, InPageLocation आभासी बनावट 'अंतरिक्ष' में एक यूवी समन्वय है। हालांकि, हम भौतिक बनावट 'स्पेस' में एक यूवी समन्वय चाहते हैं। ऐसा करने के लिए हमें बस inPageLocation को आभासी बनावट के आकार से भौतिक बनावट के आकार के अनुपात में स्केल करना होगा

inPageLocation *= physicalTextureSize / virtualTextureSize;



तो समाप्त समारोह है:

float2 CalculatePhysicalTexUV(float2 virtTexUV, Texture2D<float2> lookupTable, uint2 physicalTexSize, uint2 virtualTexSize, uint2 numTiles) {
    float2 pageLocInPhysicalTex = lookupTable.Sample(virtTexUV, nearestNeighborSampler);

    float2 inPageLocation = virtTexUV * exp2(sqrt(numTiles));
    inPageLocation = fract(inPageLocation);
    inPageLocation *= physicalTexSize / virtualTexSize;

    return pageLocInPhysicalTex + inPageLocation;
}

मैं नहीं हूँ, मैं वर्चुअल टेक्सचरिंग की बात कर रहा हूँ, जिसे idTech 5 के MegaTexture तकनीक के रूप में जाना जाता है । यह भी देखें इस और इस । मैंने इसे कई आधुनिक इंजनों के रेंडरिंग पाइपलाइनों के अवलोकन में, और कुछ पेपरों में देखा है, जो शैडैप्स के लिए एक समान दृष्टिकोण का उपयोग करते हैं। यह बनावट atlases के साथ आम में बहुत कुछ है, हाँ, यह उन्हें एक तरह से उपयोग करता है, लेकिन मैं इसे बनावट atlases के साथ भ्रमित नहीं कर रहा हूं।
लेलमेड्डन

आह। लिंक के लिए धन्यवाद। क्या आप उन्हें प्रश्न में जोड़ सकते हैं। मैं अपने उत्तर को तदनुसार अपडेट करूंगा
रिचीसमम्स

3
IMO, सरल बनावट एटलस (वर्चुअल टेक्सचर नहीं) की मुख्य खामी है कि आप रिपीट और क्लैम्प जैसे रैप मोड खो देते हैं और फ़िल्टरिंग / माइपमैपिंग के कारण ब्लीडिंग होती है - फ्लोटिंग-पॉइंट प्रिसिजन नहीं। मुझे फ्लोट प्रिसिजन को साधारण (गैर-आभासी) बनावट के लिए एक समस्या बनते हुए देखकर आश्चर्य होगा; यहां तक ​​कि एक 16K बनावट (वर्तमान एपीआई द्वारा अनुमत अधिकतम) वास्तव में फ्लोट परिशुद्धता के लिए पर्याप्त बड़ा नहीं है।
नाथन रीड 20

@ रीचैम्स Btw, मुझे लगता है कि आपका उत्तर एक अच्छा है, भले ही एक अलग सवाल हो। आपको एक प्रश्नोत्तर पोस्ट बनाना चाहिए।
लेलमेड्डन

हम्म, यह इसे काफी अच्छी तरह से समझाता है, हालांकि मैं वास्तव में यह नहीं समझता कि यह एमआईपी स्तरों के साथ कैसे काम करता है। काश मैं इसे समझने के साथ अपनी विशिष्ट समस्या को लिख सकता था, लेकिन यह मुझे
याद दिलाता है
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.