opengl es2.0 glslのループの条件式とuniform その2

前回のエントリ後にNexus7(2012)とOptimus XとMOTOROLA PHOTONとGALAPAGOS
買い足したのと、ADBと接続できなくて匙を投げていたMEDIAS BRの接続ができたので
(結局、ドライバが上手く当たっていなかった)、ループの条件式にuniformを使ったときの
挙動を改めてチェックして、またuniform配列を使ったときの挙動も試してみた。

検証に使ったコード
https://gist.github.com/t-takasaka/4845ac03cdfc87ecb121

ループの条件式の方は前回と同じくTegra系の端末のみがコケた。
uniform配列の方は以下のようになった。

・uniformで渡した配列にローカルで宣言した添え字
全端末でOK

・ローカルで宣言した配列にuniformで渡した添え字
IS17SH:初期化中に固まる
Nexus7、ISW13F、IS11LG、ISW11M、IS11N、EB-W51GJ:シェーダの処理が反映されない
ISW11F:0.0扱い

・uniformで渡した配列にuniformで渡した添え字
IS17SH、IS11N、EB-W51GJ:0.0扱い
Nexus7、ISW13F、IS11LG、ISW11M:シェーダの処理が反映されない
※なぜかISW11Fはちゃんと動く

シェーダの処理が反映されない、というのは画像自体は表示されていて、シェーダの効果
(明度を落とす)が反映されていないという状態。おそらくシェーダの処理中にコケている。
0.0扱い、というのは配列に代入した値ではなく0.0が取れている状態。
今回はtexture2Dの値を0.0で割ることになるので白飛びしていた。

しかし参考にした↓のサイトではTegra以外は正しく動くと書かれてるので
http://dench.flatlib.jp/opengl/glsl
どこか検証の仕方が間違ってるのかも知れん・・・。
ISW11Fがローカルで宣言した配列にuniformで渡した添え字を使うと白飛びするのに、
uniformで渡した配列にuniformで渡した添え字を使うとちゃんと動くという
謎の動きをしていたりと怪しい部分もあるので、あとで時間ができたらもう一度見直してみる。
Androidの闇は深い・・・