PixarAnimationStudios / OpenUSD

Universal Scene Description
http://www.openusd.org
Other
6.12k stars 1.22k forks source link

Support OpenEXR 3 #1591

Closed musicinmybrain closed 2 years ago

musicinmybrain commented 3 years ago

Description of Issue

USD needs some changes to support OpenEXR 3.x. Significantly, Imath, which provides half.h, is now a separate library.

Steps to Reproduce

  1. Consult https://github.com/AcademySoftwareFoundation/Imath/blob/master/docs/PortingGuide2-3.md.

System Information (OS, Hardware)

N/A

Package Versions

(any)

Build Flags

N/A


I am trying to patch this downstream in Fedora Linux, but it is almost certain that the result will not be clean or general enough to offer upstream.

jilliene commented 3 years ago

Filed as internal issue #USD-6831

lkerley commented 2 years ago

We at Imageworks anticipate a need for this in the coming months, and news on an ETA for support for OpenExr 3?

spiffmon commented 2 years ago

Hi @lkerley and @musicinmybrain ! In fact USD does not have any direct dependence on OpenExr - even half.h . For precisely this reason, we inlined our own version of half.h, and update it periodically.

USD's only exposure to OpenExr is indirect, through Alembic (usdAbc) and OpenImageIO (hio). Therefore, using OpenExr3 with USD should boil down to ensuring USD can be built with OIIO 2.2.x or higher, and Alembic 1.8.x .

USD officially supports neither of those versions, so there might be some work to do, and we'd be happy to consider a PR that adds support while retaining compatibility with the currently supported versions, as it may be awhile before Pixar is able to move forward.

Thanks!

musicinmybrain commented 2 years ago

Hi @lkerley and @musicinmybrain ! In fact USD does not have any direct dependence on OpenExr - even half.h . For precisely this reason, we inlined our own version of half.h, and update it periodically.

USD's only exposure to OpenExr is indirect, through Alembic (usdAbc) and OpenImageIO (hio). Therefore, using OpenExr3 with USD should boil down to ensuring USD can be built with OIIO 2.2.x or higher, and Alembic 1.8.x .

USD officially supports neither of those versions, so there might be some work to do, and we'd be happy to consider a PR that adds support while retaining compatibility with the currently supported versions, as it may be awhile before Pixar is able to move forward.

Thanks!

Thanks! I agree with your assessment. The compatibility issue is in the CMake scripts rather than in the program source code.

In Fedora Linux we ended up carrying a patch that lightly hacks up the CMake files, and as a result we are able to build USD with OpenEXR 3.1.3, OpenImageIO 2.2.19 (or 2.3.10), and Alembic 1.8.3. Unfortunately, this patch is a blunt instrument that doesn’t attempt backwards compatibility.

I probably won’t attempt a backwards-compatible, upstreamable patch, but I’ll certainly help test it if someone else does offer one.

aloysbaillet commented 2 years ago

The ASWF Docker Images for 2022 already contain USD-21.11 and OpenEXR-3, see details here: https://hub.docker.com/r/aswf/ci-vfxall.