* * Adds Metal Shading Language (MSL) Generation support Signed-off-by: Morteza Mostajabodaveh <smostajabodaveh@apple.com> Co-authored-by: Ingthor Hjalmarsson <ihjalmarsson@apple.com> Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * * Fixes warnings triggered due to unused variables. Signed-off-by: Morteza Mostajabodaveh <smostajabodaveh@apple.com> Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * * Fixes compilation error on Mac and Windows: - vector of const objects causing compiler errors on windows. - Wrong string was used for Metal language python binding. Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * * Removes class wrapping interface from OpenColorIO interface and move it to implementation * Adding more tests for metal code path * Proper generated Metal code indentation * Fixes a few coding style inconsistencies and unneeded include files Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * Remove the unneeded empty line to reset OpenColorIO.h to what it was before the metal change. Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * * switching from c-like getFunctionParameters function to c++-like one since it is not in the opencolorio interface anymore. Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * Missing include causing compiler errors on windows Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * * Fixes and improvements follow up to change that was trying to move metal related code in implementation, and hide them from OCIO interface. Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * - remove unused variables. Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * * Adds support for uniform parameters and proper handling of them in metal code. * Adds two new tests for uniforms and helper functions. Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * * making declaration parsing more C++-like. Functions like sscanf are problematic when it comes to multiple platform support and may not be safe Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * * Switching from clf/lut1d_half_domain_raw_half_set.clf to clf/lut1d_long.clf. Due to decimal number outputting difference between different platforms, some tests were failing. Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * * Moving Metal only functionalities to MetalClassWrappingInterface * remove unnecessary functions and data types * code clean up and quality improvement Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * * Adds support for uniforms that are array * Removing getTextureKeyword() and getTextureDeclaration() as they are not needed. * code clean up and quality improvement Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * Remove unnecessary changes to GpuShaderUtils_tests.cpp Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * * Removed unnecessary included files Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * Removing unnecessary include Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * * Apply style improvement suggestions Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * * changed from msl_metal to msl_2 so it matches with `GpuLanguageFromString` function. Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * Move MetalShaderClassWrappingInterface to a separate file and generalise it Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * header files inlcudes clean up Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * Still the else path is needed in case we set language from MSL2 to something else. Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * [minor] Showing the GpuShaderClassWrapper.h also in the vc15 aftereffect project. Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * Run ClassWrapper function for all backends. It only produces code in metal shading language code generation case. operator= for GpuShaderClassWrapper Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * use factory pattern instead of updateClassWrappingInterface Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * Replace assignment operator with clone function that is more explicit. Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * use Assignment operator instead of setting members in clone member function Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * add include guards. Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * make output of MetalShaderClassWrapper::operator= non-const Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * Update default branch name (#1532) Signed-off-by: Michael Dolan <michdolan@gmail.com> Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com> Signed-off-by: Morteza Mostajab <smostajabodaveh@apple.com> * Adsk Contrib - Default to C++14 and remove OIIO from ocioperf (#1516) * Adsk Contrib - Default to C++14 and remove OIIO from ocioperf Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com> * Fix cmake breaks Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com> * Fix bit-depths Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com> * Fix Linux build break Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com> * Improve the image generation Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com> * Improve the image generation Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com> Signed-off-by: Morteza Mostajab <smostajabodaveh@apple.com> * Add metal rendering support to ociodisplay Signed-off-by: Morteza Mostajab <smostajabodaveh@apple.com> * Adds support for metal only input texture Signed-off-by: Morteza Mostajab <smostajabodaveh@apple.com> * Returning correct value for maximum texture width Signed-off-by: Morteza Mostajab <smostajabodaveh@apple.com> * Add GPU rendering tests for metal renderer Fixes incorrect shader generation code for arrays in uniform buffer Adds support for vector comparison in Metal Signed-off-by: Morteza Mostajab <smostajabodaveh@apple.com> * Fixes failing test_cpu_exec test Fixes compilation error on Linux, older clang compiler Makes the app working on x64 Macs Signed-off-by: Morteza Mostajab <smostajabodaveh@apple.com> * Add support for test that apply color correction multiple times with different setups replaces asserts with exception Disables fast math to get more accurate results Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * Matching the uniform buffer size elements for array of ints and float to fix two gpu tests Signed-off-by: Morteza Mostajab <smostajabodaveh@apple.com> * enables -gpuinfo to print shader Signed-off-by: Morteza Mostajab <smostajabodaveh@apple.com> * Revert "Matching the uniform buffer size elements for array of ints and float to fix two gpu tests" This reverts commit c1695e20b336c54c618a541cc47311a61399457b. Signed-off-by: Morteza Mostajab <smostajabodaveh@apple.com> * Enables uniform data binding for metal without touching OCIO interface Signed-off-by: Morteza Mostajab <smostajabodaveh@apple.com> * set dummy buffers for the vectors that are empty. Signed-off-by: Morteza Mostajab <smostajabodaveh@apple.com> * Update metal test to reflect latest changes in metal shader generator Signed-off-by: Morteza Mostajab <smostajabodaveh@apple.com> * Improving coding style Adds metal gpu unit tests to the one executing Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * Updating the test so it reflects latest code changes. Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * sets the opengl state even when no valid ocio config is loaded. Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * Handles metal resources lifecycles correctly. Fixes the crash on transform change. Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * Applying improvements to code and minor fixes Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com> * Disable testing NaN and Infinity on Apple Silicon that causes test failures and precision errors Signed-off-by: Morteza Mostajab <smostajabodaveh@apple.com> * make the condition for disabling NaN and INFs more accurate. Signed-off-by: Morteza Mostajab <smostajabodaveh@apple.com> * Improving code quality Fixing possible texture mem leaks Signed-off-by: Morteza Mostajab <smostajabodaveh@apple.com> Co-authored-by: Ingthor Hjalmarsson <ihjalmarsson@apple.com> Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com> Co-authored-by: Michael Dolan <michdolan@gmail.com> Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
OpenColorIO
Introduction
OpenColorIO (OCIO) is a complete color management solution geared towards motion picture production with an emphasis on visual effects and computer animation. OCIO provides a straightforward and consistent user experience across all supporting applications while allowing for sophisticated back-end configuration options suitable for high-end production usage. OCIO is compatible with the Academy Color Encoding Specification (ACES) and is LUT-format agnostic, supporting many popular formats.
OpenColorIO is released as version 2.0 and has been in development since 2003. OCIO represents the culmination of years of production experience earned on such films as SpiderMan 2 (2004), Surf's Up (2007), Cloudy with a Chance of Meatballs (2009), Alice in Wonderland (2010), and many more. OpenColorIO is natively supported in commercial applications like Katana, Mari, Nuke, Maya, Houdini, Silhouette FX, and others.
OpenColorIO is free and open source software (LICENSE), and one of several projects actvively sponsored by the ASWF (Academy Software Foundation).
OpenColorIO Project Mission
The OpenColorIO project is committed to providing an industry standard solution for highly precise, performant, and consistent color management across digital content creation applications and pipelines.
OpenColorIO aims to:
- be stable, secure, and thouroughly tested on Linux, macOS, and Windows
- be performant on modern CPUs and GPUs
- be simple, scalable, and well documented
- be compatible with critical color and imaging standards
- provide lossless color processing wherever possible
- maintain config backwards compatability across major versions
- have every new feature carefully reviewed by leaders from the motion picture, VFX, animation, and video game industries
- have a healthy and active community
- receive wide industry adoption
OpenColorIO Project Governance
OpenColorIO is governed by the Academy Software Foundation (ASWF). See GOVERNANCE.md for detailed infomation about how the project operates.
Web Resources
- Website: http://opencolorio.org
- Mailing lists:
- Developer: ocio-dev@lists.aswf.io
- User: ocio-user@lists.aswf.io
- Slack workspace: https://opencolorio.slack.com
- New users can join via http://slack.opencolorio.org
Reference Configs
Reference OCIO configuration files and associated LUTs can be found at the Imageworks OpenColorIO-Configs repository.
The following reference implementations are provided:
- SPI: Sony Pictures Imageworks
- spi-anim
- spi-vfx
- ACES: Academy Color Encoding System
- aces_1.0.3
- aces_1.0.2
- aces_1.0.1
- aces_0.7.1
- aces_0.1.1
- Other
- nuke-default
Acknowledgements
OpenColorIO represents the generous contributions of many organizations and individuals. The "Contributors to the OpenColorIO Project" copyright statement used throughout the project reflects that the OCIO source is a collaborative effort, often with multiple copyright holders within a single file. Copyright for specific portions of code can be traced to an originating contributor using git commit history.
OpenColorIO was originally developed and made open source by Sony Pictures Imageworks. The core design, and the majority of OCIO 1.0 code was authored by Imageworks, who continue to support and contribute to OCIO 2.0 development.
The design and development of OpenColorIO 2.0 is being led by Autodesk. Autodesk submitted a proposal to revitalize the project in 2017, and have authored the majority of OCIO 2.0 code in the years since.
Significant contributions have also been made by Industrial Light & Magic, DNEG, and many individuals. See Contributors for a complete list.
See THIRD-PARTY.md for license information about portions of OpenColorIO that have been imported from other projects.
Images from "Cloudy With A Chance of Meatballs" Copyright 2011 Sony Pictures Inc. All Rights Reserved.


