mvs-texturing
mvs-texturing copied to clipboard
Fully deterministic output
Hi,
is it possible to make texrecon
produce fully deterministic output?
I noticed (with the versions from https://github.com/nmoehrle/mvs-texturing/issues/120#issuecomment-541404178) that multiple runs on the same input produce different outputs.
Most significantly, the order of texture patches in the generated material0000_map_Kd.png
texture atlases is permuted (observed especially when OpenMP based multithreading is used).
But there is also nondeterminism when when there's no multithreading (when the environment variable OMP_THREAD_LIMIT=1
is set). I've observed sometimes that the PNG files are visually identical but differ slightly in size and contents (for example, for my 4k² texture, idiff
reports 31 pixels being minimally different).
- Where in the code might this nondeterminism originate from?
- Do you think this is the only place of nondeterminism in
texrecon
? - What do you think is needed to make it fully deterministic?
Thanks a lot for this software!
The algorithm is supposed to be deterministic, there was a time when the non deterministic version of mapMAP was used, but that has been changed. If it isn't that is a bug, either uninitialized memory or a race condition. Do you know where the results start to differ? Is the labeling.vec still the same?
I forgot to comment here: PR #126 has many determinsim fixes. May not be all yet but should certainly help.