क्या मुझे एक संकलित रूप में या सादे पाठ में शेड वितरित करना चाहिए?


13

जीएलएसएल में लिखे गए शेड्स का उपयोग करने वाले एप्लिकेशन होने से वास्तविक दुनिया में वितरण के लिए और डेस्कटॉप और मोबाइल के लिए सबसे अच्छी रणनीति क्या है?

मैं इसे द्विआधारी रूप में या सादे क्रमबद्ध पाठ के रूप में वितरित करने का लक्ष्य बना रहा हूं, मैं इस पर एक अच्छा सुझाव चाहूंगा।

जवाबों:


15

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

एक बात पर विचार करना भी एक ऑफ़लाइन पाठ shader अनुकूलक है जो भद्दे मोबाइल shader संकलक के साथ बहुत अच्छा प्रभाव डाल सकता है।


मुझे वास्तव में आश्चर्य होगा अगर आपको कोई भी उपकरण मिल सकता है जहाँ shader संकलन एक अड़चन है। कोड की मात्रा, यहां तक ​​कि बड़े शेड्स में, संकलन के संदर्भ में कोड की एक तुच्छ राशि है।
eda-qa mort-ora-y

1
टैपिओ का सुझाव है कि बड़े इंजन आमतौर पर ऑफ़लाइन शेड्स को संकलित करते हैं, और पहले रन पर उन्हें कैश करते हैं। हो सकता है कि प्रति shader में एक तुच्छ मात्रा में कोड हो, लेकिन आप उनमें से बहुत कुछ कर सकते हैं ।
लॉरेंट कौविदो

इसलिए मुझे Nvidia से एक यादृच्छिक ATI वीडियोकार्ड और दूसरा यादृच्छिक खरीदना है, मेरे शेड्स संकलित करें और केवल संकलित संस्करण वितरित करें? मैं रनटाइम पर कैसे जांच कर सकता हूं कि लक्षित वीडियो कार्ड का ब्रांड क्या है? उसके लिए कुछ विश्वसनीय है?
14:8 बजे user827992

1
@ user827992 जीपीआर / ड्राइवरों की विभिन्न पीढ़ियों के लिए बाइनरी प्रारूप भिन्न हो सकता है, भले ही विक्रेता एक ही हो। और यह भी मत भूलना कि वहाँ बहुत सारे इंटेल जीपीयू हैं, क्वालकॉम और पावरवीआर जैसे सभी मोबाइल को अकेले छोड़ दें। इसलिए फिर से: मेरा सुझाव है कि आप संकलित शेड वितरित न करें, बल्कि उन्हें उपयोगकर्ता के डिवाइस पर पहले चलाएं। GPU का पता लगाने के बारे में, आप GL_VENDOR, GL_VERSION और GL_RENDERER स्ट्रिंग को glGetString () बनाने का प्रयास कर सकते हैं, लेकिन उनका प्रारूप विक्रेता से विक्रेता तक भिन्न होता है।
तापियो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.