I'm running a particle system double buffering between two floating point textures. After a number of iterations I record the particle positions. Running the simulation a second time yields the same result. The problem occurs when running on a different PC with a different GPU. The particles behave broadly similarly but differ between GPUs. I've tested a 460, 560, quadro 4000 and 5850. I don't mind about precision, as long as I can find a solution to produce the same result for most recent GPUs (given I need the float extension). My initial thought was to set lowp, but this doesn't seem to change the results.

Is this simply the case that GPU floating point computation is unavoidably done at different precisions or is there something I've missed or could try?

I'm contemplating running a small floating point test at initialization to determine which precision operations are being performed and adjust my input data accordingly.

Thanks in advance