मैं इस shader को वास्तव में पुराने iDevice पर चलाने के लिए, साथ ही साथ Android में भी कोशिश कर रहा हूं ।
यहां तक कि जब मैं प्रति टुकड़ा नीचे 2 साइन कार्यों के लिए कोड को कम करता हूं, तो शेडर लगभग 20fps पर चलता है।
मैंने पुरानी छायांकन तकनीकों की पुस्तक से एक पत्ती लेने और एक सरणी बनाने पर विचार किया है जो पूर्वनिर्धारित ट्रिगर मूल्यों का एक गुच्छा रखता है और किसी तरह से shader को अनुमानित करने के लिए उनका उपयोग करता है।
ऊपर की शेडर में मैं पहले से ही अनुकरण कर रहा हूं कि ट्रिगर फ़ंक्शन को भेजे गए मानों को गोल करके आगे माउस छोड़ दिया गया (जबकि नीचे) shader की कम गुणवत्ता जाती है। यह वास्तव में बहुत अच्छा है क्योंकि वास्तव में बाईं ओर के करीब यह पूरी तरह से अलग और सुंदर शांत छायादार दिखता है।
वैसे भी मेरे पास दो दुविधाएं हैं:
- मुझे नहीं पता कि GLSL शेडर, निरंतर या वर्दी में 360 मूल्यों की एक सरणी के लिए सबसे कुशल तरीका क्या है?
मैं यह पता नहीं लगा सकता कि किसी संख्या को एक सीमा में कैसे रखा जाए जैसे आमतौर पर अगर मुझे 0 और 360 के बीच का कोण चाहिए होता है (हाँ मुझे पता है कि जीपीयू रेडियंस का उपयोग करते हैं) तो मैं ऐसा करूंगा।
func range(float angle) { float temp = angle while (temp > 360) {temp -= 360;} while (temp < 0) {temp += 360;} return temp; }
हालांकि जीएलएसएल लूप या पुनरावर्ती कार्यों की अनुमति नहीं देता है।
mod
फ़ंक्शन वह है जो आप चाहते हैं। आप लिखेंगे mod(angle, 360.0)
।