शैडो मैपिंग और पारदर्शी क्वाड्स


10

शैडो मैपिंग गहराई बफ़र का उपयोग करके गणना करता है कि छाया कहाँ खींची जानी चाहिए।

मेरी समस्या यह है कि मैं छाया डालने के लिए कुछ अर्ध पारदर्शी बनावट वाले क्वाड चाहता हूं - उदाहरण के लिए बिलबोर्ड वाले पेड़। जैसा कि गहराई मान पूरे क्वाड में सेट किया जाएगा और न केवल दृश्य भागों में यह एक क्वाड छाया डालेगा, जो कि मैं नहीं चाहता।

मैं अपने पारदर्शी quads को छाया मानचित्रण का उपयोग करके सही छाया कैसे बना सकता हूं?

जवाबों:


15

आपकी समस्या 1bit अल्फा के साथ प्रतिपादन को हल करेगी। जिसका अर्थ है कि आप स्रोत बनावट के कुछ अल्फा निर्दिष्ट करते हैं जो प्रदान नहीं किया जाता है (ज्यादातर 0.5)।

आपको प्रकाश से गहराई को बचाने और निर्देश का उपयोग करने के लिए अपने स्वयं के शेडर को लिखना होगा discard। डिस्क में hlsl, glsl और cg में भी मौजूद है। यह केवल पिक्सेल / टुकड़े शैडर में मौजूद है और बैकबफ़र में और जेड-बफर में रेंडरिंग से क्यूरेंट टुकड़ा को अलग करता है।

if (texSample.a < 0.5)
   discard;

फायदा यह है कि आपको अपना दूसरा पास रेंडर बदलने की जरूरत नहीं है, केवल प्रकाश की गहराई का प्रतिपादन। इसके अलावा, मैंने साबित किया है कि यह काम करता है: 1bit अल्फा

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

संपादित करें: मुझे बस एहसास हुआ कि मैं क्रेडिट जोड़ना भूल गया हूं। हमेशा की तरह। ट्री मॉडल लूपिक्स प्रोजेक्ट से है जो कि सिर्फ महान है अगर आप कुछ लोप्रोली, एक बनावट और वनस्पति के मुक्त मॉडल की तलाश कर रहे हैं।


6

प्रोग्राम योग्य पाइपलाइन के साथ आपको यह करना चाहिए कि कैसे @notabene का निर्देश दिया। हालांकि यह तय पाइपलाइन के साथ-साथ बिना किसी शेड के लिखना आसान है। OpenGL glAlphaFunc में वही है जो आप चाहते हैं। उदाहरण के लिए:

glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, 0.5f);

1
साफ। मुझे तय पाइपलाइन से नफरत है। इसलिए मैं वास्तव में हर किसी की प्रशंसा करता हूं जो इस काम को बिना शेड के कर सकता है। सुनिश्चित करने के लिए +1।
नॉटाबिन

@Notabene पदावनत तकनीक का उपयोग करने के बारे में कुछ भी सराहनीय नहीं है।
तारा

2

छाया मानचित्र पीढ़ी के लिए आपको एक कस्टम शेडर की आवश्यकता होती है, इसलिए जब आप निर्दिष्ट किए गए ट्रेशोल्ड से पिक्सेल / खंड की पारदर्शिता अधिक होती है, तो आप एक वैध ऑसुलेटर का उत्पादन कर सकते हैं। यह व्हाइ, गहराई नक्शा प्रति पिक्सेल उत्पन्न होगा और प्रति बहुभुज नहीं।


-1

जिस तरह से मैं ऐसा करने के बारे में सोच सकता हूं वह एक अलग गहराई मानचित्र बनावट बना रहा है, इसमें पेड़ों को प्रस्तुत करना, गहराई के लिए आउटपुट करना जहां अल्फा! = 0, अन्यथा गहराई से आउटपुट = 1, फिर इस छाया मानचित्र बनावट को दृश्य छाया मानचित्र बनावट के साथ जोड़ना। , जो सरल होना चाहिए; बस दो मानों में से सबसे छोटा लें और अंतिम गहराई वाले नक्शे पर सेट करें।

हालांकि यह सम्मिश्रण आदेशों को हल नहीं करता है; यदि आप एक अल्फा बनावट के पीछे एक गहराई का उत्पादन करते हैं, तो जब आप उस पर बनावट के साथ ट्रैक्टर को प्रस्तुत करते हैं, तो यह ओवरराइड हो जाएगा, इसलिए इस प्रभाव के लिए आपको प्रत्येक क्वाड को व्यक्तिगत रूप से गहराई मानचित्र बनावट में प्रस्तुत करना होगा ...

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