हां, आप सही हैं, गणित साइन फ़ंक्शन का उपयोग करके इस 2D पानी के प्रभाव को सिम्युलेटेड किया जा सकता है:
wave = sin(phase + t * frequency) * amplitude
phase
एक स्थिरांक है, जो भी आप चाहते हैं उसे डालें।
t
आपके द्वारा संसाधित किए जा रहे पिक्सेल / शीर्ष की क्षैतिज स्थिति पर सेट :t = x;
amplitude
समय के साथ बदलाव (जिससे लहरें ऊपर-नीचे होती रहेंगी):
amplitude = sin(t * wave_speed) * wave_height
एक अधिक लचीला प्रभाव प्राप्त करने के लिए कई तरंगों को मिलाएं:
wave_final = wave0 + wave1 + ...
।
प्रत्येक लहर के लिए, कुछ मापदंडों को थोड़ा बदल दें (जैसे: चरण, आवृत्ति, ...)।
यहाँ एक त्वरित उदाहरण दिया गया है, केवल दो तरंगों का उपयोग करके:
http://glslsandbox.com/e#4988.0 (हाल के ब्राउज़र और WebGL सक्षम होना चाहिए)
ध्यान दें: यह एक shader है, लेकिन 2D प्राइमेटिव का उपयोग करके ऐसा करना एक ही दृष्टिकोण है।
संपादित करें: आप किसी भी ढांचे या 2d रेंडरिंग सिस्टम को निर्दिष्ट नहीं करते हैं, लेकिन यहां बताया गया है कि इसे पॉलीगॉन / त्रिकोण स्ट्रिप्स का उपयोग करके कैसे प्रस्तुत किया जा सकता है: