GafferHQ / dependencies

All 3rd party dependencies necessary for building Gaffer
33 stars 26 forks source link

Update to Cycles 4.2.0 with OIDN support #266

Closed murraystevenson closed 1 week ago

murraystevenson commented 3 months ago

This updates Cycles to 4.2.0 with the addition of OpenImageDenoise 2.3.0. OIDN is built with OIIO support and the oidnDenoise binary is included in the manifest as it may be useful for anyone wishing to do post-process deniosing via a SystemCommand node. Zstd is also a new addition as it is now required by Cycles to compress and decompress GPU kernel .ptx and .cubin files.

The last few commits are attempts to address a couple of issues that have been preventing CI from running reliably.

@boberfly it'd be great to know if this works for you. There's one todo which will need to be addressed via a build container update, but that's just moving the creation of an environment variable to the right place...

boberfly commented 3 months ago

Nice one Murray!

For OpenImageDenoise I found that I couldn't load in Cycles if Arnold is also loaded in, and it was down to Arnold's version preventing Cycles to load. A way around this was to rename the library: https://github.com/RenderKit/oidn/blob/d94147f9bf85a15940f75847685bf96f1caf006a/cmake/oidn_common.cmake#L43

Perhaps a prefix eg. "GafferOpenImageDenoise" is the way to go. I was able to get cycles to find this by patching their FindOpenImageDenoise.cmake and it then worked as normal.

boberfly commented 3 months ago

I did a build recently and saw that oslc needed libblosc (my hunch is that OpenImageIO rebuilt itself and found OpenVDB while a regular clean and ordered build doesn't due to dependency ordering?) Anyways I solved it by adding this to the Cycles build: " -D PLATFORM_BUNDLED_LIBRARY_DIRS={buildDir}/lib" Which does a platform-independent LD_LIBRARY_PATH type thing to the environment while building.

murraystevenson commented 1 week ago

Closing this as the Cycles 4.2.0 update has been handled as part of #267 and we'll investigate the OIDN issues separately at a later date...