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, privacy policy and cookie policy

Browse other questions tagged or ask your own question.