बेहतर दिखने के लिए एक चमक शेड को ट्वीक करना


9

मेरे पास एक सरल गेम है और इसके विषय ये छोटी लाइनें हैं। यह आईओएस और एंड्रॉइड के लिए लक्षित है, इसलिए इसमें प्रोसेसर की एक बड़ी रेंज है जो अभी चल सकती है।

यहाँ छवि विवरण दर्ज करें

मैं दो कारणों से उनके लिए रियलटाइम चमक जोड़ने की कोशिश कर रहा हूं

  1. मैं इस तथ्य को छिपाने की कोशिश कर रहा हूं कि मेरे पास अधिकांश उपकरणों पर एंटी-अलियासिंग को संसाधित करने का समय नहीं है।
  2. खेल का विषय शुद्ध प्रकाश माना जाता है, उस तस्वीर को देखना चाहिए जैसे कि वे चीजें शुद्ध प्रकाश हैं।

मैं काफी समय के लिए एक अलग गाऊसी ब्लर शॉडर को ट्वीक कर रहा हूं और मैं हताशा की स्थिति में आ गया हूं, मैं इसे ठीक से देख नहीं पा रहा हूं, शायद यह मुद्दा मैं व्यर्थ के दांतेदार किनारों को छिपाने की कोशिश कर रहा हूं इस बीच प्रकाश धुंधली नहीं बना।

मेरी सबसे बड़ी समस्या सभी चरों में शामिल है जो इसे अपना सर्वश्रेष्ठ बनाने में शामिल है।

मैं ग्राफिक्स / रेंडरिंग के लिए बहुत नया हूं और मैं किसी भी तरह से कलाकार नहीं हूं। शायद मेरे लिए सबसे ज्यादा निराशा की बात यह है कि इसमें शामिल होने वाले सभी चर हैं। चमक के साथ मैंने कई संभावित बदलाव देखे हैं।

  • A. मिश्रण मोड, स्क्रीन ब्लेंड मोड, या कुछ अन्य मनगढ़ंत कहानी जोड़ें
  • ब्लिंग को देखते हुए और संयोजन से पहले सामान्य रूप से अलग
  • ग। गॉसियन बेल फ़ंक्शन का सिग्मा (मैं इस भ्रामक कैलकुलेटर का उपयोग कर रहा हूं, लेकिन यह वही मान देने के लिए प्रतीत नहीं होता है जो मैं देख रहा हूं अन्य लोग हैं)
  • D. सिग्मा फ़ंक्शन के लिए भेजे गए "x" मानों पर स्केलर
  • ई। नमूना पैमाने (धुंधला त्रिज्या को छोटा या बड़ा बनाते हुए)
  • F. चमक बफर के संकल्प को बदलना

इस तरह के कई चरों के साथ काम करने पर "सबसे अच्छी दिखने वाली" स्थिरांक कैसे मिलती है?

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

अभी मैं वास्तव में गाऊसी बेल कर्नेल के सिग्मा पर अटक गया हूं, खासकर क्योंकि मैं संख्याओं में कोडिंग कर रहा हूं, फिर सूत्र क्योंकि मुझे प्रोसेसर की गति की आवश्यकता है। क्या आप उपयोग करने के लिए एक अच्छा सिग्मा सुझा सकते हैं ?

जवाबों:


8

गॉसियन फिल्टर का सिग्मा और कर्नेल आकार

गाऊसी के सिग्मा और कर्नेल आकार (पिक्सल) का चयन करने के तरीके के बारे में: आप सिग्मा को इस आधार पर सेट करते हैं कि आप कितने धब्बा चाहते हैं (इसे नेत्रहीन रूप से देखते हुए) और फिर सिग्मा के आधार पर कर्नेल आकार चुनें। यह एक कर्नेल आकार खोजने का खेल है जो अच्छा दिखने के लिए पर्याप्त (गणितीय रूप से अनंत) बेल वक्र को पकड़ता है, जबकि बहुत महंगा नहीं है।

अंगूठे के एक नियम के रूप में, गिरी का आकार सिग्मा से कम से कम 6 गुना होना चाहिए। फिर कर्नेल प्रत्येक दिशा में 3 सिगमा तक फैलता है, जो गणितीय बेल वक्र के लगभग सभी वजन को कवर करने के लिए पर्याप्त है । यह पिक्सेल आकार को अगले विषम संख्या में गोल करने के लिए अच्छा है इसलिए फ़िल्टर सममित होगा। उदाहरण के लिए, सिग्मा = 1.5 px के साथ, आप 9-पिक्सेल फ़िल्टर का उपयोग करेंगे; सिग्मा = 2.0 पीएक्स के साथ, 13-पिक्सेल फ़िल्टर आदि का उपयोग करें।

वैकल्पिक रूप से, यदि आपके पास प्रदर्शन सीमाएं हैं जो नियंत्रित करती हैं कि आप कितने बड़े कर्नेल आकार का उपयोग कर सकते हैं, तो अधिकतम सिग्मा प्राप्त करने के लिए 6 से विभाजित करें जिससे आप दूर हो सकते हैं। (ध्यान दें कि सिग्मा आंशिक हो सकता है, क्योंकि यह घंटी वक्र समीकरण के लिए एक इनपुट है।)

वैसे, बड़े गॉसियन ब्लर्स पर बेहतर प्रदर्शन पाने के लिए एक ट्रिक है इमेज को डाउनप्ले करना, छोटा ब्लर करना, फिर अपसाइड करना। उदाहरण के लिए, एक प्रभावी 13-पिक्सेल ब्लर पाने के लिए, आप 2x द्वारा छवि को नीचे गिरा सकते हैं (बिलिनियर फ़िल्टरिंग का उपयोग करके), फिर 7-पिक्सेल का धुंधला प्रदर्शन करें, और फिर अपलिंक (बिलिनियर फ़िल्टरिंग का उपयोग करके) करें। यह लगभग 13-पिक्सेल ब्लर के रूप में अच्छा लगेगा, लेकिन काफी तेज होगा।

एक अच्छी दिखने वाली चमक फ़िल्टर बनाना

इनके साथ एक सामान्य ट्रिक है अलग-अलग त्रिज्या के कई गॉसियंस का एक साथ उपयोग करना। यह अपने आप में किसी भी एक गाऊसी की तुलना में बेहतर चमक प्रभाव बनाता है। उदाहरण के लिए, फ़ोटोशॉप में यहां एक मॉकअप बनाया गया है, जिसमें तीन परतें जोड़कर एक साथ मिश्रित की गई हैं। तीन गाऊसी क्रमशः 3px, 5px और 11px (क्रमशः sigma = 0.5px, 0.83px, 1.83px) के आकार के हैं।

मज़ाक-अप खिल फ़िल्टर

आप चमक की स्पष्ट त्रिज्या को बढ़ाने के लिए और भी बड़े गौसियंस को जोड़ सकते हैं। यह है कि 3 डी गेम इंजन में मानक "ब्लूम" प्रभाव कैसे लागू होता है।

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

jaggies

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

मैंने आपको सुना है कि आप प्रदर्शन कारणों से MSAA का उपयोग नहीं कर सकते, लेकिन एक और विकल्प हो सकता है। इस बात पर निर्भर करता है कि आप चमक ट्रेल्स को कैसे प्रस्तुत करते हैं, आप उनके आकार को थोड़ा बढ़ाने में सक्षम हो सकते हैं, और एक ऐसा शेडर लिख सकते हैं जो किनारे के एक जोड़े पिक्सल के भीतर रंग को फीका करने के लिए एक ढाल लागू करता है। इससे उन्हें चिकनी दिखने में मदद करनी चाहिए। यहां एक shadertoy है जो एक प्रक्रिया को आकार देने के लिए उपयोग करने के लिए उपयोग किए जाने वाले 1px- चौड़े किनारे के फ़ॉलऑफ़ को प्रदर्शित करता है।


@Nathan_Reed मैंने MSAA करने के बजाय आपके अधिकांश सुझावों को लागू किया, जो अजीब तरह से पर्याप्त था, 2x पर हिट के ज्यादा नहीं के साथ चाल चली। यदि मेरे पास वर्तमान प्रभाव में अधिक हाइलाइट जोड़ने के बारे में कोई प्रश्न है तो क्या मुझे प्रश्न को संपादित करना चाहिए या एक नया बनाना चाहिए?
जे। जोले

@ जे। ग्रेट, यह सुनकर खुशी हुई कि यह काम कर रहा है! मैं कहूंगा कि यदि आप एक विशिष्ट नज़र के लिए जा रहे हैं, तो प्रभाव को कम करने के बारे में एक नया सवाल पूछना बेहतर होगा।
नाथन रीड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.