2012-11-20 10 views
5

मैं इस दिन पूरे दिन रहा हूं और इसे छोड़ना शुरू कर रहा हूं। मुझे कंप्यूटर्स शेडर्स पर बहुत सारी जानकारी नहीं मिल रही है। सर्वश्रेष्ठ स्रोत "प्रैक्टिकल रेंडरिंग और डायरेक्ट 3 डी 11 के साथ गणना" था और दुर्भाग्यवश यह बहुत अधिक मदद नहीं थी। इससे मुझे कुछ सिद्धांतों को समझने में मदद मिली लेकिन मुझे अभी भी कुछ भी लागू करने का तरीका नहीं पता है।कंप्यूटर्स शेडर्स, वे पाइपलाइन में कहां फिट होते हैं?

मैं उस पुस्तक में बनाए गए कण प्रणाली के समान कुछ पर काम कर रहा हूं। मेरे कण प्रणाली को छोड़कर मूल रूप से केवल कण होते हैं जो 3 डी ग्रिड में प्रदर्शित होते हैं (गुरुत्वाकर्षण/बल/आदि जैसे कुछ भी नहीं)। यह शैक्षणिक उद्देश्यों के लिए है, अगर मुझे यह काम मिल जाए तो मैं बाकी के बाकी हिस्सों को पूरा करने में सक्षम हूं।

मुझे क्या समझ में नहीं आता है कि गणना शेडर पाइपलाइन में कैसे फिट बैठता है। मुझे लगता है कि मैं समझता हूं कि मुझे क्या करना है, लेकिन मुझे नहीं पता कि मुझे यह कैसे काम करना है।

मुझे किसी भी तरह के कण पदों से भरे बफर के साथ गणना शडर को बीज करने की आवश्यकता है। (कहें, एक 1024x1024x1 बफर)। इसके बाद मुझे अपने कशेरुक शेडर के लिए एक कशेरुक के रूप में प्रत्येक स्थिति को आउटपुट करने के लिए इस गणना शडर की आवश्यकता होती है, और बाकी पाइपलाइन उसके बाद मानक होती है (वर्टेक्स शेडर सभी परिवर्तन करता है, मेरा ज्यामिति शेडर वर्टेक्स को क्वाड में फैलाता है, और मेरी पिक्सेल शेडर इसे प्रस्तुत करता है)।

मुझे यह भी नहीं पता कि यह सही है या नहीं, लेकिन यह सही लगता है। और यदि यह भी है, तो मुझे नहीं पता कि मैं ऐसा करने के बारे में कैसे जाऊंगा। मैं कशेरुक शेडर के कशेरुक शेडर के आउटपुट को कैसे खिला सकता हूं? शुरुआत में मैं गणना करने वाले शेडर को कैसे शुरू करूंगा? मैं कैसे सुनिश्चित करूंगा कि गणना शेडर कणों के बफर को त्यागें नहीं? (अन्यथा, मुझे हर बार कणों की आपूर्ति करना होगा, जो (अंततः) कणों के साथ एक कण प्रणाली के उद्देश्य को हरा देगा, क्योंकि मुझे सीपीयू पर ऐसा करना होगा)

इतने सारे अज्ञात हैं, और ऐसा लगता है कि मुझे इन शेडर्स को लिखना शुरू करने के लिए सभी को यह जानने की उम्मीद है। मुझे कोई भी कदम उठाने वाला पत्थर नहीं मिल रहा है।

+0

यह सीधे पाइपलाइन के बाकी हिस्सों में फिट नहीं है, यह एक स्वतंत्र बात है। हालांकि स्पष्ट कारणों से इंटरफेस बहुत सी चीजों का उपयोग करता है। और परिणाम और इनपुट एक ही प्रकार के ग्राफिक्स कार्ड ऑब्जेक्ट्स हैं जो पाइपलाइन का उपयोग करते हैं, जिससे पिपलाइन के साथ संयोजन में इसका उपयोग करना बहुत अच्छा होता है। – jcoder

+0

मैंने किसी भी ग्राफिक्स सामान से स्वतंत्र, सरल बनाकर कंप्यूटर शेडर्स के साथ शुरुआत की है, जो संख्याओं के सरणी के साथ दो बफर को पॉप्युलेट करता है और एक तिहाई जेनरेट करने के लिए एक गणना शेडर बना देता है जिसमें उनका योग होता है और इसे प्रिंट करने के लिए CPU पर वापस पढ़ता है ... आप देख सकते हैं कि आप कणों के भार की स्थिति को अपडेट करने के लिए कैसे विस्तार कर सकते हैं - और फिर उन पदों को सीपीयू पर वापस पढ़ने की आवश्यकता नहीं होगी, एक ग्राफिक्स पिप्स्लाइन प्रोग्राम सीधे इनपुट के रूप में डेटा का उपयोग कर सकता है .. – jcoder

+0

मैं इस पुस्तक की तरह कुछ सिफारिश करूंगा http://www.amazon.co.uk/Introduction-Game-Programming-DirectX-ebook/dp/B0085CDJY4 क्योंकि इसमें बिल्कुल आवश्यक उदाहरण हैं। (हालांकि यह कभी-कभी कुछ कदम छोड़ने लगता है, मुझे यह एक अच्छी किताब मिली) – jcoder

उत्तर

3

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

संबंधित मुद्दे