Compare commits

...
158 Commits
Author SHA1 Message Date
Cédrik Fuoco fb9390ece9 Removing dev for official release (#1716)
Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
2022-10-31 18:27:35 -04:00
Cédrik FuocoandDoug Walker cac1ba5fef Adsk contrib - Update builtin config and add studio builtin config (#1713)
* - Modifying the CG builtin config and updating the code accordingly. I named the config without the RC2 in order to minimize the changes once the stable release in available.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* - Adding Studio config

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* - Updated config to stable version
- Added some variables for string const

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Fixing a unit test since it was using the previous CG config and the config changed.

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>
Signed-off-by: Cédrik Fuoco <105517825+cedrik-fuoco-adsk@users.noreply.github.com>
Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2022-10-31 16:07:20 -04:00
Cédrik FuocoandDoug Walker 4f4e52257d Adsk contrib - Issue with latest ociocheck (#1715)
* Missing logs from config::validate.

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>

* Moving log guard ouput before the checks for errors level logs.

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2022-10-31 15:43:12 -04:00
amysparkandDoug Walker 1e6b01cc23 MinGW: Work around lack of strtof_l for locale independent parsing (#1697)
Signed-off-by: L. E. Segovia <amy@amyspark.me>

Signed-off-by: L. E. Segovia <amy@amyspark.me>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2022-10-31 14:41:09 -04:00
Éric Renaud-HoudeandRémi Achard e7a88bfe1e Enforce GL_NEAREST with gpu tetrahedral interpolation, fixing #1676. (#1708)
Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>
Co-authored-by: Rémi Achard <remiachard@gmail.com>
2022-10-30 15:52:02 -04:00
Rémi AchardandMichael Dolan 4dff29eb36 Baking crosstalk and NamedTransform support fix (#1693)
* Check for channel crosstalk on optimised processors when baking

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Use lossless optimization

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Handle NamedTransform used in Baker shaper space

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Signed-off-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Michael Dolan <michdolan@gmail.com>
2022-10-29 21:44:01 -04:00
c897bd301c Fix build and errno check on musl libc (#1678)
In the 'from_chars' function, it's first checked if errno != 0 and
immediately returns with std::errc::result_out_of_range aka ERANGE.
Please refer issue [1624] (https://github.com/AcademySoftwareFoundation/OpenColorIO/issues/1624)

The function 'strtol_l' is not available on non GLIBC systems hence on
other libc use the alternative 'strtol' function.

Signed-off-by: listout <listout@protonmail.com>

Signed-off-by: listout <listout@protonmail.com>
Co-authored-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Michael Dolan <michdolan@gmail.com>
2022-10-29 21:02:28 -04:00
Michael Dolan 9a82ddb96d Add NamedTransform Processor constructors (#1689)
* Add NamedTransform Processor constructors

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Update frozen Python API docs

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Add NamedTransform::GetTransform static function to public API

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Move function from NamedTransformImpl to NamedTransform

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Update Python frozen rst with API changes

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Update comment and variable naming

Signed-off-by: Michael Dolan <michdolan@gmail.com>

Signed-off-by: Michael Dolan <michdolan@gmail.com>
2022-10-29 20:12:30 -04:00
Cédrik Fuoco b236bd827b Adsk contrib - Convert to or from a known external color space (#1710)
* First iteration of isColorspaceLinear.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* - Comments.
- Added a private getProcessor method that ignore caching.
- Fix the algorithm for isColorspaceLinear. - Now testing R, G, B and neutral values.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* - Passing in the config reference instead of using this in the capture clause of the lambda function as this was causing issue on other platforms than Windows.
- Remove unused variable in unit test.
- other minors changes

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Removing a comment and removing the helper function as it is not needed.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Get in sync with changes on the public repository for isColorspaceLinear.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* - C++ implemention for getProcessorToBuiltinColorSpace with a few utilitiy functions

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* - Changed getProcessorToBuiltinColorSpace to getProcessorToOrFromBuiltinColorspace and it not accessible through the API anymore
- Added getProcessorFromBuiltInColorspace (API)
- Added getProcessorToBuiltinColorspace (API)
- rename "bi" variables to "builtin"
- Added the swaping of colorspace when TRANSFORM_DIR_INVERSE
- Added C++ unit test

std::cout debug print will be removed in the next commit.
Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Adding ColorSpaceUtils

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* - Comments and styling
- Refactor the code in order to use apply()
- Move everything to ColorSpaceUtils so that all the helper functions are private to ColorSpaceUtils
- Remove the std::cout

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Now using getProcessorWithoutCaching and moved logics into Config::Impl.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Removing combineGroupTransform, small refactor of getRefToSRGBTransform and styling issues.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Python Bindings

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Changing new helper methods to const and minor styling issues.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Minor styling issues

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Changed a comment to fit on one line and styling issue.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Removing extra qualifiers that returns an error on Linux and Mac and fixing warnings on Linux and Mac.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Fixing issue with documentation

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* - Rename checkForLinearColorSpace ---> getReferenceSpaceFromLinearSpace
- Fix an issue where the wrong config object was used for getProcessorWithoutCaching.
- Added a comment about about 0.0030399346397784323.
- Using std::pow instead of pow
- Small refactor of getReferenceSpaceFromLinearSpace to avoid duplicate code.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Renaming checkForSRGBTextureColorSpace to getReferenceSpaceFromSRGBSpace and adding "Utility - Linear - Rec.2020" to the builtin linear spaces.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>
Signed-off-by: Cédrik Fuoco <105517825+cedrik-fuoco-adsk@users.noreply.github.com>
2022-10-28 16:28:56 -04:00
Rémi Achard a347d807e2 Update hashing algorithm for Processor caches (#1656)
* Use xxHash for CacheID

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Using XXH3_128bits

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Signed-off-by: Rémi Achard <remiachard@gmail.com>
2022-10-28 12:10:01 +01:00
Rémi Achard 82f56ab6ca Add Python 3.11 wheels (#1706)
* Add Python 3.11 wheels and cleanup old variants

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Bump cibuildwheel version

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Remove Python 3.6 from supported version, fix build warning

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Add python_requires to setup.cfg

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Signed-off-by: Rémi Achard <remiachard@gmail.com>
2022-10-28 11:43:29 +01:00
Doug Walker 8a93946cb3 Fix atan2 argument order for HLSL (#1712)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2022-10-27 20:33:58 -04:00
Cédrik FuocoandDoug Walker 3ffcc3fb88 Adsk contrib - Add a method to query whether a color space is linear (#1703)
* First iteration of isColorspaceLinear.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* - Comments.
- Added a private getProcessor method that ignore caching.
- Fix the algorithm for isColorspaceLinear. - Now testing R, G, B and neutral values.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* - Passing in the config reference instead of using this in the capture clause of the lambda function as this was causing issue on other platforms than Windows.
- Remove unused variable in unit test.
- other minors changes

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Removing a comment and removing the helper function as it is not needed.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* - Tweaking algorithm. Returns true at the end since the color space matches the desired reference space type, is not a data space, and has no transforms, so it is equivalent to the reference space and hence linear.
- Added a color space in the test config to cover that.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Adding python binding for isColorSpaceLinear and python unit test.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2022-10-27 15:58:26 -04:00
Doug Walker 5dc32f997c Adsk contrib - Add Built-in Transforms for ARRI LogC4 and Canon curves (#1704)
* Add LogC4 and Canon curves

Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Refactor Canon curves

Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Add checkVersionConsistency test

Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Update comment

Signed-off-by: Doug Walker <doug.walker@autodesk.com>

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2022-10-27 14:57:43 -04:00
Cédrik Fuoco 34284f5ba4 Merging adsk_contrib/make-interchange-roles-required-for-future-config-version into this new branch as one commit in order to clean up the commits. (#1711)
Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>
2022-10-27 10:33:28 -04:00
Cédrik FuocoandDoug Walker f767cad1ed OCIOZ archive feature (#1627) (#1696)
* OCIOZ archive feature (#1627)

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Add OCIOZ extension if not present.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* - Changing getLutData (return vector instead of passing by reference) in order to respect C++ idiom and letting compiler optimize with NRVO and Copy elision
- Improving how cmake find zlib (renamed getZLIB to Findzlib)
- Make sure that ZLIB is statically linked on all platform (it wasn't on windows)
- Fix issue with Python Unit test when using Python 2 (problem discovered on OSX)
- Change how OpenEXR finds ZLIB by using our custom Findzlib
- Patching Minizip-ng makefile to change cmake minimum version

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* - Remove the minizip-ng patch as it doesn't work and further discussion needs to happend.
- Responding to Remi's comments.
  Notable changes:
  - Comments typo and styles fix.
  - Unit tests fixes.
  - Removing the usage of std::ifstream in getLutData and getConfig since it is not needed at all - It was slowing down getLutData.
  - Implicitly converting python list to std::vector<uint8_t> (for getLutData)
  - When archiving a config, the file won't added (overwridden) multiple times if the file matches multiple supported format.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* - Added implicit conversion from bytearray to std::vector<uint8_t>
- In ConfigIOProxy Python Unit test, changed getLutData to return a bytearray instead of a list. I think this makes more sense and it works with Python 2 and 3.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Update comments to be in line with the current implementations

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* - Changing ci workflow in order to install cmake version 3.13.3 for Linux (matrix.vfx-cy == '2019').

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* - Fixing issue with the install location of zlib library
- Removing unused CMAKE variables from ZLIB_CMAKE_ARGS

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2022-10-25 14:42:09 -04:00
Rémi Achard 521ed0835a Support for ICC Parametric curves type 1-4 (#1691)
* Support for ICC Parametric curves type 1-4

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Add warning about paraCurve characteristics, fix clamp and improve unit tests

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Windows CI fixes

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Signed-off-by: Rémi Achard <remiachard@gmail.com>
2022-10-24 23:19:44 -04:00
Jochen HunzandDoug Walker cae5850771 added anchorpoint to supported applications (#1695)
Signed-off-by: Jochen Hunz <j.hunz@anchorpoint.app>

Signed-off-by: Jochen Hunz <j.hunz@anchorpoint.app>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2022-10-22 02:07:59 -04:00
660cf515fa Corrected http links to https (#1669)
Downloads links corrected to use HTTPS instead of HTTP.

Signed-off-by: Abel Serrano Juste <akronix5@gmail.com>

Signed-off-by: Abel Serrano Juste <akronix5@gmail.com>
Co-authored-by: Michael Dolan <michdolan@gmail.com>
Co-authored-by: Rémi Achard <remiachard@gmail.com>
2022-10-21 11:07:49 +01:00
Rémi AchardandMichael Dolan d797f8e6cd Log OCIO version for debugging purposes (#1694)
Signed-off-by: Rémi Achard <remiachard@gmail.com>

Signed-off-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Michael Dolan <michdolan@gmail.com>
2022-10-21 10:41:36 +01:00
Rémi AchardandMichael Dolan 20805ae174 Fix dependency specifications for ninja build (#1692)
Signed-off-by: Rémi Achard <remiachard@gmail.com>

Signed-off-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Michael Dolan <michdolan@gmail.com>
2022-10-21 10:09:38 +01:00
Éric Renaud-HoudeandRémi Achard 281d39f749 Fix for static const literals in HLSL. (#1684)
Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>
Co-authored-by: Rémi Achard <remiachard@gmail.com>
2022-10-20 08:26:34 -04:00
Rémi AchardandMichael Dolan 8e04da773a Support for OpenEXR to build additional apps (#1637)
* OpenEXR support

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Build an CI minor improvements

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Fix ocioconvert output bitdepth support

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Fix explicit version request handling

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Try to fix OSL tests

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Signed-off-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Michael Dolan <michdolan@gmail.com>
2022-09-19 16:00:42 -04:00
AkhilandRémi Achard 0620af70a5 Replaced "requireements" to "requirement" in installation.rst (#1632)
* Replaced "requireements" to "requirement" in installation.rst

Signed-off-by: Akhil <46328560+akhilsahuji@users.noreply.github.com>

* Deleted Extra Space

Signed-off-by: Akhil <46328560+akhilsahuji@users.noreply.github.com>

Signed-off-by: Akhil <46328560+akhilsahuji@users.noreply.github.com>
Co-authored-by: Rémi Achard <remiachard@gmail.com>
2022-09-06 09:11:09 -04:00
Cédrik FuocoandDoug Walker 27447f5a9c Adsk contrib - Built-in configurations (#1659)
* First version of built-in configs feature

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Generating configs header into generated_include folder

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Added comments, move some code, added a test for public interface, changed how CG.h get generated and other minors fixes

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Adding support for ocio://default and a unit test for it

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Renamed methods to get align with BuiltinConfig class name and to remove confusion with Config class.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Refactor the test suite for Built-in config and comments/descriptions changes

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Adding guard for setenv, added two tests and other minor changes

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Added readme file to help add a new config, minors fixes, changed some built-in config unit tests and created a generic guard for set/unset env.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Fix some coding styles and remove try catch that was not really needed.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Updating setenv/unset to the guard pattern in config_tests module.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Python bindings

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Fixing styling issues and minor modifications in python unit tests

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Fixing problem with test_create_builtin_config

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Remove the check for the number of colorspaces in the python tests for now - only checking the name, removed readme and fix issue around config begin null in test by adding a OCIO_REQUIRE_ASSERT.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Fixing styling and comments issues and adding back the tests for the number of colorspaces using len().

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* missing spaces in comments.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Adding display name and getBuiltinConfigUIName.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Fix a few issues with the builds - Replacing get_filename_component/NAME_WLE by a regex, replacing assetRaisesRegex with a combination of assertRaises/assertEqual and fixing the link issue with Doxygen in OpenColorIO.h

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Adding missing comment and changing "displayName" to "uiName" to remove confusion within ocio

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Fixing build issue on Linux and Mac : config string was not null terminated

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* minor fixes

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* A more Pythonic interface

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Adding more information into the tuple and modified corresponding tests.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* returning reference instead of smart pointer as it is not needed.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Removed getNumBuiltinConfig from python binding since we have iterator and modified __contains__ magic method to not throw exception.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Fix wrong type in for loop. (linux and mac issue)

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2022-07-07 17:57:28 -04:00
Rémi Achard 06601f0e43 Enable found version printing for find_package(OpenColorIO CONFIG) (#1636)
Signed-off-by: Rémi Achard <remiachard@gmail.com>
2022-06-27 20:21:30 +01:00
Cédrik FuocoandDoug Walker a2e204b378 Adsk contrib - Scripts to facilitate building OCIO on Windows (#1646)
* Scripts to facilitate OCIO builds on Windows

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Fixed an issue with spaces in python path

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Using delayed variable expansion instead of normal expansion for variables that can changes based on arguments

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Updating the quick start > installations documentation to mention the windows scripts and re-writing obsolete section.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2022-06-21 22:01:12 -04:00
Cédrik FuocoandDoug Walker b80361cb75 Adsk contrib - Implement invertview for ocioconvert, ocioperf and ociowrite (#1648)
* Implement invertview for ocioconvert, ocioperf and ociowrite

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Fix issue with operator precedence warning on Linux

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Added comment on why ocioconvert is changing the output buffer bit-depth and changed bitwise AND operator into logicla AND operator (same result but makes more sense here)

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Fix issue with --gpu path

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2022-06-05 14:59:43 -04:00
AkhilandDoug Walker 68b510b652 Adjusted 'family' description in OpenColorIO.h to match documentation (#1635)
Signed-off-by: Akhil <akhil9415588049@gmail.com>

Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2022-05-18 13:55:08 -04:00
Cédrik FuocoandDoug Walker 25e910cf41 Adsk contrib - Fix issues when building OCIO with MS Visual Studio 2022 (#1647)
* Fix issues when building OCIO with MS Visual Studio 2022

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Removing GLEW_LIBRARY variable as it is not needed

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Bumping CI to use VC 2022 as per Doug Walker request (see #1634)

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Reverting the changes on ci_workflow.yml and adding a check for MSVC for the Glew fix.

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Typo for the windows action in ci workflow

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

* Typo for the windows action in ci workflow

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>

Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2022-05-18 11:54:32 -04:00
Rémi Achard 44d8b85cd3 Improve iridas_cube parsing speed (#1630)
* Improve iridas_cube parsing speed

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Fix Windows build

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Allow comments in entries section

Signed-off-by: Rémi Achard <remiachard@gmail.com>
2022-05-16 19:53:36 -04:00
Doug WalkerandPatrick Hodoul b00877959f Adsk Contrib - Fix half-domain Lut1D issue for values above HALF_MAX (#1614)
* Fix half-domain Lut1D issue for values above HALF_MAX

Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Address review comments

Signed-off-by: Doug Walker <doug.walker@autodesk.com>

Co-authored-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2022-04-05 14:28:13 -04:00
Doug WalkerandPatrick Hodoul a92993f339 Add preliminary support for ACES Metadata Files (#1604)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

Co-authored-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2022-04-05 13:31:40 -04:00
Rémi AchardandPatrick Hodoul 2269ebef02 Add support for Display/View to Baker (#1598)
* Add support for Display/View to Baker

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Add Baker display / view to python bindings

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Use in/out parameters for shaper range

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Use relative float checks for CTF

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Support look when baking display / view

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Improve documentation

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Address PR feedback

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2022-04-05 11:06:43 -04:00
Rémi Achard 4fa94918c2 Minor build and CI fixes (#1599)
* Build and CI fix

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Make OpenColorIO_SKIP_IMPORTS public

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Avoid exporting header only libs in static builds

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Fix cpu unit test linkage

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Explain the look syntax fallback

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Fix typos

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Improve OFX building documentation

Signed-off-by: Rémi Achard <remiachard@gmail.com>
2022-03-24 14:33:32 -04:00
Rémi AchardandDoug Walker 415c583709 Add python source distribution package (#1605)
* Add python source distribution package

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Fix typo

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2022-03-18 23:56:28 -04:00
Michael DolanandPatrick Hodoul 87f60b6144 Update TSC Chair (#1596)
Signed-off-by: Michael Dolan <michdolan@gmail.com>

Co-authored-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2022-03-14 12:22:19 -04:00
itsmattkc 73508eb523 CMake: Fix issue that led to Unicode support still defaulting to off (#1594)
Signed-off-by: itsmattkc <34096995+itsmattkc@users.noreply.github.com>
2022-02-10 14:07:59 -05:00
Patrick Hodoul 1d26d58c31 Adsk Contrib - Improve the library install step (#1578)
* Adsk Contrib - Improve the library install step

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Docs compilation on *mix plateforms only

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Improve the third-party library install

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2022-01-24 17:08:05 -05:00
Patrick Hodoul 48bab7c643 Adsk Contrib - Remove 'expat' symbols (#1582)
* Adsk Contrib - Remove 'yaml' symbols

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Improve the symbol control

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2022-01-24 13:24:29 -05:00
Rémi AchardandPatrick Hodoul d5bf1e1b45 Python copy support (#1575)
* Add deepcopy support for object with createEditableCopy method

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Minor fixes

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Removing python shallow copy method

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Update comment and formating

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Testing COnfig FileRules deepCopy

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Add comment for ConfigTest

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2022-01-13 08:51:31 -05:00
Patrick Hodoul 3afeb921f8 Adsk Contrib - Better manage the OIIO dependency (#1572)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2022-01-12 10:27:41 -05:00
Patrick Hodoul 65d0f2f1d9 Adsk Contrib - Improve the GPU unit test framework (#1562)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2022-01-12 09:23:23 -05:00
Patrick Hodoul a46ba26bd6 Adsk Contrib - Improve the OSL integration (#1561)
* Adsk Contrib - Improve the OSL integration

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix a typo

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2022-01-11 09:56:03 -05:00
Rémi AchardandPatrick Hodoul 1d8a28c2e2 Fix support for ARM64 macOS python wheels (#1574)
* Fix support for ARM64 macOS python wheels

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Use $<SEMICOLON> generator expression to escape semicolon

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Patrick Hodoul <patrickhodoul@gmail.com>
2022-01-11 07:42:59 -05:00
amyspark 7396756d7d Propagate Android CMake configuration to external projects (#1579)
Signed-off-by: L. E. Segovia <13498015+amyspark@users.noreply.github.com>
2022-01-10 18:13:06 -05:00
Brendan BollesandPatrick Hodoul 4bdbf65c95 After Effects plug-in updates (#1564)
* Handle any family separator

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Trim superfluous UI branches

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Remove internal Platform use

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update buildProgram() call

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update Xcode 9 projects

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Fix lcms version in Xcode 9

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update Xcode 12 projects

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Include <cctype> for std::isdigit() on Windows

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update Visual Studio projects

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Bump version to 2.2.0

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Get rid of duplicate #include <cctype>

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Add ARM64 architecture

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

Co-authored-by: Patrick Hodoul <patrickhodoul@gmail.com>
2021-12-16 09:16:22 -05:00
doug-walker 0376c02d02 Update CLF test image from CLF working group (#1563)
Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>
2021-12-16 08:17:32 -05:00
00b5362442 Adds Metal Support to ociodisplay and enables running GPU tests with Metal backend (#1538)
* * 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>
2021-12-13 17:18:21 -05:00
Rémi AchardandPatrick Hodoul 3c1262cf34 Fixes C++20 compilation errors and warnings (#1542)
* Remove unneeded explicit default causing warnings

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Add Python 3.10 to the list of supported version

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Allow usage of C++20 while still reporting a warning

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Fix equality operator for OpData hierarchy under C++20 reversed candidates rule

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Fix comment encoding

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Account for C++20 utf-8 character types

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Fix warning on MD5 alignment check

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Add festure macro header

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Patrick Hodoul <patrickhodoul@gmail.com>
2021-12-13 13:42:45 -05:00
doug-walkerandPatrick Hodoul 0411f4101e Adsk Contrib - Fix RGB spline curve inversion when the slope is zero (#1539)
* Fix RGBCurve inverse when slope=0

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

* Add GPU fix and test

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

* Tweak var name

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-12-09 16:10:54 -05:00
amysparkandPatrick Hodoul b2f927bcff Implement locale-agnostic number parsing (#1496)
This commit adds support for parsing numbers without being influenced by
the current system locale. We implement a from_chars
shim that forwards the call to strto*_l along with a statically
initialized locale constant.

Fixes AcademySoftwareFoundation#297
Fixes AcademySoftwareFoundation#379
Fixes AcademySoftwareFoundation#1322

Co-Authored-By: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

Signed-off-by: L. E. Segovia <13498015+amyspark@users.noreply.github.com>
2021-12-08 09:22:04 -05:00
Rémi AchardandPatrick Hodoul 0b88134730 Update analysis workflow (#1515)
* Disable Wheel build on OCIO forks

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Bump yaml-cpp minimum version to 0.7.0

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Bump expat minimum version to 2.4.1

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* ExternalProject build on Windows were always debug

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Expand analysis workflow and allow for ExternalProject latest

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Add missing ci script

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Handle OCIO_INSTALL_EXT_PACKAGES set to NONE

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Enable mac OS Python 3.10 wheels

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Remove latest version override for non-ASWF dependencies

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Install OSL latest in analysis CI

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Add pugixml install script, build in release mode

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Fix test dependency install on Windows CI

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Adjust ext versions

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Update analysis workflow trigger condition

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-12-06 13:52:03 -05:00
Patrick Hodoul 03ef2107fc Adsk Contrib - Fix some weaknesses in the search path validation (#1535)
* Adsk Contrib - Fix some weaknesses in the search path validation

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix the Windows path in the unit test validations

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix the Windows path in the unit test validations, part II

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-12-01 15:05:32 -05:00
Patrick Hodoul 5dc9c51049 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>
2021-11-23 15:40:25 -05:00
Michael DolanandPatrick Hodoul 64dccadba1 Update default branch name (#1532)
Signed-off-by: Michael Dolan <michdolan@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-11-08 09:57:36 -05:00
ce85939bb0 Fix add_test calls and change temporary file creation. (#1522)
* * Fix add_test in cmake files. This notation allows it to understand that the command portion is a target and to translate it to the proper executable.
* Remove starting backslash if present from temporary filename. A starting backslash mean that it is safe to create it in the current working directory.
* Implement a public TempFile class.
* Change relevant tests to use TempFile class.

Signed-off-by: Patrick Northon <northon_patrick3@yahoo.ca>

* * Revert back changes for TempFile class.
* Add comment on temporary file functions fix.

Signed-off-by: Patrick Northon <northon_patrick3@yahoo.ca>

* Add FIXME comments.

Signed-off-by: Patrick Northon <northon_patrick3@yahoo.ca>

* Add -C flag to ctest commands.

Signed-off-by: Patrick Northon <northon_patrick3@yahoo.ca>

* Add `-C Release` to ctest commands in `analysis_workflow.yml`.

Signed-off-by: Patrick Northon <northon_patrick3@yahoo.ca>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
Co-authored-by: Rémi Achard <remiachard@gmail.com>
2021-11-04 12:58:38 -04:00
b2e88b195c Adds Metal Shading Language (MSL) Generation support (#1520)
* * 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>

Co-authored-by: Ingthor Hjalmarsson <ihjalmarsson@apple.com>
Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-11-02 09:38:42 -04:00
Patrick Hodoul ae1940b700 Adsk Contrib - Fix the CDL write for CLF file format (#1526)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-11-01 09:07:52 -04:00
Mei ChuandPatrick Hodoul f0c1ea2491 ConfigTest - Virtual display python unit test (#1481)
* -ConfigTest: Python unit test updated with additional virtual display tests.

Signed-off-by: Mei Chu <meimchu@gmail.com>

* -ConfigTest: Addressed feedbacks.

Signed-off-by: Mei Chu <meimchu@gmail.com>

* -ConfigTest: Addressing feedbacks on typos.
Signed-off-by: Mei Chu <meimchu@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-10-31 17:51:38 -04:00
itsmattkc d074757a90 Fixes Unicode paths on Windows (#1363)
* Fixes Unicode paths on Windows

Unlike most other platforms, Windows' Unicode is standardized around
UTF-16, an encoding not compatible with "char *" arrays common in
C/C++. As such, to support Unicode correctly when using Win32 APIs,
strings must be converted to and from UTF-16 and the Unicode
versions of the APIs must be used over the ANSI versions.

This commit introduces the following:

- Utility funcions for converting between UTF-8 and UTF-16LE on all
  platforms:
  - Platform::Utf8ToUtf16
  - Platform::Utf16ToUtf8

- Adds test for these conversion functions to ensure the conversion
  to and from UTF-8 and UTF-16LE is correct.

- Utility wrappers for "std::ifstream" that automatically convert
  to and from UTF-16 so that filenames requiring Unicode encoding
  function correctly:
  - Platform::CreateInputFileStream
  - Platform::OpenInputFileStream

- Moves the file default compute hash function to the Platform
  class (Platform::CreateFileContentHash) and switches to the
  Win32 UTF-16 variant on Windows.

- Adds the "UNICODE" macro before including "Windows.h" which
  ensures all functions called are the Unicode variants instead of
  the default ANSI variants.
  - Implicitly changes functions such as GetEnvironmentVariable and
    SetEnvironmentVariable to their Unicode variants.

- Changes the following environment variable related functions to
  their Win32 Unicode variants on Windows:
  - environ -> _wenviron
  - _putenv_s -> _wputenv_s

- Updates tests using SetEnvironmentVariable to use wide string
  literals since that function has been switched to the Unicode
  variant.

Signed-off-by: itsmattkc <itsmattkc@gmail.com>

* Moved UNICODE and _UNICODE definitions to CMake

Signed-off-by: itsmattkc <34096995+itsmattkc@users.noreply.github.com>

* handle empty strings and use const references

Signed-off-by: itsmattkc <34096995+itsmattkc@users.noreply.github.com>

* only use wenviron when unicode is enabled

Signed-off-by: itsmattkc <itsmattkc@gmail.com>

* add ANSI Win32 version of Getenv

Signed-off-by: itsmattkc <itsmattkc@gmail.com>

* Add CMake option for compiling with Win32 Unicode support

Signed-off-by: itsmattkc <itsmattkc@gmail.com>

* Throw exception if UTF functions are called on non-Windows platforms

Signed-off-by: itsmattkc <itsmattkc@gmail.com>

* Throw OCIO Exception

Signed-off-by: itsmattkc <itsmattkc@gmail.com>

* Don't run UTF-8/16 conversion test on non-Windows

Signed-off-by: itsmattkc <34096995+itsmattkc@users.noreply.github.com>

* Fix CMake error

Signed-off-by: itsmattkc <34096995+itsmattkc@users.noreply.github.com>

* minor CMake adjustment

Signed-off-by: itsmattkc <itsmattkc@gmail.com>

* Clarified CMake option for Win32 unicode

Signed-off-by: itsmattkc <34096995+itsmattkc@users.noreply.github.com>

* minor improvements

Signed-off-by: itsmattkc <34096995+itsmattkc@users.noreply.github.com>

* fix macro in cpu test cmake

Signed-off-by: itsmattkc <34096995+itsmattkc@users.noreply.github.com>
2021-10-29 16:55:49 -04:00
Patrick Hodoul 56ef7f50ee Adsk Contrib - Improve the OSL unit test framework (#1514)
* Adsk Contrib - Improve the OSL unit test framework

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix a Linux build break

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix a 'git rebase' break

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Some improvements

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Workaround to sucesfully link with OSL

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Found the right fix

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Add more tests for Grading ops

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Improve OSL library find

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix with OpenImageIO version requires C++14

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Another OSL cmake improvement

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-10-26 16:52:44 -04:00
Guillaume Papin e3dfb286ea CMake: remove duplicate find_package(pybind11 ...) (#1521)
This duplicate seems to come from the PR #1371.
This PR spanned April 15 - August 24 (2021).

Meanwhile, PR #1410 (June 13 - June 21),
changed the CMake logic around `find_package(pybind11 ...)`.

It looks like former PR mishandled the merge of the latter.

Signed-off-by: Guillaume Papin <guillaume.papin@epitech.eu>
2021-10-26 14:07:33 -04:00
4a6745ac0c Add Python GPU renderer implementation example (#1493)
* Add Python GPU renderer implementation example

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Move to apps with README

Signed-off-by: Michael Dolan <michdolan@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
Co-authored-by: Rémi Achard <remiachard@gmail.com>
2021-10-18 11:11:24 -04:00
Henry Schreiner 59316cf3db chore: update to new cibuildwheel location (#1513)
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2021-10-14 16:36:54 -04:00
Bo ZhouandPatrick Hodoul ac8290d232 Write converted image with output colorspace (#1420) (#1500)
* Write converted image with output colorspace (#1420)

Signed-off-by: Bo Zhou <Bo.Schwarzstein@gmail.com>

* Check if outputcolorspace is null and set it as oiio:ColorSpace (#1460)

Signed-off-by: Bo Zhou <Bo.Schwarzstein@gmail.com>

* Call getDisplayViewColorSpaceName to get output colorspace for view mode. #1420

Signed-off-by: Bo Zhou <Bo.Schwarzstein@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-10-06 08:23:47 -04:00
Rémi AchardandPatrick Hodoul 18a9392fd8 Remove Python wheel workflow running on every pull request (#1503)
Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-10-05 13:47:10 -04:00
Rémi AchardandPatrick Hodoul 93c3689c58 Fix install paths regressions (#1502)
* Fix install directory variable for python bindings

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Remove hardcoded lib prefix in RPATH handling

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-10-04 14:28:19 -04:00
Patrick Hodoul 25f0a2022d Adsk Contrib - Fix the analysis workflow (#1492)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-09-30 16:50:44 -04:00
Patrick Hodoul a69c24807c Adsk contrib - Various improvements (#1489)
* Adsk Contrib - Small oiiohelper improvement

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Try to fix some memory issues report by valgrind

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Improve ctest support and add another check for OpenImageIO

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix Windows build failure

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix binary names on Windows

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Improve code around FixedFunction Ops

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Improve ctest support

Signed-off-by: hodoulp <Patrick.Hodoul@autodesk.com>

* Fix cmake

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-09-30 14:48:39 -04:00
amyspark 83fd8335d9 Add support for OpenGL ES as a shading language (#1497)
* Add support for OpenGL ES as a shading language

This commit adds two new entries to `GpuLanguage`,
`GPU_LANGUAGE_GLSL_ES_1_0` and `GPU_LANGUAGE_GLSL_ES_3_0`.

The only meaningful differences w.r.t. stock OpenGL are:

- the 1D texture optimization isn't applied to ES, as they are not
  supported at all;

- the texture<N>D() calls are replaced in GLSL ES 3 by a call to
  texture().

Fixes #1486

Signed-off-by: L. E. Segovia <13498015+amyspark@users.noreply.github.com>

* GLSL ES: remove ABI break

Signed-off-by: L. E. Segovia <13498015+amyspark@users.noreply.github.com>

* OpenGLBuilder: use switch to check GLSL version

Signed-off-by: L. E. Segovia <13498015+amyspark@users.noreply.github.com>
2021-09-27 13:31:26 -04:00
amysparkandPatrick Hodoul c912f0173f Add support for MinGW (#1485)
In these cases the build system doesn't add a suffix to yaml-cpp.

Signed-off-by: L. E. Segovia <13498015+amyspark@users.noreply.github.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-09-21 16:13:12 -04:00
amysparkandPatrick Hodoul 521d4eedb3 FindExpat: allow usage of expat 2.2.9 (#1483)
- alias expat::expat to expat::libexpat if the former is missing
- patch INTERFACE_INCLUDE_DIRECTORIES if the property is missing

Fixes #1482.

Signed-off-by: L. E. Segovia <13498015+amyspark@users.noreply.github.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-09-21 10:21:45 -04:00
Michael DolanandPatrick Hodoul 7578fee749 Add Rémi Achard to GOVERNANCE.md & COMMITTERS.md (#1498)
* Add Rémi Achard to GOVERNANCE.md

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Add Rémi Achard to COMMITTERS.md

Signed-off-by: Michael Dolan <michdolan@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-09-21 08:15:16 -04:00
Patrick Hodoul 9bc971179b Adsk Contrib - Remove the useless cmake target on oiiotool (#1477)
* Adsk Contrib - REmove the useless cmake target on oiiotool

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Improve the OIIO Util library support

Signed-off-by: hodoulp <Patrick.Hodoul@autodesk.com>
2021-09-16 08:45:16 -04:00
Patrick Hodoul 7d704f6f0b Checnge master branch to the verison '2.2.0dev' (#1475)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-09-15 15:46:32 -04:00
Rémi AchardandPatrick Hodoul 641abe535f Remove OpenColorIOHeaders target and hardcoded install paths (#1471)
* Remove OpenColorIOHeaders target

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Avoid hardcoding install paths

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Update remaining hardcoded install paths

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Replace LIB_SUFFIX by CMAKE_INSTALL_LIBDIR

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-09-09 14:47:20 -04:00
Patrick Hodoul 959b3f79f5 Adsk Contrib - Better manage Imath dependency (#1478)
* Adsk Contrib - Better manage Imath dependency

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Add the OpenImageIO_Util dependency to OSL unit test framework

Signed-off-by: hodoulp <Patrick.Hodoul@autodesk.com>

* Fix oiio typo

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-09-08 07:56:34 -04:00
Patrick Hodoul ffddc3341f Adsk Contrib - Change the library version (#1474)
* Adsk Contrib - Change the library version

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Update the CHANGELOG file

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-08-31 06:54:04 -04:00
Patrick Hodoul 9bad176fb1 Adsk Contrib - Update the CTF & config version support (#1472)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-08-30 19:35:56 -04:00
Patrick Hodoul c84e164e0c Adsk Contrib - Add preliminary OSL support (#1462)
* Adsk Contrib - Add preliminary OSL support

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Improve the code following the PR comments

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Improve the OSL unit test framework

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Improve OSL detection & unit test coverage

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-08-30 18:22:03 -04:00
Patrick Hodoul cd73226770 Adsk Contrib - Fix template double instantiation (#1469)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-08-27 07:26:26 -04:00
Patrick Hodoul e2bf4fd709 Adsk Contrib - Fix the processor creation using a DisplayViewTransform with a no-op look (#1460)
* Adsk Contrib - Fix the processor creation using a DisplayViewTransform with a no-op look

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Remove a wrong comment

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-08-25 21:09:57 -04:00
Rémi AchardandPatrick Hodoul 72f5c082f8 Add Python wheel generation (#1401)
* Initial Python wheel build workflow

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Add unit test suite to PyOpenColorIO package

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Misc improvements

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Remove test files duplication, ship full set

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Prepare GH script for release

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Fix rebase master

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Add support for Apple Silicon

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Update release version number from Readme

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Dynamic version number for python package

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-08-25 14:35:57 -04:00
Michael Dolan 7f7418763b Add virtual display python bindings (#1464)
* Add virtual display python bindings

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Add virtual display test, missing methods

Signed-off-by: Michael Dolan <michdolan@gmail.com>
2021-08-24 20:18:56 -04:00
Michael DolanandPatrick Hodoul dd52688a5a Add OpenFX OCIO plugin framework and examples (#1371)
* Add OpenFX OCIO plugin framework and example

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Fix typo

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Update OpenFX Support Library to support C++11-17

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Add missing override qualifier

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Add OCIODisplay and update OCIOColorSpace UX

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Fix warnings, add overridde specifiers

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Fix C/C++ conflict

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Rename default to default_value

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Disable unused-parameter warning

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Add context variable override parameters

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Update param tooltips

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Add color space swap button, revert context impl

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Add context variable persistence

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Make context store param secret

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Fix sign compare warning

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Implement PR feedback

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Add missing color space, display, and view support

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Add notes and missing break

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Add OpenFX license to THIRD-PARTY.md

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Fix OCIOProcessor initialization

Signed-off-by: Michael Dolan <michdolan@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-08-24 07:29:24 -04:00
Michael DolanandPatrick Hodoul ea4300aeb9 Add Imath 3 support for Half dependency (#1432)
* Add Imath 3 Half support

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Update CI jobs

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Test analysis workflow

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Update analysis_workflow.yml

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Make install_imath.sh executable

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Get latest from release branch

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Latest OIIO requires C++14

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Revert CI test changes

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Bump to Imath 3.0.5, use IlmBase for GPU CI

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Document Imath and IlmBase half options

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Use half-float conversion algorithm

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Refactor half include

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Bump Imath version to 3.1.2

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Force integer for Half.h macro

Signed-off-by: Michael Dolan <michdolan@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-08-23 23:10:15 -04:00
Patrick Hodoul 5ee3aa0b89 Adsk Contrib - Fix static library name on Windows (#1450)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-08-21 23:37:54 -04:00
autoantwortandPatrick Hodoul 3c2c8ba335 FindPystring: Also find a static pystring lib (#1449)
Signed-off-by: Leander Schulten <Leander.Schulten@rwth-aachen.de>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-08-18 09:22:02 -04:00
Patrick Hodoul 478f0bb9f3 Adsk Contrib - Fix a bit depth optimization bug (#1446)
* Adsk Contrib - Fix a bit-depth optimization bug

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Add some explanations

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-08-17 14:27:33 -04:00
Brecht Van Lommel 48d3438906 Fix errors in mutex debugging (#1235) (#1407)
* Store the lock owner thread rather than `m_locked`, so that multiple threads
  accessing the same mutex do not give false positives, but recursive locks on
  the same thread are still caught.

* Match the std::mutex API: return bool from `try_lock()` and remove `locked()`.
  No code is using this, but any new code that did would only build in either
  release or debug configuration.

Signed-off-by: Brecht Van Lommel <brecht@blender.org>
2021-08-09 14:11:43 -04:00
Derek 6fbf1e710e Bugfix/docs installation (#1438)
* 'Existing Install Hints' fix

Errors in some CMake variable names resulting in:
- being ignored: 'DExpat_...' instead of 'Dexpat_...'
- error: 'pybind11_ROOT' instead of 'Dpybind11_ROOT'

Signed-off-by: Derek Severin <severinderek@gmail.com>

* 'PYTHON_PATH' instead of 'PYTHONPATH'

Use of wrong variable 'PYTHONPATH' instead of 'PYTHON_PATH'.
'PYTHONPATH' might not be defined and can contain more than a single path, resulting in invalid values for the 3 variables 'DPython_LIBRARY', 'DPython_INCLUDE_DIR', 'DPython_EXECUTABLE' provided to cmake.

Signed-off-by: Derek Severin <severinderek@gmail.com>
2021-08-04 17:31:08 -04:00
doug-walkerandPatrick Hodoul 788907f8d7 Update CLF test files, add CLF python scripts (#1436)
* Update CLF test files, add CLF python scripts

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

* Fix issue with large Lut1D neg values

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

* Add two more parse tests

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

* Fix non-SSE test tolerance

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-08-03 09:16:05 -04:00
Rémi AchardandPatrick Hodoul 8cc6a8ffae Protect against empty look result color space (#1437)
Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-08-02 09:31:33 -04:00
ceec84d5c1 Test CMake Config script (#1421)
* Require C++11 compiler for consumer projects

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Test CMake config export consuming

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Fix CMake build type

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Explicitly silence MSVC warning 4275

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
Co-authored-by: Michael Dolan <michdolan@gmail.com>
2021-07-25 23:20:54 -04:00
993cd46788 Allow choice of specific python release (#1410) (#1424)
* Allow choice of specific python release

If you're building on a system with multiple versions of Python available,
it can be very hard to make OCIO build against a specific version. In
particular, https://cmake.org/cmake/help/latest/module/FindPython.html
explains that FindPython looks preferably for version 3 of Python.

Signed-off-by: Larry Gritz <lg@larrygritz.com>

* Amendments based on review comments:

* Rename OCIO_PREFERRED_PYTHON_VERSION -> OCIO_PYTHON_VERSION.
* Move the cached variable to the top level CMakeLists.txt instead of in
  FindExtPackages.cmake.
* Warning if OCIO_PYTHON_VERSION is set but OCIO_BUILD_PYTHON is off.

Signed-off-by: Larry Gritz <lg@larrygritz.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>

Co-authored-by: Larry Gritz <lg@larrygritz.com>
Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-07-12 16:51:51 -04:00
Rémi AchardandPatrick Hodoul 8bf3773f9e Add Gamut Compress implementation (#1404)
* Initial Gamut Compress implementation

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Add NaN checks back and refactor GPU shader

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Precompute y intersect for CPU Op

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Refactor parameter bound check

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Fix ocioperf GPU shader creation issue

Raising "Dynamic property already here" exception

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Code cleanup, address reviews

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Rename BuiltIn and FixedFunction transforms

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Refactor CPU renderer

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Improve tests

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Add link to testing dataset generation code

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Remove wrong comment

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Remove 1 / power precompute and use std::powf

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Adjust comment and formating

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Refactor GPU op

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Fix std::pow usage

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Add clamp to limit parameter and remove code duplication in GPU Op

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Extend parameters limits and move clamp to validate

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-07-12 15:29:38 -04:00
Patrick Hodoulanddoug-walker c835f31924 Adsk Contrib - Enhance default view access (#1422)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-07-06 01:04:10 -04:00
Patrick Hodoul e63ce1ccd4 Adsk Contrib - Fix a bug with the Vc++ compilation flags. (#1419)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-07-06 00:06:13 -04:00
Patrick Hodoul 02a687110f Adsk Contrib - Fix FixedFunctionTransform::CreateEditableCopy() (#1418)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-07-05 23:25:45 -04:00
76ddf44fb2 Adsk Contrib - Improve File Rules support for v1 configs (#1417)
* Adsk Contrib - Improve file rules for v1 configs

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Adsk Contrib - Emergency GPU build fix (#1391)

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Adsk Contrib - Fix some bugs found by Maya and SonarCloud (#1403)

* Adsk Contrib - Fix some bugs found by Maya and SonarCloud

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix a Windows warning

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* After Effects and Photoshop plug-in updates (#1373)

* Set Mac OS deployment target to 10.10

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* More 10.10 targets

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Ditch ADD_EXTRA_BUILTINS

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Getting strange callback when AE effect is pasted

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Use NDEBUG in AE project

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Disable radio buttons with no config

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update version

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Move to AE 2021 SDK, set PF_OutFlag2_MUTABLE_RENDER_SEQUENCE_DATA_SLOWER

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Define OCIO_DEPRECATED in After Effects builds

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Verify change from color space menu

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Handle situation where color space has a '/' in it

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Windows family separator fix

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Invert everything

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Invert everything Windows

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Disable more controls

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Incorporate invert into LUT export

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Get rid of fullPaths stuff

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Fix changed config settings retention

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Add OpenColorIOConfig.cmake generation (#1397)

* Initial OpenColorIO Config CMake implementation

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Remove macro, improve documentation

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Use CMake visibility flags (#1411)

* Update install doc minimal version numbers

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Use CMake visibility presets variables

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Fix python package case

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Allow advanced user to override symbol visibility

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix Windows build

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Update include/OpenColorIO/OpenColorIO.h

Co-authored-by: Michael Dolan <michdolan@gmail.com>
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Update src/OpenColorIO/FileRules.cpp

Co-authored-by: Michael Dolan <michdolan@gmail.com>
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Hide dependency symbol visibility (#1409) (#1416)

When creating libOpenColorIO.so, we lacked the linker commands that
hide symbol visibility from the dependent libraries, which is
necessary to prevent OCIO from exporting the symbols from Expat and
the other dependencies that OCIO needs to use internally but is not
trying intentionally to expose via its API.

Failing to do this can result in symbol clashes and all sorts of
subtle errors if OCIO is used in an app that also uses and is linked
against a potentially different version of Expat (or any of the other
deps).

Signed-off-by: Larry Gritz <lg@larrygritz.com>

Co-authored-by: Larry Gritz <lg@larrygritz.com>
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Adsk Contrib - Improve DX11 & Cg fragment shader language support (#1406)

* Adsk Contrib - Improve DX11 support

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Improve Cg support

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Improve GPU comments

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix unit test failures

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

Co-authored-by: Brendan Bolles <brendan@fnordware.com>
Co-authored-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Michael Dolan <michdolan@gmail.com>
Co-authored-by: Larry Gritz <lg@larrygritz.com>
Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-07-05 20:58:34 -04:00
Patrick Hodoul a36a5bea82 Adsk Contrib - Various code & doc cleanups (#1414)
* Adsk Contrib - Various code & doc cleanups

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix more Python examples

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-07-05 19:59:01 -04:00
Patrick Hodoul 856f604f2d Adsk Contrib - Improve DX11 & Cg fragment shader language support (#1406)
* Adsk Contrib - Improve DX11 support

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Improve Cg support

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Improve GPU comments

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-06-28 10:04:06 -04:00
Patrick HodoulandLarry Gritz 5445d37bf9 Hide dependency symbol visibility (#1409) (#1416)
When creating libOpenColorIO.so, we lacked the linker commands that
hide symbol visibility from the dependent libraries, which is
necessary to prevent OCIO from exporting the symbols from Expat and
the other dependencies that OCIO needs to use internally but is not
trying intentionally to expose via its API.

Failing to do this can result in symbol clashes and all sorts of
subtle errors if OCIO is used in an app that also uses and is linked
against a potentially different version of Expat (or any of the other
deps).

Signed-off-by: Larry Gritz <lg@larrygritz.com>

Co-authored-by: Larry Gritz <lg@larrygritz.com>
2021-06-27 18:15:05 -04:00
Rémi AchardandPatrick Hodoul 85a22e2732 Use CMake visibility flags (#1411)
* Update install doc minimal version numbers

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Use CMake visibility presets variables

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Fix python package case

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Allow advanced user to override symbol visibility

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-06-15 08:23:59 -04:00
Rémi AchardandPatrick Hodoul ce70bbd730 Add OpenColorIOConfig.cmake generation (#1397)
* Initial OpenColorIO Config CMake implementation

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Remove macro, improve documentation

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-06-15 00:19:53 -04:00
Brendan BollesandPatrick Hodoul 2e1a57780a After Effects and Photoshop plug-in updates (#1373)
* Set Mac OS deployment target to 10.10

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* More 10.10 targets

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Ditch ADD_EXTRA_BUILTINS

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Getting strange callback when AE effect is pasted

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Use NDEBUG in AE project

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Disable radio buttons with no config

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update version

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Move to AE 2021 SDK, set PF_OutFlag2_MUTABLE_RENDER_SEQUENCE_DATA_SLOWER

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Define OCIO_DEPRECATED in After Effects builds

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Verify change from color space menu

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Handle situation where color space has a '/' in it

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Windows family separator fix

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Invert everything

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Invert everything Windows

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Disable more controls

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Incorporate invert into LUT export

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Get rid of fullPaths stuff

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Fix changed config settings retention

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-06-02 11:21:10 -04:00
Patrick Hodoul 3abbe5b205 Adsk Contrib - Fix some bugs found by Maya and SonarCloud (#1403)
* Adsk Contrib - Fix some bugs found by Maya and SonarCloud

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix a Windows warning

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-05-28 11:06:45 -04:00
Patrick Hodoul dd59baf555 Adsk Contrib - Emergency GPU build fix (#1391)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-05-11 14:04:52 -04:00
Patrick Hodoul 40effe20e9 Adsk Contrib - Improve the context variable validation (#1387)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-05-03 15:24:17 -04:00
Patrick Hodoul 8ba05b3989 Adsk Contrib - Add 'deprecated' C++ mechanism & cleanup code (#1372)
* Adsk Contrib - Flag deprecated methods

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Adjust the documentation

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-05-01 08:07:31 -04:00
Patrick Hodoul dd03ea037c Adsk Contrib - Fix CDL issue (#1370)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-04-27 08:09:09 -04:00
Patrick Hodoul 9b3ac193d5 Adsk Contrib - More code cleanup (#1365)
* Adsk Contrib - More code cleanup

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix build breaks

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-04-22 07:10:30 -04:00
df1bf14060 [README.md] Fix link (#1355)
Signed-off-by: Samuel Marks <807580+SamuelMarks@users.noreply.github.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
Co-authored-by: Michael Dolan <michdolan@gmail.com>
2021-04-14 20:40:35 -04:00
kanakgautamandPatrick Hodoul e84d9a9d1f Fix: broken doc links (#1326)
* Fix: broken doc links

Signed-off-by: kanak gautam <kanakgautam5@gmail.com>

* replace export -> include

Signed-off-by: kanak gautam <kanakgautam5@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-04-14 17:01:14 -04:00
Patrick Hodoul 996aa1aae1 Adsk Contrib - Fix the legacy GPU path (#1352)
* Adsk Contrib - Fix the legacy GPU path

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Re-enable legacy GPUShaderDesc

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix Documentation generation failure

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Improve the deprecated comment

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Add version removal

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-04-09 11:06:55 -04:00
Patrick Hodoul c1e8e26f3c Adsk Contrib - Chnage the version of the master branch (#1354)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-04-09 10:10:23 -04:00
Patrick Hodoul 1f622e9986 Adsk Contrib - Add negative stride support for CPU processing (#1353)
* Adsk Contrib - Add negative x & y stride support for CPU processing

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix Windows build warnings

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix Windows build warnings

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-04-09 08:26:28 -04:00
Patrick Hodoulanddoug-walker 2d4701e5ab Adsk Contrib - Improve the C++ version detection (#1351)
* Adsk Contrib - Set C++17 as the default C++ version

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Follow the TSC recommendation

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Minor improvement

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Isolate the C++ version detection from warnings related to custom CXX flags

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* MacOs - Fix sanitization errors i.e. '-fsanitize=address'

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-04-08 23:20:30 -04:00
Patrick Hodoul 87d3109de9 Adsk Contrib - Fix 'setup_ocio' script support (#1350)
* Adsk Contrib - Fix 'setup_ocio' script support

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* As agreed, remove the Nuke env. variables

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-04-06 13:02:02 -04:00
Patrick Hodoul 4e27f9672a Adsk Contrib - Propagate the MacOs min. version (#1340)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-03-31 16:26:37 -04:00
Patrick Hodoul 3bf78a6acd Adsk Contrib - Fix env. variable name (#1339)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-03-30 14:51:53 -04:00
Patrick Hodoul 743a7977db Adsk Contrib - Add the RPATH support (#1338)
* Adsk Contrib - Add the RPATH support

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix the rpath for the Python Binding dynamic library

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix a typo for the Linux rpath

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-03-30 10:36:03 -04:00
Patrick Hodoul 8a21b63b29 Adsk Contrib - Fix some issues reported by SonarCloud (#1337)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-03-30 08:37:10 -04:00
Patrick Hodoul 7208399ad1 Adsk Contrib - Misc. improvements (#1336)
* Adsk Contrib - Misc fixes

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Few improvements

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-03-29 18:10:04 -04:00
zachlewisandPatrick Hodoul d9a2a5fa80 Convert public headers to doxygen style (#1315)
* // WIP convert header docs to doxygen style

Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>

* Adjust reference syntax

From ":cpp:func:`Foo::bar`" to "\ref Foo::bar". This seems to pacify some build warnings and clean up the C++ docs a little, but it doesn't seem to improve issue #1265

Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>

* Expose documentation for FileRules, Config, MatrixTransform::setOffset

Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>

* Expose more documentation: Looks, Context Variables

Minor cleanup and adjustments

Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>

* Expose GpuShaderCreator usage example

Promote usage example up to the class-wide documentation
Change numbered list to simple bullets -- there seems to be a problem with orderedlists...?

Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>

* Missed a change

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>

* Expose `GpuShaderDesc` fragment shader example code

Not sure why the topmost "border" forward slashes are not rendering...

Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>

* Tidy up conversion to doxygen style

Specify language for code demonstrations

Improve readability of header comments

Clean up "TODO" comments re: moving to rst

Convert remaining comments to RST syntax

Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>

* Rebuild frozen docs

Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>

* Adjust line wrapping in one particularly egregious instance

Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>

Co-authored-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-03-27 08:38:30 -04:00
Henry WilkinsonandPatrick Hodoul c687558efd Website build process minor readme updates (#1331)
* Adds minification to website build process

Signed-off-by: Henry Wilkinson <henry@wilkinson.graphics>

* Updates YouTube reel with new link

Matches website update

Signed-off-by: Henry Wilkinson <henry@wilkinson.graphics>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-03-26 18:18:43 -04:00
Brendan BollesandPatrick Hodoul 0021372b4d Update After Effects and Photoshop plug-ins (#1303)
* Update AE plug-in

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update AE Xcode projects

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update Photoshop plug-in

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update Photoshop Xcode project

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update Visual Studio projects

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update OpenColorABI.h

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Fail if glew not downloaded

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Renamed functions

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update Xcode project

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Function name changes

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update Visual Studio project

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Sort config menu

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Sort Photoshop config menu

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Toss old include

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Grow menus

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Extra semicolon

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Categories on Mac

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Encodings menu on Mac

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update OpenGL calls

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Categories on Mac

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Encodings menu on Mac

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Add separator better

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* ADD_EXTRA_BUILTINS in Xcode

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Device, Transform -> Display, View

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* ADD_EXTRA_BUILTINS in VC

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Categories and Encodings on Win

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Photoshop plug-in bugs

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Get rid of Class retrieval

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Family Separator assert

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Stop using OPTIMIZATION_LOSSLESS in Photoshop plug-in

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Switch to AE 2020 SDK in Xcode

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Improve sequence data calls for multi-frame rendering

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Xcode 12 projects

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Xcode 12 Photoshop changes

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Fox Globals allocation

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update to latest SDKs on Win

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Rejigger sequence data and external dependency handling

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Exception safety

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Need a mutex for GPU rendering

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Forgot to return

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Whoops, wasn't setting default ArbData

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Reserve some seq_data bytes for alignment

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-03-22 19:10:26 -04:00
Neil Wilson 7b0adabf9d added cineSync to supported applications (#1349)
* added cinesync to supported applications

Signed-off-by: Neil Wilson <neilw@cinesync.com>

* Changed cinSyncs position so the list is still alphabetical

Signed-off-by: Neil Wilson <neilw@cinesync.com>
2021-03-22 17:32:08 -04:00
Mei ChuandPatrick Hodoul c4a4b2bcd6 Update Lut1DTransformTest and Lut3DTransformTest (#1328)
* Update Lut1DTransformTest and Lut3DTransformTest
- Conform those tests with TransformsBaseTest.

Signed-off-by: Mei Chu <meimchu@gmail.com>

* -Lut3DTransformTest python bug fix.

Signed-off-by: Mei Chu <meimchu@gmail.com>

* - Adding Bernard Lefebvre to the COMMITTERS page!

Signed-off-by: Mei Chu <meimchu@gmail.com>

* - Fixed due to misunderstanding.

Signed-off-by: Mei Chu <meimchu@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-03-18 10:11:36 -04:00
Brendan Bolles 9fc12b178d Mention Photoshop plug-in and fix links (#1335)
Signed-off-by: Brendan Bolles <brendan@fnordware.com>
2021-03-15 22:44:11 -04:00
9b23e96237 Topics seperated into paragraphs (#1329)
Signed-off-by: kanak gautam <kanakgautam5@gmail.com>

Co-authored-by: Michael Dolan <michdolan@gmail.com>
Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-03-02 22:11:10 -05:00
Patrick Hodoulanddoug-walker 0d04b512f6 Adsk Contrib - Fix some GLSL version mismatches. (#1306)
* Adsk Contrib - Fix GLSL version on MacOS

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Missed a change

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-03-02 21:37:40 -05:00
Henry WilkinsonandMichael Dolan 94ca1fc2f0 Update OCIO Website documentation Readme.md (#1300)
* Update OCIO Website documentation Readme.md

Adds commands in nice boxes with syntax highlighting, better Markdown formatting, and clearer steps for building the OCIO homepage.

Updates based on @carolalynn22 suggestions

Implements above suggestions!  Good ideas :)

Signed-off-by: Henry Wilkinson <henry@wilkinson.graphics>

* Fixes typo

Oops!

Signed-off-by: Henry Wilkinson <henry@wilkinson.graphics>

Co-authored-by: Michael Dolan <michdolan@gmail.com>
2021-03-02 20:31:35 -05:00
Patrick HodoulandMichael Dolan 543bec7a15 Adsk Contrib - Various build fixes (#1324)
* Adsk Contrib - tests/cpu/CMakeLists.txt Fix

Signed-off-by: Patrick Hodoul Patrick.Hodoul@autodesk.com

Quick fix to include a missing unit test.

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Update OpenColorAppHelpers.h

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

Co-authored-by: Michael Dolan <michdolan@gmail.com>
2021-02-25 18:42:39 -05:00
Henry WilkinsonandPatrick Hodoul 8714f81a96 Fixes website overflow on mobile (#1299)
- Fixes overflow of hero logo
- Fixes overflow of video

Both of these caused a scroll bar to appear that went beyond the page content and now they do not!

Signed-off-by: Henry Wilkinson <henry@wilkinson.graphics>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-02-25 13:34:22 -05:00
kanakgautam 803d71ac76 Minor Typo Fix (#1320)
Signed-off-by: kanak gautam <kanakgautam5@gmail.com>
2021-02-22 23:15:25 -05:00
Carol Payne a10ce91d0a GSoC 2021 Project Ideas (#1316)
* TSC Notes for 021521

Signed-off-by: Carol Payne <carolp@netflix.com>

* TSC Notes 021521 update

Signed-off-by: Carol Payne <carolp@netflix.com>

* GSoC 2021 Project Ideas

Signed-off-by: Carol Payne <carolp@netflix.com>

* GSoC 2021 Project Ideas - fix

Signed-off-by: Carol Payne <carolp@netflix.com>

* GSoC 2021 - adressing comments

Signed-off-by: Carol Payne <carolp@netflix.com>

* GSoC 2021 - blank line

Signed-off-by: Carol Payne <carolp@netflix.com>
2021-02-19 00:07:33 -05:00
Mei ChuandPatrick Hodoul 99c5f40af4 Created a TransformsBaseTest module. (#1288)
* Created a TransformsBaseTest module.
Moving some unit testing of Transforms module to a base class.

Signed-off-by: Mei Chu <meimchu@gmail.com>

* Updated four transforms tests to use TransformsBaseTest.
- AllocationTransformTest
- BuiltinTranformTest
- CDLTransformTest
- ColorSpaceTransformTest
Updated to add a space at the end of TransformBaseTest per feedback.

Signed-off-by: Mei Chu <meimchu@gmail.com>

* Updated four transforms tests to use TransformsBaseTest.
- DisplayViewTransformTest
- ExponentTransformTest
- ExponentWithLinearTransformTest
- ExposureContrastTransformTest
- FileTransformTest
- FixedFunctionTransformTest
- LogTransformTest
- LookTransformTest

Signed-off-by: Mei Chu <meimchu@gmail.com>

* Address feedback https://github.com/AcademySoftwareFoundation/OpenColorIO/pull/1288#discussion_r565265034

Signed-off-by: Mei Chu <meimchu@gmail.com>

* Updated a few transforms unit tests with TransformsBaseTest.

Signed-off-by: Mei Chu <meimchu@gmail.com>

* Updated to prioritize setUp methods first in individual python unit tests.

Signed-off-by: Mei Chu <meimchu@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-02-17 14:50:47 -05:00
Bernard LefebvreandPatrick Hodoul 9503777690 More LUT python tests (#1293)
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-02-17 13:22:16 -05:00
Michael Dolan d5de710128 Add TSC meeting notes for 02-08-2021 (#1305)
Signed-off-by: Michael Dolan <michdolan@gmail.com>
2021-02-15 18:05:40 -05:00
doug-walkerandPatrick Hodoul 775f611bbe Adjust docs for v2 release (#1295)
* Adjust docs for v2 release

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

* Remove alias wording, reverse frozen docs

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

* Describe more new features

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

* Add demo config

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-02-04 16:05:00 -05:00
Michael Dolan 6ce333f443 Add config wg meeting notes for 01-19-2021 (#1273)
* Add config wg meeting notes for 01-19-2021

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Corrections from review

Signed-off-by: Michael Dolan <michdolan@gmail.com>
2021-01-31 16:23:31 -05:00
Michael DolanandPatrick Hodoul 0d4dba07b8 Add TSC meeting notes for 01-18-2021 (#1269)
* Add TSC meeting notes for 01-18-2021

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Update Sean Cooper's company

Signed-off-by: Michael Dolan <michdolan@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-01-31 13:28:15 -05:00
Bernard Lefebvre bc88857f48 Fix applyRGB (#1291)
Copy config name

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
2021-01-26 17:58:22 -05:00
Bernard Lefebvre 87f09ecad5 Test forgot to declare logger and fails if numpy is missing (#1290)
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
2021-01-26 17:11:43 -05:00
Bernard Lefebvreanddoug-walker 6d46d8468a Release v2 (#1279)
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-01-25 11:07:14 -05:00
doug-walker 83392109b6 Adsk Contrib - Add new ACES builtin transforms (#1281)
* Add new builtin transforms

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

* Add more transforms

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

* Adjust builtin naming

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>
2021-01-25 11:03:01 -05:00
Michael Dolan 73be29a4ba Add UNIFORM_FLOAT3, setStrictParsingEnabled to PyOpenColorIO (#1280)
Signed-off-by: Michael Dolan <michdolan@gmail.com>
2021-01-24 13:45:06 -05:00
Michael Dolan 081b8de4d2 Restructure PyOpenColorIO, complete PyGpuShaderDesc (#1275)
* Restructure Python bindings, Complete PyGpuShaderDesc

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Update frozen docs

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Hide PySystemMonitors symbols

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Fix Python 2 CI failure

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Remove extra sys import

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Fix issue 1278, GroupTransform docs

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Update GroupTransform frozen docs

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Clean up PyGroupTransform class

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Update PyGroupTransform.write, PyConfig.__repr__

Signed-off-by: Michael Dolan <michdolan@gmail.com>
2021-01-22 15:20:49 -05:00
Bernard Lefebvreanddoug-walker 574ccd856e Adsk Contrib - More python tests and bindings fixes (#1274)
* More python tests and fixes:
- re-add commented tests.
- add new tests for FileRules.
- Fix issues outlined by tests.

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Adjust baker test to account for small differences

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Forgot to remove the complete string test

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* GroupTranform::write(), new enums, Lut1DTransform python tests

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Forgot files

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-01-22 12:10:17 -05:00
Bernard Lefebvreanddoug-walker 50e5d8b37d Adsk Contrib - Avoid NaN values in certain Lut1D arrays (#1272)
* Avoid NaN values in certain Lut1D arrays

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Make sure isnan is defined

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-01-22 11:17:31 -05:00
Frankie Eder c324ba5438 Transform Python Binding Fix (#1277)
* Fixed Python bindings Transforms polymorphism issue.

Signed-off-by: Frankie Eder <frankaeder@gmail.com>

* Added tests to catch future Transform polymorphism issues in Python bindings.

Signed-off-by: Frankie Eder <frankaeder@gmail.com>

* Updated tests to include default args.

Signed-off-by: Frankie Eder <frankaeder@gmail.com>
2021-01-21 21:45:24 -05:00
Michael DolanandPatrick Hodoul 8774ebf739 Use OIIO-provided CMake find module (#1266)
Signed-off-by: Michael Dolan <michdolan@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-01-21 08:34:46 -05:00
Bernard LefebvreandPatrick Hodoul d51962acf0 Fix issue #1262 (#1271)
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-01-21 07:24:05 -05:00
Bernard LefebvreandPatrick Hodoul c033d11ee3 Adsk Contrib - Python repr and LogCameraTransform fixes (#1270)
* Fix issues 1255 & 1256

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Revert unwanted rst changes

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-01-20 22:07:54 -05:00
Bernard LefebvreandPatrick Hodoul 8cf0211c3f Add roles to API and fixes (#1267)
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-01-20 20:23:20 -05:00
Bernard Lefebvre 7110425732 Adsk Contrib - Shader textures now available via Python (#1268)
* Issue 1263

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Update python frozen rst file.

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Fix python test

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Adjust python test

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
2021-01-20 12:26:00 -05:00
820 changed files with 347191 additions and 83879 deletions
+306 -58
View File
@@ -7,13 +7,23 @@
name: Analysis
on:
pull_request:
branches-ignore:
- RB-0.*
- RB-1.*
- gh-pages
tags-ignore:
- v0.*
- v1.*
paths:
- .github/workflows/analysis_workflow.yml
schedule:
# Nightly build
- cron: "0 0 * * *"
jobs:
# ---------------------------------------------------------------------------
# Latest ext packages
# Linux latest ext packages
# ---------------------------------------------------------------------------
linux_latest:
@@ -31,70 +41,50 @@ jobs:
image: aswf/ci-base:${{ matrix.vfx-cy }}
strategy:
matrix:
build: [1, 2, 3, 4, 5, 6]
build: [1, 2, 3, 4]
include:
# -------------------------------------------------------------------
# GCC, VFX CY2020
# GCC
# -------------------------------------------------------------------
# C++11, Python 3.7
# VFX CY2022, C++17, docs, OpenFX
- build: 1
build-docs: 'ON'
cxx-standard: 11
build-openfx: 'ON'
cxx-standard: 17
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 6.3.1
vfx-cy: 2020
# C++14
compiler-desc: GCC 9.3.1
vfx-cy: 2022
# VFX CY2021, C++14
- build: 2
build-docs: 'OFF'
build-openfx: 'OFF'
cxx-standard: 14
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 6.3.1
vfx-cy: 2020
compiler-desc: GCC 9.3.1
vfx-cy: 2021
# -------------------------------------------------------------------
# GCC, VFX CY2019
# Clang
# -------------------------------------------------------------------
# Python 2.7
# VFX CY2022, C++17
- build: 3
# Doc build requires Python 3
build-docs: 'OFF'
cxx-standard: 11
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 6.3.1
vfx-cy: 2019
# -------------------------------------------------------------------
# Clang, VFX CY2020
# -------------------------------------------------------------------
# C++11, Python 3.7
- build: 4
build-docs: 'OFF'
cxx-standard: 11
build-openfx: 'OFF'
cxx-standard: 17
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang 7
vfx-cy: 2020
# C++14
- build: 5
build-docs: 'OFF'
compiler-desc: Clang 9
vfx-cy: 2022
# VFX CY2021, C++14, docs, OpenFX
- build: 4
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 14
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang 7
vfx-cy: 2020
# -------------------------------------------------------------------
# Clang, VFX CY2019
# -------------------------------------------------------------------
# Python 2.7
- build: 6
# Doc build requires Python 3
build-docs: 'OFF'
cxx-standard: 11
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang 7
vfx-cy: 2019
compiler-desc: Clang 9
vfx-cy: 2021
env:
CXX: ${{ matrix.cxx-compiler }}
CC: ${{ matrix.cc-compiler }}
@@ -106,15 +96,27 @@ jobs:
if: matrix.build-docs == 'ON'
- name: Install tests env
run: share/ci/scripts/linux/yum/install_tests_env.sh
- name: Setup ext environment
run: |
EXT_PATH=/usr/local
echo "EXT_PATH=$EXT_PATH" >> $GITHUB_ENV
- name: Install indirect dependencies
run: |
share/ci/scripts/multi/install_pugixml.sh latest
- name: Install fixed ext package versions
run: |
share/ci/scripts/multi/install_expat.sh 2.4.1 $EXT_PATH
share/ci/scripts/multi/install_lcms2.sh 2.2 $EXT_PATH
share/ci/scripts/multi/install_yaml-cpp.sh 0.7.0 $EXT_PATH
share/ci/scripts/multi/install_pystring.sh 1.1.3 $EXT_PATH
share/ci/scripts/multi/install_pybind11.sh 2.9.2 $EXT_PATH
- name: Install latest ext package versions
run: |
share/ci/scripts/linux/install_expat.sh latest
share/ci/scripts/linux/install_lcms2.sh latest
share/ci/scripts/linux/install_yaml-cpp.sh latest
share/ci/scripts/linux/install_pystring.sh latest
share/ci/scripts/linux/install_pybind11.sh latest
share/ci/scripts/linux/install_openexr.sh latest
share/ci/scripts/linux/install_oiio.sh latest
share/ci/scripts/multi/install_imath.sh latest $EXT_PATH
share/ci/scripts/multi/install_openexr.sh latest $EXT_PATH
share/ci/scripts/multi/install_oiio.sh latest $EXT_PATH
share/ci/scripts/multi/install_osl.sh latest $EXT_PATH
share/ci/scripts/multi/install_openfx.sh latest $EXT_PATH
- name: Create build directories
run: |
mkdir _install
@@ -126,10 +128,12 @@ jobs:
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \
-DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \
-DOCIO_BUILD_OPENFX=${{ matrix.build-openfx }} \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_INSTALL_EXT_PACKAGES=NONE \
-DOCIO_WARNING_AS_ERROR=OFF \
-DPython_EXECUTABLE=$(which python)
-DPython_EXECUTABLE=$(which python) \
-DOCIO_USE_OIIO_CMAKE_CONFIG=ON
working-directory: _build
- name: Build
run: |
@@ -139,23 +143,267 @@ jobs:
-- -j$(nproc)
working-directory: _build
- name: Test
run: ctest -V
run: ctest -V -C Release
working-directory: _build
- name: Test CMake Consumer
run: |
cmake . \
-DCMAKE_PREFIX_PATH=../../../_install \
-DCMAKE_BUILD_TYPE=Release
cmake --build . \
--config Release
./consumer
working-directory: _build/tests/cmake-consumer-dist
# ---------------------------------------------------------------------------
# MacOS latest ext packages
# ---------------------------------------------------------------------------
macos-latest:
name: 'macOS latest
<AppleClang 12.0
cxx=${{ matrix.cxx-standard }},
docs=${{ matrix.build-docs }},
python=${{ matrix.python-version }}>'
# Don't run on OCIO forks
if: github.repository == 'AcademySoftwareFoundation/OpenColorIO'
runs-on: macos-latest
strategy:
matrix:
build: [1, 2]
include:
# C++17
- build: 1
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 17
python-version: 3.9
# C++14
- build: 2
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 14
python-version: 3.9
steps:
- name: Setup Python
uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- name: Checkout
uses: actions/checkout@v2
- name: Install docs env
run: share/ci/scripts/macos/install_docs_env.sh
if: matrix.build-docs == 'ON'
- name: Install tests env
run: share/ci/scripts/macos/install_tests_env.sh
- name: Setup ext environment
run: |
EXT_PATH=/usr/local
echo "EXT_PATH=$EXT_PATH" >> $GITHUB_ENV
- name: Install indirect dependencies
run: |
share/ci/scripts/macos/install_bison.sh latest
share/ci/scripts/macos/install_boost.sh latest
share/ci/scripts/multi/install_pugixml.sh latest $EXT_PATH
- name: Install fixed ext package versions
run: |
share/ci/scripts/multi/install_expat.sh 2.4.1 $EXT_PATH
share/ci/scripts/multi/install_lcms2.sh 2.2 $EXT_PATH
share/ci/scripts/multi/install_yaml-cpp.sh 0.7.0 $EXT_PATH
share/ci/scripts/multi/install_pystring.sh 1.1.3 $EXT_PATH
share/ci/scripts/multi/install_pybind11.sh 2.9.2 $EXT_PATH
- name: Install latest ext package versions
run: |
share/ci/scripts/multi/install_imath.sh latest $EXT_PATH
share/ci/scripts/multi/install_openexr.sh latest $EXT_PATH
share/ci/scripts/multi/install_oiio.sh latest $EXT_PATH
share/ci/scripts/multi/install_osl.sh latest $EXT_PATH
share/ci/scripts/multi/install_openfx.sh latest $EXT_PATH
- name: Create build directories
run: |
mkdir _install
mkdir _build
- name: Configure
run: |
cmake ../. \
-DCMAKE_INSTALL_PREFIX=../_install \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \
-DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \
-DOCIO_BUILD_OPENFX=${{ matrix.build-openfx }} \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_INSTALL_EXT_PACKAGES=NONE \
-DOCIO_WARNING_AS_ERROR=OFF \
-DPython_EXECUTABLE=$(which python) \
-DOCIO_USE_OIIO_CMAKE_CONFIG=ON
working-directory: _build
- name: Build
run: |
cmake --build . \
--target install \
--config Release \
-- -j$(sysctl -n hw.ncpu)
working-directory: _build
- name: Test
run: ctest -V -C Release
working-directory: _build
- name: Test CMake Consumer
run: |
cmake . \
-DCMAKE_PREFIX_PATH=../../../_install \
-DCMAKE_BUILD_TYPE=Release
cmake --build . \
--config Release
./consumer
working-directory: _build/tests/cmake-consumer-dist
# ---------------------------------------------------------------------------
# Windows latest ext packages
# ---------------------------------------------------------------------------
windows-latest:
name: 'Windows latest
<MSVC
cxx=${{ matrix.cxx-standard }},
docs=${{ matrix.build-docs }},
python=${{ matrix.python-version }}>'
# Don't run on OCIO forks
if: github.repository == 'AcademySoftwareFoundation/OpenColorIO'
runs-on: windows-latest
strategy:
matrix:
build: [1, 2]
include:
# C++17
- build: 1
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 17
python-version: 3.9
# C++14
- build: 2
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 14
python-version: 3.9
steps:
- name: Setup Python
uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- name: Checkout
uses: actions/checkout@v2
- name: Install docs env
run: share/ci/scripts/windows/install_docs_env.sh
shell: bash
if: matrix.build-docs == 'ON'
- name: Install tests env
run: share/ci/scripts/windows/install_tests_env.sh
shell: bash
- name: Setup ext environment
run: |
EXT_PATH=$GITHUB_WORKSPACE/_ext
VCPKG_ROOT=$VCPKG_INSTALLATION_ROOT/installed/x64-windows
echo "EXT_PATH=$EXT_PATH" >> $GITHUB_ENV
echo "CMAKE_PREFIX_PATH=$VCPKG_ROOT;$EXT_PATH" >> $GITHUB_ENV
echo "$VCPKG_ROOT/bin" >> $GITHUB_PATH
echo "$EXT_PATH/bin" >> $GITHUB_PATH
mkdir $EXT_PATH
shell: bash
- name: Install indirect dependencies
run: |
vcpkg install zlib:x64-windows
vcpkg install tiff:x64-windows
vcpkg install boost-asio:x64-windows
vcpkg install boost-container:x64-windows
vcpkg install boost-filesystem:x64-windows
vcpkg install boost-math:x64-windows
vcpkg install boost-stacktrace:x64-windows
vcpkg install boost-system:x64-windows
vcpkg install boost-thread:x64-windows
share/ci/scripts/multi/install_pugixml.sh latest $EXT_PATH
shell: bash
- name: Install fixed ext package versions
run: |
share/ci/scripts/multi/install_lcms2.sh 2.2 $EXT_PATH
share/ci/scripts/multi/install_yaml-cpp.sh 0.7.0 $EXT_PATH
share/ci/scripts/multi/install_pystring.sh 1.1.3 $EXT_PATH
share/ci/scripts/multi/install_pybind11.sh 2.9.2 $EXT_PATH
share/ci/scripts/multi/install_expat.sh 2.4.1 $EXT_PATH
shell: bash
# OSL not installed due to LLVM compilation time.
- name: Install latest ext package versions
run: |
share/ci/scripts/multi/install_imath.sh latest $EXT_PATH
share/ci/scripts/multi/install_openexr.sh latest $EXT_PATH
share/ci/scripts/multi/install_oiio.sh latest $EXT_PATH
share/ci/scripts/multi/install_openfx.sh latest $EXT_PATH
shell: bash
- name: Create build directories
run: |
mkdir _install
mkdir _build
shell: bash
- name: Configure
run: |
cmake ../. \
-DCMAKE_INSTALL_PREFIX=../_install \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \
-DCMAKE_GENERATOR_PLATFORM=x64 \
-DOCIO_BUILD_DOCS=OFF \
-DOCIO_BUILD_OPENFX=${{ matrix.build-openfx }} \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_INSTALL_EXT_PACKAGES=NONE \
-DOCIO_WARNING_AS_ERROR=OFF \
-DPython_EXECUTABLE=$(which python) \
-DOCIO_BUILD_PYTHON=OFF \
-DOCIO_USE_OIIO_CMAKE_CONFIG=ON
shell: bash
working-directory: _build
- name: Build
run: |
cmake --build . \
--target install \
--config Release \
--parallel
shell: bash
working-directory: _build
- name: Test
run: |
ctest -V -C Release
shell: bash
working-directory: _build
- name: Test CMake Consumer
run: |
cmake . \
-DCMAKE_PREFIX_PATH=../../../_install \
-DCMAKE_BUILD_TYPE=Release
cmake --build . \
--config Release
export PATH=../../../_install/bin:$PATH
./Release/consumer
shell: bash
working-directory: _build/tests/cmake-consumer-dist
# ---------------------------------------------------------------------------
# SonarCloud static analysis
# ---------------------------------------------------------------------------
linux_sonarcloud:
name: 'Linux CentOS 7 VFX CY2020 SonarCloud <GCC 6.3.1>'
name: 'Linux CentOS 7 VFX CY2022 SonarCloud <GCC 9.3.1>'
# Don't run on OCIO forks
if: github.repository == 'AcademySoftwareFoundation/OpenColorIO'
if: |
github.repository == 'AcademySoftwareFoundation/OpenColorIO' &&
github.event.pull_request.head.repo.full_name == github.repository
# GH-hosted VM. The build runs in CentOS 7 'container' defined below.
runs-on: ubuntu-latest
container:
# DockerHub: https://hub.docker.com/u/aswf
# Source: https://github.com/AcademySoftwareFoundation/aswf-docker
image: aswf/ci-ocio:2020
image: aswf/ci-ocio:2022
env:
CXX: g++
CC: gcc
@@ -177,7 +425,7 @@ jobs:
cmake ../. \
-DCMAKE_INSTALL_PREFIX=../_install \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=11 \
-DCMAKE_CXX_STANDARD=14 \
-DCMAKE_CXX_FLAGS="-g -O0 -fprofile-arcs -ftest-coverage" \
-DCMAKE_CXX_OUTPUT_EXTENSION_REPLACE=ON \
-DCMAKE_EXE_LINKER_FLAGS="-lgcov" \
@@ -191,7 +439,7 @@ jobs:
run: build-wrapper-linux-x86-64 --out-dir bw_output make clean all
working-directory: _build
- name: Test
run: ctest -V
run: ctest -V -C Release
working-directory: _build
- name: Generate code coverage report
run: share/ci/scripts/linux/run_gcov.sh
+241 -174
View File
@@ -46,7 +46,12 @@ jobs:
shared=${{ matrix.build-shared }},
sse=${{ matrix.use-sse }},
cxx=${{ matrix.cxx-standard }},
docs=${{ matrix.build-docs }}>'
docs=${{ matrix.build-docs }},
oiio=${{ matrix.use-oiio }}>'
# Avoid duplicated checks when a pull_request is opened from a local branch.
if: |
github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name != github.repository
# GH-hosted VM. The build runs in CentOS 7 'container' defined below.
runs-on: ubuntu-latest
container:
@@ -55,178 +60,191 @@ jobs:
image: aswf/ci-ocio:${{ matrix.vfx-cy }}
strategy:
matrix:
build: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
build: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
include:
# -------------------------------------------------------------------
# VFX CY2021
# VFX CY2022 (Python 3.9)
# -------------------------------------------------------------------
- build: 12
# C++17, Clang, Debug, OpenFX
- build: 13
build-type: Debug
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
build-openfx: 'ON'
use-sse: 'ON'
use-oiio: 'ON'
cxx-standard: 17
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang 9
vfx-cy: 2022
# C++17, GCC, no SSE, OpenFX
- build: 12
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-openfx: 'ON'
use-sse: 'OFF'
use-oiio: 'OFF'
cxx-standard: 17
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 9.3.1
vfx-cy: 2022
# C++14, GCC, static, docs
- build: 11
build-type: Release
build-shared: 'OFF'
build-docs: 'ON'
build-openfx: 'OFF'
use-sse: 'ON'
use-oiio: 'OFF'
cxx-standard: 14
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 9.3.1
vfx-cy: 2022
# C++11, GCC, static
- build: 10
build-type: Release
build-shared: 'OFF'
build-docs: 'OFF'
build-openfx: 'OFF'
use-sse: 'ON'
use-oiio: 'OFF'
cxx-standard: 11
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 9.3.1
vfx-cy: 2022
# -------------------------------------------------------------------
# VFX CY2021 (Python 3.7)
# -------------------------------------------------------------------
# C++17, Clang
- build: 9
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-openfx: 'OFF'
use-sse: 'ON'
use-oiio: 'ON'
cxx-standard: 17
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang 9
vfx-cy: 2021
- build: 11
# C++14, Clang, static, no SSE, OpenFX
- build: 8
build-type: Release
build-shared: 'OFF'
build-docs: 'OFF'
build-openfx: 'ON'
use-sse: 'OFF'
use-oiio: 'OFF'
cxx-standard: 14
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang 9
vfx-cy: 2021
# C++11, GCC, Debug
- build: 7
build-type: Debug
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
build-openfx: 'OFF'
use-sse: 'ON'
cxx-standard: 17
use-oiio: 'OFF'
cxx-standard: 11
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 9.3.1
vfx-cy: 2021
# -------------------------------------------------------------------
# GCC, VFX CY2020
# VFX CY2020 (Python 3.7)
# -------------------------------------------------------------------
# C++11, Python 3.7
- build: 10
build-type: Release
build-shared: 'ON'
build-docs: 'ON'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 11
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 6.3.1
vfx-cy: 2020
# Debug
- build: 9
build-type: Debug
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 11
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 6.3.1
vfx-cy: 2020
# C++14
- build: 8
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 14
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 6.3.1
vfx-cy: 2020
# Static, no SSE
- build: 7
build-type: Release
build-shared: 'OFF'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'OFF'
cxx-standard: 11
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 6.3.1
vfx-cy: 2020
# -------------------------------------------------------------------
# GCC, VFX CY2019
# -------------------------------------------------------------------
# Python 2.7
# C++14, Clang, OpenFX
- build: 6
build-type: Release
build-shared: 'ON'
# Doc build requires Python 3
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 11
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 6.3.1
vfx-cy: 2019
# -------------------------------------------------------------------
# Clang, VFX CY2020
# -------------------------------------------------------------------
# C++11, Python 3.7
- build: 5
build-type: Release
build-shared: 'ON'
build-docs: 'ON'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 11
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang 7
vfx-cy: 2020
# Debug
- build: 4
build-type: Debug
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
build-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 11
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang 7
vfx-cy: 2020
# C++14
- build: 3
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
build-openfx: 'ON'
use-sse: 'OFF'
use-oiio: 'OFF'
cxx-standard: 14
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang 7
vfx-cy: 2020
# Static, no SSE
- build: 2
build-type: Release
# C++14, GCC, static, Debug, OpenFX
- build: 5
build-type: Debug
build-shared: 'OFF'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'OFF'
build-openfx: 'ON'
use-sse: 'ON'
use-oiio: 'ON'
cxx-standard: 14
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 6.3.1
vfx-cy: 2020
# C++11, GCC, no SSE
- build: 4
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-openfx: 'OFF'
use-sse: 'ON'
use-oiio: 'OFF'
cxx-standard: 11
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 6.3.1
vfx-cy: 2020
# -------------------------------------------------------------------
# VFX CY2019 (Python 2.7)
# -------------------------------------------------------------------
# C++11, Clang, static
- build: 3
build-type: Release
build-shared: 'OFF'
# Doc build requires Python 3
build-docs: 'OFF'
build-openfx: 'OFF'
use-sse: 'ON'
use-oiio: 'ON'
cxx-standard: 11
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang 7
vfx-cy: 2020
# -------------------------------------------------------------------
# Clang, VFX CY2019
# -------------------------------------------------------------------
# Python 2.7
vfx-cy: 2019
# C++11, Clang, Debug, no SSE
- build: 2
build-type: Debug
build-shared: 'ON'
# Doc build requires Python 3
build-docs: 'OFF'
build-openfx: 'OFF'
use-sse: 'OFF'
use-oiio: 'OFF'
cxx-standard: 11
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang 7
vfx-cy: 2019
# C++11, GCC, OpenFX
- build: 1
build-type: Release
build-shared: 'ON'
# Doc build requires Python 3
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
build-openfx: 'ON'
use-sse: 'ON'
use-oiio: 'OFF'
cxx-standard: 11
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang 7
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 6.3.1
vfx-cy: 2019
env:
CXX: ${{ matrix.cxx-compiler }}
@@ -234,6 +252,10 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v2
# minizip-ng requires CMake 3.13+ but VFX2019 image ships with 3.12
- name: Upgrade VFX2019 CMake
run: pip install cmake==3.13.3
if: matrix.vfx-cy == '2019'
- name: Install docs env
run: share/ci/scripts/linux/yum/install_docs_env.sh
if: matrix.build-docs == 'ON'
@@ -251,9 +273,10 @@ jobs:
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \
-DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \
-DOCIO_BUILD_GPU_TESTS=${{ matrix.build-gpu }} \
-DOCIO_USE_HEADLESS=${{ matrix.use-headless }} \
-DOCIO_BUILD_OPENFX=${{ matrix.build-openfx }} \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_USE_SSE=${{ matrix.use-sse }} \
-DOCIO_USE_OIIO_FOR_APPS=${{ matrix.use-oiio }} \
-DOCIO_INSTALL_EXT_PACKAGES=ALL \
-DOCIO_WARNING_AS_ERROR=ON \
-DPython_EXECUTABLE=$(which python)
@@ -266,8 +289,18 @@ jobs:
-- -j$(nproc)
working-directory: _build
- name: Test
run: ctest -V
run: ctest -V -C ${{ matrix.build-type }}
working-directory: _build
- name: Test CMake Consumer
if: matrix.build-shared == 'ON'
run: |
cmake . \
-DCMAKE_PREFIX_PATH=../../../_install \
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }}
cmake --build . \
--config ${{ matrix.build-type }}
./consumer
working-directory: _build/tests/cmake-consumer-dist
# ---------------------------------------------------------------------------
# macOS
@@ -281,51 +314,55 @@ jobs:
sse=${{ matrix.use-sse }},
cxx=${{ matrix.cxx-standard }},
python=${{ matrix.python-version }},
docs=${{ matrix.build-docs }}>'
docs=${{ matrix.build-docs }},
oiio=${{ matrix.use-oiio}}>'
# Avoid duplicated checks when a pull_request is opened from a local branch.
if: |
github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name != github.repository
runs-on: macos-10.15
strategy:
matrix:
build: [1, 2, 3, 4, 5, 6]
include:
# C++17
# C++17, OpenFX
- build: 6
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
build-openfx: 'ON'
use-sse: 'ON'
use-oiio: 'ON'
cxx-standard: 17
python-version: 3.7
# Static, no SSE
python-version: 3.9
# C++11, Python 3.7
- build: 5
build-type: Release
build-shared: 'ON'
build-docs: 'ON'
build-gpu: 'OFF'
use-headless: 'OFF'
build-openfx: 'OFF'
use-sse: 'ON'
use-oiio: 'OFF'
cxx-standard: 11
python-version: 3.7
# Debug
# Debug, OpenFX
- build: 4
build-type: Debug
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
build-openfx: 'ON'
use-sse: 'ON'
use-oiio: 'OFF'
cxx-standard: 11
python-version: 3.7
# C++14
# C++14, OpenEXR, OpenFX
- build: 3
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
build-openfx: 'ON'
use-sse: 'ON'
use-oiio: 'OFF'
cxx-standard: 14
python-version: 3.7
# Static, no SSE
@@ -333,9 +370,9 @@ jobs:
build-type: Release
build-shared: 'OFF'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
build-openfx: 'OFF'
use-sse: 'OFF'
use-oiio: 'OFF'
cxx-standard: 11
python-version: 3.7
# Python 2.7
@@ -344,9 +381,9 @@ jobs:
build-shared: 'ON'
# Doc build requires Python 3
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
build-openfx: 'OFF'
use-sse: 'ON'
use-oiio: 'ON'
cxx-standard: 11
python-version: 2.7
steps:
@@ -373,9 +410,10 @@ jobs:
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \
-DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \
-DOCIO_BUILD_GPU_TESTS=${{ matrix.build-gpu }} \
-DOCIO_USE_HEADLESS=${{ matrix.use-headless }} \
-DOCIO_BUILD_OPENFX=${{ matrix.build-openfx }} \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_USE_SSE=${{ matrix.use-sse }} \
-DOCIO_USE_OIIO_FOR_APPS=${{ matrix.use-oiio }} \
-DOCIO_INSTALL_EXT_PACKAGES=ALL \
-DOCIO_WARNING_AS_ERROR=ON \
-DPython_EXECUTABLE=$(which python)
@@ -388,8 +426,18 @@ jobs:
-- -j$(sysctl -n hw.ncpu)
working-directory: _build
- name: Test
run: ctest -V
run: ctest -V -C ${{ matrix.build-type }}
working-directory: _build
- name: Test CMake Consumer
if: matrix.build-shared == 'ON'
run: |
cmake . \
-DCMAKE_PREFIX_PATH=../../../_install \
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }}
cmake --build . \
--config ${{ matrix.build-type }}
./consumer
working-directory: _build/tests/cmake-consumer-dist
# ---------------------------------------------------------------------------
# Windows
@@ -405,30 +453,35 @@ jobs:
sse=${{ matrix.use-sse }},
cxx=${{ matrix.cxx-standard }},
python=${{ matrix.python-version }},
docs=${{ matrix.build-docs }}>'
docs=${{ matrix.build-docs }},
oiio=${{ matrix.use-oiio }}>'
# Avoid duplicated checks when a pull_request is opened from a local branch.
if: |
github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name != github.repository
runs-on: windows-2019
strategy:
matrix:
build: [1, 2, 3, 4, 5, 6]
include:
# C++17
# C++17, OpenFX
- build: 6
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
build-openfx: 'ON'
use-sse: 'ON'
use-oiio: 'ON'
cxx-standard: 17
python-version: 3.7
python-version: 3.9
# C++11, Python 3.7
- build: 5
build-type: Release
build-shared: 'ON'
build-docs: 'ON'
build-gpu: 'OFF'
use-headless: 'OFF'
build-docs: 'OFF'
build-openfx: 'OFF'
use-sse: 'ON'
use-oiio: 'OFF'
cxx-standard: 11
python-version: 3.7
# Debug
@@ -436,29 +489,29 @@ jobs:
build-type: Debug
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
build-openfx: 'OFF'
use-sse: 'ON'
use-oiio: 'OFF'
cxx-standard: 11
python-version: 3.7
# C++14
# C++14, OpenEXR, OpenFX
- build: 3
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
build-openfx: 'ON'
use-sse: 'ON'
use-oiio: 'OFF'
cxx-standard: 14
python-version: 3.7
# Static, no SSE
# Static, no SSE, OpenFX
- build: 2
build-type: Release
build-shared: 'OFF'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
build-openfx: 'ON'
use-sse: 'OFF'
use-oiio: 'OFF'
cxx-standard: 11
python-version: 3.7
# Python 2.7
@@ -467,9 +520,9 @@ jobs:
build-shared: 'ON'
# Doc build requires Python 3
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
build-openfx: 'OFF'
use-sse: 'ON'
use-oiio: 'ON'
cxx-standard: 11
python-version: 2.7
steps:
@@ -485,6 +538,7 @@ jobs:
if: matrix.build-docs == 'ON'
- name: Install tests env
run: share/ci/scripts/windows/install_tests_env.sh
shell: bash
- name: Create build directories
run: |
mkdir _install
@@ -499,9 +553,10 @@ jobs:
-DCMAKE_GENERATOR_PLATFORM=x64 \
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \
-DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \
-DOCIO_BUILD_GPU_TESTS=${{ matrix.build-gpu }} \
-DOCIO_USE_HEADLESS=${{ matrix.use-headless }} \
-DOCIO_BUILD_OPENFX=${{ matrix.build-openfx }} \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_USE_SSE=${{ matrix.use-sse }} \
-DOCIO_USE_OIIO_FOR_APPS=${{ matrix.use-oiio }} \
-DOCIO_INSTALL_EXT_PACKAGES=ALL \
-DOCIO_WARNING_AS_ERROR=ON \
-DPython_EXECUTABLE=$(which python)
@@ -515,6 +570,18 @@ jobs:
shell: bash
working-directory: _build
- name: Test
run: ctest -V
run: ctest -V -C ${{ matrix.build-type }}
shell: bash
working-directory: _build
- name: Test CMake Consumer
if: matrix.build-shared == 'ON'
run: |
cmake . \
-DCMAKE_PREFIX_PATH=../../../_install \
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }}
cmake --build . \
--config ${{ matrix.build-type }}
export PATH=../../../_install/bin:$PATH
./${{ matrix.build-type }}/consumer
shell: bash
working-directory: _build/tests/cmake-consumer-dist
+273
View File
@@ -0,0 +1,273 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright Contributors to the OpenColorIO Project.
#
name: Wheel
on:
push:
# Workflow run on tags for v2 only.
tags:
- v2.*
pull_request:
# Workflow run on pull_request only when related files change.
branches-ignore:
- RB-0.*
- RB-1.*
- gh-pages
tags-ignore:
- v0.*
- v1.*
paths:
- .github/workflows/wheel_workflow.yml
- MANIFEST.in
- pyproject.toml
- setup.cfg
- setup.py
schedule:
# Nightly build
- cron: "0 0 * * *"
jobs:
# Linux jobs run in Docker containers (manylinux), so the latest OS version
# is OK. macOS and Windows jobs need to be locked to specific virtual
# environment versions to mitigate issues from OS updates, and will require
# maintenance as OS versions are retired.
#
# Due to documentation build failing on manylinux2010 (maybe too old doxygen
# version), we build on manylinux2014 image, this requires pip >= 19.3.
# ---------------------------------------------------------------------------
# Source Distribution
# ---------------------------------------------------------------------------
sdist:
name: Build SDist
runs-on: ubuntu-latest
# Don't run on OCIO forks
if: |
github.event_name != 'schedule' ||
github.repository == 'AcademySoftwareFoundation/OpenColorIO'
steps:
- uses: actions/checkout@v2
- name: Build SDist
run: pipx run build --sdist
- name: Check metadata
run: pipx run twine check dist/*
- uses: actions/upload-artifact@v2
with:
path: dist/*.tar.gz
# ---------------------------------------------------------------------------
# Linux Wheels
# ---------------------------------------------------------------------------
linux:
name: Build wheels on Linux
runs-on: ubuntu-latest
# Don't run on OCIO forks
if: |
github.event_name != 'schedule' ||
github.repository == 'AcademySoftwareFoundation/OpenColorIO'
strategy:
matrix:
include:
# -------------------------------------------------------------------
# CPython 64 bits
# -------------------------------------------------------------------
- build: CPython 3.7 64 bits
python: cp37-manylinux*
arch: x86_64
- build: CPython 3.8 64 bits
python: cp38-manylinux*
arch: x86_64
- build: CPython 3.9 64 bits
python: cp39-manylinux*
arch: x86_64
- build: CPython 3.10 64 bits
python: cp310-manylinux*
arch: x86_64
- build: CPython 3.11 64 bits
python: cp311-manylinux*
arch: x86_64
# -------------------------------------------------------------------
# CPython ARM 64 bits
# -------------------------------------------------------------------
- build: CPython 3.7 ARM 64 bits
python: cp37-manylinux*
arch: aarch64
- build: CPython 3.8 ARM 64 bits
python: cp38-manylinux*
arch: aarch64
- build: CPython 3.9 ARM 64 bits
python: cp39-manylinux*
arch: aarch64
- build: CPython 3.10 ARM 64 bits
python: cp310-manylinux*
arch: aarch64
- build: CPython 3.11 ARM 64 bits
python: cp311-manylinux*
arch: aarch64
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
name: Install Python
with:
python-version: '3.8'
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
with:
platforms: all
- name: Build wheels
uses: pypa/cibuildwheel@v2.11.2
env:
CIBW_BUILD: ${{ matrix.python }}
CIBW_ARCHS: ${{ matrix.arch }}
- uses: actions/upload-artifact@v2
with:
path: ./wheelhouse/*.whl
# ---------------------------------------------------------------------------
# macOS Wheels
# ---------------------------------------------------------------------------
macos:
name: Build wheels on macOS
runs-on: macos-10.15
# Don't run on OCIO forks
if: |
github.event_name != 'schedule' ||
github.repository == 'AcademySoftwareFoundation/OpenColorIO'
strategy:
matrix:
include:
# -------------------------------------------------------------------
# CPython 64 bits
# -------------------------------------------------------------------
- build: CPython 3.7 64 bits
python: cp37-*
arch: x86_64
- build: CPython 3.8 64 bits
python: cp38-*
arch: x86_64
- build: CPython 3.9 64 bits
python: cp39-*
arch: x86_64
- build: CPython 3.10 64 bits
python: cp310-*
arch: x86_64
- build: CPython 3.11 64 bits
python: cp311-*
arch: x86_64
# -------------------------------------------------------------------
# CPython ARM 64 bits
# -------------------------------------------------------------------
- build: CPython 3.8 ARM 64 bits
python: cp38-*
arch: arm64
- build: CPython 3.9 ARM 64 bits
python: cp39-*
arch: arm64
- build: CPython 3.10 ARM 64 bits
python: cp310-*
arch: arm64
- build: CPython 3.11 ARM 64 bits
python: cp311-*
arch: arm64
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
name: Install Python
with:
python-version: '3.8'
- name: Build wheels
uses: pypa/cibuildwheel@v2.11.2
env:
CIBW_BUILD: ${{ matrix.python }}
CIBW_ARCHS: ${{ matrix.arch }}
- uses: actions/upload-artifact@v2
with:
path: ./wheelhouse/*.whl
# ---------------------------------------------------------------------------
# Windows Wheels
# ---------------------------------------------------------------------------
windows:
name: Build wheels on Windows
runs-on: windows-2019
# Don't run on OCIO forks
if: |
github.event_name != 'schedule' ||
github.repository == 'AcademySoftwareFoundation/OpenColorIO'
strategy:
matrix:
include:
# -------------------------------------------------------------------
# CPython 64 bits
# -------------------------------------------------------------------
- build: CPython 3.7 64 bits
python: cp37-*
arch: AMD64
- build: CPython 3.8 64 bits
python: cp38-*
arch: AMD64
- build: CPython 3.9 64 bits
python: cp39-*
arch: AMD64
- build: CPython 3.10 64 bits
python: cp310-*
arch: AMD64
- build: CPython 3.11 64 bits
python: cp311-*
arch: AMD64
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
name: Install Python
with:
python-version: '3.8'
- name: Build wheels
uses: pypa/cibuildwheel@v2.11.2
env:
CIBW_BUILD: ${{ matrix.python }}
CIBW_ARCHS: ${{ matrix.arch }}
- uses: actions/upload-artifact@v2
with:
path: ./wheelhouse/*.whl
upload_pypi:
needs: [sdist, linux, macos, windows]
runs-on: ubuntu-latest
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v')
steps:
- uses: actions/setup-python@v2
- uses: actions/download-artifact@v2
with:
name: artifact
path: dist
- uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
+1 -1
View File
@@ -52,7 +52,7 @@ This charter (the &quot;Charter&quot;) sets forth the responsibilities and proce
7. Intellectual Property Policy
* **a.** Participants acknowledge that the copyright in all new contributions shall be retained by the copyright holder as independent works of authorship and that no contributor or copyright holder will be required to assign copyrights to the Project.
* **b.** Except as described in Section 7.c., all code contributions to the Project are subject to the following:
* **i.** All new inbound code contributions to the Project must be made using the **BSD 3-Clause License (available here: [https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/master/LICENSE](https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/master/LICENSE))** (the &quot;Project License&quot;).
* **i.** All new inbound code contributions to the Project must be made using the **BSD 3-Clause License (available here: [https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/main/LICENSE](https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/main/LICENSE))** (the &quot;Project License&quot;).
* **ii.** All new inbound code contributions must:
1. be made pursuant to a duly executed Project Contribution License Agreement (the &quot;CLA&quot;), available on the Project&#39;s web site; and
2. be accompanied by a Developer Certificate of Origin ([http://developercertificate.org](http://developercertificate.org)) sign-off in the source code system that is submitted through a TSC-approved contribution process which will bind the authorized contributor and, if not self-employed, their employer to the applicable license;
+124
View File
@@ -0,0 +1,124 @@
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
<!-- Copyright Contributors to the OpenColorIO Project. -->
# OpenColorIO Google Summer of Code 2021
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 version 1.0 was released in 2011, having been in development since
2003. OCIO v1 represented 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 v2 has been in development since 2017 and was feature complete as of
SIGGRAPH 2020. After a stabilization and bug-fixing period, an official 2.0.0
release was made in January 2021!
While OCIO is a color management library (written in C++ with a Python API),
its only knowledge of color science comes from its execution of the transforms
defined in the OCIO configuration file, written in YAML. These transforms are
either defined by the end user in a custom OCIO config or inherited from the
publicly available configs. By specifying your desired config file in the local
environment all OCIO compatible applications and software libraries will be able
to see your defined color transform “universe”. You can then direct the
transformation of image data from one defined OCIO Color Space to another, in
addition to the other transforms documented elsewhere - the options are endless!
## About the Academy Software Foundation
The Academy Software Foundation (ASWF) is collaboration between the Linux
Foundation and the Academy of Motion Picture Arts and Sciences, serving as
an umbrella organization that is the home to several key open source
software projects used by the film industry (primarily visual effects and
animation production). The projects we manage are some of the most
high-profile and widely used open source projects originating and used in
film production studios. It's a great opportunity for students to get
involved with projects that will be used professionally on films!
The mission of the ASWF is to increase the quality and quantity of
contributions to the content creation industry's open source software base;
to provide a neutral forum to coordinate cross-project efforts; to provide a
common build and test infrastructure; and to provide individuals and
organizations a clear path to participation in advancing our open source
ecosystem.
In 2020, the ASWF projects OpenEXR, OpenTimelineIO, and OpenCue mentored
GSoC students. This year, OpenColorIO is the ASWF project that looks forward
to welcoming and mentoring GSoC students.
## Application Instructions for Students
Please review the CONTRIBUTING guidelines thoroughly before applying. OCIO
maintains a contributor license agreement (CLA) which must be signed to
accept contributions.
**Successfully submitting a Pull Request to the OCIO project is a strict**
**requirement prior to submitting an application.**
This is not negotiable. We will not even read applications from students who
have not submitted an acceptable PR to the project. It can be a truly minimal
change -- for example, fixing a typo in an error message. You will find issues
tagged "good first issue" on our GitHub repo, which are ideal candidates for
your small trial PR to qualify for application.
## Application template
Please use this application template. Feel free to expand or tell us any other
relevant details, but this is a good place to start. The applications will be
judged by representatives of the OCIO technical steering comittee.
* Student name:
* School / year / area of study:
* Relevant courses, materials studied, jobs, programming projects, skills, other
open source projects you've contributed to. Go ahead and tell us anything about
your background that you think we will find interesting for our projects.
* Project proposal - please explain in detail and give specifics on acceptance
criteria -- how we can measure your success, how we can test your code. Provide
a weekly timeline for expected progress.
* Please tell us which test PR you had merged into the OCIO repo:
## Project information and suggested ideas list
Home page: https://opencolorio.org/ <br>
GitHub: https://github.com/AcademySoftwareFoundation/OpenColorIO <br>
Skills/knowledge relevant to the project: C++11, CMake, color science
Mentor suggestions: Patrick Hodoul, Doug Walker, Michael Dolan
## Project Ideas:
**Add OCIO support to FFmpeg or another FOSS project**
An important effort for OCIO is expanding the libraries and applications where
OCIO is implemented. Users have specifically called out FFmpeg as a library and
command-line tool where they would like to see OCIO support, but any other FOSS
project leveraged by digital artists or production pipelines could be considered.
This could also include upgrading an existing implementation to support the OCIO
v2 API and leverage new functionality.
Special skills: Familiarity with prospective host library or tool, and knowledge
of working with image buffers and authoring plugins.
**OpenFX Plugin Development**
OCIO currently has a number of plug-ins in the GitHub repo for proprietary
application interfaces. (And in several cases, these have become out of sync
with the actual plug-ins shipped by vendors.) It would be great to have OpenFX
plug-ins in the repo. These would have the benefit of bringing OCIO support to
a wider range of applications. Furthermore, the existing plug-ins are all based
on OCIO v1, the new OpenFX plug-ins would be the perfect place to showcase the
new OCIO v2 features.
Special skills: Access to a host application that supports OpenFX plug-ins and
ability to build the basic demo plug-ins in the OpenFX SDK.
**Add support for more ICC profile structures**
OCIO currently supports basic ICC monitor profiles. These are the type that
are most often set as monitor profiles on Mac and Windows. But it would be nice
for OCIO to be able to read and convert some of the more advanced ICC profile
structures such as the A2B* and B2A* tags. There are some monitor profiles that
use these tags to implement gamut mapping. OCIO already has operators to support
the most common usage of these tags, so the project is simply about importing a
profile into existing OCIO operators. It would not be a goal of this project to
import structures that don’t already have an OCIO equivalent, such as
4-dimensional tables.
+1 -1
View File
@@ -36,7 +36,7 @@ Attendees:
* Infrastructure
* GitHub repo needs migrating to the ASWF organisation
* **TODO** - John Mertic to coordinate with Steve Winslow at the LF to complete.
* https://github.com/AcademySoftwareFoundation/tac/blob/master/process/contributing.md
* https://github.com/AcademySoftwareFoundation/tac/blob/main/process/contributing.md
* Require that any existing copyright notices are reviewed and amended by the current stated owners if their respective legal agrees.
* Once migrated will enable DCO sign off checking and CLA checks.
* Sub-discussion on the option of separate sign off for committer vs developer sign off.
+2 -2
View File
@@ -44,9 +44,9 @@ Attendees:
* Do a patch against 1.1 that fixes a few minor things?
* Consensus is that we should make 1.1.1 with some important non-breaking patches and release that fix right away.
* **TODO**: Patrick will send Slack the list of candidate commits for a 1.1.1.
* Do we make an intermediate release from master before v2.0? People want a "developer preview" to be able to use the new GPU path.
* Do we make an intermediate release from main before v2.0? People want a "developer preview" to be able to use the new GPU path.
* Patrick reluctant to make a full release.
* Proposal: just make a "developer preview" tag in master to designate a point we think is stable and has some helpful new features, but we don't promise any support or compatibility with the eventual v2.
* Proposal: just make a "developer preview" tag in main to designate a point we think is stable and has some helpful new features, but we don't promise any support or compatibility with the eventual v2.
* Down side: people will use it and expect us to support it.
* No consensus that this is a good idea. Mark especially doesn't like unsupported dev preview tag.
* But v2 will NOT be ready by SIGGRAPH 2019. In light of this, Mark thinks maybe we should have a real intermediate release.
+2 -2
View File
@@ -26,7 +26,7 @@ Attendees:
- Doug: As established in the initial 2.0 proposal, this is not feasible.
- The plan remains to release a complete feature set when the full v2 roadmap is completed.
- Community concern is that the v2 release schedule is unknown, and time between OCIO releases is long.
- This can make planning for software vendors challenging, but preliminary implementation of the v2 interface is possible now from master for testing.
- This can make planning for software vendors challenging, but preliminary implementation of the v2 interface is possible now from main for testing.
- Autodesk discussing an official roadmap and insight on a potential release window. Stay tuned.
- Long PR review cycles contribute to development slowdowns:
- Most PRs are merged with the 2 week single reviewer clause.
@@ -37,7 +37,7 @@ Attendees:
- PRs are becoming smaller, more focused, which should help with review accessability
- **TODO**: Doug/Patrick to review and report back on what project management changes could help them
- Larry: Should we have a known commit for testing a given feature (i.e. GPU renderer) for internal testing purposes.
- Doug: Testing off of master at any given time is stable, and ideal.
- Doug: Testing off of main at any given time is stable, and ideal.
* ASWF/LF CI update from TAC meeting
- Thanh presented comparison of Circle CI and current Jenkins infrastructure:
+1 -1
View File
@@ -43,7 +43,7 @@ Attendees:
- Any recommendations from LF regarding what to add to CI?
- Thanh: Some options are Nexus IQ, WhiteSource for security, Sonar Qube for static.
- Thanh is doing some investigation for TAC, we will follow closely for recommendations.
- John provide the following link: https://github.com/coreinfrastructure/best-practices-badge/blob/master/doc/security.md
- John provide the following link: https://github.com/coreinfrastructure/best-practices-badge/blob/main/doc/security.md
- Chair asked John if we were moving too slowly, John: no.
* 1.1.1 Release
+1 -1
View File
@@ -29,7 +29,7 @@ Apologies:
- Waiting approval
* Azure CI Build:
- Larry G.: Needs to build OCIO with some dependency master branch to trap coming issues?
- Larry G.: Needs to build OCIO with some dependency main branch to trap coming issues?
- Larry G. Only some libraries:
As OpenEXR is an indirect dependency, perhaps not needed.
But OIIO could be a good candidate.
+1 -1
View File
@@ -38,7 +38,7 @@ Apologies:
Meatballs” images with Sony.
- Kevin: We also need to update the LICENSE on the OCIO website
- Michael: That is pulled from GitHub, but currently from the RB-1.1
branch. Since the license cleanup work is being done in master, is it Ok
branch. Since the license cleanup work is being done in main, is it Ok
to wait for a 2.0 release next year to update the site?
- John: That should be Ok.
- Kevin: Let’s make a note to not forget it.
+2 -2
View File
@@ -30,8 +30,8 @@ Attendees:
* RB-1.1
- Michael: Following the approval for another minor release (*TSC meeting 2019-08-12*),
Travis & AppVeyor (i.e. the former CI build) are back for the RB-1.1 branch only.
- AppVeyor uses RB-1.1 & master branch
- **TODO**: Sean will help to disable master.
- AppVeyor uses RB-1.1 & main branch
- **TODO**: Sean will help to disable main.
- Travis triggers new warnings/errors.
Check [PR 798](https://github.com/imageworks/OpenColorIO/pull/798) for details.
- Agreed to fix them.
+1 -1
View File
@@ -28,7 +28,7 @@ Apologies:
- Doug raised that pull request #831 removes macros specific to these versions of GCC.
- Patrick raised that as we add more C+11 features the more we will be restricted.
- Kevin thinks we should definitely drop support for GCC 3.
- Patrick thought dropping GCC 3 would be fine and should be done in the master branch.
- Patrick thought dropping GCC 3 would be fine and should be done in the main branch.
* Azure CI build
- Patrick raised that the communication between Azure and Github is broken.
+1 -1
View File
@@ -26,7 +26,7 @@ Attendees:
- To document the policy concerning repository rights vs. roles.
* Branch protected
- Agreement to only protect `master`, `RB-**` and `gh-pages`.
- Agreement to only protect `main`, `RB-**` and `gh-pages`.
* Stalled pull requests
- Agreement to not have any automatic removal of stalled pull requests.
+2 -2
View File
@@ -32,7 +32,7 @@ Attendees:
* ASWF GSoC discussion
- Polled Slack for project ideas for ASWF's application to Google Summer of
Code, and submitted PR to:
`https://github.com/AcademySoftwareFoundation/tac/blob/master/gsoc/README.md`_
`https://github.com/AcademySoftwareFoundation/tac/blob/main/gsoc/README.md`_
- In summary, four projects initially proposed:
- Add Metal, Vulkan, or CUDA language support to GPU renderer
- Restore Java bindings
@@ -52,7 +52,7 @@ Attendees:
* Python bindings
- Michael: Resumed work on pybind11 bindings. Got everything up to date with
master.
main.
- Mei Chu (Imageworks) is interested in helping with this work, potentially
designing unit tests to start.
- Mei: Looking forward to getting more involved in OCIO
+1 -1
View File
@@ -61,7 +61,7 @@ Apologies: Michael Dolan
in what types of EXR images may be read (e.g. looking for a specific channel layout,
no multi-part support).
- Kevin: A quick scan of the EXR codec shows it only really outputs 16 bit RGB, RGBA, YCbCr.

https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/exr.c#L1691


https://github.com/FFmpeg/FFmpeg/blob/main/libavcodec/exr.c#L1691

- Mark: Is that integer 16 bit?

- Kevin: Yes, integers.
- Mark: One approach would be to make video filters for OCIO ColorSpaceTransform and
+1 -1
View File
@@ -70,7 +70,7 @@ Apologies:
- Carol: A lot of it can hopefully be to work with DCC vendors to help them
update their docs as well, and to understand coming changes. Then we can
point our docs to theirs.
- Michael: The [Compatible Software](https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/master/docs/CompatibleSoftware.rst)
- Michael: The [Compatible Software](https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/main/docs/CompatibleSoftware.rst)
page of the OCIO website was updated recently and contains many
up-to-date documentation links.
- Doug: Also may want to add OCIO developers to the list of consumers, to
+1 -1
View File
@@ -87,7 +87,7 @@ Apologies:
- Sean: Docstring header PR is in. Need another PR for pybind11 docstring
header, and another for reorganization of doc structure. The RTD page
points to official OCIO repo, so we're live now, but API docs and new
style is missing. Any changes to master are getting pushed to RTD now.
style is missing. Any changes to main are getting pushed to RTD now.
Not as much holding back docs as it seems.
- Simran: An event hook in GH communicates to RTD when to update the site.
- Michael: Can we open GH issues for logical chunks of work?
+4 -4
View File
@@ -100,10 +100,10 @@ Apologies:
begin that?
- Kevin: If we create them together we are saying they are the same. If
separated, might be different.
- Patrick: Where do we put the tag? In master or in RB-2.0?
- Mark: Have it in both, and cherry pick master changes into RB-2.0.
- Patrick: Only consequence is master will be tagged as RC.
- All agree to create tag in master and branch RB-2.0 from that.
- Patrick: Where do we put the tag? In main or in RB-2.0?
- Mark: Have it in both, and cherry pick main changes into RB-2.0.
- Patrick: Only consequence is main will be tagged as RC.
- All agree to create tag in main and branch RB-2.0 from that.
* General discussion:
- Kevin: If we are concerned with ABI compatibility, should we put
+159
View File
@@ -0,0 +1,159 @@
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
<!-- Copyright Contributors to the OpenColorIO Project. -->
January 18, 2021
Host: Michael Dolan
Attendees:
* [X] Mark Boorer (_TSC_) - Industrial Light & Magic
* [ ] Mei Chu (_TSC_) - Sony Pictures Imageworks
* [X] Sean Cooper (_TSC ACES TAC Rep_) - ARRI
* [X] Michael Dolan (_TSC Chair_) - Epic Games
* [X] Patrick Hodoul (_TSC_) - Autodesk
* [ ] John Mertic - Academy Software Foundation / Linux Foundation
* [X] Carol Payne (_TSC_) - Netflix
* [X] Mark Titchener (_TSC_) - Foundry
* [X] Carl Rand (_TSC_) - Weta Digital
* [X] Doug Walker (_TSC Chief Architect_) - Autodesk
* [X] Kevin Wheatley (_TSC_) - Framestore
* [X] Bernard Lefebvre - Autodesk
Apologies:
* Mei Chu
# **OCIO TSC Meeting Notes**
* Doug to summarize in-progress work:
- Doug: Number of PRs landing this week. Bug fixes in Python bindings, etc.
No new features. Small but appreciate quick turn around.
* Any volunteers to help get the OpenFX plug-ins compiling (PR #1232)?
- Doug: Contributor needs help with compilation and loading in OFX
compliant app. Doesn't need help writing plugins, just initial step of
getting it built.
- Michael: Currently is swapping code into a Resolve plugin example I
believe.
- Carol: Is there more we can do to help people get up and running with
OCIO? Many new developers are struggling to get up and running. Not sure
what the issue is.
- Doug: Valid point. Heard similar feedback from ACES community too. Not
all those trying to build OCIO are necessarily developers.
- Sean: Might be lack of familiarity with C++ build env.
- Carol: Could link to some CMake help for getting started, etc.
- Sean: After release, when we get into other package envs, those
complaints will go away.
- Michael: I brought this up in the last CI working group. Pushed for
making one of the goals this year to work on standardized package manager
support across ASWF projects.
- Mark T: He had example plugins building. I talked to him about some of
that. Is able to build examples now, but not able to build his plugin.
- Michael: We can do zoom to help support if needed.
* VFX Reference Platform 2.0.x -> 2.x:
- Michael: I reached out to the platform working group and the TAC about
the change and got good feedback. OpenVDB has always had a variable minor
version, but has to be handled carefully. Stance from VFX ref platform is
that a CY version range must be ABI compatible.
- Doug: Challenge is we may want to do 2.x release that breaks ABI
compatibility. Lots of things could break it.
- Michael: Can do minor version ranges in platform, if we could commit to
certain minor versions being ABI compatible.
- Doug: Anyone rememberer when tetrahedral interpolation was added to
OCIO v1? Did that break ABI compatibility?
- Kevin: It didn't quite. Was able to put binary from Nuke into Mari and
it worked.
- Patrick: Can add enum, but add at end.
- Doug: Risk is committing to all 2.x not breaking ABI.
- Patrick: Need to say that for next 9 months, no change will break ABI
compatibility. Since v2 is first being used, challenge to say that.
- Carol: Have not done enough testing to be confident.
- Michael: Semver doesn't explicitly say ABI compatibility, but sort of
implies it in minor version changes being backwards compatible. That
would impact the decision too.
- Patrick: We will have to change API.
- Carol: Might be 6 months before we see v2 release with Nuke.
- Mark T: Yes, taking longer than we hoped. also delay getting into
production once it's in DCCs.
- Michael: Suggest we back out changes if we're not confident in adhering
to the rule.
- Doug: Will need to be 2.0.1 as bug fix, and then eventually 2.1.
- Carol: Can push bigger changes to CY2022.
- Mark B: Don't forsee needing to use these new features at facility scale
in 2021. Not a huge deal if VFX ref misses some of those minor features.
- Michael: We're currently missing builtin transforms needed for the ACES
config. Would we need to resort to LUTs to get that out?
- Doug: Can do like was pasted in Slack a while back, building the output
transforms in the config.
- Michael: Any performance cost? Or since builtin transform just builds ops
directly, is it about the same?
- Doug: Shouldn't be. Have not tested yet.
- Michael: Complicates config build script a bit. ACES 1.3 can wait, but we
will need output transforms.
- Kevin: How many releases could we have this year? How many versions on
active support? Committing to support VFX ref platform. Minor versions
could be more to support. Tradeoff of not locking ref platform down.
- Mark B: Could add broken endpoints for features we're planning to add.
Then API won't change.
- Michael: Good idea. I have seen other libraries do that. Let's continue
this discussion in the config wg meeting tomorrow. I will followup with
platform working group after that.
* Release plan discussion for 2.0.0:
- Doug: Would like to do 2.0.0 release next week, Monday or Tuesday. Minor
PRs in this week to merge quickly.
* Issues, Built-in Transform, Documentation, or other “must haves” for 2.0.0:
- Doug: If there are things people feel are must haves, want to get them on
table. Bernard working on issues. Not currently working on reported
OpenEXR 2.5 CMake issue.
- **TODO**: Michael will roll back OIIO find module to resolve that
issue for now.
* Ociocheck behavior for missing roles:
- Doug: ociocheck looks for known set of roles. If they are missing it
prints error message. Added new roles to OCIO v2, so was going to add
them to OCIO check, but they aren't mandatory. some of the roles it is
currently complaining about don't seem mandatory. Propose changing
message to warning instead of error.
- Kevin: Difference in behavior with new roles. They are required in
certain circumstances. Without matte_paint role config will work. Would
like a strict check that validates as an error. Agree on some other roles
being warnings though.
- Sean: Core roles could be hard coded in DCCs and know that those exist.
More for DCC/API compatibility. With newer v2.0 features, can question
whether they are necessary.
* Should inactive color spaces be included by parseColorSpaceFromString?
- Doug: Inactive spaces won't be in menus. Should we parse inactive color
spaces from strings?
- Kevin: I think so. Useful for loading historical color spaces. Like to be
able to load file on disk.
- Mark, Sean: Agree. Good to load them still if it's defined.
* Scope of image IO support for app refactor (to remove OpenImageIO dependency):
- Michael: I've been building simple image interface to load EXRs for apps.
OpenEXR is a broad interface though, with many types of files. Should we
support them all? Or limit it since the apps only operate on RGBA?
- Mark B: Think we can keep the OIIO dependency. If needed can change how
they are built, with apps in another repo, or a separate CMake build.
- Kevin: Package managers would prefer library and tools separate.
- Mark B: That's what debian and brew do.
- Patrick: Agree not a huge problem, but falls in problem category. Two
types of commandline tools. Helpers and apps like ociodisplay, which are
useful for development. Moving tools for external users outside could be
good. But ocioperf less convinced. ocioperf would be ok only having
OpenEXR format. Tool we really need OIIO for is ociodisplay.
- Group agrees to continue discussion next week and in GH issue. Leaning
toward keeping OIIO dependency and implementing one of Mark's
suggestions.
* ASWF 2020 CCLA 2.1 transition:
- Sean: What would the timeline by for this change? 6 months?
- Michael: I talked to John and it sounds like we can get the new CCLA
signed before we switch and then switch it over once we know there will
be no disruption to contributions. Will follow up more on this next week.
* Items for next TSC meeting agenda:
- Removing apps from repo or main build.
- ASWF 2020 CCLA 2.1 transition plan.
+87
View File
@@ -0,0 +1,87 @@
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
<!-- Copyright Contributors to the OpenColorIO Project. -->
February 8, 2021
Host: Michael Dolan
Attendees:
* [X] Mark Boorer (_TSC_) - Industrial Light & Magic
* [X] Mei Chu (_TSC_) - Sony Pictures Imageworks
* [ ] Sean Cooper (_TSC ACES TAC Rep_) - ARRI
* [X] Michael Dolan (_TSC Chair_) - Epic Games
* [X] Patrick Hodoul (_TSC_) - Autodesk
* [ ] John Mertic - Academy Software Foundation / Linux Foundation
* [X] Carol Payne (_TSC_) - Netflix
* [X] Mark Titchener (_TSC_) - Foundry
* [ ] Carl Rand (_TSC_) - Weta Digital
* [X] Doug Walker (_TSC Chief Architect_) - Autodesk
* [X] Kevin Wheatley (_TSC_) - Framestore
* [X] Rémi Achard - DNEG
* [X] Thomas Mansencal - Weta Digital
* [X] Matthias Scharfenberg - Industrial Light & Magic
* [X] J Schulte - Industrial Light & Magic
# **OCIO TSC Meeting Notes**
* Several pending pull requests: some are Python reviews, but most of them are
meeting minute reviews.
- Patrick: Few PRs awaiting review. Not C++ changes - meeting minutes,
Python, etc.
- Carol: There's a website PR ready for review too. I will take a look at
that.
- Michael: Noting some issues reported related to v2, which means it's
being used and tested. I've been testing it and love the new config
features. Being able to build configs without external files is great.
- Patrick: Doug and I are investigating the issues. Big thanks to Doug for
the config improvements. *clap*
- Kevin: Using pre-release of v2 and encountered a bug while baking to
Resolve cube with ociobakelut. Known issue? Asking to bake 3D cube, but
resulted in 1d cube. I will investigate further.
* GSoC/D&I internships:
- Carol: Put doc in TSC channel. Two projects - ffmpeg support, and OFX
plugins:
https://docs.google.com/document/d/1sa68Cjq0TzSYFg2xhf2w2FFAQ1In7G391iINWKXfDo8/edit?usp=sharing
- Carol: Going to ask community for more ideas, and for more mentor
volunteers this week. End of this week needs to go to Larry. Think we're
the only ones submitting to GSoC this year.
- Michael: Quick mention that there's a new ASWF working group forming
around topic of Rust bindings for VFX OSS libs. Sounds like a group of
developers interested in working on this for several projects. First need
to make C bindings.
- Mark B: Talked about OCIO C bindings a while ago. Complex due to use
of shared pointers everywhere.
- Patrick: Earlier we discussed the idea of going back and making OCIO a C
lib with header only C++ bindings. Too late now, but interesting topic.
* Static builds - cmake export:
- Mark B: Problems with static builds when deploying on Windows. Looking at
fixing a number of CMake issues and improving 3rd party lib builds.
Improving debug and release builds too. PR will have a lot of changes,
but only to CMake. Hoping to open PR this week. Also noting some issues
with the way unit tests are linked which could be improved later. Tests
don't use same targets as lib, so must rebuild code.
- Patrick: Unit tests need private part of some files, so needed in some
places. Even if CMake is platform agnostic, have to deal with Windows
specific stuff. Often seems slightly broken on Windows platform.
- Mark: Big one for me was debug. CMake build type variable doesn't work on
all platforms. Default setup on Windows uses VS solutions, which support
multiple targets. Since on Windows release and debug libs can't be mixed,
current setup can be problematic.
* Locale issue:
- Patrick: Working on OCIO v2 integration in Maya. Facing locale issue -
numeric separator handling. We discussed this earlier, but will need to
resume conversation.
- Mark B: Parsing LUT files with locale wrong can cause read issues.
Probably want correct locale when reading yaml files, but one consistent
locale when reading LUTs.
- Patrick: Previous Turkish locale bug was related to upper to lower case
conversion (PR #984). I agree that numeric parsing should be locked to
decimal points.
- Doug: Lib is quite dependent on lowercase conversions. Could argue not
needed, but for backward compatibility might have to keep it.
* Items for next TSC meeting agenda:
- Absent next week: Patrick, Michael. Doug will be present and host.
+2 -4
View File
@@ -5,12 +5,12 @@ DATE
Host: NAME (Michael Dolan?)
Rotating Secretary: NAME
Secretary: NAME
Attendees:
* [ ] Mark Boorer (_TSC_) - Industrial Light & Magic
* [ ] Mei Chu (_TSC_) - Sony Pictures Imageworks
* [ ] Sean Cooper (_TSC ACES TAC Rep_) - DNEG
* [ ] Sean Cooper (_TSC ACES TAC Rep_) - ARRI
* [ ] Michael Dolan (_TSC Chair_) - Epic Games
* [ ] Patrick Hodoul (_TSC_) - Autodesk
* [ ] John Mertic - Academy Software Foundation / Linux Foundation
@@ -36,5 +36,3 @@ Apologies:
* Items for next TSC meeting agenda:
- xxx
@@ -0,0 +1,107 @@
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
<!-- Copyright Contributors to the OpenColorIO Project. -->
January 19, 2021
Host: Michael Dolan
Attendees:
* [X] Mark Boorer (_TSC_) - Industrial Light & Magic
* [X] Michael Dolan (_TSC Chair_) - Epic Games
* [X] Carol Payne (_TSC_) - Netflix
* [X] Doug Walker (_TSC Chief Architect_) - Autodesk
* [X] Dennis Adams - Sony
* [X] Christophe Brejon
* [X] Zach Lewis - Method
* [X] Scott Dyer - A.M.P.A.S.
* [X] Sean Cooper (_TSC_) - ARRI
* [X] Kevin Wheatley (_TSC_) - Framestore
Apologies:
* Thomas Mansencal
# **OCIO Configs Working Group Meeting Notes**
* Include skeleton API for missing building transforms in v2.0.0? Need to make
call on CY2021 ABI compatibility for VFX ref platform. If not may need to
expose transform internals in config:
- Michael: Following up from TSC meeting discussion. Options put on the
table: Add stubs for missing transforms? Switch to a minor version range
in CY2021?
- Decision: Back out of requested VFX ref platform change. Stick with 2.0.x
for CY2021 and move forward with any needed minor version updates
throughout the year. ACES 1.3 support won't arrive until CY2022, and the
ACES config will use verbose color space definitions instead of Builtin
transforms in some places, but in performance and functionality will be
equivalent. We will attempt to maintain ABI compatibility for initial
minor version releases for users who want to drop newer versions into
CY2021 DCCs. There are some algorithms (e.g. PQ) that need to be added to
core lib to support LUT-free ACES config. AD will submit PR with these
additions this week for the v2.0.0 release next week.
- Other proposed plans would have worked, but the group determined it
would be better to strictly follow semver and not make a rash
decision based solely on getting the changes into VFX ref platform.
As Sean put it: "Feels like the cart driving the horse". The agreed
upon resolution permits completion of the ACES reference
(and studio) configs and gives us a year to polish the v2 features
for CY2022. DCCs likely won't have v2 support until near mid year
anyway, and studios will likely delay further beyond that.
* Make decision on config generation code direction:
- Michael: Propose we stick with current code in repo. Refinements can be
contributed via PR if needed.
- Mark and group: Go for it.
- Sean: Will there be artifacts via CI? Biggest buffer to people not caring
about code.
- Mark: Discussed artifacts and versioning earlier. Still plan to provide
artifacts.
- Michael: Yes, Thomas add CI setup which can be extended to support that.
* Spreadsheet questions ACES feedback:
- Michael: Open questions are related to inclusion of ACESproxy and the
DCDM output transforms. Scott suggested they not be included by email,
but we can discuss here to confirm a decision.
- Carol: Get rid of them if ACES doesn't want them.
- Scott: Better way to do DCDM than the transforms. Leave them out.
- Michael: Same about ACESproxy?
- Doug: Clipped integer version of ACEScc. Not sure why needed in OCIO.
- Scott: Not sure of many using ACESproxy at all.
- Group agrees to exclude these. Set to "excluded" in spreadsheet.
- Carol: In first version, get people to speak up if they miss it.
- Michael: Anything else?
- Sean: Why only Sony Venice included?
- Doug: Other Sony transforms in CSC section further up.
- Carol: There isn't CSC of new Sony Venice IDTs yet.
* Un-tonemapped view naming:
- Doug: Discussion about needing another view (un-tone-mapped) in config.
Trying to come up with name: Source colors, scene referred colors,
textures, colorimetry, colorimetric view, un-ton-mapped, no tone-map,
identity tone-map, identity view, 1:1, flat...
- Decision: Group agrees on "un-tone-mapped" since it is explicit and
clear. It may be confusing to users not familiar with color science, but
it is better to have something clear to config authors, and a good
learning opportunity for others. Also the term used by ACES.
* Review of ACES Output Transform prototype:
- Doug demos how to implement output transform with current OCIO v2 state.
Breaking down transforms needed to create ODT, which in the future will
be defined in a builtin transform via C++.
- Doug: Clamps around ACES primary change prevent negative values from
becoming large positives due to matrix. In testing that, noticed that
some ACES output transforms generate black in unexpected places. Tested
synthetic chart with camera log space. Values going through power
function to infinity. Builtin functions for CSC log transforms will send
large input values (outside 0-1) to infinity on output. Is that ok? Or
should we clamp to large positive value? Often implemented with LUTs
where infinity won't occur. Implemented here with LogCameraTransform, so
exact math. Value greater than one could give infinity.
- Mark: Think infinity fine in that context. Doing the right thing.
- Doug: Downside is for synthetic chart image, with RGB inf,inf,inf one
channel will become negative and get mapped to NaN (Inf - Inf) when going
through a matrix. Since NaN typically maps to zero, it's possible that
extremely bright values map to black on display.
- Mark: Don't think would be problem. The formula should do what it does.
We understand floating point limitations and are used to hitting them,
so not crazy to expect same behavior here. Would be weird to do something
different.
@@ -69,7 +69,7 @@ Attendees:
- Alexa: Better to link to DCC vendors own guides.
- Michael: There is some of that on the site now in the Compatible Software
page, which was updated recently:
[Compatible Software](https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/master/docs/CompatibleSoftware.rst)
[Compatible Software](https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/main/docs/CompatibleSoftware.rst)
- Carol: Tricky to know which vendors to include tutorials for.
- Alexa: Could be better to explain the config, and what each part means.
It's difficult to find everything right now.
@@ -30,7 +30,7 @@ Recording on Zoom cloud:
- Mark: Is ociocheck crashing for anyone?
- Doug: We will look into it.
- *UPDATE:* We tested this and it is working. We found a case where illegal
(too long) spi1d LUTs caused a crash in master. These LUTs were not flagged as
(too long) spi1d LUTs caused a crash in main. These LUTs were not flagged as
being illegal in OCIO v1 and would have had incorrect results.
**STRING UTILS**
@@ -218,7 +218,7 @@ discussion about the questions raised.
**GENERAL DISCUSSION**
- Mark: I was testing master and found that role names are now
- Mark: I was testing main and found that role names are now
case-sensitive. This is a change from OCIO v1.
- Doug: Are we agreed we want case-insensitive behavior? Same for color
spaces too? Group agreed.
+3 -2
View File
@@ -1,8 +1,9 @@
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
<!-- Copyright Contributors to the OpenColorIO Project. -->
**Version 2.0.0 (unreleased):**
* Renamed sanityCheck() method to validate()
This file documents releases up to 1.1.1. For a description of version 2.0 and later
please refer to the Releases page on GitHub:
https://github.com/AcademySoftwareFoundation/OpenColorIO/releases
**Version 1.1.1 (April 2 2019):**
* Added optional compatibility for building apps with OpenImageIO 1.9+
+85 -17
View File
@@ -28,17 +28,30 @@ endif()
# Project definition.
project(OpenColorIO
VERSION 2.0.0
VERSION 2.2.0
DESCRIPTION "OpenColorIO (OCIO) is a complete color management solution"
HOMEPAGE_URL https://github.com/AcademySoftwareFoundation/OpenColorIO
LANGUAGES CXX C)
# "dev", "beta1", rc1", etc or "" for an official release.
set(OpenColorIO_VERSION_RELEASE_TYPE "rc1")
set(OpenColorIO_VERSION_RELEASE_TYPE "")
###############################################################################
# ctest
# To correctly generate the DartConfiguration.tcl, include the CTest CMake file.
# By doing so 'ctest -F memcheck' works.
include (CTest)
enable_testing()
###############################################################################
# Provides install directory variables as defined by the GNU Coding Standards.
include(GNUInstallDirs)
###############################################################################
# Forbid in-source build.
@@ -109,6 +122,7 @@ include(CppVersion)
option(BUILD_SHARED_LIBS "Set to OFF to build static libraries" ON)
option(OCIO_BUILD_APPS "Set to OFF to disable command-line apps" ON)
option(OCIO_BUILD_OPENFX "Specify whether to build OpenFX plugins" OFF)
option(OCIO_BUILD_NUKE "Specify whether to build nuke plugins" OFF)
option(OCIO_BUILD_TESTS "Specify whether to build unittests" ON)
option(OCIO_BUILD_GPU_TESTS "Specify whether to build gpu unittests" ON)
@@ -118,23 +132,24 @@ option(OCIO_BUILD_FROZEN_DOCS "Specify whether to build frozen documentation, ne
option(OCIO_BUILD_DOCS "Specify whether to build documentation" ${OCIO_BUILD_FROZEN_DOCS})
option(OCIO_BUILD_PYTHON "Specify whether to build python bindings" ON)
set (OCIO_PYTHON_VERSION "" CACHE STRING
"Preferred Python version (if any) in case multiple are available")
option(OCIO_BUILD_JAVA "Specify whether to build java bindings" OFF)
option(OCIO_WARNING_AS_ERROR "Set build error level for CI testing" OFF)
if (WIN32)
option(OCIO_USE_WINDOWS_UNICODE "Compile with Windows Unicode support" ON)
endif()
###############################################################################
# Optimization / internal linking preferences
option(OCIO_USE_SSE "Specify whether to enable SSE CPU performance optimizations" ON)
option(OCIO_INLINES_HIDDEN "Specify whether to build with -fvisibility-inlines-hidden" ${UNIX})
###############################################################################
# Supplemental builtins
# Add supplemental built-in transformations such as camera related one.
option(OCIO_ADD_EXTRA_BUILTINS "Specify whether to add supplemental built-in transforms" ON)
option(OCIO_USE_OIIO_CMAKE_CONFIG "Specify whether to look for OIIO using the generated CMake Config script instead of the custom FindOpenImageIO.cmake script" OFF)
option(OCIO_USE_OIIO_FOR_APPS "Request OIIO to build apps (ociolutimage, ocioconvert and ociodisplay), the default uses OpenEXR." OFF)
###############################################################################
@@ -192,12 +207,12 @@ endif()
if(NOT DEFINED OCIO_NAMESPACE)
set(OCIO_NAMESPACE "OpenColorIO_v${OpenColorIO_VERSION_MAJOR}_${OpenColorIO_VERSION_MINOR}${OpenColorIO_VERSION_RELEASE_TYPE}" CACHE STRING
"Specify the master OCIO C++ namespace: Options include OpenColorIO OpenColorIO_<YOURFACILITY> etc.")
"Specify the main OCIO C++ namespace: Options include OpenColorIO OpenColorIO_<YOURFACILITY> etc.")
elseif(OCIO_NAMESPACE STREQUAL "")
message(FATAL_ERROR "A namespace cannot be empty.")
else()
set(OCIO_NAMESPACE "OpenColorIO_${OCIO_NAMESPACE}_v${OpenColorIO_VERSION_MAJOR}_${OpenColorIO_VERSION_MINOR}${OpenColorIO_VERSION_RELEASE_TYPE}" CACHE STRING
"Specify the master OCIO C++ namespace: Options include OpenColorIO OpenColorIO_<YOURFACILITY> etc.")
"Specify the main OCIO C++ namespace: Options include OpenColorIO OpenColorIO_<YOURFACILITY> etc.")
message(STATUS "Setting namespace to '${OCIO_NAMESPACE}' as none was specified.")
endif()
@@ -249,11 +264,64 @@ include(FindExtPackages)
###############################################################################
# Progress to other sources
add_subdirectory(ext)
add_subdirectory(include)
add_subdirectory(src)
add_subdirectory(tests)
add_subdirectory(vendor)
if(OCIO_BUILD_DOCS)
add_subdirectory(docs)
endif()
add_subdirectory(vendor)
add_subdirectory(tests)
add_subdirectory(src)
add_subdirectory(ext)
###############################################################################
# Configure env script
if(WIN32)
set(OCIO_SETUP_NAME setup_ocio.bat)
else()
set(OCIO_SETUP_NAME setup_ocio.sh)
endif()
configure_file(${CMAKE_SOURCE_DIR}/share/ocio/${OCIO_SETUP_NAME}.in
${CMAKE_CURRENT_BINARY_DIR}/share/ocio/${OCIO_SETUP_NAME} @ONLY)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/share/ocio/${OCIO_SETUP_NAME} DESTINATION ${CMAKE_INSTALL_DATADIR}/ocio/)
###############################################################################
# Generate OpenColorIO-config.cmake
# Targets exported to ${PROJECT_NAME}_EXPORTED_TARGETS will be available for
# import using find_package(OpenColorIO).
include(CMakePackageConfigHelpers)
set(OCIO_TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets.cmake")
set(OCIO_VERSION_CONFIG "${CMAKE_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake")
set(OCIO_PROJECT_CONFIG "${CMAKE_BINARY_DIR}/${PROJECT_NAME}Config.cmake")
set(OCIO_CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
# Version fetched from the top level project()
write_basic_package_version_file(
${OCIO_VERSION_CONFIG}
# Version range supported only if generated by CMake 3.19.2 or newer.
COMPATIBILITY SameMajorVersion
)
configure_package_config_file(
${CMAKE_CURRENT_LIST_DIR}/src/cmake/Config.cmake.in ${OCIO_PROJECT_CONFIG}
INSTALL_DESTINATION ${OCIO_CONFIG_INSTALL_DIR}
NO_SET_AND_CHECK_MACRO
NO_CHECK_REQUIRED_COMPONENTS_MACRO
)
install(
EXPORT ${PROJECT_NAME}_EXPORTED_TARGETS
DESTINATION ${OCIO_CONFIG_INSTALL_DIR}
NAMESPACE ${PROJECT_NAME}::
FILE ${OCIO_TARGETS_EXPORT_NAME}
)
install(
FILES "${OCIO_PROJECT_CONFIG}" "${OCIO_VERSION_CONFIG}"
DESTINATION "${OCIO_CONFIG_INSTALL_DIR}"
)
+1
View File
@@ -19,3 +19,4 @@ The current OpenColorIO Committers are:
| Cottalango Leon | @loorthu
| Doug Walker | @doug-walker |
| Kevin Wheatley | @KevinJW |
| Rémi Achard | @remia |
+9 -9
View File
@@ -91,7 +91,7 @@ can be merged.
[Corporate Contributor Licence Agreement](https://docs.linuxfoundation.org/lfx/easycla/contributors/corporate-contributor).
The OCIO CLA's are the standard forms used by Linux Foundation projects and
[recommended by the ASWF TAC](https://github.com/AcademySoftwareFoundation/tac/blob/master/process/contributing.md#contributor-license-agreement-cla).
[recommended by the ASWF TAC](https://github.com/AcademySoftwareFoundation/tac/blob/main/process/contributing.md#contributor-license-agreement-cla).
### Commit Sign-Off
@@ -113,7 +113,7 @@ can be merged. Otherwise the EasyCLA system will provide instructions on
signing a CLA, or request inclusion in an existing corporate CLA approved list.
See the
[ASWF TAC CONTRIBUTING.md](https://github.com/AcademySoftwareFoundation/tac/blob/master/process/contributing.md#contribution-sign-off)
[ASWF TAC CONTRIBUTING.md](https://github.com/AcademySoftwareFoundation/tac/blob/main/process/contributing.md#contribution-sign-off)
file for more information on this requirement.
### Copyright Notices
@@ -161,15 +161,15 @@ You are now ready to contribute.
The OpenColorIO repository has a relatively straight-forward structure, and a
simple branching and merging strategy.
All development work is done directly on the master branch. This represents the
All development work is done directly on the main branch. This represents the
bleeding-edge of the project and any contributions should be done on top of it.
After sufficient work is done on the master branch and OCIO leadership
After sufficient work is done on the main branch and OCIO leadership
determines that a release is due, we will bump the relevant internal versioning
and tag a commit with the corresponding version number, e.g. v2.0.1. Each Minor
version also has its own “Release Branch”, e.g. RB-1.1. This marks a branch of
code dedicated to that Major.Minor version, which allows upstream bug fixes to
be cherry-picked to a given version while still allowing the master branch to
be cherry-picked to a given version while still allowing the main branch to
continue forward onto higher versions. This basic repository structure keeps
maintenance low, while remaining simple to understand.
@@ -183,7 +183,7 @@ Please review [PROCESS.md](PROCESS.md) for important procedures related to
making changes to OpenColorIO. Small bug fixes and documentation changes can be
more informal, but modifications to core OpenColorIO functionality MUST follow
the
[Core Library Changes](https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/master/PROCESS.md#Core-Library-Changes) process.
[Core Library Changes](https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/main/PROCESS.md#Core-Library-Changes) process.
The development cycle for a code change should follow this protocol:
@@ -210,9 +210,9 @@ who may discuss, offer constructive feedback, request changes, or approve
the work.
7. Upon receiving the required number of Committer approvals (as outlined in
[Required Approvals](https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/master/PROCESS.md#Required-Approvals)),
[Required Approvals](https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/main/PROCESS.md#Required-Approvals)),
a Committer other than the PR contributor may squash and merge changes into the
master branch.
main branch.
See also (from the OCIO Developer Guide):
* [Getting started](http://opencolorio.org/developers/getting_started.html)
@@ -254,7 +254,7 @@ version with three numbers: Major.Minor.Patch, where:
## Creating a Release
To create a new release from the master branch:
To create a new release from the main branch:
1. Update the release notes in ``CHANGELOG.md`` with a high-level summary of
the features and improvements. Also include the summary in the Release
+3 -2
View File
@@ -107,15 +107,16 @@ project at all ASWF TAC meetings.
### TSC Leaders
* Chair: Michael Dolan
* Chair: Carol Payne
* Chief Architect: Doug Walker
* ACES TAC Rep: Sean Cooper
### TSC Members
* Rémi Achard - DNEG
* Mark Boorer - Industrial Light & Magic
* Mei Chu - Sony Pictures Imageworks
* Sean Cooper - DNEG
* Sean Cooper - ARRI
* Michael Dolan - Epic Games
* Patrick Hodoul - Autodesk
* Carol Payne - Netflix
+8
View File
@@ -0,0 +1,8 @@
include LICENSE
graft docs
graft ext
graft include
graft share
graft src
graft tests
global-include CMakeLists.txt *.cmake *.md
+1 -1
View File
@@ -28,7 +28,7 @@ across the project so are treated as core changes.
[ocio-dev](https://lists.aswf.io/g/ocio-dev), but are ultimately brought to a
TSC meeting where consensus can be reached around the proposal's relevance
and approach. TSC meetings are public and meeting notes are posted to the
[OCIO repo](https://github.com/AcademySoftwareFoundation/OpenColorIO/tree/master/ASWF/meetings/tsc)
[OCIO repo](https://github.com/AcademySoftwareFoundation/OpenColorIO/tree/main/ASWF/meetings/tsc)
within days of a meeting for a permanent record of decisions.
2. Following acceptance of the proposal by the TSC, an issue is created in
GitHub to present a design proposal. A period of further community
+3 -2
View File
@@ -10,6 +10,7 @@ OpenColorIO
[![Analysis Status](https://github.com/AcademySoftwareFoundation/OpenColorIO/workflows/Analysis/badge.svg)](https://github.com/AcademySoftwareFoundation/OpenColorIO/actions?query=workflow%3AAnalysis)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=AcademySoftwareFoundation_OpenColorIO&metric=alert_status)](https://sonarcloud.io/dashboard?id=AcademySoftwareFoundation_OpenColorIO)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/2612/badge)](https://bestpractices.coreinfrastructure.org/projects/2612)
[![Wheels](https://github.com/AcademySoftwareFoundation/OpenColorIO/workflows/Wheel/badge.svg)](https://github.com/AcademySoftwareFoundation/OpenColorIO/actions?query=workflow%3AWheel)
Introduction
------------
@@ -28,13 +29,13 @@ 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 1.0 and has been in development since 2003.
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](https://opencolorio.org/CompatibleSoftware.html).
[others](https://opencolorio.org/#supported_apps).
OpenColorIO is free and open source software ([LICENSE](LICENSE)), and
one of several projects actvively sponsored by the ASWF
+66 -26
View File
@@ -9,32 +9,6 @@ In no particular order:
---------------------------------------------------------------------
MD5, courtesy of L. Peter Deutsch, Aladdin Enterprises.
http://sourceforge.net/projects/libmd5-rfc/files/
Copyright (C) 1999, 2002 Aladdin Enterprises. All rights reserved.
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
L. Peter Deutsch
ghost@aladdin.com
---------------------------------------------------------------------
argparse, courtesy of OpenImageIO and Larry Gritz
http://openimageio.org
@@ -192,4 +166,70 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---------------------------------------------------------------------
OpenFX Support Library, courtesy of The Open Effects Association Ltd.
http://openeffects.org/
Software License :
Copyright (c) 2004-2007, The Open Effects Association Ltd. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name The Open Effects Association Ltd, nor the names of its
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The Open Effects Association Ltd
1 Wardour St
London W1D 6PA
England
---------------------------------------------------------------------
xxHash Library
Copyright (c) 2012-2021 Yann Collet
All rights reserved.
BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php)
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---------------------------------------------------------------------
If we have left anything out, it is unintentional. Please let us know.
+1 -1
View File
@@ -1301,7 +1301,7 @@ CHM_FILE =
HHC_LOCATION =
# The GENERATE_CHI flag controls if a separate .chi index file is generated
# (YES) or that it should be included in the master .chm file (NO).
# (YES) or that it should be included in the main .chm file (NO).
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+21
View File
@@ -121,6 +121,27 @@ External Plugins (currently known)::
this is a 1D HDR to LDR allocation. It is normally combined with
another display transform in the host app for preview.
.. data:: PyOpenColorIO.ROLE_RENDERING
The rendering role may be used to identify a specific color space to be
used by CGI renderers. This is typically a scene-linear space but the
primaries also matter since they influence the resulting color, especially
in areas of indirect illumination.
.. data:: PyOpenColorIO.ROLE_INTERCHANGE_SCENE
The aces_interchange role is used to specify which color space in the
config implements the standard ACES2065-1 color space (SMPTE ST2065-1).
This may be used when converting scene-referred colors from one config
to another.
.. data:: PyOpenColorIO.ROLE_INTERCHANGE_DISPLAY
The cie_xyz_d65_interchange role is used to specify which color space in
the config implements CIE XYZ colorimetry with the neutral axis at D65.
This may be used when converting display-referred colors from one config
to another.
.. group-tab:: C++
.. doxygengroup:: VarsRoles
@@ -31,3 +31,7 @@
:module: PyOpenColorIO
:value: <Allocation.ALLOCATION_UNKNOWN: 0>
.. py:property:: Allocation.value
:module: PyOpenColorIO
@@ -19,10 +19,6 @@
2. __init__(self: PyOpenColorIO.AllocationTransform, allocation: PyOpenColorIO.Allocation = <Allocation.ALLOCATION_UNIFORM: 1>, vars: List[float] = [], direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: AllocationTransform.__str__(self: PyOpenColorIO.AllocationTransform) -> str
:module: PyOpenColorIO
.. py:method:: AllocationTransform.getAllocation(self: PyOpenColorIO.AllocationTransform) -> PyOpenColorIO.Allocation
:module: PyOpenColorIO
+21 -3
View File
@@ -61,6 +61,10 @@
:module: PyOpenColorIO
.. py:method:: Baker.getDisplay(self: PyOpenColorIO.Baker) -> str
:module: PyOpenColorIO
.. py:method:: Baker.getFormat(self: PyOpenColorIO.Baker) -> str
:module: PyOpenColorIO
@@ -94,6 +98,10 @@
:module: PyOpenColorIO
.. py:method:: Baker.getView(self: PyOpenColorIO.Baker) -> str
:module: PyOpenColorIO
.. py:method:: Baker.setConfig(self: PyOpenColorIO.Baker, config: PyOpenColorIO.Config) -> None
:module: PyOpenColorIO
@@ -103,7 +111,13 @@
.. py:method:: Baker.setCubeSize(self: PyOpenColorIO.Baker, cubeSize: int) -> None
:module: PyOpenColorIO
Override the default cube sample size. default: <format specific>="">
Override the main LUT (3d or 1d) sample size. Default value is -1, which allows each format to use its own most appropriate size.
.. py:method:: Baker.setDisplayView(self: PyOpenColorIO.Baker, display: str, view: str) -> None
:module: PyOpenColorIO
Set the display and view to apply during the baking. Must not be used if setTargetSpace is used.
.. py:method:: Baker.setFormat(self: PyOpenColorIO.Baker, formatName: str) -> None
@@ -133,18 +147,22 @@
.. py:method:: Baker.setShaperSpace(self: PyOpenColorIO.Baker, shaperSpace: str) -> None
:module: PyOpenColorIO
Set an *optional* :ref:`ColorSpace` to be used to shape / transfer the input colorspace. This is mostly used to allocate an HDR luminance range into an LDR one. If a shaper space is not explicitly specified, and the file format supports one, the :ref:`ColorSpace` Allocation will be used (not implemented for all formats).
Set an *optional* :ref:`ColorSpace` to shape the incoming values of the LUT. When baking 3DLUT, this will correspond to the 1D shaper used to normalise incoming values to the unit range. When baking 1D LUT, this will be used to determine the input range of the LUT.
.. py:method:: Baker.setTargetSpace(self: PyOpenColorIO.Baker, targetSpace: str) -> None
:module: PyOpenColorIO
Set the target device colorspace for the LUT.
Set the target (i.e., output) color space for the LUT. Must not be used if setDisplayView is used.
.. py:class:: FormatIterator
:module: PyOpenColorIO.Baker
Iterator on LUT baker Formats.
Each item is a tuple containing format name and format extension.
.. py:method:: FormatIterator.__getitem__(self: PyOpenColorIO.Baker.FormatIterator, arg0: int) -> tuple
:module: PyOpenColorIO.Baker
@@ -22,7 +22,7 @@
BIT_DEPTH_UINT16 :
BIT_DEPTH_UINT32 :
BIT_DEPTH_UINT32 : Here for historical reason but that's not supported.
BIT_DEPTH_F16 :
@@ -75,3 +75,7 @@
:module: PyOpenColorIO
:value: <BitDepth.BIT_DEPTH_UNKNOWN: 0>
.. py:property:: BitDepth.value
:module: PyOpenColorIO
@@ -19,10 +19,6 @@
2. __init__(self: PyOpenColorIO.BuiltinTransform, style: str = 'IDENTITY', direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: BuiltinTransform.__str__(self: PyOpenColorIO.BuiltinTransform) -> str
:module: PyOpenColorIO
.. py:method:: BuiltinTransform.getDescription(self: PyOpenColorIO.BuiltinTransform) -> str
:module: PyOpenColorIO
@@ -31,3 +31,7 @@
:module: PyOpenColorIO
:value: <CDLStyle.CDL_NO_CLAMP: 1>
.. py:property:: CDLStyle.value
:module: PyOpenColorIO
@@ -8,6 +8,10 @@
An implementation of the ASC Color Decision List (CDL), based on the ASC v1.2 specification.
**ASC_SOP**
Slope, offset, power:: out = clamp( (in * slope) + offset ) ^ power
.. note::
​ If the config version is 1, negative values are clamped if the power is not 1.0. For config version 2 and higher, the negative handling is controlled by the CDL style.
@@ -22,7 +26,7 @@
The cccid can be the ID of a CDL or the index of the CDL (as string). If cccid is NULL or empty the first CDL is returned. The cccid is case-sensitive. The src must be an absolute path reference, no relative directory or envvar resolution is performed. Throws if file does not contain any CDL or if the specified cccid is not found.
.. py:method:: CDLTransform.CreateGroupFromFile(src: str) -> OpenColorIO_v2_0rc1::GroupTransform
.. py:method:: CDLTransform.CreateGroupFromFile(src: str) -> PyOpenColorIO.GroupTransform
:module: PyOpenColorIO
:staticmethod:
@@ -44,10 +48,6 @@
3. __init__(self: PyOpenColorIO.CDLTransform, slope: List[float[3]] = [1.0, 1.0, 1.0], offset: List[float[3]] = [0.0, 0.0, 0.0], power: List[float[3]] = [1.0, 1.0, 1.0], sat: float = 1.0, id: str = '', description: str = '', direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: CDLTransform.__str__(self: PyOpenColorIO.CDLTransform) -> str
:module: PyOpenColorIO
.. py:method:: CDLTransform.equals(self: PyOpenColorIO.CDLTransform, other: PyOpenColorIO.CDLTransform) -> bool
:module: PyOpenColorIO
@@ -47,3 +47,7 @@
:module: PyOpenColorIO
:value: <ChannelOrdering.CHANNEL_ORDERING_RGBA: 0>
.. py:property:: ChannelOrdering.value
:module: PyOpenColorIO
@@ -6,15 +6,9 @@
.. py:class:: ColorSpace
:module: PyOpenColorIO
The *:ref:`ColorSpace`* is the state of an image with respect to colorimetry and color encoding. Transforming images between different *ColorSpaces* is the primary motivation for this library.
.. py:class:: ColorSpace.ColorSpaceAliasIterator
:module: PyOpenColorIO
.. py:method:: ColorSpace.ColorSpaceAliasIterator.__init__(*args, **kwargs)
:module: PyOpenColorIO
Initialize self. See help(type(self)) for accurate signature.
While a complete discussion of color spaces is beyond the scope of header documentation, traditional uses would be to have *ColorSpaces* corresponding to: physical capture devices (known cameras, scanners), and internal 'convenience' spaces (such as scene linear, logarithmic).
.. py:method:: ColorSpace.__init__(*args, **kwargs)
@@ -29,10 +23,6 @@
3. __init__(self: PyOpenColorIO.ColorSpace, referenceSpace: PyOpenColorIO.ReferenceSpaceType = <ReferenceSpaceType.REFERENCE_SPACE_SCENE: 0>, name: str = '', aliases: List[str] = [], family: str = '', encoding: str = '', equalityGroup: str = '', description: str = '', bitDepth: PyOpenColorIO.BitDepth = <BitDepth.BIT_DEPTH_UNKNOWN: 0>, isData: bool = False, allocation: PyOpenColorIO.Allocation = <Allocation.ALLOCATION_UNIFORM: 1>, allocationVars: List[float] = [], toReference: PyOpenColorIO.Transform = None, fromReference: PyOpenColorIO.Transform = None, categories: List[str] = []) -> None
.. py:method:: ColorSpace.__str__(self: PyOpenColorIO.ColorSpace) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpace.addAlias(self: PyOpenColorIO.ColorSpace, alias: str) -> None
:module: PyOpenColorIO
@@ -65,6 +55,10 @@
.. py:method:: ColorSpace.getAllocation(self: PyOpenColorIO.ColorSpace) -> PyOpenColorIO.Allocation
:module: PyOpenColorIO
*Allocation*
If this colorspace needs to be transferred to a limited dynamic range coding space (such as during display with a GPU path), use this allocation to maximize bit efficiency.
.. py:method:: ColorSpace.getAllocationVars(self: PyOpenColorIO.ColorSpace) -> List[float]
:module: PyOpenColorIO
@@ -85,11 +79,23 @@
.. py:method:: ColorSpace.getEncoding(self: PyOpenColorIO.ColorSpace) -> str
:module: PyOpenColorIO
*Encodings*
It is sometimes useful for applications to group color spaces based on how the color values are digitally encoded. For example, images in scene-linear, logarithmic, video, and data color spaces could have different default views. Unlike the Family and EqualityGroup attributes of a color space, the list of Encodings is predefined in the OCIO documentation (rather than being config-specific) to make it easier for applications to utilize.
Here is an example config entry that could appear under a :ref:`ColorSpace`:
.. code-block:: cpp
encoding: scene-linear
Encoding strings are not case-sensitive. Although users may add their own encodings, the strings will typically come from a fixed set listed in the documentation (similar to roles).
.. py:method:: ColorSpace.getEqualityGroup(self: PyOpenColorIO.ColorSpace) -> str
:module: PyOpenColorIO
Get the :ref:`ColorSpace` group name (used for equality comparisons) This allows no-op transforms between different colorspaces. If an equalityGroup is not defined (an empty string), it will be considered unique (i.e., it will not compare as equal to other ColorSpaces with an empty equality group). This is often, though not always, set to the same value as 'family'.
Get the :ref:`ColorSpace` group name (used for equality comparisons) This allows no-op transforms between different colorspaces. If an equalityGroup is not defined (an empty string), it will be considered unique (i.e., it will not compare as equal to other ColorSpaces with an empty equality group).
.. py:method:: ColorSpace.getFamily(self: PyOpenColorIO.ColorSpace) -> str
@@ -111,6 +117,8 @@
.. py:method:: ColorSpace.getTransform(self: PyOpenColorIO.ColorSpace, direction: PyOpenColorIO.ColorSpaceDirection) -> PyOpenColorIO.Transform
:module: PyOpenColorIO
*:ref:`Transform`*
If a transform in the specified direction has been specified, return it. Otherwise return a null ConstTransformRcPtr
@@ -119,10 +127,31 @@
Return true if the category is present.
A category is used to allow applications to filter the list of color spaces they display in menus based on what that color space is used for.
Here is an example config entry that could appear under a :ref:`ColorSpace`:
.. code-block:: cpp
categories: [ file-io, working-space, basic-3d ]
The example contains three categories: 'file-io', 'working-space' and 'basic-3d'.
.. note::
Category strings are not case-sensitive and the order is not significant.
There is no limit imposed on length or number. Although users may add their own categories, the strings will typically come from a fixed set listed in the documentation (similar to roles).
.. py:method:: ColorSpace.isData(self: PyOpenColorIO.ColorSpace) -> bool
:module: PyOpenColorIO
*Data*
ColorSpaces that are data are treated a bit special. Basically, any colorspace transforms you try to apply to them are ignored. (Think of applying a gamut mapping transform to an ID pass). However, the setDataBypass method on :ref:`ColorSpaceTransform` and :ref:`DisplayViewTransform` allow applications to process data when necessary. (Think of sending mattes to an HDR monitor.)
This is traditionally used for pixel data that represents non-color pixel data, such as normals, point positions, ID information, etc.
.. py:method:: ColorSpace.removeAlias(self: PyOpenColorIO.ColorSpace, alias: str) -> None
:module: PyOpenColorIO
@@ -204,3 +233,23 @@
.. py:method:: ColorSpaceCategoryIterator.__next__(self: PyOpenColorIO.ColorSpace.ColorSpaceCategoryIterator) -> str
:module: PyOpenColorIO.ColorSpace
.. py:class:: ColorSpaceAliasIterator
:module: PyOpenColorIO.ColorSpace
.. py:method:: ColorSpaceAliasIterator.__getitem__(self: PyOpenColorIO.ColorSpace.ColorSpaceAliasIterator, arg0: int) -> str
:module: PyOpenColorIO.ColorSpace
.. py:method:: ColorSpaceAliasIterator.__iter__(self: PyOpenColorIO.ColorSpace.ColorSpaceAliasIterator) -> PyOpenColorIO.ColorSpace.ColorSpaceAliasIterator
:module: PyOpenColorIO.ColorSpace
.. py:method:: ColorSpaceAliasIterator.__len__(self: PyOpenColorIO.ColorSpace.ColorSpaceAliasIterator) -> int
:module: PyOpenColorIO.ColorSpace
.. py:method:: ColorSpaceAliasIterator.__next__(self: PyOpenColorIO.ColorSpace.ColorSpaceAliasIterator) -> str
:module: PyOpenColorIO.ColorSpace
@@ -24,3 +24,7 @@
:module: PyOpenColorIO
:value: <ColorSpaceDirection.COLORSPACE_DIR_TO_REFERENCE: 0>
.. py:property:: ColorSpaceDirection.value
:module: PyOpenColorIO
@@ -19,10 +19,6 @@
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuHelper.__str__(self: PyOpenColorIO.ColorSpaceMenuHelper) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuHelper.getDescription(self: PyOpenColorIO.ColorSpaceMenuHelper, index: int) -> str
:module: PyOpenColorIO
@@ -31,7 +27,7 @@
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuHelper.getHierarchyLevels(self: PyOpenColorIO.ColorSpaceMenuHelper, index: int) -> OpenColorIO_v2_0rc1::PyIterator<std::shared_ptr<OpenColorIO_v2_0rc1::ColorSpaceMenuHelper>,0,unsigned __int64>
.. py:method:: ColorSpaceMenuHelper.getHierarchyLevels(self: PyOpenColorIO.ColorSpaceMenuHelper, index: int) -> PyOpenColorIO.ColorSpaceMenuHelper.ColorSpaceLevelIterator
:module: PyOpenColorIO
@@ -46,16 +46,6 @@
5) If AddColorSpace has been used to add any additional items, these are appended to the final list.
.. py:class:: ColorSpaceMenuParameters.AddedColorSpaceIterator
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.AddedColorSpaceIterator.__init__(*args, **kwargs)
:module: PyOpenColorIO
Initialize self. See help(type(self)) for accurate signature.
.. py:method:: ColorSpaceMenuParameters.__init__(*args, **kwargs)
:module: PyOpenColorIO
@@ -66,10 +56,6 @@
2. __init__(self: PyOpenColorIO.ColorSpaceMenuParameters, config: PyOpenColorIO.Config, role: str = '', includeColorSpaces: bool = True, searchReferenceSpaceType: PyOpenColorIO.SearchReferenceSpaceType = <SearchReferenceSpaceType.SEARCH_REFERENCE_SPACE_ALL: 2>, includeNamedTransforms: bool = False, appCategories: str = '', encodings: str = '', userCategories: str = '', includeRoles: bool = False) -> None
.. py:method:: ColorSpaceMenuParameters.__str__(self: PyOpenColorIO.ColorSpaceMenuParameters) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.addColorSpace(self: PyOpenColorIO.ColorSpaceMenuParameters, colorSpace: str) -> None
:module: PyOpenColorIO
@@ -85,7 +71,7 @@
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.getAddedColorSpaces(self: PyOpenColorIO.ColorSpaceMenuParameters) -> OpenColorIO_v2_0rc1::PyIterator<std::shared_ptr<OpenColorIO_v2_0rc1::ColorSpaceMenuParameters>,0>
.. py:method:: ColorSpaceMenuParameters.getAddedColorSpaces(self: PyOpenColorIO.ColorSpaceMenuParameters) -> PyOpenColorIO.ColorSpaceMenuParameters.AddedColorSpaceIterator
:module: PyOpenColorIO
@@ -6,10 +6,10 @@
.. py:class:: ColorSpaceSet
:module: PyOpenColorIO
The *:ref:`ColorSpaceSet`* is a set of color spaces (i.e. no color space duplication) which could be the result of :cpp:func:`:ref:`Config::getColorSpaces`` or built from scratch.
The *:ref:`ColorSpaceSet`* is a set of color spaces (i.e. no color space duplication) which could be the result of :ref:`Config::getColorSpaces` or built from scratch.
.. note::
The color spaces are decoupled from the config ones, i.e., any changes to the set itself or to its color spaces do not affect the original color spaces from the configuration. If needed, use :cpp:func:`:ref:`Config::addColorSpace`` to update the configuration.
The color spaces are decoupled from the config ones, i.e., any changes to the set itself or to its color spaces do not affect the original color spaces from the configuration. If needed, use :ref:`Config::addColorSpace` to update the configuration.
.. py:method:: ColorSpaceSet.__and__(self: PyOpenColorIO.ColorSpaceSet, arg0: PyOpenColorIO.ColorSpaceSet) -> PyOpenColorIO.ColorSpaceSet
@@ -17,7 +17,6 @@
Perform the intersection of two sets.
.. note::
This function provides operations on two color space sets where the result contains copied color spaces and no duplicates.
@@ -30,7 +29,6 @@
Return true if the two sets are equal.
.. note::
The comparison is done on the color space names (not a deep comparison).
@@ -52,7 +50,6 @@
Perform the union of two sets.
.. note::
This function provides operations on two color space sets where the result contains copied color spaces and no duplicates.
@@ -65,7 +62,6 @@
Perform the difference of two sets.
.. note::
This function provides operations on two color space sets where the result contains copied color spaces and no duplicates.
@@ -78,7 +74,6 @@
Add color space(s).
.. note::
If another color space is already registered with the same name, this will overwrite it. This stores a copy of the specified color space(s). Throws if one of the aliases is already assigned as a name or alias to an existing color space.
@@ -115,7 +110,6 @@
Remove color space(s) using color space names (i.e. no role name).
.. note::
The removal of a missing color space does nothing.
@@ -17,10 +17,6 @@
2. __init__(self: PyOpenColorIO.ColorSpaceTransform, src: str = '', dst: str = '', direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>, dataBypass: bool = True) -> None
.. py:method:: ColorSpaceTransform.__str__(self: PyOpenColorIO.ColorSpaceTransform) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpaceTransform.getDataBypass(self: PyOpenColorIO.ColorSpaceTransform) -> bool
:module: PyOpenColorIO
@@ -31,3 +31,7 @@
:module: PyOpenColorIO
:value: <ColorSpaceVisibility.COLORSPACE_INACTIVE: 1>
.. py:property:: ColorSpaceVisibility.value
:module: PyOpenColorIO
+319 -82
View File
@@ -6,6 +6,55 @@
.. py:class:: Config
:module: PyOpenColorIO
A config defines all the color spaces to be available at runtime.
The color configuration (:ref:`Config`) is the main object for interacting with this library. It encapsulates all of the information necessary to use customized :ref:`ColorSpaceTransform` and :ref:`DisplayViewTransform` operations.
See the user-guide for more information on selecting, creating, and working with custom color configurations.
For applications interested in using only one color config at a time (this is the vast majority of apps), their API would traditionally get the global configuration and use that, as opposed to creating a new one. This simplifies the use case for plugins and bindings, as it alleviates the need to pass around configuration handles.
An example of an application where this would not be sufficient would be a multi-threaded image proxy server (daemon), which wished to handle multiple show configurations in a single process concurrently. This app would need to keep multiple configurations alive, and to manage them appropriately.
Roughly speaking, a novice user should select a default configuration that most closely approximates the use case (animation, visual effects, etc.), and set the :envvar:`OCIO` environment variable to point at the root of that configuration.
.. note::
Initialization using environment variables is typically preferable in a multi-app ecosystem, as it allows all applications to be consistently configured.
See developers-usageexamples
.. py:method:: Config.CreateFromBuiltinConfig(arg0: str) -> PyOpenColorIO.Config
:module: PyOpenColorIO
:staticmethod:
Create a configuration using an OCIO built-in config.
:param configName: Built-in config name.
The available configNames are: "cg-config-v0.1.0_aces-v1.3_ocio-v2.1.1"-- ACES CG config, basic color spaces for computer graphics apps. More information about these configs is available at: https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES
Information about the available configs is available from the :ref:`BuiltinConfigRegistry`.
:exception :ref:`Exception`: If the configName is not recognized.
:return: One of the configs built into the OCIO library.
.. py:method:: Config.CreateFromConfigIOProxy(arg0: OpenColorIO_v2_2dev::ConfigIOProxy) -> PyOpenColorIO.Config
:module: PyOpenColorIO
:staticmethod:
Create a config from the supplied :ref:`ConfigIOProxy` object. This allows the calling program to directly provide the config and associated LUTs rather than reading them from the standard file system.
See the :ref:`ConfigIOProxy` class documentation for more info.
:param ciop: :ref:`ConfigIOProxy` object providing access to the config's files.
:exception :ref:`Exception`: If the config may not be read from the proxy, or does not parse.
:return: The :ref:`Config` object.
.. py:method:: Config.CreateFromEnv() -> PyOpenColorIO.Config
:module: PyOpenColorIO
@@ -13,8 +62,9 @@
Create a configuration using the OCIO environment variable.
Also supports the OCIO URI format for Built-in configs and supports archived configs. See :ref:`Config::CreateFromFile`.
If the variable is missing or empty, returns the same result as :ref:`Config::CreateRaw` .
If the variable is missing or empty, returns the same result as :ref:`Config::CreateRaw`. :return: The :ref:`Config` object.
.. py:method:: Config.CreateFromFile(fileName: str) -> PyOpenColorIO.Config
@@ -23,6 +73,14 @@
Create a configuration using a specific config file.
Also supports the following OCIO URI format for Built-in configs: "ocio://default" - Default Built-in config. "ocio://<CONFIG NAME>" - A specific Built-in config. For the list of available <CONFIG NAME> strings, see :ref:`Config::CreateFromBuiltinConfig`.
Also supports archived configs (.ocioz files).
:exception :ref:`Exception`: If the file may not be read or does not parse.
:return: The :ref:`Config` object.
.. py:method:: Config.CreateFromStream(str: str) -> PyOpenColorIO.Config
:module: PyOpenColorIO
@@ -30,6 +88,16 @@
Create a configuration using a stream.
Note that CreateFromStream does not set the working directory so the caller would need to set that separately in order to resolve FileTransforms. This function is typically only used for self-contained configs (no LUTs).
Configs created from CreateFromStream can not be archived unless the working directory is set and contains any necessary LUT files.
:param istream: Stream to the config.
:exception :ref:`Exception`: If the stream does not parse.
:return: The :ref:`Config` object.
.. py:method:: Config.CreateRaw() -> PyOpenColorIO.Config
:module: PyOpenColorIO
@@ -37,8 +105,15 @@
Create a fall-back config.
This may be useful to allow client apps to launch in cases when the supplied config path is not loadable. :return: The :ref:`Config` object.
This may be useful to allow client apps to launch in cases when the supplied config path is not loadable.
.. py:class:: Config.DisplayAllIterator
:module: PyOpenColorIO
.. py:method:: Config.DisplayAllIterator.__init__(*args, **kwargs)
:module: PyOpenColorIO
.. py:method:: Config.GetProcessorFromConfigs(*args, **kwargs)
@@ -47,20 +122,35 @@
Overloaded function.
1. GetProcessorFromConfigs(srcConfig: PyOpenColorIO.Config, srcColorSpaceName: str, dstConfig: PyOpenColorIO.Config, dstColorSpaceName: str) -> OpenColorIO_v2_0rc1::Processor
1. GetProcessorFromConfigs(srcConfig: PyOpenColorIO.Config, srcColorSpaceName: str, dstConfig: PyOpenColorIO.Config, dstColorSpaceName: str) -> PyOpenColorIO.Processor
Get a processor to convert between color spaces in two separate configs.
This relies on both configs having the aces_interchange role (when srcName is scene-referred) or the role cie_xyz_d65_interchange (when srcName is display-referred) defined. An exception is thrown if that is not the case.
2. GetProcessorFromConfigs(srcContext: OpenColorIO_v2_0rc1::Context, srcConfig: PyOpenColorIO.Config, srcColorSpaceName: str, dstContext: OpenColorIO_v2_0rc1::Context, dstConfig: PyOpenColorIO.Config, dstColorSpaceName: str) -> OpenColorIO_v2_0rc1::Processor
2. GetProcessorFromConfigs(srcContext: PyOpenColorIO.Context, srcConfig: PyOpenColorIO.Config, srcColorSpaceName: str, dstContext: PyOpenColorIO.Context, dstConfig: PyOpenColorIO.Config, dstColorSpaceName: str) -> PyOpenColorIO.Processor
3. GetProcessorFromConfigs(srcConfig: PyOpenColorIO.Config, srcColorSpaceName: str, srcInterchangeName: str, dstConfig: PyOpenColorIO.Config, dstColorSpaceName: str, dstInterchangeName: str) -> OpenColorIO_v2_0rc1::Processor
3. GetProcessorFromConfigs(srcConfig: PyOpenColorIO.Config, srcColorSpaceName: str, srcInterchangeName: str, dstConfig: PyOpenColorIO.Config, dstColorSpaceName: str, dstInterchangeName: str) -> PyOpenColorIO.Processor
The srcInterchangeName and dstInterchangeName must refer to a pair of color spaces in the two configs that are the same. A role name may also be used.
4. GetProcessorFromConfigs(srcContext: OpenColorIO_v2_0rc1::Context, srcConfig: PyOpenColorIO.Config, srcColorSpaceName: str, srcInterchangeName: str, dstContext: OpenColorIO_v2_0rc1::Context, dstConfig: PyOpenColorIO.Config, dstColorSpaceName: str, dstInterchangeName: str) -> OpenColorIO_v2_0rc1::Processor
4. GetProcessorFromConfigs(srcContext: PyOpenColorIO.Context, srcConfig: PyOpenColorIO.Config, srcColorSpaceName: str, srcInterchangeName: str, dstContext: PyOpenColorIO.Context, dstConfig: PyOpenColorIO.Config, dstColorSpaceName: str, dstInterchangeName: str) -> PyOpenColorIO.Processor
.. py:class:: Config.ViewForViewTypeIterator
:module: PyOpenColorIO
.. py:method:: Config.ViewForViewTypeIterator.__init__(*args, **kwargs)
:module: PyOpenColorIO
.. py:class:: Config.VirtualViewIterator
:module: PyOpenColorIO
.. py:method:: Config.VirtualViewIterator.__init__(*args, **kwargs)
:module: PyOpenColorIO
.. py:method:: Config.__init__(self: PyOpenColorIO.Config) -> None
@@ -68,20 +158,18 @@
Create an empty config of the current version.
Note that an empty config will not pass validation since required elements will be missing.
Note that an empty config will not pass validation since required elements will be missing. :return: The :ref:`Config` object.
.. py:method:: Config.__str__(self: PyOpenColorIO.Config) -> str
:module: PyOpenColorIO
.. py:method:: Config.addColorSpace(self: PyOpenColorIO.Config, colorSpace: OpenColorIO_v2_0rc1::ColorSpace) -> None
.. py:method:: Config.addColorSpace(self: PyOpenColorIO.Config, colorSpace: PyOpenColorIO.ColorSpace) -> None
:module: PyOpenColorIO
Add a color space to the configuration.
.. note::
If another color space is already present with the same name, this will overwrite it. This stores a copy of the specified color space.
@@ -94,7 +182,6 @@
Add a (reference to a) shared view to a display.
The shared view must be part of the config. See :ref:`Config::addSharedView`
This will throw if:
@@ -122,11 +209,11 @@
Add (or update) an environment variable with a default value. But it removes it if the default value is null.
.. py:method:: Config.addLook(self: PyOpenColorIO.Config, look: OpenColorIO_v2_0rc1::Look) -> None
.. py:method:: Config.addLook(self: PyOpenColorIO.Config, look: PyOpenColorIO.Look) -> None
:module: PyOpenColorIO
.. py:method:: Config.addNamedTransform(self: PyOpenColorIO.Config, namedTransform: OpenColorIO_v2_0rc1::NamedTransform) -> None
.. py:method:: Config.addNamedTransform(self: PyOpenColorIO.Config, namedTransform: PyOpenColorIO.NamedTransform) -> None
:module: PyOpenColorIO
@@ -135,7 +222,6 @@
Add a single search path to the end of the list.
Paths may be either absolute or relative. Relative paths are relative to the working directory. Forward slashes will be normalized to reverse for Windows. Environment (context) variables may be used in paths.
@@ -144,17 +230,48 @@
Will throw if view or colorSpaceName are null or empty.
The following methods only manipulate active displays and views. Active displays and views are defined from an env. variable or from the config file.
.. py:method:: Config.addViewTransform(self: PyOpenColorIO.Config, viewTransform: OpenColorIO_v2_0rc1::ViewTransform) -> None
Looks is a potentially comma (or colon) delimited list of lookNames, Where +/- prefixes are optionally allowed to denote forward/inverse look specification. (And forward is assumed in the absence of either)
Add shared view (or replace existing one with same name). Shared views are defined at config level and can be referenced by several displays. Either provide a view transform and a display color space or just a color space (and a null view transform). Looks, rule and description are optional, they can be null or empty.
Shared views using a view transform may use the token <USE_DISPLAY_NAME> for the color space (see :c:var:`OCIO_VIEW_USE_DISPLAY_NAME`). In that case, when the view is referenced in a display, the display color space that is used will be the one matching the display name. In other words, the view will be customized based on the display it is used in. :ref:`Config::validate` will throw if the config does not contain the matching display color space.
.. py:method:: Config.addViewTransform(self: PyOpenColorIO.Config, viewTransform: PyOpenColorIO.ViewTransform) -> None
:module: PyOpenColorIO
.. py:method:: Config.addVirtualDisplaySharedView(self: PyOpenColorIO.Config, sharedView: str) -> None
:module: PyOpenColorIO
.. py:method:: Config.addVirtualDisplayView(self: PyOpenColorIO.Config, view: str, viewTransformName: str, colorSpaceName: str, looks: str = '', ruleName: str = '', description: str = '') -> None
:module: PyOpenColorIO
.. py:method:: Config.archive(self: PyOpenColorIO.Config, arg0: str) -> None
:module: PyOpenColorIO
Archive the config and its LUTs into the specified output stream.
The config is archived by serializing the :ref:`Config` object into a file named "config.ocio" and then walking through the current working directory and any sub-directories. Any files that have an extension matching a supported LUT file format are added to the archive. Any files that do not have an extension (or have some unsupported LUT extension, including .ocio), will not be added to the archive. To reiterate, it is the in-memory :ref:`Config` object that is archived, and not any .ocio file in the current working directory. The directory structure relative to the working directory is preserved. No files outside the working directory are archived so that if it is later expanded, no files will be created outside the working dir.
The reason the archive is created using all supported LUT file extensions rather than by trying to resolve all the FileTransforms in the :ref:`Config` to specific files is because of the goal to allow context variables to continue to work.
If a :ref:`Config` is created with CreateFromStream, CreateFromFile with an OCIOZ archive, or CreateFromConfigIOProxy, it cannot be archived unless the working directory is manually set to a directory that contains any necessary LUT files.
The provided output stream must be closed by the caller, if necessary (e.g., an ofstream).
:param ostream: The output stream to write to.
.. py:method:: Config.clearColorSpaces(self: PyOpenColorIO.Config) -> None
:module: PyOpenColorIO
Remove all the color spaces from the configuration.
.. note::
Removing color spaces from a :ref:`Config` does not affect any :ref:`ColorSpaceSet` sets that have already been created.
@@ -185,6 +302,12 @@
:module: PyOpenColorIO
.. py:method:: Config.clearVirtualDisplay(self: PyOpenColorIO.Config) -> None
:module: PyOpenColorIO
Clear the virtual display.
.. py:method:: Config.filepathOnlyMatchesDefaultRule(self: PyOpenColorIO.Config, filePath: str) -> bool
:module: PyOpenColorIO
@@ -206,11 +329,19 @@
1. getCacheID(self: PyOpenColorIO.Config) -> str
This will produce a hash of the all colorspace definitions, etc. All external references, such as files used in FileTransforms, etc., will be incorporated into the cacheID. While the contents of the files are not read, the file system is queried for relevant information (mtime, inode) so that the config's cacheID will change when the underlying luts are updated. If a context is not provided, the current :ref:`Context` will be used. If a null context is provided, file references will not be taken into account (this is essentially a hash of :ref:`Config::serialize`).
This will produce a hash of the all colorspace definitions, etc. All external references, such as files used in FileTransforms, etc., will be incorporated into the cacheID. While the contents of the files are not read, the file system is queried for relevant information (mtime, inode) so that the config's cacheID will change when the underlying luts are updated.
2. getCacheID(self: PyOpenColorIO.Config, context: OpenColorIO_v2_0rc1::Context) -> str
If a context is not provided, the current :ref:`Context` will be used.
This will produce a hash of the all colorspace definitions, etc. All external references, such as files used in FileTransforms, etc., will be incorporated into the cacheID. While the contents of the files are not read, the file system is queried for relevant information (mtime, inode) so that the config's cacheID will change when the underlying luts are updated. If a context is not provided, the current :ref:`Context` will be used. If a null context is provided, file references will not be taken into account (this is essentially a hash of :ref:`Config::serialize`).
If a null context is provided, file references will not be taken into account (this is essentially a hash of :ref:`Config::serialize`).
2. getCacheID(self: PyOpenColorIO.Config, context: PyOpenColorIO.Context) -> str
This will produce a hash of the all colorspace definitions, etc. All external references, such as files used in FileTransforms, etc., will be incorporated into the cacheID. While the contents of the files are not read, the file system is queried for relevant information (mtime, inode) so that the config's cacheID will change when the underlying luts are updated.
If a context is not provided, the current :ref:`Context` will be used.
If a null context is provided, file references will not be taken into account (this is essentially a hash of :ref:`Config::serialize`).
.. py:method:: Config.getCanonicalName(self: PyOpenColorIO.Config, name: str) -> str
@@ -219,7 +350,7 @@
Accepts an alias, role name, named transform name, or color space name and returns the color space name or the named transform name.
.. py:method:: Config.getColorSpace(self: PyOpenColorIO.Config, name: str) -> OpenColorIO_v2_0rc1::ColorSpace
.. py:method:: Config.getColorSpace(self: PyOpenColorIO.Config, name: str) -> PyOpenColorIO.ColorSpace
:module: PyOpenColorIO
Get the color space from all the color spaces (i.e. active and inactive) and return null if the name is not found.
@@ -228,18 +359,10 @@
The fcn accepts either a color space name, role name, or alias. (Color space names take precedence over roles.)
.. py:method:: Config.getColorSpaceFromFilepath(*args, **kwargs)
.. py:method:: Config.getColorSpaceFromFilepath(self: PyOpenColorIO.Config, filePath: str) -> tuple
:module: PyOpenColorIO
Overloaded function.
1. getColorSpaceFromFilepath(self: PyOpenColorIO.Config, filePath: str) -> str
Get the color space of the first rule that matched filePath.
2. getColorSpaceFromFilepath(self: PyOpenColorIO.Config, filePath: str, ruleIndex: int) -> str
Get the color space of the first rule that matched filePath.
Get the color space of the first rule that matched filePath. (For v1 configs, this is equivalent to calling parseColorSpaceFromString with strictparsing set to false.)
.. py:method:: Config.getColorSpaceNames(*args, **kwargs)
@@ -257,13 +380,12 @@
Overloaded function.
1. getColorSpaces(self: PyOpenColorIO.Config, category: str) -> OpenColorIO_v2_0rc1::ColorSpaceSet
1. getColorSpaces(self: PyOpenColorIO.Config, category: str) -> PyOpenColorIO.ColorSpaceSet
Get all active color spaces having a specific category in the order they appear in the config file.
.. note::
If the category is null or empty, the method returns all the active color spaces like :cpp:func:`:ref:`Config::getNumColorSpaces`` and :cpp:func:`:ref:`Config::getColorSpaceNameByIndex`` do.
If the category is null or empty, the method returns all the active color spaces like :ref:`Config::getNumColorSpaces` and :ref:`Config::getColorSpaceNameByIndex` do.
.. note::
It's worth noticing that the method returns a copy of the selected color spaces decoupling the result from the config. Hence, any changes on the config do not affect the existing color space sets, and vice-versa.
@@ -273,7 +395,7 @@
3. getColorSpaces(self: PyOpenColorIO.Config) -> PyOpenColorIO.Config.ActiveColorSpaceIterator
.. py:method:: Config.getCurrentContext(self: PyOpenColorIO.Config) -> OpenColorIO_v2_0rc1::Context
.. py:method:: Config.getCurrentContext(self: PyOpenColorIO.Config) -> PyOpenColorIO.Context
:module: PyOpenColorIO
@@ -286,20 +408,25 @@
Get the default coefficients for computing luma.
.. note::
There is no "1 size fits all" set of luma coefficients. (The values are typically different for each colorspace, and the application of them may be nonsensical depending on the intensity coding anyways). Thus, the 'right' answer is to make these functions on the :cpp:class:`:ref:`Config`` class. However, it's often useful to have a config-wide default so here it is. We will add the colorspace specific luma call if/when another client is interesting in using it.
There is no "1 size fits all" set of luma coefficients. (The values are typically different for each colorspace, and the application of them may be nonsensical depending on the intensity coding anyways). Thus, the 'right' answer is to make these functions on the :ref:`ColorSpace` class. However, it's often useful to have a config-wide default so here it is. We will add the colorspace specific luma call if/when another client is interesting in using it.
.. py:method:: Config.getDefaultSceneToDisplayViewTransform(self: PyOpenColorIO.Config) -> OpenColorIO_v2_0rc1::ViewTransform
.. py:method:: Config.getDefaultSceneToDisplayViewTransform(self: PyOpenColorIO.Config) -> PyOpenColorIO.ViewTransform
:module: PyOpenColorIO
This view transform is the one that will be used by default if a :ref:`ColorSpaceTransform` is needed between a scene-referred and display-referred color space. The config author may specify a transform to use via the default_view_transform entry in the config. If that is not present, or does not return a valid view transform from the scene-referred connection space, the fall-back is to use the first valid view transform in the config. Returns a null ConstTransformRcPtr if there isn't one.
.. py:method:: Config.getDefaultView(self: PyOpenColorIO.Config, display: str) -> str
.. py:method:: Config.getDefaultView(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. getDefaultView(self: PyOpenColorIO.Config, display: str) -> str
2. getDefaultView(self: PyOpenColorIO.Config, display: str, colorSpacename: str) -> str
.. py:method:: Config.getDefaultViewTransformName(self: PyOpenColorIO.Config) -> str
:module: PyOpenColorIO
@@ -347,6 +474,10 @@
:module: PyOpenColorIO
.. py:method:: Config.getDisplaysAll(self: PyOpenColorIO.Config) -> PyOpenColorIO.Config.DisplayAllIterator
:module: PyOpenColorIO
.. py:method:: Config.getEnvironmentMode(self: PyOpenColorIO.Config) -> PyOpenColorIO.EnvironmentMode
:module: PyOpenColorIO
@@ -364,11 +495,10 @@
Get the family separator.
A single character used to separate the family string into tokens for use in hierarchical menus. Defaults to '/'.
.. py:method:: Config.getFileRules(self: PyOpenColorIO.Config) -> OpenColorIO_v2_0rc1::FileRules
.. py:method:: Config.getFileRules(self: PyOpenColorIO.Config) -> PyOpenColorIO.FileRules
:module: PyOpenColorIO
Get read-only version of the file rules.
@@ -378,7 +508,7 @@
:module: PyOpenColorIO
.. py:method:: Config.getLook(self: PyOpenColorIO.Config, name: str) -> OpenColorIO_v2_0rc1::Look
.. py:method:: Config.getLook(self: PyOpenColorIO.Config, name: str) -> PyOpenColorIO.Look
:module: PyOpenColorIO
@@ -410,7 +540,7 @@
The name string may be used to communicate config update details or similar information to workflows external to OCIO in cases where the config path/filename itself does not provide adequate information.
.. py:method:: Config.getNamedTransform(self: PyOpenColorIO.Config, name: str) -> OpenColorIO_v2_0rc1::NamedTransform
.. py:method:: Config.getNamedTransform(self: PyOpenColorIO.Config, name: str) -> PyOpenColorIO.NamedTransform
:module: PyOpenColorIO
@@ -439,33 +569,44 @@
Overloaded function.
1. getProcessor(self: PyOpenColorIO.Config, srcColorSpace: OpenColorIO_v2_0rc1::ColorSpace, dstColorSpace: OpenColorIO_v2_0rc1::ColorSpace) -> OpenColorIO_v2_0rc1::Processor
1. getProcessor(self: PyOpenColorIO.Config, srcColorSpace: PyOpenColorIO.ColorSpace, dstColorSpace: PyOpenColorIO.ColorSpace) -> PyOpenColorIO.Processor
2. getProcessor(self: PyOpenColorIO.Config, context: OpenColorIO_v2_0rc1::Context, srcColorSpace: OpenColorIO_v2_0rc1::ColorSpace, dstColorSpace: OpenColorIO_v2_0rc1::ColorSpace) -> OpenColorIO_v2_0rc1::Processor
Get the processor to apply a :ref:`ColorSpaceTransform` from a source to a destination color space.
3. getProcessor(self: PyOpenColorIO.Config, srcColorSpaceName: str, dstColorSpaceName: str) -> OpenColorIO_v2_0rc1::Processor
2. getProcessor(self: PyOpenColorIO.Config, context: PyOpenColorIO.Context, srcColorSpace: PyOpenColorIO.ColorSpace, dstColorSpace: PyOpenColorIO.ColorSpace) -> PyOpenColorIO.Processor
3. getProcessor(self: PyOpenColorIO.Config, srcColorSpaceName: str, dstColorSpaceName: str) -> PyOpenColorIO.Processor
.. note::
Names can be colorspace name, role name, or a combination of both.
4. getProcessor(self: PyOpenColorIO.Config, context: OpenColorIO_v2_0rc1::Context, srcColorSpaceName: str, dstColorSpaceName: str) -> OpenColorIO_v2_0rc1::Processor
4. getProcessor(self: PyOpenColorIO.Config, context: PyOpenColorIO.Context, srcColorSpaceName: str, dstColorSpaceName: str) -> PyOpenColorIO.Processor
5. getProcessor(self: PyOpenColorIO.Config, srcColorSpaceName: str, display: str, view: str, direction: PyOpenColorIO.TransformDirection) -> OpenColorIO_v2_0rc1::Processor
5. getProcessor(self: PyOpenColorIO.Config, srcColorSpaceName: str, display: str, view: str, direction: PyOpenColorIO.TransformDirection) -> PyOpenColorIO.Processor
6. getProcessor(self: PyOpenColorIO.Config, context: OpenColorIO_v2_0rc1::Context, srcColorSpaceName: str, display: str, view: str, direction: PyOpenColorIO.TransformDirection) -> OpenColorIO_v2_0rc1::Processor
Get the processor to apply a :ref:`DisplayViewTransform` for a display and view. Refer to the Display/View Registration section above for more info on the display and view arguments.
cpp:function::
6. getProcessor(self: PyOpenColorIO.Config, context: PyOpenColorIO.Context, srcColorSpaceName: str, display: str, view: str, direction: PyOpenColorIO.TransformDirection) -> PyOpenColorIO.Processor
7. getProcessor(self: PyOpenColorIO.Config, transform: PyOpenColorIO.Transform) -> OpenColorIO_v2_0rc1::Processor
7. getProcessor(self: PyOpenColorIO.Config, namedTransform: PyOpenColorIO.NamedTransform, direction: PyOpenColorIO.TransformDirection) -> PyOpenColorIO.Processor
Get the processor to apply a :ref:`NamedTransform` in the specified direction.
8. getProcessor(self: PyOpenColorIO.Config, context: PyOpenColorIO.Context, namedTransform: PyOpenColorIO.NamedTransform, direction: PyOpenColorIO.TransformDirection) -> PyOpenColorIO.Processor
9. getProcessor(self: PyOpenColorIO.Config, namedTransformName: str, direction: PyOpenColorIO.TransformDirection) -> PyOpenColorIO.Processor
10. getProcessor(self: PyOpenColorIO.Config, context: PyOpenColorIO.Context, namedTransformName: str, direction: PyOpenColorIO.TransformDirection) -> PyOpenColorIO.Processor
11. getProcessor(self: PyOpenColorIO.Config, transform: PyOpenColorIO.Transform) -> PyOpenColorIO.Processor
Get the processor for the specified transform.
Not often needed, but will allow for the re-use of atomic OCIO functionality (such as to apply an individual LUT file).
8. getProcessor(self: PyOpenColorIO.Config, transform: PyOpenColorIO.Transform, direction: PyOpenColorIO.TransformDirection) -> OpenColorIO_v2_0rc1::Processor
12. getProcessor(self: PyOpenColorIO.Config, transform: PyOpenColorIO.Transform, direction: PyOpenColorIO.TransformDirection) -> PyOpenColorIO.Processor
9. getProcessor(self: PyOpenColorIO.Config, context: OpenColorIO_v2_0rc1::Context, transform: PyOpenColorIO.Transform, direction: PyOpenColorIO.TransformDirection) -> OpenColorIO_v2_0rc1::Processor
13. getProcessor(self: PyOpenColorIO.Config, context: PyOpenColorIO.Context, transform: PyOpenColorIO.Transform, direction: PyOpenColorIO.TransformDirection) -> PyOpenColorIO.Processor
.. py:method:: Config.getRoleNames(self: PyOpenColorIO.Config) -> PyOpenColorIO.Config.RoleNameIterator
@@ -488,7 +629,7 @@
:module: PyOpenColorIO
.. py:method:: Config.getViewTransform(self: PyOpenColorIO.Config, name: str) -> OpenColorIO_v2_0rc1::ViewTransform
.. py:method:: Config.getViewTransform(self: PyOpenColorIO.Config, name: str) -> PyOpenColorIO.ViewTransform
:module: PyOpenColorIO
@@ -500,7 +641,7 @@
:module: PyOpenColorIO
.. py:method:: Config.getViewingRules(self: PyOpenColorIO.Config) -> OpenColorIO_v2_0rc1::ViewingRules
.. py:method:: Config.getViewingRules(self: PyOpenColorIO.Config) -> PyOpenColorIO.ViewingRules
:module: PyOpenColorIO
Get read-only version of the viewing rules.
@@ -513,7 +654,33 @@
1. getViews(self: PyOpenColorIO.Config, display: str) -> PyOpenColorIO.Config.ViewIterator
2. getViews(self: PyOpenColorIO.Config, display: str, colorSpaceName: str) -> PyOpenColorIO.Config.ViewForColorSpaceIterator
2. getViews(self: PyOpenColorIO.Config, type: PyOpenColorIO.ViewType, display: str) -> PyOpenColorIO.Config.ViewForViewTypeIterator
3. getViews(self: PyOpenColorIO.Config, display: str, colorSpaceName: str) -> PyOpenColorIO.Config.ViewForColorSpaceIterator
.. py:method:: Config.getVirtualDisplayViewColorSpaceName(self: PyOpenColorIO.Config, view: str) -> str
:module: PyOpenColorIO
.. py:method:: Config.getVirtualDisplayViewDescription(self: PyOpenColorIO.Config, view: str) -> str
:module: PyOpenColorIO
.. py:method:: Config.getVirtualDisplayViewLooks(self: PyOpenColorIO.Config, view: str) -> str
:module: PyOpenColorIO
.. py:method:: Config.getVirtualDisplayViewRule(self: PyOpenColorIO.Config, view: str) -> str
:module: PyOpenColorIO
.. py:method:: Config.getVirtualDisplayViewTransformName(self: PyOpenColorIO.Config, view: str) -> str
:module: PyOpenColorIO
.. py:method:: Config.getVirtualDisplayViews(self: PyOpenColorIO.Config, display: PyOpenColorIO.ViewType) -> PyOpenColorIO.Config.VirtualViewIterator
:module: PyOpenColorIO
.. py:method:: Config.getWorkingDir(self: PyOpenColorIO.Config) -> str
@@ -526,6 +693,69 @@
Return true if the role has been defined.
.. py:method:: Config.instantiateDisplayFromICCProfile(self: PyOpenColorIO.Config, ICCProfileFilepath: str) -> int
:module: PyOpenColorIO
Instantiate a new display from a virtual display, using an ICC profile.
On platforms such as Linux, where the :ref:`SystemMonitors` class is not able to obtain a list of ICC profiles from the OS, this method may be used to manually specify a path to an ICC profile.
Will throw if the virtual display definition is missing from the config.
Returns the index of the display.
.. py:method:: Config.instantiateDisplayFromMonitorName(self: PyOpenColorIO.Config, monitorName: str) -> int
:module: PyOpenColorIO
Instantiate a new display from a virtual display, using the monitor name.
This method uses the virtual display to create an actual display for the given monitorName. The new display will receive the views from the virtual display.
After the ICC profile is read, a display name will be created by combining the description text from the profile with the monitorName obtained from the OS. Use the :ref:`SystemMonitors` class to obtain the list of monitorName strings for the displays connected to the computer.
A new display color space will also be created using the display name. It will have a from_display_reference transform that is a :ref:`FileTransform` pointing to the ICC profile.
Any instantiated display color spaces for a virtual display are intended to be temporary (i.e. last as long as the current session). By default, they are not saved when writing a config file. If there is a need to make it a permanent color space, it may be desirable to copy the ICC profile somewhere under the config search_path.
Will throw if the config does not have a virtual display or if the monitorName does not exist.
If there is already a display or a display color space with the name monitorName, it will be replaced/updated.
Returns the index of the display.
.. py:method:: Config.isArchivable(self: PyOpenColorIO.Config) -> bool
:module: PyOpenColorIO
Verify if the config is archivable.
A config is not archivable if any of the following are true: -- The working directory is not set -- It contains FileTransforms with a src outside the working directory -- The search path contains paths outside the working directory -- The search path contains paths that start with a context variable
:ref:`Context` variables are allowed but the intent is that they may only resolve to paths that are within or below the working directory. This is because the archiving function will only archive files that are within the working directory in order to ensure that if it is later expanded, that it will not create any files outside this directory.
For example, a context variable on the search path intended to contain the name of a sub-directory under the working directory must have the form "./$DIR_NAME" rather than just "$DIR_NAME" to be considered archivable. This is imperfect since there is no way to prevent the context variable from creating a path outside the working dir, but it should at least draw attention to the fact that the archive would fail if used with context vars that try to abuse the intended functionality.
:return: bool Archivable if true.
.. py:method:: Config.isColorSpaceLinear(self: PyOpenColorIO.Config, colorSpace: str, referenceSpaceType: PyOpenColorIO.ReferenceSpaceType) -> bool
:module: PyOpenColorIO
Return true if the specified color space is linear.
The determination of linearity is made with respect to one of the two reference spaces (i.e., either the scene-referred one or the display-referred one). If the reference space type of the color space is the opposite of the requested reference space type, false is returned immediately rather than trying to invoke the default view transform to convert between the reference spaces.
Note: This function relies on heuristics that may sometimes give an incorrect result. For example, if the encoding attribute is not set appropriately or the sampled values fail to detect non-linearity.
The algorithm proceeds as follows: -- If the color space isdata attribute is true, return false. -- If the reference space type of the color space differs from the requested reference space type, return false. -- If the color space's encoding attribute is present, return true if it matches the expected reference space type (i.e., "scene-linear" for REFERENCE_SPACE_SCENE or "display-linear" for REFERENCE_SPACE_DISPLAY) and false otherwise. -- If the color space has no to_reference or from_reference transform, return true. -- Evaluate several points through the color space's transform and check if the output only differs by a scale factor (which may be different per channel, e.g. allowing an arbitrary matrix transform, with no offset).
Note that the encoding test happens before the sampled value test to give config authors ultimate control over the linearity determination. For example, they could set the encoding attribute to indicate linearity if they want to ignore some areas of non-linearity (e.g., at extreme values). Or they could set it to indicate that a color space should not be considered linear, even if it is, in a mathematical sense.
:param colorSpace: Color space to evaluate.
:param referenceSpaceType: Evaluate linearity with respect to the specified reference space (either scene-referred or display-referred).
.. py:method:: Config.isColorSpaceUsed(self: PyOpenColorIO.Config, name: str) -> bool
:module: PyOpenColorIO
@@ -535,6 +765,10 @@
Name must be the canonical name.
.. py:method:: Config.isDisplayTemporary(self: PyOpenColorIO.Config, display: str) -> bool
:module: PyOpenColorIO
.. py:method:: Config.isStrictParsingEnabled(self: PyOpenColorIO.Config) -> bool
:module: PyOpenColorIO
@@ -546,7 +780,7 @@
.. py:method:: Config.parseColorSpaceFromString(self: PyOpenColorIO.Config, str: str) -> str
:module: PyOpenColorIO
Given the specified string, get the longest, right-most, colorspace substring that appears. This is now deprecated, please use getColorSpaceFromFilepath.
Given the specified string, get the longest, right-most, colorspace substring that appears.
- If strict parsing is enabled, and no color space is found, return an empty string.
- If strict parsing is disabled, return ROLE_DEFAULT (if defined).
@@ -570,7 +804,6 @@
Remove the view and the display if no more views.
It does not remove the associated color space. If the view name is a shared view, it only removes the reference to the view from the display but the shared view, remains in the config.
Will throw if the view does not exist.
@@ -582,6 +815,12 @@
Remove a shared view. Will throw if the view does not exist.
.. py:method:: Config.removeVirtualDisplayView(self: PyOpenColorIO.Config, view: str) -> None
:module: PyOpenColorIO
Remove the view from the virtual display.
.. py:method:: Config.serialize(*args, **kwargs)
:module: PyOpenColorIO
@@ -593,7 +832,6 @@
Returns the string representation of the :ref:`Config` in YAML text form.
This is typically stored on disk in a file with the extension .ocio. NB: This does not validate the config. Applications should validate before serializing.
@@ -602,7 +840,6 @@
$OCIO_ACTIVE_DISPLAYS envvar can, at runtime, optionally override the allowed displays. It is a comma or colon delimited list. Active displays that are not in the specified profile will be ignored, and the left-most defined display will be the default.
Comma-delimited list of names to filter and order the active displays.
.. note::
@@ -614,7 +851,6 @@
$OCIO_ACTIVE_VIEWS envvar can, at runtime, optionally override the allowed views. It is a comma or colon delimited list. Active views that are not in the specified profile will be ignored, and the left-most defined view will be the default.
Comma-delimited list of names to filter and order the active views.
.. note::
@@ -644,16 +880,14 @@
Set the family separator.
Succeeds if the characters is null or a valid character from the ASCII table i.e. from value 32 (i.e. space) to 126 (i.e. '~'); otherwise, it throws an exception.
.. py:method:: Config.setFileRules(self: PyOpenColorIO.Config, fileRules: OpenColorIO_v2_0rc1::FileRules) -> None
.. py:method:: Config.setFileRules(self: PyOpenColorIO.Config, fileRules: PyOpenColorIO.FileRules) -> None
:module: PyOpenColorIO
Set file rules.
.. note::
The argument is cloned.
@@ -663,11 +897,10 @@
Set/get a list of inactive color space or named transform names.
Notes:
- List can contain color space and/or named transform names.
- The inactive spaces are color spaces that should not appear in application menus.
- These color spaces will still work in Config::getProcessor calls.
- These color spaces will still work in :ref:`Config::getProcessor` calls.
- The argument is a comma-delimited string. A null or empty string empties the list.
- The environment variable OCIO_INACTIVE_COLORSPACES may also be used to set the inactive color space list.
- The env. var. takes precedence over the inactive_colorspaces list in the config file.
@@ -695,7 +928,8 @@
.. py:method:: Config.setProcessorCacheFlags(self: PyOpenColorIO.Config, flags: PyOpenColorIO.ProcessorCacheFlags) -> None
:module: PyOpenColorIO
cpp:function:: Control the caching of processors in the config instance. By default, caching
Control the caching of processors in the config instance. By default, caching is on.
The flags allow turning caching off entirely or only turning it off if dynamic properties are being used by the processor.
.. py:method:: Config.setRole(self: PyOpenColorIO.Config, role: str, colorSpaceName: str) -> None
@@ -713,13 +947,17 @@
See :ref:`addSearchPath` for a more robust and platform-agnostic method of setting the search paths.
.. py:method:: Config.setStrictParsingEnabled(self: PyOpenColorIO.Config, enabled: bool) -> None
:module: PyOpenColorIO
.. py:method:: Config.setVersion(self: PyOpenColorIO.Config, major: int, minor: int) -> None
:module: PyOpenColorIO
Set the configuration major and minor versions. Throws if version is not supported.
.. py:method:: Config.setViewingRules(self: PyOpenColorIO.Config, ViewingRules: OpenColorIO_v2_0rc1::ViewingRules) -> None
.. py:method:: Config.setViewingRules(self: PyOpenColorIO.Config, ViewingRules: PyOpenColorIO.ViewingRules) -> None
:module: PyOpenColorIO
Set viewing rules.
@@ -745,7 +983,6 @@
Performs a thorough validation for the most common user errors.
This will throw an exception if the config is malformed. The most common error occurs when references are made to colorspaces that do not exist.
@@ -813,7 +1050,7 @@
:module: PyOpenColorIO.Config
.. py:method:: ColorSpaceIterator.__getitem__(self: PyOpenColorIO.Config.ColorSpaceIterator, arg0: int) -> OpenColorIO_v2_0rc1::ColorSpace
.. py:method:: ColorSpaceIterator.__getitem__(self: PyOpenColorIO.Config.ColorSpaceIterator, arg0: int) -> PyOpenColorIO.ColorSpace
:module: PyOpenColorIO.Config
@@ -825,7 +1062,7 @@
:module: PyOpenColorIO.Config
.. py:method:: ColorSpaceIterator.__next__(self: PyOpenColorIO.Config.ColorSpaceIterator) -> OpenColorIO_v2_0rc1::ColorSpace
.. py:method:: ColorSpaceIterator.__next__(self: PyOpenColorIO.Config.ColorSpaceIterator) -> PyOpenColorIO.ColorSpace
:module: PyOpenColorIO.Config
@@ -853,7 +1090,7 @@
:module: PyOpenColorIO.Config
.. py:method:: ActiveColorSpaceIterator.__getitem__(self: PyOpenColorIO.Config.ActiveColorSpaceIterator, arg0: int) -> OpenColorIO_v2_0rc1::ColorSpace
.. py:method:: ActiveColorSpaceIterator.__getitem__(self: PyOpenColorIO.Config.ActiveColorSpaceIterator, arg0: int) -> PyOpenColorIO.ColorSpace
:module: PyOpenColorIO.Config
@@ -865,7 +1102,7 @@
:module: PyOpenColorIO.Config
.. py:method:: ActiveColorSpaceIterator.__next__(self: PyOpenColorIO.Config.ActiveColorSpaceIterator) -> OpenColorIO_v2_0rc1::ColorSpace
.. py:method:: ActiveColorSpaceIterator.__next__(self: PyOpenColorIO.Config.ActiveColorSpaceIterator) -> PyOpenColorIO.ColorSpace
:module: PyOpenColorIO.Config
@@ -1013,7 +1250,7 @@
:module: PyOpenColorIO.Config
.. py:method:: LookIterator.__getitem__(self: PyOpenColorIO.Config.LookIterator, arg0: int) -> OpenColorIO_v2_0rc1::Look
.. py:method:: LookIterator.__getitem__(self: PyOpenColorIO.Config.LookIterator, arg0: int) -> PyOpenColorIO.Look
:module: PyOpenColorIO.Config
@@ -1025,7 +1262,7 @@
:module: PyOpenColorIO.Config
.. py:method:: LookIterator.__next__(self: PyOpenColorIO.Config.LookIterator) -> OpenColorIO_v2_0rc1::Look
.. py:method:: LookIterator.__next__(self: PyOpenColorIO.Config.LookIterator) -> PyOpenColorIO.Look
:module: PyOpenColorIO.Config
@@ -1053,7 +1290,7 @@
:module: PyOpenColorIO.Config
.. py:method:: ViewTransformIterator.__getitem__(self: PyOpenColorIO.Config.ViewTransformIterator, arg0: int) -> OpenColorIO_v2_0rc1::ViewTransform
.. py:method:: ViewTransformIterator.__getitem__(self: PyOpenColorIO.Config.ViewTransformIterator, arg0: int) -> PyOpenColorIO.ViewTransform
:module: PyOpenColorIO.Config
@@ -1065,7 +1302,7 @@
:module: PyOpenColorIO.Config
.. py:method:: ViewTransformIterator.__next__(self: PyOpenColorIO.Config.ViewTransformIterator) -> OpenColorIO_v2_0rc1::ViewTransform
.. py:method:: ViewTransformIterator.__next__(self: PyOpenColorIO.Config.ViewTransformIterator) -> PyOpenColorIO.ViewTransform
:module: PyOpenColorIO.Config
@@ -1093,7 +1330,7 @@
:module: PyOpenColorIO.Config
.. py:method:: NamedTransformIterator.__getitem__(self: PyOpenColorIO.Config.NamedTransformIterator, arg0: int) -> OpenColorIO_v2_0rc1::NamedTransform
.. py:method:: NamedTransformIterator.__getitem__(self: PyOpenColorIO.Config.NamedTransformIterator, arg0: int) -> PyOpenColorIO.NamedTransform
:module: PyOpenColorIO.Config
@@ -1105,7 +1342,7 @@
:module: PyOpenColorIO.Config
.. py:method:: NamedTransformIterator.__next__(self: PyOpenColorIO.Config.NamedTransformIterator) -> OpenColorIO_v2_0rc1::NamedTransform
.. py:method:: NamedTransformIterator.__next__(self: PyOpenColorIO.Config.NamedTransformIterator) -> PyOpenColorIO.NamedTransform
:module: PyOpenColorIO.Config
@@ -1133,7 +1370,7 @@
:module: PyOpenColorIO.Config
.. py:method:: ActiveNamedTransformIterator.__getitem__(self: PyOpenColorIO.Config.ActiveNamedTransformIterator, arg0: int) -> OpenColorIO_v2_0rc1::NamedTransform
.. py:method:: ActiveNamedTransformIterator.__getitem__(self: PyOpenColorIO.Config.ActiveNamedTransformIterator, arg0: int) -> PyOpenColorIO.NamedTransform
:module: PyOpenColorIO.Config
@@ -1145,6 +1382,6 @@
:module: PyOpenColorIO.Config
.. py:method:: ActiveNamedTransformIterator.__next__(self: PyOpenColorIO.Config.ActiveNamedTransformIterator) -> OpenColorIO_v2_0rc1::NamedTransform
.. py:method:: ActiveNamedTransformIterator.__next__(self: PyOpenColorIO.Config.ActiveNamedTransformIterator) -> PyOpenColorIO.NamedTransform
:module: PyOpenColorIO.Config
@@ -6,6 +6,31 @@
.. py:class:: Context
:module: PyOpenColorIO
:ref:`Context`
A context defines some overrides to a :ref:`Config`. For example, it can override the search path or change the value of a context variable.
.. note::
Only some :ref:`Config::getProcessor` methods accept a custom context; otherwise, the default context instance is used (see Config::getCurrentContext).
:ref:`Context` Variables
The context variables allow changes at runtime using environment variables. For example, a color space name (such as src & dst for the :ref:`ColorSpaceTransform`) or a file name (such as LUT file name for the :ref:`FileTransform`) could be defined by context variables. The color transformation is then customized based on some environment variables.
In a config the context variables support three syntaxes (i.e. ${VAR}, $VAR and VAR%) and the parsing starts from longest to shortest. So, the resolve works like '$TEST_$TESTING_$TE' expands in this order '2 1 3'.
:ref:`Config` authors are recommended to include the "environment" section in their configs. This improves performance as well as making the config more readable. When present, this section must declare all context variables used in the config. It may also provide a default value, in case the variable is not present in the user's environment.
A context variable may only be used in the following places:
- the `:ref:`ColorSpaceTransform`` to define the source and the destination color space names,
- the `:ref:`FileTransform`` to define the source file name (e.g. a LUT file name),
- the search_path,
- the cccid of the `:ref:`FileTransform`` to only extract one specific transform from the CDL & CCC files.
Some specific restrictions are worth calling out:
- they cannot be used as either the name or value of a role,
- the context variable characters $ and % are prohibited in a color space name.
.. py:method:: Context.__init__(*args, **kwargs)
:module: PyOpenColorIO
@@ -17,10 +42,6 @@
2. __init__(self: PyOpenColorIO.Context, workingDir: str = '', searchPaths: List[str] = [], stringVars: Dict[str, str] = {}, environmentMode: PyOpenColorIO.EnvironmentMode = <EnvironmentMode.ENV_ENVIRONMENT_LOAD_PREDEFINED: 1>) -> None
.. py:method:: Context.__str__(self: PyOpenColorIO.Context) -> str
:module: PyOpenColorIO
.. py:method:: Context.addSearchPath(self: PyOpenColorIO.Context, path: str) -> None
:module: PyOpenColorIO
@@ -40,8 +61,6 @@
.. py:method:: Context.getEnvironmentMode(self: PyOpenColorIO.Context) -> PyOpenColorIO.EnvironmentMode
:module: PyOpenColorIO
cpp:function::
.. py:method:: Context.getSearchPath(self: PyOpenColorIO.Context) -> str
:module: PyOpenColorIO
@@ -92,18 +111,16 @@
1. resolveStringVar(self: PyOpenColorIO.Context, string: str) -> str
cpp:function:: Resolve all the context variables from the string. It could be color space
Resolve all the context variables from the string. It could be color space names or file names. Note that it recursively applies the context variable resolution. Returns the string unchanged if it does not contain any context variable.
2. resolveStringVar(self: PyOpenColorIO.Context, string: str, usedContextVars: PyOpenColorIO.Context) -> str
cpp:function:: Resolve all the context variables from the string and return all the context
Resolve all the context variables from the string and return all the context variables used to resolve the string (empty if no context variables were used).
.. py:method:: Context.setEnvironmentMode(self: PyOpenColorIO.Context, mode: PyOpenColorIO.EnvironmentMode) -> None
:module: PyOpenColorIO
cpp:function::
.. py:method:: Context.setSearchPath(self: PyOpenColorIO.Context, path: str) -> None
:module: PyOpenColorIO
@@ -10,15 +10,13 @@
.. py:method:: CPUProcessor.__init__(*args, **kwargs)
:module: PyOpenColorIO
Initialize self. See help(type(self)) for accurate signature.
.. py:method:: CPUProcessor.apply(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. apply(self: PyOpenColorIO.CPUProcessor, imgDesc: OpenColorIO_v2_0rc1::PyImageDesc) -> None
1. apply(self: PyOpenColorIO.CPUProcessor, imgDesc: PyOpenColorIO.ImageDesc) -> None
Apply to an image with any kind of channel ordering while respecting
@@ -37,7 +35,7 @@
2. apply(self: PyOpenColorIO.CPUProcessor, srcImgDesc: OpenColorIO_v2_0rc1::PyImageDesc, dstImgDesc: OpenColorIO_v2_0rc1::PyImageDesc) -> None
2. apply(self: PyOpenColorIO.CPUProcessor, srcImgDesc: PyOpenColorIO.ImageDesc, dstImgDesc: PyOpenColorIO.ImageDesc) -> None
Apply to an image with any kind of channel ordering while respecting
@@ -149,6 +147,11 @@
.. py:method:: CPUProcessor.getDynamicProperty(self: PyOpenColorIO.CPUProcessor, type: PyOpenColorIO.DynamicPropertyType) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO
The returned pointer may be used to set the value of any dynamic properties of the requested type. Throws if the requested property is not found. Note that if the processor contains several ops that support the requested property, only one can be dynamic.
.. note::
The dynamic properties in this object are decoupled from the ones in the :ref:`Processor` it was generated from. For each dynamic property in the :ref:`Processor`, there is one in the CPU processor.
.. py:method:: CPUProcessor.getInputBitDepth(self: PyOpenColorIO.CPUProcessor) -> PyOpenColorIO.BitDepth
:module: PyOpenColorIO
@@ -17,10 +17,6 @@
2. __init__(self: PyOpenColorIO.DisplayViewTransform, src: str = '', display: str = '', view: str = '', looksBypass: bool = False, dataBypass: bool = True, direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: DisplayViewTransform.__str__(self: PyOpenColorIO.DisplayViewTransform) -> str
:module: PyOpenColorIO
.. py:method:: DisplayViewTransform.getDataBypass(self: PyOpenColorIO.DisplayViewTransform) -> bool
:module: PyOpenColorIO
@@ -6,20 +6,51 @@
.. py:class:: DynamicProperty
:module: PyOpenColorIO
Allows transform parameter values to be set on-the-fly (after finalization). For example, to modify the exposure in a viewport. Dynamic properties can be accessed from the :cpp:class:`:ref:`CPUProcessor`` or :cpp:class:`:ref:`GpuShaderCreator`` to change values between processing.
Allows transform parameter values to be set on-the-fly (after finalization). For example, to modify the exposure in a viewport. Dynamic properties can be accessed from the `:ref:`CPUProcessor`` or `:ref:`GpuShaderCreator`` to change values between processing.
.. code-block:: cpp
OCIO::ConstConfigRcPtr config = OCIO::GetCurrentConfig(); OCIO::ConstProcessorRcPtr processor = config->getProcessor(colorSpace1, colorSpace2); OCIO::ConstCPUProcessorRcPtr cpuProcessor = processor->getDefaultCPUProcessor();
OCIO::ConstConfigRcPtr config = OCIO::GetCurrentConfig();
OCIO::ConstProcessorRcPtr processor = config->getProcessor(colorSpace1, colorSpace2);
OCIO::ConstCPUProcessorRcPtr cpuProcessor = processor->getDefaultCPUProcessor();
if (cpuProcessor->hasDynamicProperty(OCIO::DYNAMIC_PROPERTY_EXPOSURE)) { // Get the in-memory implementation of the dynamic property. OCIO::DynamicPropertyRcPtr dynProp = cpuProcessor->getDynamicProperty(OCIO::DYNAMIC_PROPERTY_EXPOSURE); // Get the interface used to change the double value. OCIO::DynamicPropertyDoubleRcPtr exposure = OCIO::DynamicPropertyValue::AsDouble(dynProp); // Update of the dynamic property instance with the new value. exposure->setValue(1.1f); } if (cpuProcessor->hasDynamicProperty(OCIO::DYNAMIC_PROPERTY_GRADING_PRIMARY)) { OCIO::DynamicPropertyRcPtr dynProp = cpuProcessor->getDynamicProperty(OCIO::DYNAMIC_PROPERTY_GRADING_PRIMARY); OCIO::DynamicPropertyGradingPrimaryRcPtr primaryProp = OCIO::DynamicPropertyValue::AsGradingPrimary(dynProp); OCIO::GradingPrimary primary = primaryProp->getValue(); primary.m_saturation += 0.1f; rgbCurveProp->setValue(primary); } if (cpuProcessor->hasDynamicProperty(OCIO::DYNAMIC_PROPERTY_GRADING_RGBCURVE)) { OCIO::DynamicPropertyRcPtr dynProp = cpuProcessor->getDynamicProperty(OCIO::DYNAMIC_PROPERTY_GRADING_RGBCURVE); OCIO::DynamicPropertyGradingRGBCurveRcPtr rgbCurveProp = OCIO::DynamicPropertyValue::AsGradingRGBCurve(dynProp); OCIO::ConstGradingRGBCurveRcPtr rgbCurve = rgbCurveProp->getValue()->createEditableCopy(); OCIO::GradingBSplineCurveRcPtr rCurve = rgbCurve->getCurve(OCIO::RGB_RED); rCurve->getControlPoint(1).m_y += 0.1f; rgbCurveProp->setValue(rgbCurve); }
if (cpuProcessor->hasDynamicProperty(OCIO::DYNAMIC_PROPERTY_EXPOSURE))
{
// Get the in-memory implementation of the dynamic property.
OCIO::DynamicPropertyRcPtr dynProp =
cpuProcessor->getDynamicProperty(OCIO::DYNAMIC_PROPERTY_EXPOSURE);
// Get the interface used to change the double value.
OCIO::DynamicPropertyDoubleRcPtr exposure =
OCIO::DynamicPropertyValue::AsDouble(dynProp);
// Update of the dynamic property instance with the new value.
exposure->setValue(1.1f);
}
if (cpuProcessor->hasDynamicProperty(OCIO::DYNAMIC_PROPERTY_GRADING_PRIMARY))
{
OCIO::DynamicPropertyRcPtr dynProp =
cpuProcessor->getDynamicProperty(OCIO::DYNAMIC_PROPERTY_GRADING_PRIMARY);
OCIO::DynamicPropertyGradingPrimaryRcPtr primaryProp =
OCIO::DynamicPropertyValue::AsGradingPrimary(dynProp);
OCIO::GradingPrimary primary = primaryProp->getValue();
primary.m_saturation += 0.1f;
rgbCurveProp->setValue(primary);
}
if (cpuProcessor->hasDynamicProperty(OCIO::DYNAMIC_PROPERTY_GRADING_RGBCURVE))
{
OCIO::DynamicPropertyRcPtr dynProp =
cpuProcessor->getDynamicProperty(OCIO::DYNAMIC_PROPERTY_GRADING_RGBCURVE);
OCIO::DynamicPropertyGradingRGBCurveRcPtr rgbCurveProp =
OCIO::DynamicPropertyValue::AsGradingRGBCurve(dynProp);
OCIO::ConstGradingRGBCurveRcPtr rgbCurve = rgbCurveProp->getValue()->createEditableCopy();
OCIO::GradingBSplineCurveRcPtr rCurve = rgbCurve->getCurve(OCIO::RGB_RED);
rCurve->getControlPoint(1).m_y += 0.1f;
rgbCurveProp->setValue(rgbCurve);
}
.. py:method:: DynamicProperty.__init__(*args, **kwargs)
:module: PyOpenColorIO
Initialize self. See help(type(self)) for accurate signature.
.. py:method:: DynamicProperty.getDouble(self: PyOpenColorIO.DynamicProperty) -> float
:module: PyOpenColorIO
@@ -27,19 +58,19 @@
Get the property as DynamicPropertyDoubleRcPtr to access the double value. Will throw if property type is not a type that holds a double such as DYNAMIC_PROPERTY_EXPOSURE.
.. py:method:: DynamicProperty.getGradingPrimary(self: PyOpenColorIO.DynamicProperty) -> OpenColorIO_v2_0rc1::GradingPrimary
.. py:method:: DynamicProperty.getGradingPrimary(self: PyOpenColorIO.DynamicProperty) -> PyOpenColorIO.GradingPrimary
:module: PyOpenColorIO
Get the property as DynamicPropertyGradingPrimaryRcPtr to access the :ref:`GradingPrimary` value. Will throw if property type is not DYNAMIC_PROPERTY_GRADING_PRIMARY.
.. py:method:: DynamicProperty.getGradingRGBCurve(self: PyOpenColorIO.DynamicProperty) -> OpenColorIO_v2_0rc1::GradingRGBCurve
.. py:method:: DynamicProperty.getGradingRGBCurve(self: PyOpenColorIO.DynamicProperty) -> PyOpenColorIO.GradingRGBCurve
:module: PyOpenColorIO
Get the property as DynamicPropertyGradingRGBCurveRcPtr to access the GradingRGBCurveRcPtr value. Will throw if property type is not DYNAMIC_PROPERTY_GRADING_RGBCURVE.
.. py:method:: DynamicProperty.getGradingTone(self: PyOpenColorIO.DynamicProperty) -> OpenColorIO_v2_0rc1::GradingTone
.. py:method:: DynamicProperty.getGradingTone(self: PyOpenColorIO.DynamicProperty) -> PyOpenColorIO.GradingTone
:module: PyOpenColorIO
Get the property as DynamicPropertyGradingToneRcPtr to access the :ref:`GradingTone` value. Will throw if property type is not DYNAMIC_PROPERTY_GRADING_TONE.
@@ -55,19 +86,19 @@
Get the property as DynamicPropertyDoubleRcPtr to access the double value. Will throw if property type is not a type that holds a double such as DYNAMIC_PROPERTY_EXPOSURE.
.. py:method:: DynamicProperty.setGradingPrimary(self: PyOpenColorIO.DynamicProperty, val: OpenColorIO_v2_0rc1::GradingPrimary) -> None
.. py:method:: DynamicProperty.setGradingPrimary(self: PyOpenColorIO.DynamicProperty, val: PyOpenColorIO.GradingPrimary) -> None
:module: PyOpenColorIO
Get the property as DynamicPropertyGradingPrimaryRcPtr to access the :ref:`GradingPrimary` value. Will throw if property type is not DYNAMIC_PROPERTY_GRADING_PRIMARY.
.. py:method:: DynamicProperty.setGradingRGBCurve(self: PyOpenColorIO.DynamicProperty, val: OpenColorIO_v2_0rc1::GradingRGBCurve) -> None
.. py:method:: DynamicProperty.setGradingRGBCurve(self: PyOpenColorIO.DynamicProperty, val: PyOpenColorIO.GradingRGBCurve) -> None
:module: PyOpenColorIO
Get the property as DynamicPropertyGradingRGBCurveRcPtr to access the GradingRGBCurveRcPtr value. Will throw if property type is not DYNAMIC_PROPERTY_GRADING_RGBCURVE.
.. py:method:: DynamicProperty.setGradingTone(self: PyOpenColorIO.DynamicProperty, val: OpenColorIO_v2_0rc1::GradingTone) -> None
.. py:method:: DynamicProperty.setGradingTone(self: PyOpenColorIO.DynamicProperty, val: PyOpenColorIO.GradingTone) -> None
:module: PyOpenColorIO
Get the property as DynamicPropertyGradingToneRcPtr to access the :ref:`GradingTone` value. Will throw if property type is not DYNAMIC_PROPERTY_GRADING_TONE.
@@ -54,3 +54,7 @@
:module: PyOpenColorIO
:value: <DynamicPropertyType.DYNAMIC_PROPERTY_GRADING_TONE: 5>
.. py:property:: DynamicPropertyType.value
:module: PyOpenColorIO
@@ -31,3 +31,7 @@
:module: PyOpenColorIO
:value: <EnvironmentMode.ENV_ENVIRONMENT_UNKNOWN: 0>
.. py:property:: EnvironmentMode.value
:module: PyOpenColorIO
@@ -8,7 +8,6 @@
An exception class to throw for errors detected at runtime.
.. warning::
All functions in the :ref:`Config` class can potentially throw this exception.
@@ -8,6 +8,5 @@
An exception class for errors detected at runtime.
Thrown when OCIO cannot find a file that is expected to exist. This is provided as a custom type to distinguish cases where one wants to continue looking for missing files, but wants to properly fail for other error conditions.
@@ -8,7 +8,6 @@
Represents exponent transform: pow( clamp(color), value ).
.. note::
For configs with version == 1: Negative style is ignored and if the exponent is 1.0, this will not clamp. Otherwise, the input color will be clamped between [0.0, inf]. For configs with version > 1: Negative value handling may be specified via setNegativeStyle.
@@ -23,10 +22,6 @@
2. __init__(self: PyOpenColorIO.ExponentTransform, value: List[float[4]] = [1.0, 1.0, 1.0, 1.0], negativeStyle: PyOpenColorIO.NegativeStyle = <NegativeStyle.NEGATIVE_CLAMP: 0>, direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: ExponentTransform.__str__(self: PyOpenColorIO.ExponentTransform) -> str
:module: PyOpenColorIO
.. py:method:: ExponentTransform.equals(self: PyOpenColorIO.ExponentTransform, other: PyOpenColorIO.ExponentTransform) -> bool
:module: PyOpenColorIO
@@ -25,10 +25,6 @@
2. __init__(self: PyOpenColorIO.ExponentWithLinearTransform, gamma: List[float[4]] = [1.0, 1.0, 1.0, 1.0], offset: List[float[4]] = [0.0, 0.0, 0.0, 0.0], negativeStyle: PyOpenColorIO.NegativeStyle = <NegativeStyle.NEGATIVE_LINEAR: 3>, direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: ExponentWithLinearTransform.__str__(self: PyOpenColorIO.ExponentWithLinearTransform) -> str
:module: PyOpenColorIO
.. py:method:: ExponentWithLinearTransform.equals(self: PyOpenColorIO.ExponentWithLinearTransform, other: PyOpenColorIO.ExponentWithLinearTransform) -> bool
:module: PyOpenColorIO
@@ -33,3 +33,7 @@
:module: PyOpenColorIO
:value: <ExposureContrastStyle.EXPOSURE_CONTRAST_VIDEO: 1>
.. py:property:: ExposureContrastStyle.value
:module: PyOpenColorIO
@@ -19,10 +19,6 @@
2. __init__(self: PyOpenColorIO.ExposureContrastTransform, style: PyOpenColorIO.ExposureContrastStyle = <ExposureContrastStyle.EXPOSURE_CONTRAST_LINEAR: 0>, exposure: float = 0.0, contrast: float = 1.0, gamma: float = 1.0, pivot: float = 0.18, logExposureStep: float = 0.088, logMidGray: float = 0.435, dynamicExposure: bool = False, dynamicContrast: bool = False, dynamicGamma: bool = False, direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: ExposureContrastTransform.__str__(self: PyOpenColorIO.ExposureContrastTransform) -> str
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.equals(self: PyOpenColorIO.ExposureContrastTransform, other: PyOpenColorIO.ExposureContrastTransform) -> bool
:module: PyOpenColorIO
@@ -6,6 +6,32 @@
.. py:class:: FileRules
:module: PyOpenColorIO
The File Rules are a set of filepath to color space mappings that are evaluated from first to last. The first rule to match is what determines which color space is returned. There are four types of rules available. Each rule type has a name key that may be used by applications to refer to that rule. Name values must be unique i.e. using a case insensitive comparison. The other keys depend on the rule type:
- *Basic Rule*: This is the basic rule type that uses Unix glob style pattern matching and is thus very easy to use. It contains the keys:
- name: Name of the rule
- colorspace: Color space name to be returned.
- pattern: Glob pattern to be used for the main part of the name/path.
- extension: Glob pattern to be used for the file extension. Note that if glob tokens are not used, the extension will be used in a non-case-sensitive way by default.
- *Regex Rule*: This is similar to the basic rule but allows additional capabilities for power-users. It contains the keys:
- name: Name of the rule
- colorspace: Color space name to be returned.
- regex: Regular expression to be evaluated.
- *OCIO v1 style Rule*: This rule allows the use of the OCIO v1 style, where the string is searched for color space names from the config. This rule may occur 0 or 1 times in the list. The position in the list prioritizes it with respect to the other rules. StrictParsing is not used. If no color space is found in the path, the rule will not match and the next rule will be considered. see :ref:`insertPathSearchRule`. It has the key:
- name: Must be "ColorSpaceNamePathSearch".
- *Default Rule*: The file_rules must always end with this rule. If no prior rules match, this rule specifies the color space applications will use. see :ref:`setDefaultRuleColorSpace`. It has the keys:
- name: must be "Default".
- colorspace : Color space name to be returned.
Custom string keys and associated string values may be used to convey app or workflow-specific information, e.g. whether the color space should be left as is or converted into a working space.
Getters and setters are using the rule position, they will throw if the position is not valid. If the rule at the specified position does not implement the requested property getter will return NULL and setter will throw.
When loading a v1 config, a set of :ref:`FileRules` are created with ColorSpaceNamePathSearch followed by the Default rule pointing to the default role. This allows getColorSpaceFromFilepath to emulate OCIO v1 code that used parseColorSpaceFromString with strictparsing set to false.
.. py:method:: FileRules.__init__(self: PyOpenColorIO.FileRules) -> None
:module: PyOpenColorIO
@@ -90,7 +116,6 @@
Helper function to insert a rule.
Uses Config:parseColorSpaceFromString to search the path for any of the color spaces named in the config (as per OCIO v1).
@@ -103,7 +128,6 @@
Insert a rule at a given ruleIndex.
Rule currently at ruleIndex will be pushed to index: ruleIndex + 1. Name must be unique.
- "Default" is a reserved name for the default rule. The default rule is automatically added and can't be removed. (see :ref:`FileRules::setDefaultRuleColorSpace` ).
- "ColorSpaceNamePathSearch" is also a reserved name (see :ref:`FileRules::insertPathSearchRule` ).
@@ -17,10 +17,6 @@
2. __init__(self: PyOpenColorIO.FileTransform, src: str = '', cccId: str = '', interpolation: PyOpenColorIO.Interpolation = <Interpolation.INTERP_DEFAULT: 254>, direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: FileTransform.__str__(self: PyOpenColorIO.FileTransform) -> str
:module: PyOpenColorIO
.. py:method:: FileTransform.getCCCId(self: PyOpenColorIO.FileTransform) -> str
:module: PyOpenColorIO
@@ -30,6 +30,12 @@
FIXED_FUNCTION_XYZ_TO_LUV : CIE XYZ to 1976 CIELUV colour space (D65 white)
FIXED_FUNCTION_ACES_GAMUTMAP_02 : ACES 0.2 Gamut clamping algorithm -- NOT IMPLEMENTED YET.
FIXED_FUNCTION_ACES_GAMUTMAP_07 : ACES 0.7 Gamut clamping algorithm -- NOT IMPLEMENTED YET.
FIXED_FUNCTION_ACES_GAMUT_COMP_13 : ACES 1.3 Parametric Gamut Compression (expects ACEScg values)
.. py:method:: name() -> str
:property:
@@ -38,6 +44,21 @@
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_DARK_TO_DIM_10: 4>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_ACES_GAMUTMAP_02
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_GAMUTMAP_02: 10>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_ACES_GAMUTMAP_07
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_GAMUTMAP_07: 11>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_ACES_GAMUT_COMP_13
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_GAMUT_COMP_13: 12>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_ACES_GLOW_03
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_GLOW_03: 2>
@@ -82,3 +103,7 @@
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_XYZ_TO_xyY: 7>
.. py:property:: FixedFunctionStyle.value
:module: PyOpenColorIO
@@ -9,17 +9,7 @@
Provides a set of hard-coded algorithmic building blocks that are needed to accurately implement various common color transformations.
.. py:method:: FixedFunctionTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.FixedFunctionTransform) -> None
2. __init__(self: PyOpenColorIO.FixedFunctionTransform, style: PyOpenColorIO.FixedFunctionStyle = <FixedFunctionStyle.FIXED_FUNCTION_ACES_RED_MOD_03: 0>, params: List[float] = [], direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: FixedFunctionTransform.__str__(self: PyOpenColorIO.FixedFunctionTransform) -> str
.. py:method:: FixedFunctionTransform.__init__(self: PyOpenColorIO.FixedFunctionTransform, style: PyOpenColorIO.FixedFunctionStyle, params: List[float] = [], direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
:module: PyOpenColorIO
@@ -28,8 +28,6 @@
.. py:method:: FormatMetadata.__init__(*args, **kwargs)
:module: PyOpenColorIO
Initialize self. See help(type(self)) for accurate signature.
.. py:method:: FormatMetadata.__iter__(self: PyOpenColorIO.FormatMetadata) -> PyOpenColorIO.FormatMetadata.AttributeNameIterator
:module: PyOpenColorIO
@@ -8,6 +8,5 @@
Get the global logging level.
You can override this at runtime using the OCIO_LOGGING_LEVEL environment variable. The client application that sets this should use :ref:`SetLoggingLevel`, and not the environment variable. The default value is INFO.
@@ -8,6 +8,5 @@
Get the version number for the library, as a dot-delimited string (e.g., "1.0.0").
This is also available at compile time as OCIO_VERSION_FULL_STR.
@@ -8,6 +8,5 @@
Get the version number for the library, as a single 4-byte hex number (e.g., 0x01050200 for "1.5.2"), to be used for numeric comparisons.
This is also at compile time as OCIO_VERSION_HEX.
@@ -18,8 +18,14 @@
GPU_LANGUAGE_GLSL_4_0 : OpenGL Shading Language.
GPU_LANGUAGE_GLSL_ES_1_0 : OpenGL ES Shading Language.
GPU_LANGUAGE_GLSL_ES_3_0 : OpenGL ES Shading Language.
GPU_LANGUAGE_HLSL_DX11 : DirectX Shading Language.
GPU_LANGUAGE_MSL_2_0 : Metal Shading Language.
.. py:method:: name() -> str
:property:
@@ -43,7 +49,26 @@
:value: <GpuLanguage.GPU_LANGUAGE_GLSL_4_0: 3>
.. py:attribute:: GpuLanguage.GPU_LANGUAGE_GLSL_ES_1_0
:module: PyOpenColorIO
:value: <GpuLanguage.GPU_LANGUAGE_GLSL_ES_1_0: 6>
.. py:attribute:: GpuLanguage.GPU_LANGUAGE_GLSL_ES_3_0
:module: PyOpenColorIO
:value: <GpuLanguage.GPU_LANGUAGE_GLSL_ES_3_0: 7>
.. py:attribute:: GpuLanguage.GPU_LANGUAGE_HLSL_DX11
:module: PyOpenColorIO
:value: <GpuLanguage.GPU_LANGUAGE_HLSL_DX11: 4>
.. py:attribute:: GpuLanguage.GPU_LANGUAGE_MSL_2_0
:module: PyOpenColorIO
:value: <GpuLanguage.GPU_LANGUAGE_MSL_2_0: 8>
.. py:property:: GpuLanguage.value
:module: PyOpenColorIO
@@ -10,22 +10,12 @@
.. py:method:: GPUProcessor.__init__(*args, **kwargs)
:module: PyOpenColorIO
Initialize self. See help(type(self)) for accurate signature.
.. py:method:: GPUProcessor.extractGpuShaderInfo(*args, **kwargs)
.. py:method:: GPUProcessor.extractGpuShaderInfo(self: PyOpenColorIO.GPUProcessor, shaderDesc: PyOpenColorIO.GpuShaderDesc) -> None
:module: PyOpenColorIO
Overloaded function.
1. extractGpuShaderInfo(self: PyOpenColorIO.GPUProcessor, shaderDesc: OpenColorIO_v2_0rc1::GpuShaderDesc) -> None
Extract & Store the shader information to implement the color processing.
2. extractGpuShaderInfo(self: PyOpenColorIO.GPUProcessor, shaderCreator: OpenColorIO_v2_0rc1::GpuShaderCreator) -> None
Extract the shader information using a custom :ref:`GpuShaderCreator` class.
.. py:method:: GPUProcessor.getCacheID(self: PyOpenColorIO.GPUProcessor) -> str
:module: PyOpenColorIO
@@ -8,21 +8,46 @@
Inherit from the class to fully customize the implementation of a GPU shader program from a color transformation.
When no customizations are needed then the :cpp:class:`:ref:`GpuShaderDesc`` is a better choice.
When no customizations are needed and the intermediate in-memory step is acceptable then the :ref:`GpuShaderDesc` is a better choice.
To better decouple the DynamicProperties from their GPU implementation, the code provides several addUniform() methods i.e. one per access function types. For example, an :ref:`ExposureContrastTransform` instance owns three DynamicProperties and they are all implemented by a double. When creating the GPU fragment shader program, the addUniform() with :ref:`GpuShaderCreator::DoubleGetter` is called when property is dynamic, up to three times.
.. note::
To better decouple the DynamicProperties from their GPU implementation, the code provides several addUniform() methods i.e. one per access function types. For example, an :ref:`ExposureContrastTransform` instance owns three DynamicProperties and they are all implemented by a double. When creating the GPU fragment shader program, the addUniform() with :ref:`GpuShaderCreator::DoubleGetter` is called when property is dynamic, up to three times.
**An OCIO shader program could contain:**
.. py:method:: GpuShaderCreator.__init__(self: PyOpenColorIO.GpuShaderCreator) -> None
:module: PyOpenColorIO
- A declaration part e.g., uniform sampled3D tex3;
- Some helper methods
- The OCIO shader function may be broken down as:
- The function header e.g., void OCIODisplay(in vec4 inColor) {
- The function body e.g., vec4 outColor.rgb = texture3D(tex3, inColor.rgb).rgb;
- The function footer e.g., return outColor; }
**Usage Example:**
.. py:method:: GpuShaderCreator.add3DTexture(self: PyOpenColorIO.GpuShaderCreator, textureName: str, samplerName: str, edgeLen: int, interpolation: PyOpenColorIO.Interpolation, values: float) -> None
:module: PyOpenColorIO
Below is a code snippet to highlight the different parts of the OCIO shader program.
.. code-block:: cpp
.. py:method:: GpuShaderCreator.addTexture(self: PyOpenColorIO.GpuShaderCreator, textureName: str, samplerName: str, width: int, height: int, channel: PyOpenColorIO.GpuShaderCreator.TextureType, interpolation: PyOpenColorIO.Interpolation, values: float) -> None
:module: PyOpenColorIO
// All global declarations
uniform sampled3D tex3;
// All helper methods
vec3 computePosition(vec3 color)
{
vec3 coords = color;
// Some processing...
return coords;
}
// The shader function
vec4 OCIODisplay(in vec4 inColor) //
{ // Function Header
vec4 outColor = inColor; //
outColor.rgb = texture3D(tex3, computePosition(inColor.rgb)).rgb;
return outColor; // Function Footer
} //
.. py:method:: GpuShaderCreator.addToDeclareShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
@@ -60,11 +85,8 @@
Create the OCIO shader program.
.. note::
The OCIO shader program is decomposed to allow a specific implementation to change some parts. Some product integrations add the color processing within a client shader program, imposing constraints requiring this flexibility.
The OCIO shader program is decomposed to allow a specific implementation to change some parts. Some product integrations add the color processing within a client shader program, imposing constraints requiring this flexibility.
.. py:method:: GpuShaderCreator.end(self: PyOpenColorIO.GpuShaderCreator) -> None
@@ -85,7 +107,7 @@
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.getDynamicProperty(self: PyOpenColorIO.GpuShaderCreator, type: PyOpenColorIO.DynamicPropertyType) -> OpenColorIO_v2_0rc1::DynamicProperty
.. py:method:: GpuShaderCreator.getDynamicProperty(self: PyOpenColorIO.GpuShaderCreator, type: PyOpenColorIO.DynamicPropertyType) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO
@@ -100,7 +122,7 @@
.. py:method:: GpuShaderCreator.getNextResourceIndex(self: PyOpenColorIO.GpuShaderCreator) -> int
:module: PyOpenColorIO
To avoid texture/unform name clashes always append an increasing number to the resource name.
To avoid global texture sampler and uniform name clashes always append an increasing index to the resource name.
.. py:method:: GpuShaderCreator.getPixelName(self: PyOpenColorIO.GpuShaderCreator) -> str
@@ -180,11 +202,15 @@
:value: <TextureType.TEXTURE_RGB_CHANNEL: 1>
.. py:property:: TextureType.value
:module: PyOpenColorIO.GpuShaderCreator
.. py:class:: DynamicPropertyIterator
:module: PyOpenColorIO.GpuShaderCreator
.. py:method:: DynamicPropertyIterator.__getitem__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator, arg0: int) -> OpenColorIO_v2_0rc1::DynamicProperty
.. py:method:: DynamicPropertyIterator.__getitem__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator, arg0: int) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO.GpuShaderCreator
@@ -196,6 +222,6 @@
:module: PyOpenColorIO.GpuShaderCreator
.. py:method:: DynamicPropertyIterator.__next__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator) -> OpenColorIO_v2_0rc1::DynamicProperty
.. py:method:: DynamicPropertyIterator.__next__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO.GpuShaderCreator
@@ -6,12 +6,137 @@
.. py:class:: GpuShaderDesc
:module: PyOpenColorIO
This class holds the GPU-related information needed to build a shader program from a specific processor.
.. py:method:: GpuShaderDesc.CreateLegacyShaderDesc(edgeLen: int, language: PyOpenColorIO.GpuLanguage = <GpuLanguage.GPU_LANGUAGE_GLSL_1_2: 1>, functionName: str = 'OCIOMain', pixelName: str = 'outColor', resourcePrefix: str = 'ocio', uid: str = '') -> PyOpenColorIO.GpuShaderDesc
:module: PyOpenColorIO
:staticmethod:
This class defines the interface and there are two implementations provided. The "legacy" mode implements the OCIO v1 approach of baking certain ops in order to have at most one 3D-LUT. The "generic" mode is the v2 default and allows all the ops to be processed as-is, without baking, like the CPU renderer. Custom implementations could be written to accommodate the GPU needs of a specific client app.
Create the legacy shader description.
The complete fragment shader program is decomposed in two main parts: the OCIO shader program for the color processing and the client shader program which consumes the pixel color processing.
The OCIO shader program is fully described by the :ref:`GpuShaderDesc` independently from the client shader program. The only critical point is the agreement on the OCIO function shader name.
To summarize, the complete shader program is:
.. code-block:: cpp
// //
// The complete fragment shader program //
// //
// //
// ////////////////////////////////////////////////////////////// //
// // // //
// // The OCIO shader program // //
// // // //
// ////////////////////////////////////////////////////////////// //
// // // //
// // // All global declarations // //
// // uniform sampled3D tex3; // //
// // // //
// // // All helper methods // //
// // vec3 computePos(vec3 color) // //
// // { // //
// // vec3 coords = color; // //
// // ... // //
// // return coords; // //
// // } // //
// // // //
// // // The OCIO shader function // //
// // vec4 OCIODisplay(in vec4 inColor) // //
// // { // //
// // vec4 outColor = inColor; // //
// // ... // //
// // outColor.rbg // //
// // = texture3D(tex3, computePos(inColor.rgb)).rgb; // //
// // ... // //
// // return outColor; // //
// // } // //
// // // //
// ////////////////////////////////////////////////////////////// //
// //
// ////////////////////////////////////////////////////////////// //
// // // //
// // The client shader program // //
// // // //
// ////////////////////////////////////////////////////////////// //
// // // //
// // uniform sampler2D image; // //
// // // //
// // void main() // //
// // { // //
// // vec4 inColor = texture2D(image, gl_TexCoord[0].st); // //
// // ... // //
// // vec4 outColor = OCIODisplay(inColor); // //
// // ... // //
// // gl_FragColor = outColor; // //
// // } // //
// // // //
// ////////////////////////////////////////////////////////////// //
// //
////////////////////////////////////////////////////////////////////////
**Usage Example:** *Building a GPU shader*
This example is based on the code in: src/apps/ociodisplay/main.cpp
.. code-block:: cpp
// Get the processor
//
OCIO::ConstConfigRcPtr config = OCIO::Config::CreateFromEnv();
OCIO::ConstProcessorRcPtr processor
= config->getProcessor("ACES - ACEScg", "Output - sRGB");
// Step 1: Create a GPU shader description
//
// The two potential scenarios are:
//
// 1. Instantiate the generic shader description. The color processor
// is used as-is (i.e. without any baking step) and could contain
// any number of 1D & 3D luts.
//
// This is the default OCIO v2 behavior and allows a much better
// match between the CPU and GPU renderers.
//
OCIO::GpuShaderDescRcPtr shaderDesc = OCIO::GpuShaderDesc::Create();
//
// 2. Instantiate a custom shader description.
//
// Writing a custom shader description is a way to tailor the shaders
// to the needs of a given client program. This involves writing a
// new class inheriting from the pure virtual class GpuShaderDesc.
//
// Please refer to the GenericGpuShaderDesc class for an example.
//
OCIO::GpuShaderDescRcPtr shaderDesc = MyCustomGpuShader::Create();
shaderDesc->setLanguage(OCIO::GPU_LANGUAGE_GLSL_1_2);
shaderDesc->setFunctionName("OCIODisplay");
// Step 2: Collect the shader program information for a specific processor
//
processor->extractGpuShaderInfo(shaderDesc);
// Step 3: Create a helper to build the shader. Here we use a helper for
// OpenGL but there will also be helpers for other languages.
//
OpenGLBuilderRcPtr oglBuilder = OpenGLBuilder::Create(shaderDesc);
// Step 4: Allocate & upload all the LUTs
//
oglBuilder->allocateAllTextures();
// Step 5: Build the complete fragment shader program using
// g_fragShaderText which is the client shader program.
//
g_programId = oglBuilder->buildProgram(g_fragShaderText);
// Step 6: Enable the fragment shader program, and all needed textures
//
glUseProgram(g_programId);
glUniform1i(glGetUniformLocation(g_programId, "tex1"), 1); // image texture
oglBuilder->useAllTextures(g_programId); // LUT textures
// Step 7: Update uniforms from dynamic property instances.
m_oglBuilder->useAllUniforms();
.. py:method:: GpuShaderDesc.CreateShaderDesc(language: PyOpenColorIO.GpuLanguage = <GpuLanguage.GPU_LANGUAGE_GLSL_1_2: 1>, functionName: str = 'OCIOMain', pixelName: str = 'outColor', resourcePrefix: str = 'ocio', uid: str = '') -> PyOpenColorIO.GpuShaderDesc
@@ -24,16 +149,24 @@
.. py:method:: GpuShaderDesc.__init__(*args, **kwargs)
:module: PyOpenColorIO
Initialize self. See help(type(self)) for accurate signature.
.. py:method:: GpuShaderDesc.add3DTexture(self: PyOpenColorIO.GpuShaderDesc, textureName: str, samplerName: str, edgeLen: int, interpolation: PyOpenColorIO.Interpolation, values: buffer) -> None
:module: PyOpenColorIO
Add a 3D texture with RGB channel type.
.. note::
The 'values' parameter contains the 3D LUT data which must be used as-is as the dimension and origin are hard-coded in the fragment shader program. So, it means one GPU 3D texture per entry.
.. py:method:: GpuShaderDesc.addTexture(self: PyOpenColorIO.GpuShaderDesc, textureName: str, samplerName: str, width: int, height: int, channel: PyOpenColorIO.GpuShaderCreator.TextureType, interpolation: PyOpenColorIO.Interpolation, values: buffer) -> None
:module: PyOpenColorIO
Add a 2D texture (1D texture if height equals 1).
.. note::
The 'values' parameter contains the LUT data which must be used as-is as the dimensions and origin are hard-coded in the fragment shader program. So, it means one GPU texture per entry.
.. py:method:: GpuShaderDesc.addToDeclareShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
@@ -61,7 +194,7 @@
Start to collect the shader data.
.. py:method:: GpuShaderDesc.clone(self: PyOpenColorIO.GpuShaderCreator) -> PyOpenColorIO.GpuShaderCreator
.. py:method:: GpuShaderDesc.clone(self: PyOpenColorIO.GpuShaderDesc) -> PyOpenColorIO.GpuShaderCreator
:module: PyOpenColorIO
@@ -70,11 +203,8 @@
Create the OCIO shader program.
.. note::
The OCIO shader program is decomposed to allow a specific implementation to change some parts. Some product integrations add the color processing within a client shader program, imposing constraints requiring this flexibility.
The OCIO shader program is decomposed to allow a specific implementation to change some parts. Some product integrations add the color processing within a client shader program, imposing constraints requiring this flexibility.
.. py:method:: GpuShaderDesc.end(self: PyOpenColorIO.GpuShaderCreator) -> None
@@ -87,10 +217,6 @@
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.get3DTextureValues(self: PyOpenColorIO.GpuShaderDesc, index: int) -> numpy.ndarray
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.get3DTextures(self: PyOpenColorIO.GpuShaderDesc) -> PyOpenColorIO.GpuShaderDesc.Texture3DIterator
:module: PyOpenColorIO
@@ -103,7 +229,7 @@
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getDynamicProperty(self: PyOpenColorIO.GpuShaderCreator, type: PyOpenColorIO.DynamicPropertyType) -> OpenColorIO_v2_0rc1::DynamicProperty
.. py:method:: GpuShaderDesc.getDynamicProperty(self: PyOpenColorIO.GpuShaderCreator, type: PyOpenColorIO.DynamicPropertyType) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO
@@ -118,15 +244,7 @@
.. py:method:: GpuShaderDesc.getNextResourceIndex(self: PyOpenColorIO.GpuShaderCreator) -> int
:module: PyOpenColorIO
To avoid texture/unform name clashes always append an increasing number to the resource name.
.. py:method:: GpuShaderDesc.getNum3DTextures(self: PyOpenColorIO.GpuShaderDesc) -> int
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getNumTextures(self: PyOpenColorIO.GpuShaderDesc) -> int
:module: PyOpenColorIO
To avoid global texture sampler and uniform name clashes always append an increasing index to the resource name.
.. py:method:: GpuShaderDesc.getPixelName(self: PyOpenColorIO.GpuShaderCreator) -> str
@@ -140,15 +258,21 @@
Some applications require that textures, uniforms, and helper methods be uniquely named because several processor instances could coexist.
.. py:method:: GpuShaderDesc.getShaderText(self: PyOpenColorIO.GpuShaderDesc) -> str
:module: PyOpenColorIO
Get the complete OCIO shader program.
.. py:method:: GpuShaderDesc.getTextureMaxWidth(self: PyOpenColorIO.GpuShaderCreator) -> int
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getTextureValues(self: PyOpenColorIO.GpuShaderDesc, index: int) -> numpy.ndarray
.. py:method:: GpuShaderDesc.getTextures(self: PyOpenColorIO.GpuShaderDesc) -> PyOpenColorIO.GpuShaderDesc.TextureIterator
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getTextures(self: PyOpenColorIO.GpuShaderDesc) -> PyOpenColorIO.GpuShaderDesc.TextureIterator
.. py:method:: GpuShaderDesc.getUniforms(self: PyOpenColorIO.GpuShaderDesc) -> PyOpenColorIO.GpuShaderDesc.UniformIterator
:module: PyOpenColorIO
@@ -194,6 +318,7 @@
.. py:class:: TextureType
:module: PyOpenColorIO.GpuShaderDesc
:canonical: PyOpenColorIO.GpuShaderCreator.TextureType
Members:
@@ -214,62 +339,112 @@
:value: <TextureType.TEXTURE_RGB_CHANNEL: 1>
.. py:property:: TextureType.value
:module: PyOpenColorIO.GpuShaderDesc
.. py:class:: UniformData
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformData.getBool(self: PyOpenColorIO.GpuShaderDesc.UniformData) -> bool
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformData.getDouble(self: PyOpenColorIO.GpuShaderDesc.UniformData) -> float
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformData.getFloat3(self: PyOpenColorIO.GpuShaderDesc.UniformData) -> List[float[3]]
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformData.getVectorFloat(self: PyOpenColorIO.GpuShaderDesc.UniformData) -> numpy.ndarray
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformData.getVectorInt(self: PyOpenColorIO.GpuShaderDesc.UniformData) -> numpy.ndarray
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: UniformData.type
:module: PyOpenColorIO.GpuShaderDesc
.. py:class:: Texture
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: Texture.channel
.. py:property:: Texture.channel
:module: PyOpenColorIO.GpuShaderDesc
:property:
.. py:method:: Texture.height
.. py:method:: Texture.getValues(self: PyOpenColorIO.GpuShaderDesc.Texture) -> numpy.ndarray
:module: PyOpenColorIO.GpuShaderDesc
:property:
.. py:method:: Texture.interpolation
.. py:property:: Texture.height
:module: PyOpenColorIO.GpuShaderDesc
:property:
.. py:method:: Texture.samplerName
.. py:property:: Texture.interpolation
:module: PyOpenColorIO.GpuShaderDesc
:property:
.. py:method:: Texture.textureName
.. py:property:: Texture.samplerName
:module: PyOpenColorIO.GpuShaderDesc
:property:
.. py:method:: Texture.width
.. py:property:: Texture.textureName
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture.width
:module: PyOpenColorIO.GpuShaderDesc
:property:
.. py:class:: Texture3D
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: Texture3D.edgeLen
.. py:property:: Texture3D.edgeLen
:module: PyOpenColorIO.GpuShaderDesc
:property:
.. py:method:: Texture3D.interpolation
.. py:method:: Texture3D.getValues(self: PyOpenColorIO.GpuShaderDesc.Texture3D) -> numpy.ndarray
:module: PyOpenColorIO.GpuShaderDesc
:property:
.. py:method:: Texture3D.samplerName
.. py:property:: Texture3D.interpolation
:module: PyOpenColorIO.GpuShaderDesc
:property:
.. py:method:: Texture3D.textureName
.. py:property:: Texture3D.samplerName
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture3D.textureName
:module: PyOpenColorIO.GpuShaderDesc
.. py:class:: UniformIterator
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformIterator.__getitem__(self: PyOpenColorIO.GpuShaderDesc.UniformIterator, arg0: int) -> tuple
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformIterator.__iter__(self: PyOpenColorIO.GpuShaderDesc.UniformIterator) -> PyOpenColorIO.GpuShaderDesc.UniformIterator
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformIterator.__len__(self: PyOpenColorIO.GpuShaderDesc.UniformIterator) -> int
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformIterator.__next__(self: PyOpenColorIO.GpuShaderDesc.UniformIterator) -> tuple
:module: PyOpenColorIO.GpuShaderDesc
:property:
.. py:class:: TextureIterator
@@ -314,9 +489,10 @@
.. py:class:: DynamicPropertyIterator
:module: PyOpenColorIO.GpuShaderDesc
:canonical: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator
.. py:method:: DynamicPropertyIterator.__getitem__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator, arg0: int) -> OpenColorIO_v2_0rc1::DynamicProperty
.. py:method:: DynamicPropertyIterator.__getitem__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator, arg0: int) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO.GpuShaderDesc
@@ -328,6 +504,6 @@
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: DynamicPropertyIterator.__next__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator) -> OpenColorIO_v2_0rc1::DynamicProperty
.. py:method:: DynamicPropertyIterator.__next__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO.GpuShaderDesc
@@ -23,10 +23,6 @@
Create a BSpline curve with a list of control points.
.. py:method:: GradingBSplineCurve.__str__(self: PyOpenColorIO.GradingBSplineCurve) -> str
:module: PyOpenColorIO
.. py:method:: GradingBSplineCurve.getControlPoints(self: PyOpenColorIO.GradingBSplineCurve) -> PyOpenColorIO.GradingBSplineCurve.GradingControlPointIterator
:module: PyOpenColorIO
@@ -19,16 +19,10 @@
2. __init__(self: PyOpenColorIO.GradingControlPoint, x: float = 0.0, y: float = 0.0) -> None
.. py:method:: GradingControlPoint.__str__(self: PyOpenColorIO.GradingControlPoint) -> str
.. py:property:: GradingControlPoint.x
:module: PyOpenColorIO
.. py:method:: GradingControlPoint.x
.. py:property:: GradingControlPoint.y
:module: PyOpenColorIO
:property:
.. py:method:: GradingControlPoint.y
:module: PyOpenColorIO
:property:
@@ -23,73 +23,56 @@
:module: PyOpenColorIO
.. py:method:: GradingPrimary.__str__(self: PyOpenColorIO.GradingPrimary) -> str
.. py:property:: GradingPrimary.brightness
:module: PyOpenColorIO
.. py:method:: GradingPrimary.brightness
.. py:property:: GradingPrimary.clampBlack
:module: PyOpenColorIO
:property:
.. py:method:: GradingPrimary.clampBlack
.. py:property:: GradingPrimary.clampWhite
:module: PyOpenColorIO
:property:
.. py:method:: GradingPrimary.clampWhite
.. py:property:: GradingPrimary.contrast
:module: PyOpenColorIO
:property:
.. py:method:: GradingPrimary.contrast
.. py:property:: GradingPrimary.exposure
:module: PyOpenColorIO
:property:
.. py:method:: GradingPrimary.exposure
.. py:property:: GradingPrimary.gain
:module: PyOpenColorIO
:property:
.. py:method:: GradingPrimary.gain
.. py:property:: GradingPrimary.gamma
:module: PyOpenColorIO
:property:
.. py:method:: GradingPrimary.gamma
.. py:property:: GradingPrimary.lift
:module: PyOpenColorIO
:property:
.. py:method:: GradingPrimary.lift
.. py:property:: GradingPrimary.offset
:module: PyOpenColorIO
:property:
.. py:method:: GradingPrimary.offset
.. py:property:: GradingPrimary.pivot
:module: PyOpenColorIO
:property:
.. py:method:: GradingPrimary.pivot
.. py:property:: GradingPrimary.pivotBlack
:module: PyOpenColorIO
:property:
.. py:method:: GradingPrimary.pivotBlack
.. py:property:: GradingPrimary.pivotWhite
:module: PyOpenColorIO
:property:
.. py:method:: GradingPrimary.pivotWhite
.. py:property:: GradingPrimary.saturation
:module: PyOpenColorIO
:property:
.. py:method:: GradingPrimary.saturation
:module: PyOpenColorIO
:property:
.. py:method:: GradingPrimary.validate(self: PyOpenColorIO.GradingPrimary, arg0: PyOpenColorIO.GradingStyle) -> None
@@ -23,7 +23,7 @@
Overloaded function.
1. __init__(self: PyOpenColorIO.GradingPrimaryTransform, style: PyOpenColorIO.GradingStyle = <GradingStyle.GRADING_LOG: 0>, values: PyOpenColorIO.GradingPrimary, dynamic: bool = False, dir: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
1. __init__(self: PyOpenColorIO.GradingPrimaryTransform, values: PyOpenColorIO.GradingPrimary, style: PyOpenColorIO.GradingStyle = <GradingStyle.GRADING_LOG: 0>, dynamic: bool = False, dir: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
Creates an instance of :ref:`GradingPrimaryTransform`.
@@ -32,10 +32,6 @@
Creates an instance of :ref:`GradingPrimaryTransform`.
.. py:method:: GradingPrimaryTransform.__str__(self: PyOpenColorIO.Transform) -> str
:module: PyOpenColorIO
.. py:method:: GradingPrimaryTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
@@ -18,29 +18,21 @@
Do not use (needed only for pybind11).
2. __init__(self: PyOpenColorIO.GradingRGBCurve, red: PyOpenColorIO.GradingBSplineCurve = <PyOpenColorIO.GradingBSplineCurve object at 0x7f9cabe66230>, green: PyOpenColorIO.GradingBSplineCurve = <PyOpenColorIO.GradingBSplineCurve object at 0x7f9cabe661f0>, blue: PyOpenColorIO.GradingBSplineCurve = <PyOpenColorIO.GradingBSplineCurve object at 0x7f9cabe66170>, master: PyOpenColorIO.GradingBSplineCurve = <PyOpenColorIO.GradingBSplineCurve object at 0x7f9cabe64f70>) -> None
2. __init__(self: PyOpenColorIO.GradingRGBCurve, red: PyOpenColorIO.GradingBSplineCurve = <control_points=[<x=0, y=0><x=0.5, y=0.5><x=1, y=1>]>, green: PyOpenColorIO.GradingBSplineCurve = <control_points=[<x=0, y=0><x=0.5, y=0.5><x=1, y=1>]>, blue: PyOpenColorIO.GradingBSplineCurve = <control_points=[<x=0, y=0><x=0.5, y=0.5><x=1, y=1>]>, master: PyOpenColorIO.GradingBSplineCurve = <control_points=[<x=0, y=0><x=0.5, y=0.5><x=1, y=1>]>) -> None
.. py:method:: GradingRGBCurve.__str__(self: PyOpenColorIO.GradingRGBCurve) -> str
.. py:property:: GradingRGBCurve.blue
:module: PyOpenColorIO
.. py:method:: GradingRGBCurve.blue
.. py:property:: GradingRGBCurve.green
:module: PyOpenColorIO
:property:
.. py:method:: GradingRGBCurve.green
.. py:property:: GradingRGBCurve.master
:module: PyOpenColorIO
:property:
.. py:method:: GradingRGBCurve.master
.. py:property:: GradingRGBCurve.red
:module: PyOpenColorIO
:property:
.. py:method:: GradingRGBCurve.red
:module: PyOpenColorIO
:property:
@@ -1,118 +1,114 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: GradingRGBCurveTransform
:module: PyOpenColorIO
RGB curve color correction controls.
This transform allows for modifying tone reproduction via B-spline curves.
There is an R, G, and B curve along with a Master curve (that applies to R, G, and B). Each curve is specified via the x and y coordinates of its control points. A monotonic spline is fit to the control points. The x coordinates must be non-decreasing. When the grading style is linear, the units for the control points are photographic stops relative to 0.18.
The control points are dynamic, so they may be adjusted even after the :ref:`Transform` is included in a :ref:`Processor`.
.. py:method:: GradingRGBCurveTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.GradingRGBCurveTransform, style: PyOpenColorIO.GradingStyle = <GradingStyle.GRADING_LOG: 0>, values: PyOpenColorIO.GradingRGBCurve, dynamic: bool = False, dir: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
Creates an instance of :ref:`GradingPrimaryTransform`.
2. __init__(self: PyOpenColorIO.GradingRGBCurveTransform, style: PyOpenColorIO.GradingStyle = <GradingStyle.GRADING_LOG: 0>, dynamic: bool = False, dir: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
Creates an instance of :ref:`GradingPrimaryTransform`.
.. py:method:: GradingRGBCurveTransform.__str__(self: PyOpenColorIO.Transform) -> str
:module: PyOpenColorIO
.. py:method:: GradingRGBCurveTransform.getBypassLinToLog(self: PyOpenColorIO.GradingRGBCurveTransform) -> bool
:module: PyOpenColorIO
The scene-linear grading style applies a lin-to-log transform to the pixel values before going through the curve. However, in some cases (e.g. drawing curves in a UI) it may be useful to bypass the lin-to-log. Default value is false.
.. py:method:: GradingRGBCurveTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: GradingRGBCurveTransform.getFormatMetadata(self: PyOpenColorIO.GradingRGBCurveTransform) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO
.. py:method:: GradingRGBCurveTransform.getSlope(self: PyOpenColorIO.GradingRGBCurveTransform, channel: PyOpenColorIO.RGBCurveType, index: int) -> float
:module: PyOpenColorIO
It is possible to provide a desired slope value for each control point. The number of slopes is always the same as the number of control points and so the control points must be set before setting the slopes. The slopes are primarily intended for use by config authors looking to match a specific shape with as few control points as possible, they are not intended to be exposed to a user interface for direct manipulation. When a curve is being generated for creative purposes it is better to let OCIO calculate the slopes automatically.
.. py:method:: GradingRGBCurveTransform.getStyle(self: PyOpenColorIO.GradingRGBCurveTransform) -> PyOpenColorIO.GradingStyle
:module: PyOpenColorIO
Adjusts the behavior of the transform for log, linear, or video color space encodings.
.. py:method:: GradingRGBCurveTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: GradingRGBCurveTransform.getValue(self: PyOpenColorIO.GradingRGBCurveTransform) -> PyOpenColorIO.GradingRGBCurve
:module: PyOpenColorIO
.. py:method:: GradingRGBCurveTransform.isDynamic(self: PyOpenColorIO.GradingRGBCurveTransform) -> bool
:module: PyOpenColorIO
Parameters can be made dynamic so the values can be changed through the CPU or GPU processor, but if there are several :ref:`GradingRGBCurveTransform` only one can have dynamic parameters.
.. py:method:: GradingRGBCurveTransform.makeDynamic(self: PyOpenColorIO.GradingRGBCurveTransform) -> None
:module: PyOpenColorIO
.. py:method:: GradingRGBCurveTransform.makeNonDynamic(self: PyOpenColorIO.GradingRGBCurveTransform) -> None
:module: PyOpenColorIO
.. py:method:: GradingRGBCurveTransform.setBypassLinToLog(self: PyOpenColorIO.GradingRGBCurveTransform, bypass: bool) -> None
:module: PyOpenColorIO
.. py:method:: GradingRGBCurveTransform.setDirection(self: PyOpenColorIO.Transform, direction: PyOpenColorIO.TransformDirection) -> None
:module: PyOpenColorIO
Note that this only affects the evaluation and not the values stored in the object.
.. py:method:: GradingRGBCurveTransform.setSlope(self: PyOpenColorIO.GradingRGBCurveTransform, channel: PyOpenColorIO.RGBCurveType, index: int, slope: float) -> None
:module: PyOpenColorIO
.. py:method:: GradingRGBCurveTransform.setStyle(self: PyOpenColorIO.GradingRGBCurveTransform, style: PyOpenColorIO.GradingStyle) -> None
:module: PyOpenColorIO
Will reset value to style's defaults if style is not the current style.
.. py:method:: GradingRGBCurveTransform.setValue(self: PyOpenColorIO.GradingRGBCurveTransform, values: PyOpenColorIO.GradingRGBCurve) -> None
:module: PyOpenColorIO
Throws if value is not valid.
.. py:method:: GradingRGBCurveTransform.slopesAreDefault(self: PyOpenColorIO.GradingRGBCurveTransform, channel: PyOpenColorIO.RGBCurveType) -> bool
:module: PyOpenColorIO
.. py:method:: GradingRGBCurveTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:class:: GradingRGBCurveTransform
:module: PyOpenColorIO
RGB curve color correction controls.
This transform allows for modifying tone reproduction via B-spline curves.
There is an R, G, and B curve along with a Master curve (that applies to R, G, and B). Each curve is specified via the x and y coordinates of its control points. A monotonic spline is fit to the control points. The x coordinates must be non-decreasing. When the grading style is linear, the units for the control points are photographic stops relative to 0.18.
The control points are dynamic, so they may be adjusted even after the :ref:`Transform` is included in a :ref:`Processor`.
.. py:method:: GradingRGBCurveTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.GradingRGBCurveTransform, values: PyOpenColorIO.GradingRGBCurve, style: PyOpenColorIO.GradingStyle = <GradingStyle.GRADING_LOG: 0>, dynamic: bool = False, dir: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
Creates an instance of :ref:`GradingPrimaryTransform`.
2. __init__(self: PyOpenColorIO.GradingRGBCurveTransform, style: PyOpenColorIO.GradingStyle = <GradingStyle.GRADING_LOG: 0>, dynamic: bool = False, dir: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
Creates an instance of :ref:`GradingPrimaryTransform`.
.. py:method:: GradingRGBCurveTransform.getBypassLinToLog(self: PyOpenColorIO.GradingRGBCurveTransform) -> bool
:module: PyOpenColorIO
The scene-linear grading style applies a lin-to-log transform to the pixel values before going through the curve. However, in some cases (e.g. drawing curves in a UI) it may be useful to bypass the lin-to-log. Default value is false.
.. py:method:: GradingRGBCurveTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: GradingRGBCurveTransform.getFormatMetadata(self: PyOpenColorIO.GradingRGBCurveTransform) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO
.. py:method:: GradingRGBCurveTransform.getSlope(self: PyOpenColorIO.GradingRGBCurveTransform, channel: PyOpenColorIO.RGBCurveType, index: int) -> float
:module: PyOpenColorIO
It is possible to provide a desired slope value for each control point. The number of slopes is always the same as the number of control points and so the control points must be set before setting the slopes. The slopes are primarily intended for use by config authors looking to match a specific shape with as few control points as possible, they are not intended to be exposed to a user interface for direct manipulation. When a curve is being generated for creative purposes it is better to let OCIO calculate the slopes automatically.
.. py:method:: GradingRGBCurveTransform.getStyle(self: PyOpenColorIO.GradingRGBCurveTransform) -> PyOpenColorIO.GradingStyle
:module: PyOpenColorIO
Adjusts the behavior of the transform for log, linear, or video color space encodings.
.. py:method:: GradingRGBCurveTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: GradingRGBCurveTransform.getValue(self: PyOpenColorIO.GradingRGBCurveTransform) -> PyOpenColorIO.GradingRGBCurve
:module: PyOpenColorIO
.. py:method:: GradingRGBCurveTransform.isDynamic(self: PyOpenColorIO.GradingRGBCurveTransform) -> bool
:module: PyOpenColorIO
Parameters can be made dynamic so the values can be changed through the CPU or GPU processor, but if there are several :ref:`GradingRGBCurveTransform` only one can have dynamic parameters.
.. py:method:: GradingRGBCurveTransform.makeDynamic(self: PyOpenColorIO.GradingRGBCurveTransform) -> None
:module: PyOpenColorIO
.. py:method:: GradingRGBCurveTransform.makeNonDynamic(self: PyOpenColorIO.GradingRGBCurveTransform) -> None
:module: PyOpenColorIO
.. py:method:: GradingRGBCurveTransform.setBypassLinToLog(self: PyOpenColorIO.GradingRGBCurveTransform, bypass: bool) -> None
:module: PyOpenColorIO
.. py:method:: GradingRGBCurveTransform.setDirection(self: PyOpenColorIO.Transform, direction: PyOpenColorIO.TransformDirection) -> None
:module: PyOpenColorIO
Note that this only affects the evaluation and not the values stored in the object.
.. py:method:: GradingRGBCurveTransform.setSlope(self: PyOpenColorIO.GradingRGBCurveTransform, channel: PyOpenColorIO.RGBCurveType, index: int, slope: float) -> None
:module: PyOpenColorIO
.. py:method:: GradingRGBCurveTransform.setStyle(self: PyOpenColorIO.GradingRGBCurveTransform, style: PyOpenColorIO.GradingStyle) -> None
:module: PyOpenColorIO
Will reset value to style's defaults if style is not the current style.
.. py:method:: GradingRGBCurveTransform.setValue(self: PyOpenColorIO.GradingRGBCurveTransform, values: PyOpenColorIO.GradingRGBCurve) -> None
:module: PyOpenColorIO
Throws if value is not valid.
.. py:method:: GradingRGBCurveTransform.slopesAreDefault(self: PyOpenColorIO.GradingRGBCurveTransform, channel: PyOpenColorIO.RGBCurveType) -> bool
:module: PyOpenColorIO
.. py:method:: GradingRGBCurveTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
@@ -19,26 +19,18 @@
2. __init__(self: PyOpenColorIO.GradingRGBM, red: float, green: float, blue: float, master: float) -> None
.. py:method:: GradingRGBM.__str__(self: PyOpenColorIO.GradingRGBM) -> str
.. py:property:: GradingRGBM.blue
:module: PyOpenColorIO
.. py:method:: GradingRGBM.blue
.. py:property:: GradingRGBM.green
:module: PyOpenColorIO
:property:
.. py:method:: GradingRGBM.green
.. py:property:: GradingRGBM.master
:module: PyOpenColorIO
:property:
.. py:method:: GradingRGBM.master
.. py:property:: GradingRGBM.red
:module: PyOpenColorIO
:property:
.. py:method:: GradingRGBM.red
:module: PyOpenColorIO
:property:
@@ -21,36 +21,26 @@
3. __init__(self: PyOpenColorIO.GradingRGBMSW, start: float, width: float) -> None
.. py:method:: GradingRGBMSW.__str__(self: PyOpenColorIO.GradingRGBMSW) -> str
.. py:property:: GradingRGBMSW.blue
:module: PyOpenColorIO
.. py:method:: GradingRGBMSW.blue
.. py:property:: GradingRGBMSW.green
:module: PyOpenColorIO
:property:
.. py:method:: GradingRGBMSW.green
.. py:property:: GradingRGBMSW.master
:module: PyOpenColorIO
:property:
.. py:method:: GradingRGBMSW.master
.. py:property:: GradingRGBMSW.red
:module: PyOpenColorIO
:property:
.. py:method:: GradingRGBMSW.red
.. py:property:: GradingRGBMSW.start
:module: PyOpenColorIO
:property:
.. py:method:: GradingRGBMSW.start
.. py:property:: GradingRGBMSW.width
:module: PyOpenColorIO
:property:
.. py:method:: GradingRGBMSW.width
:module: PyOpenColorIO
:property:
@@ -33,3 +33,7 @@
:module: PyOpenColorIO
:value: <GradingStyle.GRADING_VIDEO: 2>
.. py:property:: GradingStyle.value
:module: PyOpenColorIO
@@ -13,33 +13,24 @@
:module: PyOpenColorIO
.. py:method:: GradingTone.__str__(self: PyOpenColorIO.GradingTone) -> str
.. py:property:: GradingTone.blacks
:module: PyOpenColorIO
.. py:method:: GradingTone.blacks
.. py:property:: GradingTone.highlights
:module: PyOpenColorIO
:property:
.. py:method:: GradingTone.highlights
.. py:property:: GradingTone.midtones
:module: PyOpenColorIO
:property:
.. py:method:: GradingTone.midtones
.. py:property:: GradingTone.scontrast
:module: PyOpenColorIO
:property:
.. py:method:: GradingTone.scontrast
.. py:property:: GradingTone.shadows
:module: PyOpenColorIO
:property:
.. py:method:: GradingTone.shadows
:module: PyOpenColorIO
:property:
.. py:method:: GradingTone.validate(self: PyOpenColorIO.GradingTone) -> None
@@ -48,7 +39,6 @@
The valid range for each parameter varies. The client is expected to enforce these bounds in the UI.
.. py:method:: GradingTone.whites
.. py:property:: GradingTone.whites
:module: PyOpenColorIO
:property:
@@ -31,7 +31,7 @@
Overloaded function.
1. __init__(self: PyOpenColorIO.GradingToneTransform, style: PyOpenColorIO.GradingStyle = <GradingStyle.GRADING_LOG: 0>, values: PyOpenColorIO.GradingTone, dynamic: bool = False, dir: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
1. __init__(self: PyOpenColorIO.GradingToneTransform, values: PyOpenColorIO.GradingTone, style: PyOpenColorIO.GradingStyle = <GradingStyle.GRADING_LOG: 0>, dynamic: bool = False, dir: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
Creates an instance of :ref:`GradingToneTransform`.
@@ -40,10 +40,6 @@
Creates an instance of :ref:`GradingToneTransform`.
.. py:method:: GradingToneTransform.__str__(self: PyOpenColorIO.Transform) -> str
:module: PyOpenColorIO
.. py:method:: GradingToneTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
@@ -7,21 +7,11 @@
:module: PyOpenColorIO
.. py:method:: GroupTransform.GetWriteFormats() -> OpenColorIO_v2_0rc1::PyIterator<std::shared_ptr<OpenColorIO_v2_0rc1::GroupTransform>,1>
.. py:method:: GroupTransform.GetWriteFormats() -> PyOpenColorIO.GroupTransform.WriteFormatIterator
:module: PyOpenColorIO
:staticmethod:
.. py:class:: GroupTransform.WriteFormatIterator
:module: PyOpenColorIO
.. py:method:: GroupTransform.WriteFormatIterator.__init__(*args, **kwargs)
:module: PyOpenColorIO
Initialize self. See help(type(self)) for accurate signature.
.. py:method:: GroupTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
@@ -32,10 +22,6 @@
2. __init__(self: PyOpenColorIO.GroupTransform, transforms: List[PyOpenColorIO.Transform] = [], direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: GroupTransform.__str__(self: PyOpenColorIO.GroupTransform) -> str
:module: PyOpenColorIO
.. py:method:: GroupTransform.appendTransform(self: PyOpenColorIO.GroupTransform, transform: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
@@ -77,7 +63,7 @@
Overloaded function.
1. write(self: PyOpenColorIO.GroupTransform, config: OpenColorIO_v2_0rc1::Config, context: OpenColorIO_v2_0rc1::Context, formatName: str, fileName: str) -> None
1. write(self: PyOpenColorIO.GroupTransform, formatName: str, fileName: str, config: PyOpenColorIO.Config = None) -> None
Write the transforms comprising the group to the stream.
@@ -86,14 +72,14 @@
// What are the allowed writing output formats?
std::ostringstream formats;
formats << "Formats to write to: ";
for (int i = 0; i < GroupTransform::GetNumWriteFormats(); ++i)
for (int i = 0; i < :ref:`GroupTransform::GetNumWriteFormats`(); ++i)
{
if (i != 0) formats << ", ";
formats << GroupTransform::GetFormatNameByIndex(i);
formats << :ref:`GroupTransform::GetFormatNameByIndex`(i);
formats << " (." << GroupTransform::GetFormatExtensionByIndex(i) << ")";
}
2. write(self: PyOpenColorIO.GroupTransform, config: OpenColorIO_v2_0rc1::Config, context: OpenColorIO_v2_0rc1::Context, formatName: str) -> str
2. write(self: PyOpenColorIO.GroupTransform, formatName: str, config: PyOpenColorIO.Config = None) -> str
Write the transforms comprising the group to the stream.
@@ -102,14 +88,34 @@
// What are the allowed writing output formats?
std::ostringstream formats;
formats << "Formats to write to: ";
for (int i = 0; i < GroupTransform::GetNumWriteFormats(); ++i)
for (int i = 0; i < :ref:`GroupTransform::GetNumWriteFormats`(); ++i)
{
if (i != 0) formats << ", ";
formats << GroupTransform::GetFormatNameByIndex(i);
formats << :ref:`GroupTransform::GetFormatNameByIndex`(i);
formats << " (." << GroupTransform::GetFormatExtensionByIndex(i) << ")";
}
.. py:class:: WriteFormatIterator
:module: PyOpenColorIO.GroupTransform
.. py:method:: WriteFormatIterator.__getitem__(self: PyOpenColorIO.GroupTransform.WriteFormatIterator, arg0: int) -> tuple
:module: PyOpenColorIO.GroupTransform
.. py:method:: WriteFormatIterator.__iter__(self: PyOpenColorIO.GroupTransform.WriteFormatIterator) -> PyOpenColorIO.GroupTransform.WriteFormatIterator
:module: PyOpenColorIO.GroupTransform
.. py:method:: WriteFormatIterator.__len__(self: PyOpenColorIO.GroupTransform.WriteFormatIterator) -> int
:module: PyOpenColorIO.GroupTransform
.. py:method:: WriteFormatIterator.__next__(self: PyOpenColorIO.GroupTransform.WriteFormatIterator) -> tuple
:module: PyOpenColorIO.GroupTransform
.. py:class:: TransformIterator
:module: PyOpenColorIO.GroupTransform
@@ -71,3 +71,7 @@
:module: PyOpenColorIO
:value: <Interpolation.INTERP_UNKNOWN: 0>
.. py:property:: Interpolation.value
:module: PyOpenColorIO
@@ -32,10 +32,6 @@
:module: PyOpenColorIO
.. py:method:: LegacyViewingPipeline.__str__(self: PyOpenColorIO.LegacyViewingPipeline) -> str
:module: PyOpenColorIO
.. py:method:: LegacyViewingPipeline.getChannelView(self: PyOpenColorIO.LegacyViewingPipeline) -> PyOpenColorIO.Transform
:module: PyOpenColorIO
@@ -91,7 +87,7 @@
.. py:method:: LegacyViewingPipeline.setLooksOverride(self: PyOpenColorIO.LegacyViewingPipeline, looks: str) -> None
:module: PyOpenColorIO
A user can optionally override the looks that are, by default, used with the expected display / view combination. A common use case for this functionality is in an image viewing app, where per-shot looks are supported. If for some reason a per-shot look is not defined for the current :ref:`Context`, the Config::getProcessor fcn will not succeed by default. Thus, with this mechanism the viewing app could override to looks = "", and this will allow image display to continue (though hopefully) the interface would reflect this fallback option.
A user can optionally override the looks that are, by default, used with the expected display / view combination. A common use case for this functionality is in an image viewing app, where per-shot looks are supported. If for some reason a per-shot look is not defined for the current :ref:`Context`, the :ref:`Config::getProcessor` fcn will not succeed by default. Thus, with this mechanism the viewing app could override to looks = "", and this will allow image display to continue (though hopefully) the interface would reflect this fallback option.
Looks is a potentially comma (or colon) delimited list of lookNames, where +/- prefixes are optionally allowed to denote forward/inverse look specification (and forward is assumed in the absence of either).
@@ -24,10 +24,6 @@
2. __init__(self: PyOpenColorIO.LogAffineTransform, logSideSlope: List[float[3]] = [1.0, 1.0, 1.0], logSideOffset: List[float[3]] = [0.0, 0.0, 0.0], linSideSlope: List[float[3]] = [1.0, 1.0, 1.0], linSideOffset: List[float[3]] = [0.0, 0.0, 0.0], direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: LogAffineTransform.__str__(self: PyOpenColorIO.LogAffineTransform) -> str
:module: PyOpenColorIO
.. py:method:: LogAffineTransform.equals(self: PyOpenColorIO.LogAffineTransform, other: PyOpenColorIO.LogAffineTransform) -> bool
:module: PyOpenColorIO
@@ -6,24 +6,17 @@
.. py:class:: LogCameraTransform
:module: PyOpenColorIO
Same as :cpp:class:`:ref:`LogAffineTransform`` but with the addition of a linear segment near black. This formula is used for many camera logs (e.g., LogC) as well as ACEScct.
Same as :ref:`LogAffineTransform` but with the addition of a linear segment near black. This formula is used for many camera logs (e.g., LogC) as well as ACEScct.
- The linSideBreak specifies the point on the linear axis where the log and linear segments meet. It must be set (there is no default).
- The linearSlope specifies the slope of the linear segment of the forward (linToLog) transform. By default it is set equal to the slope of the log curve at the break point.
.. py:method:: LogCameraTransform.__init__(*args, **kwargs)
.. py:method:: LogCameraTransform.__init__(self: PyOpenColorIO.LogCameraTransform, linSideBreak: List[float[3]], base: float = 2.0, logSideSlope: List[float[3]] = [1.0, 1.0, 1.0], logSideOffset: List[float[3]] = [0.0, 0.0, 0.0], linSideSlope: List[float[3]] = [1.0, 1.0, 1.0], linSideOffset: List[float[3]] = [0.0, 0.0, 0.0], linearSlope: List[float] = [], direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.LogCameraTransform) -> None
2. __init__(self: PyOpenColorIO.LogCameraTransform, linSideBreak: List[float[3]], logSideSlope: List[float[3]] = [1.0, 1.0, 1.0], logSideOffset: List[float[3]] = [0.0, 0.0, 0.0], linSideSlope: List[float[3]] = [1.0, 1.0, 1.0], linSideOffset: List[float[3]] = [0.0, 0.0, 0.0], direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: LogCameraTransform.__str__(self: PyOpenColorIO.LogCameraTransform) -> str
:module: PyOpenColorIO
LinSideBreak must be set for the transform to be valid (there is no default).
.. py:method:: LogCameraTransform.equals(self: PyOpenColorIO.LogCameraTransform, other: PyOpenColorIO.LogCameraTransform) -> bool
@@ -47,8 +40,6 @@
.. py:method:: LogCameraTransform.getLinSideBreakValue(self: PyOpenColorIO.LogCameraTransform) -> List[float[3]]
:module: PyOpenColorIO
Return true if LinSideBreak values were set, false if they were not.
.. py:method:: LogCameraTransform.getLinSideOffsetValue(self: PyOpenColorIO.LogCameraTransform) -> List[float[3]]
:module: PyOpenColorIO
@@ -61,7 +52,7 @@
.. py:method:: LogCameraTransform.getLinearSlopeValue(self: PyOpenColorIO.LogCameraTransform) -> List[float[3]]
:module: PyOpenColorIO
Return true if LinearSlope values were set, false if they were not.
Return LinearSlope or 3 qnan values if not defined.
.. py:method:: LogCameraTransform.getLogSideOffsetValue(self: PyOpenColorIO.LogCameraTransform) -> List[float[3]]
@@ -71,11 +62,17 @@
.. py:method:: LogCameraTransform.getLogSideSlopeValue(self: PyOpenColorIO.LogCameraTransform) -> List[float[3]]
:module: PyOpenColorIO
Get/Set values for the R, G, B components.
.. py:method:: LogCameraTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: LogCameraTransform.isLinearSlopeValueSet(self: PyOpenColorIO.LogCameraTransform) -> bool
:module: PyOpenColorIO
.. py:method:: LogCameraTransform.setBase(self: PyOpenColorIO.LogCameraTransform, base: float) -> None
:module: PyOpenColorIO
@@ -103,7 +100,6 @@
Set LinearSlope value.
.. note::
You must call setLinSideBreakValue before calling this.
@@ -45,3 +45,7 @@
:module: PyOpenColorIO
:value: <LoggingLevel.LOGGING_LEVEL_WARNING: 1>
.. py:property:: LoggingLevel.value
:module: PyOpenColorIO
@@ -23,10 +23,6 @@
2. __init__(self: PyOpenColorIO.LogTransform, base: float = 2.0, direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: LogTransform.__str__(self: PyOpenColorIO.LogTransform) -> str
:module: PyOpenColorIO
.. py:method:: LogTransform.equals(self: PyOpenColorIO.LogTransform, other: PyOpenColorIO.LogTransform) -> bool
:module: PyOpenColorIO
@@ -6,6 +6,8 @@
.. py:class:: Look
:module: PyOpenColorIO
The *:ref:`Look`* is an 'artistic' image modification, in a specified image state. The processSpace defines the :ref:`ColorSpace` the image is required to be in, for the math to apply correctly.
.. py:method:: Look.__init__(*args, **kwargs)
:module: PyOpenColorIO
@@ -17,10 +19,6 @@
2. __init__(self: PyOpenColorIO.Look, name: str = '', processSpace: str = '', transform: PyOpenColorIO.Transform = None, inverseTransform: PyOpenColorIO.Transform = None, description: str = '') -> None
.. py:method:: Look.__str__(self: PyOpenColorIO.Look) -> str
:module: PyOpenColorIO
.. py:method:: Look.getDescription(self: PyOpenColorIO.Look) -> str
:module: PyOpenColorIO
@@ -14,11 +14,7 @@
1. __init__(self: PyOpenColorIO.LookTransform) -> None
2. __init__(self: PyOpenColorIO.LookTransform, src: str = '', dst: str = '', looks: str = '', direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>, skipColorSpaceConversion: bool = False) -> None
.. py:method:: LookTransform.__str__(self: PyOpenColorIO.LookTransform) -> str
:module: PyOpenColorIO
2. __init__(self: PyOpenColorIO.LookTransform, src: str, dst: str, looks: str = '', skipColorSpaceConversion: bool = False, direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: LookTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
@@ -10,9 +10,11 @@
Members:
HUE_NONE :
HUE_NONE : No adjustment.
HUE_DW3 :
HUE_DW3 : Algorithm used in ACES Output Transforms through v0.7.
HUE_WYPN : Weighted Yellow Power Norm -- NOT IMPLEMENTED YET.
.. py:method:: name() -> str
:property:
@@ -26,3 +28,12 @@
:module: PyOpenColorIO
:value: <Lut1DHueAdjust.HUE_NONE: 0>
.. py:attribute:: Lut1DHueAdjust.HUE_WYPN
:module: PyOpenColorIO
:value: <Lut1DHueAdjust.HUE_WYPN: 2>
.. py:property:: Lut1DHueAdjust.value
:module: PyOpenColorIO
@@ -27,10 +27,6 @@
Create an identity 1D-LUT with specific length and half-domain setting. Will throw for lengths longer than 1024x1024.
.. py:method:: Lut1DTransform.__str__(self: PyOpenColorIO.Lut1DTransform) -> str
:module: PyOpenColorIO
.. py:method:: Lut1DTransform.equals(self: PyOpenColorIO.Lut1DTransform, other: PyOpenColorIO.Lut1DTransform) -> bool
:module: PyOpenColorIO
@@ -27,10 +27,6 @@
Create an identity 3D-LUT with specific grid size. Will throw for grid size larger than 129.
.. py:method:: Lut3DTransform.__str__(self: PyOpenColorIO.Lut3DTransform) -> str
:module: PyOpenColorIO
.. py:method:: Lut3DTransform.equals(self: PyOpenColorIO.Lut3DTransform, other: PyOpenColorIO.Lut3DTransform) -> bool
:module: PyOpenColorIO

Some files were not shown because too many files have changed in this diff Show More