I think is a similar error that on my other shader of flames that was solved by Gigatron :
Seems i can't use the X variable of the shader position, when i do some cards not do the work correctly and this happens. I guess is the same or similar error, i can't confirm.
I will try to solve the problem, sorry for the inconvenience :S .
Note: My card is a NVIDIA Geforce GTX 670 , and works perfect :S
I guess the problem is in this two lines that modify the coordinate X and make in some card you only see a half:
q.x *= 1.0; // Number of flames on horizontal
q.x = mod(q.x,1.0)-0.5; // 1=Separation / 2- Move to right
But after try some things i can't it working the same using other format or mixing, or deleting and creating some different