Page MenuHome

Cycles render different between GPU and CPU on transparent shader
Closed, InvalidPublic

Description

In most cases, Cycles render is exactly identical be it on GPU or CPU. I noticed a slight difference when rendering on a home-made 3 server farm, 2 with GPU, 1 with CPU, it gave a flickering effect because frames made with CPU are a bit different. I narrowed it down to the transparent shader, as the attached file

demonstrates. Render it once on GPU, then again on CPU with another slot and compare. Now I don't know if it's an absolute rule that Cycles should render identically on GPU and CPU, is it ?

Event Timeline

Patrice Bertrand (PatB) raised the priority of this task from to 90.
Patrice Bertrand (PatB) updated the task description. (Show Details)
Patrice Bertrand (PatB) edited a custom field.

I tested the file on a 2.68RC1, and the 2 renders are identical, so something happened between 2.68 and 2.70, I don't have many versions at hand to try.
My specs: Windows 64bits, GeForce GTX560Ti.

Not exactly a duplicate, since T39761 states that cycles render in view port is not right, while it is correct in a real render. In my case, it is the full render that is different.

Bastien Montagne (mont29) lowered the priority of this task from 90 to Normal.Apr 25 2014, 3:12 PM
Brecht Van Lommel (brecht) changed the task status from Unknown Status to Unknown Status.May 5 2014, 4:58 PM

This file has (near) overlapping faces, which is always problematic for raytracers. Here different float precision on the GPU and CPU makes the results different. The suggestion for now is to avoid this case and increase the distance a bit. We might improve the accuracy in the future, but for now it's not considered a bug.

Thank you for your analysis. Still it seems strange to call this anything else than bug. Particularly since it worked fine before. I do agree it is not a major problem, it is not very often that cpu and gpu are used together and must match. I think using shrinkwrap with a very small offset is pretty commonplace.