मैं अपने realtime shader के लिए एक शानदार प्रभाव बनाने की कोशिश कर रहा हूँ, लेकिन मुझे नहीं पता कि कैसे।
यहाँ एक उदाहरण है , और दूसरा उदाहरण ।
इसे लागू करने के लिए मैं किस तकनीक का उपयोग कर सकता हूं?
मैं अपने realtime shader के लिए एक शानदार प्रभाव बनाने की कोशिश कर रहा हूँ, लेकिन मुझे नहीं पता कि कैसे।
यहाँ एक उदाहरण है , और दूसरा उदाहरण ।
इसे लागू करने के लिए मैं किस तकनीक का उपयोग कर सकता हूं?
जवाबों:
ठीक है, जब किसी भी shader को डिजाइन करने के लिए कहा जाता है, तो हमें छोटी समस्याओं के लिए चीजों को तोड़कर शुरू करना चाहिए। और जैसा कि ध्यान दें कि चमक प्रभाव वास्तव में शेडर को अच्छा नहीं बनाता है, लेकिन समग्र प्रकाश और प्रभाव, उनमें से केवल एक का उपयोग करना उतना अच्छा नहीं लगेगा।
सबसे पहले हमें यह बताएं कि क्या सीधे तौर पर शेडर का हिस्सा नहीं है:
दूसरे, आइए वास्तविक छाया को अलग-अलग प्रभावों में तोड़ें:
ध्यान दें कि ऐसे कपड़ों में असीम रूप से कई मानदंड होते हैं, लेकिन यहां वर्णित तकनीक सबसे महत्वपूर्ण सामान्य अनुमान लगाती है
सबसे महत्वपूर्ण सामान्य अनुमान लगाने के लिए, एक तरीका है, बनावट निर्देशांक का उपयोग करना और मेष की स्पर्शरेखा की गणना करना, और इसके बजाय एन की गणना करना । एल आप 1- (एनटी) की गणना करते हैं।
पूर्ण विवरण यहाँ । और आपको शायद इसे लागू करने की क्रिया तकनीक के बजाय टुकड़े टुकड़े में लागू करने की आवश्यकता है। अन्य अनिसोट्रोपिक मॉडल भी लागू कर सकते हैं।
अब शानदार प्रभाव के लिए:
यह विश्व अंतरिक्ष / स्थानीय बनावट स्थान, या स्क्रीन अंतरिक्ष में एक अलग पास के रूप में किया जा सकता है।
एल्गोरिथ्म मैं सोच सकता हूं, छवि प्रसंस्करण तकनीक का उपयोग करता है (यह मानते हुए कि जाल में बनावट के तार हैं)।
ध्यान दें उपरोक्त छवि अधिकतम फ़िल्टर का एक उदाहरण है, और इसे शोर पर लगाने से sth एक स्टार फ़ील्ड के समान होगा।
गॉसियन फ़िल्टर का उदाहरण अधिकतम (एड) शोर पर लागू होता है।
ध्यान दें, इस तकनीक को एक वास्तविक समय shader के लिए महत्वपूर्ण अनुकूलन की आवश्यकता हो सकती है।
एक दिलचस्प लेख एएमडी है - प्रक्रियात्मक हो रही है ।
ऐसा लगता है कि स्पार्कल्स मेरे विचार से कठिन हैं।
डिसेंट सॉल्यूशन: 3D शोर फ़ंक्शन को इंडेक्स करने के लिए 3D पोज़िशन का उपयोग करें, व्यू वेक्टर जोड़ें, चीज़ों को और बेतरतीब करने के लिए फ़्रेक फ़ंक्शन का उपयोग करें।
Sparkle:
float specBase = saturate(dot(reflect(-normalize(viewVec), normal),
lightDir));
// Perturb a grid pattern with some noise and with the view-vector
// to let the glittering change with view.
float3 fp = frac(0.7 * pos + 9 * Noise3D( pos * 0.04).r + 0.1 * viewVec);
fp *= (1 - fp);
float glitter = saturate(1 - 7 * (fp.x + fp.y + fp.z));
float sparkle = glitter * pow(specBase, 1.5);