works on one mac not another

First let me acknowledge that this is not a clear/precise question, rather I’m fishing for ideas.

Here’s what I have … I developed a composition originally on a MacBook Pro. Then did some work on it on a Mac Mini. Probably went back and forward a bit, projects shared on the two machines via Dropbox (I always make sure it is up-to-date).

Now, it works on the MacMini but on the MacBook Pro it “runs” (no errors) but the results are clearly different, and unexpected.

Always running from directories shaded with Dropbox so identical versions, but tried separate copies also.

OS’s are identical, 10.13.2. Versions of Vuo identical, 1.2.6.

Stumped. Suggestion as to what to try? Avenues for investigation?

Can you say more about how the results differ?

Do the computers have different GPUs? Here’s our current list of known issues with certain GPUs.

The composition involves texture mapping onto OBJ read objects and image mapping for the texture through a GLSL shader. On the MacMini all is perfect, on the MacBook Pro it looks like the texture mapping is getting messed up.

MacBook Pro: NVIDIA GeForce GT 750M 2 GB Intel Iris Pro 1536 MB

MacMini: Intel HD Graphics 4000 1536 MB  

Hm, I think we’ll need more information. Could you provide the composition (and any supporting files necessary to run it)?

Thanks for the consideration. The original is quite a complex composition, lots of subcompositions etc. But I have stripped it all down to the attached. If you connect the image directly to the make unlit shader node, it works. If the GLSL shader is used, it doesn’t. There are two windows grabs, correct_macmini.png and incorrect_macbookpro.png. I do not expect you to debug the GLSL shader but I’m curious/concerned as to why it works on the Mac Mini and on lots of other Macs but not my MacBook Pro.

vuo_pentagon_minimum.zip (1.22 MB)

1 Like

I tested on a Mac Book Pro and Mac Pro. Works on the Mac Pro, doesn’t on the MBP. Looks like it’s related to the GPU.

Capture d’écran 2018-04-05 à 12.10.57.png

Capture d’écran 2018-04-05 à 12.10.28.png

Another data point: The output looks correct on my MacBook Pro, which has macOS 10.12.6 and an NVIDIA GeForce GT 650M. I would have expected the 650M to behave similarly to the 750M, but either that is not the case or the problem only occurs on macOS 10.13. I’ll test on macOS 10.13 when I get a chance.

That is a possibility, you will note in my original query I suggested I started development on my MacBookPro … I suspect I upgraded since then.
Also, a colleague of mine I sent the project to had no problems, also MacBookPro, don’t have his machine specs on hand.

OK, I was able to reproduce the problem on macOS 10.13. So it seems a bug was introduced into Apple’s NVIDIA GeForce GT 650M and 750M drivers with the update from 10.12 to 10.13.

If I understand correctly, in the “Find position on unit pentagon” part of the shader, it’s assuming that found is always going to be set to one of the positions. This is not the case on this particular GPU on macOS 10.13. You can see this by inserting if (found==-1) found=5; after the loop. The statement should have no effect, since found should never be -1 at that point, but in fact it does affect the output image.

OK, here’s some weird stuff, see also new attachment.

Change

if (mu2 >= 0.0 && mu2 <= 1.0 && mu1 >= 0.0) {
			found = k;
			break;
		}

to

found = k;
		if (mu2 >= 0.0 && mu2 <= 1.0 && mu1 >= 0.0) {
			break;
		}

And it works. Scream! Why!
For example change to

gl_FragColor = vec4(found/24.0,found/24.0,found/24.0, 1.);

and you can see the wedges (k) get identified correctly and “found” is not -1 but the wedge number.  

Archive.zip (529 KB)