[SOLVED] Different results on GPU and CPU in Cycles

I have a one sided mesh which is not watertight and the normals pointing inwards. Basically a cube with “2D” walls with holes in them. My problem is it renders differently in Cycles depending on if I use the CPU or GPU.

With the CPU I get what I feel is a correct result:


With the GPU this is my result:


Normals:


Now, I’m pretty sure this is because it is an open mesh with a strong light outside it, but shouldn’t Cycles renders be identical between CPU and GPU?

Closing this mesh will be a huge pain, but I guess I will end up doing it.

I have abandoned GPU renders before because the lighting looked different from the CPU renders, and now I just realized it was because I had several light sources that were “2D” mesh lights stacked behind each other.

Is this expected behavior? Should I just always have a completely closed mesh in any case?

I presume the card you are using was a nvidia one? If so it’s interesting as I was experimenting with an amd/ati card and I got different results - light-levels were vastly different (lower) with gpu than cpu.

I thought it was because of current state of cycles with amd, even using beta drivers; maybe it’s a different reason?

I agree with you though that they should render exactly the same.

Yes, Nvidia GTX-560M, CUDA render on an SVN build.

There are defferent sub-modes as ADVANCE_SHADING vs BASIC, as compile time option. I suspect you have build that use ADVANCE for CPU and BASIC for GPU. Cannot talk for sure, I think pictures must be same, may be some hidden logic produce different result in one case. But you can check it if build Blender from sources and looking in kernel_types.h file.

Hi storm, thanks for weighing in.

This actually happens on two different builds from different people/sources, and happens with both CUDA and OpenCL. I guess I will have to make my own build at some point and try those compile options.

For now I think I will just close my meshes properly and try again :slight_smile:

Hi. or upload the file so we can test it on our systems.

Cheers, mib,

Here is the blend file. You will need bmesh:

openbox.blend (74.5 KB)

@storm_st

would you mind telling me where those are? i’m building on os x cmake->xcode. Never came across this.

Hi monsterdog, the render looks similar with cpu and gpu.
My system specs are in my signature, gpu render is with GTX 550Ti.
Strange but it is not your file.
I bright one part of the image to view the difference.
Blender rev. 45785 from today.
Cheers, mib.

Attachments


Check out 2.6x in installation folder; find the: 2.62\scripts\addons\cycles\kernel\kernel_types.h, or whatever the mac equivalent is.

How odd.

I also see some of these render artifacts with CPU rendering, and you seem to have none at all in your render.

EDIT: Same result with 45790.

Maybe my nvidia driver…

Oh look, I’m an idiot :slight_smile:

This only happens in the viewport render, not final render, duh, sorry :frowning: Also closing the mesh did not help.

I guess storm_st is right, the basic shading is probably done in the viewport.

I’m still a little perturbed by the difference between CPU and GPU.

thanks, found it.