2 डी जल शीर्ष सतह प्रोफ़ाइल


9

मैं एक शीर्ष-टुकड़ा shader के साथ पानी की सतह मोटाई के प्रभाव को बनाने की कोशिश कर रहा हूं।

मैं 3 डी गेम के माहौल में हूं, लेकिन यह एक स्क्रॉल दृश्य है, इसलिए "2 डी" दृश्य। यहाँ टुकड़ा shader का उपयोग कर वास्तविक 2D में इस तरह के प्रभाव बनाने का एक अच्छा ट्यूटोरियल है।
लेकिन मेरे विचार से इसका उपयोग नहीं किया जा सकता है। फिलहाल मेरे पास केवल एक विमान है मैं अपवर्तन लागू करता था।

अपवर्तन

और मैं पानी की मोटाई प्रभाव को लागू करना चाहता हूं। लेकिन मुझे नहीं पता कि यह कैसे करना है।
मैं पल के लिए वर्टेक्स का उपयोग करके कुछ पानी के विरूपण / विस्थापन बनाने की कोशिश नहीं कर रहा हूं, यह बात नहीं है।

मुझे नहीं पता कि क्या यह एक साधारण क्वाड के साथ संभव है शायद मुझे इस तरह की वस्तु का उपयोग करना चाहिए।

प्रणाली

यहाँ कुछ उदाहरण हैं।

1 2 4 Rayman

मुझे इस बारे में कोई आइडिया नहीं है कि इस प्रभाव को कैसे बनाया जाए।

आपका बहुत बहुत धन्यवाद !

[ संपादित करें ] रेमन पानी के प्रभाव का एक बेहतर संदर्भ है।


वर्तमान में आप अपना जल प्रभाव कैसे कर रहे हैं? यदि पोस्ट का पहला स्क्रीनशॉट आपका है, तो ऐसा लगता है कि आप दृश्य में 2 डी क्वाड ड्रॉ कर रहे हैं, साथ ही एक ऐसा शेडर जो इसे विकृत करता है। यदि यह सही है, तो आप ट्यूटोरियल के निर्देशों का पालन क्यों नहीं कर सकते, जो कि एक विकृत 2D बनावट का उपयोग करने पर भी आधारित है?
नाथन रीड

मेरे पास एक 3 डी क्वाड है जिसमें एक वर्टेक्स-टुकड़ा शेडर है जो पृष्ठभूमि को विकृत करता है (बैकग्राउंड को यूनिटी ग्रैबपास फंक्शनैलिटी द्वारा कब्जा कर लिया गया है)। मुझे नहीं लगता है कि 2 डी बनावट का उपयोग करना एक अच्छा विचार है, मैं कस्टमाइज़ मापदंडों के साथ कुछ अधिक सामान्य सोच रहा था, लेकिन ऐसा लगता है कि कोई अन्य तरीका नहीं है ... और यह धीमा होगा?
चटाई

जवाबों:


1

छाया में एक मूल्य है जो गीलापन को निर्दिष्ट करता है। 0 से छोटे का अर्थ है हवा, 1 से अधिक का अर्थ है पानी, और बीच में मीनस्कस।

यहाँ कुछ छद्म कोड है:

vec2 uv2 = bigWaves(uv); // modify the texture coords to create a wavy water effect
float wetness = (uv2.y - 0.1) * 100;

if( wetness<0.0 )
{
    gl_Fragment = texture2D(screen_texture,uv); // is air - no refraction or effect
}
else if( wetness>1.0 )
{
    vec2 uv3 = smallWaves(uv2); // modify the texture coords to create a ripply water effect
    gl_Fragment = texture2D(screen_texture,uv3); // is water - with refraction
}
else
{
    gl_Fragment = vec4(1,1,1,1); // solid white meniscus
}

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


हाँ, यह एक अच्छा विचार है! मैं धब्बा और टिंट के बारे में पूरी तरह सहमत हूं। मैं एक गहराई (Y) ढाल (शायद एक और गहराई (Z) ढाल) जोड़ रहा हूं। मुझे मेनिस्कस ज़ोन में भी एक अलग अपवर्तन प्रभाव जोड़ना चाहिए, लेकिन फिलहाल मैं रेमन की तरह एक लहर प्रभाव की कोशिश कर रहा हूं। लेकिन मैं नहीं जानता कि कैसे। शायद मुझे इस डुप्लिकेट प्रभाव के लिए मेनिस्कस के लिए अलग-अलग बनावट का उपयोग करना चाहिए। मैं नहीं जानता कि अगर आप जानते हैं कि मेरा क्या मतलब है।
MaT
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.