खेल में एक फ्रेम में कितने सक्रिय शेड्स मैं आमतौर पर उपयोग करना चाहिए? 5 या 100 से अधिक की तरह?


20

आधुनिक खेलों में एक दृश्य में एक ही समय में, कितने शेड सक्रिय होते हैं? मुझे पता है कि प्रत्येक फ्रेम में उनके बीच स्विच करने वाले खेलों के साथ कई शेड्स का उपयोग किया जा रहा है, और यह शेडर के माध्यम से वस्तुओं को खींचना आम है:

  1. सभी ऑब्जेक्ट्स को shader one के साथ ड्रा करें
  2. एक shader से shader दो में बदलें
  3. शेडर दो के साथ सभी ऑब्जेक्ट ड्रा करें

फिर भी, मुझे पता है कि यह उतना आसान नहीं है, विशेष रूप से पूरे दृश्य के लिए एक चमक प्रभाव जैसे प्रभाव के साथ, बनावट को प्रस्तुत करना, आदि, लेकिन मुझे लगता है कि हम यह मान सकते हैं कि यह अधिकतर समय काम करता है, है ना? "Shader द्वारा समूह" दृष्टिकोण अच्छा है, क्योंकि shaders को स्विच करना एक महंगा ऑपरेशन है।

एक तरफ से, आपके पास बहुत अधिक शेड नहीं हो सकते हैं, क्योंकि आप दृश्य को तेजी से प्रस्तुत करना चाहते हैं। दूसरी ओर, आपको त्वचा, धातु, पानी आदि के लिए कई अलग-अलग रंगों (या शाखाओं के साथ उबेर-समान) की आवश्यकता होती है।

कितने (और कौन से) अलग-अलग शेड्स पीसी, (डायरेक्टएक्स 11, अगर यह मायने रखता है) के लिए सैद्धांतिक, आधुनिक, तीसरे व्यक्ति, 3 डी जासूसी खेल होगा? यह 5, 20 या 100 से अधिक सक्रिय शेड की तरह होगा, केवल "फ्रेम एक्स" पर, सक्रिय रूप से गिनते हुए? मुझे पता है कि यह एक संख्या नहीं है, लेकिन मुझे आश्चर्य है कि पीसी गेम के लिए कौन से पैमाने और कारक महत्वपूर्ण हैं।


मेरे नमूने के खेल में, मैं प्रति फ्रेम लगभग 9-11 का उपयोग करूंगा (इसे अलग-अलग, छोटे शेड्स या एक uber-shader के रूप में गिनें - अब कोई फर्क नहीं पड़ता):

  1. त्वचा की रंगत
  2. आई शैडर (बहुत ज्यादा नहीं; लेकिन वे अलग हैं)
  3. धातु शैडर
  4. ग्राउंड शैडर
  5. हिमपात / वर्षा शैडर (यदि आवश्यक हो)
  6. पानी की छाया (यदि पानी दृश्य में मौजूद है)
  7. चमक shader (केवल जब कुछ विशेष प्रभाव शामिल हो)
  8. प्रकाश एमिटर शेडर (स्ट्रीट लैंप आदि)
  9. मानक shader (अन्य सभी के लिए, बस मानक छायांकन)
  10. सामान्य नक्शे के साथ मानक shader
  11. 2D shader (GUI आदि के लिए)

क्या यह "बहुत" या "बहुत नहीं" है? क्या मुझे कुछ महत्वपूर्ण शेड्स के बारे में भूल गया जो मुझे चाहिए?

जवाबों:


28

यह वास्तव में तकनीक पर निर्भर करता है। फ़ॉरवर्ड रेंडर में आपके पास अक्सर हर अलग सामग्री प्रकार के लिए एक shader होता है। एएए गेम्स में जो इस तकनीक के शेड का उपयोग करते हैं, वे अक्सर सामग्री पर विकल्पों के एक सेट से उत्पन्न होते हैं जो एक कलाकार सेट कर सकता है। इससे सैकड़ों शेड्स (1) हो सकते हैं। लेकिन बता दें कि आम तौर पर शेड्स की संख्या 40 के क्रम में होती है

आस्थगित शेडिंग / रेंडरिंग में आप अक्सर जी-बफर में सामग्री प्रकार को एन्कोड करते हैं और बाद में विभिन्न सामग्रियों के प्रकारों को सही ढंग से प्रस्तुत करने के लिए एक बड़े शेडर का उपयोग करते हैं। यह बहुत कम है, लेकिन अधिक जटिल है, shaders की ओर जाता है। बता दें कि यहां शेड्स की संख्या 5 के क्रम में है।

(1) स्रोत: मैंने क्रिस्टल डायनेमिक्स के एक ठेकेदार के लिए काम किया था जहाँ मैंने टॉम्ब रेडर के लिए उत्पन्न होने वाले शेड्स की संख्या को कम करने के लिए एक उपकरण बनाया था क्योंकि स्वचालित पीढ़ी हाथ से बाहर हो रही थी;)। लक्ष्य 40 या कुछ ऐसा करने के आदेश के लिए shaders की संख्या को कम करना था।


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

s / कम / कम / ...
त्रुटि

3

मुझे पता है कि आप पीसी के लिए एक जवाब चाहते थे। लेकिन मैं आईओएस में जो करता हूं उसके लिए जवाब दूंगा और मुझे आपका चेकमार्क मिलने की उम्मीद नहीं है।

ऐसा लगता है कि आपके पास सही विचार है। यह हालांकि हर ऐप के लिए अलग-अलग होगा। अंत में यह आपके इच्छित फ्रेम दर को प्राप्त करने के लिए क्या कर रहा है, इसके बारे में है। IPhone पर मेरा लक्ष्य दर 60 है। 30 से नीचे आने के लिए मुझे यह पसंद नहीं है। जब मेरे पास कई सौम्य स्प्रिट आधारित कणों के साथ एक विस्फोट होता है, तो यह iphone5 पर 30 से नीचे हो जाता है और 4. पर बहुत कम होता है। मुझे कुछ उपकरणों पर जटिलता को कम करने के बारे में निर्णय लेना है। और कभी-कभी यह निर्णय प्रभाव डालता है।

लेकिन यह आम तौर पर कितने शेड्स को प्रभावित नहीं करता है, बल्कि मैं अपने शेड्यूल रेट लक्ष्य के आधार पर किसी कार्य के लिए उपयोग करता हूं।

मेरी राय में जब सही ढंग से इस्तेमाल किया जाता है तो फ्रेम दर बढ़ जाती है। मेरे पास एक ऐप है जिसमें 80 शेड्स हैं, लेकिन यह उन सभी को एक फ्रेम पर उपयोग नहीं करता है - शायद लगभग 10.। और यह उन्हें आवश्यकतानुसार संकलित करता है और उन सभी को दृश्यों के बीच जोड़ता है। और मेरे हार्डवेयर पर मैंने shader की गिनती प्रभाव फ्रेम दर नहीं देखी है। केवल तकनीकों में इस्तेमाल किया गया। लेकिन मुझे यकीन है कि मैं सोचता हूं कि 2 समान शेड्स का उपयोग करना फ्रेम दर के लिए बेहतर है, जो कि अधिक जटिल है।

मेरे पास भी शेड हैं जो गुणवत्ता को कम करते हैं यदि रेंडरिंग धीमा है या धीमी डिवाइस पर है। मैं iPhone 5 पर सामान्य मैपिंग का उपयोग करता हूं, लेकिन shader को एक स्वैप करता हूं जो iPhone 4 पर सामान्य मैपिंग नहीं करता है।

मुझे रॉय का जवाब पसंद है और मैं हमेशा यह जानने की कोशिश कर रहा हूं कि "असली" खेल कैसे बने। जब से मैंने स्वयं को सिखाया है मुझे कभी नहीं पता है कि दिन की मेरी महान खोज सिर्फ यह है कि यह आम तौर पर कैसे किया जाता है या अभी भी वास्तविक पेशेवरों से कुछ कदम पीछे है।


1
इस तथ्य से कोई समस्या नहीं है कि आपका जवाब "आईओएस के लिए है"। मैंने पीसी के बारे में मुख्य रूप से कहा क्योंकि मैं इससे बचना चाहता हूं "यह प्लेटफॉर्म पर निर्भर करता है" संक्षिप्त प्रतिक्रिया;) शायद आपका जवाब मेरे लिए 100% नहीं है। लेकिन फिर भी, इसके कुछ प्लेटफ़ॉर्म-स्वतंत्र निष्कर्ष हैं इसलिए मैंने इसे अच्छा पाया है। और समुदाय के अन्य सदस्य (जो आईओएस का उपयोग करते हैं) हो सकता है कि यह और भी उपयोगी हो, इसलिए धन्यवाद और वोट-अप मुझ से :)
पोलग्राफिक

1

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

आपके गेम में पॉप-अप की अनुमतियों की मात्रा को सीमित करने में मदद करने का एक तरीका "ऑबशेडर" तकनीक को लागू करना है, जिसके द्वारा लगभग हर shader एक विलक्षण shader से प्राप्त होता है, और अंतर और विशेष व्यवहार को एक प्रीप्रोसेसर के माध्यम से स्वैप किया जाता है। विशेष प्रभावों के लिए पाठ्यक्रम के अपवाद हैं जैसे कि क्षेत्र की गहराई, परिवेश रोड़ा और आगे।

इस बिंदु तक एएए गेम्स के साथ मेरे अनुभव ने दिखाया है कि सक्रिय एक दो दर्जन शेड्स अनुचित नहीं हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.