8
$\begingroup$

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.

$\endgroup$
8
  • 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$ Commented Aug 21, 2015 at 20:20
  • 1
    $\begingroup$ @NathanReed ,what kind of information could be helpful? $\endgroup$
    – nilspin
    Commented 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$ Commented Aug 22, 2015 at 0:47
  • $\begingroup$ This might be a vsync issue if you're using a variable timestep per-frame. $\endgroup$
    – Mokosha
    Commented 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
    Commented Sep 8, 2015 at 22:42

0

Your Answer

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

Browse other questions tagged or ask your own question.