Strangely, for second shader, if I change final color to 0.0 in fragment shader, it doesn't have the cut off anymore. Initially I thought some calculation in fragment that give NaN value to variable and mess up the system, but I tried using sqrt(-1) to produce NaN value, then set final color to 0.0, to try to reproduce the cut-off issue, but it still seemed ok. I'm getting out of idea, do you have any clue on this?
I tried reordering the uniforms, doesn't seem to fix the issue. In what way should we order the uniforms?
* Nexus 6 is really a pain-in-the-ass device. Only it causes the problem so far.