बहुत धीमी Direct3D बनावट का नमूना


9

इसलिए मैं Direct3D 9 का उपयोग करके एक छोटा गेम लिख रहा हूं और मैं इलाके के लिए मल्टीटेक्स्टिंग का उपयोग कर रहा हूं। मैं सब कर रहा हूँ 3 बनावट और एक मिश्रण का नमूना है और मिश्रण नक्शे से रंग चैनलों के आधार पर तीन बनावट से समग्र रंग प्राप्त कर रहा है। वैसे भी, जब मैं 1 से अधिक बनावट का नमूना लेता हूं, तो मुझे बड़े पैमाने पर फ्रेम दर में गिरावट आ रही है, मैं 120+ एफपीएस से 50 के नीचे तक जा रहा हूं।

यह HLSL कोड धीमा होने के लिए जिम्मेदार है:

float3 ground = tex2D(GroundTex, multiTex).rgb;
float3 stone  = tex2D(StoneTex, multiTex).rgb;
float3 grass  = tex2D(GrassTex, multiTex).rgb;
float3 blend  = tex2D(BlendMapTex, blendMap).rgb;

क्या मैं गलत कर रहा हूँ? अगर किसी के पास बनावट के नमूने या किसी भी चीज़ के बारे में कोई जानकारी या सुझाव हैं, तो यह अच्छा होगा।

धन्यवाद।


आपके पास क्या हार्डवेयर है? चार बनावट नमूने किसी भी नए हार्डवेयर पर समस्या नहीं होनी चाहिए।
एक्सल गेनिंग

मेरे पास एक Radeon X1950 है, हाँ यह कुछ साल पुराना है, यदि अधिक नहीं। मुझे लगता है कि यह शायद सबसे अच्छा हार्डवेयर नहीं है। तुम क्या सोचते हो ?
डॉटमिन

जवाबों:


9

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

विकिपीडिया - एक बनावट एटलस एक बड़ी छवि है, या "एटलस" जिसमें कई छोटी उप-छवियां होती हैं, जिनमें से प्रत्येक 3 डी ऑब्जेक्ट के कुछ भाग के लिए एक बनावट है। उप-बनावट को एटलस पर ऑब्जेक्ट के uvmap की बनावट निर्देशांक को संशोधित करके प्रस्तुत किया जा सकता है, अनिवार्य रूप से यह बता रहा है कि इसकी बनावट किस हिस्से में है। एक एप्लिकेशन में जहां कई छोटे बनावट अक्सर उपयोग किए जाते हैं, यह अक्सर अधिक कुशल होता है। टेक्सचर एटलस में टेक्सचर को स्टोर करें जो ग्राफिक्स हार्डवेयर द्वारा एक यूनिट के रूप में व्यवहार किया जाता है।

यह एक GPU के लिए एक ही बार में 4 बार बनाम 4 छवियों बनाम एक बड़ी बनावट का नमूना लेने के लिए अधिक कुशल है। यहाँ एक इलाके बनावट एटलस का एक उदाहरण है।

वैकल्पिक शब्द


1
सलाह के लिए धन्यवाद, मैंने एक बनावट एटलस का उपयोग करके अपने शेडर को लागू किया है, मैं "केवल" अब 109fps प्राप्त कर रहा हूं, लेकिन यह उस 55fps से एक बेहतर सुधार है जो मुझे मिल रहा था। धन्यवाद!
डॉटमिन

1
एक अच्छे उत्तर के लिए +1। क्या मैं पूछ सकता हूं कि आपको वह बनावट एटलस छवि कहां मिली है? यह किसी भी उपयोग के लिए मालिकाना या मुफ्त है?
कैमरून

4

एक और बात पर विचार करना बनावट बनावट है। क्या यह एक कच्चा 32bpp बनावट है? यदि हां, तो एक संपीड़ित डीएक्सटी 1 बनावट का उपयोग करने पर विचार करें, जो 4 बिट्स / पिक्सेल (अंतरिक्ष का 1/8 वां हिस्सा लेना), या डीएक्सटी 5 यदि आपको अल्फा चैनल की आवश्यकता है, तो 8 बिट्स / पिक्सेल।

बनावट के डेटा के आकार को कम करने से बनावट स्मृति बैंडविड्थ आवश्यकताओं में कमी, और बनावट कैश प्रदर्शन में सुधार होना चाहिए।

इसके अलावा, जांच लें कि आपने अधिकतम गुणवत्ता वाला अनिसोट्रोपिक फ़िल्टरिंग सेट नहीं किया है - जो उचित लागत जोड़ सकता है।


सलाह के लिए thx, मैं अगली बार कोशिश करूँगा।
dotminic

3

क्या आपके बनावट में mipmaps हैं?

बिना मानचित्रण के, बनावट का नमूना विशेष रूप से महंगा हो सकता है (कैश मिस का भार)


हां, टेक्सचर में mipmaps हैं, मैंने उन्हें DirectX बनावट उपकरण से * .dds के रूप में निर्यात किया है। लेकिन वे व्यावसायिक खेलों में बनावट का उपयोग कैसे करते हैं जहां सभी जगह उच्च डीईएफ़ बनावट का भार होता है? मैं सिर्फ 1 बनावट एटलस का नमूना ले रहा हूं और एक इलाके में प्रतिपादन करते हुए 109 एफपीएस की एक फ्रेम दर प्राप्त कर रहा हूं, सभी जीपीयू पर।
डॉटमिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.