मैंने खुद से टुकड़े और वर्टेक्स शेडर के बारे में कुछ सामान्य समझ वाले प्रश्न पूछे हैं।

हमने व्याख्यान में सीखा है कि Tree.js से कस्टम शेडर्स में पारदर्शिता की गणना और उपयोग करना संभव नहीं है/या कम से कम बहुत कठिन है।

यहां सवाल है: क्या कोई मुझे समझा सकता है कि ऐसा क्यों है और आप कैसे कुछ पारदर्शी शेडर्स के साथ बना सकते हैं (जैसे सामग्री पर "सामान्य" पारदर्शिता पैरामीटर, जहां आप बस कह सकते हैं: पारदर्शिता: सच)।

0
Ice_Queen1996 10 जुलाई 2017, 00:10
आपको एक साथ कई प्रश्न पूछने से बचना चाहिए क्योंकि इससे आपके उत्तर पाने की संभावना कम हो जाती है। उत्तर लिखने के लिए सभी प्रश्नों का हल जानना होगा।
 – 
BDL
10 जुलाई 2017, 01:07
शायद हमें यह भी बताएं कि व्याख्याता ने कहा कि शेडर्स में पारदर्शिता का उपयोग करना बहुत कठिन था। यह इतना कठिन नहीं है AFAIK
 – 
2pha
10 जुलाई 2017, 02:32
मैं सहमत हूं, वर्दी के माध्यम से टुकड़े टुकड़े करने के लिए एकल फ्लोट पारदर्शिता मान पास करना इतना कठिन नहीं है
 – 
DanP
10 जुलाई 2017, 10:11
प्रश्न को तोड़ा जाना चाहिए और उन सभी में सुधार किया जाना चाहिए। मुझे लगता है कि पारदर्शिता एल्गोरिदम को सॉर्ट करने के लिए संदर्भित करती है, जैसे पेंटर्स सॉर्ट।
 – 
pailhead
11 जुलाई 2017, 01:58
हे दोस्तों, आपके उत्तरों के लिए धन्यवाद! मैंने आपकी सिफारिश की और प्रश्न को विभाजित कर दिया! छँटाई एल्गोरिथ्म के साथ संकेत सही था! हमने व्याख्यान में उदाहरण के लिए ZBufferAlgorithm पर चर्चा की थी। लेकिन मुझे नहीं पता था कि "सामान्य" तीन.जेएस सामग्री अपने आप ही ऐसा करती है ...
 – 
Ice_Queen1996
18 जुलाई 2017, 10:24

1 उत्तर

सबसे बढ़िया उत्तर

यह इस बात पर निर्भर करता है कि आप और व्याख्याता का "पारदर्शिता" से क्या मतलब है। स्पष्टता के लिए निम्नानुसार बहुत सरल है।

पारदर्शी वस्तुओं का पहला भाग गहराई से छँटाई है। जब आप तीन.js सामग्री बनाते हैं, तो material.transparent = true; गहराई से छँटाई को सक्षम बनाता है, जो दृश्य वस्तुओं को कैमरे से गहराई के आधार पर रेंडरिंग क्रम में रखता है, न कि उस क्रम में जिसमें उन्हें जोड़ा गया था। यह सुनिश्चित करता है कि पारदर्शी वस्तुएं अपने रंगों को सही ढंग से मिलाती हैं। शायद यह वही है जो व्याख्याता कहने का इरादा कर रहा था, शेडर में करना मुश्किल था, क्योंकि शेडर वर्तमान टुकड़े को चित्रित करने पर ध्यान केंद्रित करता है, और आसपास के दृश्य के बारे में ज्यादा जानकारी नहीं रखता है।

पारदर्शिता का दूसरा भाग - जिससे आप शायद अधिक परिचित हैं - सामग्री के लिए एक अस्पष्टता मान निर्धारित कर रहा है। यदि आप किसी भी टुकड़े टुकड़े में देखते हैं, तो आखिरी चीज जो टुकड़े का रंग निर्धारित करती है, वह है vec4

gl_FragColor = something;

vec4 का चौथा मान अल्फा (अपारदर्शिता) मान है। आप मैन्युअल रूप से इस तरह से आधा पारदर्शी लाल रंग में एक टुकड़ा सेट कर सकते हैं:

gl_FragColor = vec4(1.0, 0.0, 0.0, 0.5);

लेकिन फिर से, यदि आपकी वस्तु सही ढंग से गहराई से क्रमबद्ध नहीं है, तो हो सकता है कि पारदर्शिता आपकी अपेक्षा के अनुरूप काम न करे।

शेडर को मूल्यों को कैसे पास किया जाए, इस बारे में आपके प्रश्न के संबंध में, मैं उपरोक्त टिप्पणियों से सहमत हूं: आपका दूसरा प्रश्न एक अलग पोस्ट में तोड़ा जाना चाहिए।

उस ने कहा, uniforms, attributes, और varyings शेडर्स में सामान्य और मौलिक प्रकार के क्वालिफायर हैं। प्रत्येक के बहुत विशिष्ट उपयोग हैं, और ऐसा लगता है कि आप अंतर को बिल्कुल नहीं समझते हैं (यह ठीक है, आप अभी भी सीख रहे हैं)। मैं अनुशंसा करता हूं कि उनमें से प्रत्येक को उचित तरीके से कैसे उपयोग किया जाए (और, स्वाभाविक रूप से, StackOverflow उत्तर के लिए एक अच्छी जगह है इस तरह एक)।

0
TheJim01 10 जुलाई 2017, 17:46
कुडोस वास्तव में प्रश्न को समझने पर :)
 – 
pailhead
11 जुलाई 2017, 02:00
हे, देर से उत्तर के लिए खेद है। मैंने सिफारिश के अनुसार सवाल तोड़ दिया। ताकि मैं इसे सही ढंग से प्राप्त कर सकूं: यदि ja three.js सामग्री का उपयोग किया जाता है और पारदर्शिता और कुछ अस्पष्टता मूल्यों के साथ एक जाल बनाया जाता है, तो दृश्य सही ढंग से प्रस्तुत किया जाएगा क्योंकि एक पूर्ण-स्वचालित गहराई-सॉर्टिंग चल रही है? यह शेडर्स द्वारा अपने दम पर नहीं किया जा सकता है, बल्कि आपको ऐसा करना होगा?
 – 
Ice_Queen1996
18 जुलाई 2017, 08:59
सही। पारदर्शी वस्तुओं को 3D स्थान में उनकी स्थिति के अनुसार क्रमबद्ध किया जाता है। यह शेडर के बाहर करना सबसे आसान है। दृश्य = आकार और वस्तुएं, शेड्स = टुकड़े। किसी दिन, WebGL 2.0 में कंप्यूट शेडर होगा, जो तेजी से छंटाई करने में सक्षम होगा एक जावास्क्रिप्ट धागे की तुलना में। लेकिन अभी के लिए, आपकी समझ सही है।
 – 
TheJim01
18 जुलाई 2017, 16:48