Bu gölgelendiriciyi gerçekten eski bir iDevice'de ve sonunda Android'lerde çalıştırmaya çalışıyorum .
Kodu parça başına 2 sinüs fonksiyonuna indirdiğimde bile gölgelendirici yaklaşık 20 fps'de çalışır.
Eski gölgeleme teknikleri kitabından bir yaprak almayı ve önceden tanımlanmış trig değerlerinin bir demetini tutan ve bir şekilde gölgelendiriciyi yaklaşık olarak kullanmak için bir dizi oluşturmayı düşündüm.
Yukarıda bağladığım gölgelendiricide, trig işlevine gönderilen değerleri yuvarlayarak farenin daha sol (aşağı) gölgelendiricinin daha az kalitesine gittiğini simüle ediyorum. Aslında oldukça havalı çünkü sol tarafa çok yakın, tamamen farklı ve oldukça havalı bir gölgelendirici gibi görünüyor.
Neyse iki ikilem var:
- Sabit veya tek tip bir GLSL gölgelendiricide 360 değer gibi bir dizi elde etmenin en verimli yolunu bilmiyorum?
Genellikle 0 ile 360 arasında bir açı istersem bir aralığa nasıl bir sayı koyacağımı anlayamıyorum (evet, GPU'ların radyan kullandığını biliyorum) bunu yaparım.
func range(float angle) { float temp = angle while (temp > 360) {temp -= 360;} while (temp < 0) {temp += 360;} return temp; }
Ancak GLSL, döngülere veya özyinelemeli işlevlere izin vermez.
mod
işlev istediğiniz şeydir. Sen yazardın mod(angle, 360.0)
.