Compare commits

...
166 Commits
Author SHA1 Message Date
zialandDoug Walker 5a808fb57a Fix ocioconvert invalid bidepth handling (#2323)
Signed-off-by: zial <zhenlai1013@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2026-07-09 21:05:14 -04:00
Doug Walker c2bd98f7d3 Adsk Contrib - Fix various Actions problems (#2324)
* Update RTD build OS

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

* Attempt to fix dependencies-latest fail

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

* Attempt to fix dependencies-latest fail - take 2

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

* Allow Linux 2023 to use the latest container

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

* Reorder link libraries

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

* Fetch matching prebuilt OpenColorIO for OIIO app builds in CI

The aswf/ci-ocio container images intentionally omit OpenColorIO since
the whole point of the image is to build it from source. But the
container's prebuilt OpenImageIO is dynamically linked against a
specific OpenColorIO release that isn't present, causing link
failures for ociolutimage/ocioconvert/ociodisplay whenever
OCIO_USE_OIIO_FOR_APPS=ON. Fetch that matching release from the ASWF
Conan remote and stage it on the linker path before configuring, so
apps link against both the from-source build (used directly) and the
container's expected release (used transitively via OpenImageIO).

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

* Revert "Reorder link libraries"

This reverts commit fa79c589e0fbb5bb380a5f5406612e48849d9f6a.

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

* Fail configure when OCIO_USE_OIIO_FOR_APPS is ON but OIIO is missing

Previously, requesting OCIO_USE_OIIO_FOR_APPS=ON while OpenImageIO
could not be found silently fell back to OpenEXR (or skipped building
ociolutimage/ocioconvert/ociodisplay entirely), with only a WARNING.
This let CI silently stop exercising the OIIO code path in those apps
without failing, masking the fact that OIIO wasn't actually being
tested. Turn this into a hard configure-time error instead, so a
missing OpenImageIO is caught immediately when it was explicitly
requested.

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

* Fix OIIO build on macOS

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

* Try to identify source of crash in OpOptimizers test

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

* Print SKIPPED rather than PASSED for new CPU test

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

* Ensure the new test runs even if the existing test crashes

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

* Turn off AVX512 support for EPYC 9V45

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2026-07-08 19:38:58 -04:00
f660cee612 ociocheck to check OpenColorIO library version first (#2310)
* Add to PathUtils

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

* Python test switch to ExceptionMissingFile

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

* Updated tests to use ExceptionMissingFile instead

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

* Revert PathUtil related changes.

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

* Remove PathUtils changes

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

* Switch exception raised for filepath not provided in CreateFromFile.

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

* Remove TODO

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

* Add CVE to security (#2311)

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
Signed-off-by: Mei Chu <meimchu@gmail.com>

* Adsk Contrib - Fix 2023.3 Linux container break (#2315)

* Fix 2023.3 Linux container break

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

* Adjust to keep the name constant to use the existing GitHub branch rules

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
Signed-off-by: Mei Chu <meimchu@gmail.com>

* Add DirectX 12 GPU backend for automated unit testing on Windows (#2271)

* Add DirectX 12 GPU backend for automated unit testing on Windows

Introduce a DirectX 12 / HLSL rendering backend alongside the existing OpenGL / GLSL and Metal / MSL backends, enabling the GPU unit test suite to run natively on Windows without requiring an OpenGL context.

Key changes:

  GraphicalApp abstract interface (graphicalapp.h/cpp)

    Backend-agnostic base class extracted from OglApp.  OglApp and MetalApp now inherit from it.

  DxApp (dxapp.h/cpp) -- DirectX 12 backend

    Off-screen RGBA32F render target, full-screen triangle via SV_VertexID, staging readback, SM 6.0 DXC shader compilation.

  HLSLBuilder (hlsl.h/cpp) -- HLSL shader generation

    Translates GpuShaderDesc into HLSL pixel shaders with 1D and 3D LUT texture uploads in RGBA32F format.

  CMake integration

    OCIO_DIRECTX_ENABLED option, FetchContent for DirectX-Headers, auto-copy of DXC runtime DLLs to the test output directory.

  Test tolerance adjustments

    Minor epsilon increases for 4 tests due to DX12/SM6.0 FMA and pow() precision differences.

  All 263 GPU tests pass on the DirectX 12 backend.

Build and run:

  # Configure (OCIO_DIRECTX_ENABLED defaults to ON on Windows)

  cmake -S . -B build -DCMAKE_BUILD_TYPE=Release

  # Build the GPU test binary

  cmake --build build --target test_gpu_exec --config Release

  # Run GPU tests with the DX12 backend

  ctest --test-dir build -C Release -R test_dx

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

* Fix post-rebase issues found in code review

  - HeadlessOglApp::printGraphicsInfo() was calling pure virtual base (crash on headless EGL)
  - graphicalapp.cpp included oglapp.h unconditionally; guard under OCIO_GL_ENABLED
  - tests/gpu/CMakeLists.txt early-return guard excluded Vulkan-only builds
  - Add missing test_vulkan ctest entry

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

* Minor additional comments, formatting and fixes.

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

* Speed up DX12 GPU test backend (~19%)

  The DX12 test suite was noticeably slower than the OpenGL and Vulkan backends. Profiling the run showed the gap was almost entirely in DXC shader
  compilation, not in Present, fence waits, or DxcCreateInstance as initially suspected.

  Three low-risk changes:

  - Cache IDxcUtils and IDxcCompiler3 as DxApp members instead of recreating them on every setShader() call. The COM instances are thread-safe and
  perfectly reusable; recreating them per test added no value.
  - Compile the full-screen-triangle vertex shader exactly once and reuse the bytecode across all tests. The VSMain HLSL is a hard-coded
  SV_VertexID-driven triangle with no test-specific state — the bytecode is identical every time. Extracted into a new ensureVertexShaderCompiled()
  helper. This alone eliminated the biggest redundancy (263 duplicate VS compiles).
  - Present(1, 0) → Present(0, 0). VSync is meaningless for an off-screen test harness that reads back from a float render target. Locally the win shows
  up mostly in waitForPreviousFrame, which was being throttled by the swap-chain pipeline even on an invisible window.

  All 263/263 tests still pass; no tolerance changes, no DXIL codegen changes (except for a UTF8 fix), no precision risk.

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

* Several small fixes tidying up the recently-added GPU test infrastructure.

  - Fix unused-variable warnings (fatal on macOS with warnings-as-errors): guard useDxRenderer and useVulkanRenderer declarations with the same ifdefs as their usage sites. useMetalRenderer
   stays unconditional because it's referenced on all platforms.
  - Propagate the MSVC+shared-libs PATH workaround to test_vulkan so it can find OpenColorIO_*.dll at runtime, matching what's already done for test_dx.
  - Upgrade the dxcompiler.dll detection message from STATUS to WARNING and rewrite it to name OCIO_DIRECTX_ENABLED and offer concrete recovery paths. The previous STATUS message was easy
  to miss, leaving users with a silent degradation until test_dx failed at runtime.
  - Rename the OpenGL ctest from test_gpu to test_opengl now that sibling backend-specific tests (test_dx, test_vulkan, test_metal) exist. The test_gpu_exec binary keeps its name since it's
   backend-agnostic and selects via CLI flags.
  - Declare OCIO_VULKAN_ENABLED as a first-class CMake option with mark_as_advanced, matching the existing OCIO_DIRECTX_ENABLED. It was previously used in conditionals without ever being
  declared, so it never appeared as a toggle in ccmake/cmake-gui.
  - Document both OCIO_DIRECTX_ENABLED and OCIO_VULKAN_ENABLED in docs/quick_start/installation.rst, noting that Vulkan requires an external SDK.

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

* Integrate DirectX-Headers with OCIO's external-package pattern

  Previously InstallDirectXHeaders.cmake was included unconditionally from oglapphelpers/CMakeLists.txt, so DirectX-Headers was always fetched from GitHub regardless of whether the user had
   a local copy installed. There was no way to use a system install, a vendored copy, or an air-gapped build, and the dep didn't respect OCIO_INSTALL_EXT_PACKAGES. DirectX-Headers is now a
  first-class OCIO dependency, handled the same way as Imath, ZLIB, yaml-cpp, etc.: try find_package first, fall back to FetchContent only if not found and OCIO_INSTALL_EXT_PACKAGES allows
  it.

  Changes:
  - New share/cmake/modules/FindDirectX-Headers.cmake, modeled on FindImath.cmake.
  - InstallDirectXHeaders.cmake → InstallDirectX-Headers.cmake (the hyphen matches OCIO's Install convention).
  - oglapphelpers/CMakeLists.txt now calls ocio_handle_dependency(DirectX-Headers ...) with MIN_VERSION 1.606.0 (Windows SDK 22H2 era — old enough to cover most installed copies) and
  RECOMMENDED_VERSION 1.619.1 (the version OCIO pins and validates).

  For users: a local DirectX-Headers install can now be supplied via any of the standard CMake mechanisms — -DDirectX-Headers_DIR, -DDirectX-Headers_ROOT, -DDirectX-Headers_INCLUDE_DIR, or
  globally with -DOCIO_INSTALL_EXT_PACKAGES=NONE to forbid any network fetch.

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

* Improve dxcompiler.dll diagnostics and allow overriding its path

  Addresses test crashes seen on stuck Windows 10 hosts caused by an old dxcompiler.dll shipped in that host's Windows SDK Redist.

  - Print the version of the found dxcompiler.dll at configure time so crash reports identify the exact DXC build without follow-up diagnostics.
  - Emit a standing hint pointing at the DirectX Shader Compiler releases page, which is the documented workaround.
  - New -DOCIO_DXCOMPILER_DLL=<path> overrides the Windows SDK Redist search, letting users supply a newer DLL pre-build instead of copying it by hand after.
  - Extracted the DXC-runtime logic into share/cmake/utils/LocateDXCompilerRuntime.cmake so tests/gpu/CMakeLists.txt stays focused on the test target.

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

* Minor comment tweaks in LocateDXCompilerRuntime.cmake.

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

* Use OCIO_DirectX-Headers_RECOMMENDED_VERSION in InstallDirectX-Headers.cmake

  ocio_install_dependency already propagates the RECOMMENDED_VERSION from the
  ocio_handle_dependency call site. Consume it instead of hardcoding the
  version a second time. Matches the pattern in Installyaml-cpp.cmake and
  Installpystring.cmake.

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

* Address local cleanup notes from PR #2271 Claude review.

* Name CbvSrvHeapSize and throw in setShader if a shader needs more SRV slots than the heap holds.
* Guard ~DxApp() so the GPU wait/CloseHandle are skipped when sync objects were never created (constructor partial-init).
* Comment the 16-byte float4 stride used when packing UNIFORM_VECTOR_FLOAT/INT arrays into the HLSL constant buffer.
* Only record m_windowClassName when RegisterClassExA actually succeeds, so cleanup won't unregister a class owned by another DxApp.
* Drop the redundant trailing else in GPUUnitTest.cpp's shadingLanguage selector (initializer already covers it).

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

---------

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
Signed-off-by: Mei Chu <meimchu@gmail.com>

---------

Signed-off-by: Mei Chu <meimchu@gmail.com>
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
Co-authored-by: Éric Renaud-Houde <eric.renaud.houde@gmail.com>
2026-06-10 13:29:05 -04:00
Doug Walker 7063751feb Adsk Contrib - Avoid possible cycles in transforms (#2318)
* Fix potential cycle crash

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

* Clarify purpose of the various guards

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2026-06-08 21:04:01 -04:00
Éric Renaud-HoudeandDoug Walker 57a94a8003 Add DirectX 12 GPU backend for automated unit testing on Windows (#2271)
* Add DirectX 12 GPU backend for automated unit testing on Windows

Introduce a DirectX 12 / HLSL rendering backend alongside the existing OpenGL / GLSL and Metal / MSL backends, enabling the GPU unit test suite to run natively on Windows without requiring an OpenGL context.

Key changes:

  GraphicalApp abstract interface (graphicalapp.h/cpp)

    Backend-agnostic base class extracted from OglApp.  OglApp and MetalApp now inherit from it.

  DxApp (dxapp.h/cpp) -- DirectX 12 backend

    Off-screen RGBA32F render target, full-screen triangle via SV_VertexID, staging readback, SM 6.0 DXC shader compilation.

  HLSLBuilder (hlsl.h/cpp) -- HLSL shader generation

    Translates GpuShaderDesc into HLSL pixel shaders with 1D and 3D LUT texture uploads in RGBA32F format.

  CMake integration

    OCIO_DIRECTX_ENABLED option, FetchContent for DirectX-Headers, auto-copy of DXC runtime DLLs to the test output directory.

  Test tolerance adjustments

    Minor epsilon increases for 4 tests due to DX12/SM6.0 FMA and pow() precision differences.

  All 263 GPU tests pass on the DirectX 12 backend.

Build and run:

  # Configure (OCIO_DIRECTX_ENABLED defaults to ON on Windows)

  cmake -S . -B build -DCMAKE_BUILD_TYPE=Release

  # Build the GPU test binary

  cmake --build build --target test_gpu_exec --config Release

  # Run GPU tests with the DX12 backend

  ctest --test-dir build -C Release -R test_dx

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

* Fix post-rebase issues found in code review

  - HeadlessOglApp::printGraphicsInfo() was calling pure virtual base (crash on headless EGL)
  - graphicalapp.cpp included oglapp.h unconditionally; guard under OCIO_GL_ENABLED
  - tests/gpu/CMakeLists.txt early-return guard excluded Vulkan-only builds
  - Add missing test_vulkan ctest entry

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

* Minor additional comments, formatting and fixes.

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

* Speed up DX12 GPU test backend (~19%)

  The DX12 test suite was noticeably slower than the OpenGL and Vulkan backends. Profiling the run showed the gap was almost entirely in DXC shader
  compilation, not in Present, fence waits, or DxcCreateInstance as initially suspected.

  Three low-risk changes:

  - Cache IDxcUtils and IDxcCompiler3 as DxApp members instead of recreating them on every setShader() call. The COM instances are thread-safe and
  perfectly reusable; recreating them per test added no value.
  - Compile the full-screen-triangle vertex shader exactly once and reuse the bytecode across all tests. The VSMain HLSL is a hard-coded
  SV_VertexID-driven triangle with no test-specific state — the bytecode is identical every time. Extracted into a new ensureVertexShaderCompiled()
  helper. This alone eliminated the biggest redundancy (263 duplicate VS compiles).
  - Present(1, 0) → Present(0, 0). VSync is meaningless for an off-screen test harness that reads back from a float render target. Locally the win shows
  up mostly in waitForPreviousFrame, which was being throttled by the swap-chain pipeline even on an invisible window.

  All 263/263 tests still pass; no tolerance changes, no DXIL codegen changes (except for a UTF8 fix), no precision risk.

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

* Several small fixes tidying up the recently-added GPU test infrastructure.

  - Fix unused-variable warnings (fatal on macOS with warnings-as-errors): guard useDxRenderer and useVulkanRenderer declarations with the same ifdefs as their usage sites. useMetalRenderer
   stays unconditional because it's referenced on all platforms.
  - Propagate the MSVC+shared-libs PATH workaround to test_vulkan so it can find OpenColorIO_*.dll at runtime, matching what's already done for test_dx.
  - Upgrade the dxcompiler.dll detection message from STATUS to WARNING and rewrite it to name OCIO_DIRECTX_ENABLED and offer concrete recovery paths. The previous STATUS message was easy
  to miss, leaving users with a silent degradation until test_dx failed at runtime.
  - Rename the OpenGL ctest from test_gpu to test_opengl now that sibling backend-specific tests (test_dx, test_vulkan, test_metal) exist. The test_gpu_exec binary keeps its name since it's
   backend-agnostic and selects via CLI flags.
  - Declare OCIO_VULKAN_ENABLED as a first-class CMake option with mark_as_advanced, matching the existing OCIO_DIRECTX_ENABLED. It was previously used in conditionals without ever being
  declared, so it never appeared as a toggle in ccmake/cmake-gui.
  - Document both OCIO_DIRECTX_ENABLED and OCIO_VULKAN_ENABLED in docs/quick_start/installation.rst, noting that Vulkan requires an external SDK.

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

* Integrate DirectX-Headers with OCIO's external-package pattern

  Previously InstallDirectXHeaders.cmake was included unconditionally from oglapphelpers/CMakeLists.txt, so DirectX-Headers was always fetched from GitHub regardless of whether the user had
   a local copy installed. There was no way to use a system install, a vendored copy, or an air-gapped build, and the dep didn't respect OCIO_INSTALL_EXT_PACKAGES. DirectX-Headers is now a
  first-class OCIO dependency, handled the same way as Imath, ZLIB, yaml-cpp, etc.: try find_package first, fall back to FetchContent only if not found and OCIO_INSTALL_EXT_PACKAGES allows
  it.

  Changes:
  - New share/cmake/modules/FindDirectX-Headers.cmake, modeled on FindImath.cmake.
  - InstallDirectXHeaders.cmake → InstallDirectX-Headers.cmake (the hyphen matches OCIO's Install convention).
  - oglapphelpers/CMakeLists.txt now calls ocio_handle_dependency(DirectX-Headers ...) with MIN_VERSION 1.606.0 (Windows SDK 22H2 era — old enough to cover most installed copies) and
  RECOMMENDED_VERSION 1.619.1 (the version OCIO pins and validates).

  For users: a local DirectX-Headers install can now be supplied via any of the standard CMake mechanisms — -DDirectX-Headers_DIR, -DDirectX-Headers_ROOT, -DDirectX-Headers_INCLUDE_DIR, or
  globally with -DOCIO_INSTALL_EXT_PACKAGES=NONE to forbid any network fetch.

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

* Improve dxcompiler.dll diagnostics and allow overriding its path

  Addresses test crashes seen on stuck Windows 10 hosts caused by an old dxcompiler.dll shipped in that host's Windows SDK Redist.

  - Print the version of the found dxcompiler.dll at configure time so crash reports identify the exact DXC build without follow-up diagnostics.
  - Emit a standing hint pointing at the DirectX Shader Compiler releases page, which is the documented workaround.
  - New -DOCIO_DXCOMPILER_DLL=<path> overrides the Windows SDK Redist search, letting users supply a newer DLL pre-build instead of copying it by hand after.
  - Extracted the DXC-runtime logic into share/cmake/utils/LocateDXCompilerRuntime.cmake so tests/gpu/CMakeLists.txt stays focused on the test target.

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

* Minor comment tweaks in LocateDXCompilerRuntime.cmake.

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

* Use OCIO_DirectX-Headers_RECOMMENDED_VERSION in InstallDirectX-Headers.cmake

  ocio_install_dependency already propagates the RECOMMENDED_VERSION from the
  ocio_handle_dependency call site. Consume it instead of hardcoding the
  version a second time. Matches the pattern in Installyaml-cpp.cmake and
  Installpystring.cmake.

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

* Address local cleanup notes from PR #2271 Claude review.

* Name CbvSrvHeapSize and throw in setShader if a shader needs more SRV slots than the heap holds.
* Guard ~DxApp() so the GPU wait/CloseHandle are skipped when sync objects were never created (constructor partial-init).
* Comment the 16-byte float4 stride used when packing UNIFORM_VECTOR_FLOAT/INT arrays into the HLSL constant buffer.
* Only record m_windowClassName when RegisterClassExA actually succeeds, so cleanup won't unregister a class owned by another DxApp.
* Drop the redundant trailing else in GPUUnitTest.cpp's shadingLanguage selector (initializer already covers it).

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

---------

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2026-05-22 19:48:31 -04:00
Doug Walker 907a643afe Adsk Contrib - Fix 2023.3 Linux container break (#2315)
* Fix 2023.3 Linux container break

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

* Adjust to keep the name constant to use the existing GitHub branch rules

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2026-05-22 19:16:59 -04:00
Doug Walker f705d2e6f0 Add CVE to security (#2311)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2026-05-13 17:48:51 -04:00
Doug Walker c173846ced Adsk Contrib - Miscellaneous improvements suggested by Claude (#2308)
* Various fixes suggested by Claude

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

* Address review comments

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

* Update security guidelines

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

* Address review comments

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

* Further max Lut3D size cleanup

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

* Improve cast to avoid possible warning

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2026-05-06 17:59:46 -04:00
Doug Walker 222ca509c9 Fix observed behavior (#2307)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2026-05-06 17:23:36 -04:00
Rémi AchardandDoug Walker 4a119df181 Fix OpenGL ES type issues in ACES2 FixedFunction Ops (#2281)
* Fix OpenGL ES type issues in ACES2 FixedFunction Ops

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

* Update src/OpenColorIO/ops/fixedfunction/FixedFunctionOpGPU.cpp

Co-authored-by: Doug Walker <doug.walker@autodesk.com>
Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Add 2D texture path tests for ACES2 cusp and reach table sampling

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

---------

Signed-off-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2026-05-06 15:22:05 -04:00
Rémi Achard 9abd326bde Add /bigobj for pybind11 target on Windows (#2304)
Signed-off-by: Rémi Achard <remiachard@gmail.com>
2026-05-06 14:57:12 -04:00
Doug Walker 39e775bd84 Improve CMake and Actions settings (#2302)
* Improve cmake and actions settings

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

* Bump sonarqube action

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

* Fix Windows documentation fail

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

* Fix Windows documentation fail, take 2

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2026-05-05 15:16:53 -04:00
Cuneyt OzdasandDoug Walker e24ce5c05d Adsk Contrib - Setup Debugger Env Paths (#2262)
* - Adding a CMake utility function to setup debugger environments so that the debugger can locate the run-time dependencies. This makes it possible to compile and launch the projects directly within visual studio for example.
- Calling the above function in projects that need it.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - white space fix

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - group the source files in IDE to replicate the source tree structure

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Grouping the cpu test project sources to replicate the source tree structure. OCIO library files and the test files are separately grouped for better clarity.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Make the gpu test CTest paths modification more robust

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

---------

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2026-04-24 00:22:44 -04:00
Doug Walker 45ff624270 Adsk Contrib - Update Python documentation requirements (#2285)
* Implement dependabot requests

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

* Revert Sphinx

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

* Update latest dependabot

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

* Add sphinx-press install

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

* Remove outdated comment

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2026-04-22 23:34:20 -04:00
Doug Walker 812f3a462b Adsk Contrib - Update CI to VFX 2026 (#2282)
* Update Linux CI to VFX 2026

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

* Implement TSC requests

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

* Add pypa action and improve Sonar stuff

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

* Update deploy site actions

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

* Remove more python 3.9

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

* Update latest dependabot

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2026-04-22 19:21:40 -04:00
Doug Walker 044f66bac1 Adsk Contrib - Hue curve python binding was not copying all parameters (#2276)
* Fix bug in hue curve python binding

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

* Pointer check improvement

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

* Dangling reference fix

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2026-04-03 15:49:29 -04:00
Dmitry Kazakov 75bb9d0a04 Fix linking to self-built deps on Windows + Clang (#2273)
1) Expat: 'MD' suffix is added on MSVC only, 'd' suffix is added on WIN32
2) ZLib: 'd' suffix is added only on MSVC

Signed-off-by: Dmitry Kazakov <dimula73@gmail.com>
2026-04-01 19:12:57 -04:00
Pavan MadduriandDoug Walker c7612d102a gpu: Add Vulkan unit test framework (#2243)
* Add release signing workflow using Sigstore (#2229)

This adds a GitHub Actions workflow that signs release artifacts
using Sigstore, following the OpenSSF Best Practices Badge
recommendations. The workflow is triggered on release publication
and:

1. Creates a .tar.gz archive of the source tree
2. Signs the archive using sigstore/gh-action-sigstore-python
3. Uploads both the tarball and .sigstore.json credential bundle

Based on the OpenEXR release-sign.yml workflow template.

Closes #2034

Signed-off-by: pmady <pavan4devops@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
Signed-off-by: pmady <pavan4devops@gmail.com>

* gpu: Add Vulkan unit test framework

Add initial Vulkan support for GPU unit testing in OpenColorIO.

This commit introduces:
- vulkanapp.h/cpp: Headless Vulkan rendering framework for GPU tests
- CMakeLists.txt updates: Conditional Vulkan build support with OCIO_VULKAN_ENABLED
- GPUUnitTest.cpp: --vulkan flag to run tests with Vulkan renderer

The Vulkan implementation uses compute shaders for color processing,
similar to the existing OpenGL and Metal implementations. It supports
headless rendering suitable for CI environments.

Note: GLSL to SPIR-V compilation requires linking against glslang or
shaderc library (marked as TODO in the implementation).

Issue Number: close #2209

Signed-off-by: pmady <pavan4devops@gmail.com>

* gpu: Implement GLSL to SPIR-V compilation using glslang

Add glslang library dependency for runtime GLSL to SPIR-V compilation
in the Vulkan unit test framework. This enables the Vulkan GPU tests
to actually run by compiling OCIO-generated GLSL shaders to SPIR-V.

Changes:
- CMakeLists.txt: Add find_package(glslang) and link glslang libraries
- vulkanapp.cpp: Implement compileGLSLToSPIRV() using glslang API

The implementation:
- Initializes glslang process (thread-safe, one-time init)
- Configures Vulkan 1.2 / SPIR-V 1.5 target environment
- Parses GLSL compute shader source
- Links shader program
- Generates optimized SPIR-V bytecode

Signed-off-by: pmady <pavan4devops@gmail.com>

* docs: Add comprehensive Vulkan testing guides for PR #2243

Add detailed testing documentation to help reviewers and contributors
test the Vulkan unit test framework locally.

Files added:
- VULKAN_TESTING_GUIDE.md: Comprehensive guide with installation
  instructions for macOS, Linux, and Windows, build configuration,
  troubleshooting, and platform-specific notes
- QUICK_TEST_STEPS.md: Quick reference guide with fast-track
  installation and testing steps for each platform

These guides address the request from @doug-walker to provide
instructions for installing Vulkan SDK and glslang dependencies
needed to test the Vulkan branch locally.

Signed-off-by: pmady <pavan4devops@gmail.com>

* Remove testing guide files - will provide as PR comment instead

Signed-off-by: pmady <pavan4devops@gmail.com>

* fix: Change Vulkan CMake definitions from PRIVATE to PUBLIC

Address feedback from @doug-walker regarding build issues:
- Change target_include_directories from PRIVATE to PUBLIC
- Change target_link_libraries from PRIVATE to PUBLIC
- Change target_compile_definitions from PRIVATE to PUBLIC

This allows dependent targets (like test_gpu_exec) to properly
access the OCIO_VULKAN_ENABLED definition and Vulkan libraries.

Signed-off-by: pmady <pavan4devops@gmail.com>

* fix: Add MoltenVK portability extension for macOS

Add VK_KHR_PORTABILITY_ENUMERATION extension and flag for macOS
to enable Vulkan instance creation with MoltenVK.

Signed-off-by: pmady <pavan4devops@gmail.com>

* feat: Integrate Vulkan test framework into GPU unit tests

Complete Vulkan test integration for OpenColorIO GPU unit tests:

- Add Vulkan-specific helper functions in GPUUnitTest.cpp:
  - AllocateImageTexture for VulkanApp
  - UpdateImageTexture for VulkanApp
  - UpdateOCIOVulkanState for VulkanApp
  - ValidateImageTexture for VulkanApp

- Wire VulkanApp into test execution loop with proper branching

- Fix VulkanApp initialization:
  - Add MoltenVK portability extension for macOS
  - Add bounds checking in compute shader
  - Fix cleanup order to destroy VulkanBuilder before device

- Fix CMake: Change PRIVATE to PUBLIC for Vulkan definitions

Test Results (macOS with MoltenVK):
- 155 tests PASSED (all non-LUT operations)
- 108 tests FAILED (LUT1D/LUT3D - require texture sampler support)

The LUT tests fail because 3D texture sampler support is not yet
implemented in VulkanBuilder. This is a known limitation that
requires additional work to implement texture allocation and
descriptor set updates for LUT textures.

Signed-off-by: pmady <pavan4devops@gmail.com>

* Add Vulkan uniform buffer and LUT texture support

- Implement VulkanBuilder uniform buffer creation and update for dynamic parameters
- Add 3D LUT texture allocation with RGBA format (RGB32F not supported on MoltenVK)
- Add 1D/2D LUT texture allocation with proper format handling
- Fix shader generation to use correct descriptor bindings for textures and uniforms
- Add std140 layout qualifier to OCIO uniform blocks
- Update descriptor set layout and pool sizes to include uniforms and textures
- Call updateUniforms() before each dispatch for dynamic parameter updates

Test results: 216/263 tests pass (82%)
Remaining failures are complex uniform blocks with vec3 types that need
additional std140 alignment handling.

Signed-off-by: pmady <pavan4devops@gmail.com>

* Fix Vulkan uniform buffer layout and 1D texture handling

- Use OCIO's getUniformBufferSize() and m_bufferOffset for correct std140 layout
- Write array data with 16-byte stride per element (std140 requirement)
- Add std140 layout qualifier to uniform blocks in shader generation
- Disable 1D textures for Vulkan (use 2D instead) for MoltenVK compatibility
- Add better exception handling in GPU unit tests for debugging

This fixes 108 additional Vulkan GPU tests, bringing the pass rate from
155/263 (59%) to 260/263 (98.9%). The 3 remaining failures are ACES2
precision-sensitive edge cases that may need Vulkan-specific tolerance
adjustments.

Signed-off-by: pmady <pavan4devops@gmail.com>

* Use OCIO's getTextureShaderBindingIndex API for Vulkan texture bindings

- Remove manual sampler declarations in buildShader(), use OCIO-generated ones
- Configure shader descriptor with setDescriptorSetIndex(0, 2) for Vulkan
  to start texture bindings at 2 (after input/output storage buffers)
- Use get3DTextureShaderBindingIndex() and getTextureShaderBindingIndex()
  for correct texture binding indices
- Add GPU diagnostic output to verify MoltenVK uses actual GPU hardware

This addresses review feedback from PR #2243 to use the new texture binding
API added in OCIO 2.5.1 (PR #2226) instead of manually declaring samplers.

Test results: 260/263 tests pass (98.9%)
Remaining 3 failures are ACES2 precision-sensitive edge cases.
GPU confirmed: Apple M2 Pro (Integrated GPU), not CPU emulation.

Signed-off-by: pmady <pavan4devops@gmail.com>

* Address PR review comments for Vulkan unit test framework

- Fix switch warning by explicitly handling VK_PHYSICAL_DEVICE_TYPE_OTHER
  and VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM cases
- Fix unused format parameter warning in transitionImageLayout
- Move input/output buffers to high bindings (100, 101) to avoid conflicts
  with OCIO's uniform binding at 0, eliminating need to edit shader text
- Refactor GPUUnitTest.cpp to share code between GL and Vulkan:
  - Extract PrepareInputValues helper for UpdateImageTexture
  - Extract ValidateResults and ValidateImageTextureImpl template for
    ValidateImageTexture
- Preserve Mac ARM ifdef for NaN/Infinity test disabling in Vulkan path
- Update texture binding start to 1 (was 2) since binding 0 is now used
  for OCIO uniforms

Signed-off-by: pmady <pavan4devops@gmail.com>

* Address PR review: use consecutive bindings and increase tolerances

- Change input/output buffer bindings from 100/101 to 1/2
- Update setDescriptorSetIndex(0, 3) so textures start at binding 3
- Increase test tolerances as requested:
  - Test 39 (line 306): 3e-6f -> 3e-5f
  - Test 49 (line 659): 0.018f -> 0.019f
  - Test 51 (line 696): 0.03f -> 0.032f
- Update comments to reflect the new binding strategy

Signed-off-by: pmady <pavan4devops@gmail.com>

---------

Signed-off-by: pmady <pavan4devops@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2026-03-25 20:04:35 -04:00
d9eb50cca5 Alpha channel should be 1 by default, rather than 0 (#2197)
* For CPU processor, when source has no alpha make it default to 1.

Signed-off-by: pylee <penne.y.lee@intel.com>

* Fix alpha channel for integer types.

Signed-off-by: pylee <penne.y.lee@intel.com>

* Fix max alpha value to be from input bitdepth not output.

Signed-off-by: pylee <penne.y.lee@intel.com>

* Forgot to update ImagePacking.h

Signed-off-by: pylee <penne.y.lee@intel.com>

* Remove the unused inputBitDepth name causing compiler error.

Signed-off-by: pylee <penne.y.lee@intel.com>

* Update src/OpenColorIO/ImagePacking.cpp

Co-authored-by: Cuneyt Ozdas <github@cuneytozdas.com>
Signed-off-by: PenneLee <pennelee@gmail.com>

---------

Signed-off-by: pylee <penne.y.lee@intel.com>
Signed-off-by: PenneLee <pennelee@gmail.com>
Co-authored-by: Cuneyt Ozdas <github@cuneytozdas.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2026-03-04 22:27:17 -05:00
Doug Walker 0773c267f1 Increment lib version to 2.6.0 dev (#2266)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2026-03-04 21:46:47 -05:00
Éric Renaud-Houde e9c48718e8 Fix vector comparison expression for HLSL. (#2270)
Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>
2026-03-04 20:27:24 -05:00
Cuneyt OzdasandDoug Walker eaa028171a Adsk Contrib - Add Support for SMPTE ST 2036-1 compliant CLF files (#2265)
* Adding reading and writing support for SMPTE ST 2036-1 compliant CLF files.

- Added "Id" element support per the spec.

- Extended the CTFVersion class to handle non-numeric formats per the spec (which uses xmlns as the version)

- CLF xml parser now strips the namespaces from the elements by default. This makes it possible to parse files with simple name spaces but complex name-spaced clf files may still fail. There is an internal switch to turn on/off the name space stripping. This way elements which need to retain the name spaces (such as the Info element) can still get the un-stripped names.

- Extended the Input and Output Descriptor collection to hold multiple entries (similar to Description field)

- CLF writer now writes the SMPTE xmlns version as well as the CompCLFVersion attribute. The resulting files can be read both by the Academy CLF parsers and SMPTE CLF parsers.

- Generated cache hash IDs are now in the 8-4-4-4-12 UUID format to help complying with SMPTE id requirements

- ociomakeclf tool now takes "--generateid" switch to for inserting newly added "Id element" into the target clf file.

TODO:

- Description and Descriptor elements need to collect the language attribute.

- non-default namespace attributes (e.g. xmlns:foo) needs to be collected as root level attributes.

- Those two TODO items need some re-factoring in the data collection code.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Per the code review, exposing the newly added constant METADATA_ID_ELEMENT in python too.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - re-worked some part of the CLF parser and the CTFReaderTransform class to be able to collect richer metadata.
- Now collecting the language attribute of the Description, input and output descriptor elements.
- Also collecting the non-default xmlns attributes at the root level.
- Updated the tests accordingly.
- Replaced clf/pre-smpte_only/matrix_example.clf with clf/matrix_example_utf8.clf in some for some Reference tests.
- Added format information to the ociomakeclf tool's help text.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - nmake the compilers happy.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - make the compilers happy pt2

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - make the compilers happy pt3
(we need to make Windows compiler settings as picky as other platforms)

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

---------

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2026-02-18 03:31:03 -05:00
Kevin WheatleyandDoug Walker a1ab61ec63 Remove redundant unit_test_failures declaration (#2261)
Removed the declaration of 'unit_test_failures' from UnitTest.h.

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2026-02-12 00:02:36 -05:00
Doug Walker f390b9d204 Add more info to the documentation overview page (#2264)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2026-02-11 00:05:48 -05:00
Thomas Mansencal 9bb14559e7 Implement support for Astral's uv. (#2097)
Signed-off-by: Thomas Mansencal <thomas.mansencal@gmail.com>
2026-02-03 09:44:48 +13:00
KATO ELVIS 205d53b6c3 add LF trademark disclaimer to site footer (#2253)
Signed-off-by: ELVIS-KATO <katoelvis23@gmail.com>
2026-02-02 14:57:59 -05:00
Doug Walker 2a8b59e8a5 Update 2.5 documentation (#2252)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2026-01-23 16:51:12 -05:00
Pavan MadduriandDoug Walker 181303ef32 Add release signing workflow using Sigstore (#2229)
This adds a GitHub Actions workflow that signs release artifacts
using Sigstore, following the OpenSSF Best Practices Badge
recommendations. The workflow is triggered on release publication
and:

1. Creates a .tar.gz archive of the source tree
2. Signs the archive using sigstore/gh-action-sigstore-python
3. Uploads both the tarball and .sigstore.json credential bundle

Based on the OpenEXR release-sign.yml workflow template.

Closes #2034

Signed-off-by: pmady <pavan4devops@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2026-01-12 20:26:55 -05:00
Pavan MadduriandDoug Walker 61c4e08c9a Add Dependabot configuration for automated dependency updates (#2230)
Add dependabot.yml to enable automated dependency updates for:
- GitHub Actions workflows (weekly)
- Python pip packages (weekly)

This follows OpenSSF Best Practices Badge recommendations and
is part of the Step Security hardening measures.

Part of #2035

Signed-off-by: pmady <pavan4devops@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2026-01-11 23:22:22 -05:00
Doug Walker 6a1dff6ee2 Adsk Contrib - Fix interop ID issue in ociocheck (#2204)
* Fix ociocheck

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

* Minor improvements

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2026-01-11 19:46:07 -05:00
Kevin WheatleyandDoug Walker 449d1f2bee Bug/2220 array subscript out of range exception can be thrown under a floating point rounding edge case (#2227)
* Add test to reproduce bug 2220

Code incorrectly deals with edge cases where atan2() returns end of range [-pi, pi]

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Extend tables to have an additonal entry to allow for boundary condition to not over flow table bounds during lookup

All tables are now 1 entry larger and should have valid data wrapped into the extra entries

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Clarify ACES OT 2.0 edge-case test comments around hue-angle table access bug

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

---------

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2026-01-11 19:02:10 -05:00
Doug Walker 9fea546de9 Fix Vulkan texture binding index issue (#2226)
* Fix texture binding index issue

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

* Add texture binding index getters

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

* Adjust addTexture return and fix Python binding

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

* Fix unit tests

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2026-01-11 18:26:02 -05:00
Cuneyt OzdasandDoug Walker d7917d4398 Addressing Issue #2228 - Heap-use-after-free in OpenColorIO::ThrowInvalidRegex (#2231)
This turned out to be not a UAF issue but an out-of-bounds-access issue where the throw was accessing the incorrect (and potentially shorter) string with an index derived from another (and potentially longer) string.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2026-01-11 17:05:25 -05:00
Cuneyt OzdasandDoug Walker 5d2409bbdb Remove [0,1] clamping from ICC transforms (#2224)
* Addressing issue #1915, remove [0, 1] clamping from ICC profiles.

Currently the clamping is removed ONLY when the the type 0 (simple gamma) TRC is used. In this case the the mirroring around origin is used for the negative values.

Other parametric curves are currently implemented as 1DLuts thus will not handle out of bound values properly. In a later wave we can either convert LUTs to half-domain ones or try to implement them with more complex ops (such as exponent with linear).

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Fixing the op tests in the inverse direction
- More detailed explanation for the clamp removal in pure-gamma TRC cases.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

---------

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2026-01-11 16:24:26 -05:00
Cuneyt Ozdas 2bc8759dc2 Fix Windows Doxygen install script (#2234)
* - Fix Windows Doxygen install script as Doxygen v1.16.0 changed the released zip name.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* double escape maybe?

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

---------

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>
2026-01-11 15:06:13 -05:00
Carol PayneandDoug Walker 1d77ecda70 Updating news for OCIO 2.5 and Slack link (#2217)
Signed-off-by: Carol Payne <carol.alynn.payne@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2025-12-10 23:06:22 -05:00
Rémi Achard b59cd64368 Add Python 3.14 wheels and minor fixes (#2218)
* Enable Python 3.14 wheels

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

* Replace macos-13 by macos-15-intel

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

* Allow find_package CONFIG mode with Package_ROOT

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

---------

Signed-off-by: Rémi Achard <remiachard@gmail.com>
2025-11-24 18:23:10 -05:00
AsheikhmandDoug Walker 125af7d2d3 Issue 2075 : Apply RGB on transpose matrices. (#2206)
* adding unit test for applyRGB buffer, check in the applyRGB if the buffer is C order or not, for now throw error

Signed-off-by: Afsaneh Sheikhmiri <afsaneh.sheikhmiri@autodesk.com>

* Adsk Contrib - Detect C/F order, if not C order : RuntimeError shown, test is still not passing

Signed-off-by: Afsaneh Sheikhmiri <afsaneh.sheikhmiri@autodesk.com>

* remove 1d arrays from the test, since even after Transpose, 1d arrays are still contiguous

Signed-off-by: Afsaneh Sheikhmiri <afsaneh.sheikhmiri@autodesk.com>

---------

Signed-off-by: Afsaneh Sheikhmiri <afsaneh.sheikhmiri@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2025-10-28 17:24:48 -04:00
Doug Walker a9ca7e583f Update documentation for 2.5 release (#2202)
* Update documentation for 2.5 release

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

* Fix typos

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

* Address review comments

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

* Fix markdown

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

* Minor updates

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2025-10-01 01:47:34 -04:00
Cuneyt OzdasandDoug Walker f5ca104001 Adsk Contrib - Adding built-in ACES 2.0 configs (#2193)
* - Adding the latest WIP built-in configs (https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES/actions/runs/17850187967)

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Removing the getDefaultBuiltinConfigName() function which was marked as deprecated in v2.3. Similar functionality is now offered by ResolveConfigPath("ocio://default").
- Updated the python binding and the tests accordingly.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - New configs fresh from the oven.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Updating the built-in configs from the PR's latest CI run, #420 ( https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES/actions/runs/18078552508 )

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Fix a copy-paste typo in the comments

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

---------

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2025-10-01 01:07:44 -04:00
Doug Walker 23d0179a7a Adsk Contrib - Merge configs feature (#2179)
* Config merge rewrite, part 1

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
(cherry picked from commit 08a3adf15308ee1a629a29ce8ff94b53f9e7de70)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Add API for config and colorspace merge

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
(cherry picked from commit fadef86510ecbf10d991c61983c91e860358f78f)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Prototype of merge avoid duplicates feature

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
(cherry picked from commit 008ad27467f3a02411a89082ec4e3477286c0a2c)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Unit test fix

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
(cherry picked from commit cbc0f0ec96c8456ceb73f2b6a11b209084613d3f)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Improve duplicates detection

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
(cherry picked from commit 9871ef4fc9e131d29bf68f5716098a64d9818f9d)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Fix unit test

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
(cherry picked from commit 914b2f036baeba2b49c35b64790c4ffa47853f0d)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Various merge fixes

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
(cherry picked from commit f60e990a7288d2a9790cab16ac7475630f6662eb)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Add more tests and clean-up

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

* Improve comments

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

* Remove CreateFromFile support

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

* Add Python binding

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

* Improve view transform comparison

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

* Address Remi's comments

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

* Fix build breaks

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2025-09-30 23:54:08 -04:00
9ebb7706c9 Adsk Contrib - Add hue curve transform (#2177)
* Hue Curve Transform GPU

(cherry picked from commit 393c0f6cf42bd04ed2214eb5c537785927f386ac)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Review Fixes P1

(cherry picked from commit 5b9ff85439070c5ac1bf2be36d28971d82efb204)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Review Fixes P2

(cherry picked from commit d1a5d7a1dca62c0d07fb7158bca578556af7a2ee)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Review Fixes P3

(cherry picked from commit 83340c595fae4c130df105fc83b31270f66f58a2)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Review Fixes P4

(cherry picked from commit b243d1d3e37db1a3bbfcad4271142fa973687d89)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* GradingHueCurveOpData_tests

(cherry picked from commit 2a96167e458260eb1d68d2fa95203d5b066838cd)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Review Fix, ChannelCrosstalk

(cherry picked from commit 0bac40198610e8dca2f0207e633eb0252578684b)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Review Fix, missing fixed function enums in switch cases

(cherry picked from commit 051bd7d574cb1f0d88d2a79a543dde8d6dffc535)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Review Fix, Missing comment on unused test parameters

(cherry picked from commit 07aca3cf31fc0a8b36d117dd6cbe32588549f95d)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* CI Fix, removing multi-line comment

(cherry picked from commit bf780199a1647286d56b8bfbf7933e8ff6762573)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Fixes for Test 2: test_cpu

(cherry picked from commit 4a5001ed26cd39af46ef9cdf6fe87a529db21e23)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Fix Windows CI

Towards clean

(cherry picked from commit d298681a84b7236f4b5795a5cf06ab1fd243338b)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Fix for missing slopes on periodic curves

(cherry picked from commit 3f393f8b100b508ef39ac908535f05677e77decb)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Remove leftover #include from debuging

(cherry picked from commit e7fd3f2c819bc3f69a14b8f801df90bf974cf06a)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Enable to draw the curve eval only for a specific hue curve. (#11)

(cherry picked from commit d658e707be29e08437e9fad8a1cdf01bfa909633)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* RGB to HSY fixed functions using CPU (#17)

(cherry picked from commit a25c1c7fed4c0b6ea1b6c5e668acb12a45ee6f19)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Fix identity hue curve draw only (#20)

(cherry picked from commit 4f276e5c0f60ccb2c460df6521501f2d49d20b0d)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* <<Operator upgrade for list of floats (#23)

(cherry picked from commit 7e6378f2d21ed3ff3c36461987bf24e09c29533e)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Fix unit tests

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
(cherry picked from commit a9e51c86de01315721025418808c78d9fa8265ff)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Fix hue curve unit tests

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
(cherry picked from commit 6c233c8f19c12b711bbec705d7a90e3c84c2fb70)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Comment out OSL tests

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
(cherry picked from commit cf7744e245cfcaba20fe30366819bafe889f2bec)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Finish the implementation

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

* Improve interface, add tests

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

* Minor clean-up

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

* Op<< should contain slopes

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

* Fix python doc line

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

* Improve validation of control points

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

* Update API calls based on Vulkan PR

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

* Saturation robustness

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

* HSY transform setter adjustment

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
Co-authored-by: Jonathan Laroche <jonathan.laroche@autodesk.com>
Co-authored-by: larochj <143038478+larochj@users.noreply.github.com>
2025-09-30 23:12:06 -04:00
Doug Walker f30f2c85df Adsk Contrib - Include color spaces with no categories in menuHelper results by default (#2189)
* Jasmin - Treat No Category As Any

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
(cherry picked from commit 146e90b055ec8720c7d4136a37a18e0eaebab6c6)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Fix python tests

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
(cherry picked from commit fbcd4d4cf8208bf7408f0fa8d737a3fb73b84ff6)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

* Add treat no category as any

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

* Add ability to run a single Python test suite

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

* Clean up minor issues

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

* Respond to review

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

* Fix GPU Action

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2025-09-30 18:57:02 -04:00
97c37385e1 Bump C++, dependencies and update CI workflows (#2192)
* Bump dependencies and update CI workflows

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

* - converting [==] operator to [=] to make them POSIX complaint.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* Code cleanup (PR feedback)

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

* Remove ASWF container minor tag

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

* Debug dependencies latest Linux

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

* Attempt fixing dependencies latest

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

* Try OpenEXR 3.4.0

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

* Adjust CMake imported target for OpenEXR 3.4

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

* Force internal OpenJPH when building OpenEXR

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

* Attempt to fix OpenJPH library name

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

* Adjust comment on OpenJPH version

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

* Disable Python 3.14 wheels until the official release

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

* Cleanup obsolete workarounds for OCIO_PYTHON_LOAD_DLLS_FROM_PATH

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

---------

Signed-off-by: Rémi Achard <remiachard@gmail.com>
Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>
Co-authored-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2025-09-29 20:03:23 -04:00
Michael De CariaandDoug Walker 1da6645efa Add setStringVar to Context Object Python Bindings (#2198)
* Expose setStringVar to Python Bindings Context Object

Signed-off-by: Michael De Caria <decariamichael@gmail.com>

* Add setStringVar to Python Context Test

Signed-off-by: Michael De Caria <decariamichael@gmail.com>

---------

Signed-off-by: Michael De Caria <decariamichael@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2025-09-29 00:03:13 -04:00
337f7c761c Adsk Contrib - Vulkan support (#2176)
* Support for Vulkan GLSL (not yet active).

Signed-off-by: Michael Horsch <michael.horsch@autodesk.com>

* Activated Vulkan shader generation, fixed bool handling.

Signed-off-by: Michael Horsch <michael.horsch@autodesk.com>

* Replaced tabs with spaces.

Signed-off-by: Michael Horsch <michael.horsch@autodesk.com>

* Documentation added for new methods, return values and member variables.

Signed-off-by: Michael Horsch <michael.horsch@autodesk.com>

* Padding and alignment for uniform buffers optimized, smaller fixes.

Signed-off-by: Michael Horsch <michael.horsch@autodesk.com>

* Restored ociodisplay and removed code for testing.

Signed-off-by: Michael Horsch <michael.horsch@autodesk.com>

* Added functions to set/get descriptor set index and texture binding start index.

Signed-off-by: Michael Horsch <michael.horsch@autodesk.com>

* Added exception for invalid texture binding index, smaller fixes.

Signed-off-by: Michael Horsch <michael.horsch@autodesk.com>

* Suggested documentation update

Co-authored-by: Aleksi Sapon <aleksi.sapon@autodesk.com>
Signed-off-by: Michael Horsch <michael.horsch@autodesk.com>

* Merge conflicts fixed.

Signed-off-by: Michael Horsch <michael.horsch@autodesk.com>

* Fixed missing space for non-Vulkan GLSL uniforms.

Signed-off-by: Michael Horsch <michael.horsch@autodesk.com>

* Fixed descriptorSetIndex for textures.

Signed-off-by: Michael Horsch <michael.horsch@autodesk.com>

* Fixed uniform buffer array stride and size.

Signed-off-by: Michael Horsch <michael.horsch@autodesk.com>

* Fixes documentation, formatting. Adds test and py functions.

Signed-off-by: Michael Horsch <michael.horsch@autodesk.com>

* Added missing python bindings.

Signed-off-by: Michael Horsch <michael.horsch@autodesk.com>

* Fixed Metal unit tests.

Signed-off-by: Michael Horsch <michael.horsch@autodesk.com>

* Fixes for MyOSLShaderCreator.

Signed-off-by: Michael Horsch <michael.horsch@autodesk.com>

* Fixed spaces at beginning of uniform declarations.

Signed-off-by: Michael Horsch <michael.horsch@autodesk.com>

* Fixed Vulkan unit test.

Signed-off-by: Michael Horsch <michael.horsch@autodesk.com>

---------

Signed-off-by: Michael Horsch <michael.horsch@autodesk.com>
Co-authored-by: Aleksi Sapon <aleksi.sapon@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2025-09-26 14:16:59 -04:00
Cuneyt Ozdas 7e7f2de28c Adsk Contrib - Adding interchange attributes to ViewTransforms and Looks (#2194)
* Adding interchange attributes to ViewTransforms and Looks
- Currently only the amf_transform_ids key is supported. That key is needed for ACES 2 built-in configs.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* Fixing the build by propagating the last minute wording change.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Fixing a bug in ViewTransform python tests
- Removing the ColorSpace amf_transform_ids_serialization test as almost all of the cases are now exercised in the Config interchange_attributes test.
- minor cleanup

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

---------

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>
2025-09-22 17:58:46 -04:00
Doug Walker 92ab718b83 Adsk Contrib - Enhance active display/view list API (#2186)
* Enhance active display/view list API

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

* Update ocioview to use new API

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

* Fix python arg name

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2025-09-18 20:46:02 -04:00
Cuneyt OzdasandDoug Walker 1cec2abed4 Adsk Contrib - Adding color space attribs: interop_id, amf_transform & icc_profile_name (#2165)
* Adding 3 new attributes to the color space: interop_id, amf_transform_ids and icc_profile_name

- Addressing the issues #1975, #2152 and #2153
- Bumped the config version to 2.5
- newly added attributes require v2.5 config both for serialization and de-serialization and will throw if they appear in older configs.
- Hardened multiple existing functions against null parameters. Previously those functions were crashing if null is passed, as assigning null to std::string is undefined behavior.
- Expanded tests to some affected functions' unit tests to include null passing. Setters will take null as empty string. compare functions will throw.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* As discussed in the TSC meeting, adding a namespace field separator logic to the interop_id field.
- only zero or one ":" is allowed in the interop_id name
- ":" can not be the last character
- added cpp and python unit tests.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* Adding interop_id verification in ociocheck.

Non-namespaced IDs are checked against the known CIF values and warning is issued if not found.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* minor touches.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* fix the failing test.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* Disallow non-ASCII characters (outside of [0..127] range) in the interopID field.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* Fixing the tests which were failing due to exception wording change.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - replacing getAMFTransformIDs and getICCProfileName with more generic getInterchangeAttribute function. Same with the setters
- getInterchangeAttribute() and setInterchangeAttribute() functions currently knows and accepts "amf_transform_ids" and "icc_profile_name" keys. other keys will throw.
- ColorSpace serializer will list all of the key/value pairs.
- InteropID and interchangeAttributes are now allowed in earlier config versions down to 2.0 too. Config::checkVersionConsistency() will throw only for version smaller than 2.0.
- YAML loader and saver now supports the "interchange" section. Any unknown keys under that section will be ignored upon load and will generate a warning but won't throw.
- Generic str key/value loader/saver is extended for re usability (and fixed incorrect throw message).
- since the amf keywords are separated by newline characters, the newline sanitizer that was used for the description is also generalized and applied to all of the current and possible future interchange fields.
- ColorSpace_test.cpp file updated to test the current state and behavior of the API.
- ComputeValues function in the CPUProcessor_tests.cpp was taking the linenumber as as template parameter. This was a very bad idea as that means each invocation of the function would create a separate copy of the function which was causing all sorts of issues in the debugger and failing to compile when the line numbers are not constants (happens in JIT debug sessions). Fixed by making the line number a normal parameter.
- Python ColorSpace object no longer takes the amf of icc parameters in the constructor. User needs to set them explicitely later on.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - ocioconvert now writes the ColorIntropID attribute of of the output color space.
- ociocheck now does extended validity check on the interopID string.
- preliminary implementation of getColorSpaceFromInteropID().

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Another cleanup pass. After some deliberation, we decided to remove getColorSpaceFromInteropID() which will be done in a later pass.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Config::getColorSpaceFromInteropID() function is removed.
- another round of cleanup.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* minor comment fix

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* minor fixes to unknown interchange key warning and its unit test.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Adding the missing interop_id validation check along with couple of unit-tests.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - typo fix and minor cleanup

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Looks like Doxygen doesn't like URLs in the doxygen comment section. Removing the url to see if this fixes the CI issue.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - minor typo fix

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - deduplicating the newline sanitize code in OCIOYaml.cpp
- exposing the interchange attributes as a standard python dictionary through the "interchangeAttributes" read-only property.
- adding python tests on the new interchangeAttributes property.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - per code-review, converting the interchangeAttributes propery on python colorspace object to getInterchangeAttributes() function to stick with the existing conventions.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

---------

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2025-09-17 19:10:19 -04:00
Doug Walker 764f14a9e3 Fixes for the Wheel workflow (#2190)
* Turn off failing stuff

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

* Turn off ociolutimage

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

* Uninstall the runner EXR

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

* Bump EXR min version to 3.1.6

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

* Bump EXR recommended version to 3.1.6

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

* Minor clean up

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2025-09-16 19:56:12 -04:00
Doug Walker 1dfa6aa746 Add setDisplayTemporary method (#2181)
(cherry picked from commit f25cb6af18c5c1966316ff0aa221de32b160f00b)

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2025-09-12 23:03:43 -04:00
Doug Walker b3252c7cd1 Add mirrored displays (#2183)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2025-09-12 14:16:45 -04:00
Doug Walker e151865471 Attempt to fix CI fail involving halfs (#2188)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2025-09-12 13:46:06 -04:00
Beat ReichenbachandDoug Walker 273cdfa4c2 Add Python GPUProcessor example (#2166)
Signed-off-by: Beat Reichenbach <44111292+beatreichenbach@users.noreply.github.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2025-09-03 20:52:03 -04:00
Doug Walker cc9dcffda2 CI fixes (#2184)
* Try to roll back to earlier docker image

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

* Use pip3 rather than pip

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

* Roll back container version again

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2025-09-03 20:19:01 -04:00
Michael Dolan fcdbf56c04 Refactor RTD Python API doc generation (#2171)
* Remove frozen docs

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

* Make opencolorio RTD requirement

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

* Only install from PyPi on RTD_BUILD

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

* Trigger PR RTD build

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

* Restructure pip command

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

* Fallback to latest PyPi version

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

* Increase sphinx verbosity for debugging

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

* Update sphinx verbosity

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

* Try another verbosity adjustment

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

* Fix sphinx build command

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

* Adjusting relative path

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

* Trying alt build structure

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

* Another alt build structure

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

* Try pre-install of OCIO

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

* Testing platform build

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

* Revert conf.py __doc__ test

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

* Update CI to use windows-2022, and linux builds to use apt

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

* Handle dnf/yum/apt for different workflows

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

* Fix wheel builds on Linux

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

* Skip epel install

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

* Add manual doxygen install option

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

* Make dnf scripts executable

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

* special doxygen case for centos

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

* Trying doxygen 1.9.0 on centos-7

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

* Try latest yum install of doxygen

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

* Turn off docs on CentOS-7 builds

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

* Add Windows CI with docs

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

* Use apt for linux wheel builds

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

* Testing linux distro on wheel builds

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

* Update yum repos on CentOS-7

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

* remove sudo

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

* Adjust CentOS-7 vault repo URLs

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

* Add altarch doxygen handling

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

* Inspect Windows docs env

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

* Remove status checks

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

* Re-enable linux-old docs builds

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

---------

Signed-off-by: Michael Dolan <michdolan@gmail.com>
2025-09-02 18:14:38 -04:00
Cuneyt OzdasandDoug Walker c5d6c1a6d3 Adsk Contrib - Renaming the view helper functions to follow the OCIO conventions. (#2167)
* Renaming the newly added view helper functions to follow the OCIO conventions.

- The wording order {object(s)}{Is|Are|Has|Have}{State} for the newly added function names are different than the more typical convention of {is|are|have|has}{Object(s)}{State}.

- Config class already has functions in the second form, such as Config::isColorSpaceUsed() or Config::isColorSpaceLinear(). We also have functions named in yet another form like Config::isInactiveColorSpace(). So not to introduce a 3rd variant, I'm renaming these newly added ones.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* capitalizing two function names per request.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

---------

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2025-06-20 00:32:32 -04:00
Anthony RobertsandDoug Walker db68839483 Fix build issue when using clang (#2137) (#2140)
* Fix build issue when using clang (#2137)

Signed-off-by: Anthony Roberts <anthony.roberts@linaro.org>

* Change define check, and update comment

Signed-off-by: Anthony Roberts <anthony.roberts@linaro.org>

---------

Signed-off-by: Anthony Roberts <anthony.roberts@linaro.org>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2025-06-19 22:37:54 -04:00
Rémi Achard b6d33f7018 Update Python frozen docs (#2168)
* Remove excluded member

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

* Fix import errors

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

* Remove duplicated members

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

* Remove unused file

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

* Avoid package name duplication in Python documentation type hints

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

* Build frozen docs

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

---------

Signed-off-by: Rémi Achard <remiachard@gmail.com>
2025-06-17 18:45:17 -04:00
annieandDoug Walker 6c15d45e38 Add view helper functions to Config class (#2083)
* Add view helper functions to Config class

Signed-off-by: annie <annieyhlin09@gmail.com>

* add view helper functions to Config class and unit tests

Signed-off-by: annie <annieyhlin09@gmail.com>

* add view helper functions as python bindings

Signed-off-by: annie <annieyhlin09@gmail.com>

* add unit tests for view helper py bindings

Signed-off-by: annie <annieyhlin09@gmail.com>

* update with style changes and comments

Signed-off-by: annie <annieyhlin09@gmail.com>

* comprehensive unit tests for ViewsAreEqual and displayHasView

Signed-off-by: annie <annieyhlin09@gmail.com>

* improved in-line comments for unit tests

Signed-off-by: annie <annieyhlin09@gmail.com>

* test suite for comparing virtual displays, fix to getVirtualDisplayViewTransformName when shared

Signed-off-by: annie <annieyhlin09@gmail.com>

* update briefs for ViewsAreEqual + VirtualViewsAreEqual, remove redunant lines in tests, add virtualViewIsShared checks to getVirtualView-related functions

Signed-off-by: annie <annieyhlin09@gmail.com>

* move virtual_display_exceptions test from tests/cpu/Config_tests.cpp to tests/cpu/Display_tests.cpp

Signed-off-by: annie <annieyhlin09@gmail.com>

* move display_view_order test from tests/cpu/Config_tests.cpp to tests/cpu/Display_tests.cpp

Signed-off-by: annie <annieyhlin09@gmail.com>

* add usage of viewIsShared to compare_displays test

Signed-off-by: annie <annieyhlin09@gmail.com>

* add test of clearSharedViews to basic test module in tests/cpu/Display_tests.cpp

Signed-off-by: annie <annieyhlin09@gmail.com>

* change configs for compare_virtual_displays in tests/cpu/Config_tests.cpp to use looks, rules, and description

Signed-off-by: annie <annieyhlin09@gmail.com>

* improve test cases for python config tests

Signed-off-by: annie <annieyhlin09@gmail.com>

* restore old tests to Config_tests.cpp and move new tests compare_displays, compare_virtual_displays to Display_tests.cpp

Signed-off-by: annie <annieyhlin09@gmail.com>

* add null/empty view name handling to viewIsShared and virtualViewIsShared

Signed-off-by: annie <annieyhlin09@gmail.com>

---------

Signed-off-by: annie <annieyhlin09@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2025-05-26 14:12:05 -04:00
Doug Walker ac94d7b0ba Adsk Contrb - Fix pass-thru exponent composition issue (#2154)
* Fix gamma composition issue

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

* Adjust docs build settings to fix CI

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

* Adjust docs build settings to fix CI

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

* Revert CI change

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

* Minor comment tweak

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2025-05-18 01:36:49 -04:00
Manoj Kumar M 36b7595f14 Feature/update landing feature image (#2161)
* Replace landing page feature image with insideout 2

Signed-off-by: immanu10 <manojmanu8971117@gmail.com>

* update website contribution process

Signed-off-by: immanu10 <manojmanu8971117@gmail.com>

* remove generated public files

Signed-off-by: immanu10 <manojmanu8971117@gmail.com>

* update readme and delete spiderverse jpg

Signed-off-by: immanu10 <manojmanu8971117@gmail.com>

---------

Signed-off-by: immanu10 <manojmanu8971117@gmail.com>
2025-05-17 14:10:03 -04:00
zachlewis fc162a8e40 fix: adjust requirements.txt for documentation-building ci step (#2158)
Make sure we're not getting a version of setuptools that's so new it breaks stuff for us.

Should fix CI failures like this one:
https://github.com/AcademySoftwareFoundation/OpenColorIO/actions/runs/14816012234/job/41596531770#step:4:311

Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>
2025-05-13 14:20:17 -04:00
Sean Long 898345165b Add AJA ColorBox as a supported application (#2138)
Signed-off-by: Sean Long <seanl@aja.com>
2025-04-21 18:21:34 -07:00
Doug Walker e6622965f3 Add apps to website (#2147)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2025-04-17 14:32:54 -04:00
zachlewisandDoug Walker ddb9b12062 ci: Use ARM-native runners for linux ARM Python wheels (#2115)
* ci: Use ARM-native runners for linux ARM Python wheels

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

* fix: Make build system compatible with CMake-4.0

Set CMAKE_POLICY_VERSION_MINIMUM=3.5 for our ZLIB and pybind11 build scripts and modules.
Update the cmake_minimum_required syntax in the top-level CMakeLists.txt

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

---------

Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2025-04-03 21:47:44 -04:00
zachlewisandDoug Walker aaa4a79f22 ci: New deploy_site workflow (#2113)
Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2025-04-03 15:32:51 -04:00
Doug Walker 05466120f3 Propose NaN fix for the ACES2 inverse output transforms (#2132)
* Propose Aab_to_RGB NaN fix

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

* Fix for test on ARM

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

* Fix for tests on Linux/Windows

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

* Fix for GPU test on Linux

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

* NaN fix for gamma and double log fixed functions

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

* Remove commented-out code

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2025-03-18 22:40:27 -04:00
193154244b ACES 2.0 Output Transform performance optimisation (#2127)
* ACES 2.0 Output Transform performance optimisation (#2119)

* Extend ocioperf to take config file parameter on CLI

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Extend ocioconvert to take config on command line

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Extract tonescale_fwd function

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Extract inverse tonescale function

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Combine c and Z variables in J calculation exponent
replace 100.0 entries when referring to the scale of J
Extract calculation of nonlinear compression into functions

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Split RGB<->JMh function into two parts to expose opponent intermediate values

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Use function to compute matrix multiply for LMS calculations

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Remove unused member variable from JMhParams structure

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Combine chromatic adaptation weights into LMS matrix (and inverse) - CHANGES PIXEL OUTPUT

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Use matrix form for transforming cone responses to Aab

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Normalise the F_L parameter

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Remove ra and ba related variables to avoid them being out of sync with opponent calculation

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Make A<->J conversion function generic

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Deduplicate Y<->J conversions

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Factor JMh scaling parameters into Aab matrices

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* factor our references to PI, 360 and 180 constants
Avoid looking up cusp twice during inverse
Whilst searching for the cusp we have already constrained the search so we do not need to clamp

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Add functions to explain some of the calculations

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Further clarify when 100 means reference luminance
Migrate rescaling into tonescale s_2 parameter
Rename model_gamma to reflect it is actually the inverse

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* migrate init steps performed within other init functions to the top level to avoid repeat init of precomputed values.

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* extract some of the fixed values that only depend on the hue to reduce recomputation during inverse gamut mapping

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Avoid double lookup for reachMaxM value by resolving once the hue is known.

also reduces size of object on stack by not passing the whole table.

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Push wrapping of hues to the boundary,
mark up  conversion points from external inputs etc

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Store gamma values as reciprocals
move more magic constants into const variables
factor some of the complex expressions into function (temporarily makes things slower)

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Add some missing includes to headers

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* minor cleanup to use std::array instead of plain array for test samples

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Inline reach boundary finding
restructure find_gamut_boundary_intersection to highlight common patterns.

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Extract gamut mapper compression function
rework get_focus_gain to directly computer the slope_gain
Share calculation of analytical thereshold

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Rework gamut mapper to compress absolute M then only recalculate calculate J

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Precalculate maximum search range for cusp lookup

next steps would be to factor hue into separate table to improve cache hits followed by redistribution to more uniform hues which should narrow search range

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Experiment with reusing slope calculations in gamut mapper
presmooth cusp values

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Add a collection of TODO's

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Restore function mapping table index to hue

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Minor tweaks to tonescale inverse clamp

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Remove duplicate table whilst calculating upper hull gamma

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Add some additional sample points for the upper hull gamma finder

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Slight tidy up of gamma fitting code

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Experiment with alternate smin implementation

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Remove unused function and tidy up comments

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Extract hue search into separate function

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Extract hues into separate table, merge gamma values into their place (gamma values now sampled on cusp hue intervals). Removes extra texture from GPU path.

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Simplify upper hull gamma hue lookup to avoid unneeded lerping as we are sampling the table entries directly

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Split out tonescale function, minor tweaks to Aab->JMh

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Build tables more uniformly, needs some clean up and lots of testing

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Speed up reach corner finding by switching to testing against the Achromatic rather than J limit

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Speed up hull gamma finding by computing values which depend only on the test points and not the gamma values themselves

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Adjust GPU hue lookup to take advantage of more uniform distribution

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Fix GLSL compatibility with hue lookup
Remove compiler warnings for unused parameters

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Attempt to simplify table generation code

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Explicilty allow GCC to perform additional optimisations - Needs some discussion

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Add extra entries to reach table to avoid needing to clamp to range during pixel processing

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* GPU move reach Max M sampling to avoid looking it up multiple times per pixel

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Remove smoothing from GPU path, it is baked into the csup

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Fix bug with reach lookup

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Try only wrap hues on input to the shaders

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* rework GPU camut compressor to follow the same algorithm as CPU. Not 100% the same GPU still recalculates some values

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Rework solve_J_intersect to have fewer div instructions

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Adjust GPU code to better align with CPU code's structure, some additional precomputation is now applied during shader generation

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Precompute more scaling factors into matrices and nonlinear functions

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Experiment with unsigned integers for array access

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Bypass one J-> A conversion by saving the Aab computed earlier

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Test intrinsics for compression Norm calculation

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Attempt to calculate sin/cos only once per pixel.
Some minor micro optimisations.
Further alignment of GPU with CPU code,
Tests values need evaluating
Some GPU results are different - TBD

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Remove unused parameters

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Try tree vectoriser for gcc

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Add Vectorise option for MSVC

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Remove unused function

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Constexpr std::max is only available in C++ 14 for now avoid the call to it

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Try to fir intrinsic based errors on osome build configurations

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Another C++ 14 usage fix

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Remove check for CLANG left over from testing

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

---------

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>

* Update ACES2 CPU non-SIMD path (#2122)

* - Commenting out the ACES2 SIMD implementation for now to focus on validity of the scalar math. For SIMD we need to do implement run-time switching logic too.
- Slight improvements to the unit tests so that we print out the computed error metric as well as the actual and expected values. Helps to see the magnitude of the error.
- FixedFunctionOpCPU and BuiltinTransform tests now produce error lines with the same structure & syntax, including the computed error.
- Updated the expected values for ACES2 tests with the values the new optimized code produces, this makes all of the of CPU tests pass now.
- For ACES2 ops and builtin transforms, the error threshold is increased to 1e-4
- added few, temporary code snippets that dumps the currently produced results, making it easier to update the golden values if needed again.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Fixing Linux build

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* Making Linux build happy is never easy.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

---------

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* Address GPU unit test failures (#2123)

* - Weights for cos(3h) and sin(h) in chroma_compress_norm() looks wrong. Fixing the weights makes the GPU tests pass now (except of the inverse output transform which seems to have a separate issue).
- If the new weights are correct, I'll need to update the CPU test target values too.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Updating the expected values in the CPU tests

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - The remaining GPU test failures were caused by a simple typo where we were passing h instead of J to ocio_tonescale_inv() function. With the fix all the unit tests are happy now.

- Since we decided not to include any SIMD implementation in this version, I removed the conditional code paths and left the current SSE & AVX implementations as commented out for future guidence.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

---------

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* Remove unused code for old gamut table calculations (#2124)

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>
Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* Minor code cleanup

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* Adding negative A trap on Aab_to_JMh_Shader() per code review

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* Adding copysign to tonescale to make it aligned with the CPU implementation.

It's possible that on GPU we may never receive negative J due to prior guarding, but for now aligning with the CPU to be on the safer side.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* Add built-in transform round-trip test

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

* Loosen tolerance for other machines

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

* Add GPU round-trip tests

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

* Loosen tolerances for other GPUs

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

---------

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>
Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
Co-authored-by: Kevin Wheatley <kevin.wheatley@framestore.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2025-03-14 18:29:28 -04:00
Rémi AchardandDoug Walker 30db20428b Add missing setConfigIOProxy call to the Python API (#2128)
* Add missing setConfigIOProxy call to the Python API

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

* Restore a clean cache for other unit tests

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

---------

Signed-off-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2025-03-12 00:09:08 -04:00
JGamache-autodeskandDoug Walker fed973f463 Integrating matrix multiplication fix from OSL (#2121)
See https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/pull/1513 for more details.

Signed-off-by: Jerry Gamache <jerry.gamache@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2025-03-10 14:53:27 -04:00
Mark TitchenerandDoug Walker 7237eaadd4 Change recommended Imath version to 3.1.12. This should fix Issue #1764. (#2120)
Signed-off-by: Mark Titchener <mark.titchener@foundry.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2025-03-10 02:57:28 -04:00
Cuneyt OzdasandDoug Walker af69f39dfb Adsk Contrib - Issue #2111 Absolute paths not working through proxy (#2112)
* Ticket #2111
- Do not use config proxy for absolute paths while computing file hash or loading LUT data.
- Added the unit test provided in the ticket.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Changing the logic so that for abs paths we first try the configProxy and if that fails fall back to file system. For relative paths, we don't fall back to file system though, proxy is expected to handle those.
- Removed the unnecessary closeLutStream() function. We're using unique pointers, that means RAII is in place. The whole idea behind RAII is we don't need to worry about the cleanup or the type of the object wrapped by the RAII handler (unique_ptr in this case).
- Cleaned up some unnecessary conversions, type shuffling and copies around the code I touched.
- Cleaned up some unsafe type casts which are prone to dereferencing null pointers.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Ah! make_unique is a c++14 feature and we support C++11. I wonder why windows build is configured to use c++14+ while other platforms use C++11. Replacing make_unique with the new syntax to make the other platforms happy too.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Minor cleanup
- Added a test for absolute path to inexistent file.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

---------

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2025-03-03 22:37:04 -05:00
Morteza Mostajab d807b380d2 Issue #2116 : Fixes Metal backend's generated shaders with float/int constant Array Performance (#2117)
* Issue #2116 : Improves Metal Backend Perf. moves the constant float/int declaration to constant space so it doesnt get initialized per thread. This improved color correction performance on M4 Max 3-4 times better.

Signed-off-by: Morteza <smostajabodaveh@apple.com>

* Tiny refactoring to improve code maintainability

Signed-off-by: Morteza <smostajabodaveh@apple.com>

---------

Signed-off-by: Morteza <smostajabodaveh@apple.com>
2025-02-10 00:37:58 -05:00
Taegyun Ha c5c85b009c Fix issue with ocio_depts handling spaces in file paths (#2109)
Signed-off-by: Taegyun Ha <taegyun.ha@disguise.one>
2025-01-06 16:06:04 -05:00
Anthony RobertsandDoug Walker c09951e456 Add support for Windows ARM64 (#2089)
* Add support for Windows ARM64

Signed-off-by: Anthony Roberts <anthony.roberts@linaro.org>

* Fix improper compiler flag check

Signed-off-by: Anthony Roberts <anthony.roberts@linaro.org>

* Fix sse2neon issues on Windows ARM64

Signed-off-by: Anthony Roberts <anthony.roberts@linaro.org>

* Fix cross-compilation on Windows for X64 -> ARM64

Signed-off-by: Anthony Roberts <anthony.roberts@linaro.org>

* Fix comment to match with corresponding if directive

Signed-off-by: Anthony Roberts <anthony.roberts@linaro.org>

* Check for MSVC before setting MSVC-style flag

Signed-off-by: Anthony Roberts <anthony.roberts@linaro.org>

* Fix comment to resolve ambiguity

Signed-off-by: Anthony Roberts <anthony.roberts@linaro.org>

---------

Signed-off-by: Anthony Roberts <anthony.roberts@linaro.org>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-12-18 20:33:22 -05:00
Rémi AchardandDoug Walker 6fa40a4f6c Fix Python wheel macOS workflow and make OCIO_PYTHON_LOAD_DLLS_FROM_PATH opt-in (#2106)
Signed-off-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-12-10 16:53:28 -05:00
Doug Walker 1890b7d0ae Adsk Contrib - Optimizer should detect pair inverses before combining multiple op pairs (#2104)
* Fix opt combine issue

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

* Improve gamma test

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

* Add check for DisplayP3-HDR built-in

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2024-12-10 12:42:59 -05:00
Éric Renaud-HoudeandDoug Walker 31325793f0 Replaced DX11 HLSL shading language with the more accurate shading model 5.0 (SM_5_0). (#2078)
Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-12-09 21:25:25 -05:00
Doug Walker 4b87e85c1f Revert github action to deploy website (#2105)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2024-12-09 20:22:34 -05:00
Seif AshrafandDoug Walker 0f06f044bf Fixed range function error in nuke colorlookup examples (#2096)
* Error found: ocio_to_colorlookup_all.py

Signed-off-by: Seif Ashraf <seifibrahim32@GMail.com>

* Update colorlookup_to_spi1d.py

Signed-off-by: Seif Ashraf <seifibrahim32@GMail.com>

* Update ocio_to_colorlookup_rgb.py

Signed-off-by: Seif Ashraf <seifibrahim32@GMail.com>

---------

Signed-off-by: Seif Ashraf <seifibrahim32@GMail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-12-07 19:17:46 -05:00
Doug Walker dafefe63e1 Fix bit-depth attr for inv luts for CTF writing (#2090)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2024-12-07 16:23:30 -05:00
hannahmkrasnickandDoug Walker 5c2fa576ca [2057] - Fix views/display submenus in OCIODisplay app (#2068)
* fix views/display submenus

Signed-off-by: Hannah <hannah.mk23@gmail.com>

* fix global variable name

Signed-off-by: Hannah <hannah.mk23@gmail.com>

---------

Signed-off-by: Hannah <hannah.mk23@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-12-07 15:21:35 -05:00
f2dc1475e7 Text format (e.g. IridasCube) parsing optimizations (#2074)
* Iridas .cube and other text format parsing optimizations

Primarily driven by a wish to increase performance of parsing .cube
files. But the functions that are added or changed are used across
parsing of all/most of text based formats.

With these changes, parsing "Khronos PBR Neutral" .cube file (5.4MB)
on Ryzen 5950X / VS2022 Release build: 167ms -> 123ms.

- Add locale independent IsSpace(char). Somewhat similar to 3aab90d,
  whitespace trimming perhaps should not be locale dependent.
- Add IsEmptyOrWhiteSpace() and use that inside ParseUtils::nextline,
  instead of doing Trim(line).empty().
- Add StringUtils::StartsWith(char) and use that in various parsers
  that were constructing whole std::string object just to check for a
  single character.
- When building for C++17 or later, NumberUtils can use standard
  <charconv> from_chars functions (except on Apple platforms, where
  those are not implemented for floating point types as of Xcode 15).
  This has advantage of not having to deal with errno or locales. Saves
  some thread local storage accesses and function calls (e.g. on Windows
  errno is actually a function call).
- There's a CMake setup change that adds /Zc:__cplusplus flag for MSVC;
  for backwards compat reasons it does not report proper C++ version
  detection defines otherwise.

Signed-off-by: Aras Pranckevicius <aras@nesnausk.org>

* Fix test failures (char can be signed, doh)

Signed-off-by: Aras Pranckevicius <aras@nesnausk.org>

* Tests: add unit test coverage for NumberUtils::from_chars directly

Currently it was only tested indirectly via XMLReaderUtils_tests and
file format tests

Signed-off-by: Aras Pranckevicius <aras@nesnausk.org>

* Fix from_chars in C++17 code path to understand hex prefix (0x) and skip optional whitespace

To match the pre-C++17 behavior that was there before

Signed-off-by: Aras Pranckevicius <aras@nesnausk.org>

* Fix detection of <charconv> float from_chars availability

Signed-off-by: Aras Pranckevicius <aras@nesnausk.org>

* Tests: Fix missing <limits> include for gcc

Signed-off-by: Aras Pranckevicius <aras@nesnausk.org>

* Tests: fix uninitialized variable warning-as-error on gcc

Signed-off-by: Aras Pranckevicius <aras@nesnausk.org>

---------

Signed-off-by: Aras Pranckevicius <aras@nesnausk.org>
Co-authored-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-12-06 23:05:40 -05:00
Doug Walker c7ad2a9f65 Fix broken Linux and Mac CI workflow (#2102)
* Fix broken Linux and Mac CI workflow

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

* Update job name

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2024-12-06 16:39:49 -05:00
zachlewis 203c458516 Add GHA workflow to rebuild and republish site on changes to docs/site (#2098)
* fix: modernize Hugo setup

* Replace use of deprecated `.Site.IsMultiLingual` with preferred `hugo.isMultilingual`

* Adjust pagination settings in config.toml

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

* ci: Add GHA workflow for triggering site rebuilds

Whenever a change to a file under "docs/site" is pushed to the `main` branch, rebuild docs/site/homepage with Hugo and publish to `gh-pages` branch, taking care to preserve the contents of the "old" directory.

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

---------

Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>
2024-11-25 12:37:14 -05:00
Thomas Mansencal f37ca55409 Add DISPLAY - CIE-XYZ-D65_to_DisplayP3-HDR builtin transform. (#2095) 2024-11-19 11:07:24 +13:00
Chris Nashandzachlewis 9bc5b8eb1c add Disguise to list of supported applications (#2088)
Signed-off-by: Chris Nash <chris.nash@disguise.one>
Co-authored-by: zachlewis <zachlewis@users.noreply.github.com>
2024-11-04 23:32:53 -05:00
Craig Zerouni 800efd8f3a Update doc building instructions (#2085)
* Update doc building instructions

Signed-off-by: Craig Zerouni <czerouni@gmail.com>

* Remove stray comment line

Signed-off-by: Craig Zerouni <czerouni@gmail.com>

---------

Signed-off-by: Craig Zerouni <czerouni@gmail.com>
2024-11-04 07:00:38 -05:00
Dave Sawyer 81c07fd855 Photoshop now supports OCIO (#2084)
* ocio gm in photoshop

Signed-off-by: Dave Sawyer <kingsawyer@gmail.com>

* Update supported_apps.yml

Signed-off-by: Dave Sawyer <kingsawyer@gmail.com>

* ps and fnordware text

Signed-off-by: Dave Sawyer <kingsawyer@gmail.com>

---------

Signed-off-by: Dave Sawyer <kingsawyer@gmail.com>
2024-10-18 18:49:29 -04:00
Ananth b3900df754 Move GPU LUT files into the tests dir (#2069)
Instead of creating temporary LUT files for GPU tests,
read them from the testdata directory instead.
This removes the need to clean them up after each run.

Signed-off-by: Ananth Bhaskararaman <ananth.b@qubecinema.com>
2024-10-17 22:39:16 -04:00
Aras PranckevičiusandDoug Walker 707734d100 Build: enable parallel source file compilation on MSVC (#2072)
By default Visual Studio projects do not compile source files in
parallel. Add "/MP" flag to enable that.

From scratch OCIO build on Ryzen 5950X, VS2022: 580sec -> 208sec.
Most of remaining single-threaded time is cloning external libraries
or building external libraries (most of them don't do parallel
compilation either). But within building OCIO itself, CPU usage
goes close to 100% instead of 5%.

Signed-off-by: Aras Pranckevicius <aras@nesnausk.org>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-10-16 11:06:09 +01:00
Éric Renaud-Houde 59d6a864f0 Match ACES 2.0 shader resource suffix format to regular luts. (#2077)
Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>
2024-10-11 14:23:04 -04:00
Doug Walker 6998d6d3d7 Increment library version (#2065)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2024-09-30 20:57:24 -04:00
Doug Walker 4dd0273cfa Adsk Contrib - Update documentation for 2.4 release (#2060)
* Update documentation for 2.4 release

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

* Add link to prototype ACES 2 configs

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

* Update video links

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2024-09-29 23:16:27 -04:00
shaneantrim feb4ada09c Update usage_examples.rst (#2062)
* Update usage_examples.rst

Changed Displaying an image, using the GPU (Full Viewport Pipeline) to CPU, added Python section and added Displaying an image, using the GPU with C++ example.

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

* removed main() call

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

* Removed Legacy C++ section

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

---------

Signed-off-by: shaneantrim <shaneantrim@gmail.com>
2024-09-29 21:18:47 -04:00
Annie Lin 7fc59f80e6 Add hasAlias method to ColorSpace and NamedTransform classes (#2059)
* Add hasAlias method to ColorSpace and NamedTransform classes

Signed-off-by: annie <annieyhlin09@gmail.com>

* minor style changes

Signed-off-by: annie <annieyhlin09@gmail.com>

* Update Python binding to include hasAlias method with unit tests

Signed-off-by: annie <annieyhlin09@gmail.com>

---------

Signed-off-by: annie <annieyhlin09@gmail.com>
2024-09-26 21:22:53 -04:00
2f5ae2c568 Fix platform latest (#2058)
* Fix platform latest

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

* Fix Windows Python 3.7 CI

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

---------

Signed-off-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: zachlewis <zachlewis@users.noreply.github.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-09-26 16:28:16 -04:00
Cuneyt OzdasandDoug Walker db6f675bce Adsk Contrib - Adding the new cg and studio configs (issue #1999) (#2039)
* For issue #1999 adding the new cg and studio configs.
- Added new configs cg-config-v2.2.0_aces-v1.3_ocio-v2.4.ocio and studio-config-v2.2.0_aces-v1.3_ocio-v2.4.ocio
- Made default config cg-config-v2.2.0_aces-v1.3_ocio-v2.4
- Updated the tests accordingly.

TODO: Some documents such as aces_cg.rst and aces_studio.srt need to be updated.
Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - minor white-space fixes.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* renaming P3 display scene referred aliases:

-- lin_displayp3_scene --> lin_p3d65_scene
-- srgb_displayp3_scene --> srgb_p3d65_scene

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* Make CIE-XYZ Scene-referred inactive

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

---------

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-09-26 15:55:35 -04:00
Cuneyt OzdasandDoug Walker 79e7b7bff7 Adsk Contrib - Issues #1968 (mirrored) and #1992 (LUT-free builtins) (#2029)
* Adsk Contrib - Issues #1968 (mirrored builtins) and #1992 (LUT-free builtins Pt.1)

For issue #1992 - "Make LUT-free implementations of certain built-in transforms"
- Adding fixed-functions PQ_TO_LINEAR and LINEAR_TO_PQ. These will be used to handle following built-in transforms if the LUT support is turned off:
-- CURVE - ST-2084_to_LINEAR
-- CURVE - LINEAR_to_ST-2084
-- DISPLAY - CIE-XYZ-D65_to_REC.2100-PQ
-- DISPLAY - CIE-XYZ-D65_to_ST2084-P3-D65
- Implemented CPU renderers for scalar, SSE2 (with fastPower) and SSE2 (with Intel SVML) intrinsics targets for the new fixed-function.
- Implemented GPU shader generator for the new fixed-function
- Remaining fixed-functions will be implemented in an upcoming PR.

For issue #1968 - "Make display EOTFs in built-in transforms mirrored and unclamped to preserve sub-black and super-white"
- Existing LUT-based HLG curve is now unclamped at both ends and mirrored around origin.
- Both the existing LUT-based and the new LUT-free implementations of the PQ curve are now unclamped at both ends and mirrored around origin.

Aux Changes
- GetFixedFunctionCPURenderer() now takes a new bool parameter fastLogExpPow.
- Added a stand-in OCIO_LUT_SUPPORT preprocessor macro in preparation for ocio-lite where the lut support can be turned off.
- Added util functions to Config_tests.cpp to help creating configs with arbitrary version.
- Added ability to test fixed-function cpu renderers with and without fastLogExpPow.
- Added capability to specify custom extended ranges in the GPU unit tests. Default value is [-1.0,2.0] same as the previously hard-coded range.
- Fixed a bug in the GPU unit tests where the computed domain values would overshoot.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Renderer_PQ_TO_LINEAR_SSE high precision implementation is now limited to MSVC 2019+ compiler as it has the built-in intel _mm_pow_ps() SVML implementation.
- LUT-based PQ to Linear implementation now uses half-domain LUT to handle extended range. Linear to PQ direction was alredy using half-domain lut (probably due to normal input range being 0 to 100.
- BT_2100 namespace is renamed to HLG
- In BuiltinTransform_tests it's now possible (and necessary) to specify the error threshold for each built-in transform. This was needed as the hard-coded 1e-6 threshold was too tight for the PQ curve which uses nested power functions and thus numerical stability was depending on the implantation flavor.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Reversing the forward direction of the PQ curve, now the forward direction is linear -> PQ . Changed the enum names accordinly, updated the tests etc.
- Adding a new Hybrid Log Gamma fixed function. Similar to the PQ curve, the forward direction is linear -> HLG. SIMD implementation is currently missing, can be done in the future.
- minor fixes in the PQ cpu op
- some adjustments to the CPU test values and thresholds.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Ah! gcc and clang being more picky about the unused variable bit me again.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Completed outstanding to-do items.
- Code beautification.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Adding few missing pieces I noticed for PQ and HLG fixed functions
- Since we changed the default direction of the PQ and HLG fixed functions, I moved the order of the functions in the source files so that forward becomes before inverse.
- Adding the first cut of the FIXED_FUNCTION_LINEAR_TO_DOUBLE_LOG_AFFINE fixed function. This is still in WIP, needs some optimizations and tests implemented. Also to be able to handle the Apple Camera curve, it needs to be extended a bit. But currently it can handle the Canon CLog2 and CLog3 curves with all tests passing.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - unbreak gcc and clang compilers

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Adding GpuShaderText::floatXGreaterThanEqual() functions which are needed for precise break-point handling in non-continuous piecewise functions.
- changes for double log gamma fixed function
-- Fixed couple of bugs
-- Added basic parameter validation
-- implemented fwd and inv gpu shaders
-- Fixed CLog2 and CLog3 double log gamma constants.
-- implemented cpu and gpu shaders

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - HLG fixed-function is now parametrized and the previously hard-coded Rec.2100 HLG curve parameters are now passed to the fixed-function by the built-in transforms and by some of the test suites.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Adding a new parameter to the HLG fixed-function to control the point mirroring is applied. Below the mirror point the input values will be mirrored around that point and the output sign will be flipped. Although this does not guarantee by itself a monotonously increasing (thus invertible) and a continuous function, when the parameters are proper these properties will be achieved.
- Both the Rec.2100 HLG curve and Apple camera curve are now implemented by the HLG fixed-function when the LUT-support is turned off.

for now checking-in with LUT_SUPPORT turned off to run the CI tests on the implementation. I'll turn it on later.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Unlike msvc, gcc and clang could not auto-determine the template parameter for the base class. I'm making it explicit, hope that it'll unbreak the builds.
- minor comment fix :)

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - gcc and clang are still failing. Removing the template for the HLG, hope this will un-confuse the compilers.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - handling the unused variable warning/error when the LUT-support is turned off.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - Fighting with more unused variable warning turned into error. At this stage I'm not sure that turning this warning on the compilers is a good idea or not. Almost all cases are simple unused variabled due to different cmake switches and will be happily optimized out by the compiler without any side-effect. I'm curious to see if that compiler flag helped anyone to catch a bug early on at all.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* silencing more unused vars.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - now that all the compiler are happy when the lut-support is turned off, turning it back on.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* - minor fixes, mostly formatting.

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>

* Refine enums

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

* Add opdata test

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

* Add hlg oetf builtin

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

* Update CTF version

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

* Add builtin version tests

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

* Fix typo

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

---------

Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-09-26 13:40:38 -04:00
Doug Walker 5c80c0beaa Adsk Contrib - Add DCDM displays and improve HLG OOTF implementation (#2051)
* Add DCDM displays, improve Rec.2100 surround

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

* Fix Linux test

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

* Remove 48 nit scaling

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

* Remove D60 DCDM built-ins

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

* Add version check

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2024-09-26 00:42:05 -04:00
Rémi Achard e0666e2022 ACES2 Output Transforms (#1983)
* ACES2 BuiltinTransforms

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

* Fix NaNs and add bound checking on CPU gamut table sampling

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

* Use powf instead of pow for consistency

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

* Remove f suffix for floating-point literals in shaders

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

* Address PR feedback around unit tests

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

---------

Signed-off-by: Rémi Achard <remiachard@gmail.com>
2024-09-25 20:08:43 +01:00
Rémi Achard 77e92a9177 Python 3.13 wheels (#2052)
* Python 3.13 wheels

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

* Build mac ARM wheels on Apple Silicon runners to enable testing

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

* Fix upload_pypi job dependencies

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

---------

Signed-off-by: Rémi Achard <remiachard@gmail.com>
2024-09-24 14:40:00 +01:00
Rémi AchardandDoug Walker 145bce2b11 Add VFX 2024 to CI (#2053)
* Add VFX 2024 ASWF iamges to CI

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

* Bump CMake to 3.14 minimum to fix warning in FetchContent

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

* Fix error message formating

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

* Reduce warnings

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

---------

Signed-off-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-09-23 20:34:18 -04:00
Rémi AchardandDoug Walker aa7fac0bdb Add --bitdepth flag to ocioconvert (#2038)
Signed-off-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-09-22 22:48:08 -04:00
Alina Gotovtsevaandzachlewis a1c4367b75 Add TouchDesigner to supported apps (#2037)
Signed-off-by: Alina Gotovtseva <alinakago@gmail.com>
Co-authored-by: zachlewis <zachlewis@users.noreply.github.com>
2024-09-22 22:17:35 -04:00
Cuneyt OzdasandDoug Walker 62d355721e - Instead of assuming a hard-coded visual studio installation path, we're now using the vswhere.exe tool that the visual studio installs in every system. This removes the necessity to specify the msvc path in the command line if visual studio was not installed into the default path. Option to override is still possible as before. (#1980)
Signed-off-by: cuneyt.ozdas <cuneyt.ozdas@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-09-11 23:46:19 -04:00
Doug Walker 9864d7537b Modify half-domain LUT1D GPU shader to improve zero handling (#1981)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2024-09-04 22:51:35 -04:00
Doug Walker d2c9617036 Adsk Contrib - Add config file to fix ReadTheDocs builds (#2028)
* Add config file to fix ReadTheDocs integration

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

* Miscellaneous minor fixes

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2024-09-04 21:48:40 -04:00
Joseph GoldstoneandDoug Walker 46bce12937 Fix typo where apostrophe was used in forming possessive of 'it' (#2024)
Signed-off-by: Joseph Goldstone <joseph.goldstone@mac.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-09-02 21:54:56 -04:00
Dave SawyerandDoug Walker 16b8c9ee52 Remove fnordware plugins (#2025)
* Remove fnordware plugins

Signed-off-by: Dave Sawyer <kingsawyer@gmail.com>

* Delete vendor/aftereffects directory

Signed-off-by: Dave Sawyer <kingsawyer@gmail.com>

---------

Signed-off-by: Dave Sawyer <kingsawyer@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-09-02 21:20:06 -04:00
Mahesh MadhavandDoug Walker ae79fdf1b7 Update OpenColorIO.h (#2020)
Fix for building with gcc-15

Signed-off-by: Mahesh Madhav <67384846+heshpdx@users.noreply.github.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-08-23 22:49:36 -04:00
Dave Sawyer f2da47e421 Update supported_apps.yml for AE and PS (#2026)
* Update supported_apps.yml for AE and PS

Signed-off-by: Dave Sawyer <kingsawyer@gmail.com>

* Update supported_apps.yml

Signed-off-by: Dave Sawyer <kingsawyer@gmail.com>

---------

Signed-off-by: Dave Sawyer <kingsawyer@gmail.com>
2024-08-23 22:19:11 -04:00
Dave Sawyer 4944d6eefb Update compatible_software.rst (#2022)
Signed-off-by: Dave Sawyer <kingsawyer@gmail.com>
2024-08-15 14:27:02 -04:00
Michael DolanandThomas Mansencal 5d3e0b323c ocioview: app mode, tests, color space menus, bug fixes (#2006)
* black code formatting

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

* Handle empty image in chromaticities inspector

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

* Allow unsetting shared view rule

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

* Qt6 compatibility fixes

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

* Bug fixes, unit test framework setup

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

* Add initial unit tests

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

* Add application mode

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

* Add new color space combo

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

* Use color space menu helper

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

* Move mode select to top of window

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

* Fix mode viewer context switching

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

* Recombine viewers

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

---------

Signed-off-by: Michael Dolan <michdolan@gmail.com>
Co-authored-by: Thomas Mansencal <thomas.mansencal@gmail.com>
2024-08-10 18:03:34 +12:00
Sumana SreeandDoug Walker 757e24b9af Updated documentation Specifying types for GradingPrimary attributes #1640 (#1989)
* Update documentation: Specify types for GradingPrimary attributes

Signed-off-by: sumana sree <sumanasree2705@gmail.com>

* added pivotWhite and pivotBlack types to documentation

Signed-off-by: sumana sree <sumanasree2705@gmail.com>

---------

Signed-off-by: sumana sree <sumanasree2705@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-08-09 19:46:49 -04:00
PenneLeeandDoug Walker 77133f59dd Add NamedTransform option to ocioconvert tool. (#1988)
Signed-off-by: pylee <penne.y.lee@intel.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-08-09 19:08:42 -04:00
Doug Walker 87ccf32a8d Allow read and write of file rules without cs validation (#1976)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2024-08-09 18:29:22 -04:00
Doug Walker 4b918337cf Harden unit test folder handling (#2019)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2024-08-09 17:51:09 -04:00
AmysparkandDoug Walker 21f656ff36 Darwin: use the correct include for locale functions (#1987)
Fixes #1973

Signed-off-by: L. E. Segovia <amy@amyspark.me>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-07-21 20:25:16 -04:00
SlawekNowyandDoug Walker 1e17c9abb0 Update Installminizip-ng.cmake (#1986)
Fix an occasional race condition caused by zlib building before minizip-ng.

Signed-off-by: Sławomir Śpiewak <sosw.slawomir.spiewak@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-07-21 20:05:08 -04:00
Doug Walker 360e66d7ff Fix for GitHub Actions node.js glibc issue (#1990)
* Fix for node.js glibc issue

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

* Temporarily turn off Linux docs builds

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

* Temporarily turn off Linux docs builds, 2nd try

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

* Update macOS runner from 11 to 12

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

* Attempt docs install fix

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

* Another docs fix attempt, and add 2024 container

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

* Remove 2024 container test

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

* Turn fail-fast off

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

* Add better comment for install script

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2024-07-11 20:39:28 -04:00
Thomas Mansencal dc13f2933c Update color_space_to_rgb_colourspace member usage. (#1985)
Signed-off-by: Thomas Mansencal <thomas.mansencal@gmail.com>
2024-06-24 15:30:30 -04:00
Thomas Mansencal 55cfe59247 PR: ocioview - Chromaticities Inspector (#1914)
* Add initial `pyproject.toml` file to setup *ocioview* development environment.

Signed-off-by: Thomas Mansencal <thomas.mansencal@gmail.com>

* Implement initial chromaticity inspector.

Signed-off-by: Thomas Mansencal <thomas.mansencal@gmail.com>

* Rename `ocioview.ocioview.utils.color_space_to_RGB_Colourspace` definition to `color_space_to_rgb_colourspace`.

Signed-off-by: Thomas Mansencal <thomas.mansencal@gmail.com>

* Removed unneeded string formatting in `ocioview.ocioview.utils.py` module.

Signed-off-by: Thomas Mansencal <thomas.mansencal@gmail.com>

* Add `wgpu` to direct dependencies.

Signed-off-by: Thomas Mansencal <thomas.mansencal@gmail.com>

---------

Signed-off-by: Thomas Mansencal <thomas.mansencal@gmail.com>
2024-06-09 11:00:23 +12:00
Carol Payne 6dc7fb40ae TSC Updates - Mark and Cuneyt additions, creation of emeritus section, updates to TSC responsibilities.Committers Updates - Adding Mark and Cuneyt, along with other already existing committers or emeritus status not reflected in this file. (#1977)
Signed-off-by: Carol Payne <carol.alynn.payne@gmail.com>
2024-05-17 18:01:12 -04:00
Michael Dolan 7e91b0e9a6 ocioview updates & fixes (#1966)
* Improve ocioview exit, view, and icon UX

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

* Fix message router property routing

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

* Add processor context

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

* Revise item type data descriptions

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

* Split item name from item label

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

* Update processor context direction handling

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

---------

Signed-off-by: Michael Dolan <michdolan@gmail.com>
2024-05-06 22:03:36 +12:00
Michael DolanandThomas Mansencal 813785eca6 ocioview image and PySide6 updates (#1912)
* Updates for PySide6 compatibility

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

* Remove QT3D_RENDERER override

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

* Message router name update

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

---------

Signed-off-by: Michael Dolan <michdolan@gmail.com>
Co-authored-by: Thomas Mansencal <thomas.mansencal@gmail.com>
2024-04-17 13:12:00 -04:00
Mei ChuandDoug Walker 67a26e4a38 Add a helper function to check if an extension is supported by file transform (#1962)
* Add FileTransform::IsFormatExtensionSupported()

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

* IsFormatExtensionSupported ignores dot at start.

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

* Add C++ tests for new function.

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

* Fix a small bug in the new C++ tests.

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

* Add python binding, python tests and address feedbacks.

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

* Change extension accepted to IsFormatExtensionSupported() to case-insensitive.

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

* Bugfix to account for single dot input.

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

* Cleanup isFormatExtensionSupported() structure a bit to look nicer.

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

* Reset whitespace cleanup. Also add a guard against invalid pointer.

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

---------

Signed-off-by: Mei Chu <meimchu@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-04-03 18:57:09 -04:00
AlexSchwankandDoug Walker b87d80d155 Replaced deprecated Carbon framework with ColorSync and CoreGraphics. (#1961)
* Replaced deprecated Carbon framework with ColorSync and CoreGraphics.

Signed-off-by: Alexander Schwank <alschwank@gmail.com>

* Added CoreFoundation linkage

Signed-off-by: Alexander Schwank <alschwank@gmail.com>

---------

Signed-off-by: Alexander Schwank <alschwank@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-04-03 16:28:58 -04:00
Mark Reid 865e261769 Add ociocpuinfo utility (#1960)
* CPUInfo cleanup

Remove unneeded duplicate code h
Handle unknown processors

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Add ociocpuinfo utility

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Add ociocpuinfo to python console_scripts

Signed-off-by: Mark Reid <mindmark@gmail.com>

---------

Signed-off-by: Mark Reid <mindmark@gmail.com>
2024-04-01 22:14:33 -04:00
Mark Reid 91e8826a8b Add AVX512 accelerated 1D/3D LUTS (#1932)
* Initial AVX512 support

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Lut1DOp add AVX512 implementation

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Lut3DOp add AVX512 implementation

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Don't use SIMD if only 1 pixel is requested

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Remove #if, f16c is always available with AVX512

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Cast pointers to __m512 instead of __m256

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Use size method from vector being tested

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Add to help message that f16c is only used with AVX/AVX2

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Clarify test case by using uint8 maxValue

Signed-off-by: Mark Reid <mindmark@gmail.com>

---------

Signed-off-by: Mark Reid <mindmark@gmail.com>
2024-03-21 01:11:20 -04:00
Mark Reid 50e7d5863d Fix CPU unit test failures on recent macOS ARM platforms (#1950)
* Fix CPUProcessor/optimizations on arm64 Arm64 has fma instructions that can lead to different results Break the manual computaion into multiple steps

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Compare strings by float value

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Enable macarm runners by default

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Move mac arm runner to main workflow

Signed-off-by: Mark Reid <mindmark@gmail.com>

* fix rosetta typo

Signed-off-by: Mark Reid <mindmark@gmail.com>

* move StringFloatVecClose to testutils

Signed-off-by: Mark Reid <mindmark@gmail.com>

---------

Signed-off-by: Mark Reid <mindmark@gmail.com>
2024-03-20 00:52:15 -04:00
Rémi Achard 9fe81cb02e CI Workflows various fixes (#1945)
* Fix OSL 1.13 unit tests

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

* Update GHA deprecated actions

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

* Update sonnar-scanner version

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

* Upgrade platform latest to C++23 and fix Pybind11 asserts

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

---------

Signed-off-by: Rémi Achard <remiachard@gmail.com>
2024-03-12 16:34:37 +13:00
Joseph Goldstone 184566eef0 Built-In Transform support for Apple Log (#1941)
* Built-In Transform support for Apple Log

Signed-off-by: Joseph Goldstone <jgoldstone@arri.com>

* Add Apple Log to Linear curve

Signed-off-by: Joseph Goldstone <jgoldstone@arri.com>

* Don't allow use of Apple Log in pre-2.4 configs; create half LUT to avoid clipping input

Signed-off-by: Joseph Goldstone <jgoldstone@arri.com>

* Insert std:: in front of that square root

Signed-off-by: Joseph Goldstone <jgoldstone@arri.com>

* Bump minor version number to 4 in testing config (stored as string literal); bump LastSupportedMinorVersion to 4

Signed-off-by: Joseph Goldstone <jgoldstone@arri.com>

* Adjust string literal against which maximum minor version is tested to be 4, not 3

Signed-off-by: Joseph Goldstone <jgoldstone@arri.com>

---------

Signed-off-by: Joseph Goldstone <jgoldstone@arri.com>
2024-02-06 23:37:55 -05:00
Brecht Van Lommel 0c90ded166 Fix AVX instructions used on CPUs that don't support them (#1935)
* Fix AVX instructions used on CPUs that don't support them

It's supposed to check all bits are enabled, not just one of them.
This causes a crash using OpenColorIO on older CPUs.

Thanks to Ray Molenkamp for help tracking this down.

Signed-off-by: Brecht Van Lommel <brecht@blender.org>

* Fix another case pointed out in review

Signed-off-by: Brecht Van Lommel <brecht@blender.org>

---------

Signed-off-by: Brecht Van Lommel <brecht@blender.org>
2024-01-26 14:53:29 -05:00
PenneLeeandDoug Walker aadf595946 Enhance ociochecklut to print the output after each step in a multi-t… (#1925)
* Enhance ociochecklut to print the output after each step in a multi-transform LUT

Signed-off-by: pylee <penne.y.lee@intel.com>

* Review feedback to enable printe of transforms list when using -s flag.

Signed-off-by: pylee <penne.y.lee@intel.com>

* Print transform description for each step instead.

Signed-off-by: pylee <penne.y.lee@intel.com>

---------

Signed-off-by: pylee <penne.y.lee@intel.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-01-23 00:50:54 -05:00
f9250992eb Add manylinux_2_28 Python wheels (#1933)
Signed-off-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Michael Dolan <michdolan@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-01-22 23:33:27 -05:00
Chandy Navaratan 969bc68e58 Issue# 1922 - adding CI workflow to build for MAC ARM (#1928)
* Create ci-macarm.yml

Signed-off-by: Chandy Navaratan <chandy@raje.sh>

* Update ci_workflow.yml

Remove macos arm builds from regular CI pipeline

Signed-off-by: Chandy Navaratan <chandy@raje.sh>

* Updates based on review comments

1. Update trigger to run at 8:00AM on the 27th of every month.
2. Switch runner to macos-13-xlarge to trigger builds on ARM-based machines.

Signed-off-by: Chandy Navaratan <chandy@raje.sh>

* Revert "Update ci_workflow.yml"

This reverts commit d8cadc2583be0c6f04850bee49f068c54f2fb8fb.

Signed-off-by: Chandy Navaratan <chandy@raje.sh>

* Additional fixes based on PR feedback

Signed-off-by: Chandy Navaratan <chandy@raje.sh>

* Allow workflow to run against base branch for PRs

Signed-off-by: Chandy Navaratan <chandy@raje.sh>

* Switch to Python 3.11 and add arm64 as arch type

Signed-off-by: Chandy Navaratan <chandy@raje.sh>

* Update on trigger from pull_request_target to pull_request

Signed-off-by: Chandy Navaratan <chandy@raje.sh>

* Enable GPU acceleration

Enable GPU acceleration to run metal unit tests per input from Remi and Doug.

Signed-off-by: Chandy Navaratan <chandy@raje.sh>

---------

Signed-off-by: Chandy Navaratan <chandy@raje.sh>
2024-01-22 20:21:21 -05:00
phaniumandDoug Walker a95febc70e Fix narrowing conversion error on riscv64 (#1924)
Signed-off-by: phancb <nxhsdu@qq.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-01-22 00:04:43 -05:00
Rui ChenandDoug Walker e747e9c0bd fix: use system include pystring.h for ConfigUtils.cpp (#1921)
Signed-off-by: Rui Chen <rui@chenrui.dev>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2024-01-21 23:32:13 -05:00
Mark Reid 003b6a19e6 Fix ssse3 detection typo (#1929)
Signed-off-by: Mark Reid <mindmark@gmail.com>
2024-01-21 22:47:35 -05:00
Kevin WheatleyandDoug Walker ba2b41e309 Fix wrong RPATH being injected into Python bindings DSO (#1849)
Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-12-07 17:56:48 -05:00
Rémi AchardandDoug Walker f2cfec330e Add Python 3.12 wheels (#1898)
Signed-off-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-12-05 18:27:06 -05:00
Doug Walker d8852b5d6c Adsk Contrib - Improve heuristics for finding known color spaces (#1913)
* Improve heuristics

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

* Add some comments

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2023-12-05 01:20:36 -05:00
Rémi AchardandDoug Walker 41441bb2e6 Fix yaml-cpp build issues (#1907)
Signed-off-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-11-22 20:29:04 +00:00
Doug Walker 4f4f30e1d3 Fix env serialization for v1 configs (#1904)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2023-11-17 01:52:51 -05:00
Doug Walker 4d64b32bc7 Fix NamedTransform context var issue (#1905)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2023-11-16 21:27:01 -05:00
Rémi AchardandDoug Walker ffd0f70ad5 Improve compatibility with minizip-ng COMPAT mode (#1902)
Signed-off-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-11-15 21:28:29 +00:00
Rémi AchardandDoug Walker 9078753990 Improve handling of pystring include dir (#1901)
Signed-off-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-11-14 02:11:53 -05:00
Rémi AchardandDoug Walker 382dcb6ce7 Restore GPU workflow and minor updates to CI (#1899)
* Restore GPU workflow runs

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

* Enable undefined behaviour sanitizer

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

* Fix SIMD option for platform_latest

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

* Fix install_docs_env on CI workflow (not used at the moment)

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

* Fix OpenEXR build flag

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

---------

Signed-off-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-11-14 01:26:05 -05:00
Éric Renaud-HoudeandDoug Walker 52b496528c Skip processor concatenation if the display color space is also data. (#1896)
* Skip processor concatenation if the display view transform is also data.

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

* Moved missing display color space exception before processor creation.

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>

---------

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-11-13 20:47:11 -05:00
tobimandDoug Walker 1d3b69502e Simplify the Findyaml-cpp module (#1891)
This fixes compatibility with yaml-cpp 0.8, which previously failed
because of a `get_property` call with the wrong target name.
I took the liberty to add a few simplifications along the way.

Signed-off-by: Tobias Mayer <tobim@fastmail.fm>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-11-11 20:37:47 -05:00
Cédrik FuocoandDoug Walker b94a184e4b Tentative fix for the doxygen installation in the CI (Windows) (#1890)
Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-11-05 12:57:09 -05:00
PenneLeeandDoug Walker ed852073f2 Issue #1874 Cast to unsigned char for isspace. (#1888)
* Issue #1874 Cast to unsigned char for isspace.

Signed-off-by: pylee <penne.y.lee@intel.com>

* Add unit test.

Signed-off-by: pylee <penne.y.lee@intel.com>

* Add test comment as suggested in code review.

Signed-off-by: pylee <penne.y.lee@intel.com>

---------

Signed-off-by: pylee <penne.y.lee@intel.com>
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-11-05 11:52:22 -05:00
45544ce667 Improve ocioview mac support and simplify dependencies (#1853)
* PySide 6, remove imath, add imageio support

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

Remove Imath

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

Support imageio as fallback for openimageio

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

Further adjustments following latest updates

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

Fix pixel probe

Signed-off-by: Remi Achard <remiachard@gmail.com>

Add OpenColorIO to requirements

Signed-off-by: Remi Achard <remiachard@gmail.com>

* Fix rebase issue

Signed-off-by: Remi Achard <remiachard@gmail.com>

---------

Signed-off-by: Remi Achard <remiachard@gmail.com>
Signed-off-by: Thomas Mansencal <thomas.mansencal@gmail.com>
Signed-off-by: Michael Dolan <michdolan@gmail.com>
Co-authored-by: Thomas Mansencal <thomas.mansencal@gmail.com>
Co-authored-by: Michael Dolan <michdolan@gmail.com>
2023-10-30 10:33:08 -04:00
AbhineshandDoug Walker 0d00b2c538 fix(grammatical): Spelling mistakes (#1892)
Signed-off-by: AbhineshJha <abhinesh_223002@saitm.org>
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-10-29 19:45:38 -04:00
Thomas MansencalandDoug Walker 1fad4666c3 Remove circular import caused by typing annotations. (#1882)
Signed-off-by: Thomas Mansencal <thomas.mansencal@gmail.com>
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-10-29 17:25:44 -04:00
Michael De CariaandDoug Walker bc8569b2db Fix missing Default View Transform on equal operator (#1886)
Add the missing assignment of the the default view transform when a config is copied using the equal operator

Signed-off-by: Michael De Caria <decariamichael@gmail.com>
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-10-27 15:57:02 -04:00
Michael DolanandDoug Walker 8add374dad ocioview: Curve Inspector improvements (#1845)
* Curve inspector improvements

- Move README to root app folder
- Change curve inspector grid to always render as a square with 10 segments.
- Add transform init callback to set new transform subscriptions to the current viewer if set to passthrough.

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

* Improve log range calculation

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

* Improve channel sample comparison

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

* Update src/apps/ocioview/ocioview/inspect/curve_inspector.py

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

Co-authored-by: Doug Walker <doug.walker@autodesk.com>
Signed-off-by: Michael Dolan <michdolan@gmail.com>

---------

Signed-off-by: Michael Dolan <michdolan@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-10-24 22:55:20 -04:00
Éric Renaud-Houde dddbee023d Fix missing cache id reset on look update. (#1873)
Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>
2023-10-10 20:43:27 -04:00
Kevin WheatleyandDoug Walker c7ad35340a Fix regression in cccid handling when no value is supplied (#1855)
In v1 of OCIO FileTransforms are able to load .cc files
without specifying a cccid. In v2 this broke causing an
exception to be raised instead of using the first cc found
in the file.

Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-09-26 21:58:32 -04:00
Uchiha KakashiandDoug Walker c429400170 Correctly recover CXX_FLAGS in CheckSupportSSE2.cmake (#1861)
Signed-off-by: Chongyun Lee <uchkks@protonmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-09-26 14:11:58 -04:00
Cédrik FuocoandDoug Walker 381d1fc371 Changing version to 2.4.0 (#1852)
Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-09-26 13:27:03 -04:00
Kevin WheatleyandDoug Walker 87126fad7f Add links to new release notes documentation (#1848)
Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-09-13 22:55:59 -04:00
Mark Reid 14f0afa2d8 Add some small arm neon optimizations (#1847)
* Remove unused includes

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Use neon hardware support for f16 conversions

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Add some small neon optimizations
use blendv,floor and fma intrinsics were possible

Signed-off-by: Mark Reid <mindmark@gmail.com>

---------

Signed-off-by: Mark Reid <mindmark@gmail.com>
2023-09-13 21:53:37 -04:00
Mark Reid 16b3157f2e Fix support for X86 32-bit (#1842)
Signed-off-by: Mark Reid <mindmark@gmail.com>
2023-09-04 17:13:26 -04:00
1071 changed files with 170084 additions and 47209 deletions
+20
View File
@@ -0,0 +1,20 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright Contributors to the OpenColorIO Project.
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "monthly"
# Only do security updates rather than all version updates.
open-pull-requests-limit: 0
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "monthly"
# Only do security updates rather than all version updates.
open-pull-requests-limit: 0
+10 -8
View File
@@ -27,27 +27,29 @@ jobs:
# ---------------------------------------------------------------------------
linux_sonarcloud:
name: 'Linux CentOS 7 VFX CY2022 SonarCloud <GCC 9.3.1>'
name: 'Linux VFX CY2023 SonarCloud'
# Don't run on OCIO forks
if: github.repository == 'AcademySoftwareFoundation/OpenColorIO'
# GH-hosted VM. The build runs in CentOS 7 'container' defined below.
# GH-hosted VM. The build runs in ASWF 'container' defined below.
runs-on: ubuntu-latest
container:
# DockerHub: https://hub.docker.com/u/aswf
# Source: https://github.com/AcademySoftwareFoundation/aswf-docker
image: aswf/ci-ocio:2022
image: aswf/ci-ocio:2023
env:
CXX: g++
CC: gcc
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 50
- name: Install build-wrapper
uses: SonarSource/sonarqube-scan-action/install-build-wrapper@59db25f34e16620e48ab4bb9e4a5dce155cb5432 # v8.0.0
- name: Install docs env
run: share/ci/scripts/linux/yum/install_docs_env.sh
run: share/ci/scripts/linux/dnf/install_docs_env.sh
- name: Install tests env
run: share/ci/scripts/linux/yum/install_tests_env.sh
run: share/ci/scripts/linux/dnf/install_tests_env.sh
- name: Create build directories
run: |
mkdir _install
@@ -57,7 +59,7 @@ jobs:
cmake ../. \
-DCMAKE_INSTALL_PREFIX=../_install \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=14 \
-DCMAKE_CXX_STANDARD=17 \
-DCMAKE_CXX_FLAGS="-g -O0 -fprofile-arcs -ftest-coverage" \
-DCMAKE_CXX_OUTPUT_EXTENSION_REPLACE=ON \
-DCMAKE_EXE_LINKER_FLAGS="-lgcov" \
@@ -76,7 +78,7 @@ jobs:
- name: Generate code coverage report
run: share/ci/scripts/linux/run_gcov.sh
- name: Run sonar-scanner
uses: SonarSource/sonarqube-scan-action@59db25f34e16620e48ab4bb9e4a5dce155cb5432 # v8.0.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: sonar-scanner -X -Dsonar.login=$SONAR_TOKEN
+253 -119
View File
@@ -40,7 +40,7 @@ jobs:
# ---------------------------------------------------------------------------
linux:
name: 'Linux CentOS 7 VFX CY${{ matrix.vfx-cy }}
name: 'Linux VFX CY${{ matrix.vfx-cy }}
<${{ matrix.compiler-desc }}
config=${{ matrix.build-type }},
shared=${{ matrix.build-shared }},
@@ -52,18 +52,19 @@ jobs:
if: |
github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name != github.repository
# GH-hosted VM. The build runs in CentOS 7 'container' defined below.
# GH-hosted VM. The build runs in ASWF 'container' defined below.
runs-on: ubuntu-latest
container:
# DockerHub: https://hub.docker.com/u/aswf
# Source: https://github.com/AcademySoftwareFoundation/aswf-docker
image: aswf/ci-ocio:${{ matrix.vfx-cy }}
image: aswf/ci-ocio:${{ matrix.container-tag || matrix.vfx-cy }}
strategy:
fail-fast: false
matrix:
build: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
include:
# -------------------------------------------------------------------
# VFX CY2023 (Python 3.10)
# VFX CY2026 (Python 3.13)
# -------------------------------------------------------------------
- build: 12
build-type: Debug
@@ -72,11 +73,13 @@ jobs:
build-openfx: 'ON'
use-simd: 'ON'
use-oiio: 'ON'
cxx-standard: 17
aswf-ocio-version: 2.5.2
cxx-standard: 20
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
vfx-cy: 2023
vfx-cy: 2026
install-ext-packages: MISSING
- build: 11
build-type: Release
build-shared: 'ON'
@@ -88,7 +91,8 @@ jobs:
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2023
vfx-cy: 2026
install-ext-packages: ALL
- build: 10
build-type: Release
build-shared: 'OFF'
@@ -96,13 +100,14 @@ jobs:
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 11
cxx-standard: 17
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2023
vfx-cy: 2026
install-ext-packages: ALL
# -------------------------------------------------------------------
# VFX CY2022 (Python 3.9)
# VFX CY2025 (Python 3.11)
# -------------------------------------------------------------------
- build: 9
build-type: Debug
@@ -111,11 +116,13 @@ jobs:
build-openfx: 'ON'
use-simd: 'ON'
use-oiio: 'ON'
cxx-standard: 17
aswf-ocio-version: 2.4.2
cxx-standard: 20
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
vfx-cy: 2022
vfx-cy: 2025
install-ext-packages: MISSING
- build: 8
build-type: Release
build-shared: 'ON'
@@ -127,7 +134,8 @@ jobs:
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2022
vfx-cy: 2025
install-ext-packages: ALL
- build: 7
build-type: Release
build-shared: 'OFF'
@@ -135,100 +143,116 @@ jobs:
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 11
cxx-standard: 17
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2022
vfx-cy: 2025
install-ext-packages: ALL
# -------------------------------------------------------------------
# VFX CY2021 (Python 3.7)
# VFX CY2024 (Python 3.11)
# -------------------------------------------------------------------
- build: 6
build-type: Release
build-type: Debug
build-shared: 'ON'
build-docs: 'OFF'
build-openfx: 'OFF'
build-openfx: 'ON'
use-simd: 'ON'
use-oiio: 'ON'
cxx-standard: 17
aswf-ocio-version: 2.3.2
cxx-standard: 20
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
vfx-cy: 2021
vfx-cy: 2024
install-ext-packages: MISSING
- build: 5
build-type: Release
build-shared: 'OFF'
build-docs: 'OFF'
build-shared: 'ON'
build-docs: 'ON'
build-openfx: 'ON'
use-simd: 'OFF'
use-oiio: 'OFF'
cxx-standard: 14
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
vfx-cy: 2021
cxx-standard: 17
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2024
install-ext-packages: ALL
- build: 4
build-type: Debug
build-shared: 'ON'
build-type: Release
build-shared: 'OFF'
build-docs: 'OFF'
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 11
cxx-standard: 17
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2021
vfx-cy: 2024
install-ext-packages: ALL
# -------------------------------------------------------------------
# VFX CY2020 (Python 3.7)
# VFX CY2023 (Python 3.10)
# -------------------------------------------------------------------
- build: 3
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-openfx: 'ON'
use-simd: 'OFF'
use-oiio: 'OFF'
cxx-standard: 14
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
vfx-cy: 2020
- build: 2
build-type: Debug
build-shared: 'OFF'
build-shared: 'ON'
build-docs: 'OFF'
build-openfx: 'ON'
use-simd: 'ON'
use-oiio: 'ON'
cxx-standard: 14
aswf-ocio-version: 2.2.1
cxx-standard: 20
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
vfx-cy: 2023
install-ext-packages: MISSING
- build: 2
build-type: Release
build-shared: 'ON'
build-docs: 'ON'
build-openfx: 'ON'
use-simd: 'OFF'
use-oiio: 'OFF'
cxx-standard: 17
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2020
vfx-cy: 2023
install-ext-packages: ALL
- build: 1
build-type: Release
build-shared: 'ON'
build-shared: 'OFF'
build-docs: 'OFF'
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 11
cxx-standard: 17
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2020
vfx-cy: 2023
install-ext-packages: ALL
env:
CXX: ${{ matrix.cxx-compiler }}
CC: ${{ matrix.cc-compiler }}
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install docs env
run: share/ci/scripts/linux/yum/install_docs_env.sh
run: share/ci/scripts/linux/dnf/install_docs_env.sh
if: matrix.build-docs == 'ON'
- name: Install tests env
run: share/ci/scripts/linux/yum/install_tests_env.sh
run: share/ci/scripts/linux/dnf/install_tests_env.sh
- name: Install ASWF OpenColorIO for OpenImageIO
# The container's prebuilt OpenImageIO is linked against a specific
# OpenColorIO release that the container does not ship (it's built
# from source here instead). Fetch that release from the ASWF Conan
# remote so OpenImageIO's dependency resolves at link/run time.
if: matrix.use-oiio == 'ON'
run: share/ci/scripts/linux/dnf/install_aswf_opencolorio.sh ${{ matrix.aswf-ocio-version }} ${{ matrix.vfx-cy }}
- name: Create build directories
run: |
mkdir _install
@@ -245,7 +269,7 @@ jobs:
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_USE_SIMD=${{ matrix.use-simd }} \
-DOCIO_USE_OIIO_FOR_APPS=${{ matrix.use-oiio }} \
-DOCIO_INSTALL_EXT_PACKAGES=ALL \
-DOCIO_INSTALL_EXT_PACKAGES=${{ matrix.install-ext-packages }} \
-DOCIO_WARNING_AS_ERROR=ON \
-DPython_EXECUTABLE=$(which python)
working-directory: _build
@@ -289,7 +313,7 @@ jobs:
-Dpystring_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_STATIC_LIBRARY=ON \
-Dyaml-cpp_VERSION=0.7.0 \
-Dyaml-cpp_VERSION=0.8.0 \
-DZLIB_ROOT=${{ env.ocio_build_path }}/ext/dist \
-DZLIB_STATIC_LIBRARY=ON \
-Dminizip-ng_ROOT=${{ env.ocio_build_path }}/ext/dist \
@@ -300,11 +324,11 @@ jobs:
working-directory: _build/tests/cmake-consumer-dist
# ---------------------------------------------------------------------------
# macOS
# macOS Intel
# ---------------------------------------------------------------------------
macos:
name: 'macOS 11
name: 'macOS 15 intel
<AppleClang
arch=${{ matrix.arch-type }},
config=${{ matrix.build-type }},
@@ -318,22 +342,11 @@ jobs:
if: |
github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name != github.repository
runs-on: macos-11
runs-on: macos-15-intel
strategy:
matrix:
build: [1, 2, 3, 4]
build: [3, 4]
include:
- build: 5
arch-type: "x86_64"
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-openfx: 'ON'
use-simd: 'ON'
use-oiio: 'ON'
cxx-standard: 17
python-version: '3.11'
# Keeping one universal build
- build: 4
arch-type: "x86_64;arm64"
build-type: Release
@@ -342,45 +355,25 @@ jobs:
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 11
python-version: '3.10'
cxx-standard: 20
python-version: '3.12'
- build: 3
arch-type: "x86_64"
build-type: Release
build-shared: 'ON'
build-docs: 'ON'
build-openfx: 'OFF'
use-simd: 'OFF'
use-oiio: 'OFF'
cxx-standard: 11
python-version: '3.10'
- build: 2
arch-type: "x86_64"
build-type: Debug
build-shared: 'ON'
build-docs: 'OFF'
build-openfx: 'ON'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 11
python-version: '3.9'
- build: 1
arch-type: "x86_64"
build-type: Release
build-shared: 'OFF'
build-docs: 'OFF'
build-openfx: 'ON'
use-simd: 'ON'
use-simd: 'OFF'
use-oiio: 'OFF'
cxx-standard: 14
python-version: '3.7'
cxx-standard: 17
python-version: '3.10'
steps:
- name: Setup Python
uses: actions/setup-python@v4
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python-version }}
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install docs env
run: share/ci/scripts/macos/install_docs_env.sh
if: matrix.build-docs == 'ON'
@@ -433,9 +426,9 @@ jobs:
# The yaml-cpp_VERSION is set below because Findyaml-cpp.cmake needs it but is unable to
# extract it from the headers, like the other modules.
#
# Prefer the static version of each dependencies by using <pkg>_STATIC_LIBRARY.
# Alternatively, this can be done by setting <pkg>_LIBRARY and <pkg>_INCLUDE_DIR to
# the static version of the package.
# Prefer the static version of each dependencies by using <pkg>_STATIC_LIBRARY.
# Alternatively, this can be done by setting <pkg>_LIBRARY and <pkg>_INCLUDE_DIR to
# the static version of the package.
run: |
cmake . \
-DCMAKE_PREFIX_PATH=../../../_install \
@@ -447,7 +440,146 @@ jobs:
-Dpystring_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_STATIC_LIBRARY=ON \
-Dyaml-cpp_VERSION=0.7.0 \
-Dyaml-cpp_VERSION=0.8.0 \
-DZLIB_ROOT=${{ env.ocio_build_path }}/ext/dist \
-DZLIB_STATIC_LIBRARY=ON \
-Dminizip-ng_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dminizip-ng_STATIC_LIBRARY=ON
cmake --build . \
--config ${{ matrix.build-type }}
./consumer
working-directory: _build/tests/cmake-consumer-dist
# ---------------------------------------------------------------------------
# macOS Arm
# ---------------------------------------------------------------------------
macos-arm:
name: 'macOS 14 arm
<AppleClang
arch=${{ matrix.arch-type }},
config=${{ matrix.build-type }},
shared=${{ matrix.build-shared }},
simd=${{ matrix.use-simd }},
cxx=${{ matrix.cxx-standard }},
python=${{ matrix.python-version }},
docs=${{ matrix.build-docs }},
oiio=${{ matrix.use-oiio}}>'
runs-on: macos-14
strategy:
matrix:
build: [1, 2]
include:
- build: 1
arch-type: "arm64"
test-rosetta: "OFF"
build-type: Release
build-shared: 'ON'
build-docs: 'ON'
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'ON'
cxx-standard: 20
python-version: '3.13'
- build: 2
arch-type: "x86_64;arm64"
test-rosetta: "ON"
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 17
python-version: '3.12'
steps:
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python-version }}
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install docs env
run: share/ci/scripts/macos/install_docs_env.sh
if: matrix.build-docs == 'ON'
- name: Install tests env
run: share/ci/scripts/macos/install_tests_env.sh
- name: Install OIIO
if: matrix.use-oiio == 'ON'
run: time share/ci/scripts/macos/install_oiio.sh
- name: Create build directories
run: |
mkdir _install
mkdir _build
- name: Configure
run: |
OIIO_CMAKE_ARGS=()
if [ "${{ matrix.use-oiio }}" = "ON" ]; then
OIIO_CMAKE_ARGS+=(-DOpenImageIO_ROOT=$(brew --prefix openimageio))
fi
cmake ../. \
-DCMAKE_INSTALL_PREFIX=../_install \
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \
-DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \
-DOCIO_BUILD_OPENFX=${{ matrix.build-openfx }} \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_USE_SIMD=${{ matrix.use-simd }} \
-DOCIO_USE_OIIO_FOR_APPS=${{ matrix.use-oiio }} \
-DOCIO_INSTALL_EXT_PACKAGES=ALL \
-DOCIO_WARNING_AS_ERROR=ON \
-DPython_EXECUTABLE=$(which python) \
-DCMAKE_OSX_ARCHITECTURES="${{ matrix.arch-type }}" \
"${OIIO_CMAKE_ARGS[@]}"
working-directory: _build
- name: Build
run: |
cmake --build . \
--target install \
--config ${{ matrix.build-type }} \
-- -j$(sysctl -n hw.ncpu)
echo "ocio_build_path=$(pwd)" >> $GITHUB_ENV
working-directory: _build
- name: Test
run: ctest -V -C ${{ matrix.build-type }}
working-directory: _build
- name: Test Rosetta
if: matrix.test-rosetta == 'ON'
run: |
/usr/bin/arch -x86_64 /bin/zsh -c "ctest -V -C ${{ matrix.build-type }}"
working-directory: _build
- name: Test CMake Consumer with shared OCIO
if: matrix.build-shared == 'ON'
run: |
cmake . \
-DCMAKE_PREFIX_PATH=../../../_install \
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }}
cmake --build . \
--config ${{ matrix.build-type }}
./consumer
working-directory: _build/tests/cmake-consumer-dist
- name: Test CMake Consumer with static OCIO
if: matrix.build-shared == 'OFF'
# The yaml-cpp_VERSION is set below because Findyaml-cpp.cmake needs it but is unable to
# extract it from the headers, like the other modules.
#
# Prefer the static version of each dependencies by using <pkg>_STATIC_LIBRARY.
# Alternatively, this can be done by setting <pkg>_LIBRARY and <pkg>_INCLUDE_DIR to
# the static version of the package.
run: |
cmake . \
-DCMAKE_PREFIX_PATH=../../../_install \
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \
-Dexpat_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dexpat_STATIC_LIBRARY=ON \
-DImath_ROOT=${{ env.ocio_build_path }}/ext/dist \
-DImath_STATIC_LIBRARY=ON \
-Dpystring_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_STATIC_LIBRARY=ON \
-Dyaml-cpp_VERSION=0.8.0 \
-DZLIB_ROOT=${{ env.ocio_build_path }}/ext/dist \
-DZLIB_STATIC_LIBRARY=ON \
-Dminizip-ng_ROOT=${{ env.ocio_build_path }}/ext/dist \
@@ -460,11 +592,9 @@ jobs:
# ---------------------------------------------------------------------------
# Windows
# ---------------------------------------------------------------------------
# TODO: Install pythonXX_d.lib (or work around it being needed) to support
# Debug build testing with Python bindings and docs enabled.
windows:
name: 'Windows 2019
name: 'Windows 2022
<MSVC
config=${{ matrix.build-type }},
shared=${{ matrix.build-shared }},
@@ -477,7 +607,7 @@ jobs:
if: |
github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name != github.repository
runs-on: windows-2019
runs-on: windows-2022
strategy:
matrix:
build: [1, 2, 3, 4]
@@ -488,18 +618,19 @@ jobs:
build-docs: 'OFF'
build-openfx: 'ON'
use-simd: 'OFF'
use-oiio: 'ON'
cxx-standard: 17
python-version: '3.11'
# NB: OIIO is not currently set up for Windows CI builds
use-oiio: 'OFF'
cxx-standard: 20
python-version: '3.13'
- build: 3
build-type: Release
build-shared: 'OFF'
build-docs: 'OFF'
build-docs: 'ON'
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 11
python-version: '3.9'
cxx-standard: 17
python-version: '3.12'
- build: 2
build-type: Debug
build-shared: 'ON'
@@ -507,8 +638,8 @@ jobs:
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 11
python-version: '3.8'
cxx-standard: 17
python-version: '3.11'
# C++14, OpenEXR, OpenFX
- build: 1
build-type: Release
@@ -517,17 +648,20 @@ jobs:
build-openfx: 'ON'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 14
python-version: '3.7'
cxx-standard: 17
python-version: '3.10'
steps:
- name: Setup Python
uses: actions/setup-python@v4
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python-version }}
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install docs env
run: share/ci/scripts/windows/install_docs_env.sh
run: |
DOXYGEN_PATH=$GITHUB_WORKSPACE/doxygen
share/ci/scripts/windows/install_docs_env.sh "$DOXYGEN_PATH"
echo "$DOXYGEN_PATH" >> $GITHUB_PATH
shell: bash
if: matrix.build-docs == 'ON'
- name: Install tests env
@@ -599,7 +733,7 @@ jobs:
-Dpystring_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_STATIC_LIBRARY=ON \
-Dyaml-cpp_VERSION=0.7.0 \
-Dyaml-cpp_VERSION=0.8.0 \
-DZLIB_ROOT=${{ env.ocio_build_path }}/ext/dist \
-DZLIB_STATIC_LIBRARY=ON \
-Dminizip-ng_ROOT=${{ env.ocio_build_path }}/ext/dist \
+72 -85
View File
@@ -27,19 +27,20 @@ jobs:
# ---------------------------------------------------------------------------
linux_latest:
name: 'Linux CentOS 7 VFX CY${{ matrix.vfx-cy }} latest
name: 'Linux VFX CY${{ matrix.vfx-cy }} latest
<${{ matrix.compiler-desc }}
cxx=${{ matrix.cxx-standard }},
docs=${{ matrix.build-docs }}>'
# Don't run on OCIO forks
if: github.repository == 'AcademySoftwareFoundation/OpenColorIO'
# GH-hosted VM. The build runs in CentOS 7 'container' defined below.
# GH-hosted VM. The build runs in ASWF 'container' defined below.
runs-on: ubuntu-latest
container:
# DockerHub: https://hub.docker.com/u/aswf
# Source: https://github.com/AcademySoftwareFoundation/aswf-docker
image: aswf/ci-base:${{ matrix.vfx-cy }}
strategy:
fail-fast: false
matrix:
build: [1, 2, 3, 4]
include:
@@ -49,72 +50,67 @@ jobs:
- build: 1
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 20
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2025
- build: 2
build-docs: 'OFF'
build-openfx: 'OFF'
cxx-standard: 17
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2022
- build: 2
build-docs: 'OFF'
build-openfx: 'OFF'
cxx-standard: 14
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2021
vfx-cy: 2024
# -------------------------------------------------------------------
# Clang
# -------------------------------------------------------------------
- build: 3
build-docs: 'OFF'
build-openfx: 'OFF'
cxx-standard: 20
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
vfx-cy: 2025
- build: 4
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 17
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
vfx-cy: 2022
- build: 4
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 14
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
vfx-cy: 2021
vfx-cy: 2024
env:
CXX: ${{ matrix.cxx-compiler }}
CC: ${{ matrix.cc-compiler }}
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install docs env
run: share/ci/scripts/linux/yum/install_docs_env.sh
run: share/ci/scripts/linux/dnf/install_docs_env.sh
if: matrix.build-docs == 'ON'
- name: Install tests env
run: share/ci/scripts/linux/yum/install_tests_env.sh
run: share/ci/scripts/linux/dnf/install_tests_env.sh
- name: Setup ext environment
run: |
EXT_PATH=/usr/local
echo "EXT_PATH=$EXT_PATH" >> $GITHUB_ENV
- name: Install indirect dependencies
run: |
share/ci/scripts/multi/install_pugixml.sh latest
- name: Install fixed ext package versions
# Minizip-ng depends on ZLIB. ZLIB must be installed first.
run: |
share/ci/scripts/multi/install_expat.sh 2.4.1 $EXT_PATH
share/ci/scripts/multi/install_lcms2.sh 2.2 $EXT_PATH
share/ci/scripts/multi/install_yaml-cpp.sh 0.7.0 $EXT_PATH
share/ci/scripts/multi/install_pystring.sh 1.1.3 $EXT_PATH
share/ci/scripts/multi/install_pybind11.sh 2.9.2 $EXT_PATH
share/ci/scripts/multi/install_zlib.sh 1.2.12 $EXT_PATH
share/ci/scripts/multi/install_minizip-ng.sh 3.0.6 $EXT_PATH
share/ci/scripts/multi/install_expat.sh 2.7.2 $EXT_PATH
share/ci/scripts/multi/install_lcms2.sh 2.17 $EXT_PATH
share/ci/scripts/multi/install_yaml-cpp.sh 0.8.0 $EXT_PATH
share/ci/scripts/multi/install_pystring.sh 1.1.4 $EXT_PATH
share/ci/scripts/multi/install_pybind11.sh 3.0.1 $EXT_PATH
share/ci/scripts/multi/install_zlib.sh 1.3.1 $EXT_PATH
share/ci/scripts/multi/install_minizip-ng.sh 4.0.10 $EXT_PATH
- name: Install latest ext package versions
run: |
share/ci/scripts/multi/install_imath.sh latest $EXT_PATH
share/ci/scripts/multi/install_openexr.sh latest $EXT_PATH
share/ci/scripts/multi/install_oiio.sh latest $EXT_PATH
share/ci/scripts/multi/install_osl.sh latest $EXT_PATH
share/ci/scripts/multi/install_openfx.sh latest $EXT_PATH
- name: Create build directories
run: |
@@ -131,8 +127,7 @@ jobs:
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_INSTALL_EXT_PACKAGES=NONE \
-DOCIO_WARNING_AS_ERROR=OFF \
-DPython_EXECUTABLE=$(which python) \
-DOCIO_USE_OIIO_CMAKE_CONFIG=ON
-DPython_EXECUTABLE=$(which python)
working-directory: _build
- name: Build
run: |
@@ -151,6 +146,8 @@ jobs:
-DCMAKE_BUILD_TYPE=Release
cmake --build . \
--config Release
# ASWF ci-base 2025.2 is missing lib64 (2025.1 have it)
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
./consumer
working-directory: _build/tests/cmake-consumer-dist
@@ -174,20 +171,20 @@ jobs:
- build: 1
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 17
python-version: '3.11'
cxx-standard: 20
python-version: '3.14'
- build: 2
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 14
python-version: '3.9'
cxx-standard: 17
python-version: '3.10'
steps:
- name: Setup Python
uses: actions/setup-python@v4
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python-version }}
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install docs env
run: share/ci/scripts/macos/install_docs_env.sh
if: matrix.build-docs == 'ON'
@@ -195,29 +192,23 @@ jobs:
run: share/ci/scripts/macos/install_tests_env.sh
- name: Setup ext environment
run: |
EXT_PATH=/usr/local
EXT_PATH=$GITHUB_WORKSPACE/_ext
echo "EXT_PATH=$EXT_PATH" >> $GITHUB_ENV
- name: Install indirect dependencies
run: |
share/ci/scripts/macos/install_bison.sh latest
share/ci/scripts/macos/install_boost.sh latest
share/ci/scripts/multi/install_pugixml.sh latest $EXT_PATH
echo "CMAKE_PREFIX_PATH=$EXT_PATH" >> $GITHUB_ENV
- name: Install fixed ext package versions
# Minizip-ng depends on ZLIB. ZLIB must be installed first.
run: |
share/ci/scripts/multi/install_expat.sh 2.4.1 $EXT_PATH
share/ci/scripts/multi/install_lcms2.sh 2.2 $EXT_PATH
share/ci/scripts/multi/install_yaml-cpp.sh 0.7.0 $EXT_PATH
share/ci/scripts/multi/install_pystring.sh 1.1.3 $EXT_PATH
share/ci/scripts/multi/install_pybind11.sh 2.9.2 $EXT_PATH
share/ci/scripts/multi/install_zlib.sh 1.2.12 $EXT_PATH
share/ci/scripts/multi/install_minizip-ng.sh 3.0.6 $EXT_PATH
share/ci/scripts/multi/install_expat.sh 2.7.2 $EXT_PATH
share/ci/scripts/multi/install_lcms2.sh 2.17 $EXT_PATH
share/ci/scripts/multi/install_yaml-cpp.sh 0.8.0 $EXT_PATH
share/ci/scripts/multi/install_pystring.sh 1.1.4 $EXT_PATH
share/ci/scripts/multi/install_pybind11.sh 3.0.1 $EXT_PATH
share/ci/scripts/multi/install_zlib.sh 1.3.1 $EXT_PATH
share/ci/scripts/multi/install_minizip-ng.sh 4.0.10 $EXT_PATH
- name: Install latest ext package versions
run: |
share/ci/scripts/multi/install_imath.sh latest $EXT_PATH
share/ci/scripts/multi/install_openexr.sh latest $EXT_PATH
share/ci/scripts/multi/install_oiio.sh latest $EXT_PATH
share/ci/scripts/multi/install_osl.sh latest $EXT_PATH
share/ci/scripts/multi/install_openfx.sh latest $EXT_PATH
- name: Create build directories
run: |
@@ -234,8 +225,7 @@ jobs:
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_INSTALL_EXT_PACKAGES=NONE \
-DOCIO_WARNING_AS_ERROR=OFF \
-DPython_EXECUTABLE=$(which python) \
-DOCIO_USE_OIIO_CMAKE_CONFIG=ON
-DPython_EXECUTABLE=$(which python)
working-directory: _build
- name: Build
run: |
@@ -254,6 +244,7 @@ jobs:
-DCMAKE_BUILD_TYPE=Release
cmake --build . \
--config Release
export DYLD_LIBRARY_PATH=$EXT_PATH/lib:$DYLD_LIBRARY_PATH
./consumer
working-directory: _build/tests/cmake-consumer-dist
@@ -277,22 +268,27 @@ jobs:
- build: 1
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 17
python-version: '3.11'
cxx-standard: 20
python-version: '3.14'
use-oiio: 'ON'
- build: 2
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 14
python-version: '3.9'
cxx-standard: 17
python-version: '3.10'
use-oiio: 'OFF'
steps:
- name: Setup Python
uses: actions/setup-python@v4
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python-version }}
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install docs env
run: share/ci/scripts/windows/install_docs_env.sh
run: |
DOXYGEN_PATH=$GITHUB_WORKSPACE/doxygen
share/ci/scripts/windows/install_docs_env.sh "$DOXYGEN_PATH"
echo "$DOXYGEN_PATH" >> $GITHUB_PATH
shell: bash
if: matrix.build-docs == 'ON'
- name: Install tests env
@@ -312,32 +308,24 @@ jobs:
run: |
vcpkg install zlib:x64-windows
vcpkg install tiff:x64-windows
vcpkg install boost-asio:x64-windows
vcpkg install boost-container:x64-windows
vcpkg install boost-filesystem:x64-windows
vcpkg install boost-math:x64-windows
vcpkg install boost-stacktrace:x64-windows
vcpkg install boost-system:x64-windows
vcpkg install boost-thread:x64-windows
share/ci/scripts/multi/install_pugixml.sh latest $EXT_PATH
vcpkg install directx-headers:x64-windows
shell: bash
- name: Install fixed ext package versions
# Minizip-ng depends on ZLIB. ZLIB must be installed first.
run: |
share/ci/scripts/multi/install_lcms2.sh 2.2 $EXT_PATH
share/ci/scripts/multi/install_yaml-cpp.sh 0.7.0 $EXT_PATH
share/ci/scripts/multi/install_pystring.sh 1.1.3 $EXT_PATH
share/ci/scripts/multi/install_pybind11.sh 2.9.2 $EXT_PATH
share/ci/scripts/multi/install_expat.sh 2.4.1 $EXT_PATH
share/ci/scripts/multi/install_zlib.sh 1.2.12 $EXT_PATH
share/ci/scripts/multi/install_minizip-ng.sh 3.0.6 $EXT_PATH
share/ci/scripts/multi/install_lcms2.sh 2.17 $EXT_PATH
share/ci/scripts/multi/install_yaml-cpp.sh 0.8.0 $EXT_PATH
share/ci/scripts/multi/install_pystring.sh 1.1.4 $EXT_PATH
share/ci/scripts/multi/install_pybind11.sh 3.0.1 $EXT_PATH
share/ci/scripts/multi/install_expat.sh 2.7.2 $EXT_PATH
share/ci/scripts/multi/install_zlib.sh 1.3.1 $EXT_PATH
share/ci/scripts/multi/install_minizip-ng.sh 4.0.10 $EXT_PATH
shell: bash
# OSL not installed due to LLVM compilation time.
- name: Install latest ext package versions
run: |
share/ci/scripts/multi/install_imath.sh latest $EXT_PATH
share/ci/scripts/multi/install_openexr.sh latest $EXT_PATH
share/ci/scripts/multi/install_oiio.sh latest $EXT_PATH
share/ci/scripts/multi/install_openfx.sh latest $EXT_PATH
shell: bash
- name: Create build directories
@@ -358,8 +346,7 @@ jobs:
-DOCIO_INSTALL_EXT_PACKAGES=NONE \
-DOCIO_WARNING_AS_ERROR=OFF \
-DPython_EXECUTABLE=$(which python) \
-DOCIO_BUILD_PYTHON=OFF \
-DOCIO_USE_OIIO_CMAKE_CONFIG=ON
-DOCIO_BUILD_PYTHON=OFF
shell: bash
working-directory: _build
- name: Build
+85
View File
@@ -0,0 +1,85 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright Contributors to the OpenColorIO Project.
#
# GitHub Actions workflow file
# https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions
name: Deploy OCIO Homepage
on:
# Runs on pushes targeting the default branch
push:
branches:
- main
paths:
- 'docs/site/**'
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
# Default to bash
defaults:
run:
shell: bash
jobs:
# Build job
build:
if: github.repository == 'AcademySoftwareFoundation/OpenColorIO'
runs-on: ubuntu-latest
env:
HUGO_VERSION: 0.128.0
steps:
- name: Install Hugo CLI
run: |
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb
- name: Install Dart Sass
run: sudo snap install dart-sass
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: recursive
- name: Setup Pages
id: pages
uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # 6.0.0
- name: Install Node.js dependencies
run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
- name: Build with Hugo
env:
HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache
HUGO_ENVIRONMENT: production
run: |
cd docs/site/homepage
hugo -D \
--minify \
--baseURL "${{ steps.pages.outputs.base_url }}/" \
--themesDir ../..
- name: Upload artifact
uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # 5.0.0
with:
path: docs/site/homepage/public
# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # 5.0.0
+1 -2
View File
@@ -16,8 +16,6 @@ on:
tags-ignore:
- v0.*
- v1.*
paths:
- .github/workflows/gpu_workflow.yml
jobs:
# ---------------------------------------------------------------------------
@@ -45,3 +43,4 @@ jobs:
with:
project-name: OpenColorIO
buildspec-override: buildspec.yml
image-override: aswf/ci-ocio:2025
+25 -25
View File
@@ -46,7 +46,7 @@ jobs:
build-python: ON
build-type: Release
build-shared: ON
cxx-standard: 20
cxx-standard: 23
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
@@ -55,7 +55,7 @@ jobs:
build-python: OFF
build-type: Debug
build-shared: ON
cxx-standard: 20
cxx-standard: 23
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
@@ -67,7 +67,7 @@ jobs:
build-python: ON
build-type: Release
build-shared: ON
cxx-standard: 20
cxx-standard: 23
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
@@ -76,7 +76,7 @@ jobs:
build-python: OFF
build-type: Debug
build-shared: ON
cxx-standard: 20
cxx-standard: 23
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
@@ -86,9 +86,9 @@ jobs:
CC: ${{ matrix.cc-compiler }}
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install tests env
run: share/ci/scripts/linux/yum/install_tests_env.sh
run: share/ci/scripts/linux/dnf/install_tests_env.sh
- name: Create build directories
run: |
mkdir _install
@@ -101,10 +101,10 @@ jobs:
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \
-DOCIO_BUILD_DOCS=OFF \
-DOCIO_BUILD_OPENFX=ON \
-DOCIO_BUILD_OPENFX=OFF \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_BUILD_PYTHON=${{ matrix.build-python}} \
-DOCIO_USE_SSE=ON \
-DOCIO_USE_SIMD=ON \
-DOCIO_USE_OIIO_FOR_APPS=OFF \
-DOCIO_INSTALL_EXT_PACKAGES=ALL \
-DOCIO_WARNING_AS_ERROR=ON \
@@ -153,7 +153,7 @@ jobs:
-Dpystring_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_STATIC_LIBRARY=ON \
-Dyaml-cpp_VERSION=0.7.0 \
-Dyaml-cpp_VERSION=0.8.0 \
-DZLIB_ROOT=${{ env.ocio_build_path }}/ext/dist \
-DZLIB_STATIC_LIBRARY=ON \
-Dminizip-ng_ROOT=${{ env.ocio_build_path }}/ext/dist \
@@ -185,23 +185,23 @@ jobs:
build-python: ON
build-type: Release
build-shared: ON
cxx-standard: 20
cxx-standard: 23
enable-sanitizer: OFF
python-version: '3.11'
python-version: '3.14'
- build: 2
build-python: OFF
build-type: Debug
build-shared: ON
cxx-standard: 20
cxx-standard: 23
enable-sanitizer: ON
python-version: '3.11'
python-version: '3.10'
steps:
- name: Setup Python
uses: actions/setup-python@v4
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python-version }}
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install tests env
run: share/ci/scripts/macos/install_tests_env.sh
- name: Create build directories
@@ -216,10 +216,10 @@ jobs:
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \
-DOCIO_BUILD_DOCS=OFF \
-DOCIO_BUILD_OPENFX=ON \
-DOCIO_BUILD_OPENFX=OFF \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_BUILD_PYTHON=${{ matrix.build-python}} \
-DOCIO_USE_SSE=ON \
-DOCIO_USE_SIMD=ON \
-DOCIO_USE_OIIO_FOR_APPS=OFF \
-DOCIO_INSTALL_EXT_PACKAGES=ALL \
-DOCIO_WARNING_AS_ERROR=ON \
@@ -266,7 +266,7 @@ jobs:
-Dpystring_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_STATIC_LIBRARY=ON \
-Dyaml-cpp_VERSION=0.7.0 \
-Dyaml-cpp_VERSION=0.8.0 \
-DZLIB_ROOT=${{ env.ocio_build_path }}/ext/dist \
-DZLIB_STATIC_LIBRARY=ON \
-Dminizip-ng_ROOT=${{ env.ocio_build_path }}/ext/dist \
@@ -299,20 +299,20 @@ jobs:
build-type: Release
build-shared: ON
cxx-standard: 20
python-version: '3.11'
python-version: '3.14'
- build: 2
build-python: ON
build-type: Debug
build-shared: ON
cxx-standard: 20
python-version: '3.11'
python-version: '3.10'
steps:
- name: Setup Python
uses: actions/setup-python@v4
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python-version }}
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install tests env
run: share/ci/scripts/windows/install_tests_env.sh
shell: bash
@@ -330,10 +330,10 @@ jobs:
-DCMAKE_GENERATOR_PLATFORM=x64 \
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \
-DOCIO_BUILD_DOCS=OFF \
-DOCIO_BUILD_OPENFX=ON \
-DOCIO_BUILD_OPENFX=OFF \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_BUILD_PYTHON=${{ matrix.build-python}} \
-DOCIO_USE_SSE=ON \
-DOCIO_USE_SIMD=ON \
-DOCIO_USE_OIIO_FOR_APPS=OFF \
-DOCIO_INSTALL_EXT_PACKAGES=ALL \
-DOCIO_WARNING_AS_ERROR=ON \
@@ -383,7 +383,7 @@ jobs:
-Dpystring_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_ROOT=${{ env.ocio_build_path }}/ext/dist \
-Dyaml-cpp_STATIC_LIBRARY=ON \
-Dyaml-cpp_VERSION=0.7.0 \
-Dyaml-cpp_VERSION=0.8.0 \
-DZLIB_ROOT=${{ env.ocio_build_path }}/ext/dist \
-DZLIB_STATIC_LIBRARY=ON \
-Dminizip-ng_ROOT=${{ env.ocio_build_path }}/ext/dist \
+67
View File
@@ -0,0 +1,67 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright Contributors to the OpenColorIO Project.
#
# Releases are signed via https://github.com/sigstore/sigstore-python.
# See https://docs.sigstore.dev for information about sigstore.
#
# This action creates a .tar.gz of the complete OpenColorIO source tree at
# the given release tag, signs it via sigstore, and uploads the
# .tar.gz and the associated .tar.gz.sigstore credential bundle.
#
# To verify a downloaded release at a given tag:
#
# % pip install sigstore
# % sigstore verify github --cert-identity https://github.com/AcademySoftwareFoundation/OpenColorIO/.github/workflows/release-sign.yml@refs/tags/<tag> OpenColorIO-<tag>.tar.gz
#
name: Sign Release
on:
release:
types: [published]
permissions:
contents: read
jobs:
release:
name: Sign & upload release artifacts
runs-on: ubuntu-latest
env:
TAG: ${{ github.ref_name }}
permissions:
contents: write
id-token: write
repository-projects: write
steps:
- name: Set Prefix
# The tag name begins with a 'v', e.g. "v2.4.0", but the prefix
# should omit the 'v', so the tarball "OpenColorIO-2.4.0.tar.gz"
# extracts files into "OpenColorIO-2.4.0/...". This matches
# the GitHub release page autogenerated artifact conventions.
run: |
echo OCIO_PREFIX=OpenColorIO-${TAG//v}/ >> $GITHUB_ENV
echo OCIO_TARBALL=OpenColorIO-${TAG//v}.tar.gz >> $GITHUB_ENV
shell: bash
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Create archive
run: git archive --format=tar.gz -o ${OCIO_TARBALL} --prefix ${OCIO_PREFIX} ${TAG}
- name: Sign archive with Sigstore
uses: sigstore/gh-action-sigstore-python@04cffa1d795717b140764e8b640de88853c92acc # v3.3.0
with:
inputs: ${{ env.OCIO_TARBALL }}
upload-signing-artifacts: false
release-signing-artifacts: false
- name: Upload release archive
env:
GH_TOKEN: ${{ github.token }}
run: gh release upload ${TAG} ${OCIO_TARBALL} ${OCIO_TARBALL}.sigstore.json
+217 -100
View File
@@ -50,18 +50,18 @@ jobs:
github.repository == 'AcademySoftwareFoundation/OpenColorIO'
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@v3
- name: Build SDist
run: pipx run build --sdist
- name: Build SDist
run: pipx run build --sdist
- name: Check metadata
run: pipx run twine check dist/*
- name: Check metadata
run: pipx run twine check dist/*
- uses: actions/upload-artifact@v3
with:
path: dist/*.tar.gz
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: cibw-sdist
path: dist/*.tar.gz
# ---------------------------------------------------------------------------
# Linux Wheels
@@ -78,63 +78,130 @@ jobs:
matrix:
include:
# -------------------------------------------------------------------
# CPython 64 bits
# CPython 64 bits manylinux_2_28
# -------------------------------------------------------------------
- build: CPython 3.7 64 bits
python: cp37-manylinux*
- build: CPython 3.10 64 bits manylinux_2_28
manylinux: manylinux_2_28
python: cp310-manylinux_x86_64
arch: x86_64
- build: CPython 3.8 64 bits
python: cp38-manylinux*
- build: CPython 3.11 64 bits manylinux_2_28
manylinux: manylinux_2_28
python: cp311-manylinux_x86_64
arch: x86_64
- build: CPython 3.9 64 bits
python: cp39-manylinux*
- build: CPython 3.12 64 bits manylinux_2_28
manylinux: manylinux_2_28
python: cp312-manylinux_x86_64
arch: x86_64
- build: CPython 3.10 64 bits
python: cp310-manylinux*
- build: CPython 3.13 64 bits manylinux_2_28
manylinux: manylinux_2_28
python: cp313-manylinux_x86_64
arch: x86_64
- build: CPython 3.11 64 bits
python: cp311-manylinux*
- build: CPython 3.14 64 bits manylinux_2_28
manylinux: manylinux_2_28
python: cp314-manylinux_x86_64
arch: x86_64
# -------------------------------------------------------------------
# CPython ARM 64 bits
# CPython 64 bits manylinux2014
# -------------------------------------------------------------------
- build: CPython 3.7 ARM 64 bits
python: cp37-manylinux*
arch: aarch64
- build: CPython 3.8 ARM 64 bits
python: cp38-manylinux*
arch: aarch64
- build: CPython 3.9 ARM 64 bits
python: cp39-manylinux*
arch: aarch64
- build: CPython 3.10 ARM 64 bits
python: cp310-manylinux*
arch: aarch64
- build: CPython 3.11 ARM 64 bits
python: cp311-manylinux*
arch: aarch64
- build: CPython 3.10 64 bits manylinux2014
manylinux: manylinux2014
python: cp310-manylinux_x86_64
arch: x86_64
- build: CPython 3.11 64 bits manylinux2014
manylinux: manylinux2014
python: cp311-manylinux_x86_64
arch: x86_64
- build: CPython 3.12 64 bits manylinux2014
manylinux: manylinux2014
python: cp312-manylinux_x86_64
arch: x86_64
- build: CPython 3.13 64 bits manylinux2014
manylinux: manylinux2014
python: cp313-manylinux_x86_64
arch: x86_64
- build: CPython 3.14 64 bits manylinux2014
manylinux: manylinux2014
python: cp314-manylinux_x86_64
arch: x86_64
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-python@v4
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
name: Install Python
with:
python-version: '3.8'
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: all
python-version: '3.11'
- name: Build wheels
uses: pypa/cibuildwheel@v2.13.1
uses: pypa/cibuildwheel@ee02a1537ce3071a004a6b08c41e72f0fdc42d9a # v3.4.0
env:
CIBW_BUILD: ${{ matrix.python }}
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.manylinux }}
CIBW_BEFORE_BUILD: "pip install sphinx-press-theme"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: cibw-wheels-${{ matrix.python }}-${{ matrix.manylinux }}
path: ./wheelhouse/*.whl
# ---------------------------------------------------------------------------
# Linux ARM Wheels
# ---------------------------------------------------------------------------
linux-arm:
name: Build wheels on Linux ARM
runs-on: ubuntu-24.04-arm
# Don't run on OCIO forks
if: |
github.event_name != 'schedule' ||
github.repository == 'AcademySoftwareFoundation/OpenColorIO'
strategy:
matrix:
include:
# -------------------------------------------------------------------
# CPython ARM 64 bits manylinux2014
# -------------------------------------------------------------------
- build: CPython 3.10 ARM 64 bits manylinux2014
manylinux: manylinux2014
python: cp310-manylinux_aarch64
arch: aarch64
- build: CPython 3.11 ARM 64 bits manylinux2014
manylinux: manylinux2014
python: cp311-manylinux_aarch64
arch: aarch64
- build: CPython 3.12 ARM 64 bits manylinux2014
manylinux: manylinux2014
python: cp312-manylinux_aarch64
arch: aarch64
- build: CPython 3.13 ARM 64 bits manylinux2014
manylinux: manylinux2014
python: cp313-manylinux_aarch64
arch: aarch64
- build: CPython 3.14 ARM 64 bits manylinux2014
manylinux: manylinux2014
python: cp314-manylinux_aarch64
arch: aarch64
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
name: Install Python
with:
python-version: '3.11'
- name: Build wheels
uses: pypa/cibuildwheel@ee02a1537ce3071a004a6b08c41e72f0fdc42d9a # v3.4.0
env:
CIBW_BUILD: ${{ matrix.python }}
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_MANYLINUX_AARCH64_IMAGE: ${{ matrix.manylinux }}
CIBW_BEFORE_BUILD: "pip install sphinx-press-theme"
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: cibw-wheels-${{ matrix.python }}-${{ matrix.manylinux }}
path: ./wheelhouse/*.whl
# ---------------------------------------------------------------------------
@@ -143,7 +210,7 @@ jobs:
macos:
name: Build wheels on macOS
runs-on: macos-11
runs-on: macos-15-intel
# Don't run on OCIO forks
if: |
github.event_name != 'schedule' ||
@@ -154,53 +221,97 @@ jobs:
# -------------------------------------------------------------------
# CPython 64 bits
# -------------------------------------------------------------------
- build: CPython 3.7 64 bits
python: cp37-*
arch: x86_64
- build: CPython 3.8 64 bits
python: cp38-*
arch: x86_64
- build: CPython 3.9 64 bits
python: cp39-*
arch: x86_64
- build: CPython 3.10 64 bits
python: cp310-*
python: cp310-macosx_x86_64
arch: x86_64
- build: CPython 3.11 64 bits
python: cp311-*
python: cp311-macosx_x86_64
arch: x86_64
- build: CPython 3.12 64 bits
python: cp312-macosx_x86_64
arch: x86_64
- build: CPython 3.13 64 bits
python: cp313-macosx_x86_64
arch: x86_64
- build: CPython 3.14 64 bits
python: cp314-macosx_x86_64
arch: x86_64
# -------------------------------------------------------------------
# CPython ARM 64 bits
# -------------------------------------------------------------------
- build: CPython 3.8 ARM 64 bits
python: cp38-*
arch: arm64
- build: CPython 3.9 ARM 64 bits
python: cp39-*
arch: arm64
- build: CPython 3.10 ARM 64 bits
python: cp310-*
arch: arm64
- build: CPython 3.11 ARM 64 bits
python: cp311-*
arch: arm64
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-python@v4
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
name: Install Python
with:
python-version: '3.8'
python-version: '3.11'
- name: Remove brew OpenEXR/Imath
run: |
brew uninstall --ignore-dependencies openexr imath || true
- name: Build wheels
uses: pypa/cibuildwheel@v2.13.1
uses: pypa/cibuildwheel@ee02a1537ce3071a004a6b08c41e72f0fdc42d9a # v3.4.0
env:
CIBW_BUILD: ${{ matrix.python }}
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_BEFORE_BUILD: "pip install sphinx-press-theme"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: cibw-wheels-${{ matrix.python }}
path: ./wheelhouse/*.whl
# ---------------------------------------------------------------------------
# macOS ARM Wheels
# ---------------------------------------------------------------------------
macos-arm:
name: Build wheels on macOS ARM
runs-on: macos-14
# Don't run on OCIO forks
if: |
github.event_name != 'schedule' ||
github.repository == 'AcademySoftwareFoundation/OpenColorIO'
strategy:
matrix:
include:
# -------------------------------------------------------------------
# CPython ARM 64 bits
# -------------------------------------------------------------------
- build: CPython 3.10 ARM 64 bits
python: cp310-macosx_arm64
arch: arm64
- build: CPython 3.11 ARM 64 bits
python: cp311-macosx_arm64
arch: arm64
- build: CPython 3.12 ARM 64 bits
python: cp312-macosx_arm64
arch: arm64
- build: CPython 3.13 ARM 64 bits
python: cp313-macosx_arm64
arch: arm64
- build: CPython 3.14 ARM 64 bits
python: cp314-macosx_arm64
arch: arm64
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
name: Install Python
with:
python-version: '3.11'
- name: Build wheels
uses: pypa/cibuildwheel@ee02a1537ce3071a004a6b08c41e72f0fdc42d9a # v3.4.0
env:
CIBW_BUILD: ${{ matrix.python }}
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_BEFORE_BUILD: "pip install sphinx-press-theme"
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: cibw-wheels-${{ matrix.python }}
path: ./wheelhouse/*.whl
# ---------------------------------------------------------------------------
@@ -209,7 +320,7 @@ jobs:
windows:
name: Build wheels on Windows
runs-on: windows-2019
runs-on: windows-2022
# Don't run on OCIO forks
if: |
github.event_name != 'schedule' ||
@@ -220,54 +331,60 @@ jobs:
# -------------------------------------------------------------------
# CPython 64 bits
# -------------------------------------------------------------------
- build: CPython 3.7 64 bits
python: cp37-*
arch: AMD64
- build: CPython 3.8 64 bits
python: cp38-*
arch: AMD64
- build: CPython 3.9 64 bits
python: cp39-*
arch: AMD64
- build: CPython 3.10 64 bits
python: cp310-*
python: cp310-win_amd64
arch: AMD64
- build: CPython 3.11 64 bits
python: cp311-*
python: cp311-win_amd64
arch: AMD64
- build: CPython 3.12 64 bits
python: cp312-win_amd64
arch: AMD64
- build: CPython 3.13 64 bits
python: cp313-win_amd64
arch: AMD64
- build: CPython 3.14 64 bits
python: cp314-win_amd64
arch: AMD64
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-python@v4
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
name: Install Python
with:
python-version: '3.8'
python-version: '3.11'
- name: Build wheels
uses: pypa/cibuildwheel@v2.13.1
uses: pypa/cibuildwheel@ee02a1537ce3071a004a6b08c41e72f0fdc42d9a # v3.4.0
env:
CIBW_BUILD: ${{ matrix.python }}
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_BEFORE_BUILD: "pip install sphinx-press-theme"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: cibw-wheels-${{ matrix.python }}
path: ./wheelhouse/*.whl
# ---------------------------------------------------------------------------
# Upload
# ---------------------------------------------------------------------------
upload_pypi:
needs: [sdist, linux, macos, windows]
needs: [sdist, linux, linux-arm, macos, macos-arm, windows]
runs-on: ubuntu-latest
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v')
steps:
- uses: actions/setup-python@v4
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
with:
name: artifact
pattern: cibw-*
path: dist
merge-multiple: true
- uses: pypa/gh-action-pypi-publish@release/v1
- uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
+5 -1
View File
@@ -10,4 +10,8 @@ dist*
mastercopy
*.pyc
!*.yml
.vscode
.idea/
.venv/
.vscode/
src/apps/ocioview/uv.lock
+23
View File
@@ -0,0 +1,23 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright Contributors to the OpenColorIO Project.
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
version: 2
build:
os: ubuntu-lts-latest
tools:
python: "3.14"
sphinx:
configuration: docs/conf.py
formats:
- pdf
- htmlzip
python:
install:
- requirements: docs/requirements.txt
+5
View File
@@ -3,8 +3,13 @@
This file documents releases up to 1.1.1. For a description of version 2.0 and later
please refer to the Releases page on GitHub:
https://github.com/AcademySoftwareFoundation/OpenColorIO/releases
and for more details please see the release notes in latest documentation pages:
https://opencolorio.readthedocs.io/en/latest/releases/_index.html#releases
**Version 1.1.1 (April 2 2019):**
* Added optional compatibility for building apps with OpenImageIO 1.9+
* Added USE_SSE checks to fix Linux build failure
+37 -12
View File
@@ -5,7 +5,7 @@
###############################################################################
# CMake definition.
cmake_minimum_required(VERSION 3.13)
cmake_minimum_required(VERSION 3.14...4.0)
set(CMAKE_MODULE_PATH
${CMAKE_MODULE_PATH}
@@ -21,7 +21,7 @@ set(CMAKE_WARN_DEPRECATED ON)
if(APPLE AND NOT DEFINED CMAKE_OSX_DEPLOYMENT_TARGET)
# The value of this variable should be set prior to the first project() command invocation
# because it may influence configuration of the toolchain and flags.
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13" CACHE STRING "Minimum OS X deployment version")
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version")
endif()
@@ -29,7 +29,7 @@ endif()
# Project definition.
project(OpenColorIO
VERSION 2.3.0
VERSION 2.6.0
DESCRIPTION "OpenColorIO (OCIO) is a complete color management solution"
HOMEPAGE_URL https://github.com/AcademySoftwareFoundation/OpenColorIO
LANGUAGES CXX C)
@@ -144,8 +144,7 @@ option(OCIO_BUILD_TESTS "Specify whether to build unittests" ON)
option(OCIO_BUILD_GPU_TESTS "Specify whether to build gpu unittests" ON)
option(OCIO_USE_HEADLESS "Specify whether the GPU rendering is headless" OFF)
option(OCIO_BUILD_FROZEN_DOCS "Specify whether to build frozen documentation, necessary when modifying the OCIO public API" OFF)
option(OCIO_BUILD_DOCS "Specify whether to build documentation" ${OCIO_BUILD_FROZEN_DOCS})
option(OCIO_BUILD_DOCS "Specify whether to build documentation" OFF)
option(OCIO_BUILD_PYTHON "Specify whether to build python bindings" ON)
set (OCIO_PYTHON_VERSION "" CACHE STRING
@@ -180,8 +179,16 @@ option(OCIO_USE_OIIO_FOR_APPS "Request OIIO to build apps (ociolutimage, ociocon
if (NOT APPLE)
if ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(AMD64|IA64|EM64T|X86|x86_64|i386|i686)")
if("${CMAKE_GENERATOR_PLATFORM}" MATCHES "(ARM64|arm64)" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64")
set(OCIO_ARCH_X86 0)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE ON)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX OFF)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C OFF)
elseif ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(AMD64|IA64|EM64T|x86_64|X86|i386|i686)")
# Intel-based architecture (not APPLE)
if ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(X86|i386|i686)")
set(OCIO_ARCH_X86_32 1)
endif()
set(OCIO_ARCH_X86 1)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE ON)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX ON)
@@ -267,7 +274,7 @@ option(OCIO_USE_AVX2 "Specify whether to enable AVX2 CPU performance optimizatio
option(OCIO_USE_AVX512 "Specify whether to enable AVX512 CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX})
option(OCIO_USE_F16C "Specify whether to enable F16C CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C})
if (APPLE)
if (APPLE OR WIN32)
# TODO: Revisit whether that option is necessary.
option(OCIO_USE_SSE2NEON "Specify whether to enable SSE CPU performance optimizations using SSE2NEON for Apple ARM architecture" ON)
mark_as_advanced(OCIO_USE_SSE2NEON)
@@ -280,6 +287,19 @@ message(STATUS "")
message(STATUS "Checking for GPU configuration...")
include(CheckSupportGL)
# DirectX 12 is only available on Windows.
if(WIN32)
option(OCIO_DIRECTX_ENABLED "Enable DirectX 12 GPU rendering support" ON)
else()
set(OCIO_DIRECTX_ENABLED OFF CACHE BOOL "Enable DirectX 12 GPU rendering support" FORCE)
endif()
mark_as_advanced(OCIO_DIRECTX_ENABLED)
# Vulkan is cross-platform but requires an external SDK, so it is off by
# default; enable explicitly with -DOCIO_VULKAN_ENABLED=ON.
option(OCIO_VULKAN_ENABLED "Enable Vulkan GPU rendering support" OFF)
mark_as_advanced(OCIO_VULKAN_ENABLED)
###############################################################################
# Check for ARM neon here because we need to know if ARM NEON is supported
@@ -329,8 +349,10 @@ if(OCIO_USE_SIMD AND OCIO_USE_SSE2NEON AND COMPILER_SUPPORTS_ARM_NEON)
add_library(sse2neon INTERFACE)
# Add the include directories to the target.
target_include_directories(sse2neon INTERFACE "${sse2neon_INCLUDE_DIR}")
# Ignore the warnings coming from sse2neon.h as they are false positives.
target_compile_options(sse2neon INTERFACE -Wno-unused-parameter)
if(NOT MSVC)
# Ignore the warnings coming from sse2neon.h as they are false positives.
target_compile_options(sse2neon INTERFACE -Wno-unused-parameter)
endif()
endif()
endif()
@@ -340,6 +362,11 @@ endif()
include(CompilerFlags)
###############################################################################
# Include utility functions for setting debugging environments
include(DebuggerEnvironment)
###############################################################################
# External linking options
@@ -387,9 +414,7 @@ if(NOT DEFINED OCIO_NAMESPACE)
elseif(OCIO_NAMESPACE STREQUAL "")
message(FATAL_ERROR "A namespace cannot be empty.")
else()
set(OCIO_NAMESPACE "OpenColorIO_${OCIO_NAMESPACE}_v${OpenColorIO_VERSION_MAJOR}_${OpenColorIO_VERSION_MINOR}${OpenColorIO_VERSION_RELEASE_TYPE}" CACHE STRING
"Specify the main OCIO C++ namespace: Options include OpenColorIO OpenColorIO_<YOURFACILITY> etc.")
message(STATUS "Setting namespace to '${OCIO_NAMESPACE}' as none was specified.")
message(STATUS "Setting namespace to '${OCIO_NAMESPACE}'.")
endif()
+21 -10
View File
@@ -3,21 +3,32 @@
# OpenColorIO Committers
The current OpenColorIO Committers are:
### Current OpenColorIO Committers
| Name | GitHub ID |
| -------------- | -----------------
| -------------- | ----------------- |
| Michael Dolan | @michdolan |
| Mark Boorer | @Shootfast |
| Sean Cooper | @scoopxyz |
| Doug Walker | @doug-walker |
| Kevin Wheatley | @KevinJW |
| Rémi Achard | @remia |
| Carol Payne | @carolalynn |
| Thomas Mansencal | @KelSolaar |
| Mark Reid | @markreidvfx |
| Cuneyt Ozdas | @cozdas |
### Emeritus OpenColorIO Committers
| Name | GitHub ID |
| -------------- | ----------------- |
| Malcolm Humphreys | @malcolmhumphreys |
| Jeremy Selan | @jeremyselan |
| Steve Lavietes | @stevelavietes |
| Robert Molholm | @rmolholm |
| Michael Dolan | @michdolan |
| Mark Boorer | @Shootfast |
| Matthias Scharfenberg | @Tristimulus |
| Sean Cooper | @scoopxyz
| Patrick Hodoul | @hodoulp
| Cottalango Leon | @loorthu
| Doug Walker | @doug-walker |
| Kevin Wheatley | @KevinJW |
| Rémi Achard | @remia |
| Patrick Hodoul | @hodoulp |
| Cottalango Leon | @loorthu |
| Cédrik Fuoco | @cedrik-fuoco-adsk |
| Larry Gritz | @lgritz |
| Michael Parsons | @mlfp |
+1 -1
View File
@@ -243,7 +243,7 @@ expected to validate the behavior of every part of OCIO:
* Any change to existing functionality should have tests added if they
don't already exist.
The test should should be run, via ``ctest``, before submitting a pull request.
The test should be run, via ``ctest``, before submitting a pull request.
## Versioning Policy
+21 -14
View File
@@ -69,7 +69,14 @@ A subset of the Committers forms the Technical Steering Committee (TSC), which
has final authority over this project. As defined in the project charter, TSC
responsibilities include, but are not limited to:
* Coordinating technical direction of the Project
* Coordinating technical direction of the Project, including but not limited to:
* Participating in roadmapping and feature priority each year
* Participating in Working Groups as appropriate
* Actively tracking development & giving feedback promptly
* Participating in maintenance of technical documentation
* Actively discussing issues & reviewing pull requests
* Actively monitoring and assisting contributors on GitHub
* Actively monitoring and assisting folks on the OCIO slack instance
* Project governance and process (including this policy)
* Contribution policy
* GitHub repository hosting
@@ -81,7 +88,7 @@ communities
matters relating to the code base that affect multiple projects
* Coordinating any marketing, events, or communications regarding the project
Within the TSC are three elected leadership roles to be held by its members and
Within the TSC are two elected leadership roles to be held by its members and
voted on annually. Any TSC member can express interest in serving in a role, or
nominate another member to serve. There are no term limits, and one person may
hold multiple roles simultaneously. Should a TSC member resign from a leadership
@@ -96,10 +103,6 @@ providing oversight to project administration.
technical decisions, and is responsible for avoiding "design by committee"
pitfalls.
* ACES TAC Rep: This position maintains oversight of the critical relationship
between OCIO and ACES, representing OCIO on the ACES TAC and facilitating
coordination of shared initiatives between both project's leadership.
At the time of election, the TSC will also agree upon which of these two leaders
will serve as the OpenColorIO ASWF (Academy Software Foundation) TAC (Technical
Advisory Council) representative for the term. This member represents the
@@ -109,7 +112,6 @@ project at all ASWF TAC meetings.
* Chair: Carol Payne
* Chief Architect: Doug Walker
* ACES TAC Rep: Sean Cooper
### TSC Members
@@ -118,15 +120,20 @@ project at all ASWF TAC meetings.
* Mei Chu - Sony Pictures Imageworks
* Sean Cooper - ARRI
* Michael Dolan - Epic Games
* Patrick Hodoul - Autodesk
* Zach Lewis - Method Studios
* Thomas Mansencal - WetaFX
* Carol Payne - Netflix
* Carl Rand - Weta Digital
* Thomas Mansencal - Wētā FX
* Cuneyt Ozdas - Autodesk
* Carol Payne - Independent Consultant
* Mark Titchener - Foundry
* Mark Reid - Animal Logic
* Doug Walker - Autodesk
* Kevin Wheatley - Framestore
### TSC Emeritus
* Patrick Hodoul - Autodesk
* Carl Rand - Wētā FX
### TSC Meetings
Any meetings of the TSC are intended to be open to the public, except where
@@ -146,7 +153,7 @@ happen continuously on GitHub and be handled by the larger group of Committers.
Any community member or Contributor can ask that something be reviewed by the
TSC by logging a GitHub issue. Any Committer, TSC member, or the meeting chair
can bring the issue to the TSC's attention by applying the `tsc-review` label.
can bring the issue to the TSC's attention by applying the `Needs Discussion` label.
Prior to each TSC meeting, the meeting chair will share the agenda with members
of the TSC. TSC members can also add items to the agenda at the beginning of
@@ -155,11 +162,11 @@ each meeting. The meeting chair and the TSC cannot veto or remove items.
The TSC may invite additional persons to participate in a non-voting capacity.
The meeting chair is responsible for ensuring that minutes are taken and that
notes are submitted after the meeting to the public mailing list.
notes are submitted after the meeting to the public wiki.
Due to the challenges of scheduling a global meeting with participants in
several time zones, the TSC will seek to resolve as many agenda items as
possible outside of meetings on the public mailing list.
possible outside of meetings via discussion on Slack or other methods.
### TSC Nomination
+10 -4
View File
@@ -38,7 +38,7 @@ Houdini, Silhouette FX, and
[others](https://opencolorio.org/#supported_apps).
OpenColorIO is free and open source software ([LICENSE](LICENSE)), and
one of several projects actvively sponsored by the ASWF
one of several projects actively sponsored by the ASWF
([Academy Software Foundation](https://www.aswf.io/)).
OpenColorIO Project Mission
@@ -50,12 +50,12 @@ content creation applications and pipelines.
OpenColorIO aims to:
* be stable, secure, and thouroughly tested on Linux, macOS, and Windows
* be stable, secure, and thoroughly tested on Linux, macOS, and Windows
* be performant on modern CPUs and GPUs
* be simple, scalable, and well documented
* be compatible with critical color and imaging standards
* provide lossless color processing wherever possible
* maintain config backwards compatability across major versions
* maintain config backwards compatibility across major versions
* have every new feature carefully reviewed by leaders from the motion picture,
VFX, animation, and video game industries
* have a healthy and active community
@@ -65,13 +65,14 @@ OpenColorIO Project Governance
------------------------------
OpenColorIO is governed by the Academy Software Foundation (ASWF). See
[GOVERNANCE.md](GOVERNANCE.md) for detailed infomation about how the project
[GOVERNANCE.md](GOVERNANCE.md) for detailed information about how the project
operates.
Web Resources
-------------
* Website: <http://opencolorio.org>
* Documentation: <https://opencolorio.readthedocs.io/en/latest/>
* Mailing lists:
* Developer: <ocio-dev@lists.aswf.io>
* User: <ocio-user@lists.aswf.io>
@@ -99,6 +100,11 @@ The following reference implementations are provided:
* Other
* nuke-default
Sources for the newer builtin ACES configuration files can be found in the releases section of the
[OpenColorIO-Config-ACES](https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES)
repository.
Acknowledgements
----------------
+7 -14
View File
@@ -14,23 +14,15 @@ would be naive to say our code is immune to every exploit.
## Reporting Vulnerabilities
Quickly resolving security related issues is a priority. If you think
you've found a potential vulnerability in OpenColorIO, please report it by
emailing security@opencolorio.org. Only TSC members and ASWF project
management have access to these messages.
Quickly resolving security related issues is a priority. The best way to report a
vulnerability is to file a GitHub security advisory. If that is not possible, it
is also fine to email your report to security@opencolorio.org. Only the project
administrators have access to these reports.
Include detailed steps to reproduce the issue, and any other information that
could aid an investigation. Someone will assess the report and make every
effort to respond within 14 days.
## Outstanding Security Issues
None
## Addressed Security Issues
None
## File Format Expectations
Attempting to read an OCIO config (YAML) file will:
@@ -65,5 +57,6 @@ It is a bug if calling a function with well-formed arguments causes the
library to crash. It is a security issue if calling a function with
well-formed arguments causes arbitrary code execution.
We do not consider this as severe as file format issues because in most
deployments the parameter space is not exposed to potential attackers.
## History of CVE Fixes
CVE-2026-42450 -- Stack buffer overflow in sscanf. (Fixed in OCIO 2.5.2)
+1 -1
View File
@@ -45,7 +45,7 @@ if(${Python_VERSION_MAJOR} GREATER_EQUAL 3)
# Breathe
# https://pypi.org/project/breathe/
find_python_package(breathe REQUIRED)
###########################################################################
### Setup PYTHONPATH ###
+40 -4
View File
@@ -12,7 +12,22 @@ ColorSpaceMenuHelpers
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_colorspacehelpers.rst
.. autofunction:: PyOpenColorIO.ColorSpaceHelpers.AddColorSpace
.. autoclass:: PyOpenColorIO.ColorSpaceMenuParameters
:members:
:undoc-members:
:special-members: __init__, __str__
:exclude-members: AddedColorSpaceIterator
.. autoclass:: PyOpenColorIO.ColorSpaceMenuHelper
:members:
:undoc-members:
:special-members: __init__, __str__
:exclude-members: ColorSpaceLevelIterator
.. autoclass:: PyOpenColorIO.ColorSpaceMenuHelper.ColorSpaceLevelIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. group-tab:: C++
@@ -38,7 +53,10 @@ DisplayViewHelpers
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_displayviewhelpers.rst
.. autofunction:: PyOpenColorIO.DisplayViewHelpers.GetProcessor
.. autofunction:: PyOpenColorIO.DisplayViewHelpers.GetIdentityProcessor
.. autofunction:: PyOpenColorIO.DisplayViewHelpers.AddDisplayView
.. autofunction:: PyOpenColorIO.DisplayViewHelpers.RemoveDisplayView
.. group-tab:: C++
@@ -53,7 +71,10 @@ LegacyViewingPipeline
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_legacyviewingpipeline.rst
.. autoclass:: PyOpenColorIO.LegacyViewingPipeline
:members:
:undoc-members:
:special-members: __init__, __str__
.. group-tab:: C++
@@ -73,7 +94,22 @@ MixingHelpers
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_mixinghelpers.rst
.. autoclass:: PyOpenColorIO.MixingSlider
:members:
:undoc-members:
:special-members: __init__, __str__
.. autoclass:: PyOpenColorIO.MixingColorSpaceManager
:members:
:undoc-members:
:special-members: __init__, __str__
:exclude-members: MixingSpaceIterator, MixingEncodingIterator
.. autoclass:: PyOpenColorIO.MixingColorSpaceManager.MixingSpaceIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.MixingColorSpaceManager.MixingEncodingIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. group-tab:: C++
+8 -1
View File
@@ -9,7 +9,14 @@ Baker
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_baker.rst
.. autoclass:: PyOpenColorIO.Baker
:members:
:undoc-members:
:special-members: __init__
:exclude-members: FormatIterator
.. autoclass:: PyOpenColorIO.Baker.FormatIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. group-tab:: C++
+22 -2
View File
@@ -9,7 +9,17 @@ ColorSpace
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_colorspace.rst
.. autoclass:: PyOpenColorIO.ColorSpace
:members:
:undoc-members:
:special-members: __init__, __str__
:exclude-members: ColorSpaceCategoryIterator, ColorSpaceAliasIterator
.. autoclass:: PyOpenColorIO.ColorSpace.ColorSpaceCategoryIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.ColorSpace.ColorSpaceAliasIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. group-tab:: C++
@@ -29,7 +39,17 @@ ColorSpaceSet
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_colorspaceset.rst
.. autoclass:: PyOpenColorIO.ColorSpaceSet
:members:
:undoc-members:
:special-members: __init__, __eq__, __ne__, __sub__, __or__, __and__
:exclude-members: ColorSpaceNameIterator, ColorSpaceIterator
.. autoclass:: PyOpenColorIO.ColorSpaceSet.ColorSpaceNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.ColorSpaceSet.ColorSpaceIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. group-tab:: C++
+84 -1
View File
@@ -9,7 +9,90 @@ Config
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_config.rst
.. autoclass:: PyOpenColorIO.Config
:members:
:undoc-members:
:special-members: __init__, __str__
:exclude-members: EnvironmentVarNameIterator,
SearchPathIterator,
ColorSpaceNameIterator,
ColorSpaceIterator,
ActiveColorSpaceNameIterator,
ActiveColorSpaceIterator,
RoleNameIterator,
RoleColorSpaceIterator,
DisplayIterator,
SharedViewIterator,
ViewIterator,
ViewForColorSpaceIterator,
LookNameIterator,
LookIterator,
ViewTransformNameIterator,
ViewTransformIterator,
NamedTransformNameIterator,
NamedTransformIterator,
ActiveNamedTransformNameIterator,
ActiveNamedTransformIterator
.. autoclass:: PyOpenColorIO.Config.EnvironmentVarNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.SearchPathIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.ColorSpaceNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.ColorSpaceIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.ActiveColorSpaceNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.ActiveColorSpaceIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.RoleNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.RoleColorSpaceIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.DisplayIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.SharedViewIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.ViewIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.ViewForColorSpaceIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.LookNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.LookIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.ViewTransformNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.ViewTransformIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.NamedTransformNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.NamedTransformIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.ActiveNamedTransformNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Config.ActiveNamedTransformIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. group-tab:: C++
+16 -1
View File
@@ -9,7 +9,22 @@ Context
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_context.rst
.. autoclass:: PyOpenColorIO.Context
:members:
:undoc-members:
:special-members: __init__, __str__
:exclude-members: StringVarNameIterator,
StringVarIterator,
SearchPathIterator
.. autoclass:: PyOpenColorIO.Context.StringVarNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Context.StringVarIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.Context.SearchPathIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. group-tab:: C++
+4 -1
View File
@@ -9,7 +9,10 @@ DynamicProperty
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_dynamicproperty.rst
.. autoclass:: PyOpenColorIO.DynamicProperty
:members:
:undoc-members:
:special-members: __init__
.. group-tab:: C++
+112 -28
View File
@@ -12,7 +12,10 @@ LoggingLevel
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_logginglevel.rst
.. autoclass:: PyOpenColorIO.LoggingLevel
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -27,7 +30,10 @@ ReferenceSpaceType
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_referencespacetype.rst
.. autoclass:: PyOpenColorIO.ReferenceSpaceType
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -40,7 +46,10 @@ SearchReferenceSpaceType
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_searchreferencespacetype.rst
.. autoclass:: PyOpenColorIO.SearchReferenceSpaceType
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -53,7 +62,10 @@ NamedTransformVisibility
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_namedtransformvisibility.rst
.. autoclass:: PyOpenColorIO.NamedTransformVisibility
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -66,7 +78,10 @@ ColorSpaceVisibility
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_colorspacevisibility.rst
.. autoclass:: PyOpenColorIO.ColorSpaceVisibility
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -79,7 +94,10 @@ ViewType
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_viewtype.rst
.. autoclass:: PyOpenColorIO.ViewType
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -92,7 +110,10 @@ ColorSpaceDirection
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_colorspacedirection.rst
.. autoclass:: PyOpenColorIO.ColorSpaceDirection
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -107,7 +128,10 @@ ViewTransformDirection
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_viewtransformdirection.rst
.. autoclass:: PyOpenColorIO.ViewTransformDirection
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -122,7 +146,10 @@ TransformDirection
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_transformdirection.rst
.. autoclass:: PyOpenColorIO.TransformDirection
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -137,7 +164,10 @@ TransformType
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_transformtype.rst
.. autoclass:: PyOpenColorIO.TransformType
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -150,7 +180,10 @@ Interpolation
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_interpolation.rst
.. autoclass:: PyOpenColorIO.Interpolation
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -165,7 +198,10 @@ BitDepth
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_bitdepth.rst
.. autoclass:: PyOpenColorIO.BitDepth
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -180,7 +216,10 @@ Lut1DHueAdjust
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_lut1dhueadjust.rst
.. autoclass:: PyOpenColorIO.Lut1DHueAdjust
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -193,7 +232,10 @@ ChannelOrdering
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_channelordering.rst
.. autoclass:: PyOpenColorIO.ChannelOrdering
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -206,7 +248,10 @@ Allocation
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_allocation.rst
.. autoclass:: PyOpenColorIO.Allocation
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -221,7 +266,10 @@ GpuLanguage
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_gpulanguage.rst
.. autoclass:: PyOpenColorIO.GpuLanguage
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -236,7 +284,10 @@ EnvironmentMode
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_environmentmode.rst
.. autoclass:: PyOpenColorIO.EnvironmentMode
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -251,7 +302,10 @@ RangeStyle
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_rangestyle.rst
.. autoclass:: PyOpenColorIO.RangeStyle
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -266,7 +320,10 @@ FixedFunctionStyle
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_fixedfunctionstyle.rst
.. autoclass:: PyOpenColorIO.FixedFunctionStyle
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -281,7 +338,10 @@ ExposureContrastStyle
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_exposurecontraststyle.rst
.. autoclass:: PyOpenColorIO.ExposureContrastStyle
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -296,7 +356,10 @@ CDLStyle
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_cdlstyle.rst
.. autoclass:: PyOpenColorIO.CDLStyle
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -311,7 +374,10 @@ NegativeStyle
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_negativestyle.rst
.. autoclass:: PyOpenColorIO.NegativeStyle
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -326,7 +392,10 @@ GradingStyle
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_gradingstyle.rst
.. autoclass:: PyOpenColorIO.GradingStyle
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -341,7 +410,10 @@ DynamicPropertyType
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_dynamicpropertytype.rst
.. autoclass:: PyOpenColorIO.DynamicPropertyType
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -354,7 +426,10 @@ RGBCurveType
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_rgbcurvetype.rst
.. autoclass:: PyOpenColorIO.RGBCurveType
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -367,7 +442,10 @@ UniformDataType
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_uniformdatatype.rst
.. autoclass:: PyOpenColorIO.UniformDataType
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -380,7 +458,10 @@ OptimizationFlags
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_optimizationflags.rst
.. autoclass:: PyOpenColorIO.OptimizationFlags
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
@@ -393,7 +474,10 @@ ProcessorCacheFlags
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_processorcacheflags.rst
.. autoclass:: PyOpenColorIO.ProcessorCacheFlags
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
+2 -2
View File
@@ -9,9 +9,9 @@ Exceptions
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_exception.rst
.. autoexception:: PyOpenColorIO.Exception
.. include:: python/${PYDIR}/pyopencolorio_exceptionmissingfile.rst
.. autoexception:: PyOpenColorIO.ExceptionMissingFile
.. group-tab:: C++
+25 -1
View File
@@ -9,7 +9,31 @@ FormatMetadata
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_formatmetadata.rst
.. autoclass:: PyOpenColorIO.FormatMetadata
:members:
:undoc-members:
:special-members: __init__,
__iter__,
__len__,
__getitem__,
__setitem__,
__contains__
:exclude-members: AttributeNameIterator,
AttributeIterator,
ConstChildElementIterator,
ChildElementIterator
.. autoclass:: PyOpenColorIO.FormatMetadata.AttributeNameIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.FormatMetadata.AttributeIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.FormatMetadata.ConstChildElementIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.FormatMetadata.ChildElementIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. group-tab:: C++
+46 -46
View File
@@ -12,7 +12,7 @@ Caching
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_clearallcaches.rst
.. autofunction:: PyOpenColorIO.ClearAllCaches
.. group-tab:: C++
@@ -27,9 +27,9 @@ Version
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_getversion.rst
.. autofunction:: PyOpenColorIO.GetVersion
.. include:: python/${PYDIR}/pyopencolorio_getversionhex.rst
.. autofunction:: PyOpenColorIO.GetVersionHex
.. group-tab:: C++
@@ -44,9 +44,9 @@ Logging
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_getlogginglevel.rst
.. autofunction:: PyOpenColorIO.GetLoggingLevel
.. include:: python/${PYDIR}/pyopencolorio_setlogginglevel.rst
.. autofunction:: PyOpenColorIO.SetLoggingLevel
.. group-tab:: C++
@@ -61,11 +61,11 @@ Logging Function
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_setloggingfunction.rst
.. autofunction:: PyOpenColorIO.SetLoggingFunction
.. include:: python/${PYDIR}/pyopencolorio_resettodefaultloggingfunction.rst
.. autofunction:: PyOpenColorIO.ResetToDefaultLoggingFunction
.. include:: python/${PYDIR}/pyopencolorio_logmessage.rst
.. autofunction:: PyOpenColorIO.LogMessage
.. group-tab:: C++
@@ -84,9 +84,9 @@ Compute Hash Function
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_setcomputehashfunction.rst
.. autofunction:: PyOpenColorIO.SetComputeHashFunction
.. include:: python/${PYDIR}/pyopencolorio_resetcomputehashfunction.rst
.. autofunction:: PyOpenColorIO.ResetComputeHashFunction
.. group-tab:: C++
@@ -103,13 +103,13 @@ Environment Variables
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_getenvvariable.rst
.. autofunction:: PyOpenColorIO.GetEnvVariable
.. include:: python/${PYDIR}/pyopencolorio_setenvvariable.rst
.. autofunction:: PyOpenColorIO.SetEnvVariable
.. include:: python/${PYDIR}/pyopencolorio_unsetenvvariable.rst
.. autofunction:: PyOpenColorIO.UnsetEnvVariable
.. include:: python/${PYDIR}/pyopencolorio_isenvvariablepresent.rst
.. autofunction:: PyOpenColorIO.IsEnvVariablePresent
.. group-tab:: C++
@@ -142,9 +142,9 @@ Bool
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_booltostring.rst
.. autofunction:: PyOpenColorIO.BoolToString
.. include:: python/${PYDIR}/pyopencolorio_boolfromstring.rst
.. autofunction:: PyOpenColorIO.BoolFromString
.. group-tab:: C++
@@ -161,9 +161,9 @@ LoggingLevel
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_loggingleveltostring.rst
.. autofunction:: PyOpenColorIO.LoggingLevelToString
.. include:: python/${PYDIR}/pyopencolorio_logginglevelfromstring.rst
.. autofunction:: PyOpenColorIO.LoggingLevelFromString
.. group-tab:: C++
@@ -180,13 +180,13 @@ TransformDirection
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_transformdirectiontostring.rst
.. autofunction:: PyOpenColorIO.TransformDirectionToString
.. include:: python/${PYDIR}/pyopencolorio_transformdirectionfromstring.rst
.. autofunction:: PyOpenColorIO.TransformDirectionFromString
.. include:: python/${PYDIR}/pyopencolorio_getinversetransformdirection.rst
.. autofunction:: PyOpenColorIO.GetInverseTransformDirection
.. include:: python/${PYDIR}/pyopencolorio_combinetransformdirections.rst
.. autofunction:: PyOpenColorIO.CombineTransformDirections
.. group-tab:: C++
@@ -207,13 +207,13 @@ BitDepth
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_bitdepthtostring.rst
.. autofunction:: PyOpenColorIO.BitDepthToString
.. include:: python/${PYDIR}/pyopencolorio_bitdepthfromstring.rst
.. autofunction:: PyOpenColorIO.BitDepthFromString
.. include:: python/${PYDIR}/pyopencolorio_bitdepthisfloat.rst
.. autofunction:: PyOpenColorIO.BitDepthIsFloat
.. include:: python/${PYDIR}/pyopencolorio_bitdepthtoint.rst
.. autofunction:: PyOpenColorIO.BitDepthToInt
.. group-tab:: C++
@@ -234,9 +234,9 @@ Allocation
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_allocationtostring.rst
.. autofunction:: PyOpenColorIO.AllocationToString
.. include:: python/${PYDIR}/pyopencolorio_allocationfromstring.rst
.. autofunction:: PyOpenColorIO.AllocationFromString
.. group-tab:: C++
@@ -253,9 +253,9 @@ Interpolation
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_interpolationtostring.rst
.. autofunction:: PyOpenColorIO.InterpolationToString
.. include:: python/${PYDIR}/pyopencolorio_interpolationfromstring.rst
.. autofunction:: PyOpenColorIO.InterpolationFromString
.. group-tab:: C++
@@ -272,9 +272,9 @@ GpuLanguage
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_gpulanguagetostring.rst
.. autofunction:: PyOpenColorIO.GpuLanguageToString
.. include:: python/${PYDIR}/pyopencolorio_gpulanguagefromstring.rst
.. autofunction:: PyOpenColorIO.GpuLanguageFromString
.. group-tab:: C++
@@ -291,9 +291,9 @@ EnvironmentMode
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_environmentmodetostring.rst
.. autofunction:: PyOpenColorIO.EnvironmentModeToString
.. include:: python/${PYDIR}/pyopencolorio_environmentmodefromstring.rst
.. autofunction:: PyOpenColorIO.EnvironmentModeFromString
.. group-tab:: C++
@@ -310,9 +310,9 @@ CDLStyle
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_cdlstyletostring.rst
.. autofunction:: PyOpenColorIO.CDLStyleToString
.. include:: python/${PYDIR}/pyopencolorio_cdlstylefromstring.rst
.. autofunction:: PyOpenColorIO.CDLStyleFromString
.. group-tab:: C++
@@ -329,9 +329,9 @@ RangeStyle
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_rangestyletostring.rst
.. autofunction:: PyOpenColorIO.RangeStyleToString
.. include:: python/${PYDIR}/pyopencolorio_rangestylefromstring.rst
.. autofunction:: PyOpenColorIO.RangeStyleFromString
.. group-tab:: C++
@@ -348,9 +348,9 @@ FixedFunctionStyle
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_fixedfunctionstyletostring.rst
.. autofunction:: PyOpenColorIO.FixedFunctionStyleToString
.. include:: python/${PYDIR}/pyopencolorio_fixedfunctionstylefromstring.rst
.. autofunction:: PyOpenColorIO.FixedFunctionStyleFromString
.. group-tab:: C++
@@ -367,9 +367,9 @@ GradingStyle
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_gradingstyletostring.rst
.. autofunction:: PyOpenColorIO.GradingStyleToString
.. include:: python/${PYDIR}/pyopencolorio_gradingstylefromstring.rst
.. autofunction:: PyOpenColorIO.GradingStyleFromString
.. group-tab:: C++
@@ -386,9 +386,9 @@ ExposureContrastStyle
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_exposurecontraststyletostring.rst
.. autofunction:: PyOpenColorIO.ExposureContrastStyleToString
.. include:: python/${PYDIR}/pyopencolorio_exposurecontraststylefromstring.rst
.. autofunction:: PyOpenColorIO.ExposureContrastStyleFromString
.. group-tab:: C++
@@ -405,9 +405,9 @@ NegativeStyle
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_negativestyletostring.rst
.. autofunction:: PyOpenColorIO.NegativeStyleToString
.. include:: python/${PYDIR}/pyopencolorio_negativestylefromstring.rst
.. autofunction:: PyOpenColorIO.NegativeStyleFromString
.. group-tab:: C++
+94 -10
View File
@@ -14,7 +14,11 @@ GradingPrimaryTransform
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_gradingprimarytransform.rst
.. autoclass:: PyOpenColorIO.GradingPrimaryTransform
:members:
:undoc-members:
:special-members: __init__, __str__
:inherited-members:
.. group-tab:: C++
@@ -34,7 +38,10 @@ GradingPrimary
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_gradingprimary.rst
.. autoclass:: PyOpenColorIO.GradingPrimary
:members:
:undoc-members:
:special-members: __init__, __str__
.. group-tab:: C++
@@ -51,7 +58,10 @@ GradingRGBM
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_gradingrgbm.rst
.. autoclass:: PyOpenColorIO.GradingRGBM
:members:
:undoc-members:
:special-members: __init__, __str__
.. group-tab:: C++
@@ -68,7 +78,11 @@ GradingRGBCurveTransform
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_gradingrgbcurvetransform.rst
.. autoclass:: PyOpenColorIO.GradingRGBCurveTransform
:members:
:undoc-members:
:special-members: __init__, __str__
:inherited-members:
.. group-tab:: C++
@@ -88,7 +102,10 @@ GradingRGBCurve
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_gradingrgbcurve.rst
.. autoclass:: PyOpenColorIO.GradingRGBCurve
:members:
:undoc-members:
:special-members: __init__, __str__
.. group-tab:: C++
@@ -101,6 +118,53 @@ GradingRGBCurve
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstGradingRGBCurveRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::GradingRGBCurveRcPtr
GradingHueCurveTransform
************************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingHueCurveTransform
:members:
:undoc-members:
:special-members: __init__, __str__
:inherited-members:
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::GradingHueCurveTransform
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const GradingHueCurveTransform&) noexcept
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstGradingHueCurveTransformRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::GradingHueCurveTransformRcPtr
GradingHueCurve
^^^^^^^^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingHueCurve
:members:
:undoc-members:
:special-members: __init__, __str__
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::GradingHueCurve
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const GradingHueCurve&)
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstGradingHueCurveRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::GradingHueCurveRcPtr
GradingControlPoint
^^^^^^^^^^^^^^^^^^^
@@ -108,7 +172,10 @@ GradingControlPoint
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_gradingcontrolpoint.rst
.. autoclass:: PyOpenColorIO.GradingControlPoint
:members:
:undoc-members:
:special-members: __init__, __str__
.. group-tab:: C++
@@ -125,7 +192,14 @@ GradingBSplineCurve
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_gradingbsplinecurve.rst
.. autoclass:: PyOpenColorIO.GradingBSplineCurve
:members:
:undoc-members:
:special-members: __init__, __str__
:exclude-members: GradingControlPointIterator
.. autoclass:: PyOpenColorIO.GradingBSplineCurve.GradingControlPointIterator
:special-members: __getitem__, __setitem__, __iter__, __len__, __next__
.. group-tab:: C++
@@ -145,7 +219,11 @@ GradingToneTransform
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_gradingtonetransform.rst
.. autoclass:: PyOpenColorIO.GradingToneTransform
:members:
:undoc-members:
:special-members: __init__, __str__
:inherited-members:
.. group-tab:: C++
@@ -165,7 +243,10 @@ GradingTone
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_gradingtone.rst
.. autoclass:: PyOpenColorIO.GradingTone
:members:
:undoc-members:
:special-members: __init__, __str__
.. group-tab:: C++
@@ -182,7 +263,10 @@ GradingRGBMSW
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_gradingrgbmsw.rst
.. autoclass:: PyOpenColorIO.GradingRGBMSW
:members:
:undoc-members:
:special-members: __init__, __str__
.. group-tab:: C++
+14 -3
View File
@@ -9,7 +9,10 @@ ImageDesc
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_imagedesc.rst
.. autoclass:: PyOpenColorIO.ImageDesc
:members:
:undoc-members:
:special-members: __init__
.. py:data:: AutoStride
:module: PyOpenColorIO
@@ -35,7 +38,11 @@ PackedImageDesc
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_packedimagedesc.rst
.. autoclass:: PyOpenColorIO.PackedImageDesc
:members:
:undoc-members:
:special-members: __init__
:inherited-members:
.. group-tab:: C++
@@ -50,7 +57,11 @@ PlanarImageDesc
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_planarimagedesc.rst
.. autoclass:: PyOpenColorIO.PlanarImageDesc
:members:
:undoc-members:
:special-members: __init__
:inherited-members:
.. group-tab:: C++
+4 -1
View File
@@ -9,7 +9,10 @@ Look
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_look.rst
.. autoclass:: PyOpenColorIO.Look
:members:
:undoc-members:
:special-members: __init__, __str__
.. group-tab:: C++
+8 -1
View File
@@ -9,7 +9,14 @@ Named Transform
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_namedtransform.rst
.. autoclass:: PyOpenColorIO.NamedTransform
:members:
:undoc-members:
:special-members: __init__, __str__
:exclude-members: NamedTransformCategoryIterator
.. autoclass:: PyOpenColorIO.NamedTransform.NamedTransformCategoryIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. group-tab:: C++
+27 -4
View File
@@ -12,7 +12,14 @@ Processor
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_processor.rst
.. autoclass:: PyOpenColorIO.Processor
:members:
:undoc-members:
:special-members: __init__
:exclude-members: TransformFormatMetadataIterator, WriteFormatIterator
.. autoclass:: PyOpenColorIO.Processor.TransformFormatMetadataIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. group-tab:: C++
@@ -30,7 +37,10 @@ CPUProcessor
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_cpuprocessor.rst
.. autoclass:: PyOpenColorIO.CPUProcessor
:members:
:undoc-members:
:special-members: __init__
.. group-tab:: C++
@@ -48,7 +58,10 @@ GPUProcessor
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_gpuprocessor.rst
.. autoclass:: PyOpenColorIO.GPUProcessor
:members:
:undoc-members:
:special-members: __init__
.. group-tab:: C++
@@ -66,7 +79,17 @@ ProcessorMetadata
.. group-tab:: Python
.. include:: python/${PYDIR}/pyopencolorio_processormetadata.rst
.. autoclass:: PyOpenColorIO.ProcessorMetadata
:members:
:undoc-members:
:special-members: __init__
:exclude-members: FileIterator, LookIterator
.. autoclass:: PyOpenColorIO.ProcessorMetadata.FileIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.ProcessorMetadata.LookIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. group-tab:: C++
@@ -1,37 +0,0 @@
..
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:: Allocation
:module: PyOpenColorIO
Members:
ALLOCATION_UNKNOWN :
ALLOCATION_UNIFORM :
ALLOCATION_LG2 :
.. py:method:: name() -> str
:property:
.. py:attribute:: Allocation.ALLOCATION_LG2
:module: PyOpenColorIO
:value: <Allocation.ALLOCATION_LG2: 2>
.. py:attribute:: Allocation.ALLOCATION_UNIFORM
:module: PyOpenColorIO
:value: <Allocation.ALLOCATION_UNIFORM: 1>
.. py:attribute:: Allocation.ALLOCATION_UNKNOWN
:module: PyOpenColorIO
:value: <Allocation.ALLOCATION_UNKNOWN: 0>
.. py:property:: Allocation.value
:module: PyOpenColorIO
@@ -1,8 +0,0 @@
..
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:function:: AllocationFromString(str: str) -> PyOpenColorIO.Allocation
:module: PyOpenColorIO
@@ -1,8 +0,0 @@
..
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:function:: AllocationToString(allocation: PyOpenColorIO.Allocation) -> str
:module: PyOpenColorIO
@@ -1,56 +0,0 @@
..
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:: AllocationTransform
:module: PyOpenColorIO
Forward direction wraps the 'expanded' range into the specified, often compressed, range.
.. py:method:: AllocationTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.AllocationTransform) -> None
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.getAllocation(self: PyOpenColorIO.AllocationTransform) -> PyOpenColorIO.Allocation
:module: PyOpenColorIO
.. py:method:: AllocationTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: AllocationTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: AllocationTransform.getVars(self: PyOpenColorIO.AllocationTransform) -> List[float]
:module: PyOpenColorIO
.. py:method:: AllocationTransform.setAllocation(self: PyOpenColorIO.AllocationTransform, allocation: PyOpenColorIO.Allocation) -> None
:module: PyOpenColorIO
.. py:method:: AllocationTransform.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:: AllocationTransform.setVars(self: PyOpenColorIO.AllocationTransform, vars: List[float]) -> None
:module: PyOpenColorIO
.. py:method:: AllocationTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
@@ -1,181 +0,0 @@
..
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:: Baker
:module: PyOpenColorIO
In certain situations it is necessary to serialize transforms into a variety of application specific LUT formats. Note that not all file formats that may be read also support baking.
**Usage Example:** *Bake a CSP sRGB viewer LUT*
.. code-block:: cpp
OCIO::ConstConfigRcPtr config = OCIO::Config::CreateFromEnv();
OCIO::BakerRcPtr baker = OCIO::Baker::Create();
baker->setConfig(config);
baker->setFormat("csp");
baker->setInputSpace("lnf");
baker->setShaperSpace("log");
baker->setTargetSpace("sRGB");
auto & metadata = baker->getFormatMetadata();
metadata.addChildElement(:ref:`OCIO::METADATA_DESCRIPTION`, "A first comment");
metadata.addChildElement(:ref:`OCIO::METADATA_DESCRIPTION`, "A second comment");
std::ostringstream out;
baker->bake(out); // fresh bread anyone!
std::cout << out.str();
.. py:method:: Baker.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.Baker) -> None
Create a new :ref:`Baker`.
2. __init__(self: PyOpenColorIO.Baker, config: PyOpenColorIO.Config, format: str, inputSpace: str, targetSpace: str, looks: str = '', cubeSize: int = -1, shaperSpace: str = '', shaperSize: int = -1) -> None
Create a new :ref:`Baker`.
.. py:method:: Baker.bake(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. bake(self: PyOpenColorIO.Baker, fileName: str) -> None
2. bake(self: PyOpenColorIO.Baker) -> str
Bake the LUT into the output stream.
.. py:method:: Baker.getConfig(self: PyOpenColorIO.Baker) -> PyOpenColorIO.Config
:module: PyOpenColorIO
.. py:method:: Baker.getCubeSize(self: PyOpenColorIO.Baker) -> int
:module: PyOpenColorIO
.. py:method:: Baker.getDisplay(self: PyOpenColorIO.Baker) -> str
:module: PyOpenColorIO
.. py:method:: Baker.getFormat(self: PyOpenColorIO.Baker) -> str
:module: PyOpenColorIO
.. py:method:: Baker.getFormatMetadata(self: PyOpenColorIO.Baker) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO
.. py:method:: Baker.getFormats() -> PyOpenColorIO.Baker.FormatIterator
:module: PyOpenColorIO
:staticmethod:
.. py:method:: Baker.getInputSpace(self: PyOpenColorIO.Baker) -> str
:module: PyOpenColorIO
.. py:method:: Baker.getLooks(self: PyOpenColorIO.Baker) -> str
:module: PyOpenColorIO
.. py:method:: Baker.getShaperSize(self: PyOpenColorIO.Baker) -> int
:module: PyOpenColorIO
.. py:method:: Baker.getShaperSpace(self: PyOpenColorIO.Baker) -> str
:module: PyOpenColorIO
.. py:method:: Baker.getTargetSpace(self: PyOpenColorIO.Baker) -> str
:module: PyOpenColorIO
.. py:method:: Baker.getView(self: PyOpenColorIO.Baker) -> str
:module: PyOpenColorIO
.. py:method:: Baker.setConfig(self: PyOpenColorIO.Baker, config: PyOpenColorIO.Config) -> None
:module: PyOpenColorIO
Set the config to use.
.. py:method:: Baker.setCubeSize(self: PyOpenColorIO.Baker, cubeSize: int) -> None
:module: PyOpenColorIO
Override the main LUT (3d or 1d) sample size. Default value is -1, which allows each format to use its own most appropriate size.
.. py:method:: Baker.setDisplayView(self: PyOpenColorIO.Baker, display: str, view: str) -> None
:module: PyOpenColorIO
Set the display and view to apply during the baking. Must not be used if setTargetSpace is used.
.. py:method:: Baker.setFormat(self: PyOpenColorIO.Baker, formatName: str) -> None
:module: PyOpenColorIO
Set the LUT output format.
.. py:method:: Baker.setInputSpace(self: PyOpenColorIO.Baker, inputSpace: str) -> None
:module: PyOpenColorIO
Set the input :ref:`ColorSpace` that the LUT will be applied to.
.. py:method:: Baker.setLooks(self: PyOpenColorIO.Baker, looks: str) -> None
:module: PyOpenColorIO
Set the looks to be applied during baking. Looks is a potentially comma (or colon) delimited list of lookNames, where +/- prefixes are optionally allowed to denote forward/inverse look specification. (And forward is assumed in the absence of either).
.. py:method:: Baker.setShaperSize(self: PyOpenColorIO.Baker, shaperSize: int) -> None
:module: PyOpenColorIO
Override the default shaper LUT size. Default value is -1, which allows each format to use its own most appropriate size. For the CLF format, the default uses a half-domain LUT1D (which is ideal for scene-linear inputs).
.. py:method:: Baker.setShaperSpace(self: PyOpenColorIO.Baker, shaperSpace: str) -> None
:module: PyOpenColorIO
Set an *optional* :ref:`ColorSpace` to shape the incoming values of the LUT. When baking 3DLUT, this will correspond to the 1D shaper used to normalise incoming values to the unit range. When baking 1D LUT, this will be used to determine the input range of the LUT.
.. py:method:: Baker.setTargetSpace(self: PyOpenColorIO.Baker, targetSpace: str) -> None
:module: PyOpenColorIO
Set the target (i.e., output) color space for the LUT. Must not be used if setDisplayView is used.
.. py:class:: FormatIterator
:module: PyOpenColorIO.Baker
Iterator on LUT baker Formats.
Each item is a tuple containing format name and format extension.
.. py:method:: FormatIterator.__getitem__(self: PyOpenColorIO.Baker.FormatIterator, arg0: int) -> tuple
:module: PyOpenColorIO.Baker
.. py:method:: FormatIterator.__iter__(self: PyOpenColorIO.Baker.FormatIterator) -> PyOpenColorIO.Baker.FormatIterator
:module: PyOpenColorIO.Baker
.. py:method:: FormatIterator.__len__(self: PyOpenColorIO.Baker.FormatIterator) -> int
:module: PyOpenColorIO.Baker
.. py:method:: FormatIterator.__next__(self: PyOpenColorIO.Baker.FormatIterator) -> tuple
:module: PyOpenColorIO.Baker
@@ -1,81 +0,0 @@
..
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:: BitDepth
:module: PyOpenColorIO
Used in a configuration file to indicate the bit-depth of a color space, and by the :ref:`Processor` to specify the input and output bit-depths of images to process. Note that :ref:`Processor` only supports: UINT8, UINT10, UINT12, UINT16, F16 and F32.
Members:
BIT_DEPTH_UNKNOWN :
BIT_DEPTH_UINT8 :
BIT_DEPTH_UINT10 :
BIT_DEPTH_UINT12 :
BIT_DEPTH_UINT14 :
BIT_DEPTH_UINT16 :
BIT_DEPTH_UINT32 : Here for historical reason but that's not supported.
BIT_DEPTH_F16 :
BIT_DEPTH_F32 :
.. py:method:: name() -> str
:property:
.. py:attribute:: BitDepth.BIT_DEPTH_F16
:module: PyOpenColorIO
:value: <BitDepth.BIT_DEPTH_F16: 7>
.. py:attribute:: BitDepth.BIT_DEPTH_F32
:module: PyOpenColorIO
:value: <BitDepth.BIT_DEPTH_F32: 8>
.. py:attribute:: BitDepth.BIT_DEPTH_UINT10
:module: PyOpenColorIO
:value: <BitDepth.BIT_DEPTH_UINT10: 2>
.. py:attribute:: BitDepth.BIT_DEPTH_UINT12
:module: PyOpenColorIO
:value: <BitDepth.BIT_DEPTH_UINT12: 3>
.. py:attribute:: BitDepth.BIT_DEPTH_UINT14
:module: PyOpenColorIO
:value: <BitDepth.BIT_DEPTH_UINT14: 4>
.. py:attribute:: BitDepth.BIT_DEPTH_UINT16
:module: PyOpenColorIO
:value: <BitDepth.BIT_DEPTH_UINT16: 5>
.. py:attribute:: BitDepth.BIT_DEPTH_UINT32
:module: PyOpenColorIO
:value: <BitDepth.BIT_DEPTH_UINT32: 6>
.. py:attribute:: BitDepth.BIT_DEPTH_UINT8
:module: PyOpenColorIO
:value: <BitDepth.BIT_DEPTH_UINT8: 1>
.. py:attribute:: BitDepth.BIT_DEPTH_UNKNOWN
:module: PyOpenColorIO
:value: <BitDepth.BIT_DEPTH_UNKNOWN: 0>
.. py:property:: BitDepth.value
:module: PyOpenColorIO
@@ -1,8 +0,0 @@
..
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:function:: BitDepthFromString(str: str) -> PyOpenColorIO.BitDepth
:module: PyOpenColorIO
@@ -1,8 +0,0 @@
..
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:function:: BitDepthIsFloat(bitDepth: PyOpenColorIO.BitDepth) -> bool
:module: PyOpenColorIO
@@ -1,8 +0,0 @@
..
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:function:: BitDepthToInt(bitDepth: PyOpenColorIO.BitDepth) -> int
:module: PyOpenColorIO
@@ -1,8 +0,0 @@
..
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:function:: BitDepthToString(bitDepth: PyOpenColorIO.BitDepth) -> str
:module: PyOpenColorIO
@@ -1,8 +0,0 @@
..
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:function:: BoolFromString(str: str) -> bool
:module: PyOpenColorIO
@@ -1,8 +0,0 @@
..
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:function:: BoolToString(value: bool) -> str
:module: PyOpenColorIO
@@ -1,54 +0,0 @@
..
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:: BuiltinTransform
:module: PyOpenColorIO
A built-in transform is similar to a :ref:`FileTransform`, but without the file. OCIO knows how to build a set of commonly used transforms on-demand, thus avoiding the need for external files and simplifying config authoring.
.. py:method:: BuiltinTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.BuiltinTransform) -> None
2. __init__(self: PyOpenColorIO.BuiltinTransform, style: str = 'IDENTITY', direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
.. py:method:: BuiltinTransform.getDescription(self: PyOpenColorIO.BuiltinTransform) -> str
:module: PyOpenColorIO
.. py:method:: BuiltinTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: BuiltinTransform.getStyle(self: PyOpenColorIO.BuiltinTransform) -> str
:module: PyOpenColorIO
.. py:method:: BuiltinTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: BuiltinTransform.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:: BuiltinTransform.setStyle(self: PyOpenColorIO.BuiltinTransform, style: str) -> None
:module: PyOpenColorIO
Select an existing built-in transform style from the list accessible through :cpp:class:`:ref:`BuiltinTransformRegistry``. The style is the ID string that identifies which transform to apply.
.. py:method:: BuiltinTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
@@ -1,60 +0,0 @@
..
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:: BuiltinTransformRegistry
:module: PyOpenColorIO
The built-in transform registry contains all the existing built-in transforms which can be used by a configuration (version 2 or higher only).
.. py:method:: BuiltinTransformRegistry.__init__(self: PyOpenColorIO.BuiltinTransformRegistry) -> None
:module: PyOpenColorIO
Get the current built-in transform registry.
.. py:method:: BuiltinTransformRegistry.getBuiltins(self: PyOpenColorIO.BuiltinTransformRegistry) -> PyOpenColorIO.BuiltinTransformRegistry.BuiltinIterator
:module: PyOpenColorIO
.. py:class:: BuiltinStyleIterator
:module: PyOpenColorIO.BuiltinTransformRegistry
.. py:method:: BuiltinStyleIterator.__getitem__(self: PyOpenColorIO.BuiltinTransformRegistry.BuiltinStyleIterator, arg0: int) -> str
:module: PyOpenColorIO.BuiltinTransformRegistry
.. py:method:: BuiltinStyleIterator.__iter__(self: PyOpenColorIO.BuiltinTransformRegistry.BuiltinStyleIterator) -> PyOpenColorIO.BuiltinTransformRegistry.BuiltinStyleIterator
:module: PyOpenColorIO.BuiltinTransformRegistry
.. py:method:: BuiltinStyleIterator.__len__(self: PyOpenColorIO.BuiltinTransformRegistry.BuiltinStyleIterator) -> int
:module: PyOpenColorIO.BuiltinTransformRegistry
.. py:method:: BuiltinStyleIterator.__next__(self: PyOpenColorIO.BuiltinTransformRegistry.BuiltinStyleIterator) -> str
:module: PyOpenColorIO.BuiltinTransformRegistry
.. py:class:: BuiltinIterator
:module: PyOpenColorIO.BuiltinTransformRegistry
.. py:method:: BuiltinIterator.__getitem__(self: PyOpenColorIO.BuiltinTransformRegistry.BuiltinIterator, arg0: int) -> tuple
:module: PyOpenColorIO.BuiltinTransformRegistry
.. py:method:: BuiltinIterator.__iter__(self: PyOpenColorIO.BuiltinTransformRegistry.BuiltinIterator) -> PyOpenColorIO.BuiltinTransformRegistry.BuiltinIterator
:module: PyOpenColorIO.BuiltinTransformRegistry
.. py:method:: BuiltinIterator.__len__(self: PyOpenColorIO.BuiltinTransformRegistry.BuiltinIterator) -> int
:module: PyOpenColorIO.BuiltinTransformRegistry
.. py:method:: BuiltinIterator.__next__(self: PyOpenColorIO.BuiltinTransformRegistry.BuiltinIterator) -> tuple
:module: PyOpenColorIO.BuiltinTransformRegistry
@@ -1,37 +0,0 @@
..
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:: CDLStyle
:module: PyOpenColorIO
Members:
CDL_ASC : ASC CDL specification v1.2.
CDL_NO_CLAMP : CDL that does not clamp.
CDL_TRANSFORM_DEFAULT :
.. py:method:: name() -> str
:property:
.. py:attribute:: CDLStyle.CDL_ASC
:module: PyOpenColorIO
:value: <CDLStyle.CDL_ASC: 0>
.. py:attribute:: CDLStyle.CDL_NO_CLAMP
:module: PyOpenColorIO
:value: <CDLStyle.CDL_NO_CLAMP: 1>
.. py:attribute:: CDLStyle.CDL_TRANSFORM_DEFAULT
:module: PyOpenColorIO
:value: <CDLStyle.CDL_NO_CLAMP: 1>
.. py:property:: CDLStyle.value
:module: PyOpenColorIO
@@ -1,8 +0,0 @@
..
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:function:: CDLStyleFromString(str: str) -> PyOpenColorIO.CDLStyle
:module: PyOpenColorIO
@@ -1,8 +0,0 @@
..
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:function:: CDLStyleToString(style: PyOpenColorIO.CDLStyle) -> str
:module: PyOpenColorIO
@@ -1,151 +0,0 @@
..
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:: CDLTransform
:module: PyOpenColorIO
An implementation of the ASC Color Decision List (CDL), based on the ASC v1.2 specification.
**ASC_SOP**
Slope, offset, power:: out = clamp( (in * slope) + offset ) ^ power
.. note::
​ If the config version is 1, negative values are clamped if the power is not 1.0. For config version 2 and higher, the negative handling is controlled by the CDL style.
.. py:method:: CDLTransform.CreateFromFile(src: str, id: str) -> PyOpenColorIO.CDLTransform
:module: PyOpenColorIO
:staticmethod:
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) -> 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.
.. py:method:: CDLTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.CDLTransform) -> None
2. __init__(self: PyOpenColorIO.CDLTransform, direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
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.equals(self: PyOpenColorIO.CDLTransform, other: PyOpenColorIO.CDLTransform) -> bool
:module: PyOpenColorIO
.. py:method:: CDLTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: CDLTransform.getFirstSOPDescription(self: PyOpenColorIO.CDLTransform) -> str
:module: PyOpenColorIO
.. py:method:: CDLTransform.getFormatMetadata(self: PyOpenColorIO.CDLTransform) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO
.. py:method:: CDLTransform.getID(self: PyOpenColorIO.CDLTransform) -> str
:module: PyOpenColorIO
The get/setID methods are now deprecated. The preferred way of interacting with the ID is now via the transform's formatMetadata.
.. py:method:: CDLTransform.getOffset(self: PyOpenColorIO.CDLTransform) -> List[float[3]]
:module: PyOpenColorIO
.. py:method:: CDLTransform.getPower(self: PyOpenColorIO.CDLTransform) -> List[float[3]]
:module: PyOpenColorIO
.. py:method:: CDLTransform.getSOP(self: PyOpenColorIO.CDLTransform) -> List[float[9]]
:module: PyOpenColorIO
.. py:method:: CDLTransform.getSat(self: PyOpenColorIO.CDLTransform) -> float
:module: PyOpenColorIO
.. py:method:: CDLTransform.getSatLumaCoefs(self: PyOpenColorIO.CDLTransform) -> List[float[3]]
:module: PyOpenColorIO
These are hard-coded, by spec, to r709.
.. py:method:: CDLTransform.getSlope(self: PyOpenColorIO.CDLTransform) -> List[float[3]]
:module: PyOpenColorIO
.. py:method:: CDLTransform.getStyle(self: PyOpenColorIO.CDLTransform) -> PyOpenColorIO.CDLStyle
:module: PyOpenColorIO
.. py:method:: CDLTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: CDLTransform.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:: CDLTransform.setFirstSOPDescription(self: PyOpenColorIO.CDLTransform, description: str) -> None
:module: PyOpenColorIO
.. py:method:: CDLTransform.setID(self: PyOpenColorIO.CDLTransform, id: str) -> None
:module: PyOpenColorIO
.. py:method:: CDLTransform.setOffset(self: PyOpenColorIO.CDLTransform, rgb: List[float[3]]) -> None
:module: PyOpenColorIO
.. py:method:: CDLTransform.setPower(self: PyOpenColorIO.CDLTransform, rgb: List[float[3]]) -> None
:module: PyOpenColorIO
.. py:method:: CDLTransform.setSOP(self: PyOpenColorIO.CDLTransform, vec9: List[float[9]]) -> None
:module: PyOpenColorIO
.. py:method:: CDLTransform.setSat(self: PyOpenColorIO.CDLTransform, sat: float) -> None
:module: PyOpenColorIO
.. py:method:: CDLTransform.setSlope(self: PyOpenColorIO.CDLTransform, rgb: List[float[3]]) -> None
:module: PyOpenColorIO
.. py:method:: CDLTransform.setStyle(self: PyOpenColorIO.CDLTransform, style: PyOpenColorIO.CDLStyle) -> None
:module: PyOpenColorIO
Use CDL_ASC to clamp values to [0,1] per the ASC spec. Use NO_CLAMP to never clamp values (regardless of whether power is 1.0). The NO_CLAMP option passes negatives through unchanged (like the NEGATIVE_PASS_THRU style of :ref:`ExponentTransform`). The default style is CDL_NO_CLAMP.
.. py:method:: CDLTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
@@ -1,53 +0,0 @@
..
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:: ChannelOrdering
:module: PyOpenColorIO
Used by :ref:`PackedImageDesc` to indicate the channel ordering of the image to process.
Members:
CHANNEL_ORDERING_RGBA :
CHANNEL_ORDERING_BGRA :
CHANNEL_ORDERING_ABGR :
CHANNEL_ORDERING_RGB :
CHANNEL_ORDERING_BGR :
.. py:method:: name() -> str
:property:
.. py:attribute:: ChannelOrdering.CHANNEL_ORDERING_ABGR
:module: PyOpenColorIO
:value: <ChannelOrdering.CHANNEL_ORDERING_ABGR: 2>
.. py:attribute:: ChannelOrdering.CHANNEL_ORDERING_BGR
:module: PyOpenColorIO
:value: <ChannelOrdering.CHANNEL_ORDERING_BGR: 4>
.. py:attribute:: ChannelOrdering.CHANNEL_ORDERING_BGRA
:module: PyOpenColorIO
:value: <ChannelOrdering.CHANNEL_ORDERING_BGRA: 1>
.. py:attribute:: ChannelOrdering.CHANNEL_ORDERING_RGB
:module: PyOpenColorIO
:value: <ChannelOrdering.CHANNEL_ORDERING_RGB: 3>
.. py:attribute:: ChannelOrdering.CHANNEL_ORDERING_RGBA
:module: PyOpenColorIO
:value: <ChannelOrdering.CHANNEL_ORDERING_RGBA: 0>
.. py:property:: ChannelOrdering.value
:module: PyOpenColorIO
@@ -1,15 +0,0 @@
..
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:function:: ClearAllCaches() -> None
:module: PyOpenColorIO
During normal usage, OpenColorIO tends to cache certain global information (such as the contents of LUTs on disk, intermediate results, etc.). Calling this function will flush all such information. The global information are related to LUT file identifications, loaded LUT file content and CDL transforms from loaded CDL files.
Under normal usage, this is not necessary, but it can be helpful in particular instances, such as designing OCIO profiles, and wanting to re-read luts without restarting.
.. note::
The method does not apply to instance specific caches such as the processor cache in a config instance or the GPU and CPU processor caches in a processor instance. Here deleting the instance flushes the cache.
@@ -1,255 +0,0 @@
..
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:: ColorSpace
:module: PyOpenColorIO
The *:ref:`ColorSpace`* is the state of an image with respect to colorimetry and color encoding. Transforming images between different *ColorSpaces* is the primary motivation for this library.
While a complete discussion of color spaces is beyond the scope of header documentation, traditional uses would be to have *ColorSpaces* corresponding to: physical capture devices (known cameras, scanners), and internal 'convenience' spaces (such as scene linear, logarithmic).
.. py:method:: ColorSpace.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.ColorSpace) -> None
2. __init__(self: PyOpenColorIO.ColorSpace, referenceSpace: PyOpenColorIO.ReferenceSpaceType) -> None
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.addAlias(self: PyOpenColorIO.ColorSpace, alias: str) -> None
:module: PyOpenColorIO
Add an alias for the color space name (the aliases may be used as a synonym for the name). Nothing will be added if the alias is already the color space name, one of its aliases, or the argument is null. The aliases must not conflict with existing roles, color space names, named transform names, or other aliases. This is verified when adding the color space to the config.
.. py:method:: ColorSpace.addCategory(self: PyOpenColorIO.ColorSpace, category: str) -> None
:module: PyOpenColorIO
Add a single category.
.. note::
Will do nothing if the category already exists.
.. py:method:: ColorSpace.clearAliases(self: PyOpenColorIO.ColorSpace) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpace.clearCategories(self: PyOpenColorIO.ColorSpace) -> None
:module: PyOpenColorIO
Clear all the categories.
.. py:method:: ColorSpace.getAliases(self: PyOpenColorIO.ColorSpace) -> PyOpenColorIO.ColorSpace.ColorSpaceAliasIterator
:module: PyOpenColorIO
.. py:method:: ColorSpace.getAllocation(self: PyOpenColorIO.ColorSpace) -> PyOpenColorIO.Allocation
:module: PyOpenColorIO
*Allocation*
If this colorspace needs to be transferred to a limited dynamic range coding space (such as during display with a GPU path), use this allocation to maximize bit efficiency.
.. py:method:: ColorSpace.getAllocationVars(self: PyOpenColorIO.ColorSpace) -> List[float]
:module: PyOpenColorIO
.. py:method:: ColorSpace.getBitDepth(self: PyOpenColorIO.ColorSpace) -> PyOpenColorIO.BitDepth
:module: PyOpenColorIO
.. py:method:: ColorSpace.getCategories(self: PyOpenColorIO.ColorSpace) -> PyOpenColorIO.ColorSpace.ColorSpaceCategoryIterator
:module: PyOpenColorIO
.. py:method:: ColorSpace.getDescription(self: PyOpenColorIO.ColorSpace) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpace.getEncoding(self: PyOpenColorIO.ColorSpace) -> str
:module: PyOpenColorIO
*Encodings*
It is sometimes useful for applications to group color spaces based on how the color values are digitally encoded. For example, images in scene-linear, logarithmic, video, and data color spaces could have different default views. Unlike the Family and EqualityGroup attributes of a color space, the list of Encodings is predefined in the OCIO documentation (rather than being config-specific) to make it easier for applications to utilize.
Here is an example config entry that could appear under a :ref:`ColorSpace`:
.. code-block:: cpp
encoding: scene-linear
Encoding strings are not case-sensitive. Although users may add their own encodings, the strings will typically come from a fixed set listed in the documentation (similar to roles).
.. py:method:: ColorSpace.getEqualityGroup(self: PyOpenColorIO.ColorSpace) -> str
:module: PyOpenColorIO
Get the :ref:`ColorSpace` group name (used for equality comparisons) This allows no-op transforms between different colorspaces. If an equalityGroup is not defined (an empty string), it will be considered unique (i.e., it will not compare as equal to other ColorSpaces with an empty equality group).
.. py:method:: ColorSpace.getFamily(self: PyOpenColorIO.ColorSpace) -> str
:module: PyOpenColorIO
Get the family, for use in user interfaces (optional) The family string could use a '/' separator to indicate levels to be used by hierarchical menus.
.. py:method:: ColorSpace.getName(self: PyOpenColorIO.ColorSpace) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpace.getReferenceSpaceType(self: PyOpenColorIO.ColorSpace) -> PyOpenColorIO.ReferenceSpaceType
:module: PyOpenColorIO
A display color space will use the display-referred reference space.
.. py:method:: ColorSpace.getTransform(self: PyOpenColorIO.ColorSpace, direction: PyOpenColorIO.ColorSpaceDirection) -> PyOpenColorIO.Transform
:module: PyOpenColorIO
*:ref:`Transform`*
If a transform in the specified direction has been specified, return it. Otherwise return a null ConstTransformRcPtr
.. py:method:: ColorSpace.hasCategory(self: PyOpenColorIO.ColorSpace, category: str) -> bool
:module: PyOpenColorIO
Return true if the category is present.
A category is used to allow applications to filter the list of color spaces they display in menus based on what that color space is used for.
Here is an example config entry that could appear under a :ref:`ColorSpace`:
.. code-block:: cpp
categories: [ file-io, working-space, basic-3d ]
The example contains three categories: 'file-io', 'working-space' and 'basic-3d'.
.. note::
Category strings are not case-sensitive and the order is not significant.
There is no limit imposed on length or number. Although users may add their own categories, the strings will typically come from a fixed set listed in the documentation (similar to roles).
.. py:method:: ColorSpace.isData(self: PyOpenColorIO.ColorSpace) -> bool
:module: PyOpenColorIO
*Data*
ColorSpaces that are data are treated a bit special. Basically, any colorspace transforms you try to apply to them are ignored. (Think of applying a gamut mapping transform to an ID pass). However, the setDataBypass method on :ref:`ColorSpaceTransform` and :ref:`DisplayViewTransform` allow applications to process data when necessary. (Think of sending mattes to an HDR monitor.)
This is traditionally used for pixel data that represents non-color pixel data, such as normals, point positions, ID information, etc.
.. py:method:: ColorSpace.removeAlias(self: PyOpenColorIO.ColorSpace, alias: str) -> None
:module: PyOpenColorIO
Does nothing if alias is not present.
.. py:method:: ColorSpace.removeCategory(self: PyOpenColorIO.ColorSpace, category: str) -> None
:module: PyOpenColorIO
Remove a category.
.. note::
Will do nothing if the category is missing.
.. py:method:: ColorSpace.setAllocation(self: PyOpenColorIO.ColorSpace, allocation: PyOpenColorIO.Allocation) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpace.setAllocationVars(self: PyOpenColorIO.ColorSpace, vars: List[float]) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpace.setBitDepth(self: PyOpenColorIO.ColorSpace, bitDepth: PyOpenColorIO.BitDepth) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpace.setDescription(self: PyOpenColorIO.ColorSpace, description: str) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpace.setEncoding(self: PyOpenColorIO.ColorSpace, encoding: str) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpace.setEqualityGroup(self: PyOpenColorIO.ColorSpace, equalityGroup: str) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpace.setFamily(self: PyOpenColorIO.ColorSpace, family: str) -> None
:module: PyOpenColorIO
Set the family, for use in user interfaces (optional)
.. py:method:: ColorSpace.setIsData(self: PyOpenColorIO.ColorSpace, isData: bool) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpace.setName(self: PyOpenColorIO.ColorSpace, name: str) -> None
:module: PyOpenColorIO
If the name is already an alias, that alias is removed.
.. py:method:: ColorSpace.setTransform(self: PyOpenColorIO.ColorSpace, transform: PyOpenColorIO.Transform, direction: PyOpenColorIO.ColorSpaceDirection) -> None
:module: PyOpenColorIO
Specify the transform for the appropriate direction. Setting the transform to null will clear it.
.. py:class:: ColorSpaceCategoryIterator
:module: PyOpenColorIO.ColorSpace
.. py:method:: ColorSpaceCategoryIterator.__getitem__(self: PyOpenColorIO.ColorSpace.ColorSpaceCategoryIterator, arg0: int) -> str
:module: PyOpenColorIO.ColorSpace
.. py:method:: ColorSpaceCategoryIterator.__iter__(self: PyOpenColorIO.ColorSpace.ColorSpaceCategoryIterator) -> PyOpenColorIO.ColorSpace.ColorSpaceCategoryIterator
:module: PyOpenColorIO.ColorSpace
.. py:method:: ColorSpaceCategoryIterator.__len__(self: PyOpenColorIO.ColorSpace.ColorSpaceCategoryIterator) -> int
:module: PyOpenColorIO.ColorSpace
.. 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
@@ -1,30 +0,0 @@
..
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:: ColorSpaceDirection
:module: PyOpenColorIO
Members:
COLORSPACE_DIR_TO_REFERENCE :
COLORSPACE_DIR_FROM_REFERENCE :
.. py:method:: name() -> str
:property:
.. py:attribute:: ColorSpaceDirection.COLORSPACE_DIR_FROM_REFERENCE
:module: PyOpenColorIO
:value: <ColorSpaceDirection.COLORSPACE_DIR_FROM_REFERENCE: 1>
.. py:attribute:: ColorSpaceDirection.COLORSPACE_DIR_TO_REFERENCE
:module: PyOpenColorIO
:value: <ColorSpaceDirection.COLORSPACE_DIR_TO_REFERENCE: 0>
.. py:property:: ColorSpaceDirection.value
:module: PyOpenColorIO
@@ -1,12 +0,0 @@
..
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:function:: AddColorSpace(config: PyOpenColorIO.Config, name: str, transformFilePath: str, categories: str = '', connectionColorSpaceName: str) -> None
:module: PyOpenColorIO.ColorSpaceHelpers
Add a new color space to the config instance. The output of the userTransform must be in the specified connectionColorSpace.
Note: If the config does not already use categories, we do not add them since that would make a big change to how existing color spaces show up in menus.
@@ -1,92 +0,0 @@
..
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:: ColorSpaceMenuHelper
:module: PyOpenColorIO
Helper class to create menus for the content of a config.
Menu can list color spaces, roles, named transforms. Each entry has a name, a UI name, a description, and a family. Family can also be accessed as hierarchy levels; levels are created by splitting the family using the 'family separator'. Hierarchy levels are meant to be used as sub-menus.
The UI name is what is intended to be put in application menus seen by the end-user. However, please note that the UI name is not guaranteed to remain stable between releases and so if applications need to save something it should be the 'name' rather than the 'UI name'. Currently, the only difference between the 'name' and 'UI name' is for roles.
The overall ordering of items is: color spaces, named transforms, roles, and additional color spaces. The display color spaces will either come before or after the other color spaces based on where that block of spaces appears in the config. The order of items returned by the menu helper preserves the order of items in the config itself for each type of elements, thus preserving the intent of the config author. For example, if you call getName at idx and idx+1, the name returned at idx+1 will be from farther down in the config than the one at idx as long as both are of the same type. (An application may ask for only the items in one of those blocks if it wants to handle them separately.) If the application makes use of hierarchical menus, that will obviously impose a different order on what the user sees in the menu. Though even with hierarchical menus, applications should try to preserve config ordering (which is equivalent to index ordering) for items within the same sub-menu.
.. py:method:: ColorSpaceMenuHelper.__init__(self: PyOpenColorIO.ColorSpaceMenuHelper, parameters: PyOpenColorIO.ColorSpaceMenuParameters) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuHelper.getDescription(self: PyOpenColorIO.ColorSpaceMenuHelper, index: int) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuHelper.getFamily(self: PyOpenColorIO.ColorSpaceMenuHelper, index: int) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuHelper.getHierarchyLevels(self: PyOpenColorIO.ColorSpaceMenuHelper, index: int) -> PyOpenColorIO.ColorSpaceMenuHelper.ColorSpaceLevelIterator
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuHelper.getIndexFromName(self: PyOpenColorIO.ColorSpaceMenuHelper, name: str) -> int
:module: PyOpenColorIO
Get the index of the element of a given name. Return (size_t)-1 name if NULL or empty, or if no element with that name is found.
.. py:method:: ColorSpaceMenuHelper.getIndexFromUIName(self: PyOpenColorIO.ColorSpaceMenuHelper, name: str) -> int
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuHelper.getName(self: PyOpenColorIO.ColorSpaceMenuHelper, index: int) -> str
:module: PyOpenColorIO
Get the color space (or role) name used in the config for this menu item. Will be empty if the index is out of range.
.. py:method:: ColorSpaceMenuHelper.getNameFromUIName(self: PyOpenColorIO.ColorSpaceMenuHelper, name: str) -> str
:module: PyOpenColorIO
Get the color space name from the UI name.
.. py:method:: ColorSpaceMenuHelper.getNumColorSpaces(self: PyOpenColorIO.ColorSpaceMenuHelper) -> int
:module: PyOpenColorIO
Access to the color spaces (or roles).
.. py:method:: ColorSpaceMenuHelper.getUIName(self: PyOpenColorIO.ColorSpaceMenuHelper, index: int) -> str
:module: PyOpenColorIO
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.
.. py:method:: ColorSpaceMenuHelper.getUINameFromName(self: PyOpenColorIO.ColorSpaceMenuHelper, name: str) -> str
:module: PyOpenColorIO
Get the color space UI name from the name.
.. py:class:: ColorSpaceLevelIterator
:module: PyOpenColorIO.ColorSpaceMenuHelper
.. py:method:: ColorSpaceLevelIterator.__getitem__(self: PyOpenColorIO.ColorSpaceMenuHelper.ColorSpaceLevelIterator, arg0: int) -> str
:module: PyOpenColorIO.ColorSpaceMenuHelper
.. py:method:: ColorSpaceLevelIterator.__iter__(self: PyOpenColorIO.ColorSpaceMenuHelper.ColorSpaceLevelIterator) -> PyOpenColorIO.ColorSpaceMenuHelper.ColorSpaceLevelIterator
:module: PyOpenColorIO.ColorSpaceMenuHelper
.. py:method:: ColorSpaceLevelIterator.__len__(self: PyOpenColorIO.ColorSpaceMenuHelper.ColorSpaceLevelIterator) -> int
:module: PyOpenColorIO.ColorSpaceMenuHelper
.. py:method:: ColorSpaceLevelIterator.__next__(self: PyOpenColorIO.ColorSpaceMenuHelper.ColorSpaceLevelIterator) -> str
:module: PyOpenColorIO.ColorSpaceMenuHelper
@@ -1,166 +0,0 @@
..
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:: ColorSpaceMenuParameters
:module: PyOpenColorIO
Parameters controlling which color spaces appear in menus.
The :ref:`ColorSpaceMenuHelper` class is intended to be used by applications to get the list of items to show in color space menus.
The :ref:`ColorSpaceMenuParameters` class is used to configure the behavior as needed for any given menu. Here is the algorithm used to produce a list of "items" (or strings) that will appear in a menu:
1) Use setRole to identify a role that controls a given menu. If the config has this role, then only that color space is returned. The name is set to the color space name, the UIName is presented as "<role name> (<color space name>)". It may be useful for the application to then grey-out the menu or otherwise indicate to the user that the value for this menu is not user selectable since it was pre-determined by the config. If the config does not have that role, the algorithm continues to the remaining steps.
2) The IncludeColorSpaces, SearchReferenceSpaceType, and IncludeNamedTransforms parameters are used to identify a set of items from the config that are potential candidates for use in the menu, as follows:
- IncludeColorSpaces: Set to true to include color spaces in the menu.
- SearchReferenceSpaceType: Use this to control whether the menu should include all color spaces, only display color spaces, or only non-display color spaces.
- IncludeNamedTransforms: Set to true to include named transforms in the menu.
3) The set of items from step 2 is then filtered in step 3 using the following parameters:
- AppCategories: A list of strings specified by the application based on the purpose of the menu. For example, if the menu is used to select a color space for importing an image, the application might specify the 'file-io' category, whereas if it is to select a working color space, it might specify the 'working-space' category. Application developers should document what strings they are using for each menu so that config authors know what categories to use in their configs. Alternatively, an application could let advanced users customize the string to use for a given menu in the application.
- Encodings: A list of strings used to further refine the items selected from the AppCategories. For example, an application might specify 'working-space' as the category and then specify 'scene-linear' as the encoding to only use items that have both of those properties (e.g., only select scene-linear working color spaces).
- UserCategories: A list of strings specified by the end-user of the application. OCIO will check for these strings in an environment variable, or they may be passed in from the application.
Basically the intent is for the filtering to return the intersection of the app categories, encoding, and user categories. However, some fall-backs are in place to ensure that the filtering does not remove all menu items. Here is the detailed description:
3a) The items from step 2 are filtered to generate a list of appItems containing only the ones that contain at least one of the AppCategories strings in their "categories" property and one of the encodings in their "encoding" property. If this list is empty, an attempt is made to generate a non-empty appItems list by only filtering by AppCategories. If that is empty, an attempt is made to only filter by Encodings.
3b) The items from step 2 are filtered to generate a list of userItems containing only the ones that have at least one of the UserCategories strings in their "categories" property.
3c) If both appItems and userItems are non-empty, a list of resultItems will be generated as the intersection of those two lists.
3d) If the resultItems list is empty, the appList will be expanded by only filtering by AppCategories and not encodings. The resultItems will be formed again as the intersection of the appItems and userItems.
3e) If the resultItems is still empty, it will be set to just the appItems from step 3a.
3f) If the resultItems is still empty, it will be set to just the userItems.
3g) If the resultItems is still empty, the items are not filtered and all items from step 2 are returned. The rationale is that if step 2 has produced any items, it is not acceptable for step 3 to remove all of them. An application usually expects to have a non-zero number of items to display in the menu. However, if step 2 produces no items (e.g. the application requests only named transforms and the config has no named transform), then no items will be returned.
4) If IncludeRoles is true, the items from step 3 are extended by including an item for each role. The name is set to the role name, the UIName is presented as "<role name> (<color
space name>)", and the family is set to "Roles".
5) If AddColorSpace has been used to add any additional items, these are appended to the final list.
.. py:method:: ColorSpaceMenuParameters.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.ColorSpaceMenuParameters, config: PyOpenColorIO.Config) -> None
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.addColorSpace(self: PyOpenColorIO.ColorSpaceMenuParameters, colorSpace: str) -> None
:module: PyOpenColorIO
Add an additional color space (or named transform) to the menu.
Note that an additional color space could be:
- an inactive color space,
- an active color space not having at least one of the selected categories,
- a newly created color space. Will throw when creating the menu if color space is not part of the config. Nothing is done if it is already part of the menu. It's ok to call this multiple times with the same color space, it will only be added to the menu once. If a role name is passed in, the name in the menu will be the color space name the role points to.
.. py:method:: ColorSpaceMenuParameters.clearAddedColorSpaces(self: PyOpenColorIO.ColorSpaceMenuParameters) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.getAddedColorSpaces(self: PyOpenColorIO.ColorSpaceMenuParameters) -> PyOpenColorIO.ColorSpaceMenuParameters.AddedColorSpaceIterator
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.getAppCategories(self: PyOpenColorIO.ColorSpaceMenuParameters) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.getConfig(self: PyOpenColorIO.ColorSpaceMenuParameters) -> PyOpenColorIO.Config
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.getEncodings(self: PyOpenColorIO.ColorSpaceMenuParameters) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.getIncludeColorSpaces(self: PyOpenColorIO.ColorSpaceMenuParameters) -> bool
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.getIncludeNamedTransforms(self: PyOpenColorIO.ColorSpaceMenuParameters) -> bool
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.getIncludeRoles(self: PyOpenColorIO.ColorSpaceMenuParameters) -> bool
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.getRole(self: PyOpenColorIO.ColorSpaceMenuParameters) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.getSearchReferenceSpaceType(self: PyOpenColorIO.ColorSpaceMenuParameters) -> PyOpenColorIO.SearchReferenceSpaceType
:module: PyOpenColorIO
Can be used to restrict the search using the ReferenceSpaceType of the color spaces. It has no effect on roles and named transforms.
.. py:method:: ColorSpaceMenuParameters.getUserCategories(self: PyOpenColorIO.ColorSpaceMenuParameters) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.setAppCategories(self: PyOpenColorIO.ColorSpaceMenuParameters, appCategories: str) -> None
:module: PyOpenColorIO
App categories is a comma separated list of categories. If appCategories is not NULL and not empty, all color spaces that have one of the categories will be part of the menu.
.. py:method:: ColorSpaceMenuParameters.setConfig(self: PyOpenColorIO.ColorSpaceMenuParameters, config: PyOpenColorIO.Config) -> None
:module: PyOpenColorIO
:ref:`Config` is required to be able to create a :ref:`ColorSpaceMenuHelper`.
.. py:method:: ColorSpaceMenuParameters.setEncodings(self: PyOpenColorIO.ColorSpaceMenuParameters, encodings: str) -> None
:module: PyOpenColorIO
Encodings is a comma separated list of encodings. When not empty, is retricting the search to color spaces that are using one of the encodings.
.. py:method:: ColorSpaceMenuParameters.setIncludeColorSpaces(self: PyOpenColorIO.ColorSpaceMenuParameters, includeColorSpaces: bool = True) -> None
:module: PyOpenColorIO
Include all color spaces (or not) to :ref:`ColorSpaceMenuHelper`. Default is to include color spaces.
.. py:method:: ColorSpaceMenuParameters.setIncludeNamedTransforms(self: PyOpenColorIO.ColorSpaceMenuParameters, includeNamedTransforms: bool = True) -> None
:module: PyOpenColorIO
Include all named transforms (or not) to :ref:`ColorSpaceMenuHelper`. Default is not to include named transforms.
.. py:method:: ColorSpaceMenuParameters.setIncludeRoles(self: PyOpenColorIO.ColorSpaceMenuParameters, includeRoles: bool = True) -> None
:module: PyOpenColorIO
Include all roles (or not) to :ref:`ColorSpaceMenuHelper`. Default is not to include roles. Roles are added after color spaces with an single hierarchy level named "Roles".
.. py:method:: ColorSpaceMenuParameters.setRole(self: PyOpenColorIO.ColorSpaceMenuParameters, role: str) -> None
:module: PyOpenColorIO
If role is a valid role, other parameters are ignored and menu will contain only that role.
.. py:method:: ColorSpaceMenuParameters.setSearchReferenceSpaceType(self: PyOpenColorIO.ColorSpaceMenuParameters, searchReferenceSpaceType: PyOpenColorIO.SearchReferenceSpaceType) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpaceMenuParameters.setUserCategories(self: PyOpenColorIO.ColorSpaceMenuParameters, categories: str) -> None
:module: PyOpenColorIO
User categories is a comma separated list of categories. If OCIO_USER_CATEGORIES_ENVVAR env. variable is defined and not empty, this parameter is ignored and the value of the env. variable is used for user categories.
@@ -1,159 +0,0 @@
..
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:: ColorSpaceSet
:module: PyOpenColorIO
The *:ref:`ColorSpaceSet`* is a set of color spaces (i.e. no color space duplication) which could be the result of :ref:`Config::getColorSpaces` or built from scratch.
.. note::
The color spaces are decoupled from the config ones, i.e., any changes to the set itself or to its color spaces do not affect the original color spaces from the configuration. If needed, use :ref:`Config::addColorSpace` to update the configuration.
.. py:method:: ColorSpaceSet.__and__(self: PyOpenColorIO.ColorSpaceSet, arg0: PyOpenColorIO.ColorSpaceSet) -> PyOpenColorIO.ColorSpaceSet
:module: PyOpenColorIO
Perform the intersection of two sets.
.. note::
This function provides operations on two color space sets where the result contains copied color spaces and no duplicates.
:param lcss:
:param rcss:
.. py:method:: ColorSpaceSet.__eq__(self: PyOpenColorIO.ColorSpaceSet, arg0: PyOpenColorIO.ColorSpaceSet) -> bool
:module: PyOpenColorIO
Return true if the two sets are equal.
.. note::
The comparison is done on the color space names (not a deep comparison).
.. py:method:: ColorSpaceSet.__init__(self: PyOpenColorIO.ColorSpaceSet) -> None
:module: PyOpenColorIO
Create an empty set of color spaces.
.. py:method:: ColorSpaceSet.__ne__(self: PyOpenColorIO.ColorSpaceSet, arg0: PyOpenColorIO.ColorSpaceSet) -> bool
:module: PyOpenColorIO
Return true if the two sets are different.
.. py:method:: ColorSpaceSet.__or__(self: PyOpenColorIO.ColorSpaceSet, arg0: PyOpenColorIO.ColorSpaceSet) -> PyOpenColorIO.ColorSpaceSet
:module: PyOpenColorIO
Perform the union of two sets.
.. note::
This function provides operations on two color space sets where the result contains copied color spaces and no duplicates.
:param lcss:
:param rcss:
.. py:method:: ColorSpaceSet.__sub__(self: PyOpenColorIO.ColorSpaceSet, arg0: PyOpenColorIO.ColorSpaceSet) -> PyOpenColorIO.ColorSpaceSet
:module: PyOpenColorIO
Perform the difference of two sets.
.. note::
This function provides operations on two color space sets where the result contains copied color spaces and no duplicates.
:param lcss:
:param rcss:
.. py:method:: ColorSpaceSet.addColorSpace(self: PyOpenColorIO.ColorSpaceSet, colorSpace: PyOpenColorIO.ColorSpace) -> None
:module: PyOpenColorIO
Add color space(s).
.. note::
If another color space is already registered with the same name, this will overwrite it. This stores a copy of the specified color space(s). Throws if one of the aliases is already assigned as a name or alias to an existing color space.
.. py:method:: ColorSpaceSet.addColorSpaces(self: PyOpenColorIO.ColorSpaceSet, colorSpaces: PyOpenColorIO.ColorSpaceSet) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpaceSet.clearColorSpaces(self: PyOpenColorIO.ColorSpaceSet) -> None
:module: PyOpenColorIO
Clear all color spaces.
.. py:method:: ColorSpaceSet.getColorSpace(self: PyOpenColorIO.ColorSpaceSet, name: str) -> PyOpenColorIO.ColorSpace
:module: PyOpenColorIO
.. note::
Only accepts color space names (i.e. no role name).
Will return null if the name is not found.
.. py:method:: ColorSpaceSet.getColorSpaceNames(self: PyOpenColorIO.ColorSpaceSet) -> PyOpenColorIO.ColorSpaceSet.ColorSpaceNameIterator
:module: PyOpenColorIO
.. py:method:: ColorSpaceSet.getColorSpaces(self: PyOpenColorIO.ColorSpaceSet) -> PyOpenColorIO.ColorSpaceSet.ColorSpaceIterator
:module: PyOpenColorIO
.. py:method:: ColorSpaceSet.removeColorSpace(self: PyOpenColorIO.ColorSpaceSet, colorSpace: str) -> None
:module: PyOpenColorIO
Remove color space(s) using color space names (i.e. no role name).
.. note::
The removal of a missing color space does nothing.
.. py:method:: ColorSpaceSet.removeColorSpaces(self: PyOpenColorIO.ColorSpaceSet, colorSpaces: PyOpenColorIO.ColorSpaceSet) -> None
:module: PyOpenColorIO
.. py:class:: ColorSpaceNameIterator
:module: PyOpenColorIO.ColorSpaceSet
.. py:method:: ColorSpaceNameIterator.__getitem__(self: PyOpenColorIO.ColorSpaceSet.ColorSpaceNameIterator, arg0: int) -> str
:module: PyOpenColorIO.ColorSpaceSet
.. py:method:: ColorSpaceNameIterator.__iter__(self: PyOpenColorIO.ColorSpaceSet.ColorSpaceNameIterator) -> PyOpenColorIO.ColorSpaceSet.ColorSpaceNameIterator
:module: PyOpenColorIO.ColorSpaceSet
.. py:method:: ColorSpaceNameIterator.__len__(self: PyOpenColorIO.ColorSpaceSet.ColorSpaceNameIterator) -> int
:module: PyOpenColorIO.ColorSpaceSet
.. py:method:: ColorSpaceNameIterator.__next__(self: PyOpenColorIO.ColorSpaceSet.ColorSpaceNameIterator) -> str
:module: PyOpenColorIO.ColorSpaceSet
.. py:class:: ColorSpaceIterator
:module: PyOpenColorIO.ColorSpaceSet
.. py:method:: ColorSpaceIterator.__getitem__(self: PyOpenColorIO.ColorSpaceSet.ColorSpaceIterator, arg0: int) -> PyOpenColorIO.ColorSpace
:module: PyOpenColorIO.ColorSpaceSet
.. py:method:: ColorSpaceIterator.__iter__(self: PyOpenColorIO.ColorSpaceSet.ColorSpaceIterator) -> PyOpenColorIO.ColorSpaceSet.ColorSpaceIterator
:module: PyOpenColorIO.ColorSpaceSet
.. py:method:: ColorSpaceIterator.__len__(self: PyOpenColorIO.ColorSpaceSet.ColorSpaceIterator) -> int
:module: PyOpenColorIO.ColorSpaceSet
.. py:method:: ColorSpaceIterator.__next__(self: PyOpenColorIO.ColorSpaceSet.ColorSpaceIterator) -> PyOpenColorIO.ColorSpace
:module: PyOpenColorIO.ColorSpaceSet
@@ -1,64 +0,0 @@
..
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:: ColorSpaceTransform
:module: PyOpenColorIO
.. py:method:: ColorSpaceTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.ColorSpaceTransform) -> None
2. __init__(self: PyOpenColorIO.ColorSpaceTransform, src: str = '', dst: str = '', direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>, dataBypass: bool = True) -> None
.. py:method:: ColorSpaceTransform.getDataBypass(self: PyOpenColorIO.ColorSpaceTransform) -> bool
:module: PyOpenColorIO
Data color spaces do not get processed when true (which is the default).
.. py:method:: ColorSpaceTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: ColorSpaceTransform.getDst(self: PyOpenColorIO.ColorSpaceTransform) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpaceTransform.getSrc(self: PyOpenColorIO.ColorSpaceTransform) -> str
:module: PyOpenColorIO
.. py:method:: ColorSpaceTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: ColorSpaceTransform.setDataBypass(self: PyOpenColorIO.ColorSpaceTransform, dataBypass: bool) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpaceTransform.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:: ColorSpaceTransform.setDst(self: PyOpenColorIO.ColorSpaceTransform, dst: str) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpaceTransform.setSrc(self: PyOpenColorIO.ColorSpaceTransform, src: str) -> None
:module: PyOpenColorIO
.. py:method:: ColorSpaceTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
@@ -1,37 +0,0 @@
..
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:: ColorSpaceVisibility
:module: PyOpenColorIO
Members:
COLORSPACE_ACTIVE :
COLORSPACE_INACTIVE :
COLORSPACE_ALL :
.. py:method:: name() -> str
:property:
.. py:attribute:: ColorSpaceVisibility.COLORSPACE_ACTIVE
:module: PyOpenColorIO
:value: <ColorSpaceVisibility.COLORSPACE_ACTIVE: 0>
.. py:attribute:: ColorSpaceVisibility.COLORSPACE_ALL
:module: PyOpenColorIO
:value: <ColorSpaceVisibility.COLORSPACE_ALL: 2>
.. py:attribute:: ColorSpaceVisibility.COLORSPACE_INACTIVE
:module: PyOpenColorIO
:value: <ColorSpaceVisibility.COLORSPACE_INACTIVE: 1>
.. py:property:: ColorSpaceVisibility.value
:module: PyOpenColorIO
@@ -1,8 +0,0 @@
..
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:function:: CombineTransformDirections(direction1: PyOpenColorIO.TransformDirection, direction2: PyOpenColorIO.TransformDirection) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
File diff suppressed because it is too large Load Diff
@@ -1,191 +0,0 @@
..
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:: Context
:module: PyOpenColorIO
:ref:`Context`
A context defines some overrides to a :ref:`Config`. For example, it can override the search path or change the value of a context variable.
.. note::
Only some :ref:`Config::getProcessor` methods accept a custom context; otherwise, the default context instance is used (see Config::getCurrentContext).
:ref:`Context` Variables
The context variables allow changes at runtime using environment variables. For example, a color space name (such as src & dst for the :ref:`ColorSpaceTransform`) or a file name (such as LUT file name for the :ref:`FileTransform`) could be defined by context variables. The color transformation is then customized based on some environment variables.
In a config the context variables support three syntaxes (i.e. ${VAR}, $VAR and VAR%) and the parsing starts from longest to shortest. So, the resolve works like '$TEST_$TESTING_$TE' expands in this order '2 1 3'.
:ref:`Config` authors are recommended to include the "environment" section in their configs. This improves performance as well as making the config more readable. When present, this section must declare all context variables used in the config. It may also provide a default value, in case the variable is not present in the user's environment.
A context variable may only be used in the following places:
- the `:ref:`ColorSpaceTransform`` to define the source and the destination color space names,
- the `:ref:`FileTransform`` to define the source file name (e.g. a LUT file name),
- the search_path,
- the cccid of the `:ref:`FileTransform`` to only extract one specific transform from the CDL & CCC files.
Some specific restrictions are worth calling out:
- they cannot be used as either the name or value of a role,
- the context variable characters $ and % are prohibited in a color space name.
.. py:method:: Context.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.Context) -> None
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.addSearchPath(self: PyOpenColorIO.Context, path: str) -> None
:module: PyOpenColorIO
.. py:method:: Context.clearSearchPaths(self: PyOpenColorIO.Context) -> None
:module: PyOpenColorIO
.. py:method:: Context.clearStringVars(self: PyOpenColorIO.Context) -> None
:module: PyOpenColorIO
.. py:method:: Context.getCacheID(self: PyOpenColorIO.Context) -> str
:module: PyOpenColorIO
.. py:method:: Context.getEnvironmentMode(self: PyOpenColorIO.Context) -> PyOpenColorIO.EnvironmentMode
:module: PyOpenColorIO
.. py:method:: Context.getSearchPath(self: PyOpenColorIO.Context) -> str
:module: PyOpenColorIO
.. py:method:: Context.getSearchPaths(self: PyOpenColorIO.Context) -> PyOpenColorIO.Context.SearchPathIterator
:module: PyOpenColorIO
.. py:method:: Context.getStringVars(self: PyOpenColorIO.Context) -> PyOpenColorIO.Context.StringVarIterator
:module: PyOpenColorIO
.. py:method:: Context.getWorkingDir(self: PyOpenColorIO.Context) -> str
:module: PyOpenColorIO
.. py:method:: Context.loadEnvironment(self: PyOpenColorIO.Context) -> None
:module: PyOpenColorIO
Seed all string vars with the current environment.
.. py:method:: Context.resolveFileLocation(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. resolveFileLocation(self: PyOpenColorIO.Context, filename: str) -> str
Build the resolved and expanded filepath using the search_path when needed, and check if the filepath exists. If it cannot be resolved or found, an exception will be thrown. The method argument is directly from the config file so it can be an absolute or relative file path or a file name.
.. note::
The filepath existence check could add a performance hit.
.. note::
The context variable resolution is performed using :cpp:func:`resolveStringVar`.
2. resolveFileLocation(self: PyOpenColorIO.Context, filename: str, usedContextVars: PyOpenColorIO.Context) -> str
Build the resolved and expanded filepath and return all the context variables used to resolve the filename (empty if no context variables were used).
.. py:method:: Context.resolveStringVar(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. resolveStringVar(self: PyOpenColorIO.Context, string: str) -> str
Resolve all the context variables from the string. It could be color space names or file names. Note that it recursively applies the context variable resolution. Returns the string unchanged if it does not contain any context variable.
2. resolveStringVar(self: PyOpenColorIO.Context, string: str, usedContextVars: PyOpenColorIO.Context) -> str
Resolve all the context variables from the string and return all the context variables used to resolve the string (empty if no context variables were used).
.. py:method:: Context.setEnvironmentMode(self: PyOpenColorIO.Context, mode: PyOpenColorIO.EnvironmentMode) -> None
:module: PyOpenColorIO
.. py:method:: Context.setSearchPath(self: PyOpenColorIO.Context, path: str) -> None
:module: PyOpenColorIO
.. py:method:: Context.setWorkingDir(self: PyOpenColorIO.Context, dirName: str) -> None
:module: PyOpenColorIO
.. py:class:: StringVarNameIterator
:module: PyOpenColorIO.Context
.. py:method:: StringVarNameIterator.__getitem__(self: PyOpenColorIO.Context.StringVarNameIterator, arg0: int) -> str
:module: PyOpenColorIO.Context
.. py:method:: StringVarNameIterator.__iter__(self: PyOpenColorIO.Context.StringVarNameIterator) -> PyOpenColorIO.Context.StringVarNameIterator
:module: PyOpenColorIO.Context
.. py:method:: StringVarNameIterator.__len__(self: PyOpenColorIO.Context.StringVarNameIterator) -> int
:module: PyOpenColorIO.Context
.. py:method:: StringVarNameIterator.__next__(self: PyOpenColorIO.Context.StringVarNameIterator) -> str
:module: PyOpenColorIO.Context
.. py:class:: StringVarIterator
:module: PyOpenColorIO.Context
.. py:method:: StringVarIterator.__getitem__(self: PyOpenColorIO.Context.StringVarIterator, arg0: int) -> tuple
:module: PyOpenColorIO.Context
.. py:method:: StringVarIterator.__iter__(self: PyOpenColorIO.Context.StringVarIterator) -> PyOpenColorIO.Context.StringVarIterator
:module: PyOpenColorIO.Context
.. py:method:: StringVarIterator.__len__(self: PyOpenColorIO.Context.StringVarIterator) -> int
:module: PyOpenColorIO.Context
.. py:method:: StringVarIterator.__next__(self: PyOpenColorIO.Context.StringVarIterator) -> tuple
:module: PyOpenColorIO.Context
.. py:class:: SearchPathIterator
:module: PyOpenColorIO.Context
.. py:method:: SearchPathIterator.__getitem__(self: PyOpenColorIO.Context.SearchPathIterator, arg0: int) -> str
:module: PyOpenColorIO.Context
.. py:method:: SearchPathIterator.__iter__(self: PyOpenColorIO.Context.SearchPathIterator) -> PyOpenColorIO.Context.SearchPathIterator
:module: PyOpenColorIO.Context
.. py:method:: SearchPathIterator.__len__(self: PyOpenColorIO.Context.SearchPathIterator) -> int
:module: PyOpenColorIO.Context
.. py:method:: SearchPathIterator.__next__(self: PyOpenColorIO.Context.SearchPathIterator) -> str
:module: PyOpenColorIO.Context
@@ -1,182 +0,0 @@
..
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:: CPUProcessor
:module: PyOpenColorIO
.. py:method:: CPUProcessor.__init__(*args, **kwargs)
:module: PyOpenColorIO
.. py:method:: CPUProcessor.apply(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. apply(self: PyOpenColorIO.CPUProcessor, imgDesc: PyOpenColorIO.ImageDesc) -> None
Apply to an image with any kind of channel ordering while respecting
the input and output bit-depths. Image values are modified in place.
.. note::
The GIL is released during processing, freeing up Python to execute
other threads concurrently.
.. note::
For large images, ``applyRGB`` or ``applyRGBA`` are preferred for
processing a NumPy array. The Python ``ImageDesc`` implementation
requires copying all values (once) in order to own the underlying
pointer. The dedicated packed ``apply*`` methods utilize
``ImageDesc`` on the C++ side so avoid the copy.
2. apply(self: PyOpenColorIO.CPUProcessor, srcImgDesc: PyOpenColorIO.ImageDesc, dstImgDesc: PyOpenColorIO.ImageDesc) -> None
Apply to an image with any kind of channel ordering while respecting
the input and output bit-depths. Modified srcImgDesc image values are
written to the dstImgDesc image, leaving srcImgDesc unchanged.
.. note::
The GIL is released during processing, freeing up Python to execute
other threads concurrently.
.. note::
For large images, ``applyRGB`` or ``applyRGBA`` are preferred for
processing a NumPy array. The Python ``ImageDesc`` implementation
requires copying all values (once) in order to own the underlying
pointer. The dedicated packed ``apply*`` methods utilize
``ImageDesc`` on the C++ side so avoid the copy.
.. py:method:: CPUProcessor.applyRGB(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. applyRGB(self: PyOpenColorIO.CPUProcessor, data: buffer) -> None
Apply to a packed RGB array adhering to the Python buffer protocol.
This will typically be a NumPy array. Input and output bit-depths are
respected but must match. Any array size or shape is supported as long
as the flattened array size is divisible by 3. Array values are
modified in place.
.. note::
This differs from the C++ implementation which only applies to a
single pixel. This method uses a ``PackedImageDesc`` under the
hood to apply to an entire image at once. The GIL is released
during processing, freeing up Python to execute other threads
concurrently.
2. applyRGB(self: PyOpenColorIO.CPUProcessor, data: List[float]) -> List[float]
Apply to a packed RGB list of float values. Any size is supported as
long as the list length is divisible by 3. A new list with processed
float values is returned, leaving the input list unchanged.
.. note::
This differs from the C++ implementation which only applies to a
single pixel. This method uses a ``PackedImageDesc`` under the
hood to apply to an entire image at once. The GIL is released
during processing, freeing up Python to execute other threads
concurrently.
.. note::
For large images, a NumPy array should be preferred over a list.
List values are copied on input and output, where an array is
modified in place.
.. py:method:: CPUProcessor.applyRGBA(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. applyRGBA(self: PyOpenColorIO.CPUProcessor, data: buffer) -> None
Apply to a packed RGBA array adhering to the Python buffer protocol.
This will typically be a NumPy array. Input and output bit-depths are
respected but must match. Any array size or shape is supported as long
as the flattened array size is divisible by 4. Array values are
modified in place.
.. note::
This differs from the C++ implementation which only applies to a
single pixel. This method uses a ``PackedImageDesc`` under the
hood to apply to an entire image at once. The GIL is released
during processing, freeing up Python to execute other threads
concurrently.
2. applyRGBA(self: PyOpenColorIO.CPUProcessor, data: List[float]) -> List[float]
Apply to a packed RGBA list of float values. Any size is supported as
long as the list length is divisible by 4. A new list with processed
float values is returned, leaving the input list unchanged.
.. note::
This differs from the C++ implementation which only applies to a
single pixel. This method uses a ``PackedImageDesc`` under the
hood to apply to an entire image at once. The GIL is released
during processing, freeing up Python to execute other threads
concurrently.
.. note::
For large images, a NumPy array should be preferred over a list.
List values are copied on input and output, where an array is
modified in place.
.. py:method:: CPUProcessor.getCacheID(self: PyOpenColorIO.CPUProcessor) -> str
:module: PyOpenColorIO
.. py:method:: CPUProcessor.getDynamicProperty(self: PyOpenColorIO.CPUProcessor, type: PyOpenColorIO.DynamicPropertyType) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO
The returned pointer may be used to set the value of any dynamic properties of the requested type. Throws if the requested property is not found. Note that if the processor contains several ops that support the requested property, only one can be dynamic.
.. note::
The dynamic properties in this object are decoupled from the ones in the :ref:`Processor` it was generated from. For each dynamic property in the :ref:`Processor`, there is one in the CPU processor.
.. py:method:: CPUProcessor.getInputBitDepth(self: PyOpenColorIO.CPUProcessor) -> PyOpenColorIO.BitDepth
:module: PyOpenColorIO
Bit-depth of the input pixel buffer.
.. py:method:: CPUProcessor.getOutputBitDepth(self: PyOpenColorIO.CPUProcessor) -> PyOpenColorIO.BitDepth
:module: PyOpenColorIO
Bit-depth of the output pixel buffer.
.. py:method:: CPUProcessor.hasChannelCrosstalk(self: PyOpenColorIO.CPUProcessor) -> bool
:module: PyOpenColorIO
.. py:method:: CPUProcessor.isIdentity(self: PyOpenColorIO.CPUProcessor) -> bool
:module: PyOpenColorIO
Equivalent to isNoOp from the underlying :ref:`Processor`, i.e., it ignores in/out bit-depth differences.
.. py:method:: CPUProcessor.isNoOp(self: PyOpenColorIO.CPUProcessor) -> bool
:module: PyOpenColorIO
The in and out bit-depths must be equal for isNoOp to be true.
@@ -1,28 +0,0 @@
..
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:function:: GetProcessor(config: PyOpenColorIO.Config, context: PyOpenColorIO.Context = None, workingSpaceName: str, displayName: str, viewName: str, channelView: PyOpenColorIO.MatrixTransform = None, direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> PyOpenColorIO.Processor
:module: PyOpenColorIO.DisplayViewHelpers
Get the processor from the working color space to (display, view) pair (forward) or (display, view) pair to working (inverse). The working color space name could be a role name or a color space name. ChannelView can be empty. If not already present, each of these functions adds ExposureContrastTransforms to enable changing exposure, contrast, and gamma after the processor has been created using dynamic properties.
.. py:function:: GetIdentityProcessor(config: PyOpenColorIO.Config) -> PyOpenColorIO.Processor
:module: PyOpenColorIO.DisplayViewHelpers
Get an identity processor containing only the ExposureContrastTransforms.
.. py:function:: AddDisplayView(config: PyOpenColorIO.Config, displayName: str, viewName: str, lookName: str = '', colorSpaceName: str = '', colorSpaceFamily: str = '', colorSpaceDescription: str = '', colorSpaceCategories: str = '', transformFilePath: str, connectionColorSpaceName: str) -> None
:module: PyOpenColorIO.DisplayViewHelpers
Add a new (display, view) pair and the new color space to a configuration instance. The input to the userTransform must be in the specified connectionColorSpace.
.. py:function:: RemoveDisplayView(config: PyOpenColorIO.Config, displayName: str, viewName: str) -> None
:module: PyOpenColorIO.DisplayViewHelpers
Remove a (display, view) pair including the associated color space (only if not used). Note that the view is always removed but the display is only removed if empty.
@@ -1,88 +0,0 @@
..
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:: DisplayViewTransform
:module: PyOpenColorIO
.. py:method:: DisplayViewTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.DisplayViewTransform) -> None
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.getDataBypass(self: PyOpenColorIO.DisplayViewTransform) -> bool
:module: PyOpenColorIO
.. py:method:: DisplayViewTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: DisplayViewTransform.getDisplay(self: PyOpenColorIO.DisplayViewTransform) -> str
:module: PyOpenColorIO
.. py:method:: DisplayViewTransform.getLooksBypass(self: PyOpenColorIO.DisplayViewTransform) -> bool
:module: PyOpenColorIO
.. py:method:: DisplayViewTransform.getSrc(self: PyOpenColorIO.DisplayViewTransform) -> str
:module: PyOpenColorIO
.. py:method:: DisplayViewTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: DisplayViewTransform.getView(self: PyOpenColorIO.DisplayViewTransform) -> str
:module: PyOpenColorIO
.. py:method:: DisplayViewTransform.setDataBypass(self: PyOpenColorIO.DisplayViewTransform, dataBypass: bool) -> None
:module: PyOpenColorIO
Data color spaces do not get processed when true (which is the default).
.. py:method:: DisplayViewTransform.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:: DisplayViewTransform.setDisplay(self: PyOpenColorIO.DisplayViewTransform, display: str) -> None
:module: PyOpenColorIO
Specify which display to use.
.. py:method:: DisplayViewTransform.setLooksBypass(self: PyOpenColorIO.DisplayViewTransform, looksBypass: bool) -> None
:module: PyOpenColorIO
Looks will be bypassed when true (the default is false).
.. py:method:: DisplayViewTransform.setSrc(self: PyOpenColorIO.DisplayViewTransform, src: str) -> None
:module: PyOpenColorIO
Specify the incoming color space.
.. py:method:: DisplayViewTransform.setView(self: PyOpenColorIO.DisplayViewTransform, view: str) -> None
:module: PyOpenColorIO
Specify which view transform to use.
.. py:method:: DisplayViewTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
@@ -1,105 +0,0 @@
..
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:: DynamicProperty
:module: PyOpenColorIO
Allows transform parameter values to be set on-the-fly (after finalization). For example, to modify the exposure in a viewport. Dynamic properties can be accessed from the `:ref:`CPUProcessor`` or `:ref:`GpuShaderCreator`` to change values between processing.
.. code-block:: cpp
OCIO::ConstConfigRcPtr config = OCIO::GetCurrentConfig();
OCIO::ConstProcessorRcPtr processor = config->getProcessor(colorSpace1, colorSpace2);
OCIO::ConstCPUProcessorRcPtr cpuProcessor = processor->getDefaultCPUProcessor();
if (cpuProcessor->hasDynamicProperty(OCIO::DYNAMIC_PROPERTY_EXPOSURE))
{
// Get the in-memory implementation of the dynamic property.
OCIO::DynamicPropertyRcPtr dynProp =
cpuProcessor->getDynamicProperty(OCIO::DYNAMIC_PROPERTY_EXPOSURE);
// Get the interface used to change the double value.
OCIO::DynamicPropertyDoubleRcPtr exposure =
OCIO::DynamicPropertyValue::AsDouble(dynProp);
// Update of the dynamic property instance with the new value.
exposure->setValue(1.1f);
}
if (cpuProcessor->hasDynamicProperty(OCIO::DYNAMIC_PROPERTY_GRADING_PRIMARY))
{
OCIO::DynamicPropertyRcPtr dynProp =
cpuProcessor->getDynamicProperty(OCIO::DYNAMIC_PROPERTY_GRADING_PRIMARY);
OCIO::DynamicPropertyGradingPrimaryRcPtr primaryProp =
OCIO::DynamicPropertyValue::AsGradingPrimary(dynProp);
OCIO::GradingPrimary primary = primaryProp->getValue();
primary.m_saturation += 0.1f;
rgbCurveProp->setValue(primary);
}
if (cpuProcessor->hasDynamicProperty(OCIO::DYNAMIC_PROPERTY_GRADING_RGBCURVE))
{
OCIO::DynamicPropertyRcPtr dynProp =
cpuProcessor->getDynamicProperty(OCIO::DYNAMIC_PROPERTY_GRADING_RGBCURVE);
OCIO::DynamicPropertyGradingRGBCurveRcPtr rgbCurveProp =
OCIO::DynamicPropertyValue::AsGradingRGBCurve(dynProp);
OCIO::ConstGradingRGBCurveRcPtr rgbCurve = rgbCurveProp->getValue()->createEditableCopy();
OCIO::GradingBSplineCurveRcPtr rCurve = rgbCurve->getCurve(OCIO::RGB_RED);
rCurve->getControlPoint(1).m_y += 0.1f;
rgbCurveProp->setValue(rgbCurve);
}
.. py:method:: DynamicProperty.__init__(*args, **kwargs)
:module: PyOpenColorIO
.. py:method:: DynamicProperty.getDouble(self: PyOpenColorIO.DynamicProperty) -> float
:module: PyOpenColorIO
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) -> 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) -> 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) -> 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.
.. py:method:: DynamicProperty.getType(self: PyOpenColorIO.DynamicProperty) -> PyOpenColorIO.DynamicPropertyType
:module: PyOpenColorIO
.. py:method:: DynamicProperty.setDouble(self: PyOpenColorIO.DynamicProperty, val: float) -> None
:module: PyOpenColorIO
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: 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: 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: 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.
@@ -1,60 +0,0 @@
..
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:: DynamicPropertyType
:module: PyOpenColorIO
Types for dynamic properties.
Members:
DYNAMIC_PROPERTY_EXPOSURE : Image exposure value (double floating point value)
DYNAMIC_PROPERTY_CONTRAST : Image contrast value (double floating point value)
DYNAMIC_PROPERTY_GAMMA : Image gamma value (double floating point value)
DYNAMIC_PROPERTY_GRADING_PRIMARY : Used by :ref:`GradingPrimaryTransform`.
DYNAMIC_PROPERTY_GRADING_RGBCURVE : Used by :ref:`GradingRGBCurveTransform`.
DYNAMIC_PROPERTY_GRADING_TONE : Used by :ref:`GradingToneTransform`.
.. py:method:: name() -> str
:property:
.. py:attribute:: DynamicPropertyType.DYNAMIC_PROPERTY_CONTRAST
:module: PyOpenColorIO
:value: <DynamicPropertyType.DYNAMIC_PROPERTY_CONTRAST: 1>
.. py:attribute:: DynamicPropertyType.DYNAMIC_PROPERTY_EXPOSURE
:module: PyOpenColorIO
:value: <DynamicPropertyType.DYNAMIC_PROPERTY_EXPOSURE: 0>
.. py:attribute:: DynamicPropertyType.DYNAMIC_PROPERTY_GAMMA
:module: PyOpenColorIO
:value: <DynamicPropertyType.DYNAMIC_PROPERTY_GAMMA: 2>
.. py:attribute:: DynamicPropertyType.DYNAMIC_PROPERTY_GRADING_PRIMARY
:module: PyOpenColorIO
:value: <DynamicPropertyType.DYNAMIC_PROPERTY_GRADING_PRIMARY: 3>
.. py:attribute:: DynamicPropertyType.DYNAMIC_PROPERTY_GRADING_RGBCURVE
:module: PyOpenColorIO
:value: <DynamicPropertyType.DYNAMIC_PROPERTY_GRADING_RGBCURVE: 4>
.. py:attribute:: DynamicPropertyType.DYNAMIC_PROPERTY_GRADING_TONE
:module: PyOpenColorIO
:value: <DynamicPropertyType.DYNAMIC_PROPERTY_GRADING_TONE: 5>
.. py:property:: DynamicPropertyType.value
:module: PyOpenColorIO
@@ -1,37 +0,0 @@
..
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:: EnvironmentMode
:module: PyOpenColorIO
Members:
ENV_ENVIRONMENT_UNKNOWN :
ENV_ENVIRONMENT_LOAD_PREDEFINED :
ENV_ENVIRONMENT_LOAD_ALL :
.. py:method:: name() -> str
:property:
.. py:attribute:: EnvironmentMode.ENV_ENVIRONMENT_LOAD_ALL
:module: PyOpenColorIO
:value: <EnvironmentMode.ENV_ENVIRONMENT_LOAD_ALL: 2>
.. py:attribute:: EnvironmentMode.ENV_ENVIRONMENT_LOAD_PREDEFINED
:module: PyOpenColorIO
:value: <EnvironmentMode.ENV_ENVIRONMENT_LOAD_PREDEFINED: 1>
.. py:attribute:: EnvironmentMode.ENV_ENVIRONMENT_UNKNOWN
:module: PyOpenColorIO
:value: <EnvironmentMode.ENV_ENVIRONMENT_UNKNOWN: 0>
.. py:property:: EnvironmentMode.value
:module: PyOpenColorIO
@@ -1,8 +0,0 @@
..
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:function:: EnvironmentModeFromString(str: str) -> PyOpenColorIO.EnvironmentMode
:module: PyOpenColorIO
@@ -1,8 +0,0 @@
..
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:function:: EnvironmentModeToString(mode: PyOpenColorIO.EnvironmentMode) -> str
:module: PyOpenColorIO
@@ -1,13 +0,0 @@
..
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:exception:: Exception
:module: PyOpenColorIO
An exception class to throw for errors detected at runtime.
.. warning::
All functions in the :ref:`Config` class can potentially throw this exception.
@@ -1,12 +0,0 @@
..
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:exception:: ExceptionMissingFile
:module: PyOpenColorIO
An exception class for errors detected at runtime.
Thrown when OCIO cannot find a file that is expected to exist. This is provided as a custom type to distinguish cases where one wants to continue looking for missing files, but wants to properly fail for other error conditions.
@@ -1,75 +0,0 @@
..
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:: ExponentTransform
:module: PyOpenColorIO
Represents exponent transform: pow( clamp(color), value ).
.. note::
For configs with version == 1: Negative style is ignored and if the exponent is 1.0, this will not clamp. Otherwise, the input color will be clamped between [0.0, inf]. For configs with version > 1: Negative value handling may be specified via setNegativeStyle.
.. py:method:: ExponentTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.ExponentTransform) -> None
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.equals(self: PyOpenColorIO.ExponentTransform, other: PyOpenColorIO.ExponentTransform) -> bool
:module: PyOpenColorIO
Checks if this exactly equals other.
.. py:method:: ExponentTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: ExponentTransform.getFormatMetadata(self: PyOpenColorIO.ExponentTransform) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO
.. py:method:: ExponentTransform.getNegativeStyle(self: PyOpenColorIO.ExponentTransform) -> PyOpenColorIO.NegativeStyle
:module: PyOpenColorIO
Specifies how negative values are handled. Legal values:
- NEGATIVE_CLAMP -- Clamp negative values (default).
- NEGATIVE_MIRROR -- Positive curve is rotated 180 degrees around the origin to handle negatives.
- NEGATIVE_PASS_THRU -- Negative values are passed through unchanged.
.. py:method:: ExponentTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: ExponentTransform.getValue(self: PyOpenColorIO.ExponentTransform) -> List[float[4]]
:module: PyOpenColorIO
.. py:method:: ExponentTransform.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:: ExponentTransform.setNegativeStyle(self: PyOpenColorIO.ExponentTransform, style: PyOpenColorIO.NegativeStyle) -> None
:module: PyOpenColorIO
.. py:method:: ExponentTransform.setValue(self: PyOpenColorIO.ExponentTransform, value: List[float[4]]) -> None
:module: PyOpenColorIO
.. py:method:: ExponentTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
@@ -1,95 +0,0 @@
..
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:: ExponentWithLinearTransform
:module: PyOpenColorIO
Represents power functions with a linear section in the shadows such as sRGB and L*.
The basic formula is::
pow( (x + offset)/(1 + offset), gamma ) with the breakpoint at offset/(gamma - 1).
Negative values are never clamped.
.. py:method:: ExponentWithLinearTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.ExponentWithLinearTransform) -> None
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.equals(self: PyOpenColorIO.ExponentWithLinearTransform, other: PyOpenColorIO.ExponentWithLinearTransform) -> bool
:module: PyOpenColorIO
Checks if this exactly equals other.
.. py:method:: ExponentWithLinearTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: ExponentWithLinearTransform.getFormatMetadata(self: PyOpenColorIO.ExponentWithLinearTransform) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO
.. py:method:: ExponentWithLinearTransform.getGamma(self: PyOpenColorIO.ExponentWithLinearTransform) -> List[float[4]]
:module: PyOpenColorIO
.. py:method:: ExponentWithLinearTransform.getNegativeStyle(self: PyOpenColorIO.ExponentWithLinearTransform) -> PyOpenColorIO.NegativeStyle
:module: PyOpenColorIO
Specifies how negative values are handled. Legal values:
- NEGATIVE_LINEAR -- Linear segment continues into negatives (default).
- NEGATIVE_MIRROR -- Positive curve is rotated 180 degrees around the origin to handle negatives.
.. py:method:: ExponentWithLinearTransform.getOffset(self: PyOpenColorIO.ExponentWithLinearTransform) -> List[float[4]]
:module: PyOpenColorIO
.. py:method:: ExponentWithLinearTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: ExponentWithLinearTransform.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:: ExponentWithLinearTransform.setGamma(self: PyOpenColorIO.ExponentWithLinearTransform, values: List[float[4]]) -> None
:module: PyOpenColorIO
Set the exponent value for the power function for R, G, B, A.
.. note::
The gamma values must be in the range of [1, 10]. Set the transform direction to inverse to obtain the effect of values less than 1.
.. py:method:: ExponentWithLinearTransform.setNegativeStyle(self: PyOpenColorIO.ExponentWithLinearTransform, style: PyOpenColorIO.NegativeStyle) -> None
:module: PyOpenColorIO
.. py:method:: ExponentWithLinearTransform.setOffset(self: PyOpenColorIO.ExponentWithLinearTransform, values: List[float[4]]) -> None
:module: PyOpenColorIO
Set the offset value for the power function for R, G, B, A.
.. note::
The offset values must be in the range [0, 0.9].
.. py:method:: ExponentWithLinearTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
@@ -1,39 +0,0 @@
..
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:: ExposureContrastStyle
:module: PyOpenColorIO
Enumeration of the :cpp:class:`:ref:`ExposureContrastTransform`` transform algorithms.
Members:
EXPOSURE_CONTRAST_LINEAR : E/C to be applied to a linear space image.
EXPOSURE_CONTRAST_VIDEO : E/C to be applied to a video space image.
EXPOSURE_CONTRAST_LOGARITHMIC : E/C to be applied to a log space image.
.. py:method:: name() -> str
:property:
.. py:attribute:: ExposureContrastStyle.EXPOSURE_CONTRAST_LINEAR
:module: PyOpenColorIO
:value: <ExposureContrastStyle.EXPOSURE_CONTRAST_LINEAR: 0>
.. py:attribute:: ExposureContrastStyle.EXPOSURE_CONTRAST_LOGARITHMIC
:module: PyOpenColorIO
:value: <ExposureContrastStyle.EXPOSURE_CONTRAST_LOGARITHMIC: 2>
.. py:attribute:: ExposureContrastStyle.EXPOSURE_CONTRAST_VIDEO
:module: PyOpenColorIO
:value: <ExposureContrastStyle.EXPOSURE_CONTRAST_VIDEO: 1>
.. py:property:: ExposureContrastStyle.value
:module: PyOpenColorIO
@@ -1,8 +0,0 @@
..
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:function:: ExposureContrastStyleFromString(str: str) -> PyOpenColorIO.ExposureContrastStyle
:module: PyOpenColorIO
@@ -1,8 +0,0 @@
..
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:function:: ExposureContrastStyleToString(style: PyOpenColorIO.ExposureContrastStyle) -> str
:module: PyOpenColorIO
@@ -1,160 +0,0 @@
..
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:: ExposureContrastTransform
:module: PyOpenColorIO
Applies exposure, gamma, and pivoted contrast adjustments. Adjusts the math to be appropriate for linear, logarithmic, or video color spaces.
.. py:method:: ExposureContrastTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.ExposureContrastTransform) -> None
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.equals(self: PyOpenColorIO.ExposureContrastTransform, other: PyOpenColorIO.ExposureContrastTransform) -> bool
:module: PyOpenColorIO
Checks if this exactly equals other.
.. py:method:: ExposureContrastTransform.getContrast(self: PyOpenColorIO.ExposureContrastTransform) -> float
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.getExposure(self: PyOpenColorIO.ExposureContrastTransform) -> float
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.getFormatMetadata(self: PyOpenColorIO.ExposureContrastTransform) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.getGamma(self: PyOpenColorIO.ExposureContrastTransform) -> float
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.getLogExposureStep(self: PyOpenColorIO.ExposureContrastTransform) -> float
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.getLogMidGray(self: PyOpenColorIO.ExposureContrastTransform) -> float
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.getPivot(self: PyOpenColorIO.ExposureContrastTransform) -> float
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.getStyle(self: PyOpenColorIO.ExposureContrastTransform) -> PyOpenColorIO.ExposureContrastStyle
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.isContrastDynamic(self: PyOpenColorIO.ExposureContrastTransform) -> bool
:module: PyOpenColorIO
Contrast can be made dynamic so the value can be changed through the CPU or GPU processor, but if there are several :ref:`ExposureContrastTransform` only one can have a dynamic contrast.
.. py:method:: ExposureContrastTransform.isExposureDynamic(self: PyOpenColorIO.ExposureContrastTransform) -> bool
:module: PyOpenColorIO
Exposure can be made dynamic so the value can be changed through the CPU or GPU processor, but if there are several :ref:`ExposureContrastTransform` only one can have a dynamic exposure.
.. py:method:: ExposureContrastTransform.isGammaDynamic(self: PyOpenColorIO.ExposureContrastTransform) -> bool
:module: PyOpenColorIO
Gamma can be made dynamic so the value can be changed through the CPU or GPU processor, but if there are several :ref:`ExposureContrastTransform` only one can have a dynamic gamma.
.. py:method:: ExposureContrastTransform.makeContrastDynamic(self: PyOpenColorIO.ExposureContrastTransform) -> None
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.makeContrastNonDynamic(self: PyOpenColorIO.ExposureContrastTransform) -> None
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.makeExposureDynamic(self: PyOpenColorIO.ExposureContrastTransform) -> None
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.makeExposureNonDynamic(self: PyOpenColorIO.ExposureContrastTransform) -> None
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.makeGammaDynamic(self: PyOpenColorIO.ExposureContrastTransform) -> None
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.makeGammaNonDynamic(self: PyOpenColorIO.ExposureContrastTransform) -> None
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.setContrast(self: PyOpenColorIO.ExposureContrastTransform, contrast: float) -> None
:module: PyOpenColorIO
Applies a contrast/gamma adjustment around a pivot point. The contrast and gamma are mathematically the same, but two controls are provided to enable the use of separate dynamic parameters. Contrast is usually a scene-referred adjustment that pivots around gray whereas gamma is usually a display-referred adjustment that pivots around white.
.. py:method:: ExposureContrastTransform.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:: ExposureContrastTransform.setExposure(self: PyOpenColorIO.ExposureContrastTransform, exposure: float) -> None
:module: PyOpenColorIO
Applies an exposure adjustment. The value is in units of stops (regardless of style), for example, a value of -1 would be equivalent to reducing the lighting by one half.
.. py:method:: ExposureContrastTransform.setGamma(self: PyOpenColorIO.ExposureContrastTransform, gamma: float) -> None
:module: PyOpenColorIO
.. py:method:: ExposureContrastTransform.setLogExposureStep(self: PyOpenColorIO.ExposureContrastTransform, logExposureStep: float) -> None
:module: PyOpenColorIO
Set the increment needed to move one stop for the log-style algorithm. For example, ACEScct is 0.057, LogC is roughly 0.074, and Cineon is roughly 90/1023 = 0.088. The default value is 0.088.
.. py:method:: ExposureContrastTransform.setLogMidGray(self: PyOpenColorIO.ExposureContrastTransform, logMidGray: float) -> None
:module: PyOpenColorIO
Set the position of 18% gray for use by the log-style algorithm. For example, ACEScct is about 0.41, LogC is about 0.39, and ADX10 is 445/1023 = 0.435. The default value is 0.435.
.. py:method:: ExposureContrastTransform.setPivot(self: PyOpenColorIO.ExposureContrastTransform, pivot: float) -> None
:module: PyOpenColorIO
Set the pivot point around which the contrast and gamma controls will work. Regardless of whether linear/video/log-style is being used, the pivot is always expressed in linear. In other words, a pivot of 0.18 is always mid-gray.
.. py:method:: ExposureContrastTransform.setStyle(self: PyOpenColorIO.ExposureContrastTransform, style: PyOpenColorIO.ExposureContrastStyle) -> None
:module: PyOpenColorIO
Select the algorithm for linear, video or log color spaces.
.. py:method:: ExposureContrastTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
@@ -1,181 +0,0 @@
..
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:: FileRules
:module: PyOpenColorIO
The File Rules are a set of filepath to color space mappings that are evaluated from first to last. The first rule to match is what determines which color space is returned. There are four types of rules available. Each rule type has a name key that may be used by applications to refer to that rule. Name values must be unique i.e. using a case insensitive comparison. The other keys depend on the rule type:
- *Basic Rule*: This is the basic rule type that uses Unix glob style pattern matching and is thus very easy to use. It contains the keys:
- name: Name of the rule
- colorspace: Color space name to be returned.
- pattern: Glob pattern to be used for the main part of the name/path.
- extension: Glob pattern to be used for the file extension. Note that if glob tokens are not used, the extension will be used in a non-case-sensitive way by default.
- *Regex Rule*: This is similar to the basic rule but allows additional capabilities for power-users. It contains the keys:
- name: Name of the rule
- colorspace: Color space name to be returned.
- regex: Regular expression to be evaluated.
- *OCIO v1 style Rule*: This rule allows the use of the OCIO v1 style, where the string is searched for color space names from the config. This rule may occur 0 or 1 times in the list. The position in the list prioritizes it with respect to the other rules. StrictParsing is not used. If no color space is found in the path, the rule will not match and the next rule will be considered. see :ref:`insertPathSearchRule`. It has the key:
- name: Must be "ColorSpaceNamePathSearch".
- *Default Rule*: The file_rules must always end with this rule. If no prior rules match, this rule specifies the color space applications will use. see :ref:`setDefaultRuleColorSpace`. It has the keys:
- name: must be "Default".
- colorspace : Color space name to be returned.
Custom string keys and associated string values may be used to convey app or workflow-specific information, e.g. whether the color space should be left as is or converted into a working space.
Getters and setters are using the rule position, they will throw if the position is not valid. If the rule at the specified position does not implement the requested property getter will return NULL and setter will throw.
When loading a v1 config, a set of :ref:`FileRules` are created with ColorSpaceNamePathSearch followed by the Default rule pointing to the default role. This allows getColorSpaceFromFilepath to emulate OCIO v1 code that used parseColorSpaceFromString with strictparsing set to false.
.. py:method:: FileRules.__init__(self: PyOpenColorIO.FileRules) -> None
:module: PyOpenColorIO
Creates :ref:`FileRules` for a :ref:`Config`. File rules will contain the default rule using the default role. The default rule cannot be removed.
.. py:method:: FileRules.decreaseRulePriority(self: PyOpenColorIO.FileRules, ruleIndex: int) -> None
:module: PyOpenColorIO
Move a rule closer to the end of the list by one position.
.. py:method:: FileRules.getColorSpace(self: PyOpenColorIO.FileRules, ruleIndex: int) -> str
:module: PyOpenColorIO
Set the rule's color space (may also be a role).
.. py:method:: FileRules.getCustomKeyName(self: PyOpenColorIO.FileRules, ruleIndex: int, key: int) -> str
:module: PyOpenColorIO
Get name of key.
.. py:method:: FileRules.getCustomKeyValue(self: PyOpenColorIO.FileRules, ruleIndex: int, key: int) -> str
:module: PyOpenColorIO
Get value for the key.
.. py:method:: FileRules.getExtension(self: PyOpenColorIO.FileRules, ruleIndex: int) -> str
:module: PyOpenColorIO
Setting extension will erase regex.
.. py:method:: FileRules.getIndexForRule(self: PyOpenColorIO.FileRules, ruleName: str) -> int
:module: PyOpenColorIO
Get the index from the rule name.
.. py:method:: FileRules.getName(self: PyOpenColorIO.FileRules, ruleIndex: int) -> str
:module: PyOpenColorIO
Get name of the rule.
.. py:method:: FileRules.getNumCustomKeys(self: PyOpenColorIO.FileRules, ruleIndex: int) -> int
:module: PyOpenColorIO
Get number of key/value pairs.
.. py:method:: FileRules.getNumEntries(self: PyOpenColorIO.FileRules) -> int
:module: PyOpenColorIO
Does include default rule. Result will be at least 1.
.. py:method:: FileRules.getPattern(self: PyOpenColorIO.FileRules, ruleIndex: int) -> str
:module: PyOpenColorIO
Setting pattern will erase regex.
.. py:method:: FileRules.getRegex(self: PyOpenColorIO.FileRules, ruleIndex: int) -> str
:module: PyOpenColorIO
Setting a regex will erase pattern & extension.
.. py:method:: FileRules.increaseRulePriority(self: PyOpenColorIO.FileRules, ruleIndex: int) -> None
:module: PyOpenColorIO
Move a rule closer to the start of the list by one position.
.. py:method:: FileRules.insertPathSearchRule(self: PyOpenColorIO.FileRules, ruleIndex: int) -> None
:module: PyOpenColorIO
Helper function to insert a rule.
Uses Config:parseColorSpaceFromString to search the path for any of the color spaces named in the config (as per OCIO v1).
.. py:method:: FileRules.insertRule(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. insertRule(self: PyOpenColorIO.FileRules, ruleIndex: int, name: str, colorSpace: str, pattern: str, extension: str) -> None
Insert a rule at a given ruleIndex.
Rule currently at ruleIndex will be pushed to index: ruleIndex + 1. Name must be unique.
- "Default" is a reserved name for the default rule. The default rule is automatically added and can't be removed. (see :ref:`FileRules::setDefaultRuleColorSpace` ).
- "ColorSpaceNamePathSearch" is also a reserved name (see :ref:`FileRules::insertPathSearchRule` ).
Will throw if pattern, extension or regex is a null or empty string.
Will throw if ruleIndex is not less than :ref:`FileRules::getNumEntries` .
2. insertRule(self: PyOpenColorIO.FileRules, ruleIndex: int, name: str, colorSpace: str, regex: str) -> None
.. py:method:: FileRules.isDefault(self: PyOpenColorIO.FileRules) -> bool
:module: PyOpenColorIO
Check if there is only the default rule using default role and no custom key. This is the default :ref:`FileRules` state when creating a new config.
.. py:method:: FileRules.removeRule(self: PyOpenColorIO.FileRules, ruleIndex: int) -> None
:module: PyOpenColorIO
.. note::
Default rule can't be removed. Will throw if ruleIndex + 1 is not less than :ref:`FileRules::getNumEntries` .
.. py:method:: FileRules.setColorSpace(self: PyOpenColorIO.FileRules, ruleIndex: int, colorSpace: str) -> None
:module: PyOpenColorIO
.. py:method:: FileRules.setCustomKey(self: PyOpenColorIO.FileRules, ruleIndex: int, key: str, value: str) -> None
:module: PyOpenColorIO
Adds a key/value or replace value if key exists. Setting a NULL or an empty value will erase the key.
.. py:method:: FileRules.setDefaultRuleColorSpace(self: PyOpenColorIO.FileRules, colorSpace: str) -> None
:module: PyOpenColorIO
Helper function to set the color space for the default rule.
.. py:method:: FileRules.setExtension(self: PyOpenColorIO.FileRules, ruleIndex: int, extension: str) -> None
:module: PyOpenColorIO
.. py:method:: FileRules.setPattern(self: PyOpenColorIO.FileRules, ruleIndex: int, pattern: str) -> None
:module: PyOpenColorIO
.. py:method:: FileRules.setRegex(self: PyOpenColorIO.FileRules, ruleIndex: int, regex: str) -> None
:module: PyOpenColorIO
@@ -1,101 +0,0 @@
..
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:: FileTransform
:module: PyOpenColorIO
.. py:method:: FileTransform.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.FileTransform) -> None
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.getCCCId(self: PyOpenColorIO.FileTransform) -> str
:module: PyOpenColorIO
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.
.. py:method:: FileTransform.getCDLStyle(self: PyOpenColorIO.FileTransform) -> PyOpenColorIO.CDLStyle
:module: PyOpenColorIO
.. py:method:: FileTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: FileTransform.getFormats() -> PyOpenColorIO.FileTransform.FormatIterator
:module: PyOpenColorIO
:staticmethod:
.. py:method:: FileTransform.getInterpolation(self: PyOpenColorIO.FileTransform) -> PyOpenColorIO.Interpolation
:module: PyOpenColorIO
The file parsers that care about interpolation (LUTs) will try to make use of the requested interpolation method when loading the file. In these cases, if the requested method could not be used, a warning is logged. If no method is provided, or a method cannot be used, INTERP_DEFAULT is used.
.. py:method:: FileTransform.getSrc(self: PyOpenColorIO.FileTransform) -> str
:module: PyOpenColorIO
.. py:method:: FileTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: FileTransform.setCCCId(self: PyOpenColorIO.FileTransform, cccId: str) -> None
:module: PyOpenColorIO
.. py:method:: FileTransform.setCDLStyle(self: PyOpenColorIO.FileTransform, style: PyOpenColorIO.CDLStyle) -> None
:module: PyOpenColorIO
Can be used with CDL, CC & CCC formats to specify the clamping behavior of the :ref:`CDLTransform`. Default is CDL_NO_CLAMP.
.. py:method:: FileTransform.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:: FileTransform.setInterpolation(self: PyOpenColorIO.FileTransform, interpolation: PyOpenColorIO.Interpolation) -> None
:module: PyOpenColorIO
.. py:method:: FileTransform.setSrc(self: PyOpenColorIO.FileTransform, src: str) -> None
:module: PyOpenColorIO
.. py:method:: FileTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
.. py:class:: FormatIterator
:module: PyOpenColorIO.FileTransform
.. py:method:: FormatIterator.__getitem__(self: PyOpenColorIO.FileTransform.FormatIterator, arg0: int) -> tuple
:module: PyOpenColorIO.FileTransform
.. py:method:: FormatIterator.__iter__(self: PyOpenColorIO.FileTransform.FormatIterator) -> PyOpenColorIO.FileTransform.FormatIterator
:module: PyOpenColorIO.FileTransform
.. py:method:: FormatIterator.__len__(self: PyOpenColorIO.FileTransform.FormatIterator) -> int
:module: PyOpenColorIO.FileTransform
.. py:method:: FormatIterator.__next__(self: PyOpenColorIO.FileTransform.FormatIterator) -> tuple
:module: PyOpenColorIO.FileTransform
@@ -1,109 +0,0 @@
..
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:: FixedFunctionStyle
:module: PyOpenColorIO
Enumeration of the :cpp:class:`:ref:`FixedFunctionTransform`` transform algorithms.
Members:
FIXED_FUNCTION_ACES_RED_MOD_03 : Red modifier (ACES 0.3/0.7)
FIXED_FUNCTION_ACES_RED_MOD_10 : Red modifier (ACES 1.0)
FIXED_FUNCTION_ACES_GLOW_03 : Glow function (ACES 0.3/0.7)
FIXED_FUNCTION_ACES_GLOW_10 : Glow function (ACES 1.0)
FIXED_FUNCTION_ACES_DARK_TO_DIM_10 : Dark to dim surround correction (ACES 1.0)
FIXED_FUNCTION_REC2100_SURROUND : Rec.2100 surround correction (takes one double for the gamma param)
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_ACES_GAMUTMAP_02 : ACES 0.2 Gamut clamping algorithm -- NOT IMPLEMENTED YET.
FIXED_FUNCTION_ACES_GAMUTMAP_07 : ACES 0.7 Gamut clamping algorithm -- NOT IMPLEMENTED YET.
FIXED_FUNCTION_ACES_GAMUT_COMP_13 : ACES 1.3 Parametric Gamut Compression (expects ACEScg values)
.. py:method:: name() -> str
:property:
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_ACES_DARK_TO_DIM_10
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_DARK_TO_DIM_10: 4>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_ACES_GAMUTMAP_02
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_GAMUTMAP_02: 10>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_ACES_GAMUTMAP_07
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_GAMUTMAP_07: 11>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_ACES_GAMUT_COMP_13
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_GAMUT_COMP_13: 12>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_ACES_GLOW_03
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_GLOW_03: 2>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_ACES_GLOW_10
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_GLOW_10: 3>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_ACES_RED_MOD_03
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_RED_MOD_03: 0>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_ACES_RED_MOD_10
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_ACES_RED_MOD_10: 1>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_REC2100_SURROUND
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_REC2100_SURROUND: 5>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_RGB_TO_HSV
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_RGB_TO_HSV: 6>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_XYZ_TO_LUV
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_XYZ_TO_LUV: 9>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_XYZ_TO_uvY
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_XYZ_TO_uvY: 8>
.. py:attribute:: FixedFunctionStyle.FIXED_FUNCTION_XYZ_TO_xyY
:module: PyOpenColorIO
:value: <FixedFunctionStyle.FIXED_FUNCTION_XYZ_TO_xyY: 7>
.. py:property:: FixedFunctionStyle.value
:module: PyOpenColorIO
@@ -1,8 +0,0 @@
..
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:function:: FixedFunctionStyleFromString(str: str) -> PyOpenColorIO.FixedFunctionStyle
:module: PyOpenColorIO
@@ -1,8 +0,0 @@
..
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:function:: FixedFunctionStyleToString(style: PyOpenColorIO.FixedFunctionStyle) -> str
:module: PyOpenColorIO
@@ -1,64 +0,0 @@
..
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:: FixedFunctionTransform
:module: PyOpenColorIO
Provides a set of hard-coded algorithmic building blocks that are needed to accurately implement various common color transformations.
.. py:method:: FixedFunctionTransform.__init__(self: PyOpenColorIO.FixedFunctionTransform, style: PyOpenColorIO.FixedFunctionStyle, params: List[float] = [], direction: PyOpenColorIO.TransformDirection = <TransformDirection.TRANSFORM_DIR_FORWARD: 0>) -> None
:module: PyOpenColorIO
.. py:method:: FixedFunctionTransform.equals(self: PyOpenColorIO.FixedFunctionTransform, other: PyOpenColorIO.FixedFunctionTransform) -> bool
:module: PyOpenColorIO
Checks if this exactly equals other.
.. py:method:: FixedFunctionTransform.getDirection(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
.. py:method:: FixedFunctionTransform.getFormatMetadata(self: PyOpenColorIO.FixedFunctionTransform) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO
.. py:method:: FixedFunctionTransform.getParams(self: PyOpenColorIO.FixedFunctionTransform) -> List[float]
:module: PyOpenColorIO
.. py:method:: FixedFunctionTransform.getStyle(self: PyOpenColorIO.FixedFunctionTransform) -> PyOpenColorIO.FixedFunctionStyle
:module: PyOpenColorIO
.. py:method:: FixedFunctionTransform.getTransformType(self: PyOpenColorIO.Transform) -> PyOpenColorIO.TransformType
:module: PyOpenColorIO
.. py:method:: FixedFunctionTransform.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:: FixedFunctionTransform.setParams(self: PyOpenColorIO.FixedFunctionTransform, params: List[float]) -> None
:module: PyOpenColorIO
Set the parameters (for functions that require them).
.. py:method:: FixedFunctionTransform.setStyle(self: PyOpenColorIO.FixedFunctionTransform, style: PyOpenColorIO.FixedFunctionStyle) -> None
:module: PyOpenColorIO
Select which algorithm to use.
.. py:method:: FixedFunctionTransform.validate(self: PyOpenColorIO.Transform) -> None
:module: PyOpenColorIO
Will throw if data is not valid.
@@ -1,184 +0,0 @@
..
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:: FormatMetadata
:module: PyOpenColorIO
The :ref:`FormatMetadata` class is intended to be a generic container to hold metadata from various file formats.
This class provides a hierarchical metadata container. A metadata object is similar to an element in XML. The top level element is named "ROOT" and can't be renamed. Several transforms have a :ref:`FormatMetadata`. The root element and all of the sub-elements may contain:
- A name string (e.g. "ROOT", "Description"...). Name can't be empty.
- A value string (e.g. "updated viewing LUT"). Value can be empty.
- A list of attributes (name, value) string pairs (e.g. "version", "1.5"). There are helper functions to get and set "id" and "name" attributes. Attribute names are unique.
- And a list of child sub-elements, which are also objects implementing :ref:`FormatMetadata`. There can be several sub-elements with the same name.
.. py:method:: FormatMetadata.__contains__(self: PyOpenColorIO.FormatMetadata, name: str) -> bool
:module: PyOpenColorIO
.. py:method:: FormatMetadata.__getitem__(self: PyOpenColorIO.FormatMetadata, name: str) -> str
:module: PyOpenColorIO
Get the value of a attribute ("" if attribute does not exist).
.. py:method:: FormatMetadata.__init__(*args, **kwargs)
:module: PyOpenColorIO
.. py:method:: FormatMetadata.__iter__(self: PyOpenColorIO.FormatMetadata) -> PyOpenColorIO.FormatMetadata.AttributeNameIterator
:module: PyOpenColorIO
.. py:method:: FormatMetadata.__len__(self: PyOpenColorIO.FormatMetadata) -> int
:module: PyOpenColorIO
.. py:method:: FormatMetadata.__setitem__(self: PyOpenColorIO.FormatMetadata, name: str, value: str) -> None
:module: PyOpenColorIO
Add an attribute with a given name and value. If an attribute with the same name already exists, its value is replaced. Throw if name is NULL or empty.
.. py:method:: FormatMetadata.addChildElement(self: PyOpenColorIO.FormatMetadata, name: str, value: str) -> None
:module: PyOpenColorIO
Add a child element with a given name and value.
Name has to be non-empty. Value may be empty, particularly if this element will have children. Element is added after all existing children. Use getChildElement(getNumChildrenElements()-1) to access the added element.
.. py:method:: FormatMetadata.clear(self: PyOpenColorIO.FormatMetadata) -> None
:module: PyOpenColorIO
Remove all children, all attributes and the value.
.. py:method:: FormatMetadata.getAttributes(self: PyOpenColorIO.FormatMetadata) -> PyOpenColorIO.FormatMetadata.AttributeIterator
:module: PyOpenColorIO
.. py:method:: FormatMetadata.getChildElements(self: PyOpenColorIO.FormatMetadata) -> PyOpenColorIO.FormatMetadata.ChildElementIterator
:module: PyOpenColorIO
.. py:method:: FormatMetadata.getElementName(self: PyOpenColorIO.FormatMetadata) -> str
:module: PyOpenColorIO
.. py:method:: FormatMetadata.getElementValue(self: PyOpenColorIO.FormatMetadata) -> str
:module: PyOpenColorIO
.. py:method:: FormatMetadata.getID(self: PyOpenColorIO.FormatMetadata) -> str
:module: PyOpenColorIO
Convenience method to easily get/set the 'id' attribute. This corresponds to the ProcessNode id attribute from a CLF/CTF file or the ColorCorrection id attribute from a CC/CCC/CDL file.
.. py:method:: FormatMetadata.getName(self: PyOpenColorIO.FormatMetadata) -> str
:module: PyOpenColorIO
Convenience method to easily get/set the 'name' attribute. This corresponds to the ProcessNode name attribute from a CLF / CTF file or the name key of a transform in the config YAML.
.. py:method:: FormatMetadata.setElementName(self: PyOpenColorIO.FormatMetadata, name: str) -> None
:module: PyOpenColorIO
Name has to be a non-empty string. Top-level element can't be renamed. 'ROOT' is reserved.
.. py:method:: FormatMetadata.setElementValue(self: PyOpenColorIO.FormatMetadata, value: str) -> None
:module: PyOpenColorIO
.. py:method:: FormatMetadata.setID(self: PyOpenColorIO.FormatMetadata, id: str) -> None
:module: PyOpenColorIO
.. py:method:: FormatMetadata.setName(self: PyOpenColorIO.FormatMetadata, name: str) -> None
:module: PyOpenColorIO
.. py:class:: AttributeNameIterator
:module: PyOpenColorIO.FormatMetadata
.. py:method:: AttributeNameIterator.__getitem__(self: PyOpenColorIO.FormatMetadata.AttributeNameIterator, arg0: int) -> str
:module: PyOpenColorIO.FormatMetadata
.. py:method:: AttributeNameIterator.__iter__(self: PyOpenColorIO.FormatMetadata.AttributeNameIterator) -> PyOpenColorIO.FormatMetadata.AttributeNameIterator
:module: PyOpenColorIO.FormatMetadata
.. py:method:: AttributeNameIterator.__len__(self: PyOpenColorIO.FormatMetadata.AttributeNameIterator) -> int
:module: PyOpenColorIO.FormatMetadata
.. py:method:: AttributeNameIterator.__next__(self: PyOpenColorIO.FormatMetadata.AttributeNameIterator) -> str
:module: PyOpenColorIO.FormatMetadata
.. py:class:: AttributeIterator
:module: PyOpenColorIO.FormatMetadata
.. py:method:: AttributeIterator.__getitem__(self: PyOpenColorIO.FormatMetadata.AttributeIterator, arg0: int) -> tuple
:module: PyOpenColorIO.FormatMetadata
.. py:method:: AttributeIterator.__iter__(self: PyOpenColorIO.FormatMetadata.AttributeIterator) -> PyOpenColorIO.FormatMetadata.AttributeIterator
:module: PyOpenColorIO.FormatMetadata
.. py:method:: AttributeIterator.__len__(self: PyOpenColorIO.FormatMetadata.AttributeIterator) -> int
:module: PyOpenColorIO.FormatMetadata
.. py:method:: AttributeIterator.__next__(self: PyOpenColorIO.FormatMetadata.AttributeIterator) -> tuple
:module: PyOpenColorIO.FormatMetadata
.. py:class:: ConstChildElementIterator
:module: PyOpenColorIO.FormatMetadata
.. py:method:: ConstChildElementIterator.__getitem__(self: PyOpenColorIO.FormatMetadata.ConstChildElementIterator, arg0: int) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO.FormatMetadata
.. py:method:: ConstChildElementIterator.__iter__(self: PyOpenColorIO.FormatMetadata.ConstChildElementIterator) -> PyOpenColorIO.FormatMetadata.ConstChildElementIterator
:module: PyOpenColorIO.FormatMetadata
.. py:method:: ConstChildElementIterator.__len__(self: PyOpenColorIO.FormatMetadata.ConstChildElementIterator) -> int
:module: PyOpenColorIO.FormatMetadata
.. py:method:: ConstChildElementIterator.__next__(self: PyOpenColorIO.FormatMetadata.ConstChildElementIterator) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO.FormatMetadata
.. py:class:: ChildElementIterator
:module: PyOpenColorIO.FormatMetadata
.. py:method:: ChildElementIterator.__getitem__(self: PyOpenColorIO.FormatMetadata.ChildElementIterator, arg0: int) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO.FormatMetadata
.. py:method:: ChildElementIterator.__iter__(self: PyOpenColorIO.FormatMetadata.ChildElementIterator) -> PyOpenColorIO.FormatMetadata.ChildElementIterator
:module: PyOpenColorIO.FormatMetadata
.. py:method:: ChildElementIterator.__len__(self: PyOpenColorIO.FormatMetadata.ChildElementIterator) -> int
:module: PyOpenColorIO.FormatMetadata
.. py:method:: ChildElementIterator.__next__(self: PyOpenColorIO.FormatMetadata.ChildElementIterator) -> PyOpenColorIO.FormatMetadata
:module: PyOpenColorIO.FormatMetadata
@@ -1,10 +0,0 @@
..
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:function:: GetEnvVariable(name: str) -> str
:module: PyOpenColorIO
Another call modifies the string obtained from a previous call as the method always uses the same memory buffer.
@@ -1,8 +0,0 @@
..
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:function:: GetInverseTransformDirection(direction: PyOpenColorIO.TransformDirection) -> PyOpenColorIO.TransformDirection
:module: PyOpenColorIO
@@ -1,12 +0,0 @@
..
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:function:: GetLoggingLevel() -> PyOpenColorIO.LoggingLevel
:module: PyOpenColorIO
Get the global logging level.
You can override this at runtime using the OCIO_LOGGING_LEVEL environment variable. The client application that sets this should use :ref:`SetLoggingLevel`, and not the environment variable. The default value is INFO.
@@ -1,12 +0,0 @@
..
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:function:: GetVersion() -> str
:module: PyOpenColorIO
Get the version number for the library, as a dot-delimited string (e.g., "1.0.0").
This is also available at compile time as OCIO_VERSION_FULL_STR.
@@ -1,12 +0,0 @@
..
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:function:: GetVersionHex() -> int
:module: PyOpenColorIO
Get the version number for the library, as a single 4-byte hex number (e.g., 0x01050200 for "1.5.2"), to be used for numeric comparisons.
This is also at compile time as OCIO_VERSION_HEX.
@@ -1,74 +0,0 @@
..
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:: GpuLanguage
:module: PyOpenColorIO
Used when there is a choice of hardware shader language.
Members:
GPU_LANGUAGE_CG : Nvidia Cg shader.
GPU_LANGUAGE_GLSL_1_2 : OpenGL Shading Language.
GPU_LANGUAGE_GLSL_1_3 : OpenGL Shading Language.
GPU_LANGUAGE_GLSL_4_0 : OpenGL Shading Language.
GPU_LANGUAGE_GLSL_ES_1_0 : OpenGL ES Shading Language.
GPU_LANGUAGE_GLSL_ES_3_0 : OpenGL ES Shading Language.
GPU_LANGUAGE_HLSL_DX11 : DirectX Shading Language.
GPU_LANGUAGE_MSL_2_0 : Metal Shading Language.
.. py:method:: name() -> str
:property:
.. py:attribute:: GpuLanguage.GPU_LANGUAGE_CG
:module: PyOpenColorIO
:value: <GpuLanguage.GPU_LANGUAGE_CG: 0>
.. py:attribute:: GpuLanguage.GPU_LANGUAGE_GLSL_1_2
:module: PyOpenColorIO
:value: <GpuLanguage.GPU_LANGUAGE_GLSL_1_2: 1>
.. py:attribute:: GpuLanguage.GPU_LANGUAGE_GLSL_1_3
:module: PyOpenColorIO
:value: <GpuLanguage.GPU_LANGUAGE_GLSL_1_3: 2>
.. py:attribute:: GpuLanguage.GPU_LANGUAGE_GLSL_4_0
:module: PyOpenColorIO
:value: <GpuLanguage.GPU_LANGUAGE_GLSL_4_0: 3>
.. py:attribute:: GpuLanguage.GPU_LANGUAGE_GLSL_ES_1_0
:module: PyOpenColorIO
:value: <GpuLanguage.GPU_LANGUAGE_GLSL_ES_1_0: 6>
.. py:attribute:: GpuLanguage.GPU_LANGUAGE_GLSL_ES_3_0
:module: PyOpenColorIO
:value: <GpuLanguage.GPU_LANGUAGE_GLSL_ES_3_0: 7>
.. py:attribute:: GpuLanguage.GPU_LANGUAGE_HLSL_DX11
:module: PyOpenColorIO
:value: <GpuLanguage.GPU_LANGUAGE_HLSL_DX11: 4>
.. py:attribute:: GpuLanguage.GPU_LANGUAGE_MSL_2_0
:module: PyOpenColorIO
:value: <GpuLanguage.GPU_LANGUAGE_MSL_2_0: 8>
.. py:property:: GpuLanguage.value
:module: PyOpenColorIO
@@ -1,8 +0,0 @@
..
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:function:: GpuLanguageFromString(str: str) -> PyOpenColorIO.GpuLanguage
:module: PyOpenColorIO
@@ -1,8 +0,0 @@
..
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:function:: GpuLanguageToString(language: PyOpenColorIO.GpuLanguage) -> str
:module: PyOpenColorIO
@@ -1,30 +0,0 @@
..
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:: GPUProcessor
:module: PyOpenColorIO
.. py:method:: GPUProcessor.__init__(*args, **kwargs)
:module: PyOpenColorIO
.. py:method:: GPUProcessor.extractGpuShaderInfo(self: PyOpenColorIO.GPUProcessor, shaderDesc: PyOpenColorIO.GpuShaderDesc) -> None
:module: PyOpenColorIO
Extract & Store the shader information to implement the color processing.
.. py:method:: GPUProcessor.getCacheID(self: PyOpenColorIO.GPUProcessor) -> str
:module: PyOpenColorIO
.. py:method:: GPUProcessor.hasChannelCrosstalk(self: PyOpenColorIO.GPUProcessor) -> bool
:module: PyOpenColorIO
.. py:method:: GPUProcessor.isNoOp(self: PyOpenColorIO.GPUProcessor) -> bool
:module: PyOpenColorIO
@@ -1,278 +0,0 @@
..
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:: GpuShaderCreator
:module: PyOpenColorIO
Inherit from the class to fully customize the implementation of a GPU shader program from a color transformation.
When no customizations are needed and the intermediate in-memory step is acceptable then the :ref:`GpuShaderDesc` is a better choice.
.. note::
To better decouple the DynamicProperties from their GPU implementation, the code provides several addUniform() methods i.e. one per access function types. For example, an :ref:`ExposureContrastTransform` instance owns three DynamicProperties and they are all implemented by a double. When creating the GPU fragment shader program, the addUniform() with :ref:`GpuShaderCreator::DoubleGetter` is called when property is dynamic, up to three times.
**An OCIO shader program could contain:**
- 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-block:: 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
} //
.. py:attribute:: GpuShaderCreator.TEXTURE_1D
:module: PyOpenColorIO
:value: <TextureDimensions.TEXTURE_1D: 1>
.. py:attribute:: GpuShaderCreator.TEXTURE_2D
:module: PyOpenColorIO
:value: <TextureDimensions.TEXTURE_2D: 2>
.. py:class:: GpuShaderCreator.TextureDimensions
:module: PyOpenColorIO
:canonical: PyOpenColorIO.GpuShaderCreator.TextureDimensions
Dimension enum used to differentiate between 1D and 2D object/resource types.
Members:
TEXTURE_1D
TEXTURE_2D
.. py:attribute:: GpuShaderCreator.TextureDimensions.TEXTURE_1D
:module: PyOpenColorIO
:value: <TextureDimensions.TEXTURE_1D: 1>
.. py:attribute:: GpuShaderCreator.TextureDimensions.TEXTURE_2D
:module: PyOpenColorIO
:value: <TextureDimensions.TEXTURE_2D: 2>
.. py:property:: GpuShaderCreator.TextureDimensions.name
:module: PyOpenColorIO
.. py:property:: GpuShaderCreator.TextureDimensions.value
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.addToDeclareShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.addToFunctionFooterShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.addToFunctionHeaderShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.addToFunctionShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.addToHelperShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.begin(self: PyOpenColorIO.GpuShaderCreator, uid: str) -> None
:module: PyOpenColorIO
Start to collect the shader data.
.. py:method:: GpuShaderCreator.clone(self: PyOpenColorIO.GpuShaderCreator) -> PyOpenColorIO.GpuShaderCreator
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.createShaderText(self: PyOpenColorIO.GpuShaderCreator, shaderDeclarations: str, shaderHelperMethods: str, shaderFunctionHeader: str, shaderFunctionBody: str, shaderFunctionFooter: str) -> None
:module: PyOpenColorIO
Create the OCIO shader program.
.. note::
The OCIO shader program is decomposed to allow a specific implementation to change some parts. Some product integrations add the color processing within a client shader program, imposing constraints requiring this flexibility.
.. py:method:: GpuShaderCreator.end(self: PyOpenColorIO.GpuShaderCreator) -> None
:module: PyOpenColorIO
End to collect the shader data.
.. py:method:: GpuShaderCreator.finalize(self: PyOpenColorIO.GpuShaderCreator) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.getAllowTexture1D(self: PyOpenColorIO.GpuShaderCreator) -> bool
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.getCacheID(self: PyOpenColorIO.GpuShaderCreator) -> str
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.getDynamicProperties(self: PyOpenColorIO.GpuShaderCreator) -> PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.getDynamicProperty(self: PyOpenColorIO.GpuShaderCreator, type: PyOpenColorIO.DynamicPropertyType) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.getFunctionName(self: PyOpenColorIO.GpuShaderCreator) -> str
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.getLanguage(self: PyOpenColorIO.GpuShaderCreator) -> PyOpenColorIO.GpuLanguage
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.getNextResourceIndex(self: PyOpenColorIO.GpuShaderCreator) -> int
:module: PyOpenColorIO
To avoid global texture sampler and uniform name clashes always append an increasing index to the resource name.
.. py:method:: GpuShaderCreator.getPixelName(self: PyOpenColorIO.GpuShaderCreator) -> str
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.getResourcePrefix(self: PyOpenColorIO.GpuShaderCreator) -> str
:module: PyOpenColorIO
.. note::
Some applications require that textures, uniforms, and helper methods be uniquely named because several processor instances could coexist.
.. py:method:: GpuShaderCreator.getTextureMaxWidth(self: PyOpenColorIO.GpuShaderCreator) -> int
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.getUniqueID(self: PyOpenColorIO.GpuShaderCreator) -> str
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.hasDynamicProperty(self: PyOpenColorIO.GpuShaderCreator, type: PyOpenColorIO.DynamicPropertyType) -> bool
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.setAllowTexture1D(self: PyOpenColorIO.GpuShaderCreator, allowed: bool) -> None
:module: PyOpenColorIO
Allow 1D GPU resource type, otherwise always using 2D resources for 1D LUTs.
.. py:method:: GpuShaderCreator.setFunctionName(self: PyOpenColorIO.GpuShaderCreator, name: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderCreator.setLanguage(self: PyOpenColorIO.GpuShaderCreator, language: PyOpenColorIO.GpuLanguage) -> None
:module: PyOpenColorIO
Set the shader program language.
.. py:method:: GpuShaderCreator.setPixelName(self: PyOpenColorIO.GpuShaderCreator, name: str) -> None
:module: PyOpenColorIO
Set the pixel name variable holding the color values.
.. py:method:: GpuShaderCreator.setResourcePrefix(self: PyOpenColorIO.GpuShaderCreator, prefix: str) -> None
:module: PyOpenColorIO
Set a prefix to the resource name.
.. py:method:: GpuShaderCreator.setTextureMaxWidth(self: PyOpenColorIO.GpuShaderCreator, maxWidth: int) -> None
:module: PyOpenColorIO
Some graphic cards could have 1D & 2D textures with size limitations.
.. py:method:: GpuShaderCreator.setUniqueID(self: PyOpenColorIO.GpuShaderCreator, uid: str) -> None
:module: PyOpenColorIO
.. py:class:: TextureType
:module: PyOpenColorIO.GpuShaderCreator
Members:
TEXTURE_RED_CHANNEL
TEXTURE_RGB_CHANNEL
.. py:method:: name() -> str
:property:
.. py:attribute:: TextureType.TEXTURE_RED_CHANNEL
:module: PyOpenColorIO.GpuShaderCreator
:value: <TextureType.TEXTURE_RED_CHANNEL: 0>
.. py:attribute:: TextureType.TEXTURE_RGB_CHANNEL
:module: PyOpenColorIO.GpuShaderCreator
:value: <TextureType.TEXTURE_RGB_CHANNEL: 1>
.. py:property:: TextureType.value
:module: PyOpenColorIO.GpuShaderCreator
.. py:class:: DynamicPropertyIterator
:module: PyOpenColorIO.GpuShaderCreator
.. py:method:: DynamicPropertyIterator.__getitem__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator, arg0: int) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO.GpuShaderCreator
.. py:method:: DynamicPropertyIterator.__iter__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator) -> PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator
:module: PyOpenColorIO.GpuShaderCreator
.. py:method:: DynamicPropertyIterator.__len__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator) -> int
:module: PyOpenColorIO.GpuShaderCreator
.. py:method:: DynamicPropertyIterator.__next__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO.GpuShaderCreator
@@ -1,568 +0,0 @@
..
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:: GpuShaderDesc
:module: PyOpenColorIO
This class holds the GPU-related information needed to build a shader program from a specific processor.
This class defines the interface and there are two implementations provided. The "legacy" mode implements the OCIO v1 approach of baking certain ops in order to have at most one 3D-LUT. The "generic" mode is the v2 default and allows all the ops to be processed as-is, without baking, like the CPU renderer. Custom implementations could be written to accommodate the GPU needs of a specific client app.
The complete fragment shader program is decomposed in two main parts: the OCIO shader program for the color processing and the client shader program which consumes the pixel color processing.
The OCIO shader program is fully described by the :ref:`GpuShaderDesc` independently from the client shader program. The only critical point is the agreement on the OCIO function shader name.
To summarize, the complete shader program is:
.. code-block:: cpp
// //
// The complete fragment shader program //
// //
// //
// ////////////////////////////////////////////////////////////// //
// // // //
// // The OCIO shader program // //
// // // //
// ////////////////////////////////////////////////////////////// //
// // // //
// // // All global declarations // //
// // uniform sampled3D tex3; // //
// // // //
// // // All helper methods // //
// // vec3 computePos(vec3 color) // //
// // { // //
// // vec3 coords = color; // //
// // ... // //
// // return coords; // //
// // } // //
// // // //
// // // The OCIO shader function // //
// // vec4 OCIODisplay(in vec4 inColor) // //
// // { // //
// // vec4 outColor = inColor; // //
// // ... // //
// // outColor.rbg // //
// // = texture3D(tex3, computePos(inColor.rgb)).rgb; // //
// // ... // //
// // return outColor; // //
// // } // //
// // // //
// ////////////////////////////////////////////////////////////// //
// //
// ////////////////////////////////////////////////////////////// //
// // // //
// // The client shader program // //
// // // //
// ////////////////////////////////////////////////////////////// //
// // // //
// // uniform sampler2D image; // //
// // // //
// // void main() // //
// // { // //
// // vec4 inColor = texture2D(image, gl_TexCoord[0].st); // //
// // ... // //
// // vec4 outColor = OCIODisplay(inColor); // //
// // ... // //
// // gl_FragColor = outColor; // //
// // } // //
// // // //
// ////////////////////////////////////////////////////////////// //
// //
////////////////////////////////////////////////////////////////////////
**Usage Example:** *Building a GPU shader*
This example is based on the code in: src/apps/ociodisplay/main.cpp
.. code-block:: cpp
// Get the processor
//
OCIO::ConstConfigRcPtr config = OCIO::Config::CreateFromEnv();
OCIO::ConstProcessorRcPtr processor
= config->getProcessor("ACES - ACEScg", "Output - sRGB");
// Step 1: Create a GPU shader description
//
// The two potential scenarios are:
//
// 1. Instantiate the generic shader description. The color processor
// is used as-is (i.e. without any baking step) and could contain
// any number of 1D & 3D luts.
//
// This is the default OCIO v2 behavior and allows a much better
// match between the CPU and GPU renderers.
//
OCIO::GpuShaderDescRcPtr shaderDesc = OCIO::GpuShaderDesc::Create();
//
// 2. Instantiate a custom shader description.
//
// Writing a custom shader description is a way to tailor the shaders
// to the needs of a given client program. This involves writing a
// new class inheriting from the pure virtual class GpuShaderDesc.
//
// Please refer to the GenericGpuShaderDesc class for an example.
//
OCIO::GpuShaderDescRcPtr shaderDesc = MyCustomGpuShader::Create();
shaderDesc->setLanguage(OCIO::GPU_LANGUAGE_GLSL_1_2);
shaderDesc->setFunctionName("OCIODisplay");
// Step 2: Collect the shader program information for a specific processor
//
processor->extractGpuShaderInfo(shaderDesc);
// Step 3: Create a helper to build the shader. Here we use a helper for
// OpenGL but there will also be helpers for other languages.
//
OpenGLBuilderRcPtr oglBuilder = OpenGLBuilder::Create(shaderDesc);
// Step 4: Allocate & upload all the LUTs
//
oglBuilder->allocateAllTextures();
// Step 5: Build the complete fragment shader program using
// g_fragShaderText which is the client shader program.
//
g_programId = oglBuilder->buildProgram(g_fragShaderText);
// Step 6: Enable the fragment shader program, and all needed textures
//
glUseProgram(g_programId);
glUniform1i(glGetUniformLocation(g_programId, "tex1"), 1); // image texture
oglBuilder->useAllTextures(g_programId); // LUT textures
// Step 7: Update uniforms from dynamic property instances.
m_oglBuilder->useAllUniforms();
.. py:method:: GpuShaderDesc.CreateShaderDesc(language: PyOpenColorIO.GpuLanguage = <GpuLanguage.GPU_LANGUAGE_GLSL_1_2: 1>, functionName: str = 'OCIOMain', pixelName: str = 'outColor', resourcePrefix: str = 'ocio', uid: str = '') -> PyOpenColorIO.GpuShaderDesc
:module: PyOpenColorIO
:staticmethod:
Create the default shader description.
.. py:attribute:: GpuShaderDesc.TEXTURE_1D
:module: PyOpenColorIO
:value: <TextureDimensions.TEXTURE_1D: 1>
.. py:attribute:: GpuShaderDesc.TEXTURE_2D
:module: PyOpenColorIO
:value: <TextureDimensions.TEXTURE_2D: 2>
.. py:class:: GpuShaderDesc.TextureDimensions
:module: PyOpenColorIO
:canonical: PyOpenColorIO.GpuShaderCreator.TextureDimensions
Dimension enum used to differentiate between 1D and 2D object/resource types.
Members:
TEXTURE_1D
TEXTURE_2D
.. py:attribute:: GpuShaderDesc.TextureDimensions.TEXTURE_1D
:module: PyOpenColorIO
:value: <TextureDimensions.TEXTURE_1D: 1>
.. py:attribute:: GpuShaderDesc.TextureDimensions.TEXTURE_2D
:module: PyOpenColorIO
:value: <TextureDimensions.TEXTURE_2D: 2>
.. py:method:: GpuShaderDesc.TextureDimensions.__init__(self: PyOpenColorIO.GpuShaderCreator.TextureDimensions, value: int) -> None
:module: PyOpenColorIO
.. py:property:: GpuShaderDesc.TextureDimensions.name
:module: PyOpenColorIO
.. py:property:: GpuShaderDesc.TextureDimensions.value
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.__init__(*args, **kwargs)
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.add3DTexture(self: PyOpenColorIO.GpuShaderDesc, textureName: str, samplerName: str, edgeLen: int, interpolation: PyOpenColorIO.Interpolation, values: buffer) -> None
:module: PyOpenColorIO
Add a 3D texture with RGB channel type.
.. note::
The 'values' parameter contains the 3D LUT data which must be used as-is as the dimension and origin are hard-coded in the fragment shader program. So, it means one GPU 3D texture per entry.
.. py:method:: GpuShaderDesc.addTexture(self: PyOpenColorIO.GpuShaderDesc, textureName: str, samplerName: str, width: int, height: int, channel: PyOpenColorIO.GpuShaderCreator.TextureType, dimensions: PyOpenColorIO.GpuShaderCreator.TextureDimensions, interpolation: PyOpenColorIO.Interpolation, values: buffer) -> None
:module: PyOpenColorIO
Add a 1D or 2D texture
.. note::
The 'values' parameter contains the LUT data which must be used as-is as the dimensions and origin are hard-coded in the fragment shader program. So, it means one GPU texture per entry.
.. py:method:: GpuShaderDesc.addToDeclareShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.addToFunctionFooterShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.addToFunctionHeaderShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.addToFunctionShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.addToHelperShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.begin(self: PyOpenColorIO.GpuShaderCreator, uid: str) -> None
:module: PyOpenColorIO
Start to collect the shader data.
.. py:method:: GpuShaderDesc.clone(self: PyOpenColorIO.GpuShaderDesc) -> PyOpenColorIO.GpuShaderCreator
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.createShaderText(self: PyOpenColorIO.GpuShaderCreator, shaderDeclarations: str, shaderHelperMethods: str, shaderFunctionHeader: str, shaderFunctionBody: str, shaderFunctionFooter: str) -> None
:module: PyOpenColorIO
Create the OCIO shader program.
.. note::
The OCIO shader program is decomposed to allow a specific implementation to change some parts. Some product integrations add the color processing within a client shader program, imposing constraints requiring this flexibility.
.. py:method:: GpuShaderDesc.end(self: PyOpenColorIO.GpuShaderCreator) -> None
:module: PyOpenColorIO
End to collect the shader data.
.. py:method:: GpuShaderDesc.finalize(self: PyOpenColorIO.GpuShaderCreator) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.get3DTextures(self: PyOpenColorIO.GpuShaderDesc) -> PyOpenColorIO.GpuShaderDesc.Texture3DIterator
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getAllowTexture1D(self: PyOpenColorIO.GpuShaderCreator) -> bool
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getCacheID(self: PyOpenColorIO.GpuShaderCreator) -> str
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getDynamicProperties(self: PyOpenColorIO.GpuShaderCreator) -> PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getDynamicProperty(self: PyOpenColorIO.GpuShaderCreator, type: PyOpenColorIO.DynamicPropertyType) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getFunctionName(self: PyOpenColorIO.GpuShaderCreator) -> str
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getLanguage(self: PyOpenColorIO.GpuShaderCreator) -> PyOpenColorIO.GpuLanguage
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getNextResourceIndex(self: PyOpenColorIO.GpuShaderCreator) -> int
:module: PyOpenColorIO
To avoid global texture sampler and uniform name clashes always append an increasing index to the resource name.
.. py:method:: GpuShaderDesc.getPixelName(self: PyOpenColorIO.GpuShaderCreator) -> str
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getResourcePrefix(self: PyOpenColorIO.GpuShaderCreator) -> str
:module: PyOpenColorIO
.. note::
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.getTextures(self: PyOpenColorIO.GpuShaderDesc) -> PyOpenColorIO.GpuShaderDesc.TextureIterator
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getUniforms(self: PyOpenColorIO.GpuShaderDesc) -> PyOpenColorIO.GpuShaderDesc.UniformIterator
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.getUniqueID(self: PyOpenColorIO.GpuShaderCreator) -> str
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.hasDynamicProperty(self: PyOpenColorIO.GpuShaderCreator, type: PyOpenColorIO.DynamicPropertyType) -> bool
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.setAllowTexture1D(self: PyOpenColorIO.GpuShaderCreator, allowed: bool) -> None
:module: PyOpenColorIO
Allow 1D GPU resource type, otherwise always using 2D resources for 1D LUTs.
.. py:method:: GpuShaderDesc.setFunctionName(self: PyOpenColorIO.GpuShaderCreator, name: str) -> None
:module: PyOpenColorIO
.. py:method:: GpuShaderDesc.setLanguage(self: PyOpenColorIO.GpuShaderCreator, language: PyOpenColorIO.GpuLanguage) -> None
:module: PyOpenColorIO
Set the shader program language.
.. py:method:: GpuShaderDesc.setPixelName(self: PyOpenColorIO.GpuShaderCreator, name: str) -> None
:module: PyOpenColorIO
Set the pixel name variable holding the color values.
.. py:method:: GpuShaderDesc.setResourcePrefix(self: PyOpenColorIO.GpuShaderCreator, prefix: str) -> None
:module: PyOpenColorIO
Set a prefix to the resource name.
.. py:method:: GpuShaderDesc.setTextureMaxWidth(self: PyOpenColorIO.GpuShaderCreator, maxWidth: int) -> None
:module: PyOpenColorIO
Some graphic cards could have 1D & 2D textures with size limitations.
.. py:method:: GpuShaderDesc.setUniqueID(self: PyOpenColorIO.GpuShaderCreator, uid: str) -> None
:module: PyOpenColorIO
.. py:class:: TextureType
:module: PyOpenColorIO.GpuShaderDesc
:canonical: PyOpenColorIO.GpuShaderCreator.TextureType
Members:
TEXTURE_RED_CHANNEL
TEXTURE_RGB_CHANNEL
.. py:method:: name() -> str
:property:
.. py:attribute:: TextureType.TEXTURE_RED_CHANNEL
:module: PyOpenColorIO.GpuShaderDesc
:value: <TextureType.TEXTURE_RED_CHANNEL: 0>
.. py:attribute:: TextureType.TEXTURE_RGB_CHANNEL
:module: PyOpenColorIO.GpuShaderDesc
:value: <TextureType.TEXTURE_RGB_CHANNEL: 1>
.. py:property:: TextureType.value
:module: PyOpenColorIO.GpuShaderDesc
.. py:class:: UniformData
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformData.getBool(self: PyOpenColorIO.GpuShaderDesc.UniformData) -> bool
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformData.getDouble(self: PyOpenColorIO.GpuShaderDesc.UniformData) -> float
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformData.getFloat3(self: PyOpenColorIO.GpuShaderDesc.UniformData) -> List[float[3]]
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformData.getVectorFloat(self: PyOpenColorIO.GpuShaderDesc.UniformData) -> numpy.ndarray
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformData.getVectorInt(self: PyOpenColorIO.GpuShaderDesc.UniformData) -> numpy.ndarray
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: UniformData.type
:module: PyOpenColorIO.GpuShaderDesc
.. py:class:: Texture
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture.channel
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture.dimensions
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: Texture.getValues(self: PyOpenColorIO.GpuShaderDesc.Texture) -> numpy.ndarray
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture.height
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture.interpolation
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture.samplerName
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture.textureName
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture.width
:module: PyOpenColorIO.GpuShaderDesc
.. py:class:: Texture3D
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture3D.edgeLen
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: Texture3D.getValues(self: PyOpenColorIO.GpuShaderDesc.Texture3D) -> numpy.ndarray
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture3D.interpolation
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture3D.samplerName
:module: PyOpenColorIO.GpuShaderDesc
.. py:property:: Texture3D.textureName
:module: PyOpenColorIO.GpuShaderDesc
.. py:class:: UniformIterator
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformIterator.__getitem__(self: PyOpenColorIO.GpuShaderDesc.UniformIterator, arg0: int) -> tuple
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformIterator.__iter__(self: PyOpenColorIO.GpuShaderDesc.UniformIterator) -> PyOpenColorIO.GpuShaderDesc.UniformIterator
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformIterator.__len__(self: PyOpenColorIO.GpuShaderDesc.UniformIterator) -> int
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: UniformIterator.__next__(self: PyOpenColorIO.GpuShaderDesc.UniformIterator) -> tuple
:module: PyOpenColorIO.GpuShaderDesc
.. py:class:: TextureIterator
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: TextureIterator.__getitem__(self: PyOpenColorIO.GpuShaderDesc.TextureIterator, arg0: int) -> PyOpenColorIO.GpuShaderDesc.Texture
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: TextureIterator.__iter__(self: PyOpenColorIO.GpuShaderDesc.TextureIterator) -> PyOpenColorIO.GpuShaderDesc.TextureIterator
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: TextureIterator.__len__(self: PyOpenColorIO.GpuShaderDesc.TextureIterator) -> int
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: TextureIterator.__next__(self: PyOpenColorIO.GpuShaderDesc.TextureIterator) -> PyOpenColorIO.GpuShaderDesc.Texture
:module: PyOpenColorIO.GpuShaderDesc
.. py:class:: Texture3DIterator
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: Texture3DIterator.__getitem__(self: PyOpenColorIO.GpuShaderDesc.Texture3DIterator, arg0: int) -> PyOpenColorIO.GpuShaderDesc.Texture3D
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: Texture3DIterator.__iter__(self: PyOpenColorIO.GpuShaderDesc.Texture3DIterator) -> PyOpenColorIO.GpuShaderDesc.Texture3DIterator
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: Texture3DIterator.__len__(self: PyOpenColorIO.GpuShaderDesc.Texture3DIterator) -> int
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: Texture3DIterator.__next__(self: PyOpenColorIO.GpuShaderDesc.Texture3DIterator) -> PyOpenColorIO.GpuShaderDesc.Texture3D
:module: PyOpenColorIO.GpuShaderDesc
.. py:class:: DynamicPropertyIterator
:module: PyOpenColorIO.GpuShaderDesc
:canonical: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator
.. py:method:: DynamicPropertyIterator.__getitem__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator, arg0: int) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: DynamicPropertyIterator.__iter__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator) -> PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: DynamicPropertyIterator.__len__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator) -> int
:module: PyOpenColorIO.GpuShaderDesc
.. py:method:: DynamicPropertyIterator.__next__(self: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator) -> PyOpenColorIO.DynamicProperty
:module: PyOpenColorIO.GpuShaderDesc
@@ -1,60 +0,0 @@
..
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:: GradingBSplineCurve
:module: PyOpenColorIO
A BSpline curve defined with :ref:`GradingControlPoint`.
.. py:method:: GradingBSplineCurve.__init__(*args, **kwargs)
:module: PyOpenColorIO
Overloaded function.
1. __init__(self: PyOpenColorIO.GradingBSplineCurve, size: int) -> None
Create a BSpline curve with a specified number of control points.
2. __init__(self: PyOpenColorIO.GradingBSplineCurve, arg0: List[float]) -> None
Create a BSpline curve with a list of control points.
.. py:method:: GradingBSplineCurve.getControlPoints(self: PyOpenColorIO.GradingBSplineCurve) -> PyOpenColorIO.GradingBSplineCurve.GradingControlPointIterator
:module: PyOpenColorIO
.. py:method:: GradingBSplineCurve.setNumControlPoints(self: PyOpenColorIO.GradingBSplineCurve, size: int) -> None
:module: PyOpenColorIO
.. py:method:: GradingBSplineCurve.validate(self: PyOpenColorIO.GradingBSplineCurve) -> None
:module: PyOpenColorIO
.. py:class:: GradingControlPointIterator
:module: PyOpenColorIO.GradingBSplineCurve
.. py:method:: GradingControlPointIterator.__getitem__(self: PyOpenColorIO.GradingBSplineCurve.GradingControlPointIterator, arg0: int) -> PyOpenColorIO.GradingControlPoint
:module: PyOpenColorIO.GradingBSplineCurve
.. py:method:: GradingControlPointIterator.__iter__(self: PyOpenColorIO.GradingBSplineCurve.GradingControlPointIterator) -> PyOpenColorIO.GradingBSplineCurve.GradingControlPointIterator
:module: PyOpenColorIO.GradingBSplineCurve
.. py:method:: GradingControlPointIterator.__len__(self: PyOpenColorIO.GradingBSplineCurve.GradingControlPointIterator) -> int
:module: PyOpenColorIO.GradingBSplineCurve
.. py:method:: GradingControlPointIterator.__next__(self: PyOpenColorIO.GradingBSplineCurve.GradingControlPointIterator) -> PyOpenColorIO.GradingControlPoint
:module: PyOpenColorIO.GradingBSplineCurve
.. py:method:: GradingControlPointIterator.__setitem__(self: PyOpenColorIO.GradingBSplineCurve.GradingControlPointIterator, arg0: int, arg1: PyOpenColorIO.GradingControlPoint) -> None
:module: PyOpenColorIO.GradingBSplineCurve

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