I wrote a 2D fluid-solver in OpenGL (code here) some time back.

While it runs flawlessly on my onboard Intel GPU,

when running on Intel GPU

the simulation very quickly "blows-up" when same code is run using nvidia card :

mere half a second into the program

In the second picture, the fluid is being "added" to the system and "diffusing away" too, but unlike the 1st picture there is no advection.

I would like to know what might possibly cause this. Could this be because different vendors might be interpreting the standard differently?

PS : The "red" and "green" colors represent magnitude of vector-field in x and y directions respectively.

  • 4
    $\begingroup$ There can definitely be differences between IHV implementations. It could be due to a driver bug, or different interpretations of ambiguities in the standard, or even possibly differences in how the compilers treat floating-point arithmetic, etc. Would need some more detailed debugging to understand what's going on. $\endgroup$ Aug 21, 2015 at 20:20
  • 1
    $\begingroup$ @NathanReed ,what kind of information could be helpful? $\endgroup$
    – nilspin
    Aug 22, 2015 at 0:20
  • 7
    $\begingroup$ Start by debugging it like any other graphics/shader problem. Isolate each pass and see in which pass the error is being introduced, then isolate where in that shader is something going wrong. $\endgroup$ Aug 22, 2015 at 0:47
  • $\begingroup$ This might be a vsync issue if you're using a variable timestep per-frame. $\endgroup$
    – Mokosha
    Aug 28, 2015 at 4:09
  • $\begingroup$ Are you using any vendor-dependent GLSL functions like noise*(which as far as I know, most vendors don't implement anyway)? $\endgroup$
    – Sam
    Sep 8, 2015 at 22:42


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Browse other questions tagged or ask your own question.