Skip to content

Instantly share code, notes, and snippets.

@oxt3479
Last active August 25, 2020 15:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oxt3479/13a66dac028fc920b27eb6750310f088 to your computer and use it in GitHub Desktop.
Save oxt3479/13a66dac028fc920b27eb6750310f088 to your computer and use it in GitHub Desktop.
The annexation of Imath from OpenEXR: A Google Summer of Code Project

OpenEXR is a resource within the motion picture industry for providing a standardized file format suitable for transferring highly detailed and complicated video data between different studios. Originally created by Industrial Light and Magic in the late 90's and early 2000's, OpenEXR provided a set of valuable tools for private productions before becoming open source in 2004. Within the OpenEXR source there is a subset of code that is particuliarly useful. 'Imath' is a vector matrix image processing math library that has been imitated by other open source projects. For this GSoC project, Imath was neatly cleaved from OpenEXR while achieving 3 things:

  • Complete backwards compatability
  • Virtually imperceptable change to the installation of OpenEXR
  • Modernization of the Imath library

Doing these and seperating Imath allows for other projects to utilize it without the baggage of the complete installation of OpenEXR.

Owen Thompson was responsible for the following project developments:

Initial separation and population of the Imath-test repo:

https://github.com/AcademySoftwareFoundation/Imath-test

Removal of unneeded source, including IEX library:

https://github.com/AcademySoftwareFoundation/Imath-test/pull/3

Integration of Python bindings with Imath-test into the ultimate Imath repo:

AcademySoftwareFoundation/Imath#18

Small suite of tests to demonstrate library speed:

AcademySoftwareFoundation/Imath#20

Adding constexpr to allow for better compilation:

AcademySoftwareFoundation/Imath#21

Maintaining compatability with C++11 constexpr restrictions:

AcademySoftwareFoundation/Imath#25

Resolving conflicting type half (Imath) with half (CUDA):

AcademySoftwareFoundation/Imath#27

Ensuring CI works with the new repo similar to how it worked with OpenEXR:

AcademySoftwareFoundation/Imath#29

AcademySoftwareFoundation/Imath#30

Added CUDA __host__ __device__ conditionally to all Imath methods to allow for compiling on the CUDA kernel:

AcademySoftwareFoundation/Imath#38

AcademySoftwareFoundation/Imath#41

Made library methods inline where possible/useful:

AcademySoftwareFoundation/Imath#42

Restructured source directories:

AcademySoftwareFoundation/Imath#46

Removal of Imath source from the OpenEXR repositroy:

AcademySoftwareFoundation/openexr#791

Restructuring of OpenEXR's source directories:

AcademySoftwareFoundation/openexr#796

Adding an automatic installer of Imath to OpenEXR:

AcademySoftwareFoundation/openexr#799

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment