मैंने कोशिश की कि टेओड्रन ने क्या सुझाव दिया:
void main()
{
vec2 uv = gl_FragCoord.xy / resolution.xy;
float sepoffset = 0.005*cos(iGlobalTime*3.0);
if (uv.y > 0.3 + sepoffset)// is air - no reflection or effect
{
gl_FragColor = texture2D(texture, vec2(uv.x, -uv.y));
}
else
{
// Compute the mirror effect.
float xoffset = 0.005*cos(iGlobalTime*3.0+200.0*uv.y);
//float yoffset = 0.05*(1.0+cos(iGlobalTime*3.0+50.0*uv.y));
float yoffset = ((0.3 - uv.y)/0.3) * 0.05*(1.0+cos(iGlobalTime*3.0+50.0*uv.y));
vec4 color = texture2D(texture, vec2(uv.x+xoffset , -1.0*(0.6 - uv.y+ yoffset)));
//
//vec4 finalColor = vec4(mix(color.rgb, overlayColor, 0.25), 1.0);
gl_FragColor = color;
}
}
यह बहुत करीब दिखता है (यह आधार छवि के बिना बताना मुश्किल है) लेकिन आप मापदंडों को ट्विक कर सकते हैं।
आप इसे वहां कार्रवाई में देख सकते हैं: https://www.shadertoy.com/view/Xll3R7
कुछ टिप्पणी:
- जब मैं छवि को उल्टा कर रहा था, तो मुझे y निर्देशांक को पलटना पड़ा, लेकिन यह इस बात पर निर्भर हो सकता है कि आप रिज़ॉल्यूशन में क्या कर रहे हैं। यदि परिणाम आपके लिए उलटा है, तो बस यूएनवीटी पर जाएं
- मैंने आपकी वर्दी घोषणाओं को बदल दिया है इसलिए यह shadertoy के साथ काम करता है। आप उन परिवर्तनों को अनदेखा कर सकते हैं।
- हालांकि आपको समय प्रदान करने वाली वर्दी को जोड़ने और iGlobalTime के स्थान पर इसका उपयोग करने की आवश्यकता होगी (जो सेकंड में समय है)
- मैंने एक ज्वार प्रभाव जोड़ा क्योंकि ऐसा लगता है कि आपके उदाहरण पर एक है, लेकिन यह बताना मुश्किल है (सीपॉफ़सेट चर देखें)। यदि आप इसे पसंद नहीं करते हैं तो आप इसे हटा सकते हैं
- मैंने ओवरले रंग को हटा दिया क्योंकि यह अच्छा नहीं लग रहा था, और आपका उदाहरण एक नहीं था
- अपने स्वाद के लिए प्रभाव को ट्विक करने के लिए:
- प्रभाव को गति / धीमा करने के लिए iGlobalTime के कारक को बदलें (यदि आप चाहें तो उनमें से प्रत्येक को अलग से बदल सकते हैं, मान लें कि x आंदोलन को तेज करें और y आंदोलन को धीमा करें)
- प्रभाव को बढ़ाने / बढ़ाने के लिए cos () कारक को बदलें
संपादित करें: मैंने @cepro से संशोधन को शामिल करने के लिए यॉफसेट को बदल दिया
time
मूल्य का उपयोग करके , आपuv.xy
एक(sin(time),cos(time))
ऑफसेट वेक्टर के साथ शिफ्ट कर सकते हैं । बेशक, आपको साइन और कोसाइन ऑफसेट के आयामों का पता लगाना चाहिए। मैंuv.y
पहले ऑफसेट करने के साथ शुरू करता हूं और देखता हूं कि मैं कैसे प्रभाव को और अधिक समायोजित कर सकता हूं।