GafferHQ / gaffer

Gaffer is a node-based application for lookdev, lighting and automation
http://www.gafferhq.org
BSD 3-Clause "New" or "Revised" License
951 stars 205 forks source link

Gaffer eats Arnold Version log messages #5950

Open tomc-cinesite opened 2 months ago

tomc-cinesite commented 2 months ago

Description

When batch rendering with Arnold, the version information log message is swallowed by Gaffer. This makes debugging render issues harder as there is no way to know the precise Arnold version that was used.

Steps to reproduce

Ideally, wed see the arnold version information messages at the head of the log:

00:00:00   233MB         | log started Thu Jun 27 11:21:47 2024
00:00:00   234MB         | Arnold 7.3.2.0 [830f6cd3] windows x86_64 clang-15.0.7 oiio-2.4.1 osl-1.13.0 vdb-11.0.0 adlsdk-8.0.7.50 clmhub-3.1.1.43 rlm-14.2.5 optix-8.0.0 2024/05/16 14:38:27
johnhaddon commented 2 months ago

There are two phases to Arnold initialisation for a render :

  1. Calling AiBegin() to initialise the Arnold API. This is what would print out the Arnold version and a bunch of other stuff.
  2. Calling AiUniverse() to create a universe that will be used for the render. This prints out the stuff you currently see in a batch render.

We deliberately suppress messages from phase 1, because for the Gaffer GUI that happens early in start up so we can query shaders and put them in menus etc. At that point we don't know that the user cares one bit about Arnold in that session, and we follow the "silence is golden" rule. Personally I'd like to stick with that rule, unless anyone wants to make the case for constant verbosity?

There's obviously more value in having the additional logging for an Arnold batch render task though, so I'm wondering if we should remove the suppression when we know we're calling AiBegin() from a render task? Would that be acceptable?

tomc-cinesite commented 2 months ago

There's obviously more value in having the additional logging for an Arnold batch render task though, so I'm wondering if we should remove the suppression when we know we're calling AiBegin() from a render task? Would that be acceptable?

I agree with your thoughts John - yeah that would be ideal. In an interactive session we know what the Arnold version is, but looking at farm logs from a week ago is where that info would be most valuable. 🙏