Imath project

Cary Phillips

OpenEXR Dev,

I’d like to introduce Owen Thompson, our Google Summer of Code intern, who will be working with us through the end of August in splitting the Imath library out of the OpenEXR GitHub repo and establishing it as an independent project.  We’ve discussed this project for a while, now it’s going to start in earnest. Over the course of the summer, Owen is likely to have questions for the OpenEXR community as we work through the project, so expect to hear more about it soon.

The overall objective is for Imath to stand on its own, so that application developers can download and install Imath without reference to OpenEXR itself.  An application developer visiting the website or repo should encounter everything they expect of a healthy, well supported utility: sensible organization, intelligible documentation, rich heritage of years of use.

The new repo will be The licence, copyright, and governance will stay with the OpenEXR project and the OpenEXR Technical Steering Committee.

The rough phases of the project are:
  1. Move code to new repo, preserving revision history. Set up CI. Fix OpenEXR to reference the new external dependency.
  2. Add appropriate documentation, both repo docs and technical docs (doxygen or something similar).
  3. Add performance metrics to the test suite.
  4. Modernize the code, where appropriate.
We'll plan an initial release of Imath this summer, followed by a 3.0 release of OpenEXR that uses it. Details TBD, but we will coordinate with the VES Reference Platform.

Some potential modernizations are straightforward and uncontroversial C++11/14/17 constructs (constexpr, noexcept, etc). Whatever we do to modernize the code will respect the existing applications that use Imath in its current state, within reason. We want existing applications to continue to use it. The community has a desire for an exception-free Imath, as well as greater compatibility with CUDA; our intention is to find a way to accomplish this that maintains backwards compatibility.

It’s worth restating what Imath is:  a basic, light-weight, efficient representation of 2D and 3D vectors and matrices and other simple but useful mathematical objects, functions, and data types common in computer graphics applications, including the “half” 16-bit floating-point type. Imath emphasizes simplicity, ease of use, correctness, verifiability, and breadth of adoption by the motion picture industry. Imath is primarily a data representation, not a comprehensive linear algebra or numerical analysis package. “If you want more, use Eigen”.

- Cary

Cary Phillips | R&D Supervisor | ILM | San Francisco

Join { to automatically receive all group messages.