Com2uS का Summoners War: Chronicles अमेरिका(WW) और दक्षिण कोरिया के लिए, Android पर रेंडर करने के लिए खास तौर पर Vulkan का इस्तेमाल करता है. इससे परफ़ॉर्मेंस में 30% तक सुधार होता है.
Vulkan एक आधुनिक, क्रॉस-प्लैटफ़ॉर्म 3D ग्राफ़िक एपीआई है. इसे डिवाइस के ग्राफ़िक हार्डवेयर और आपके गेम के बीच के अंतर को कम करने के लिए डिज़ाइन किया गया है. OpenGL ES की तुलना में, Vulkan में सीपीयू का इस्तेमाल कम होता है. साथ ही, Vulkan में कई सुविधाएं मिलती हैं.

रेंडरिंग की सुविधाएं
Com2uS ने Summoners War: Chronicles के लिए, रेंडरिंग की बेहतर सुविधाएं उपलब्ध कराई हैं. इनमें ये शामिल हैं:
- कस्टम डिफ़र्ड रेंडरिंग सिस्टम, जिसमें लाइट को पहले से रेंडर करने की सुविधा और व्यू फ़्रस्टम में एक साथ ज़्यादा से ज़्यादा 16 लाइटें चालू करने की सुविधा है
- एक साथ कई मेश,
मैटीरियल, और टेक्सचर को ड्रॉ करने के लिए, इंडायरेक्ट रेंडरिंग इंस्टैंसिंग का तरीका (
Clay
कहा जाता है) - रेंडरिंग से पहले के टास्क के लिए, कंप्यूट शेडर का ज़्यादा इस्तेमाल करना
- कैमरे के मूवमेंट, ग्राफ़िक के विकल्पों, और रनटाइम की परफ़ॉर्मेंस के आधार पर, ऐक्टिव शैडो रेंडरिंग और पोस्ट-प्रोसेसिंग इफ़ेक्ट को डाइनैमिक तौर पर अडजस्ट करने की सुविधा
मोबाइल हार्डवेयर के लिए उपलब्ध सुविधाएं
Summoners War: Chronicles, Android डिवाइसों, पर्सनल कंप्यूटर, और खास गेम कंसोल के लिए एक ही रेंडरर का इस्तेमाल करता है. मोबाइल हार्डवेयर पर बेहतर परफ़ॉर्मेंस पाने के लिए, Com2uS ने रेंडरिंग सेटिंग को ट्यून किया है. इनमें ड्रॉ की गहराई और घनत्व शामिल है. Android 11 (एपीआई लेवल 30) और इससे पहले के वर्शन पर काम करने वाले कुछ डिवाइसों के हिसाब से, Com2uS ने कुछ शेडर के वैकल्पिक वर्शन बनाए हैं. साथ ही, कम इंस्टेंस का इस्तेमाल किया है. Summoners War: Chronicles, डिवाइस के तापमान के हिसाब से ग्राफ़िक के विकल्पों में डाइनैमिक तौर पर बदलाव करने के लिए, Android पर परफ़ॉर्मेंस को अडैप्ट करने की सुविधाओं का भी इस्तेमाल करता है.
सिर्फ़ Vulkan के लिए तर्क
Com2uS ने Summoners War: Chronicles के लिए, Vulkan का इस्तेमाल कई वजहों से किया है:
- डिवाइस से जुड़ी ज़रूरी शर्तों में, पुराने और कम परफ़ॉर्म करने वाले ऐसे डिवाइस शामिल नहीं हैं जिनमें Vulkan की सुविधा काम नहीं करती
- Unity इंजन के लिए, पहले से मौजूद रेंडर पाइपलाइन (BiRP) को पसंद के मुताबिक बनाने की सुविधा. इसके लिए, ज़रूरी सुविधाएं सिर्फ़ गेम के Vulkan बैकएंड में उपलब्ध हैं
- कंप्यूट शेडर आउटपुट और शेडर स्टोरेज बफ़र ऑब्जेक्ट (एसएसबीओ) का इस्तेमाल करके रेंडरिंग की सुविधाओं को लागू करने के लिए, Vulkan का इस्तेमाल किया जा सकता है, लेकिन OpenGL ES का नहीं
वर्कलोड का हिसाब लगाना
Summoners War: Chronicles, रेंडरिंग के लिए डेटा जनरेट करने के लिए, कंप्यूट शेडर का ज़्यादा इस्तेमाल करता है. कंप्यूट शेडर का इस्तेमाल इन कामों के लिए किया जाता है:
- ऑब्जेक्ट कलिंग
- टक्कर की जांच
- ऐनिमेशन से जुड़े टास्क
- इनडायरेक्ट रेंडरिंग डेटा जनरेशन
कंप्यूट किए गए डेटा को Unity engine RWBuffer ऑब्जेक्ट में लिखा जाता है. बेहतर परफ़ॉर्मेंस पाने के लिए, Summoners War: Chronicles अपनी सभी कंप्यूट जॉब को एक ही डिस्पैच के साथ चलाता है. इसके लिए, एक साथ कई RWBuffers का इस्तेमाल करना ज़रूरी होता है. यह तरीका सिर्फ़ Vulkan का इस्तेमाल करके ही मुमकिन था, क्योंकि Unity BiRP OpenGL ES बैकएंड में एक बार में सिर्फ़ एक RWBuffer का इस्तेमाल किया जा सकता है.
रेंडरिंग के लिए जनरेट किए गए डेटा सेट, अक्सर यूनिफ़ॉर्म बफ़र ऑब्जेक्ट (यूबीओ) के लिए डिवाइस के साइज़ की सीमाओं से ज़्यादा होते हैं. इसके बजाय, Summoners War: Chronicles में शेडर स्टोरेज बफ़र ऑब्जेक्ट (एसएसबीओ) का इस्तेमाल किया जाता है. इनकी क्षमता की सीमाएं ज़्यादा होती हैं. हालांकि, एसएसबीओ को वर्टिक्स स्टेज ऑपरेशन से जोड़ने के लिए, सिर्फ़ पढ़ने की अनुमति वाले एसएसबीओ के साथ काम करने की सुविधा ज़रूरी है. OpenGL ES सिर्फ़ रीड-राइट एसएसबीओ के साथ काम करता है, जबकि Vulkan एसएसबीओ को सिर्फ़ पढ़ने के लिए उपलब्ध के तौर पर मार्क कर सकता है.
Clay की मदद से, इनडायरेक्ट इंस्टेंस रेंडरिंग
Com2uS ने Summoners War: Chronicles के लिए, एक ही ड्रॉ कॉल में कई मैटीरियल, मेश, और टेक्सचर को एक साथ इस्तेमाल करने का तरीका विकसित किया है. Com2uS इस सिस्टम को क्ले कहता है. क्ले की मदद से, ड्रॉ कॉल की संख्या काफ़ी कम हो जाती है. इस वजह से, गेम की परफ़ॉर्मेंस 30% तक बेहतर हो जाती है.
क्ले, कलिंग और कॉलिज़न फ़ेज़ के दौरान शुरू होती है. इसके लिए, काम करने वाले दिखने वाले रेंडर किए जा सकने वाले ऑब्जेक्ट की सूची बनाई जाती है. इसके बाद, Clay पहचाने गए हर ऑब्जेक्ट के लिए, एसएसबीओ में रेंडरिंग की जानकारी जनरेट करता है. यह प्रोसेस, कंप्यूट शेडर की मदद से की जाती है. ये शेडर, Unity रेंडरर के DrawMeshInstancedIndirect फ़ंक्शन का इस्तेमाल करके, इनडायरेक्ट इंस्टेंस रेंडरिंग का इस्तेमाल करने की सुविधा देते हैं. इनडायरेक्ट रेंडरिंग की मदद से, इंस्टेंस की जानकारी और इंस्टेंस की संख्या के पैरामीटर सीधे जीपीयू पर जनरेट होते हैं. ऑब्जेक्ट बनाते समय, क्ले किसी पारंपरिक ऑब्जेक्ट मेश को बांधने के बजाय, कोन मेश को बांधता है, जैसा कि इस इमेज में दिखाया गया है:

इसके बाद, क्ले कॉम्प्यूट शेडर से जनरेट किए गए वर्टिकस ट्रांसफ़ॉर्मेशन डेटा के बंधे हुए एसएसबीओ का इस्तेमाल करके, वर्टिकस शेडर में शंकु मेश को बदल देता है. एसएसबीओ को वर्टिक्स स्टेज से बांधने के लिए, Vulkan का इस्तेमाल करना ज़रूरी है. क्ले, किसी एक ऑब्जेक्ट को रेंडर करने के लिए, कई ट्रांसफ़ॉर्म किए गए कॉन का इस्तेमाल कर सकता है. ऑब्जेक्ट की जटिलता से, कोन की संख्या तय होती है.

ऑब्जेक्ट के लिए मटीरियल डेटा, कंप्यूट शेडर से जनरेट किए गए किसी दूसरे बफ़र में एक साथ डाला जाता है. बफ़र, फ़्रैगमेंट शेडर से जुड़ा होता है. खींचे जा रहे ऑब्जेक्ट के लिए टेक्सचर, टेक्सचर कलेक्शन में कॉन्फ़िगर किए जाते हैं. किसी ऑब्जेक्ट के टेक्सचर के लिए अरे इंडेक्स, ऑब्जेक्ट के मटीरियल डेटा में शामिल होते हैं. सही परिस्थितियों में, Clay ज़्यादा से ज़्यादा सात ड्रॉ कॉल के साथ रेंडर कर सकता है:
- स्टैटिक ऑब्जेक्ट
- ऐनिमेट किए गए ऑब्जेक्ट
- शैडो (चार बार)
- रिफ़्लेक्शन
Unity और Vulkan
Summoners War: Chronicles से पता चलता है कि Unity गेम इंजन और Vulkan ग्राफ़िक्स एपीआई के बेहतरीन कॉम्बिनेशन की मदद से, डेवलपर Android डिवाइसों पर बेहतरीन क्वालिटी के कंसोल ग्राफ़िक उपलब्ध करा सकते हैं.