Compare commits

...
47 Commits
Author SHA1 Message Date
d2b672f7e7 Integration - Port fixes from main to RB-2.0 - Adsk Contrib (#1752)
* Changing version release type for 2.0.5 official release.

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

* 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>
(cherry picked from commit 8a93946cb3)
Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>

* replace texture2D function with texture for GLSL 1.3 (#1723)

Signed-off-by: Bart Styczen <bart.styczen@cine.dev>

Signed-off-by: Bart Styczen <bart.styczen@cine.dev>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
(cherry picked from commit d5cedbf551)
Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>

* Adsk contrib - Processor cache does not detect changes in cccid (#1726)

* For Looks that has a FileTransform and for Colorspace with FileTransfrom, add the CCCID to the processor's cache key for that transform.

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

* Removing the workaround in the related unit tests and fixing the issue by adding the environment variable to the context using setStringVar. The processor's cache key is using the context cache ID which has all the context variables taken into account.

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

* Now using addStringVars and creating a new context instead of reusing the one used for the filename.

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

* Adding cccid to the context when there are no context variable.

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

* Adding a few unit tests to test that the processor is different when changing the FileTransform's CCCID.

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

* Using setStringVar to set CCNUM context variable in unit test.

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

* Adding a test in FileTransform to test CollectContextVariables directly.

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

* Minor tweaks for the unit test

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>
(cherry picked from commit 4fa775030a)
Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>

* Fix inverse Lut1D optimization bug (#1743)

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

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
(cherry picked from commit 5152635a18)
Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
Signed-off-by: Bart Styczen <bart.styczen@cine.dev>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
Co-authored-by: bartstyczen <93516126+bartstyczen@users.noreply.github.com>
2023-01-05 20:19:09 -05:00
Cédrik Fuoco 7de13fc20a Bump version from 2.0.4 to 2.0.5 and add dev suffix (#1657)
Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>
2022-06-21 22:05:53 -04:00
Cédrik Fuoco d4435d33e7 Adsk contrib - Remove dev suffix from RB-2.0 (#1652)
* Removing dev suffix in RB-2.0

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

* Keep the line but make it empty instead

Signed-off-by: Cedrik Fuoco <cedrik.fuoco@autodesk.com>
2022-06-01 20:35:08 -04:00
Patrick HodoulandDoug Walker 73229d885d Adsk Contrib - Fix half-domain Lut1D issue for values above HALF_MAX (#1614) (#1625)
* 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>

Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2022-04-06 10:12:35 -04:00
Patrick HodoulandRémi Achard 2983316028 Port from main to RB-2.0 - Python copy support (#1575) (#1612)
* 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>

* Unit test fix

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

Co-authored-by: Rémi Achard <remiachard@gmail.com>
2022-03-11 09:04:52 -05:00
Patrick HodoulandMichael Dolan f74c1b88a9 Port from main to RB-2.0 - Add virtual display python bindings (#1464) (#1611)
* 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>

* Fix the Config Python binding

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

Co-authored-by: Michael Dolan <michdolan@gmail.com>
2022-03-11 08:15:41 -05:00
Patrick Hodoul 14f13c8b4e Open the 2.0.4 patch release (#1570)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-12-17 08:49:21 -05:00
Patrick Hodoul 8fed1b3bc6 Prepare the 2.0.3 patch release (#1560)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-12-14 12:10:33 -05:00
52faf7449c Adsk Contrib - Fix RGB spline curve inversion when the slope is zero (#1539) (#1554)
* 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>
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-12-12 09:11:47 -05:00
Patrick Hodoul e1b3ffecdd Adsk Contrib - Fix some weaknesses in the search path validation (#1535) (#1552)
* 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-10 15:37:15 -05:00
Patrick HodoulandBo Zhou a8626f8b45 Write converted image with output colorspace (#1420) (#1500) (#1531)
* 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>

Co-authored-by: Bo Zhou <bo.schwarzstein@gmail.com>
2021-11-03 16:30:56 -04:00
Patrick Hodoul df74525ef9 Adsk Contrib - Fix the CDL write for CLF file format (#1526) (#1530)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-11-03 07:53:49 -04:00
Patrick Hodoul 9b619d837a Adsk Contrib - Change RB-2.0 branch to the version '2.0.3dev' (#1480)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-09-16 08:46:02 -04:00
Patrick Hodoul 056b7b0cb0 Adsk Contrib - Change the version to 2.0.2 (#1476)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-09-03 15:20:34 -04:00
5ef7fe09eb Explicitly add the "Half" include directory to "ociodisplay" and "ociolutimage" apps "CMakeLists.txt" files. (#1463)
Signed-off-by: Thomas Mansencal <thomas.mansencal@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
Co-authored-by: Michael Dolan <michdolan@gmail.com>
2021-08-27 07:27:05 -04:00
9b9819f7d7 FindPystring: Also find a static pystring lib (#1449) (#1467)
Signed-off-by: Leander Schulten <Leander.Schulten@rwth-aachen.de>

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

Co-authored-by: autoantwort <41973254+autoantwort@users.noreply.github.com>
Co-authored-by: Michael Dolan <michdolan@gmail.com>
2021-08-27 00:54:20 -04:00
Patrick Hodoul ecdc10c458 Adsk Contrib - Fix the processor creation using a DisplayViewTransform with a no-op look (#1460) (#1470)
* 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-26 22:19:50 -04:00
Patrick Hodoul 8dc5f6e52b Adsk Contrib - Fix a bit depth optimization bug (#1446) (#1459)
* 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-23 18:32:30 -04:00
Patrick Hodoulanddoug-walker eb8e338598 Update CLF test files, add CLF python scripts (#1436) (#1447)
* 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>
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-08-12 11:59:07 -04:00
d7b41f6c82 Port from master to RB-2.0 - Adsk Contrib - Improve File Rules support for v1 (#1445)
* 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>

* Add missing file change

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-08-12 10:28:58 -04:00
Patrick Hodoulanddoug-walker 9eb736bd84 Adsk Contrib - Various code & doc cleanups (#1414) (#1444)
* 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>

Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-08-11 18:45:40 -04:00
Patrick HodoulandRémi Achard 0472317713 Protect against empty look result color space (#1437) (#1443)
Signed-off-by: Rémi Achard <remiachard@gmail.com>

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

Co-authored-by: Rémi Achard <remiachard@gmail.com>
2021-08-11 13:32:57 -04:00
Patrick HodoulandMichael Dolan 7ffd61d5e7 Adsk Contrib - Fix a bug with the Vc++ compilation flags. (#1419) (#1431)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

Co-authored-by: Michael Dolan <michdolan@gmail.com>
2021-07-26 17:04:16 -04:00
Patrick HodoulandMichael Dolan 37349220e7 Adsk Contrib - Fix FixedFunctionTransform::CreateEditableCopy() (#1418) (#1430)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

Co-authored-by: Michael Dolan <michdolan@gmail.com>
2021-07-26 09:24:31 -04:00
0064973150 Use CMake visibility flags (#1411) (#1428)
* 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>

Co-authored-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-07-13 16:33:21 -04:00
Patrick Hodoulanddoug-walker c0a02f3f97 Adsk Contrib - Improve DX11 & Cg fragment shader language support (#1406) (#1427)
* 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>

Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-07-13 00:50:52 -04:00
267b5d0eaf Add OpenColorIOConfig.cmake generation (#1397) (#1426)
* 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>

Co-authored-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-07-12 19:46:36 -04:00
Patrick Hodoul 86d7fb56ab Adsk Contrib - Fix some bugs found by Maya and SonarCloud (#1403) (#1425)
* 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-07-12 16:52:39 -04:00
Patrick Hodoul 54e5512ca1 Adsk Contrib - Fix GPU build on RB-2.0 (#1412)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-06-28 15:04:05 -04:00
Larry GritzandPatrick Hodoul 12ee9db34f Allow choice of specific python release (#1410)
* 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>
2021-06-20 18:16:18 -04:00
Larry Gritz 67729901c5 Hide dependency symbol visibility (#1409)
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>
2021-06-19 18:03:06 -04:00
Patrick Hodoul 0645fdd6b5 Adsk Contrib - Change the library version to 2.0.1 (#1396)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-05-04 00:36:34 -04:00
Patrick Hodoul 33185815e4 Adsk Contrib - Improve the context variable validation (#1387) (#1395)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-05-03 16:38:14 -04:00
Brendan Bolles 7067004759 After Effects and Photoshop plug-in build updates (#1394)
Signed-off-by: Brendan Bolles <brendan@fnordware.com>
2021-05-03 08:35:26 -04:00
Patrick Hodoul 9d964541c1 Adsk Contrib - Fix CDL issue (#1370) (#1392)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-04-29 19:28:58 -04:00
Patrick Hodoul d46e367f4b Adsk Contrib - [v2.0.1] - Integration of PR 1365 (#1390)
* 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>

* Fix a new warning

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-04-29 17:11:49 -04:00
Patrick Hodoul 5346a5c08b Adsk Contrib - Add negative stride support for CPU processing (#1353) (#1389)
* 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-26 10:25:50 -04:00
Patrick Hodoul 467f90d4ed Adsk Contrib - Fix the legacy GPU path (#1352) (#1388)
* 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-26 08:40:54 -04:00
Patrick Hodoulanddoug-walker f44dc562ed Adsk Contrib - Improve the C++ version detection (#1351) (#1384)
* 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>

Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-04-22 19:46:29 -04:00
Patrick Hodoul a984c22cb2 Adsk Contrib - Fix 'setup_ocio' script support (#1350) (#1383)
* 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-22 18:27:19 -04:00
Patrick Hodoul 229ec9cb3a Adsk Contrib - Fix env. variable name (#1339) (#1382)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-04-22 17:20:18 -04:00
Patrick Hodoul 3ae974a03b Adsk Contrib - Add the RPATH support (#1338) (#1381)
* 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-04-22 15:28:49 -04:00
Patrick Hodoul 066a9ee845 Adsk Contrib - Misc. improvements (#1336) (#1380)
* 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-04-22 11:48:54 -04:00
Patrick Hodoulanddoug-walker 4508967c09 Adsk Contrib - Fix some GLSL version mismatches. (#1306) (#1379)
* 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>

Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-04-22 10:14:05 -04:00
Patrick HodoulandMichael Dolan 544c833115 Adsk Contrib - Various build fixes (#1324) (#1378)
* 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>

Co-authored-by: Michael Dolan <michdolan@gmail.com>
2021-04-22 08:49:21 -04:00
Patrick HodoulandBrendan Bolles f51291111c Update After Effects and Photoshop plug-ins (#1303) (#1375)
* 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>

Co-authored-by: Brendan Bolles <brendan@fnordware.com>
2021-04-22 07:11:47 -04:00
Bernard Lefebvre cb5e319d0f Adsk Contrib - RB-2.0 release (#1289)
* Adsk Contrib - Shader textures now available via Python (#1268) 7110425732

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

* Add roles to API and fixes (#1267) Bernard Lefebvre 8cf0211c3f

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

* Adsk Contrib - Python repr and LogCameraTransform fixes (#1270) c033d11ee3

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

* Fix issue #1262 (#1271) d51962acf0

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

* Use OIIO-provided CMake find module (#1266) Michael Dolan <michdolan@gmail.com> 8774ebf739

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

* Transform Python Binding Fix (#1277) Frankie Eder <frankaeder@gmail.com> c324ba5438

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

* Adsk Contrib - Avoid NaN values in certain Lut1D arrays (#1272) 50e5d8b37d

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

* Adsk Contrib - More python tests and bindings fixes (#1274) 574ccd856e

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

* Restructure PyOpenColorIO, complete PyGpuShaderDesc (#1275) Michael Dolan <michdolan@gmail.com> 081b8de4d2

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

* Add UNIFORM_FLOAT3, setStrictParsingEnabled to PyOpenColorIO (#1280) Michael Dolan <michdolan@gmail.com> 73be29a4ba

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

* Adsk Contrib - Add new ACES builtin transforms (#1281) doug-walker <43830961+doug-walker@users.noreply.github.com> 83392109b6

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

* Release v2 (#1279)  6d46d8468a

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

* Test forgot to declare logger and fails if numpy is missing (#1290) 87f09ecad5

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

* Fix applyRGB (#1291)  bc88857f48

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
2021-01-28 17:07:14 -05:00
437 changed files with 290208 additions and 72988 deletions
+1 -1
View File
@@ -25,7 +25,7 @@ jobs:
linux_gpu:
name: 'Linux CentOS 7 VFX CY2020 GPU <GCC 6.3.1>'
# Don't run on OCIO forks
if: github.repository == 'AcademySoftwareFoundation/OpenColorIO'
if: github.event.push.repository.full_name == 'AcademySoftwareFoundation/OpenColorIO'
# GH-hosted VM. The build runs in CentOS 7 'container' hard-coded in
# AWS CodeBuild project.
# TODO: Add support for dynamic GH Action defined CodeBuild
+66 -17
View File
@@ -28,13 +28,13 @@ endif()
# Project definition.
project(OpenColorIO
VERSION 2.0.0
VERSION 2.0.5
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 "")
enable_testing()
@@ -118,6 +118,9 @@ 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)
@@ -127,14 +130,6 @@ option(OCIO_WARNING_AS_ERROR "Set build error level for CI testing" OFF)
# 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)
###############################################################################
@@ -249,11 +244,65 @@ include(FindExtPackages)
###############################################################################
# Progress to other sources
add_subdirectory(ext)
add_subdirectory(include)
add_subdirectory(src)
add_subdirectory(tests)
if(OCIO_BUILD_DOCS)
add_subdirectory(docs)
endif()
add_subdirectory(vendor)
if(OCIO_BUILD_DOCS)
add_subdirectory(docs)
endif()
add_subdirectory(tests)
add_subdirectory(src)
add_subdirectory(include)
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 share/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}"
)
+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,8 @@
:module: PyOpenColorIO
:value: <Allocation.ALLOCATION_UNKNOWN: 0>
.. py:method:: Allocation.value
:module: PyOpenColorIO
:property:
@@ -19,9 +19,11 @@
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
.. py:method:: AllocationTransform.__str__()
:module: PyOpenColorIO
Return str(self).
.. py:method:: AllocationTransform.getAllocation(self: PyOpenColorIO.AllocationTransform) -> PyOpenColorIO.Allocation
:module: PyOpenColorIO
@@ -145,6 +145,10 @@
.. 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
@@ -75,3 +75,8 @@
:module: PyOpenColorIO
:value: <BitDepth.BIT_DEPTH_UNKNOWN: 0>
.. py:method:: BitDepth.value
:module: PyOpenColorIO
:property:
@@ -19,9 +19,11 @@
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
.. py:method:: BuiltinTransform.__str__()
:module: PyOpenColorIO
Return str(self).
.. py:method:: BuiltinTransform.getDescription(self: PyOpenColorIO.BuiltinTransform) -> str
:module: PyOpenColorIO
@@ -31,3 +31,8 @@
:module: PyOpenColorIO
:value: <CDLStyle.CDL_NO_CLAMP: 1>
.. py:method:: CDLStyle.value
:module: PyOpenColorIO
:property:
@@ -18,16 +18,18 @@
Load the CDL from the src .cdl, .cc, or .ccc file.
.. note::
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:
Load all of the CDLs in a .cdl or .ccc file into a single :ref:`GroupTransform`.
.. note::
This may be useful as a quicker way for applications to check the contents of each of the CDLs. The src must be an absolute path reference, no relative directory or envvar resolution is performed.
@@ -44,9 +46,11 @@
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
.. py:method:: CDLTransform.__str__()
:module: PyOpenColorIO
Return str(self).
.. py:method:: CDLTransform.equals(self: PyOpenColorIO.CDLTransform, other: PyOpenColorIO.CDLTransform) -> bool
:module: PyOpenColorIO
@@ -47,3 +47,8 @@
:module: PyOpenColorIO
:value: <ChannelOrdering.CHANNEL_ORDERING_RGBA: 0>
.. py:method:: ChannelOrdering.value
:module: PyOpenColorIO
:property:
@@ -7,16 +7,6 @@
:module: PyOpenColorIO
.. py:class:: ColorSpace.ColorSpaceAliasIterator
:module: PyOpenColorIO
.. py:method:: ColorSpace.ColorSpaceAliasIterator.__init__(*args, **kwargs)
:module: PyOpenColorIO
Initialize self. See help(type(self)) for accurate signature.
.. py:method:: ColorSpace.__init__(*args, **kwargs)
:module: PyOpenColorIO
@@ -29,10 +19,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
@@ -44,6 +30,7 @@
Add a single category.
.. note::
Will do nothing if the category already exists.
@@ -135,6 +122,7 @@
Remove a category.
.. note::
Will do nothing if the category is missing.
@@ -204,3 +192,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,8 @@
:module: PyOpenColorIO
:value: <ColorSpaceDirection.COLORSPACE_DIR_TO_REFERENCE: 0>
.. py:method:: ColorSpaceDirection.value
:module: PyOpenColorIO
:property:
@@ -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
@@ -17,9 +17,11 @@
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
.. py:method:: ColorSpaceTransform.__str__()
:module: PyOpenColorIO
Return str(self).
.. py:method:: ColorSpaceTransform.getDataBypass(self: PyOpenColorIO.ColorSpaceTransform) -> bool
:module: PyOpenColorIO
@@ -31,3 +31,8 @@
:module: PyOpenColorIO
:value: <ColorSpaceVisibility.COLORSPACE_INACTIVE: 1>
.. py:method:: ColorSpaceVisibility.value
:module: PyOpenColorIO
:property:
+50 -50
View File
@@ -47,20 +47,20 @@
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:method:: Config.__init__(self: PyOpenColorIO.Config) -> None
@@ -76,7 +76,7 @@
: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.
@@ -122,11 +122,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
@@ -145,7 +145,7 @@
Will throw if view or colorSpaceName are null or empty.
.. py:method:: Config.addViewTransform(self: PyOpenColorIO.Config, viewTransform: OpenColorIO_v2_0rc1::ViewTransform) -> None
.. py:method:: Config.addViewTransform(self: PyOpenColorIO.Config, viewTransform: PyOpenColorIO.ViewTransform) -> None
:module: PyOpenColorIO
@@ -208,7 +208,7 @@
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`).
2. getCacheID(self: PyOpenColorIO.Config, context: OpenColorIO_v2_0rc1::Context) -> str
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`).
@@ -219,26 +219,19 @@
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.
.. note::
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.
@@ -257,7 +250,7 @@
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.
@@ -273,7 +266,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
@@ -291,7 +284,7 @@
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.
.. 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.
@@ -368,7 +361,7 @@
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 +371,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 +403,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 +432,33 @@
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
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) -> OpenColorIO_v2_0rc1::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
6. getProcessor(self: PyOpenColorIO.Config, context: PyOpenColorIO.Context, srcColorSpaceName: str, display: str, view: str, direction: PyOpenColorIO.TransformDirection) -> PyOpenColorIO.Processor
cpp:function::
7. getProcessor(self: PyOpenColorIO.Config, transform: PyOpenColorIO.Transform) -> OpenColorIO_v2_0rc1::Processor
7. 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
8. 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
9. 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 +481,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 +493,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.
@@ -558,6 +551,7 @@
Remove a color space from the configuration.
.. note::
It does not throw an exception. Name must be the canonical name. If a role name or alias is provided or if the name is not in the config, nothing is done.
@@ -648,7 +642,7 @@
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.
@@ -710,20 +704,26 @@
Set all search paths as a concatenated string, ':' to separate the paths.
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.
.. note::
The argument is cloned.
@@ -813,7 +813,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 +825,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 +853,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 +865,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 +1013,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 +1025,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 +1053,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 +1065,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 +1093,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 +1105,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 +1133,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 +1145,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
@@ -17,10 +17,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
@@ -18,7 +18,7 @@
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 +37,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
@@ -17,9 +17,11 @@
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
.. py:method:: DisplayViewTransform.__str__()
:module: PyOpenColorIO
Return str(self).
.. py:method:: DisplayViewTransform.getDataBypass(self: PyOpenColorIO.DisplayViewTransform) -> bool
:module: PyOpenColorIO
@@ -27,19 +27,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 +55,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,8 @@
:module: PyOpenColorIO
:value: <DynamicPropertyType.DYNAMIC_PROPERTY_GRADING_TONE: 5>
.. py:method:: DynamicPropertyType.value
:module: PyOpenColorIO
:property:
@@ -31,3 +31,8 @@
:module: PyOpenColorIO
:value: <EnvironmentMode.ENV_ENVIRONMENT_UNKNOWN: 0>
.. py:method:: EnvironmentMode.value
:module: PyOpenColorIO
:property:
@@ -23,9 +23,11 @@
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
.. py:method:: ExponentTransform.__str__()
:module: PyOpenColorIO
Return str(self).
.. py:method:: ExponentTransform.equals(self: PyOpenColorIO.ExponentTransform, other: PyOpenColorIO.ExponentTransform) -> bool
:module: PyOpenColorIO
@@ -25,9 +25,11 @@
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
.. py:method:: ExponentWithLinearTransform.__str__()
:module: PyOpenColorIO
Return str(self).
.. py:method:: ExponentWithLinearTransform.equals(self: PyOpenColorIO.ExponentWithLinearTransform, other: PyOpenColorIO.ExponentWithLinearTransform) -> bool
:module: PyOpenColorIO
@@ -33,3 +33,8 @@
:module: PyOpenColorIO
:value: <ExposureContrastStyle.EXPOSURE_CONTRAST_VIDEO: 1>
.. py:method:: ExposureContrastStyle.value
:module: PyOpenColorIO
:property:
@@ -19,9 +19,11 @@
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
.. py:method:: ExposureContrastTransform.__str__()
:module: PyOpenColorIO
Return str(self).
.. py:method:: ExposureContrastTransform.equals(self: PyOpenColorIO.ExposureContrastTransform, other: PyOpenColorIO.ExposureContrastTransform) -> bool
:module: PyOpenColorIO
@@ -17,9 +17,11 @@
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
.. py:method:: FileTransform.__str__()
:module: PyOpenColorIO
Return str(self).
.. 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_GAMUTMAP_13 : ACES 1.3 Gamut mapping algorithm -- NOT IMPLEMENTED YET.
.. 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_GAMUTMAP_13
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_GAMUTMAP_13: 12>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_ACES_GLOW_03
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_GLOW_03: 2>
@@ -82,3 +103,8 @@
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_XYZ_TO_xyY: 7>
.. py:method:: FixedFunctionStyle.value
:module: PyOpenColorIO
:property:
@@ -9,19 +9,15 @@
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)
.. py:method:: FixedFunctionTransform.__init__(self: PyOpenColorIO.FixedFunctionTransform, style: PyOpenColorIO.FixedFunctionStyle, params: List[float] = [], direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
: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.__str__()
:module: PyOpenColorIO
Return str(self).
.. py:method:: FixedFunctionTransform.equals(self: PyOpenColorIO.FixedFunctionTransform, other: PyOpenColorIO.FixedFunctionTransform) -> bool
:module: PyOpenColorIO
@@ -47,3 +47,8 @@
:module: PyOpenColorIO
:value: <GpuLanguage.GPU_LANGUAGE_HLSL_DX11: 4>
.. py:method:: GpuLanguage.value
:module: PyOpenColorIO
:property:
@@ -13,19 +13,11 @@
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
@@ -13,18 +13,6 @@
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.
.. py:method:: GpuShaderCreator.__init__(self: PyOpenColorIO.GpuShaderCreator) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.add3DTexture(self: PyOpenColorIO.GpuShaderCreator, textureName: str, samplerName: str, edgeLen: int, interpolation: PyOpenColorIO.Interpolation, values: float) -> None
:module: PyOpenColorIO
.. 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
.. py:method:: GpuShaderCreator.addToDeclareShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
@@ -85,7 +73,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
@@ -180,11 +168,16 @@
:value: <TextureType.TEXTURE_RGB_CHANNEL: 1>
.. py:method:: TextureType.value
:module: PyOpenColorIO.GpuShaderCreator
:property:
.. 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 +189,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
@@ -61,7 +61,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
@@ -87,10 +87,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 +99,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
@@ -121,14 +117,6 @@
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
.. py:method:: GpuShaderDesc.getPixelName(self: PyOpenColorIO.GpuShaderCreator) -> str
:module: PyOpenColorIO
@@ -140,15 +128,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
@@ -214,6 +208,40 @@
:value: <TextureType.TEXTURE_RGB_CHANNEL: 1>
.. py:method:: TextureType.value
:module: PyOpenColorIO.GpuShaderDesc
:property:
.. 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:method:: UniformData.type
:module: PyOpenColorIO.GpuShaderDesc
:property:
.. py:class:: Texture
:module: PyOpenColorIO.GpuShaderDesc
@@ -223,6 +251,10 @@
:property:
.. py:method:: Texture.getValues(self: PyOpenColorIO.GpuShaderDesc.Texture) -> numpy.ndarray
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: Texture.height
:module: PyOpenColorIO.GpuShaderDesc
:property:
@@ -257,6 +289,10 @@
:property:
.. py:method:: Texture3D.getValues(self: PyOpenColorIO.GpuShaderDesc.Texture3D) -> numpy.ndarray
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: Texture3D.interpolation
:module: PyOpenColorIO.GpuShaderDesc
:property:
@@ -272,6 +308,26 @@
:property:
.. 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
.. py:class:: TextureIterator
:module: PyOpenColorIO.GpuShaderDesc
@@ -316,7 +372,7 @@
:module: PyOpenColorIO.GpuShaderDesc
.. 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 +384,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,10 +19,6 @@
2. __init__(self: PyOpenColorIO.GradingControlPoint, x: float = 0.0, y: float = 0.0) -> None
.. py:method:: GradingControlPoint.__str__(self: PyOpenColorIO.GradingControlPoint) -> str
:module: PyOpenColorIO
.. py:method:: GradingControlPoint.x
:module: PyOpenColorIO
:property:
@@ -23,10 +23,6 @@
:module: PyOpenColorIO
.. py:method:: GradingPrimary.__str__(self: PyOpenColorIO.GradingPrimary) -> str
:module: PyOpenColorIO
.. py:method:: GradingPrimary.brightness
:module: PyOpenColorIO
:property:
@@ -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,9 +32,11 @@
Creates an instance of :ref:`GradingPrimaryTransform`.
.. py:method:: GradingPrimaryTransform.__str__(self: PyOpenColorIO.Transform) -> str
.. py:method:: GradingPrimaryTransform.__str__()
:module: PyOpenColorIO
Return str(self).
.. py:method:: GradingPrimaryTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
@@ -18,11 +18,7 @@
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
.. py:method:: GradingRGBCurve.__str__(self: PyOpenColorIO.GradingRGBCurve) -> str
:module: PyOpenColorIO
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.blue
@@ -1,118 +1,120 @@
..
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.__str__()
:module: PyOpenColorIO
Return str(self).
.. 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,10 +19,6 @@
2. __init__(self: PyOpenColorIO.GradingRGBM, red: float, green: float, blue: float, master: float) -> None
.. py:method:: GradingRGBM.__str__(self: PyOpenColorIO.GradingRGBM) -> str
:module: PyOpenColorIO
.. py:method:: GradingRGBM.blue
:module: PyOpenColorIO
:property:
@@ -21,10 +21,6 @@
3. __init__(self: PyOpenColorIO.GradingRGBMSW, start: float, width: float) -> None
.. py:method:: GradingRGBMSW.__str__(self: PyOpenColorIO.GradingRGBMSW) -> str
:module: PyOpenColorIO
.. py:method:: GradingRGBMSW.blue
:module: PyOpenColorIO
:property:
@@ -33,3 +33,8 @@
:module: PyOpenColorIO
:value: <GradingStyle.GRADING_VIDEO: 2>
.. py:method:: GradingStyle.value
:module: PyOpenColorIO
:property:
@@ -13,10 +13,6 @@
:module: PyOpenColorIO
.. py:method:: GradingTone.__str__(self: PyOpenColorIO.GradingTone) -> str
:module: PyOpenColorIO
.. py:method:: GradingTone.blacks
: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,9 +40,11 @@
Creates an instance of :ref:`GradingToneTransform`.
.. py:method:: GradingToneTransform.__str__(self: PyOpenColorIO.Transform) -> str
.. py:method:: GradingToneTransform.__str__()
:module: PyOpenColorIO
Return str(self).
.. 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,9 +22,11 @@
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
.. py:method:: GroupTransform.__str__()
:module: PyOpenColorIO
Return str(self).
.. py:method:: GroupTransform.appendTransform(self: PyOpenColorIO.GroupTransform, transform: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
@@ -77,10 +69,11 @@
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.
Writing (as opposed to Baking) is a lossless process. An exception is thrown if the processor cannot be losslessly written to the specified file format. Transforms such as :ref:`FileTransform` or :ref:`ColorSpaceTransform` are resolved into write-able simple transforms using the config and context. Supported formats include CTF, CLF, and CDL. All available formats can be listed with the following: .. code-block:: cpp
// What are the allowed writing output formats?
@@ -93,10 +86,11 @@
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.
Writing (as opposed to Baking) is a lossless process. An exception is thrown if the processor cannot be losslessly written to the specified file format. Transforms such as :ref:`FileTransform` or :ref:`ColorSpaceTransform` are resolved into write-able simple transforms using the config and context. Supported formats include CTF, CLF, and CDL. All available formats can be listed with the following: .. code-block:: cpp
// What are the allowed writing output formats?
@@ -110,6 +104,26 @@
}
.. 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,8 @@
:module: PyOpenColorIO
:value: <Interpolation.INTERP_UNKNOWN: 0>
.. py:method:: Interpolation.value
:module: PyOpenColorIO
:property:
@@ -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
@@ -24,9 +24,11 @@
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
.. py:method:: LogAffineTransform.__str__()
:module: PyOpenColorIO
Return str(self).
.. py:method:: LogAffineTransform.equals(self: PyOpenColorIO.LogAffineTransform, other: PyOpenColorIO.LogAffineTransform) -> bool
:module: PyOpenColorIO
@@ -6,25 +6,23 @@
.. 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
LinSideBreak must be set for the transform to be valid (there is no default).
.. py:method:: LogCameraTransform.__str__(self: PyOpenColorIO.LogCameraTransform) -> str
.. py:method:: LogCameraTransform.__str__()
:module: PyOpenColorIO
Return str(self).
.. py:method:: LogCameraTransform.equals(self: PyOpenColorIO.LogCameraTransform, other: PyOpenColorIO.LogCameraTransform) -> bool
:module: PyOpenColorIO
@@ -47,8 +45,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 +57,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 +67,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
@@ -45,3 +45,8 @@
:module: PyOpenColorIO
:value: <LoggingLevel.LOGGING_LEVEL_WARNING: 1>
.. py:method:: LoggingLevel.value
:module: PyOpenColorIO
:property:
@@ -23,9 +23,11 @@
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
.. py:method:: LogTransform.__str__()
:module: PyOpenColorIO
Return str(self).
.. py:method:: LogTransform.equals(self: PyOpenColorIO.LogTransform, other: PyOpenColorIO.LogTransform) -> bool
:module: PyOpenColorIO
@@ -17,10 +17,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,12 +14,14 @@
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
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.__str__(self: PyOpenColorIO.LookTransform) -> str
.. py:method:: LookTransform.__str__()
:module: PyOpenColorIO
Return str(self).
.. py:method:: LookTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
@@ -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,13 @@
:module: PyOpenColorIO
:value: <Lut1DHueAdjust.HUE_NONE: 0>
.. py:attribute:: Lut1DHueAdjust.HUE_WYPN
:module: PyOpenColorIO
:value: <Lut1DHueAdjust.HUE_WYPN: 2>
.. py:method:: Lut1DHueAdjust.value
:module: PyOpenColorIO
:property:
@@ -27,9 +27,11 @@
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
.. py:method:: Lut1DTransform.__str__()
:module: PyOpenColorIO
Return str(self).
.. py:method:: Lut1DTransform.equals(self: PyOpenColorIO.Lut1DTransform, other: PyOpenColorIO.Lut1DTransform) -> bool
:module: PyOpenColorIO
@@ -27,9 +27,11 @@
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
.. py:method:: Lut3DTransform.__str__()
:module: PyOpenColorIO
Return str(self).
.. py:method:: Lut3DTransform.equals(self: PyOpenColorIO.Lut3DTransform, other: PyOpenColorIO.Lut3DTransform) -> bool
:module: PyOpenColorIO
@@ -47,9 +47,11 @@
2. __init__(self: PyOpenColorIO.MatrixTransform, matrix: List[float[16]] = [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], offset: List[float[4]] = [0.0, 0.0, 0.0, 0.0], direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: MatrixTransform.__str__(self: PyOpenColorIO.MatrixTransform) -> str
.. py:method:: MatrixTransform.__str__()
:module: PyOpenColorIO
Return str(self).
.. py:method:: MatrixTransform.equals(self: PyOpenColorIO.MatrixTransform, other: PyOpenColorIO.MatrixTransform) -> bool
:module: PyOpenColorIO
@@ -13,15 +13,11 @@
:module: PyOpenColorIO
.. py:method:: MixingColorSpaceManager.__str__(self: PyOpenColorIO.MixingColorSpaceManager) -> str
.. py:method:: MixingColorSpaceManager.getMixingEncodings(self: PyOpenColorIO.MixingColorSpaceManager) -> PyOpenColorIO.MixingColorSpaceManager.MixingEncodingIterator
:module: PyOpenColorIO
.. py:method:: MixingColorSpaceManager.getMixingEncodings(self: PyOpenColorIO.MixingColorSpaceManager) -> OpenColorIO_v2_0rc1::PyIterator<std::shared_ptr<OpenColorIO_v2_0rc1::MixingColorSpaceManager>,1>
:module: PyOpenColorIO
.. py:method:: MixingColorSpaceManager.getMixingSpaces(self: PyOpenColorIO.MixingColorSpaceManager) -> OpenColorIO_v2_0rc1::PyIterator<std::shared_ptr<OpenColorIO_v2_0rc1::MixingColorSpaceManager>,0>
.. py:method:: MixingColorSpaceManager.getMixingSpaces(self: PyOpenColorIO.MixingColorSpaceManager) -> PyOpenColorIO.MixingColorSpaceManager.MixingSpaceIterator
:module: PyOpenColorIO
@@ -23,10 +23,6 @@
Initialize self. See help(type(self)) for accurate signature.
.. py:method:: MixingSlider.__str__(self: PyOpenColorIO.MixingSlider) -> str
:module: PyOpenColorIO
.. py:method:: MixingSlider.getSliderMaxEdge(self: PyOpenColorIO.MixingSlider) -> float
:module: PyOpenColorIO
@@ -8,6 +8,7 @@
:ref:`NamedTransform`.
A :ref:`NamedTransform` provides a way for config authors to include a set of color transforms that are independent of the color space being processed. For example a "utility
curve" transform where there is no need to convert to or from a reference space.
@@ -32,10 +33,6 @@
2. __init__(self: PyOpenColorIO.NamedTransform, name: str = '', aliases: List[str] = [], family: str = '', description: str = '', forwardTransform: PyOpenColorIO.Transform = None, inverseTransform: PyOpenColorIO.Transform = None, categories: List[str] = []) -> None
.. py:method:: NamedTransform.__str__(self: PyOpenColorIO.NamedTransform) -> str
:module: PyOpenColorIO
.. py:method:: NamedTransform.addAlias(self: PyOpenColorIO.NamedTransform, alias: str) -> None
:module: PyOpenColorIO
@@ -60,11 +57,11 @@
:ref:`ColorSpace::clearCategories`
.. py:method:: NamedTransform.getAliases(self: PyOpenColorIO.NamedTransform) -> OpenColorIO_v2_0rc1::PyIterator<std::shared_ptr<OpenColorIO_v2_0rc1::NamedTransform>,1>
.. py:method:: NamedTransform.getAliases(self: PyOpenColorIO.NamedTransform) -> PyOpenColorIO.NamedTransform.NamedTransformAliasIterator
:module: PyOpenColorIO
.. py:method:: NamedTransform.getCategories(self: PyOpenColorIO.NamedTransform) -> OpenColorIO_v2_0rc1::PyIterator<std::shared_ptr<OpenColorIO_v2_0rc1::NamedTransform>,0>
.. py:method:: NamedTransform.getCategories(self: PyOpenColorIO.NamedTransform) -> PyOpenColorIO.NamedTransform.NamedTransformCategoryIterator
:module: PyOpenColorIO
@@ -31,3 +31,8 @@
:module: PyOpenColorIO
:value: <NamedTransformVisibility.NAMEDTRANSFORM_INACTIVE: 1>
.. py:method:: NamedTransformVisibility.value
:module: PyOpenColorIO
:property:
@@ -40,3 +40,8 @@
:module: PyOpenColorIO
:value: <NegativeStyle.NEGATIVE_PASS_THRU: 2>
.. py:method:: NegativeStyle.value
:module: PyOpenColorIO
:property:
@@ -208,3 +208,8 @@
:module: PyOpenColorIO
:value: <OptimizationFlags.OPTIMIZATION_VERY_GOOD: 263995331>
.. py:method:: OptimizationFlags.value
:module: PyOpenColorIO
:property:
@@ -25,7 +25,7 @@
:module: PyOpenColorIO
.. py:method:: Processor.getDefaultCPUProcessor(self: PyOpenColorIO.Processor) -> OpenColorIO_v2_0rc1::CPUProcessor
.. py:method:: Processor.getDefaultCPUProcessor(self: PyOpenColorIO.Processor) -> PyOpenColorIO.CPUProcessor
:module: PyOpenColorIO
Get an optimized :cpp:class:`:ref:`CPUProcessor`` instance.
@@ -50,19 +50,19 @@
cpuProcessor->apply(img);
.. py:method:: Processor.getDefaultGPUProcessor(self: PyOpenColorIO.Processor) -> OpenColorIO_v2_0rc1::GPUProcessor
.. py:method:: Processor.getDefaultGPUProcessor(self: PyOpenColorIO.Processor) -> PyOpenColorIO.GPUProcessor
:module: PyOpenColorIO
Get an optimized :ref:`GPUProcessor` instance.
.. py:method:: Processor.getDynamicProperty(self: PyOpenColorIO.Processor, type: PyOpenColorIO.DynamicPropertyType) -> OpenColorIO_v2_0rc1::DynamicProperty
.. py:method:: Processor.getDynamicProperty(self: PyOpenColorIO.Processor, type: PyOpenColorIO.DynamicPropertyType) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO
The returned pointer may be used to set the default 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 and only this one will be controlled.
.. note::
The dynamic properties are a convenient way to change on-the-fly values without generating again and again a CPU or GPU processor instance. Color transformations can contain dynamic properties from a :cpp:class:`:ref:`ExposureContrastTransform`` for example. So, :cpp:class:`:ref:`Processor``, :cpp:class:`:ref:`CPUProcessor`` and :cpp:class:`:ref:`GpuShaderCreator`` all have ways to manage dynamic properties. However, the transform dynamic properties are decoupled between the types of processor instances so that the same :cpp:class:`:ref:`Processor`` can generate several independent CPU and/or GPU processor instances i.e. changing the value of the exposure dynamic property from a CPU processor instance does not affect the corresponding GPU processor instance. :ref:`Processor` creation will throw if there are more than one property of a given type.
The dynamic properties are a convenient way to change on-the-fly values without generating again and again a CPU or GPU processor instance. Color transformations can contain dynamic properties from a :ref:`ExposureContrastTransform` for example. So, :ref:`Processor`, :ref:`CPUProcessor` and :ref:`GpuShaderCreator` all have ways to manage dynamic properties. However, the transform dynamic properties are decoupled between the types of processor instances so that the same :ref:`Processor` can generate several independent CPU and/or GPU processor instances i.e. changing the value of the exposure dynamic property from a CPU processor instance does not affect the corresponding GPU processor instance. :ref:`Processor` creation will log a warning if there are more than one property of a given type. There may be more than one property of a given type, but only one will respond to parameter updates, the others will use their original parameter values.
.. py:method:: Processor.getFormatMetadata(self: PyOpenColorIO.Processor) -> PyOpenColorIO.FormatMetadata
@@ -76,12 +76,12 @@
Overloaded function.
1. getOptimizedCPUProcessor(self: PyOpenColorIO.Processor, oFlags: PyOpenColorIO.OptimizationFlags) -> OpenColorIO_v2_0rc1::CPUProcessor
1. getOptimizedCPUProcessor(self: PyOpenColorIO.Processor, oFlags: PyOpenColorIO.OptimizationFlags) -> PyOpenColorIO.CPUProcessor
2. getOptimizedCPUProcessor(self: PyOpenColorIO.Processor, inBitDepth: PyOpenColorIO.BitDepth, outBitDepth: PyOpenColorIO.BitDepth, oFlags: PyOpenColorIO.OptimizationFlags) -> OpenColorIO_v2_0rc1::CPUProcessor
2. getOptimizedCPUProcessor(self: PyOpenColorIO.Processor, inBitDepth: PyOpenColorIO.BitDepth, outBitDepth: PyOpenColorIO.BitDepth, oFlags: PyOpenColorIO.OptimizationFlags) -> PyOpenColorIO.CPUProcessor
.. py:method:: Processor.getOptimizedGPUProcessor(self: PyOpenColorIO.Processor, oFlags: PyOpenColorIO.OptimizationFlags) -> OpenColorIO_v2_0rc1::GPUProcessor
.. py:method:: Processor.getOptimizedGPUProcessor(self: PyOpenColorIO.Processor, oFlags: PyOpenColorIO.OptimizationFlags) -> PyOpenColorIO.GPUProcessor
:module: PyOpenColorIO
@@ -99,7 +99,7 @@
Run the optimizer on a :ref:`Processor` to create a new :cpp:class:`:ref:`Processor``. It is usually not necessary to call this since getting a :ref:`CPUProcessor` or :ref:`GPUProcessor` will also optimize. However if you need both, calling this method first makes getting a CPU and GPU :ref:`Processor` faster since the optimization is effectively only done once.
.. py:method:: Processor.getProcessorMetadata(self: PyOpenColorIO.Processor) -> OpenColorIO_v2_0rc1::ProcessorMetadata
.. py:method:: Processor.getProcessorMetadata(self: PyOpenColorIO.Processor) -> PyOpenColorIO.ProcessorMetadata
:module: PyOpenColorIO
The :ref:`ProcessorMetadata` contains technical information such as the number of files and looks used in the processor.
@@ -115,18 +115,16 @@
True if the image transformation is non-separable. For example, if a change in red may also cause a change in green or blue.
.. py:method:: Processor.hasDynamicProperty(*args, **kwargs)
.. py:method:: Processor.hasDynamicProperty(self: PyOpenColorIO.Processor, type: PyOpenColorIO.DynamicPropertyType) -> bool
:module: PyOpenColorIO
Overloaded function.
1. hasDynamicProperty(self: PyOpenColorIO.Processor, type: PyOpenColorIO.DynamicPropertyType) -> bool
True if at least one dynamic property of that type exists.
2. hasDynamicProperty(self: PyOpenColorIO.Processor) -> bool
True if at least one dynamic property of that type exists.
.. py:method:: Processor.isDynamic(self: PyOpenColorIO.Processor) -> bool
:module: PyOpenColorIO
True if at least one dynamic property of any type exists and is dynamic.
.. py:method:: Processor.isNoOp(self: PyOpenColorIO.Processor) -> bool
@@ -40,3 +40,8 @@
:module: PyOpenColorIO
:value: <ProcessorCacheFlags.PROCESSOR_CACHE_SHARE_DYN_PROPERTIES: 2>
.. py:method:: ProcessorCacheFlags.value
:module: PyOpenColorIO
:property:
@@ -26,3 +26,8 @@
:module: PyOpenColorIO
:value: <RangeStyle.RANGE_NO_CLAMP: 0>
.. py:method:: RangeStyle.value
:module: PyOpenColorIO
:property:
@@ -30,9 +30,11 @@
Creates an instance of :ref:`RangeTransform`.
.. py:method:: RangeTransform.__str__(self: PyOpenColorIO.RangeTransform) -> str
.. py:method:: RangeTransform.__str__()
:module: PyOpenColorIO
Return str(self).
.. py:method:: RangeTransform.equals(self: PyOpenColorIO.RangeTransform, other: PyOpenColorIO.RangeTransform) -> bool
:module: PyOpenColorIO
@@ -156,16 +158,14 @@
Set the Range style to clamp or not input values.
.. py:method:: RangeTransform.unsetMaxOutValue(*args, **kwargs)
.. py:method:: RangeTransform.unsetMaxInValue(self: PyOpenColorIO.RangeTransform) -> None
:module: PyOpenColorIO
Overloaded function.
Unset the maximum value for the input.
1. unsetMaxOutValue(self: PyOpenColorIO.RangeTransform) -> None
Unset the maximum value for the output.
2. unsetMaxOutValue(self: PyOpenColorIO.RangeTransform) -> None
.. py:method:: RangeTransform.unsetMaxOutValue(self: PyOpenColorIO.RangeTransform) -> None
:module: PyOpenColorIO
Unset the maximum value for the output.
@@ -26,3 +26,8 @@
:module: PyOpenColorIO
:value: <ReferenceSpaceType.REFERENCE_SPACE_SCENE: 0>
.. py:method:: ReferenceSpaceType.value
:module: PyOpenColorIO
:property:
@@ -47,3 +47,8 @@
:module: PyOpenColorIO
:value: <RGBCurveType.RGB_RED: 0>
.. py:method:: RGBCurveType.value
:module: PyOpenColorIO
:property:
@@ -31,3 +31,8 @@
:module: PyOpenColorIO
:value: <SearchReferenceSpaceType.SEARCH_REFERENCE_SPACE_SCENE: 0>
.. py:method:: SearchReferenceSpaceType.value
:module: PyOpenColorIO
:property:
@@ -3,10 +3,12 @@
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: SetComputeHashFunction(hashFunction: std::function<std::basic_string<char,std::char_traits<char>,std::allocator<char> > __cdecl(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const & __ptr64)>) -> None
.. py:function:: SetComputeHashFunction(hashFunction: Callable[[str], str]) -> None
:module: PyOpenColorIO
Set the Compute Hash Function to use; otherwise, use the default.
:param ComputeHashFunction:
@@ -3,7 +3,7 @@
Copyright Contributors to the OpenColorIO Project.
Do not edit! This file was automatically generated by share/docs/frozendoc.py.
.. py:function:: SetLoggingFunction(logFunction: std::function<void (char const*)>) -> None
.. py:function:: SetLoggingFunction(logFunction: Callable[[str], None]) -> None
:module: PyOpenColorIO
Set the logging function to use; otherwise, use the default (i.e. std::cerr).
@@ -15,10 +15,6 @@
Initialize self. See help(type(self)) for accurate signature.
.. py:method:: Transform.__str__(self: PyOpenColorIO.Transform) -> str
:module: PyOpenColorIO
.. py:method:: Transform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
@@ -24,3 +24,8 @@
:module: PyOpenColorIO
:value: <TransformDirection.TRANSFORM_DIR_INVERSE: 1>
.. py:method:: TransformDirection.value
:module: PyOpenColorIO
:property:
@@ -164,3 +164,8 @@
:module: PyOpenColorIO
:value: <TransformType.TRANSFORM_TYPE_RANGE: 21>
.. py:method:: TransformType.value
:module: PyOpenColorIO
:property:
@@ -14,6 +14,8 @@
UNIFORM_BOOL :
UNIFORM_FLOAT3 : Array of 3 floats.
UNIFORM_VECTOR_FLOAT : Vector of floats (size is set by uniform).
UNIFORM_VECTOR_INT : Vector of int pairs (size is set by uniform).
@@ -33,6 +35,11 @@
:value: <UniformDataType.UNIFORM_DOUBLE: 0>
.. py:attribute:: UniformDataType.UNIFORM_FLOAT3
:module: PyOpenColorIO
:value: <UniformDataType.UNIFORM_FLOAT3: 2>
.. py:attribute:: UniformDataType.UNIFORM_UNKNOWN
:module: PyOpenColorIO
:value: <UniformDataType.UNIFORM_UNKNOWN: 5>
@@ -47,3 +54,8 @@
:module: PyOpenColorIO
:value: <UniformDataType.UNIFORM_VECTOR_INT: 4>
.. py:method:: UniformDataType.value
:module: PyOpenColorIO
:property:
@@ -17,10 +17,6 @@
2. __init__(self: PyOpenColorIO.ViewTransform, referenceSpace: PyOpenColorIO.ReferenceSpaceType = <ReferenceSpaceType.REFERENCE_SPACE_SCENE: 0>, name: str = '', family: str = '', description: str = '', toReference: PyOpenColorIO.Transform = None, fromReference: PyOpenColorIO.Transform = None, categories: List[str] = []) -> None
.. py:method:: ViewTransform.__str__(self: PyOpenColorIO.ViewTransform) -> str
:module: PyOpenColorIO
.. py:method:: ViewTransform.addCategory(self: PyOpenColorIO.ViewTransform, category: str) -> None
:module: PyOpenColorIO
@@ -24,3 +24,8 @@
:module: PyOpenColorIO
:value: <ViewTransformDirection.VIEWTRANSFORM_DIR_TO_REFERENCE: 0>
.. py:method:: ViewTransformDirection.value
:module: PyOpenColorIO
:property:
@@ -24,3 +24,8 @@
:module: PyOpenColorIO
:value: <ViewType.VIEW_SHARED: 0>
.. py:method:: ViewType.value
:module: PyOpenColorIO
:property:
@@ -6,7 +6,10 @@
:members:
:undoc-members:
:special-members: __init__, __str__
:exclude-members: ColorSpaceCategoryIterator
:exclude-members: ColorSpaceCategoryIterator, ColorSpaceAliasIterator
.. autoclass:: PyOpenColorIO.ColorSpace.ColorSpaceCategoryIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.ColorSpace.ColorSpaceAliasIterator
:special-members: __getitem__, __iter__, __len__, __next__
@@ -8,6 +8,10 @@
:members:
:undoc-members:
:special-members: __init__, __str__
:exclude-members: AddedColorSpaceIterator
.. autoclass:: PyOpenColorIO.ColorSpaceMenuHelper.AddedColorSpaceIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.ColorSpaceMenuHelper
:members:
@@ -5,7 +5,6 @@
.. autoclass:: PyOpenColorIO.GpuShaderCreator
:members:
:undoc-members:
:special-members: __init__
:exclude-members: TextureType,
TEXTURE_RED_CHANNEL,
TEXTURE_RGB_CHANNEL,
@@ -9,8 +9,10 @@
:exclude-members: TextureType,
TEXTURE_RED_CHANNEL,
TEXTURE_RGB_CHANNEL,
UniformData,
Texture,
Texture3D,
UniformIterator,
TextureIterator,
Texture3DIterator,
DynamicPropertyIterator
@@ -24,6 +26,10 @@
.. py:method:: name() -> str
:property:
.. autoclass:: PyOpenColorIO.GpuShaderDesc.UniformData
:members:
:undoc-members:
.. autoclass:: PyOpenColorIO.GpuShaderDesc.Texture
:members:
:undoc-members:
@@ -32,6 +38,9 @@
:members:
:undoc-members:
.. autoclass:: PyOpenColorIO.GpuShaderDesc.UniformIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.GpuShaderDesc.TextureIterator
:special-members: __getitem__, __iter__, __len__, __next__
@@ -7,7 +7,10 @@
:undoc-members:
:special-members: __init__, __str__
:inherited-members:
:exclude-members: TransformIterator
:exclude-members: TransformIterator, WriteFormatIterator
.. autoclass:: PyOpenColorIO.GroupTransform.WriteFormatIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.GroupTransform.TransformIterator
:special-members: __getitem__, __iter__, __len__, __next__
+1 -1
View File
@@ -52,7 +52,7 @@ Example Python API call:
.. code-block:: python
look = OCIO.Look(name='di', processSpace='rclg16')
t = OCIO.FileTransform('look_di.cc', interpolation=OCIO.Constants.INTERP_LINEAR)
t = OCIO.FileTransform('look_di.cc', interpolation=OCIO.INTERP_LINEAR)
look.setTransform(t)
config.addLook(look)
+8 -8
View File
@@ -300,7 +300,7 @@ to use to control other types of tasks not listed below.
* ``color_picking`` - colors in a color-selection UI can be displayed
in this space, while selecting colors in a different working space
(e.g. ``scene_linear`` or ``texture_paint``)
(e.g. ``scene_linear`` or ``texture_paint``).
* ``color_timing`` - color space used for applying color corrections,
e.g. user-specified grade within an image viewer (if the application
@@ -308,32 +308,32 @@ to use to control other types of tasks not listed below.
* ``compositing_log`` - a log color space used for certain processing
operations (plate resizing, pulling keys, degrain, etc). Used by the
OCIOLogConvert Nuke node
OCIOLogConvert Nuke node.
* ``data`` - used when writing data outputs such as normals, depth
data, and other "non color" data. The color space in this role should
typically have ``data: true`` specified, so no color transforms are
applied
applied.
* ``default`` - when ``strictparsing: false``, this color space is used
as a fallback. If not defined, the ``scene_linear`` role is used
as a fallback.
* ``matte_paint`` - color space which matte-paintings are created in
(for more information, :ref:`see the guide on baking ICC profiles
for Photoshop <userguide-bakelut-photoshop>`, and
:ref:`config-spivfx`)
:ref:`config-spivfx`).
* ``reference`` - the color space against which the other color spaces
are defined
are defined.
.. note::
The reference role has sometimes been misinterpreted as being the
space in which "reference art" is stored in.
* ``scene_linear`` - the scene-referred linear-to-light color space,
often the same as the reference space (see:ref:`faq-terminology`)
often the same as the reference space (see:ref:`faq-terminology`).
* ``texture_paint`` - similar to ``matte_paint`` but for painting
textures for 3D objects (see the description of texture painting in
:ref:`SPI's pipeline <config-spipipeline-texture>`)
:ref:`SPI's pipeline <config-spipipeline-texture>`).
+1 -1
View File
@@ -115,7 +115,7 @@ determine the colorspace ``lnf`` (it being the right-most substring
containing a colorspace name)
However, if the colorspace cannot be determined and ``strictparsing:
true``, it will produce an error.
true``, it will return an empty string.
If the colorspace cannot be determined and ``strictparsing: false``,
the default role will be used. This allows unhandled images to operate
+46 -44
View File
@@ -93,15 +93,16 @@ Python
import PyOpenColorIO as OCIO
try:
config = OCIO.GetCurrentConfig()
processor = config.getProcessor(OCIO.Constants.ROLE_COMPOSITING_LOG,
OCIO.Constants.ROLE_SCENE_LINEAR)
cpu = processor->getDefaultCPUProcessor()
config = OCIO.GetCurrentConfig()
processor = config.getProcessor(OCIO.ROLE_COMPOSITING_LOG,
OCIO.ROLE_SCENE_LINEAR)
cpu = processor.getDefaultCPUProcessor()
# Apply the color transform to the existing RGBA pixel data
img = cpu.applyRGBA(img)
except Exception, e:
print "OpenColorIO Error",e
# Apply the color transform to the existing RGBA pixel data
img = [1, 0, 0, 0]
img = cpu.applyRGBA(img)
except Exception as e:
print("OpenColorIO Error: ", e)
.. _usage_displayimage:
@@ -137,17 +138,18 @@ C++
try
{
OCIO::ConstConfigRcPtr config = OCIO::GetCurrentConfig();
OCIO::ConstConfigRcPtr config = OCIO::GetCurrentConfig();
const char * display = config->getDefaultDisplay();
const char * view = config->getDefaultView(display);
const char * display = config->getDefaultDisplay();
const char * view = config->getDefaultView(display);
OCIO::ConstProcessorRcPtr processor = config->getProcessor(OCIO::ROLE_SCENE_LINEAR,
display, view);
OCIO::ConstCPUProcessorRcPtr cpu = processor->getDefaultCPUProcessor();
OCIO::ConstProcessorRcPtr processor = config->getProcessor(OCIO::ROLE_SCENE_LINEAR,
display, view,
OCIO::TRANSFORM_DIR_FORWARD);
OCIO::ConstCPUProcessorRcPtr cpu = processor->getDefaultCPUProcessor();
OCIO::PackedImageDesc img(imageData, width, height, 4);
cpu->apply(img);
OCIO::PackedImageDesc img(imageData, width, height, 4);
cpu->apply(img);
}
catch(OCIO::Exception & exception)
{
@@ -159,21 +161,21 @@ Python
.. code-block:: python
import PyOpenColorIO as OCIO
import PyOpenColorIO as OCIO
try:
config = OCIO.GetCurrentConfig()
config = OCIO.GetCurrentConfig()
display = config.getDefaultDisplay()
view = config.getDefaultView(display)
display = config.getDefaultDisplay()
view = config.getDefaultView(display)
processor = config.getProcessor(OCIO.Constants.ROLE_SCENE_LINEAR, display, view)
cpu = processor.getDefaultCPUProcessor()
processor = config.getProcessor(OCIO.ROLE_SCENE_LINEAR, display, view, OCIO.TRANSFORM_DIR_FORWARD)
cpu = processor.getDefaultCPUProcessor()
imageData = [1, 0, 0]
cpu.applyRGB(img)
except Exception, e:
print "OpenColorIO Error",e
img = [1, 0, 0]
cpu.applyRGB(img)
except Exception as e:
print("OpenColorIO Error: ", e)
Displaying an image, using the CPU (Full Display Pipeline)
**********************************************************
@@ -246,30 +248,30 @@ Python
.. code-block:: python
import PyOpenColorIO as OCIO
import PyOpenColorIO as OCIO
# Step 1: Get the config
config = OCIO.GetCurrentConfig()
# Step 1: Get the config
config = OCIO.GetCurrentConfig()
# Step 2: Lookup the display ColorSpace
display = config.getDefaultDisplay()
view = config.getDefaultView(display)
# Step 2: Lookup the display ColorSpace
display = config.getDefaultDisplay()
view = config.getDefaultView(display)
# Step 3: Create a DisplayTransform, and set the input, display, and view
# (This example assumes the input is scene linear. Adapt as needed.)
# Step 3: Create a DisplayViewTransform, and set the input, display, and view
# (This example assumes the input is a role. Adapt as needed.)
transform = OCIO.DisplayTransform()
transform.setInputColorSpaceName(OCIO.Constants.ROLE_SCENE_LINEAR)
transform.setDisplay(display)
transform.setView(view)
transform = OCIO.DisplayViewTransform()
transform.setSrc(OCIO.Constants.ROLE_SCENE_LINEAR)
transform.setDisplay(display)
transform.setView(view)
# Step 4: Create the processor
processor = config.getProcessor(transform)
cpu = processor.getDefaultCPUProcessor()
# Step 4: Create the processor
processor = config.getProcessor(transform)
cpu = processor.getDefaultCPUProcessor()
# Step 5: Apply the color transform to an existing RGB pixel
imageData = [1, 0, 0]
print cpu.applyRGB(imageData)
# Step 5: Apply the color transform to an existing RGB pixel
imageData = [1, 0, 0]
print(cpu.applyRGB(imageData))
Displaying an image, using the GPU
+3 -3
View File
@@ -63,15 +63,15 @@ default, cmake will try to install all of the items labelled with * and so
it is not necessary to install those items manually:
- cmake >= 3.12
- \*Expat >= 2.2.5 (XML parser for CDL/CLF/CTF)
- \*Expat >= 2.2.8 (XML parser for CDL/CLF/CTF)
- \*yaml-cpp >= 0.6.3 (YAML parser for Configs)
- \*IlmBase (Half only) >= 2.3.0 (for half domain LUTs)
- \*IlmBase (Half only) >= 2.4.0 (for half domain LUTs)
- \*pystring >= 1.1.3
Some optional components also depend on:
- \*Little CMS >= 2.2 (for ociobakelut ICC profile baking)
- \*pybind11 >= 2.4.3 (for the Python bindings)
- \*pybind11 >= 2.6.1 (for the Python bindings)
- Python >= 2.7 (for the Python bindings)
- Python >= 3.7 (for the docs, with the following PyPi packages)
- Sphinx
+17 -4
View File
@@ -2,13 +2,22 @@
# Copyright Contributors to the OpenColorIO Project.
configure_file("OpenColorABI.h.in" "${CMAKE_CURRENT_BINARY_DIR}/OpenColorABI.h" @ONLY)
add_library(public_api INTERFACE)
add_library(OpenColorIOHeaders INTERFACE)
set_property(TARGET public_api
PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/..;${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_BINARY_DIR};${CMAKE_CURRENT_BINARY_DIR}/OpenColorIO
set(BUILD_INCLUDES
${CMAKE_CURRENT_SOURCE_DIR}/..
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}/OpenColorIO
)
add_dependencies(public_api "${CMAKE_CURRENT_BINARY_DIR}/OpenColorABI.h")
target_include_directories(OpenColorIOHeaders
INTERFACE
"$<BUILD_INTERFACE:${BUILD_INCLUDES}>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
)
add_dependencies(OpenColorIOHeaders "${CMAKE_CURRENT_BINARY_DIR}/OpenColorABI.h")
# public interface
@@ -17,3 +26,7 @@ list(APPEND core_export_headers ${CMAKE_CURRENT_BINARY_DIR}/OpenColorABI.h)
install(FILES ${core_export_headers}
DESTINATION include/OpenColorIO)
install(TARGETS OpenColorIOHeaders
EXPORT ${PROJECT_NAME}_EXPORTED_TARGETS
)
+1 -1
View File
@@ -227,7 +227,7 @@ public:
* Get the name to use in the menu UI. This might be different from the config name, for
* example in the case of roles. Will be empty if the index is out of range.
*/
virtual const char * getUIName(size_t idx) const noexcept = 0;;
virtual const char * getUIName(size_t idx) const noexcept = 0;
/**
* Get the index of the element of a given name. Return (size_t)-1 name if NULL or empty, or if
+170 -106
View File
@@ -994,7 +994,8 @@ public:
*/
void setFileRules(ConstFileRulesRcPtr fileRules);
/// 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.)
const char * getColorSpaceFromFilepath(const char * filePath) const;
/**
@@ -1149,64 +1150,56 @@ private:
extern OCIOEXPORT std::ostream& operator<< (std::ostream&, const Config&);
// TODO: Move to .rst
// FileRules
// *********
// 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 FileRules::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 FileRules::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.
//
/**
* \brief
* 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 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.
*/
class OCIOEXPORT FileRules
{
@@ -1335,30 +1328,28 @@ extern OCIOEXPORT std::ostream & operator<< (std::ostream &, const FileRules &);
// TODO: Move to .rst
//
// ViewingRules
// ************
// Viewing Rules allow config authors to filter the list of views an application should offer
// based on the color space of an image. For example, a config may define a large number of
// views but not all of them may be appropriate for use with all color spaces. E.g., some views
// may be intended for use with scene-linear color space encodings and others with video color
// space encodings.
//
// Each rule has a name key for applications to refer to the rule. Name values must be unique
// (using case insensitive comparison). Viewing Rules may also have the following keys:
//
// * colorspaces: Either a single colorspace name or a list of names.
//
// * encodings: One or more strings to be found in the colorspace's encoding attribute.
// Either this attribute or colorspaces must be present, but not both.
//
// * custom : Allows arbitrary key / value string pairs, similar to FileRules.
//
// Getters and setters are using the rule position, they will throw if the position is not
// valid.
/**
* ViewingRules
*
* Viewing Rules allow config authors to filter the list of views an application should offer
* based on the color space of an image. For example, a config may define a large number of
* views but not all of them may be appropriate for use with all color spaces. E.g., some views
* may be intended for use with scene-linear color space encodings and others with video color
* space encodings.
*
* Each rule has a name key for applications to refer to the rule. Name values must be unique
* (using case insensitive comparison). Viewing Rules may also have the following keys:
*
* * colorspaces: Either a single colorspace name or a list of names.
*
* * encodings: One or more strings to be found in the colorspace's encoding attribute.
* Either this attribute or colorspaces must be present, but not both.
*
* * custom : Allows arbitrary key / value string pairs, similar to FileRules.
*
* Getters and setters are using the rule position, they will throw if the position is not
* valid.
*/
class OCIOEXPORT ViewingRules
{
public:
@@ -2115,14 +2106,15 @@ public:
*
* \note The dynamic properties are a convenient way to change on-the-fly values without
* generating again and again a CPU or GPU processor instance. Color transformations can
* contain dynamic properties from a :cpp:class:`ExposureContrastTransform` for example.
* So, :cpp:class:`Processor`, :cpp:class:`CPUProcessor` and :cpp:class:`GpuShaderCreator`
* all have ways to manage dynamic properties. However, the transform dynamic properties
* are decoupled between the types of processor instances so that the same
* :cpp:class:`Processor` can generate several independent CPU and/or GPU processor
* instances i.e. changing the value of the exposure dynamic property from a CPU processor
* instance does not affect the corresponding GPU processor instance. Processor creation will
* throw if there are more than one property of a given type.
* contain dynamic properties from a ExposureContrastTransform for example.
* So, Processor, CPUProcessor and GpuShaderCreator all have ways to manage dynamic
* properties. However, the transform dynamic properties are decoupled between the types
* of processor instances so that the same Processor can generate several independent CPU
* and/or GPU processor instances i.e. changing the value of the exposure dynamic property
* from a CPU processor instance does not affect the corresponding GPU processor instance.
* Processor creation will log a warning if there are more than one property of a given type.
* There may be more than one property of a given type, but only one will respond to parameter
* updates, the others will use their original parameter values.
*/
DynamicPropertyRcPtr getDynamicProperty(DynamicPropertyType type) const;
/// True if at least one dynamic property of that type exists.
@@ -2150,10 +2142,18 @@ public:
// GPU Renderer
//
/// Get an optimized \ref GPUProcessor instance.
/// Get an optimized GPUProcessor instance.
ConstGPUProcessorRcPtr getDefaultGPUProcessor() const;
ConstGPUProcessorRcPtr getOptimizedGPUProcessor(OptimizationFlags oFlags) const;
/**
* Get an optimized GPUProcessor instance that will emulate the OCIO v1 GPU path. This approach
* bakes some of the ops into a single Lut3D and so is less accurate than the current GPU
* processing methods.
*/
ConstGPUProcessorRcPtr getOptimizedLegacyGPUProcessor(OptimizationFlags oFlags,
unsigned edgelen) const;
//
// CPU Renderer
//
@@ -2300,7 +2300,7 @@ public:
/// Extract & Store the shader information to implement the color processing.
void extractGpuShaderInfo(GpuShaderDescRcPtr & shaderDesc) const;
/// Extract the shader information using a custom \ref GpuShaderCreator class.
/// Extract the shader information using a custom GpuShaderCreator class.
void extractGpuShaderInfo(GpuShaderCreatorRcPtr & shaderCreator) const;
GPUProcessor(const GPUProcessor &) = delete;
@@ -2711,15 +2711,59 @@ private:
// GpuShaderCreator
/**
* Inherit from the class to fully customize the implementation of a GPU shader program
* from a color transformation.
* from a color transformation.
*
* When no customizations are needed then the :cpp:class:`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
* ExposureContrastTransform instance owns three DynamicProperties and they are all
* implemented by a double. When creating the GPU fragment shader program, the addUniform() with
* GpuShaderCreator::DoubleGetter is called when property is dynamic, up to three times.
* \note
* To better decouple the \ref 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 \ref DynamicProperties and they are all
* implemented by a double. When creating the GPU fragment shader program, the addUniform() with
* GpuShaderCreator::DoubleGetter is called when property is dynamic, up to three times.
*
* **An OCIO shader program could contain:**
*
* * 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:**
*
* Below is a code snippet to highlight the different parts of the OCIO shader program.
*
* \code{.cpp}
*
* // 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
* } //
*
* \endcode
*/
class OCIOEXPORT GpuShaderCreator
{
@@ -2765,8 +2809,8 @@ public:
virtual unsigned getTextureMaxWidth() const noexcept = 0;
/**
* 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.
*/
unsigned getNextResourceIndex() noexcept;
@@ -2816,10 +2860,17 @@ public:
enum TextureType
{
TEXTURE_RED_CHANNEL, ///< Only use the red channel of the texture
TEXTURE_RGB_CHANNEL
TEXTURE_RED_CHANNEL, ///< Only need a red channel texture
TEXTURE_RGB_CHANNEL ///< Need a RGB texture
};
/**
* 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.
**/
virtual void addTexture(const char * textureName,
const char * samplerName,
unsigned width, unsigned height,
@@ -2827,6 +2878,14 @@ public:
Interpolation interpolation,
const float * values) = 0;
/**
* 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.
**/
virtual void add3DTexture(const char * textureName,
const char * samplerName,
unsigned edgelen,
@@ -3044,7 +3103,7 @@ protected:
// //
// OCIO::GpuShaderDescRcPtr shaderDesc = MyCustomGpuShader::Create();
//
// shaderDesc->setLanguage(OCIO::GPU_LANGUAGE_GLSL_1_3);
// shaderDesc->setLanguage(OCIO::GPU_LANGUAGE_GLSL_1_2);
// shaderDesc->setFunctionName("OCIODisplay");
//
// // Step 2: Collect the shader program information for a specific processor
@@ -3079,7 +3138,12 @@ class OCIOEXPORT GpuShaderDesc : public GpuShaderCreator
{
public:
/// Create the legacy shader description.
/**
* Create the legacy GPU shader description. This is now deprecated (to be removed in
* the coming release i.e. 2.1.x).
* Do not use it because that's broken. So, this method has been replaced by the pair
* Processor::getOptimizedLegacyGPUProcessor() and GpuShaderDesc::CreateShaderDesc().
*/
static GpuShaderDescRcPtr CreateLegacyShaderDesc(unsigned edgelen);
/// Create the default shader description.
+12 -12
View File
@@ -1088,7 +1088,10 @@ extern OCIOEXPORT std::ostream & operator<<(std::ostream &, const FileTransform
class OCIOEXPORT FixedFunctionTransform : public Transform
{
public:
static FixedFunctionTransformRcPtr Create();
static FixedFunctionTransformRcPtr Create(FixedFunctionStyle style);
static FixedFunctionTransformRcPtr Create(FixedFunctionStyle style,
const double * params,
size_t num);
TransformType getTransformType() const noexcept override { return TRANSFORM_TYPE_FIXED_FUNCTION; }
@@ -1360,7 +1363,6 @@ public:
* @endcode
*/
virtual void write(const ConstConfigRcPtr & config,
const ConstContextRcPtr & context,
const char * formatName,
std::ostream & os) const = 0;
@@ -1385,7 +1387,7 @@ extern OCIOEXPORT std::ostream & operator<<(std::ostream &, const GroupTransform
/**
* Applies a logarithm with an affine transform before and after.
* Applies a logarithm with an affine transform before and after.
* Represents the Cineon lin-to-log type transforms::
*
* logSideSlope * log( linSideSlope * color + linSideOffset, base) + logSideOffset
@@ -1433,8 +1435,8 @@ extern OCIOEXPORT std::ostream & operator<<(std::ostream &, const LogAffineTrans
/**
* Same as :cpp:class:`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 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).
@@ -1444,7 +1446,8 @@ extern OCIOEXPORT std::ostream & operator<<(std::ostream &, const LogAffineTrans
class OCIOEXPORT LogCameraTransform : public Transform
{
public:
static LogCameraTransformRcPtr Create();
/// LinSideBreak must be set for the transform to be valid (there is no default).
static LogCameraTransformRcPtr Create(const double(&linSideBreakValues)[3]);
TransformType getTransformType() const noexcept override { return TRANSFORM_TYPE_LOG_CAMERA; }
@@ -1457,8 +1460,7 @@ public:
virtual double getBase() const noexcept = 0;
virtual void setBase(double base) noexcept = 0;
// !rst:: **Get/Set values for the R, G, B components**
/// Get/Set values for the R, G, B components.
virtual void getLogSideSlopeValue(double(&values)[3]) const noexcept = 0;
virtual void setLogSideSlopeValue(const double(&values)[3]) noexcept = 0;
virtual void getLogSideOffsetValue(double(&values)[3]) const noexcept = 0;
@@ -1467,9 +1469,7 @@ public:
virtual void setLinSideSlopeValue(const double(&values)[3]) noexcept = 0;
virtual void getLinSideOffsetValue(double(&values)[3]) const noexcept = 0;
virtual void setLinSideOffsetValue(const double(&values)[3]) noexcept = 0;
/// Return true if LinSideBreak values were set, false if they were not.
virtual bool getLinSideBreakValue(double(&values)[3]) const noexcept = 0;
virtual void getLinSideBreakValue(double(&values)[3]) const noexcept = 0;
virtual void setLinSideBreakValue(const double(&values)[3]) noexcept = 0;
/// Return true if LinearSlope values were set, false if they were not.
@@ -1680,7 +1680,7 @@ public:
* feature that was used in some versions of ACES. This adjusts the hue
* of the result to approximately match the input.
*/
virtual void setHueAdjust(Lut1DHueAdjust algo) noexcept = 0;
virtual void setHueAdjust(Lut1DHueAdjust algo) = 0;
virtual Interpolation getInterpolation() const = 0;
virtual void setInterpolation(Interpolation algo) = 0;
+27 -3
View File
@@ -417,8 +417,9 @@ enum BitDepth
/// Used by :cpp:class`Lut1DTransform` to control optional hue restoration algorithm.
enum Lut1DHueAdjust
{
HUE_NONE = 0, // No adjustment.
HUE_DW3 // Algorithm used in ACES Output Transforms through v0.7.
HUE_NONE = 0, ///< No adjustment.
HUE_DW3, ///< Algorithm used in ACES Output Transforms through v0.7.
HUE_WYPN ///< Weighted Yellow Power Norm -- NOT IMPLEMENTED YET
};
/// Used by \ref PackedImageDesc to indicate the channel ordering of the image to process.
@@ -473,7 +474,10 @@ enum FixedFunctionStyle
FIXED_FUNCTION_RGB_TO_HSV, ///< Classic RGB to HSV function
FIXED_FUNCTION_XYZ_TO_xyY, ///< CIE XYZ to 1931 xy chromaticity coordinates
FIXED_FUNCTION_XYZ_TO_uvY, ///< CIE XYZ to 1976 u'v' chromaticity coordinates
FIXED_FUNCTION_XYZ_TO_LUV ///< CIE XYZ to 1976 CIELUV colour space (D65 white)
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_GAMUTMAP_13 ///< ACES 1.3 Gamut mapping algorithm -- NOT IMPLEMENTED YET
};
/// Enumeration of the :cpp:class:`ExposureContrastTransform` transform algorithms.
@@ -780,6 +784,7 @@ by hardcoded names.
Internal::
Extracting color space from file path - (ROLE_DEFAULT)
Interchange color spaces between configs - (ROLE_EXCHANGE_SCENE, ROLE_EXCHANGE_DISPLAY)
App Helpers::
LegacyViewingPipeline - (ROLE_SCENE_LINEAR (LinearCC for exposure))
@@ -819,6 +824,25 @@ extern OCIOEXPORT const char * ROLE_TEXTURE_PAINT;
*/
extern OCIOEXPORT const char * ROLE_MATTE_PAINT;
/**
* 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.
*/
extern OCIOEXPORT const char * ROLE_RENDERING;
/**
* 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.
*/
extern OCIOEXPORT const char * ROLE_INTERCHANGE_SCENE;
/**
* 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.
*/
extern OCIOEXPORT const char * ROLE_INTERCHANGE_DISPLAY;
/** @}*/
/** \defgroup VarsSharedView
BIN
View File
Binary file not shown.
+91
View File
@@ -0,0 +1,91 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright Contributors to the OpenColorIO Project.
# Use OpenImageIO's oiiotool to compare the reference image set to the actual image set produced
# by a CLF implementation.
#
# The script iterates over the images in the directory and prints the oiiotool command being run.
# It will then print either 'Test passed' or 'Test failed' after each command and then at the end
# will summarize with 'All tests passed' or 'These tests failed' with a list of the failed images.
#
# Usage:
# > python compare_clf_test_frames.py <PATH-TO-REFERENCE-IMAGES> <PATH-TO-ACTUAL-IMAGES>
# This script is python 2.7 and python 3 compatible.
import os
import subprocess
import tempfile
def process_frames( ref_path, act_path ):
# Check the arguments are as expected.
if not os.path.isdir( ref_path ):
raise ValueError( "Reference image directory must exist: " + ref_path )
if not os.path.isdir( act_path ):
raise ValueError( "Actual image directory must exist: " + act_path )
# Take the aim and actual images and compute abs(aim - act) / max(abs(aim), 0.1).
base_cmd = 'oiiotool %s --dup %s --absdiff --swap --abs --maxc 0.1 --div '
# Mask out the Inf and NaN values in the CLF test kit target image.
box_cmd = '--box:color=0,0,0:fill=1 1008,771,1023,798 --box:color=0,0,0:fill=1 0,1023,1,1023 '
# Error out if there are any new NaNs generated (there should not be).
nan_err_cmd = '--fixnan error '
# Print out how many pixels are greater than the test threshold of 0.002.
range_cmd = '--rangecheck 0,0,0 .002,.002,.002 '
# Oiiotool seems to need a -o to avoid issuing a useless warning, so add an output file
# even though it is not used. (Note that trying to write to /dev/null here doesn't work.)
avoid_warning_cmd = '-o ' + os.path.join(tempfile.gettempdir(), 'tmp.exr') + ' '
oiio_cmd = base_cmd + box_cmd + nan_err_cmd + range_cmd + avoid_warning_cmd
# Iterate over each pair of test images.
failed_tests = []
for f in sorted(os.listdir( ref_path )):
fname, ext = os.path.splitext( f )
if ext == '.exr':
# Build the full path to the files.
ref = os.path.join( ref_path, f )
act = os.path.join( act_path, f )
# Build the command.
cmd = oiio_cmd % (ref, act)
print(''); print( cmd )
# Process the image.
try:
result = subprocess.check_output(cmd, shell=True)
ind = str(result).find('0 > .002,.002,.002')
if ind > -1:
print('** Test passed **')
else:
failed_tests.append(f)
print('\n** TEST FAILED **')
print(result)
except:
failed_tests.append(f)
print('\n** TEST FAILED **')
print(result)
if len(failed_tests) == 0:
print("\n\nALL TESTS PASSED SUCCESSFULLY!\n\n")
else:
print("\n\nTHESE TESTS FAILED!\n")
for s in failed_tests:
print(s)
print('')
if __name__=='__main__':
import sys
if len( sys.argv ) != 3:
raise ValueError( "USAGE: python compare_clf_test_frames.py <REF_IMAGE_DIR> <ACTUAL_IMAGE_DIR>" )
process_frames( sys.argv[1], sys.argv[2] )
+92
View File
@@ -0,0 +1,92 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright Contributors to the OpenColorIO Project.
# Use OpenColorIO to apply the CLF files from the CLF test kit to the CLF target image
# and produce a directory of processed OpenEXR images at the specified location.
# Run the script with "-h" for usage information.
# This script is python 2.7 and python 3 compatible.
import os
import argparse
def process_frames( options ):
dst_path = options.dst_dir
use_gpu = options.gpu
opt_level = options.opt
# Check the arguments are as expected.
if not os.path.exists( dst_path ):
os.mkdir( dst_path )
if not os.path.isdir( dst_path ):
raise ValueError( "Destination path must be a directory: " + dst_path )
# Get the path to the CLF target image, relative to the path of this script.
script_path = os.path.abspath( __file__ )
parts = script_path.split( os.sep )
ocio_base_path = os.path.join( os.sep, *parts[0:-3] )
src_image = os.path.join( ocio_base_path, 'share', 'clf', 'CLF_testimage.exr' )
# Get the path to the CLF files, relative to the path of this script.
clf_path = os.path.join( ocio_base_path, 'tests', 'data', 'files', 'clf' )
# Set the optimization level. None or lossless avoids the fast SSE log/exponent.
# (Note that the decimal value is available by simply printing the enum in Python.)
if (opt_level == 'none') or (opt_level is None):
# For default for this script, use no optimization rather than OCIO's default optimization
# in order to apply the operators exactly as they appear in the CLF file with no attempt
# to speed up the processing.
print( 'Optimization level: None' )
os.environ["OCIO_OPTIMIZATION_FLAGS"] = "0"
elif opt_level == 'lossless':
print( 'Optimization level: Lossless' )
os.environ["OCIO_OPTIMIZATION_FLAGS"] = "144457667"
elif opt_level == 'default':
print( 'Optimization level: Default' )
else:
raise ValueError( 'Unexpected --opt argument.' )
# TODO: Add an option to turn on only SSE without removing any ops.
if use_gpu:
print( 'Processing on the GPU\n' )
cmd_base = 'ocioconvert --gpu --lut %s %s %s'
else:
print( 'Processing on the CPU\n' )
cmd_base = 'ocioconvert --lut %s %s %s'
# Iterate over each legal CLF file in the suite.
for f in os.listdir( clf_path ):
fname, ext = os.path.splitext( f )
if ext == '.clf':
# Build the full path to the file.
p = os.path.join( clf_path, f )
# Build the name of the destination image.
dst_image = os.path.join( dst_path, fname + '.exr' )
# Build the command.
cmd = cmd_base % (p, src_image, dst_image)
print('================='); print( cmd )
# Process the image.
os.system( cmd )
if __name__=='__main__':
import sys
import argparse
parser = argparse.ArgumentParser(description='Process CLF test images using OCIO.')
parser.add_argument('dst_dir',
help='Path to a directory where the result images will be stored.')
parser.add_argument('--gpu', action='store_true',
help='Process using the GPU rather than the CPU.')
parser.add_argument('--opt', choices=['none','lossless','default'],
help='Specify the OCIO optimization level. If not specified, "none" will be used.')
options = parser.parse_args(sys.argv[1:])
process_frames(options)
+13
View File
@@ -0,0 +1,13 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright Contributors to the OpenColorIO Project.
#
# General CMake utility macros.
#
macro(set_unless_defined var_name var_default)
if(NOT DEFINED ${var_name})
set(${var_name} ${var_default})
else()
message(STATUS "Variable explicitly defined: ${var_name} = ${${var_name}}")
endif()
endmacro()

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