यदि आपको केवल प्रति-चेहरा मानदंडों की आवश्यकता है, और यदि आपके चेहरे के लिए टेक्सकोर्ड्स कड़ाई से 0/0, 0/1, 1/0, 1/1 (या आपके लेआउट के अनुरूप) हैं, तो आप 8 वाट्स के साथ एक क्यूब का निर्माण कर सकते हैं और या तो 30 (पुनरारंभ के साथ पट्टी) या 36 (सूची) अनुक्रमित। अपने वर्कशीट शेडर में SV_VertexID के आधार पर एक निरंतर सरणी लुकअप का उपयोग करके मानदंडों और टेक्सकोर्ड प्राप्त करें।
ऐसा करने का मतलब है कि आपको अपने शीर्ष बफ़र में टेक्सकोर्ड्स या मानदंडों को शामिल करने की आवश्यकता नहीं है, जो आपको मेमोरी सेविंग का और भी अधिक लाभ देगा।
आगे जाने पर, आप अभी भी 24 सेंट प्रति क्यूब तक जा सकते हैं, लेकिन इंस्टेंसेस का उपयोग भी कर सकते हैं। प्रत्येक क्यूब आपके वर्टेक्स बफर (1x1x1) में एक निश्चित आकार का होगा और आपके पास एक स्केलिंग फैक्टर और स्थिति होगी (यह मानते हुए कि आपके क्यूब्स घूमते नहीं हैं, एक मैट्रिक्स यदि वे करते हैं) प्रति-उदाहरण डेटा के रूप में। नॉन-रोटेटिंग केस में आपको एक बार 24 वर्ट की लागत आती है, लेकिन तब प्रत्येक क्यूब को पूरी तरह से निर्दिष्ट करने के लिए 6 फ्लोट की आवश्यकता होती है। घूर्णन मामले में आप 16 फ़्लोट्स को देख रहे हैं, लेकिन यहां तक कि एक पर्याप्त बचत भी है (आप मैट्रिक्स पर अड़चन सीपीयू-साइड की अधिक संभावना रखते हैं इस मामले में - गैर-घूर्णन मामले के लिए मक्खी पर मैट्रिक्स का निर्माण करना आपका वर्टिकल शेडर - भले ही यह प्रति-वर्टेक्स किया गया हो, इतना मूर्खतापूर्ण तेज़ है कि आपको इसके बारे में चिंता करने की भी ज़रूरत नहीं है)।
प्रति-चेहरा बनावट के लिए, बस एक बनावट सरणी का उपयोग करें। आपको यह सुनिश्चित करने की आवश्यकता है कि सरणी में प्रत्येक ऐसी बनावट एक ही आकार की है, ज़ाहिर है, और आपको अभी भी अपने वर्तमान बैच को तोड़ने की आवश्यकता होगी यदि सरणी को स्वयं बदलना होगा, लेकिन अन्यथा यह ठीक काम करेगा। अपनी शीर्ष परिभाषा में एक तीसरा टेक्सकोर्ड जोड़ें जो प्रत्येक चेहरे के लिए उपयोग करने के लिए सरणी स्लाइस को परिभाषित करता है।
आपको इसके साथ GS की आवश्यकता नहीं है, और इसे एक का उपयोग करने की तुलना में तेजी से चलाना चाहिए क्योंकि ज्यामिति shader चरण सक्षम होने से यह स्वयं का अतिरिक्त ओवरहेड लगाएगा।
मैंने अपने इंजन में बेंचमार्क कोड है कि बस इस विधि का उपयोग करके क्यूब्स का एक गुच्छा खींचता है, और मैं आसानी से 60,000 से अधिक क्यूब्स के माध्यम से चबा सकता हूं, जबकि 60fps को साफ करते हुए, अपेक्षाकृत कम-अंत GPU पर, और प्रक्रिया का अनुकूलन करने के लिए कुछ और किए बिना। । निश्चित रूप से मैं न तो प्रकाश कर रहा हूं और न ही उन्हें बनावट दे रहा हूं, लेकिन मेरे पास अल्फ़ा सम्मिश्रण सक्षम है, बैकलेस कलिंग अक्षम है, और कुल मिलाकर यह मेरे "भाग को अनुकूलित करने के लिए कुछ और नहीं करने" के खिलाफ संतुलन रखता है, इसलिए यह आपको इस तरह का एक उचित विचार देना चाहिए ballpark आप इस विधि से हिट कर सकते हैं।