क्या एक निर्दिष्ट अल्फा का उपयोग करके कई रेंडर टारगेट को अल्फा ब्लेंड करना संभव है?


9

मान लीजिए कि मैंने N और RT के माध्यम से लक्ष्य 0 को प्रस्तुत किया है, इसके चौथे घटक में एक सामग्री या मुखौटा या कुछ और द्वारा निर्दिष्ट एक अल्फा चैनल है।

क्या पहले रेंडर टारगेट के अल्फा का उपयोग करके एन के माध्यम से हार्डवेयर कंपोजिटर ब्लेंड रेंडर टारगेट 1 करना संभव है?

जवाबों:


5

जहाँ तक मुझे पता है कि सभी सम्मिश्रण कार्यों के लिए RT 0 के अल्फ़ा को पुनः उपयोग करने के लिए DX या GL में से कोई भी तरीका नहीं है। दुर्भाग्य से, यह ऐसा कुछ नहीं है जो हार्डवेयर द्वारा समर्थित है।

आप प्रत्येक रेंडर टारगेट के लिए अलग-अलग ब्लेंड मोड कॉन्फ़िगर कर सकते हैं, या कुछ के लिए ब्लेंडिंग को सक्षम कर सकते हैं और दूसरों के लिए अक्षम कर सकते हैं; हालाँकि, यदि रेंडरिंग लक्ष्य के लिए सम्मिश्रण सक्षम है, तो यह हमेशा अपने स्वयं के अल्फ़ा का उपयोग करता है।

"डुअल-सोर्स ब्लेंडिंग" ( डीएक्स 11 डॉक और ओजीएल डॉक्टर देखें ) नामक एक मोड भी है , जो आपको पिक्सेल शेडर से पूरी तरह से अलग आउटपुट के साथ अल्फा को निर्दिष्ट करने की अनुमति देता है, न कि लक्ष्य के अल्फा चैनल को रेंडर करता है। हालाँकि, यह मोड केवल वर्तमान हार्डवेयर पर एक रेंडर लक्ष्य के साथ काम करता है।

जहाँ तक मैं बता सकता हूँ, एक ही अल्फा के साथ कई रेंडर टारगेट सम्मिश्रण करने के लिए एकमात्र विकल्प हैं:

  • सभी रेंडर टार्गेट पर एक ही अल्फ़ा आउटपुट करें (अल्फ़ा चैनल के अन्य मानों को स्टोर करने की क्षमता का त्याग करते हुए, जैसा कि आप आस्थगित छायांकन में करेंगे, उदाहरण के लिए)।
  • दोहरे-स्रोत सम्मिश्रण का उपयोग करके, प्रत्येक रेंडर लक्ष्य के लिए एक अलग पास में रेंडरिंग दोहराएं।
  • पिक्सेल शेडर में सम्मिश्रण निष्पादित करने के लिए यूएवी / इमेज लोड-स्टोर का उपयोग करें (केवल काम करता है यदि ज्यामिति स्क्रीन स्पेस में गैर-स्व-अतिव्यापी है, क्योंकि दौड़ की स्थिति के खिलाफ कोई सुरक्षा नहीं है; शायद थोड़े धीमे भी)।
  • इसका समर्थन करने वाले हार्डवेयर पर, DX11.3 / DX12 Rasterizer- आदेश दृश्य , NV_fragment_shader_interlock , या INTEL_fragment_shader_ordering (बाद में AMD GPUs द्वारा उजागर)। एक ही चीज़ के लिए ये तीन नाम हैं: मूल रूप से पिक्सेल shader में एक "महत्वपूर्ण खंड" जो आपको अन्य पिक्सेल shader इनवोकेशन के संबंध में एक बनावट को पढ़ने-संशोधित-लिखने देता है। यह अनिवार्य रूप से मनमाने ढंग से प्रोग्रामिंग सम्मिश्रण को सक्षम बनाता है, लेकिन यह संभवतः काफी धीमा है, और केवल हाल के हार्डवेयर पर उपलब्ध है।

हां, मुझे लगता है कि यह मेरा निष्कर्ष भी था। क्या आप जानते हैं कि अगर यह DX12 या (अप्रबंधित) वल्कन के साथ होता है? आपके पास उल्लिखित प्रतिपादन के लिए बहुत बड़े अनुप्रयोग हैं, जैसा कि आपने उल्लेख किया है और मौजूदा विकल्पों में से कोई भी अभी संतोषजनक नहीं लगता है।
jeremyong

@jeremyong क्षमा करें, मुझे नहीं लगता कि DX12 में सम्मिश्रण परिचालनों में कोई परिवर्तन हुए हैं। वल्कन के बारे में निश्चित नहीं है, लेकिन मुझे आश्चर्य होगा; सम्मिश्रण हार्डवेयर नहीं बदला है। एफडब्ल्यूआईडब्ल्यू, उन खेलों में, जिन पर मैंने काम किया है, हमने डिफरेंशियल डिकल्स के लिए बुलेट # 3 का एक वेरिएंट किया, और इसे गैर-अतिव्यापी समूहों में अलग करने के लिए ज्यामिति को प्रीप्रोसेस किया।
नाथन रीड

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