Compare commits

...
402 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
caa20dd196 Adsk contrib - Add support for neon intrinsic integration (#1828)
* Merging the previous ARM Neon branch

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

* Testing each SIMD variants using a small code snippet and first pass on unifying the way related cmake variables

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

* Removing the usage of USE_SSE in favor of the new OCIO_USE_SSE2 as they serve the same purpose

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

* Using try_compile instead of check_cxx_source_compiles as it was given false positive.  Stubbing cpuinfo for Apple ARM plateform. Handling Apple M1 correctly and adding support for SSE2NEON.

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

* Comments clean up and refactor some comments and documentations

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

* Added something in the documentation for Rosetta and small change in cmake

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

* Fixing the build under Rosetta and fixing issue in the MacOS CI.

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

* Using try_compile for CheckSupportSSEUsingSSE2NEON to standardize the code and fixed CheckSupport compiler flags.

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

* use emmintrin.h for only sse2 features

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

* Allow F16C to be completely turned off

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

* Seperate SIMD test code from code that adds unit tests.

This isolates the compulation units and
avoids executing illegal hardware instructions

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

* remove uneeded checks

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

* use software implementations of f16c intrinsics for SSE2

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

* Added preprocessor checks for ARM as it is needed for universal build on APPLE platform

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

* Adding missing checks for "not arm64"

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

* Ease the future maintainability a the new OCIO_USE_xyz be moving the logic into CPUInfoConfig.h.in as well as fixing issue on ARM when building with OCIO_USE_SSE2NEON=OFF.

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

* Fixing some spacing, documentations and making some cmake conditions clearer.

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

* Adding a build in ci_workflow for macos USE_OCIO_SSE2NEON=OFF

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

* typo

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

* Changing back all the macOS (except one) builds to x86_64 only as it takes double the time to do the universal build.
OCIO no longuer build a universal binary by default

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

* Update the CMakeLists.txt logic to accomodate all scenario and fixing documentations.

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

* Update documentation and remove ocio_use_sse2neon from the CI matrix

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

---------

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Signed-off-by: Mark Reid <mindmark@gmail.com>
Signed-off-by: Cédrik Fuoco <105517825+cedrik-fuoco-adsk@users.noreply.github.com>
Co-authored-by: Mark Reid <mindmark@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-08-31 21:10:29 -04:00
Doug Walker f885f8378e Update documentation for 2.3 release (#1838)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2023-08-31 17:10:08 -04:00
Michael DolanandRémi Achard 957ccd513b Add new ocioview app (alpha) (#1816)
* Initial commit of ocioview

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

* Improve config version selection and reloading

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

* Bug fixes and improved warnings

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

* Improve async log and code routing

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

* Add settings, improve transform interface

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

* Fix viewer and code view update bugs

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

* Add README and inspector panel with curve viewer

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

* Curve viewer log fix

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

* Add curve view labels

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

* Update README, improve curve grid rendering

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

---------

Signed-off-by: Michael Dolan <michdolan@gmail.com>
Co-authored-by: Rémi Achard <remiachard@gmail.com>
2023-08-31 13:59:33 -04:00
Cédrik FuocoandDoug Walker 6fc9f1f8da Adsk Contrib - Adding CG and Studio config v2.3 (#1836)
* Adding CG and Studio config 2.3

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

* Changing the configs for the 2.1.0 ones.

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

* Adding OCIO_DEPRECATED for getDefaultBuiltinConfigName

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

---------

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-08-30 17:37:41 -04:00
0872a69d05 Missing docs update for new texture dimensions API. (#1833)
* Missing docs update for new texture dimensions API.

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

* Further docs update through using frozen docs generation.

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: Michael Dolan <michdolan@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-08-30 01:25:24 -04:00
8854e13604 CMake: Fixes for yaml-cpp and generated config (#1823)
* Use `TARGET` for the config if-statements.

The check would always evaluate to true otherwise.

Signed-off-by: Pierre Wendling <pierre.wendling.4@gmail.com>

* Use PACKAGE_PREFIX_DIR from PACKAGE_INIT.

This avoids guessing the path to the prefix.

Signed-off-by: Pierre Wendling <pierre.wendling.4@gmail.com>

* Add compatibility with yaml-cpp 0.8.0 target.

The target was renamed to `yaml-cpp::yaml-cpp`, which breaks when using
the upstream CMake package over the Find module.

Signed-off-by: Pierre Wendling <pierre.wendling.4@gmail.com>

---------

Signed-off-by: Pierre Wendling <pierre.wendling.4@gmail.com>
Co-authored-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-08-29 21:16:30 -04:00
Rémi Achard f9de269fc9 Fix CPUProcessor Dynamic Property API (#1832)
* Add missing hasDynamicProperty and isDynamic methods to CPUProcessor

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

* Fix cpu test run under address sanitizer

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

* Add OSL to Python GpuLanguage enum

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

* Fix Analysis nightly workflow not running

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

---------

Signed-off-by: Rémi Achard <remiachard@gmail.com>
2023-08-29 20:21:15 -04:00
Doug WalkerandMichael Dolan 96f528fdfb Fix named transform validation issue (#1829)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
Co-authored-by: Michael Dolan <michdolan@gmail.com>
2023-08-28 21:42:37 -04:00
Éric Renaud-HoudeandMichael Dolan de6d62d9fb Added GetProcessorFromConfigs variants for displays and views. (#1808)
* Added GetProcessorFromConfigs variants for displays and views.

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

* Added display-view processor from two configs tests, moved direction argument last.

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: Michael Dolan <michdolan@gmail.com>
2023-08-28 21:06:51 -04:00
Cédrik FuocoandDoug Walker 7ff912d748 Adsk contrib - Ignore info log from inactive colorspaces test (#1822)
* Fixing a warning in one of the python unit test
Removing expected info log in some python unit test
Removing expected info log about inactive colorspace in Cpp unit test

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

* Using sudio config instead of cg config where it makes sense
renaming unit test inactive_colospace to is_inactive

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

---------

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-08-26 18:26:43 -04:00
Rémi Achard 47d758a73b Add command line apps to Python wheel (#1802)
* Add command line apps and remove tests on Python wheel

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

* Fix warnings on Clang 14

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

* Python wheel using dynamic linking

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

* Fix DLL directory

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

* Check path exists

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

* Fix DLL lookup on Windows

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

* Fix linux / mac wheels

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

* Fix symlinks and make doc optional

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

---------

Signed-off-by: Rémi Achard <remiachard@gmail.com>
2023-08-26 16:46:28 -04:00
929d5364c4 Exposed option to allow/disallow 1D texture GPU resources for 1D LUTs. (#1762)
* Exposed option to allow/disallow 1D texture GPU resources for 1D LUTs.

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

* New API to get or add 1D LUT textures with the specified dimensions.

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

* Fix errors relevealed by CIS related to texture dimension API change.

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

* Update gpu shader tests away from now deprecated get/add texture functions.

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

* Converted deprecated get/add texture functions from pure virtual to virtual.

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

* Commenting out unused parameters on deprecated functions to mitigate warnings.

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

* Addressing review notes.

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

* Updated python addTexture/getTextures test with latest interface.

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

* Further update python and metal samples to new texture dimensions API.

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

* Improvements: moved default deprecated implementations to base classes, avoided asserts, fixed typo and naming.

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

* Follow spacing/formatting convention arguments.

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

* Removed the original addTexture and getTexture methods.

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

---------

Signed-off-by: Eric Renaud-Houde <eric.renaud.houde@gmail.com>
Co-authored-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-08-26 00:27:14 -04:00
Cédrik FuocoandDoug Walker 9221ffadb8 Adsk Contrib - Adding support for ocio://cg-config-latest and ocio://studio-config-latest (#1773)
* Added ResolveConfigPath function

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

* Added support for ocio://cg-config-latest and ocio://studio-config-latest
Added unit tests that covers the new names.
CreateFromBuiltinConfig now supports the URI interface directly as well. Previously, it was supporting only the built-in config name (not a URI). The config name was parsed out of the URI before passing it to CreateFromBuiltConfig by CreateFromFile.

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

* Documentations and typos
Tweaking unit tests
Other minor changes

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

* documentations

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

* Using OCIO_BUILTIN_URI_PREFIX where we can in the code (not in tests)
Adding missing type in PyTypes.cpp
Change name of constexpr to follow the others in OCIO (all in capital)
Moved them to the cpp file since they can be useful in tests
Comments

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

* documentation

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

* Fixing error : ISO C++ forbids converting a string constant to 'char*' that was brought up with Clang under Linux and macos.

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

* Remove deprecation for getDefaultBuiltinConfigName. Will wait for 2.3 release.

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

* Fixing issue with the rebase

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

---------

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Signed-off-by: Cédrik Fuoco <105517825+cedrik-fuoco-adsk@users.noreply.github.com>
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-08-25 15:42:25 -04:00
Mark ReidandDoug Walker 9cc2486559 Add AVX2/AVX/SSE2 SIMD accelerated 1D/3D LUTS (#1687)
* Add AVX2/AVX/SSE2 accelerated pack/unpacking function templates

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Add AVX2/AVX/SSE2 accelerated Lut3D Tetrahedral implementations

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Add AVX2/AVX/SSE2 accelerated linear Lut1D implementations

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Fix a bunch of typos

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Remove USE_SSE code that is no longer needed

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Use alignas specifier

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Move x86 simd checking code to seperate file

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Fix cacheID test, compare lengths and everything but the cacheID hash

Signed-off-by: Mark Reid <mindmark@gmail.com>

* Remove debug gather code

Signed-off-by: Mark Reid <mindmark@gmail.com>

* fixed outBD typo

Signed-off-by: Mark Reid <mindmark@gmail.com>

---------

Signed-off-by: Mark Reid <mindmark@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-08-23 12:52:05 -04:00
Cédrik Fuoco 84948c773f Locking sphinx to the latest successful build (#1826)
Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
2023-08-22 15:38:15 -04:00
bdc4cd1241 Add support for minizip-ng 4 API (#1806)
Signed-off-by: Brad Smith <brad@comstyle.com>
Co-authored-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-07-28 19:18:10 -04:00
Rémi AchardandDoug Walker f26df74417 Add VFX Platform 2023 to CI build matrix (#1813)
* Add ci-ocio:2023 to build matrix

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

* Fix OpenImageIO detection

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

* Update deprecated GHA

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-07-28 18:40:20 -04:00
Doug Walker 93ee2cc8a4 Add built-in transform for Display P3 and bump config version (#1814)
* Add built-in display transform for Display P3

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

* Add URLs with DisplayP3 info

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2023-07-26 22:12:13 -04:00
brkglvn01andRémi Achard 6dec6b23a7 Updated documentation as 3D LUTs can now be inverted (#1812)
* Fix documentation build (#1809)

* Fix documentation build on Doxygen 1.9.7

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

* Remove doxygen group names

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

* Remove remaining doxygen group

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

---------

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

* Updated documentation as 3D LUTs can now be inverted

Signed-off-by: Brooke <brkglvn@gmail.com>
Signed-off-by: Brooke <beg9562@rit.edu>

---------

Signed-off-by: Rémi Achard <remiachard@gmail.com>
Signed-off-by: Brooke <beg9562@rit.edu>
Signed-off-by: Brooke <brkglvn@gmail.com>
Co-authored-by: Rémi Achard <remiachard@gmail.com>
2023-07-13 20:45:22 -04:00
Rémi Achard 16b180240f Fix documentation build (#1809)
* Fix documentation build on Doxygen 1.9.7

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

* Remove doxygen group names

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

* Remove remaining doxygen group

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

---------

Signed-off-by: Rémi Achard <remiachard@gmail.com>
2023-06-29 19:24:46 -04:00
Cédrik FuocoandDoug Walker 8e801dc07b Adsk Contrib - Enhanced methods to find an equivalent color space between configs (#1788)
* - Implementation of identifyInterchangeSpace, identifyBuiltinColorSpace and AreProcessorsEquivalent.
- Remove some include of Processor.h where it wasn't needed.

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

* Moving code from Config.cpp to ConfigUtils.cpp and using wrapper in Config.cpp instead.
Fixing identations issues.
Fixing styling issues.

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

* Typo and comments tweaks
Moving the creation of the editable config into the wrapper of isColorSpaceLinear instead of doing it inside the function.

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

* Splitting identifyInterchangeSpace into two methods, one for source config and one for builtin.
Adding back isColorSpaceLinear inside Config.cpp since we need access to getProcessorWithoutCaching.
Refactor some of config utils function to return index instead of string.
Creating editable config in the two wrappers to prevent processor caching.

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

* Tentative change to phase out isProcessorEquivalent.

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

* Refactor code and add tests

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

* Remove unused method

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

* Remove unused method, tk 2

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

* Tweak comments

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

* Python binding for IdentifyInterchangeSpace and IdentifyBuiltinColorSpace methods.
Adding a couple python unit tests to cover the new methods (same unit test as the C++ side, but not all of them)

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

* - Implementation of identifyInterchangeSpace, identifyBuiltinColorSpace and AreProcessorsEquivalent.
- Remove some include of Processor.h where it wasn't needed.

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

* Moving code from Config.cpp to ConfigUtils.cpp and using wrapper in Config.cpp instead.
Fixing identations issues.
Fixing styling issues.

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

* Typo and comments tweaks
Moving the creation of the editable config into the wrapper of isColorSpaceLinear instead of doing it inside the function.

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

* Splitting identifyInterchangeSpace into two methods, one for source config and one for builtin.
Adding back isColorSpaceLinear inside Config.cpp since we need access to getProcessorWithoutCaching.
Refactor some of config utils function to return index instead of string.
Creating editable config in the two wrappers to prevent processor caching.

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

* Tentative change to phase out isProcessorEquivalent.

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

* Refactor code and add tests

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

* Remove unused method

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

* Remove unused method, tk 2

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

* Tweak comments

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

* Python binding for IdentifyInterchangeSpace and IdentifyBuiltinColorSpace methods.
Adding a couple python unit tests to cover the new methods (same unit test as the C++ side, but not all of them)

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

* Fixing problem with the rebase

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

* Make sure the unit test is using the static method

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

---------

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
Signed-off-by: Cédrik Fuoco <105517825+cedrik-fuoco-adsk@users.noreply.github.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-06-27 17:44:19 -04:00
Carol Payne 6bf2dc0bb8 Adding Thomas and Zach to the TSC! (#1803)
Signed-off-by: Carol Payne <carolp@netflix.com>
2023-06-13 16:49:31 -04:00
Cédrik Fuoco 454b502cce Adsk contrib - Fix issue with urllib3 version and the container images for the CIs (#1797)
* Changed OCIO_PYTHON_LOAD_DLLS_FROM_PATH to opt-in instead of opt-out

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

* Restrict the version of urllib3 to version <2 because version above this is not compatible with the OCIO container images

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

* Revert unwanted change from this branch

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

---------

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
2023-05-16 14:03:04 -04:00
Cédrik FuocoandDoug Walker 219ac86ef6 Adsk contrib - Add method to check inactive color space and an extra getRoleColorSpace method (#1792)
* Implements isInactiveColorSpace and getRoleColorSpace.
Implements basic unit tests for those two methods.

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

* Added header for the two new methods.
Added the python bindings equivalents.
Tweak C++ unit tests and added python unit tests.

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

* Minimize usage for getRoleName

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

* Documentations
Moving the new unit tests
Adding extra tests for un-tested methods

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

* Tweaking unit tests and documentions

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

* Fix build failure on Linux and Mac.

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

* Fix comment

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

---------

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-05-03 22:32:10 -04:00
Cédrik FuocoandDoug Walker a5a6be55c7 Changing ZLIB min version to 1.2.8 (#1793)
Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-05-03 21:58:01 -04:00
Cédrik FuocoandDoug Walker f0a181a00f Adsk contrib - Add method to clear processor cache (#1791)
* Adding a method to clear the processor cache.

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

* Do not clear the cache when enabling the cache
Adding test for the cache enable/disable cycle
Adding test to test clearProcessorCache

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

* Unrelated: Changing zlib version to 1.2.8 (adding it to this PR to minimize PRs)

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

* Documentations
Tweak unit tests
FIx implementation for clearProcessorCache

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

* Documentations
reverting zlib version and will do it in another PR

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

* Documentation and python binding

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

* Adding python unit tests and minor fixes

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

* Missing change from last commit

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

---------

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-05-03 21:19:13 -04:00
Jamil HalabiandDoug Walker a12ce22125 - CMake's FetchContent compatibility changes (#1790)
Signed-off-by: Jamil Halabi <jay3dlinux@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-05-03 20:48:51 -04:00
Cédrik FuocoandDoug Walker 5d49864dca Adsk Contrib - Fix warning/errors log in unit test (#1786)
* Fixinactive colorspaces in cg-config.
Fix OpenColorIO errors that was introduced a while ago in the unit test because of requirement for config.

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

* Reverting changes in cg-config
Other warnings are not muted anymore when we check for role warnings.

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

* Refactoring the new function in unit test log utils.

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

* Integrating the code into LogGuard
Changing some misuses of StartsWith

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

* Adding a MuteLogging class for python side
Mute log from built-in config test
Comments

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

* Adding new utilities function to mute inactive colorspace info log while not muting all logs (C++ side)

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

* findAllAndRemove method from LogGuard now takes a regex pattern instead of just the line to find

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

---------

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-05-03 20:14:08 -04:00
Cédrik Fuoco 01f2175087 Adsk contrib - Fix for dependencies workflow (#1795)
* Tentative fix for macos failure

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

* checking for llvm@15 instead as that version is installed by homebrew in the runner

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

* Trying to trigger the dependencies workflow by making a temporary changes in it.

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

* Using same version of compiler as LLVM_ROOT when building OSL

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

* Adding LLVM_ROOT for macOS only and testing the usage of "llvm" only instead of llvm@15.

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

* Changing back to llvm@15

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

* last test to confirm

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

* removing temporary change in dependencies_workflow

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

---------

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
2023-05-02 14:49:14 -04:00
Doug Walker 22f5ee00c1 Adsk Contrib - Fix error message in DisplayViewTransform (#1780)
* Fix error message in DisplayViewTransform

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

* Update test in Config_tests.cpp

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

* Improve indentation

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

---------

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2023-04-13 19:47:53 -04:00
Cédrik FuocoandDoug Walker 9659603d9e Make sure that docutils is >= 0.18.1 (#1783)
Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-04-12 21:01:45 -04:00
Doug Walker 9d0a5a4ff3 Add 3ds Max as a supported app (#1782)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2023-04-04 00:24:46 -04:00
Rémi AchardandDoug Walker 28a4b3a8ad Fix GradingPrimary bypass and add support Python comparison for Grading data objects (#1779)
* Fix GradingPrimary bypass, support comparison in Python

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

* Improve test description

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-03-22 23:52:03 -04:00
Rémi AchardandDoug Walker 20f13dec67 Fix python packaging (#1778)
Signed-off-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-03-22 19:07:48 -04:00
Cédrik Fuoco e93efe3b70 Adsk contrib - Add support for minimum and recommended versions for dependencies (#1777)
* Implementation of ocio_find_package and ocio_install_package macro.
Implemention of minimum, maximum and recommended version.
Refactor the FindOpenImageIO to be inline with the rest of the custom find module (OCIO_USE_OIIO_CMAKE_CONFIG is no longer needed).
Added a new option called OCIO_VERBOSE. It allow the user to tell OCIO to display more information when searching and building the dependencies.
Splitted the find and install part into two files - Find<pkg>.cmake and Install<pkg>.cmake.

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

* Removing a duplicate call to set_property in OpenImageIO find module.
Setting policy CMP0042 when building ZLIB since that project is using an old CMake version as the cmake_minimum_required and that version has no knowledge of the policy.
Fixing a potential issue in Installopenfx. Changing back the version to 1.4 as before.
Ignoring warning from OpenImageIO for imageioapphelpers. The same warning are ignored for ociodisplay, ocioconvert and ociolutimage.

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

* Fixed an issue with FindOpenImageIO that was found while testing on macOS.
Renamed FindOpenShadingLanguage to FindOSL to match the project name used the OSL's CMakefile.
Cleanup the code for FindOSL and removed duplicate warning about needed C++14.

Updated the header comments for all Find and Install modules.

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

* Fixing typo

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

* Renamed ocio_find_package to ocio_handle_dependency
Renamed ocio_install_package to ocio_install_dependency
The "Installing [...]" message from Install module is now under OCIO_VERBOSE variable. Added a message in ocio_install_dependency instead
Improve the colors usage in the logging

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

* Changed prefix for ocio_install_dependency since it was conflicting with the prefix of ocio_handle_dependency since they were the same.
Removed FindOpenEXR.cmake and FindOpenImageIO.cmake since they are not needed anymore (for differente reason).
Added PROMOTE_TARGET option for ocio_handle_dependency which promote the target to GLOBAL.

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

* Mostly comments and documentations

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

* Small update of the Existing Install Hints section

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

* Changed RECOMMENDED_MIN_VERSION to RECOMMENDED_VERSION
Re-worded some of the comments

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

* Fixing issue with ocio_handle_dependency macro where it wasn't respecting OCIO_INSTALL_EXT_PACKAGES option correctly.

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

* Adding more documentations and dropping support to look for static zlib since the user can update their cmake in order to do that.

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

* Documentations

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

* Documentations

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

* fixing typo

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

* Fix typo and fix issue when OCIO is installing ZLIB

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

* Tentative fix for Linux CI failure

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

* Ignoring specifics warnings on OpenImageIO target directly.

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

* Removing OCIO_USE_OIIO_CMAKE_CONFIG as it is not needed anymore.

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

---------

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
2023-03-22 17:12:35 -04:00
Cédrik FuocoandDoug Walker 9d572cfab7 Changing the build type check to be case-insensitive (#1765)
Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-03-09 01:59:12 -05:00
Cédrik FuocoandDoug Walker f651a1aed9 Adsk Contrib - Allow PyOpenColorIO module to load DLLs from Windows PATH environment variable (#1759)
* Allow PyOpenColorIO module to load DLLs from Windows PATH environment variable with an opt-out option in case the user want the default behavior of Python 3.8+.

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

* Fixing typos in comments

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

---------

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-03-09 00:57:11 -05:00
Rémi Achard 3797a92481 Update CI workflows (#1770)
* Update CI workflows

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

* Test building OpenEXR single threaded

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

* Add comment on disabling parallel build

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

* Update python_requires

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

* Remove comments around CI jobs

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

---------

Signed-off-by: Rémi Achard <remiachard@gmail.com>
2023-03-08 22:07:11 -05:00
b848482642 Update macOS runners to 10.11, bump actions version (#1714)
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>
2023-01-27 12:31:08 -05:00
Cédrik Fuoco 91761f256b Adsk Contrib - OCIO cmake improvements (#1736)
* - Refactoring how OCIO search for minizip-ng. The first step is to search for an external minizip-ng. If not found, search for minizip-ng with MZ_COMPAT=ON (libminizip). If it is not found either, download and install minizip-ng with MZ_COMPAT=OFF.
- Removing the minizip-ng part for the includes for minizip-ng headers.

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

* Update comments

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

* Improved find_package in Config mode (adding it back)
Added missing scripts to install minizip-ng and zlib for the analysis workflow

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

* Adding +x permissions for install_minizip_ng and zlib
Fixing path to find zlib in install_minizip-ng.sh

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

* Changing target name to match the one used by minizip-ng library (+ using the imported target instead of creating a new one when minizip-ng is found)

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

* First pass for the OpenColorIOConfig.cmake file with the required dependencies only.
A few extra fixes for OpenEXR, ZLIB and Minizip-ng.

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

* Adding a informative message when building static ocio instead of per module.

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

* Adding an extra step to test the consumer app with static OpenColorIO for Windows, Linux and MacOS.

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

* Re-using the same test instead of creating a new one by removing the condition on build-shared.

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

* Fixing spacing, typo and adding back the NOT in the condition. (it was removed for debugging purpose)

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

* Changing directory where we share OCIO custom find modules (now in <install dir>/share/cmake/modules).
Adding a cmake macro when installing OCIO since it is needed by some custom find modules.
The find modules are only installed when building OCIO as a static library.
The config.cmake.in files now only looks for the dependency when OCIO was built as a static library.
Tentative (ci-workflow): Adding cmake-consumer test for static builds.
Overhaul of the Findzlib module to be more inline with the FindZLIB from cmake and to be more robust.

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

* Adding missing backward slashes and saving the build path in an existing step instead of creating a new step.
Adding a check for CMake version for a section in Findzlib.cmake.
Re-phrasing some comments.

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

* Prevent the download of the dependencies in the scenario where static OCIO is linked to a consumer project. Since OCIO_INSTALL_EXT_PACKAGES is not defined, our find module tries to download the dependencies, but we don't want that mecanism for consumer project.

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

* Changing path where OCIO install its own custom find module.
Removing custom Findzlib and making modifications to use CMake FindZLIB.
Created a InstallZLIB module which does the download and install part if OCIO_INSTALL_EXT_PACAKGES is ALL or MISSING.
Tweaked config.cmake.in to use CMake FindZLIB.

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

* Adding more details in comments

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

* Removing an extra "shell" property in CI workflow.

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

* Fix issues discovered with the failing CI workflow:

Cmake-consumer test now prefer the static version of the dependencies.
Fix an issue where yaml-cpp is not found by a consumer app (variable spelled incorectly in Findyaml-cpp).
Fix an issue expat library is not found by a consumer app on Windows.
Adding support for OCIO's  <pkg_name>_STATIC_LIBRARY for ZLIB while supporting ZLIB_USE_STATIC_LIBS (CMake 3.24+) from CMake's FindZLIB.

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

* Removing pystring_STATIC_LIBRARY does not exists in CI workflow.
Detecting if the build is Debug in the find module that OCIO installs since they can't rely on variables set by OCIO CMakefiles.
Fix issue with yaml-cpp library naming in debug.

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

* Fix issues on Windows with expat and minizip-ng library naming when building static OCIO.

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

* Added option for macOS CI job in order to get more info on a failed job. Will be reverted once the issue is found.

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

* Fixing a issue on macOS.
Improving ZLIB usage comments.
Bumping minizip-ng to the latest version - 3.0.7.
Bumping ZLIB to the latest version 2.1.13 to fix a vulnerability (CVE-2022-37434)

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

* Proposing to remove Findminizip module since external minizip-ng build need to be done with the same option as the internal build.
Otherwise, linking and symbols issues are going to happend if the other libraries are not linked in correctly.
It is going to simplify the maintainability of OCIO.

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

* Removing findminizip.cmake from the install since it does not exist anymore.

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

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Signed-off-by: Cédrik Fuoco <105517825+cedrik-fuoco-adsk@users.noreply.github.com>
2023-01-05 10:26:45 -05:00
Doug Walker 17f5c98f9b Update documentation for 2.2 release (#1738)
* Update documentation for 2.2 release

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

* Fix typos

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

* Remove V2_DOC_README.md

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

* Tweaks to 2.2

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

* Improve installation section

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

* Add link to demo config

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

* Fix typos

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

* Improve file_rules section

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

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2023-01-04 16:44:23 -05:00
Doug Walker 5152635a18 Fix inverse Lut1D optimization bug (#1743)
Signed-off-by: Doug Walker <doug.walker@autodesk.com>

Signed-off-by: Doug Walker <doug.walker@autodesk.com>
2023-01-04 16:00:36 -05:00
Rémi AchardandDoug Walker 051241c9f1 Fix minizip-ng CMake args passing (#1741)
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-01-04 15:14:21 -05:00
Cédrik FuocoandDoug Walker 1d126b56e9 Adsk Contrib - Improve naming of ICC-based displays on Windows (#1742)
* Adding a method to get the Monitor's userFriendlyName if available

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

* Removing the slashes at the start of the display name

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

* Adding descriptions and comments.
Adding troubleshooting script that print the monitor display name and ICC profile path.

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

* no message

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

* Comments

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

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2023-01-03 23:40:07 -05:00
Cédrik FuocoandDoug Walker 6d7c4791f1 Adsk contrib - Fix issue with is colorspace linear (#1734)
* Throw when the colorspace is undefined for isColorSpaceLinear method. (+ unit test)

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

* Typo

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

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2022-12-22 20:48:34 -05:00
Cédrik FuocoandDoug Walker 907ed3be17 Adsk contrib - Hiding minizip-ng symbols on Mac (#1729)
* Hiding minizip-ng symbols on Mac

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

* Fixing a linking issue related to the code that tries to hide expat symbols and small refactor to add robustness.

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

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2022-12-06 00:32:32 -05:00
Cédrik FuocoandDoug Walker 332462e7f5 Adsk contrib - Configure the OpenColorIO.pc file on Windows (#1720)
* Configure the OpenColorIO.pc file on Windows and fix an issue where CMAKE_INSTALL_PREFIX wasn't included in the cmake build command in ocio.bat.

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

* Removing pkconfig folder since that PC file is not used.

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

* Small tweak in the configuration of OpenColorIO.cmake.in to handle absolute path with CMAKE_INSTALL_LIBDIR or CMAKE_INSTALL_INCLUDEDIR.
Keeping exec_prefix for CMAKE_INSTALL_INCLUDE_DIR since it was changed for a specific issue on Mac (see PR #1120).

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

* Using ${prefix} for includedir

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

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2022-12-05 23:10:29 -05:00
Cédrik FuocoandDoug Walker 4fa775030a Adsk contrib - Processor cache does not detect changes in cccid (#1726)
* For Looks that has a FileTransform and for Colorspace with FileTransfrom, add the CCCID to the processor's cache key for that transform.

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

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

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

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

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

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

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

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

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

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

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

* Adding a test in FileTransform to test CollectContextVariables directly.

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

* Minor tweaks for the unit test

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

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2022-12-05 20:16:27 -05:00
Cédrik FuocoandDoug Walker 811902b37d Adsk contrib - Fix issue with minizip build (#1725)
* - Refactoring how OCIO search for minizip-ng. The first step is to search for an external minizip-ng. If not found, search for minizip-ng with MZ_COMPAT=ON (libminizip). If it is not found either, download and install minizip-ng with MZ_COMPAT=OFF.
- Removing the minizip-ng part for the includes for minizip-ng headers.

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

* Update comments

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

* Improved find_package in Config mode (adding it back)
Added missing scripts to install minizip-ng and zlib for the analysis workflow

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

* Adding +x permissions for install_minizip_ng and zlib
Fixing path to find zlib in install_minizip-ng.sh

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

* Changing target name to match the one used by minizip-ng library (+ using the imported target instead of creating a new one when minizip-ng is found)

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

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2022-12-05 17:33:12 -05:00
FantasqueXandDoug Walker b6e40f4fca CheckSupportSSE2: Fix sse flags unexpected propagation (#1721)
Set function will affects all variables in current directory. If sse
flags are added in CheckSupportSSE2.cmake, they will remain in
Findminizip-ng.cmake which will cause liblzma cannot be detected. This
patch keep CMAKE_REQUIRED_FLAGS being changed only in current file
scope. This patch has been tested on riscv64.

Signed-off-by: Letu Ren <fantasquex@gmail.com>

Signed-off-by: Letu Ren <fantasquex@gmail.com>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2022-12-02 22:34:58 -05:00
bartstyczenandDoug Walker d5cedbf551 replace texture2D function with texture for GLSL 1.3 (#1723)
Signed-off-by: Bart Styczen <bart.styczen@cine.dev>

Signed-off-by: Bart Styczen <bart.styczen@cine.dev>
Co-authored-by: Doug Walker <doug.walker@autodesk.com>
2022-12-02 19:56:03 -05:00
Cédrik Fuoco a00a48ff35 Increasing version to 2.3.0 (#1717)
Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>

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

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

* - Adding Studio config

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

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

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

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

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

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

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

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

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

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

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

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

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

* Use lossless optimization

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

* Handle NamedTransform used in Baker shaper space

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

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

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

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

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

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

* Update frozen Python API docs

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

* Add NamedTransform::GetTransform static function to public API

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

* Move function from NamedTransformImpl to NamedTransform

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

* Update Python frozen rst with API changes

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

* Update comment and variable naming

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* Adding ColorSpaceUtils

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

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

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

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

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

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

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

* Python Bindings

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

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

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

* Minor styling issues

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

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

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

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

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

* Fixing issue with documentation

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

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

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

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

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

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

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

* Using XXH3_128bits

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

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

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

* Bump cibuildwheel version

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

* Remove Python 3.6 from supported version, fix build warning

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

* Add python_requires to setup.cfg

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

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

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

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

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

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

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

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

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

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

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

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

* Adding python binding for isColorSpaceLinear and python unit test.

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

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

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

* Refactor Canon curves

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

* Add checkVersionConsistency test

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

* Update comment

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

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

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

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

* Add OCIOZ extension if not present.

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

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

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

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

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

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

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

* Update comments to be in line with the current implementations

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

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

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

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

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

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

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

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

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

* Windows CI fixes

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

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

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

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

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

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

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

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

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

* Build an CI minor improvements

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

* Fix ocioconvert output bitdepth support

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

* Fix explicit version request handling

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

* Try to fix OSL tests

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

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

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

* Deleted Extra Space

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

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

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

* Generating configs header into generated_include folder

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* Python bindings

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

* Fixing styling issues and minor modifications in python unit tests

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

* Fixing problem with test_create_builtin_config

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

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

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

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

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

* missing spaces in comments.

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

* Adding display name and getBuiltinConfigUIName.

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

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

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

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

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

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

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

* minor fixes

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

* A more Pythonic interface

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

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

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

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

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

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

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

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

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

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

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

* Fixed an issue with spaces in python path

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

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

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

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

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

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

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

* Fix issue with operator precedence warning on Linux

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

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

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

* Fix issue with --gpu path

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

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

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

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

* Removing GLEW_LIBRARY variable as it is not needed

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

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

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

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

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

* Typo for the windows action in ci workflow

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

* Typo for the windows action in ci workflow

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

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

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

* Fix Windows build

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

* Allow comments in entries section

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

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

* Address review comments

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

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

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

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

* Add Baker display / view to python bindings

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

* Use in/out parameters for shaper range

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

* Use relative float checks for CTF

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

* Support look when baking display / view

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

* Improve documentation

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

* Address PR feedback

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

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

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

* Make OpenColorIO_SKIP_IMPORTS public

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

* Avoid exporting header only libs in static builds

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

* Fix cpu unit test linkage

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

* Explain the look syntax fallback

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

* Fix typos

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

* Improve OFX building documentation

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

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

* Fix typo

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

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

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

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

* Docs compilation on *mix plateforms only

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

* Improve the third-party library install

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

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

* Improve the symbol control

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

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

* Minor fixes

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

* Removing python shallow copy method

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

* Update comment and formating

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

* Testing COnfig FileRules deepCopy

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

* Add comment for ConfigTest

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

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

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

* Fix a typo

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

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

* Use $<SEMICOLON> generator expression to escape semicolon

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

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

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

* Trim superfluous UI branches

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

* Remove internal Platform use

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

* Update buildProgram() call

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

* Update Xcode 9 projects

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

* Fix lcms version in Xcode 9

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

* Update Xcode 12 projects

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

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

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

* Update Visual Studio projects

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

* Bump version to 2.2.0

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

* Get rid of duplicate #include <cctype>

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

* Add ARM64 architecture

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

Co-authored-by: Patrick Hodoul <patrickhodoul@gmail.com>
2021-12-16 09:16:22 -05:00
doug-walker 0376c02d02 Update CLF test image from CLF working group (#1563)
Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>
2021-12-16 08:17:32 -05:00
00b5362442 Adds Metal Support to ociodisplay and enables running GPU tests with Metal backend (#1538)
* * Adds Metal Shading Language (MSL) Generation support

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

Co-authored-by: Ingthor Hjalmarsson <ihjalmarsson@apple.com>
Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com>

* * Fixes warnings triggered due to unused variables.

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

* * Fixes compilation error on Mac and Windows:
- vector of const objects causing compiler errors on windows.
- Wrong string was used for Metal language python binding.

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

* * Removes class wrapping interface from OpenColorIO interface and move it to implementation
* Adding more tests for metal code path
* Proper generated Metal code indentation
* Fixes a few coding style inconsistencies and unneeded include files

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

* Remove the unneeded empty line to reset OpenColorIO.h to what it was before the metal change.

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

* * switching from c-like getFunctionParameters function to c++-like one since it is not in the opencolorio interface anymore.

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

* Missing include causing compiler errors on windows

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

* * Fixes and improvements follow up to change that was trying to move metal related code in implementation, and hide them from OCIO interface.

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

* - remove unused variables.

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

* * Adds support for uniform parameters and proper handling of them in metal code.
* Adds two new tests for uniforms and helper functions.

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

* * making declaration parsing more C++-like. Functions like sscanf are problematic when it comes to multiple platform support and may not be safe

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

* * Switching from clf/lut1d_half_domain_raw_half_set.clf  to clf/lut1d_long.clf. Due to decimal number outputting difference between different platforms, some tests were failing.

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

* * Moving Metal only functionalities to MetalClassWrappingInterface
* remove unnecessary functions and data types
* code clean up and quality improvement

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

* * Adds support for uniforms that are array
* Removing getTextureKeyword() and getTextureDeclaration() as they are not needed.
* code clean up and quality improvement

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

* Remove unnecessary changes to GpuShaderUtils_tests.cpp

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

* * Removed unnecessary included files

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

* Removing unnecessary include

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

* * Apply style improvement suggestions

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

* * changed from msl_metal to msl_2 so it matches with `GpuLanguageFromString` function.

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

* Move MetalShaderClassWrappingInterface to a separate file and generalise it

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

* header files inlcudes clean up

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

* Still the else path is needed in case we set language from MSL2 to something else.

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

* [minor] Showing the GpuShaderClassWrapper.h also in the vc15 aftereffect project.

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

* Run ClassWrapper function for all backends. It only produces code in metal shading language code generation case.
operator= for GpuShaderClassWrapper

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

* use factory pattern instead of updateClassWrappingInterface

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

* Replace assignment operator with clone function that is more explicit.

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

* use Assignment operator instead of setting members in clone member function

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

* add include guards.

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

* make output of MetalShaderClassWrapper::operator= non-const

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

* Update default branch name (#1532)

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

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

* Adsk Contrib - Default to C++14 and remove OIIO from ocioperf (#1516)

* Adsk Contrib - Default to C++14 and remove OIIO from ocioperf

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

* Fix cmake breaks

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

* Fix bit-depths

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

* Fix Linux build break

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

* Improve the image generation

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

* Improve the image generation

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
Signed-off-by: Morteza Mostajab <smostajabodaveh@apple.com>

* Add metal rendering support to ociodisplay

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

* Adds support for metal only input texture

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

* Returning correct value for maximum texture width

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

* Add GPU rendering tests for metal renderer
Fixes incorrect shader generation code for arrays in uniform buffer
Adds support for vector comparison in Metal

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

* Fixes failing test_cpu_exec test
Fixes compilation error on Linux, older clang compiler
Makes the app working on x64 Macs

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

* Add support for test that apply color correction multiple times with different setups
replaces asserts with exception
Disables fast math to get more accurate results

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

* Matching the uniform buffer size elements for array of ints and float to fix two gpu tests

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

* enables -gpuinfo to print shader

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

* Revert "Matching the uniform buffer size elements for array of ints and float to fix two gpu tests"

This reverts commit c1695e20b336c54c618a541cc47311a61399457b.

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

* Enables uniform data binding for metal without touching OCIO interface

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

* set dummy buffers for the vectors that are empty.

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

* Update metal test to reflect latest changes in metal shader generator

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

* Improving coding style
Adds metal gpu unit tests to the one executing

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

* Updating the test so it reflects latest code changes.

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

* sets the opengl state even when no valid ocio config is loaded.

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

* Handles metal resources lifecycles correctly. Fixes the crash on transform change.

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

* Applying improvements to code and minor fixes

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

* Disable testing NaN and Infinity on Apple Silicon that causes test failures and precision errors

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

* make the condition for disabling NaN and INFs more accurate.

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

* Improving code quality
Fixing possible texture mem leaks

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

Co-authored-by: Ingthor Hjalmarsson <ihjalmarsson@apple.com>
Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
Co-authored-by: Michael Dolan <michdolan@gmail.com>
2021-12-13 17:18:21 -05:00
Rémi AchardandPatrick Hodoul 3c1262cf34 Fixes C++20 compilation errors and warnings (#1542)
* Remove unneeded explicit default causing warnings

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

* Add Python 3.10 to the list of supported version

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

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

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

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

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

* Fix comment encoding

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

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

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

* Fix warning on MD5 alignment check

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

* Add festure macro header

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

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

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

* Add GPU fix and test

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

* Tweak var name

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

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

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

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

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

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

* Bump yaml-cpp minimum version to 0.7.0

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

* Bump expat minimum version to 2.4.1

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

* ExternalProject build on Windows were always debug

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

* Expand analysis workflow and allow for ExternalProject latest

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

* Add missing ci script

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

* Handle OCIO_INSTALL_EXT_PACKAGES set to NONE

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

* Enable mac OS Python 3.10 wheels

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

* Remove latest version override for non-ASWF dependencies

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

* Install OSL latest in analysis CI

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

* Add pugixml install script, build in release mode

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

* Fix test dependency install on Windows CI

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

* Adjust ext versions

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

* Update analysis workflow trigger condition

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

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

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

* Fix the Windows path in the unit test validations

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

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

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-12-01 15:05:32 -05:00
Patrick Hodoul 5dc9c51049 Adsk Contrib - Default to C++14 and remove OIIO from ocioperf (#1516)
* Adsk Contrib - Default to C++14 and remove OIIO from ocioperf

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

* Fix cmake breaks

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

* Fix bit-depths

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

* Fix Linux build break

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

* Improve the image generation

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

* Improve the image generation

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-11-23 15:40:25 -05:00
Michael DolanandPatrick Hodoul 64dccadba1 Update default branch name (#1532)
Signed-off-by: Michael Dolan <michdolan@gmail.com>

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

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

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

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

* Add FIXME comments.

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

* Add -C flag to ctest commands.

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

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

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

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

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

Co-authored-by: Ingthor Hjalmarsson <ihjalmarsson@apple.com>
Signed-off-by: Morteza Mostajab <smostajabodaveh@Apple.com>

* * Fixes warnings triggered due to unused variables.

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

* * Fixes compilation error on Mac and Windows:
- vector of const objects causing compiler errors on windows.
- Wrong string was used for Metal language python binding.

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

* * Removes class wrapping interface from OpenColorIO interface and move it to implementation
* Adding more tests for metal code path
* Proper generated Metal code indentation
* Fixes a few coding style inconsistencies and unneeded include files

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

* Remove the unneeded empty line to reset OpenColorIO.h to what it was before the metal change.

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

* * switching from c-like getFunctionParameters function to c++-like one since it is not in the opencolorio interface anymore.

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

* Missing include causing compiler errors on windows

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

* * Fixes and improvements follow up to change that was trying to move metal related code in implementation, and hide them from OCIO interface.

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

* - remove unused variables.

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

* * Adds support for uniform parameters and proper handling of them in metal code.
* Adds two new tests for uniforms and helper functions.

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

* * making declaration parsing more C++-like. Functions like sscanf are problematic when it comes to multiple platform support and may not be safe

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

* * Switching from clf/lut1d_half_domain_raw_half_set.clf  to clf/lut1d_long.clf. Due to decimal number outputting difference between different platforms, some tests were failing.

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

* * Moving Metal only functionalities to MetalClassWrappingInterface
* remove unnecessary functions and data types
* code clean up and quality improvement

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

* * Adds support for uniforms that are array
* Removing getTextureKeyword() and getTextureDeclaration() as they are not needed.
* code clean up and quality improvement

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

* Remove unnecessary changes to GpuShaderUtils_tests.cpp

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

* * Removed unnecessary included files

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

* Removing unnecessary include

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

* * Apply style improvement suggestions

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

* * changed from msl_metal to msl_2 so it matches with `GpuLanguageFromString` function.

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

* Move MetalShaderClassWrappingInterface to a separate file and generalise it

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

* header files inlcudes clean up

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

* Still the else path is needed in case we set language from MSL2 to something else.

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

* [minor] Showing the GpuShaderClassWrapper.h also in the vc15 aftereffect project.

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

* Run ClassWrapper function for all backends. It only produces code in metal shading language code generation case.
operator= for GpuShaderClassWrapper

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

* use factory pattern instead of updateClassWrappingInterface

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

* Replace assignment operator with clone function that is more explicit.

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

* use Assignment operator instead of setting members in clone member function

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

* add include guards.

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

* make output of MetalShaderClassWrapper::operator= non-const

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

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

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

* -ConfigTest: Addressed feedbacks.

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

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

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

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

This commit introduces the following:

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

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

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

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

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

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

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

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

* Moved UNICODE and _UNICODE definitions to CMake

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

* handle empty strings and use const references

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

* only use wenviron when unicode is enabled

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

* add ANSI Win32 version of Getenv

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

* Add CMake option for compiling with Win32 Unicode support

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

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

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

* Throw OCIO Exception

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

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

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

* Fix CMake error

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

* minor CMake adjustment

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

* Clarified CMake option for Win32 unicode

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

* minor improvements

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

* fix macro in cpu test cmake

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

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

* Fix a Linux build break

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

* Fix a 'git rebase' break

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

* Some improvements

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

* Workaround to sucesfully link with OSL

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

* Found the right fix

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

* Add more tests for Grading ops

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

* Improve OSL library find

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

* Fix with OpenImageIO version requires C++14

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

* Another OSL cmake improvement

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

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

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

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

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

* Move to apps with README

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

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

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

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

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

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

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

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

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

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

* Remove hardcoded lib prefix in RPATH handling

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

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

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

* Try to fix some memory issues report by valgrind

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

* Improve ctest support and add another check for OpenImageIO

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

* Fix Windows build failure

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

* Fix binary names on Windows

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

* Improve code around FixedFunction Ops

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

* Improve ctest support

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

* Fix cmake

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

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

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

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

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

Fixes #1486

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

* GLSL ES: remove ABI break

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

* OpenGLBuilder: use switch to check GLSL version

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

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

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

Fixes #1482.

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

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

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

* Add Rémi Achard to COMMITTERS.md

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

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

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

* Improve the OIIO Util library support

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

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

* Avoid hardcoding install paths

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

* Update remaining hardcoded install paths

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

* Replace LIB_SUFFIX by CMAKE_INSTALL_LIBDIR

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

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

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

* Add the OpenImageIO_Util dependency to OSL unit test framework

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

* Fix oiio typo

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

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

* Update the CHANGELOG file

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

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

* Improve the code following the PR comments

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

* Improve the OSL unit test framework

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

* Improve OSL detection & unit test coverage

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

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

* Remove a wrong comment

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

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

* Add unit test suite to PyOpenColorIO package

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

* Misc improvements

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

* Remove test files duplication, ship full set

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

* Prepare GH script for release

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

* Fix rebase master

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

* Add support for Apple Silicon

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

* Update release version number from Readme

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

* Dynamic version number for python package

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

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

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

* Add virtual display test, missing methods

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

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

* Fix typo

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

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

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

* Add missing override qualifier

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

* Add OCIODisplay and update OCIOColorSpace UX

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

* Fix warnings, add overridde specifiers

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

* Fix C/C++ conflict

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

* Rename default to default_value

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

* Disable unused-parameter warning

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

* Add context variable override parameters

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

* Update param tooltips

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

* Add color space swap button, revert context impl

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

* Add context variable persistence

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

* Make context store param secret

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

* Fix sign compare warning

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

* Implement PR feedback

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

* Add missing color space, display, and view support

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

* Add notes and missing break

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

* Add OpenFX license to THIRD-PARTY.md

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

* Fix OCIOProcessor initialization

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

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

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

* Update CI jobs

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

* Test analysis workflow

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

* Update analysis_workflow.yml

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

* Make install_imath.sh executable

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

* Get latest from release branch

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

* Latest OIIO requires C++14

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

* Revert CI test changes

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

* Bump to Imath 3.0.5, use IlmBase for GPU CI

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

* Document Imath and IlmBase half options

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

* Use half-float conversion algorithm

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

* Refactor half include

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

* Bump Imath version to 3.1.2

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

* Force integer for Half.h macro

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

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

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

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

* Add some explanations

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

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

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

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

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

* 'PYTHON_PATH' instead of 'PYTHONPATH'

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

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

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

* Fix issue with large Lut1D neg values

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

* Add two more parse tests

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

* Fix non-SSE test tolerance

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

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

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

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

* Test CMake config export consuming

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

* Fix CMake build type

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

* Explicitly silence MSVC warning 4275

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

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

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

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

* Amendments based on review comments:

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

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

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

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

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

* Add NaN checks back and refactor GPU shader

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

* Precompute y intersect for CPU Op

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

* Refactor parameter bound check

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

* Fix ocioperf GPU shader creation issue

Raising "Dynamic property already here" exception

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

* Code cleanup, address reviews

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

* Rename BuiltIn and FixedFunction transforms

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

* Refactor CPU renderer

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

* Improve tests

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

* Add link to testing dataset generation code

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

* Remove wrong comment

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

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

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

* Adjust comment and formating

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

* Refactor GPU op

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

* Fix std::pow usage

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

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

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

* Extend parameters limits and move clamp to validate

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

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

Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-07-06 01:04:10 -04:00
Patrick Hodoul e63ce1ccd4 Adsk Contrib - Fix a bug with the Vc++ compilation flags. (#1419)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-07-06 00:06:13 -04:00
Patrick Hodoul 02a687110f Adsk Contrib - Fix FixedFunctionTransform::CreateEditableCopy() (#1418)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-07-05 23:25:45 -04:00
76ddf44fb2 Adsk Contrib - Improve File Rules support for v1 configs (#1417)
* Adsk Contrib - Improve file rules for v1 configs

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Adsk Contrib - Emergency GPU build fix (#1391)

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Adsk Contrib - Fix some bugs found by Maya and SonarCloud (#1403)

* Adsk Contrib - Fix some bugs found by Maya and SonarCloud

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix a Windows warning

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* After Effects and Photoshop plug-in updates (#1373)

* Set Mac OS deployment target to 10.10

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* More 10.10 targets

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Ditch ADD_EXTRA_BUILTINS

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Getting strange callback when AE effect is pasted

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Use NDEBUG in AE project

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Disable radio buttons with no config

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update version

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Move to AE 2021 SDK, set PF_OutFlag2_MUTABLE_RENDER_SEQUENCE_DATA_SLOWER

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Define OCIO_DEPRECATED in After Effects builds

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Verify change from color space menu

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Handle situation where color space has a '/' in it

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Windows family separator fix

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Invert everything

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Invert everything Windows

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Disable more controls

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Incorporate invert into LUT export

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Get rid of fullPaths stuff

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Fix changed config settings retention

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Add OpenColorIOConfig.cmake generation (#1397)

* Initial OpenColorIO Config CMake implementation

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Remove macro, improve documentation

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Use CMake visibility flags (#1411)

* Update install doc minimal version numbers

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Use CMake visibility presets variables

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Fix python package case

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Allow advanced user to override symbol visibility

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix Windows build

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Update include/OpenColorIO/OpenColorIO.h

Co-authored-by: Michael Dolan <michdolan@gmail.com>
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Update src/OpenColorIO/FileRules.cpp

Co-authored-by: Michael Dolan <michdolan@gmail.com>
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Hide dependency symbol visibility (#1409) (#1416)

When creating libOpenColorIO.so, we lacked the linker commands that
hide symbol visibility from the dependent libraries, which is
necessary to prevent OCIO from exporting the symbols from Expat and
the other dependencies that OCIO needs to use internally but is not
trying intentionally to expose via its API.

Failing to do this can result in symbol clashes and all sorts of
subtle errors if OCIO is used in an app that also uses and is linked
against a potentially different version of Expat (or any of the other
deps).

Signed-off-by: Larry Gritz <lg@larrygritz.com>

Co-authored-by: Larry Gritz <lg@larrygritz.com>
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Adsk Contrib - Improve DX11 & Cg fragment shader language support (#1406)

* Adsk Contrib - Improve DX11 support

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Improve Cg support

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Improve GPU comments

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix unit test failures

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

Co-authored-by: Brendan Bolles <brendan@fnordware.com>
Co-authored-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Michael Dolan <michdolan@gmail.com>
Co-authored-by: Larry Gritz <lg@larrygritz.com>
Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-07-05 20:58:34 -04:00
Patrick Hodoul a36a5bea82 Adsk Contrib - Various code & doc cleanups (#1414)
* Adsk Contrib - Various code & doc cleanups

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix more Python examples

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-07-05 19:59:01 -04:00
Patrick Hodoul 856f604f2d Adsk Contrib - Improve DX11 & Cg fragment shader language support (#1406)
* Adsk Contrib - Improve DX11 support

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Improve Cg support

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Improve GPU comments

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-06-28 10:04:06 -04:00
Patrick HodoulandLarry Gritz 5445d37bf9 Hide dependency symbol visibility (#1409) (#1416)
When creating libOpenColorIO.so, we lacked the linker commands that
hide symbol visibility from the dependent libraries, which is
necessary to prevent OCIO from exporting the symbols from Expat and
the other dependencies that OCIO needs to use internally but is not
trying intentionally to expose via its API.

Failing to do this can result in symbol clashes and all sorts of
subtle errors if OCIO is used in an app that also uses and is linked
against a potentially different version of Expat (or any of the other
deps).

Signed-off-by: Larry Gritz <lg@larrygritz.com>

Co-authored-by: Larry Gritz <lg@larrygritz.com>
2021-06-27 18:15:05 -04:00
Rémi AchardandPatrick Hodoul 85a22e2732 Use CMake visibility flags (#1411)
* Update install doc minimal version numbers

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Use CMake visibility presets variables

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Fix python package case

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Allow advanced user to override symbol visibility

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-06-15 08:23:59 -04:00
Rémi AchardandPatrick Hodoul ce70bbd730 Add OpenColorIOConfig.cmake generation (#1397)
* Initial OpenColorIO Config CMake implementation

Signed-off-by: Rémi Achard <remiachard@gmail.com>

* Remove macro, improve documentation

Signed-off-by: Rémi Achard <remiachard@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-06-15 00:19:53 -04:00
Brendan BollesandPatrick Hodoul 2e1a57780a After Effects and Photoshop plug-in updates (#1373)
* Set Mac OS deployment target to 10.10

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* More 10.10 targets

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Ditch ADD_EXTRA_BUILTINS

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Getting strange callback when AE effect is pasted

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Use NDEBUG in AE project

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Disable radio buttons with no config

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update version

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Move to AE 2021 SDK, set PF_OutFlag2_MUTABLE_RENDER_SEQUENCE_DATA_SLOWER

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Define OCIO_DEPRECATED in After Effects builds

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Verify change from color space menu

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Handle situation where color space has a '/' in it

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Windows family separator fix

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Invert everything

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Invert everything Windows

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Disable more controls

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Incorporate invert into LUT export

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Get rid of fullPaths stuff

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Fix changed config settings retention

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-06-02 11:21:10 -04:00
Patrick Hodoul 3abbe5b205 Adsk Contrib - Fix some bugs found by Maya and SonarCloud (#1403)
* Adsk Contrib - Fix some bugs found by Maya and SonarCloud

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix a Windows warning

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-05-28 11:06:45 -04:00
Patrick Hodoul dd59baf555 Adsk Contrib - Emergency GPU build fix (#1391)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-05-11 14:04:52 -04:00
Patrick Hodoul 40effe20e9 Adsk Contrib - Improve the context variable validation (#1387)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-05-03 15:24:17 -04:00
Patrick Hodoul 8ba05b3989 Adsk Contrib - Add 'deprecated' C++ mechanism & cleanup code (#1372)
* Adsk Contrib - Flag deprecated methods

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Adjust the documentation

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-05-01 08:07:31 -04:00
Patrick Hodoul dd03ea037c Adsk Contrib - Fix CDL issue (#1370)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-04-27 08:09:09 -04:00
Patrick Hodoul 9b3ac193d5 Adsk Contrib - More code cleanup (#1365)
* Adsk Contrib - More code cleanup

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix build breaks

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-04-22 07:10:30 -04:00
df1bf14060 [README.md] Fix link (#1355)
Signed-off-by: Samuel Marks <807580+SamuelMarks@users.noreply.github.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
Co-authored-by: Michael Dolan <michdolan@gmail.com>
2021-04-14 20:40:35 -04:00
kanakgautamandPatrick Hodoul e84d9a9d1f Fix: broken doc links (#1326)
* Fix: broken doc links

Signed-off-by: kanak gautam <kanakgautam5@gmail.com>

* replace export -> include

Signed-off-by: kanak gautam <kanakgautam5@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-04-14 17:01:14 -04:00
Patrick Hodoul 996aa1aae1 Adsk Contrib - Fix the legacy GPU path (#1352)
* Adsk Contrib - Fix the legacy GPU path

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Re-enable legacy GPUShaderDesc

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix Documentation generation failure

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Improve the deprecated comment

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Add version removal

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-04-09 11:06:55 -04:00
Patrick Hodoul c1e8e26f3c Adsk Contrib - Chnage the version of the master branch (#1354)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-04-09 10:10:23 -04:00
Patrick Hodoul 1f622e9986 Adsk Contrib - Add negative stride support for CPU processing (#1353)
* Adsk Contrib - Add negative x & y stride support for CPU processing

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix Windows build warnings

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix Windows build warnings

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-04-09 08:26:28 -04:00
Patrick Hodoulanddoug-walker 2d4701e5ab Adsk Contrib - Improve the C++ version detection (#1351)
* Adsk Contrib - Set C++17 as the default C++ version

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Follow the TSC recommendation

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Minor improvement

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Isolate the C++ version detection from warnings related to custom CXX flags

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* MacOs - Fix sanitization errors i.e. '-fsanitize=address'

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-04-08 23:20:30 -04:00
Patrick Hodoul 87d3109de9 Adsk Contrib - Fix 'setup_ocio' script support (#1350)
* Adsk Contrib - Fix 'setup_ocio' script support

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* As agreed, remove the Nuke env. variables

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-04-06 13:02:02 -04:00
Patrick Hodoul 4e27f9672a Adsk Contrib - Propagate the MacOs min. version (#1340)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-03-31 16:26:37 -04:00
Patrick Hodoul 3bf78a6acd Adsk Contrib - Fix env. variable name (#1339)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-03-30 14:51:53 -04:00
Patrick Hodoul 743a7977db Adsk Contrib - Add the RPATH support (#1338)
* Adsk Contrib - Add the RPATH support

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix the rpath for the Python Binding dynamic library

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix a typo for the Linux rpath

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-03-30 10:36:03 -04:00
Patrick Hodoul 8a21b63b29 Adsk Contrib - Fix some issues reported by SonarCloud (#1337)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-03-30 08:37:10 -04:00
Patrick Hodoul 7208399ad1 Adsk Contrib - Misc. improvements (#1336)
* Adsk Contrib - Misc fixes

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Few improvements

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-03-29 18:10:04 -04:00
zachlewisandPatrick Hodoul d9a2a5fa80 Convert public headers to doxygen style (#1315)
* // WIP convert header docs to doxygen style

Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>

* Adjust reference syntax

From ":cpp:func:`Foo::bar`" to "\ref Foo::bar". This seems to pacify some build warnings and clean up the C++ docs a little, but it doesn't seem to improve issue #1265

Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>

* Expose documentation for FileRules, Config, MatrixTransform::setOffset

Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>

* Expose more documentation: Looks, Context Variables

Minor cleanup and adjustments

Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>

* Expose GpuShaderCreator usage example

Promote usage example up to the class-wide documentation
Change numbered list to simple bullets -- there seems to be a problem with orderedlists...?

Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>

* Missed a change

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>

* Expose `GpuShaderDesc` fragment shader example code

Not sure why the topmost "border" forward slashes are not rendering...

Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>

* Tidy up conversion to doxygen style

Specify language for code demonstrations

Improve readability of header comments

Clean up "TODO" comments re: moving to rst

Convert remaining comments to RST syntax

Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>

* Rebuild frozen docs

Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>

* Adjust line wrapping in one particularly egregious instance

Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>

Co-authored-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2021-03-27 08:38:30 -04:00
Henry WilkinsonandPatrick Hodoul c687558efd Website build process minor readme updates (#1331)
* Adds minification to website build process

Signed-off-by: Henry Wilkinson <henry@wilkinson.graphics>

* Updates YouTube reel with new link

Matches website update

Signed-off-by: Henry Wilkinson <henry@wilkinson.graphics>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-03-26 18:18:43 -04:00
Brendan BollesandPatrick Hodoul 0021372b4d Update After Effects and Photoshop plug-ins (#1303)
* Update AE plug-in

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update AE Xcode projects

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update Photoshop plug-in

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update Photoshop Xcode project

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update Visual Studio projects

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update OpenColorABI.h

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Fail if glew not downloaded

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Renamed functions

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update Xcode project

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Function name changes

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update Visual Studio project

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Sort config menu

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Sort Photoshop config menu

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Toss old include

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Grow menus

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Extra semicolon

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Categories on Mac

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Encodings menu on Mac

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update OpenGL calls

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Categories on Mac

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Encodings menu on Mac

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Add separator better

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* ADD_EXTRA_BUILTINS in Xcode

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Device, Transform -> Display, View

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* ADD_EXTRA_BUILTINS in VC

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Categories and Encodings on Win

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Photoshop plug-in bugs

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Get rid of Class retrieval

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Family Separator assert

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Stop using OPTIMIZATION_LOSSLESS in Photoshop plug-in

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Switch to AE 2020 SDK in Xcode

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Improve sequence data calls for multi-frame rendering

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Xcode 12 projects

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Xcode 12 Photoshop changes

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Fox Globals allocation

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Update to latest SDKs on Win

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Rejigger sequence data and external dependency handling

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Exception safety

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Need a mutex for GPU rendering

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Forgot to return

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Whoops, wasn't setting default ArbData

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

* Reserve some seq_data bytes for alignment

Signed-off-by: Brendan Bolles <brendan@fnordware.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-03-22 19:10:26 -04:00
Neil Wilson 7b0adabf9d added cineSync to supported applications (#1349)
* added cinesync to supported applications

Signed-off-by: Neil Wilson <neilw@cinesync.com>

* Changed cinSyncs position so the list is still alphabetical

Signed-off-by: Neil Wilson <neilw@cinesync.com>
2021-03-22 17:32:08 -04:00
Mei ChuandPatrick Hodoul c4a4b2bcd6 Update Lut1DTransformTest and Lut3DTransformTest (#1328)
* Update Lut1DTransformTest and Lut3DTransformTest
- Conform those tests with TransformsBaseTest.

Signed-off-by: Mei Chu <meimchu@gmail.com>

* -Lut3DTransformTest python bug fix.

Signed-off-by: Mei Chu <meimchu@gmail.com>

* - Adding Bernard Lefebvre to the COMMITTERS page!

Signed-off-by: Mei Chu <meimchu@gmail.com>

* - Fixed due to misunderstanding.

Signed-off-by: Mei Chu <meimchu@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-03-18 10:11:36 -04:00
Brendan Bolles 9fc12b178d Mention Photoshop plug-in and fix links (#1335)
Signed-off-by: Brendan Bolles <brendan@fnordware.com>
2021-03-15 22:44:11 -04:00
9b23e96237 Topics seperated into paragraphs (#1329)
Signed-off-by: kanak gautam <kanakgautam5@gmail.com>

Co-authored-by: Michael Dolan <michdolan@gmail.com>
Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-03-02 22:11:10 -05:00
Patrick Hodoulanddoug-walker 0d04b512f6 Adsk Contrib - Fix some GLSL version mismatches. (#1306)
* Adsk Contrib - Fix GLSL version on MacOS

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Missed a change

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-03-02 21:37:40 -05:00
Henry WilkinsonandMichael Dolan 94ca1fc2f0 Update OCIO Website documentation Readme.md (#1300)
* Update OCIO Website documentation Readme.md

Adds commands in nice boxes with syntax highlighting, better Markdown formatting, and clearer steps for building the OCIO homepage.

Updates based on @carolalynn22 suggestions

Implements above suggestions!  Good ideas :)

Signed-off-by: Henry Wilkinson <henry@wilkinson.graphics>

* Fixes typo

Oops!

Signed-off-by: Henry Wilkinson <henry@wilkinson.graphics>

Co-authored-by: Michael Dolan <michdolan@gmail.com>
2021-03-02 20:31:35 -05:00
Patrick HodoulandMichael Dolan 543bec7a15 Adsk Contrib - Various build fixes (#1324)
* Adsk Contrib - tests/cpu/CMakeLists.txt Fix

Signed-off-by: Patrick Hodoul Patrick.Hodoul@autodesk.com

Quick fix to include a missing unit test.

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Update OpenColorAppHelpers.h

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

Co-authored-by: Michael Dolan <michdolan@gmail.com>
2021-02-25 18:42:39 -05:00
Henry WilkinsonandPatrick Hodoul 8714f81a96 Fixes website overflow on mobile (#1299)
- Fixes overflow of hero logo
- Fixes overflow of video

Both of these caused a scroll bar to appear that went beyond the page content and now they do not!

Signed-off-by: Henry Wilkinson <henry@wilkinson.graphics>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-02-25 13:34:22 -05:00
kanakgautam 803d71ac76 Minor Typo Fix (#1320)
Signed-off-by: kanak gautam <kanakgautam5@gmail.com>
2021-02-22 23:15:25 -05:00
Carol Payne a10ce91d0a GSoC 2021 Project Ideas (#1316)
* TSC Notes for 021521

Signed-off-by: Carol Payne <carolp@netflix.com>

* TSC Notes 021521 update

Signed-off-by: Carol Payne <carolp@netflix.com>

* GSoC 2021 Project Ideas

Signed-off-by: Carol Payne <carolp@netflix.com>

* GSoC 2021 Project Ideas - fix

Signed-off-by: Carol Payne <carolp@netflix.com>

* GSoC 2021 - adressing comments

Signed-off-by: Carol Payne <carolp@netflix.com>

* GSoC 2021 - blank line

Signed-off-by: Carol Payne <carolp@netflix.com>
2021-02-19 00:07:33 -05:00
Mei ChuandPatrick Hodoul 99c5f40af4 Created a TransformsBaseTest module. (#1288)
* Created a TransformsBaseTest module.
Moving some unit testing of Transforms module to a base class.

Signed-off-by: Mei Chu <meimchu@gmail.com>

* Updated four transforms tests to use TransformsBaseTest.
- AllocationTransformTest
- BuiltinTranformTest
- CDLTransformTest
- ColorSpaceTransformTest
Updated to add a space at the end of TransformBaseTest per feedback.

Signed-off-by: Mei Chu <meimchu@gmail.com>

* Updated four transforms tests to use TransformsBaseTest.
- DisplayViewTransformTest
- ExponentTransformTest
- ExponentWithLinearTransformTest
- ExposureContrastTransformTest
- FileTransformTest
- FixedFunctionTransformTest
- LogTransformTest
- LookTransformTest

Signed-off-by: Mei Chu <meimchu@gmail.com>

* Address feedback https://github.com/AcademySoftwareFoundation/OpenColorIO/pull/1288#discussion_r565265034

Signed-off-by: Mei Chu <meimchu@gmail.com>

* Updated a few transforms unit tests with TransformsBaseTest.

Signed-off-by: Mei Chu <meimchu@gmail.com>

* Updated to prioritize setUp methods first in individual python unit tests.

Signed-off-by: Mei Chu <meimchu@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-02-17 14:50:47 -05:00
Bernard LefebvreandPatrick Hodoul 9503777690 More LUT python tests (#1293)
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-02-17 13:22:16 -05:00
Michael Dolan d5de710128 Add TSC meeting notes for 02-08-2021 (#1305)
Signed-off-by: Michael Dolan <michdolan@gmail.com>
2021-02-15 18:05:40 -05:00
doug-walkerandPatrick Hodoul 775f611bbe Adjust docs for v2 release (#1295)
* Adjust docs for v2 release

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

* Remove alias wording, reverse frozen docs

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

* Describe more new features

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

* Add demo config

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-02-04 16:05:00 -05:00
Michael Dolan 6ce333f443 Add config wg meeting notes for 01-19-2021 (#1273)
* Add config wg meeting notes for 01-19-2021

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Corrections from review

Signed-off-by: Michael Dolan <michdolan@gmail.com>
2021-01-31 16:23:31 -05:00
Michael DolanandPatrick Hodoul 0d4dba07b8 Add TSC meeting notes for 01-18-2021 (#1269)
* Add TSC meeting notes for 01-18-2021

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Update Sean Cooper's company

Signed-off-by: Michael Dolan <michdolan@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-01-31 13:28:15 -05:00
Bernard Lefebvre bc88857f48 Fix applyRGB (#1291)
Copy config name

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
2021-01-26 17:58:22 -05:00
Bernard Lefebvre 87f09ecad5 Test forgot to declare logger and fails if numpy is missing (#1290)
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
2021-01-26 17:11:43 -05:00
Bernard Lefebvreanddoug-walker 6d46d8468a Release v2 (#1279)
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-01-25 11:07:14 -05:00
doug-walker 83392109b6 Adsk Contrib - Add new ACES builtin transforms (#1281)
* Add new builtin transforms

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

* Add more transforms

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

* Adjust builtin naming

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>
2021-01-25 11:03:01 -05:00
Michael Dolan 73be29a4ba Add UNIFORM_FLOAT3, setStrictParsingEnabled to PyOpenColorIO (#1280)
Signed-off-by: Michael Dolan <michdolan@gmail.com>
2021-01-24 13:45:06 -05:00
Michael Dolan 081b8de4d2 Restructure PyOpenColorIO, complete PyGpuShaderDesc (#1275)
* Restructure Python bindings, Complete PyGpuShaderDesc

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Update frozen docs

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Hide PySystemMonitors symbols

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Fix Python 2 CI failure

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Remove extra sys import

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Fix issue 1278, GroupTransform docs

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Update GroupTransform frozen docs

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Clean up PyGroupTransform class

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Update PyGroupTransform.write, PyConfig.__repr__

Signed-off-by: Michael Dolan <michdolan@gmail.com>
2021-01-22 15:20:49 -05:00
Bernard Lefebvreanddoug-walker 574ccd856e Adsk Contrib - More python tests and bindings fixes (#1274)
* More python tests and fixes:
- re-add commented tests.
- add new tests for FileRules.
- Fix issues outlined by tests.

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Adjust baker test to account for small differences

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Forgot to remove the complete string test

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* GroupTranform::write(), new enums, Lut1DTransform python tests

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Forgot files

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-01-22 12:10:17 -05:00
Bernard Lefebvreanddoug-walker 50e5d8b37d Adsk Contrib - Avoid NaN values in certain Lut1D arrays (#1272)
* Avoid NaN values in certain Lut1D arrays

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Make sure isnan is defined

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-01-22 11:17:31 -05:00
Frankie Eder c324ba5438 Transform Python Binding Fix (#1277)
* Fixed Python bindings Transforms polymorphism issue.

Signed-off-by: Frankie Eder <frankaeder@gmail.com>

* Added tests to catch future Transform polymorphism issues in Python bindings.

Signed-off-by: Frankie Eder <frankaeder@gmail.com>

* Updated tests to include default args.

Signed-off-by: Frankie Eder <frankaeder@gmail.com>
2021-01-21 21:45:24 -05:00
Michael DolanandPatrick Hodoul 8774ebf739 Use OIIO-provided CMake find module (#1266)
Signed-off-by: Michael Dolan <michdolan@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-01-21 08:34:46 -05:00
Bernard LefebvreandPatrick Hodoul d51962acf0 Fix issue #1262 (#1271)
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-01-21 07:24:05 -05:00
Bernard LefebvreandPatrick Hodoul c033d11ee3 Adsk Contrib - Python repr and LogCameraTransform fixes (#1270)
* Fix issues 1255 & 1256

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Revert unwanted rst changes

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-01-20 22:07:54 -05:00
Bernard LefebvreandPatrick Hodoul 8cf0211c3f Add roles to API and fixes (#1267)
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-01-20 20:23:20 -05:00
Bernard Lefebvre 7110425732 Adsk Contrib - Shader textures now available via Python (#1268)
* Issue 1263

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Update python frozen rst file.

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Fix python test

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Adjust python test

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
2021-01-20 12:26:00 -05:00
Bernard Lefebvre d71748bf79 Switch to rc1 (#1253)
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
2021-01-07 11:56:54 -05:00
Michael DolanandPatrick Hodoul 0aaec5eba2 Add Config working group notes for 12-15-2020 (#1238)
Signed-off-by: Michael Dolan <michdolan@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-01-07 08:06:00 -05:00
Bernard Lefebvre ebebc25b57 LegacyViewingPipeline and ColorSpaceMenuHelper (#1252)
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
2021-01-06 23:13:23 -05:00
cfc206886d Adsk Contrib - Fix grading inversion (#1245)
* Fix grading op inversion

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

* Fix dyn prop equality

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

* RGB curve inverse

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

* Add curve slopes

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

* Add serialization test

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

* Add frozen python docs

Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

* Adjust tests after merge from master (v2 is using from_scene_reference instead of from_reference)

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
Co-authored-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
Co-authored-by: Bernard Lefebvre <37628108+BernardLefebvre@users.noreply.github.com>
2021-01-06 12:31:58 -05:00
doug-walkerandPatrick Hodoul a63590f6fe Fix ACEScc and CIE XYZ built-ins (#1251)
Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-01-05 19:54:51 -05:00
Michael DolanandPatrick Hodoul 2655e3e064 Improve PyCPUProcessor NumPy support (#1249)
* Refactor PyCPUProcessor buffer handling

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Install/require NumPy for Python tests

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Document NumPy dependency, fix installation link

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Fix CMake include, Update frozen docs

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Make NumPy optional, improve docs

Signed-off-by: Michael Dolan <michdolan@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-01-05 18:12:46 -05:00
Bernard LefebvreandPatrick Hodoul 9a05ba1180 Adsk Contrib - Issues 1236 & 1243 (#1244)
* Issue 1243

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Update API documentation

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Revert most frozen rst files. Delete 2 src rst  files for removed functions

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Remove reference to deleted functions from API documentation

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Adjust merged files (from_reference did change to from_scene_reference)

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Add support for default_view_transform and improve config version handling

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Change function parameter name

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-01-05 16:39:48 -05:00
Michael DolanandPatrick Hodoul ae6c2a3679 Add TSC meeting notes for 01-04-2021 (#1248)
Signed-off-by: Michael Dolan <michdolan@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2021-01-05 14:27:54 -05:00
Bernard Lefebvre 80aeb723ac Adsk Contrib - Add color space aliases (#1241)
* Get aliases

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Add missing cast

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Fix other cast

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Cast issue continued

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Add aliases for named transforms

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
2021-01-05 10:00:51 -05:00
Bernard Lefebvreanddoug-walker 298d707a8e Adsk Contrib - Move AppHelpers to core (#1220)
* Move AppHelpers to core

Following up on the request from a recent TSC meeting, this PR moves the App Helpers code into the core library.  This adds no new third-party dependencies.  (The App Helpers code is intended to simplify the work of integrating OCIO into a real-world DCC application.)  Also, following up on another suggestion, the ViewingPipeline class was renamed LegacyViewingPipeline.

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Forgot to remove function declaration

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Add python exposure

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Fixing the build with DOC. Still have to update the rst doc files.

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Add filtering options to app helpers as described in issue 1222

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Fix merge issue

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Add missing destructor

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* cast issue

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2021-01-04 17:01:19 -05:00
Michael Dolan 54b0716096 Add TSC meeting notes for 12-14-2020 (#1237)
Signed-off-by: Michael Dolan <michdolan@gmail.com>
2021-01-04 16:28:05 -05:00
Michael Dolan 9592925274 Add TSC meeting notes for 12-07-2020 (#1232)
Signed-off-by: Michael Dolan <michdolan@gmail.com>
2021-01-04 14:53:04 -05:00
Michael Dolan 1d36d5b70e Fix AutoStride autodoc build (#1246)
Signed-off-by: Michael Dolan <michdolan@gmail.com>
2020-12-26 22:30:31 -05:00
Bernard Lefebvre 844978bbae Adsk Contrib - CDLTransform cleanup (#1221)
* CDLTransform cleanup

Rework CDLTranform interface to implement the proposal made in issue #1155.
CDLTransform can be created from a file and an id.
Files containing several CDL (such as ccc and cdl) can be loaded as GroupTransform to give a way to check the content of such CDLs.
Functions to get/set ID should be replaced by calls on the transform's formatMetadata.
Functions to get/set description have been renamed and documention has been added to explain how formatMetadata can be used.
FormatMetadata has helper functions to get/set common attributes 'name' and 'id'.
Write related functions have been moved to GroupTransform so that a processor does not have to be create to write a transform.

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Missing override keyword

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* FormatMetadata::addChildElement does not return a value, call to back() should have been removed with the return statement.

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Update RST files

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Revert rst files that have only white space changes or windows related changes

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
2020-12-16 19:08:59 -05:00
Patrick Hodoulanddoug-walker 55cbcf18b5 Adsk Contrib - Various file rule improvements (#1214)
* Adsk Contrib - Various file rule improvements

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix a merge issue

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2020-12-11 16:02:54 -05:00
Michael Dolan c35144d301 Add Config working group notes for 12-01-2020 (#1225)
* Add Config working group notes for 12-01-2020

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Implement fix/addition from review

Signed-off-by: Michael Dolan <michdolan@gmail.com>
2020-12-10 21:33:52 -05:00
Michael Dolan 444e38e288 Add TSC meeting notes for 11-30-2020 (#1224)
* Add TSC meeting notes for 11-30-2020

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Fix typos

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Implement PR suggestions

Signed-off-by: Michael Dolan <michdolan@gmail.com>
2020-12-10 08:32:58 -05:00
Michael DolanandPatrick Hodoul 6bfe3de4b1 Add Config working group notes for 11-20-2020 (#1217)
Signed-off-by: Michael Dolan <michdolan@gmail.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2020-12-10 01:07:25 -05:00
Michael Dolan 647b3e68b8 API Docs Implementation (#1197)
* Rework API docs and dependencies

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Refine doc generation

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Add frozendoc module for freezing autodoc RST

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Split Python docs between src and frozen

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Add expandvars extension for namespace handling

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Add frozen RST comparison tools

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Improve frozen docs error msg

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Update frozen docs and implement CI test

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Update frozen RST

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Add file diff debug output to diagnose CI failures

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Refine diff debug code

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Add handling for error tolerances when comparing RST

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Include diff in logs, support windoes paths

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Move diff to log, conform path slashes

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Fix warnings, debug windows Python path

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Debug Windows configure file

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Move conf.py configure_file to own statement

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Move path setup to cmake module, print debug messages

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Prevent overwiring configured conf.py

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Debug frozen doc comparison

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Debug RST freeze on Windows

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Debug all RST lines on Windows

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Raise exceptions caught in freeze extension

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Debug windows frozendoc steps

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Fix frozendoc encoding on windows

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Clean up doc configuration

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Disable frozen docs test on macOS and Windows

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Update frozen API docs

Signed-off-by: Michael Dolan <michdolan@gmail.com>
2020-12-09 00:28:25 -05:00
e0af06eac6 Add 2020-11-23 TSC mtg notes (#1219)
Signed-off-by: Doug Walker <Doug.Walker@autodesk.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
Co-authored-by: Michael Dolan <michdolan@gmail.com>
2020-12-07 14:00:45 -05:00
Bernard Lefebvreanddoug-walker a712243771 Adsk Contrib - Data bypass fix (#1229)
* Data bypass fix

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* beta 2

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Adjust some comments

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

Co-authored-by: doug-walker <43830961+doug-walker@users.noreply.github.com>
2020-12-04 19:29:28 -05:00
Bernard Lefebvre e412d8ab8d Adsk Contrib - Named color transforms (#1189)
* Named color transforms

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Allow NamedTransforms to be inactive using the same mechanism as color spaces.

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Wrong enum

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Fix issue introduced by merge from master (version checking for NamedTransform serialization in config)

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
2020-12-04 19:00:28 -05:00
Patrick Hodoul 73c1f753d7 Adsk Contrib - Remove the 'unknown' shader language (#1208)
* Adsk Contrib - Remove the 'unknown' shader language

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>

* Fix a code review comment

Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2020-12-04 12:42:09 -05:00
Michael Dolan 2ba304ec5a Fix build break: Bump pybind11 required version to 2.6.1 (#1228)
* Disable unneeded clang submodules

Signed-off-by: Michael Dolan <michdolan@gmail.com>

* Bump pybind11 required version to 2.6.1

Signed-off-by: Michael Dolan <michdolan@gmail.com>
2020-12-04 11:18:17 -05:00
Patrick Hodoul a271760a4c Adsk Contrib - Same API cleanup (#1204)
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
2020-12-01 12:50:05 -05:00
Bernard LefebvreandPatrick Hodoul 8671060668 Adsk Contrib - Remove dynamic properties from configs (#1205)
* Remove dynamic properties from configs

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
(cherry picked from commit 58a2796713869c2803f0b921a279899807ae4318)

* Adjust dynamic property access

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Forgot one case

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

* Change also required for grading test

Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2020-12-01 09:25:03 -05:00
Carol PayneandPatrick Hodoul e5f7e9f0c5 Add TSC Notes for 11-16-2020 (#1207)
* Create 2020-11-16.md

Signed-off-by: Carol Payne carolp@netflix.com
Signed-off-by: Carol Payne <carolp@netflix.com>

* updating per Doug & Michael's feedback

Signed-off-by: Carol Payne <carolp@netflix.com>

Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
2020-11-24 23:31:28 -05:00
1299 changed files with 561930 additions and 121638 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
+23 -140
View File
@@ -7,166 +7,49 @@
name: Analysis
on:
pull_request:
branches-ignore:
- RB-0.*
- RB-1.*
- gh-pages
tags-ignore:
- v0.*
- v1.*
paths:
- .github/workflows/analysis_workflow.yml
schedule:
# Nightly build
- cron: "0 0 * * *"
jobs:
# ---------------------------------------------------------------------------
# Latest ext packages
# ---------------------------------------------------------------------------
linux_latest:
name: 'Linux CentOS 7 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.
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:
matrix:
build: [1, 2, 3, 4, 5, 6]
include:
# -------------------------------------------------------------------
# GCC, VFX CY2020
# -------------------------------------------------------------------
# C++11, Python 3.7
- build: 1
build-docs: 'ON'
cxx-standard: 11
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 6.3.1
vfx-cy: 2020
# C++14
- build: 2
build-docs: 'OFF'
cxx-standard: 14
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 6.3.1
vfx-cy: 2020
# -------------------------------------------------------------------
# GCC, VFX CY2019
# -------------------------------------------------------------------
# Python 2.7
- build: 3
# Doc build requires Python 3
build-docs: 'OFF'
cxx-standard: 11
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 6.3.1
vfx-cy: 2019
# -------------------------------------------------------------------
# Clang, VFX CY2020
# -------------------------------------------------------------------
# C++11, Python 3.7
- build: 4
build-docs: 'OFF'
cxx-standard: 11
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang 7
vfx-cy: 2020
# C++14
- build: 5
build-docs: 'OFF'
cxx-standard: 14
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang 7
vfx-cy: 2020
# -------------------------------------------------------------------
# Clang, VFX CY2019
# -------------------------------------------------------------------
# Python 2.7
- build: 6
# Doc build requires Python 3
build-docs: 'OFF'
cxx-standard: 11
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang 7
vfx-cy: 2019
env:
CXX: ${{ matrix.cxx-compiler }}
CC: ${{ matrix.cc-compiler }}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install latest ext package versions
run: |
share/ci/scripts/linux/install_expat.sh latest
share/ci/scripts/linux/install_lcms2.sh latest
share/ci/scripts/linux/install_yaml-cpp.sh latest
share/ci/scripts/linux/install_pystring.sh latest
share/ci/scripts/linux/install_pybind11.sh latest
share/ci/scripts/linux/install_openexr.sh latest
share/ci/scripts/linux/install_oiio.sh latest
- name: Install latest documentation ext package versions
run: |
share/ci/scripts/linux/install_sphinx.sh latest
share/ci/scripts/linux/install_testresources.sh latest
share/ci/scripts/linux/install_recommonmark.sh latest
share/ci/scripts/linux/install_sphinx-press-theme.sh latest
share/ci/scripts/linux/install_sphinx-tabs.sh latest
if: matrix.build-docs == 'ON'
- name: Create build directories
run: |
mkdir _install
mkdir _build
- name: Configure
run: |
cmake ../. \
-DCMAKE_INSTALL_PREFIX=../_install \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \
-DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_INSTALL_EXT_PACKAGES=NONE \
-DOCIO_WARNING_AS_ERROR=OFF \
-DPython_EXECUTABLE=$(which python)
working-directory: _build
- name: Build
run: |
cmake --build . \
--target install \
--config Release \
-- -j$(nproc)
working-directory: _build
- name: Test
run: ctest -V
working-directory: _build
# ---------------------------------------------------------------------------
# SonarCloud static analysis
# ---------------------------------------------------------------------------
linux_sonarcloud:
name: 'Linux CentOS 7 VFX CY2020 SonarCloud <GCC 6.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:2020
image: aswf/ci-ocio:2023
env:
CXX: g++
CC: gcc
steps:
- name: Checkout
uses: actions/checkout@v2
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/dnf/install_docs_env.sh
- name: Install tests env
run: share/ci/scripts/linux/dnf/install_tests_env.sh
- name: Create build directories
run: |
mkdir _install
@@ -176,7 +59,7 @@ jobs:
cmake ../. \
-DCMAKE_INSTALL_PREFIX=../_install \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=11 \
-DCMAKE_CXX_STANDARD=17 \
-DCMAKE_CXX_FLAGS="-g -O0 -fprofile-arcs -ftest-coverage" \
-DCMAKE_CXX_OUTPUT_EXTENSION_REPLACE=ON \
-DCMAKE_EXE_LINKER_FLAGS="-lgcov" \
@@ -190,12 +73,12 @@ jobs:
run: build-wrapper-linux-x86-64 --out-dir bw_output make clean all
working-directory: _build
- name: Test
run: ctest -V
run: ctest -V -C Release
working-directory: _build
- name: Generate code coverage report
run: share/ci/scripts/linux/run_gcov.sh
- 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
+506 -264
View File
@@ -40,200 +40,219 @@ 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 }},
sse=${{ matrix.use-sse }},
simd=${{ matrix.use-simd }},
cxx=${{ matrix.cxx-standard }},
docs=${{ matrix.build-docs }}>'
# GH-hosted VM. The build runs in CentOS 7 'container' defined below.
docs=${{ matrix.build-docs }},
oiio=${{ matrix.use-oiio }}>'
# Avoid duplicated checks when a pull_request is opened from a local branch.
if: |
github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name != github.repository
# GH-hosted VM. The build runs in 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 CY2021
# VFX CY2026 (Python 3.13)
# -------------------------------------------------------------------
- build: 12
build-type: Debug
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'OFF'
cxx-standard: 17
build-openfx: 'ON'
use-simd: 'ON'
use-oiio: 'ON'
aswf-ocio-version: 2.5.2
cxx-standard: 20
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang 9
vfx-cy: 2021
compiler-desc: Clang
vfx-cy: 2026
install-ext-packages: MISSING
- build: 11
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: '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 9.3.1
vfx-cy: 2021
# -------------------------------------------------------------------
# GCC, VFX CY2020
# -------------------------------------------------------------------
# C++11, Python 3.7
compiler-desc: GCC
vfx-cy: 2026
install-ext-packages: ALL
- build: 10
build-type: Release
build-shared: 'ON'
build-docs: 'ON'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 11
build-shared: 'OFF'
build-docs: 'OFF'
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 17
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 6.3.1
vfx-cy: 2020
# Debug
compiler-desc: GCC
vfx-cy: 2026
install-ext-packages: ALL
# -------------------------------------------------------------------
# VFX CY2025 (Python 3.11)
# -------------------------------------------------------------------
- build: 9
build-type: Debug
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 11
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 6.3.1
vfx-cy: 2020
# C++14
build-openfx: 'ON'
use-simd: 'ON'
use-oiio: 'ON'
aswf-ocio-version: 2.4.2
cxx-standard: 20
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
vfx-cy: 2025
install-ext-packages: MISSING
- build: 8
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 14
build-docs: 'ON'
build-openfx: 'ON'
use-simd: 'OFF'
use-oiio: 'OFF'
cxx-standard: 17
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 6.3.1
vfx-cy: 2020
# Static, no SSE
compiler-desc: GCC
vfx-cy: 2025
install-ext-packages: ALL
- build: 7
build-type: Release
build-shared: 'OFF'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'OFF'
cxx-standard: 11
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 17
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 6.3.1
vfx-cy: 2020
compiler-desc: GCC
vfx-cy: 2025
install-ext-packages: ALL
# -------------------------------------------------------------------
# GCC, VFX CY2019
# VFX CY2024 (Python 3.11)
# -------------------------------------------------------------------
# Python 2.7
- build: 6
build-type: Release
build-type: Debug
build-shared: 'ON'
# Doc build requires Python 3
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 11
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC 6.3.1
vfx-cy: 2019
# -------------------------------------------------------------------
# Clang, VFX CY2020
# -------------------------------------------------------------------
# C++11, Python 3.7
build-openfx: 'ON'
use-simd: 'ON'
use-oiio: 'ON'
aswf-ocio-version: 2.3.2
cxx-standard: 20
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
vfx-cy: 2024
install-ext-packages: MISSING
- build: 5
build-type: Release
build-shared: 'ON'
build-docs: 'ON'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 11
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang 7
vfx-cy: 2020
# Debug
build-openfx: 'ON'
use-simd: 'OFF'
use-oiio: 'OFF'
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-docs: 'OFF'
build-gpu: 'OFF'
build-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 11
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang 7
vfx-cy: 2020
# C++14
- build: 3
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 14
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang 7
vfx-cy: 2020
# Static, no SSE
- build: 2
build-type: Release
build-shared: 'OFF'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'OFF'
cxx-standard: 11
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 17
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2024
install-ext-packages: ALL
# -------------------------------------------------------------------
# VFX CY2023 (Python 3.10)
# -------------------------------------------------------------------
- build: 3
build-type: Debug
build-shared: 'ON'
build-docs: 'OFF'
build-openfx: 'ON'
use-simd: 'ON'
use-oiio: 'ON'
aswf-ocio-version: 2.2.1
cxx-standard: 20
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang 7
vfx-cy: 2020
# -------------------------------------------------------------------
# Clang, VFX CY2019
# -------------------------------------------------------------------
# Python 2.7
- build: 1
compiler-desc: Clang
vfx-cy: 2023
install-ext-packages: MISSING
- build: 2
build-type: Release
build-shared: 'ON'
# Doc build requires Python 3
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: 2023
install-ext-packages: ALL
- build: 1
build-type: Release
build-shared: 'OFF'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 11
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang 7
vfx-cy: 2019
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 17
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
vfx-cy: 2023
install-ext-packages: ALL
env:
CXX: ${{ matrix.cxx-compiler }}
CC: ${{ matrix.cc-compiler }}
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install docs env
run: share/ci/scripts/linux/dnf/install_docs_env.sh
if: matrix.build-docs == 'ON'
- name: Install tests env
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
@@ -246,10 +265,11 @@ jobs:
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \
-DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \
-DOCIO_BUILD_GPU_TESTS=${{ matrix.build-gpu }} \
-DOCIO_USE_HEADLESS=${{ matrix.use-headless }} \
-DOCIO_USE_SSE=${{ matrix.use-sse }} \
-DOCIO_INSTALL_EXT_PACKAGES=ALL \
-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=${{ matrix.install-ext-packages }} \
-DOCIO_WARNING_AS_ERROR=ON \
-DPython_EXECUTABLE=$(which python)
working-directory: _build
@@ -259,98 +279,106 @@ jobs:
--target install \
--config ${{ matrix.build-type }} \
-- -j$(nproc)
echo "ocio_build_path=$(pwd)" >> $GITHUB_ENV
working-directory: _build
- name: Test
run: ctest -V
run: 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 \
-Dminizip-ng_STATIC_LIBRARY=ON
cmake --build . \
--config ${{ matrix.build-type }}
./consumer
working-directory: _build/tests/cmake-consumer-dist
# ---------------------------------------------------------------------------
# macOS
# macOS Intel
# ---------------------------------------------------------------------------
macos:
name: 'macOS 10.15
<AppleClang 11.0
name: 'macOS 15 intel
<AppleClang
arch=${{ matrix.arch-type }},
config=${{ matrix.build-type }},
shared=${{ matrix.build-shared }},
sse=${{ matrix.use-sse }},
simd=${{ matrix.use-simd }},
cxx=${{ matrix.cxx-standard }},
python=${{ matrix.python-version }},
docs=${{ matrix.build-docs }}>'
runs-on: macos-10.15
docs=${{ matrix.build-docs }},
oiio=${{ matrix.use-oiio}}>'
# Avoid duplicated checks when a pull_request is opened from a local branch.
if: |
github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name != github.repository
runs-on: macos-15-intel
strategy:
matrix:
build: [1, 2, 3, 4, 5, 6]
build: [3, 4]
include:
# C++17
- build: 6
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 17
python-version: 3.7
# Static, no SSE
# C++11, Python 3.7
- build: 5
build-type: Release
build-shared: 'ON'
build-docs: 'ON'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 11
python-version: 3.7
# Debug
- build: 4
build-type: Debug
arch-type: "x86_64;arm64"
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 11
python-version: 3.7
# C++14
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 20
python-version: '3.12'
- build: 3
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 14
python-version: 3.7
# Static, no SSE
- build: 2
build-type: Release
arch-type: "x86_64"
build-type: Debug
build-shared: 'OFF'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'OFF'
cxx-standard: 11
python-version: 3.7
# Python 2.7
- build: 1
build-type: Release
build-shared: 'ON'
# Doc build requires Python 3
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 11
python-version: 2.7
build-openfx: 'ON'
use-simd: 'OFF'
use-oiio: 'OFF'
cxx-standard: 17
python-version: '3.10'
steps:
- name: Setup Python
uses: actions/setup-python@v1
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python-version }}
- name: Checkout
uses: actions/checkout@v2
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: Create build directories
run: |
mkdir _install
@@ -363,12 +391,14 @@ jobs:
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \
-DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \
-DOCIO_BUILD_GPU_TESTS=${{ matrix.build-gpu }} \
-DOCIO_USE_HEADLESS=${{ matrix.use-headless }} \
-DOCIO_USE_SSE=${{ matrix.use-sse }} \
-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)
-DPython_EXECUTABLE=$(which python) \
-DCMAKE_OSX_ARCHITECTURES="${{ matrix.arch-type }}"
working-directory: _build
- name: Build
run: |
@@ -376,99 +406,267 @@ jobs:
--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
run: 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 \
-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 \
-Dminizip-ng_STATIC_LIBRARY=ON
cmake --build . \
--config ${{ matrix.build-type }}
./consumer
working-directory: _build/tests/cmake-consumer-dist
# ---------------------------------------------------------------------------
# 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
<MSVC 16.4
name: 'Windows 2022
<MSVC
config=${{ matrix.build-type }},
shared=${{ matrix.build-shared }},
sse=${{ matrix.use-sse }},
simd=${{ matrix.use-simd }},
cxx=${{ matrix.cxx-standard }},
python=${{ matrix.python-version }},
docs=${{ matrix.build-docs }}>'
runs-on: windows-2019
docs=${{ matrix.build-docs }},
oiio=${{ matrix.use-oiio }}>'
# Avoid duplicated checks when a pull_request is opened from a local branch.
if: |
github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name != github.repository
runs-on: windows-2022
strategy:
matrix:
build: [1, 2, 3, 4, 5, 6]
build: [1, 2, 3, 4]
include:
# C++17
- build: 6
- build: 4
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 17
python-version: 3.7
# C++11, Python 3.7
- build: 5
build-openfx: 'ON'
use-simd: 'OFF'
# 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: 'ON'
build-shared: 'OFF'
build-docs: 'ON'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 11
python-version: 3.7
# Debug
- build: 4
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 17
python-version: '3.12'
- build: 2
build-type: Debug
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 11
python-version: 3.7
# C++14
- build: 3
build-type: Release
build-shared: 'ON'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 14
python-version: 3.7
# Static, no SSE
- build: 2
build-type: Release
build-shared: 'OFF'
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'OFF'
cxx-standard: 11
python-version: 3.7
# Python 2.7
build-openfx: 'OFF'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 17
python-version: '3.11'
# C++14, OpenEXR, OpenFX
- build: 1
build-type: Release
build-shared: 'ON'
# Doc build requires Python 3
build-docs: 'OFF'
build-gpu: 'OFF'
use-headless: 'OFF'
use-sse: 'ON'
cxx-standard: 11
python-version: 2.7
build-openfx: 'ON'
use-simd: 'ON'
use-oiio: 'OFF'
cxx-standard: 17
python-version: '3.10'
steps:
- name: Setup Python
uses: actions/setup-python@v1
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python-version }}
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install docs env
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
run: share/ci/scripts/windows/install_tests_env.sh
shell: bash
- name: Create build directories
run: |
mkdir _install
@@ -483,9 +681,10 @@ jobs:
-DCMAKE_GENERATOR_PLATFORM=x64 \
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \
-DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \
-DOCIO_BUILD_GPU_TESTS=${{ matrix.build-gpu }} \
-DOCIO_USE_HEADLESS=${{ matrix.use-headless }} \
-DOCIO_USE_SSE=${{ matrix.use-sse }} \
-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)
@@ -496,9 +695,52 @@ jobs:
cmake --build . \
--target install \
--config ${{ matrix.build-type }}
echo "ocio_build_path=$(pwd)" >> $GITHUB_ENV
shell: bash
working-directory: _build
- name: Test
run: ctest -V
run: ctest -V -C ${{ matrix.build-type }}
shell: bash
working-directory: _build
- name: Test CMake Consumer 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 }}
export PATH=../../../_install/bin:$PATH
./${{ matrix.build-type }}/consumer
shell: bash
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 \
-Dminizip-ng_STATIC_LIBRARY=ON
cmake --build . \
--config ${{ matrix.build-type }}
export PATH=../../../_install/bin:$PATH
./${{ matrix.build-type }}/consumer
shell: bash
working-directory: _build/tests/cmake-consumer-dist
+375
View File
@@ -0,0 +1,375 @@
# 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: Dependencies latest
on:
pull_request:
branches-ignore:
- RB-0.*
- RB-1.*
- gh-pages
tags-ignore:
- v0.*
- v1.*
paths:
- .github/workflows/dependencies_latest.yml
schedule:
# Nightly build
- cron: "0 0 * * *"
jobs:
# ---------------------------------------------------------------------------
# Linux latest ext packages
# ---------------------------------------------------------------------------
linux_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 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:
# -------------------------------------------------------------------
# GCC
# -------------------------------------------------------------------
- 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: 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: 2024
env:
CXX: ${{ matrix.cxx-compiler }}
CC: ${{ matrix.cc-compiler }}
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install docs env
run: share/ci/scripts/linux/dnf/install_docs_env.sh
if: matrix.build-docs == 'ON'
- name: Install tests env
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 fixed ext package versions
# Minizip-ng depends on ZLIB. ZLIB must be installed first.
run: |
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_openfx.sh latest $EXT_PATH
- name: Create build directories
run: |
mkdir _install
mkdir _build
- name: Configure
run: |
cmake ../. \
-DCMAKE_INSTALL_PREFIX=../_install \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \
-DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \
-DOCIO_BUILD_OPENFX=${{ matrix.build-openfx }} \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_INSTALL_EXT_PACKAGES=NONE \
-DOCIO_WARNING_AS_ERROR=OFF \
-DPython_EXECUTABLE=$(which python)
working-directory: _build
- name: Build
run: |
cmake --build . \
--target install \
--config Release \
-- -j$(nproc)
working-directory: _build
- name: Test
run: ctest -V -C Release
working-directory: _build
- name: Test CMake Consumer
run: |
cmake . \
-DCMAKE_PREFIX_PATH=../../../_install \
-DCMAKE_BUILD_TYPE=Release
cmake --build . \
--config Release
# 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
# ---------------------------------------------------------------------------
# MacOS latest ext packages
# ---------------------------------------------------------------------------
macos-latest:
name: 'macOS latest
<AppleClang
cxx=${{ matrix.cxx-standard }},
docs=${{ matrix.build-docs }},
python=${{ matrix.python-version }}>'
# Don't run on OCIO forks
if: github.repository == 'AcademySoftwareFoundation/OpenColorIO'
runs-on: macos-latest
strategy:
matrix:
build: [1, 2]
include:
- build: 1
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 20
python-version: '3.14'
- build: 2
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 17
python-version: '3.10'
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: Setup ext environment
run: |
EXT_PATH=$GITHUB_WORKSPACE/_ext
echo "EXT_PATH=$EXT_PATH" >> $GITHUB_ENV
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.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_openfx.sh latest $EXT_PATH
- name: Create build directories
run: |
mkdir _install
mkdir _build
- name: Configure
run: |
cmake ../. \
-DCMAKE_INSTALL_PREFIX=../_install \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \
-DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \
-DOCIO_BUILD_OPENFX=${{ matrix.build-openfx }} \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_INSTALL_EXT_PACKAGES=NONE \
-DOCIO_WARNING_AS_ERROR=OFF \
-DPython_EXECUTABLE=$(which python)
working-directory: _build
- name: Build
run: |
cmake --build . \
--target install \
--config Release \
-- -j$(sysctl -n hw.ncpu)
working-directory: _build
- name: Test
run: ctest -V -C Release
working-directory: _build
- name: Test CMake Consumer
run: |
cmake . \
-DCMAKE_PREFIX_PATH=../../../_install \
-DCMAKE_BUILD_TYPE=Release
cmake --build . \
--config Release
export DYLD_LIBRARY_PATH=$EXT_PATH/lib:$DYLD_LIBRARY_PATH
./consumer
working-directory: _build/tests/cmake-consumer-dist
# ---------------------------------------------------------------------------
# Windows latest ext packages
# ---------------------------------------------------------------------------
windows-latest:
name: 'Windows latest
<MSVC
cxx=${{ matrix.cxx-standard }},
docs=${{ matrix.build-docs }},
python=${{ matrix.python-version }}>'
# Don't run on OCIO forks
if: github.repository == 'AcademySoftwareFoundation/OpenColorIO'
runs-on: windows-latest
strategy:
matrix:
build: [1, 2]
include:
- build: 1
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 20
python-version: '3.14'
use-oiio: 'ON'
- build: 2
build-docs: 'ON'
build-openfx: 'ON'
cxx-standard: 17
python-version: '3.10'
use-oiio: 'OFF'
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: |
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
run: share/ci/scripts/windows/install_tests_env.sh
shell: bash
- name: Setup ext environment
run: |
EXT_PATH=$GITHUB_WORKSPACE/_ext
VCPKG_ROOT=$VCPKG_INSTALLATION_ROOT/installed/x64-windows
echo "EXT_PATH=$EXT_PATH" >> $GITHUB_ENV
echo "CMAKE_PREFIX_PATH=$VCPKG_ROOT;$EXT_PATH" >> $GITHUB_ENV
echo "$VCPKG_ROOT/bin" >> $GITHUB_PATH
echo "$EXT_PATH/bin" >> $GITHUB_PATH
mkdir $EXT_PATH
shell: bash
- name: Install indirect dependencies
run: |
vcpkg install zlib:x64-windows
vcpkg install tiff:x64-windows
vcpkg install 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.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_openfx.sh latest $EXT_PATH
shell: bash
- name: Create build directories
run: |
mkdir _install
mkdir _build
shell: bash
- name: Configure
run: |
cmake ../. \
-DCMAKE_INSTALL_PREFIX=../_install \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \
-DCMAKE_GENERATOR_PLATFORM=x64 \
-DOCIO_BUILD_DOCS=OFF \
-DOCIO_BUILD_OPENFX=${{ matrix.build-openfx }} \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_INSTALL_EXT_PACKAGES=NONE \
-DOCIO_WARNING_AS_ERROR=OFF \
-DPython_EXECUTABLE=$(which python) \
-DOCIO_BUILD_PYTHON=OFF
shell: bash
working-directory: _build
- name: Build
run: |
cmake --build . \
--target install \
--config Release \
--parallel
shell: bash
working-directory: _build
- name: Test
run: |
ctest -V -C Release
shell: bash
working-directory: _build
- name: Test CMake Consumer
run: |
cmake . \
-DCMAKE_PREFIX_PATH=../../../_install \
-DCMAKE_BUILD_TYPE=Release
cmake --build . \
--config Release
export PATH=../../../_install/bin:$PATH
./Release/consumer
shell: bash
working-directory: _build/tests/cmake-consumer-dist
+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
+3 -2
View File
@@ -33,13 +33,14 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.CODEBUILD_ID }}
aws-secret-access-key: ${{ secrets.CODEBUILD_SECRET }}
aws-region: us-west-2
- name: Run CodeBuild
uses: aws-actions/aws-codebuild-run-project@v1.0.0
uses: aws-actions/aws-codebuild-run-build@v1
with:
project-name: OpenColorIO
buildspec-override: buildspec.yml
image-override: aswf/ci-ocio:2025
+396
View File
@@ -0,0 +1,396 @@
# 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: Platform latest
on:
pull_request:
branches-ignore:
- RB-0.*
- RB-1.*
- gh-pages
tags-ignore:
- v0.*
- v1.*
paths:
- .github/workflows/platform_latest.yml
schedule:
# Nightly build
- cron: "0 0 * * *"
jobs:
# ---------------------------------------------------------------------------
# Linux latest ext packages
# ---------------------------------------------------------------------------
linux_latest:
name: 'Linux Ubuntu latest
<${{ matrix.compiler-desc }}
config=${{ matrix.build-type }},
shared=${{ matrix.build-shared }},
cxx=${{ matrix.cxx-standard }}>'
# Don't run on OCIO forks
if: github.repository == 'AcademySoftwareFoundation/OpenColorIO'
runs-on: ubuntu-latest
strategy:
matrix:
build: [1, 2, 3, 4]
include:
# -------------------------------------------------------------------
# GCC
# -------------------------------------------------------------------
- build: 1
build-python: ON
build-type: Release
build-shared: ON
cxx-standard: 23
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
enable-sanitizer: OFF
- build: 2
build-python: OFF
build-type: Debug
build-shared: ON
cxx-standard: 23
cxx-compiler: g++
cc-compiler: gcc
compiler-desc: GCC
enable-sanitizer: ON
# -------------------------------------------------------------------
# Clang
# -------------------------------------------------------------------
- build: 3
build-python: ON
build-type: Release
build-shared: ON
cxx-standard: 23
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
enable-sanitizer: OFF
- build: 4
build-python: OFF
build-type: Debug
build-shared: ON
cxx-standard: 23
cxx-compiler: clang++
cc-compiler: clang
compiler-desc: Clang
enable-sanitizer: ON
env:
CXX: ${{ matrix.cxx-compiler }}
CC: ${{ matrix.cc-compiler }}
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install tests env
run: share/ci/scripts/linux/dnf/install_tests_env.sh
- name: Create build directories
run: |
mkdir _install
mkdir _build
- name: Configure
run: |
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=OFF \
-DOCIO_BUILD_OPENFX=OFF \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_BUILD_PYTHON=${{ matrix.build-python}} \
-DOCIO_USE_SIMD=ON \
-DOCIO_USE_OIIO_FOR_APPS=OFF \
-DOCIO_INSTALL_EXT_PACKAGES=ALL \
-DOCIO_WARNING_AS_ERROR=ON \
-DOCIO_ENABLE_SANITIZER=${{ matrix.enable-sanitizer }} \
-DPython_EXECUTABLE=$(which python)
working-directory: _build
- name: Build
run: |
cmake --build . \
--target install \
--config ${{ matrix.build-type }} \
-v \
-- -j$(nproc)
echo "ocio_build_path=$(pwd)" >> $GITHUB_ENV
working-directory: _build
- name: Test
run: 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 }} \
-DOCIO_ENABLE_SANITIZER=${{ matrix.enable-sanitizer }}
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 \
-Dminizip-ng_STATIC_LIBRARY=ON
cmake --build . \
--config ${{ matrix.build-type }}
./consumer
working-directory: _build/tests/cmake-consumer-dist
# ---------------------------------------------------------------------------
# MacOS latest ext packages
# ---------------------------------------------------------------------------
macos-latest:
name: 'macOS latest
<AppleClang
config=${{ matrix.build-type }},
shared=${{ matrix.build-shared }},
cxx=${{ matrix.cxx-standard }},
python=${{ matrix.python-version }}>'
# Don't run on OCIO forks
if: github.repository == 'AcademySoftwareFoundation/OpenColorIO'
runs-on: macos-latest
strategy:
matrix:
build: [1, 2]
include:
- build: 1
build-python: ON
build-type: Release
build-shared: ON
cxx-standard: 23
enable-sanitizer: OFF
python-version: '3.14'
- build: 2
build-python: OFF
build-type: Debug
build-shared: ON
cxx-standard: 23
enable-sanitizer: ON
python-version: '3.10'
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 tests env
run: share/ci/scripts/macos/install_tests_env.sh
- name: Create build directories
run: |
mkdir _install
mkdir _build
- name: Configure
run: |
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=OFF \
-DOCIO_BUILD_OPENFX=OFF \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_BUILD_PYTHON=${{ matrix.build-python}} \
-DOCIO_USE_SIMD=ON \
-DOCIO_USE_OIIO_FOR_APPS=OFF \
-DOCIO_INSTALL_EXT_PACKAGES=ALL \
-DOCIO_WARNING_AS_ERROR=ON \
-DOCIO_ENABLE_SANITIZER=${{ matrix.enable-sanitizer }} \
-DPython_EXECUTABLE=$(which python)
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 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 \
-Dminizip-ng_STATIC_LIBRARY=ON
cmake --build . \
--config ${{ matrix.build-type }}
./consumer
working-directory: _build/tests/cmake-consumer-dist
# ---------------------------------------------------------------------------
# Windows latest ext packages
# ---------------------------------------------------------------------------
windows-latest:
name: 'Windows latest
<MSVC
config=${{ matrix.build-type }},
shared=${{ matrix.build-shared }},
cxx=${{ matrix.cxx-standard }},
python=${{ matrix.python-version }}>'
# Don't run on OCIO forks
if: github.repository == 'AcademySoftwareFoundation/OpenColorIO'
runs-on: windows-latest
strategy:
matrix:
build: [1, 2]
include:
- build: 1
build-python: ON
build-type: Release
build-shared: ON
cxx-standard: 20
python-version: '3.14'
- build: 2
build-python: ON
build-type: Debug
build-shared: ON
cxx-standard: 20
python-version: '3.10'
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 tests env
run: share/ci/scripts/windows/install_tests_env.sh
shell: bash
- name: Create build directories
run: |
mkdir _install
mkdir _build
shell: bash
- name: Configure
run: |
cmake ../. \
-DCMAKE_INSTALL_PREFIX=../_install \
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \
-DCMAKE_GENERATOR_PLATFORM=x64 \
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \
-DOCIO_BUILD_DOCS=OFF \
-DOCIO_BUILD_OPENFX=OFF \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_BUILD_PYTHON=${{ matrix.build-python}} \
-DOCIO_USE_SIMD=ON \
-DOCIO_USE_OIIO_FOR_APPS=OFF \
-DOCIO_INSTALL_EXT_PACKAGES=ALL \
-DOCIO_WARNING_AS_ERROR=ON \
-DPython_EXECUTABLE=$(which python)
shell: bash
working-directory: _build
- name: Build
run: |
cmake --build . \
--target install \
--config ${{ matrix.build-type }}
echo "ocio_build_path=$(pwd)" >> $GITHUB_ENV
shell: bash
working-directory: _build
- name: Test
run: ctest -V -C ${{ matrix.build-type }}
shell: bash
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 }}
export PATH=../../../_install/bin:$PATH
./${{ matrix.build-type }}/consumer
shell: bash
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 \
-Dminizip-ng_STATIC_LIBRARY=ON
cmake --build . \
--config ${{ matrix.build-type }}
export PATH=../../../_install/bin:$PATH
./${{ matrix.build-type }}/consumer
shell: bash
working-directory: _build/tests/cmake-consumer-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
+390
View File
@@ -0,0 +1,390 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright Contributors to the OpenColorIO Project.
#
name: Wheel
on:
push:
# Workflow run on tags for v2 only.
tags:
- v2.*
pull_request:
# Workflow run on pull_request only when related files change.
branches-ignore:
- RB-0.*
- RB-1.*
- gh-pages
tags-ignore:
- v0.*
- v1.*
paths:
- .github/workflows/wheel_workflow.yml
- MANIFEST.in
- pyproject.toml
- setup.cfg
- setup.py
schedule:
# Nightly build
- cron: "0 0 * * *"
jobs:
# Linux jobs run in Docker containers (manylinux), so the latest OS version
# is OK. macOS and Windows jobs need to be locked to specific virtual
# environment versions to mitigate issues from OS updates, and will require
# maintenance as OS versions are retired.
#
# Due to documentation build failing on manylinux2010 (maybe too old doxygen
# version), we build on manylinux2014 image, this requires pip >= 19.3.
# ---------------------------------------------------------------------------
# Source Distribution
# ---------------------------------------------------------------------------
sdist:
name: Build SDist
runs-on: ubuntu-latest
# Don't run on OCIO forks
if: |
github.event_name != 'schedule' ||
github.repository == 'AcademySoftwareFoundation/OpenColorIO'
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Build SDist
run: pipx run build --sdist
- name: Check metadata
run: pipx run twine check dist/*
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: cibw-sdist
path: dist/*.tar.gz
# ---------------------------------------------------------------------------
# Linux Wheels
# ---------------------------------------------------------------------------
linux:
name: Build wheels on Linux
runs-on: ubuntu-latest
# Don't run on OCIO forks
if: |
github.event_name != 'schedule' ||
github.repository == 'AcademySoftwareFoundation/OpenColorIO'
strategy:
matrix:
include:
# -------------------------------------------------------------------
# CPython 64 bits manylinux_2_28
# -------------------------------------------------------------------
- build: CPython 3.10 64 bits manylinux_2_28
manylinux: manylinux_2_28
python: cp310-manylinux_x86_64
arch: x86_64
- build: CPython 3.11 64 bits manylinux_2_28
manylinux: manylinux_2_28
python: cp311-manylinux_x86_64
arch: x86_64
- build: CPython 3.12 64 bits manylinux_2_28
manylinux: manylinux_2_28
python: cp312-manylinux_x86_64
arch: x86_64
- build: CPython 3.13 64 bits manylinux_2_28
manylinux: manylinux_2_28
python: cp313-manylinux_x86_64
arch: x86_64
- build: CPython 3.14 64 bits manylinux_2_28
manylinux: manylinux_2_28
python: cp314-manylinux_x86_64
arch: x86_64
# -------------------------------------------------------------------
# CPython 64 bits manylinux2014
# -------------------------------------------------------------------
- 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@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_X86_64_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
# ---------------------------------------------------------------------------
# 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
# ---------------------------------------------------------------------------
# macOS Wheels
# ---------------------------------------------------------------------------
macos:
name: Build wheels on macOS
runs-on: macos-15-intel
# Don't run on OCIO forks
if: |
github.event_name != 'schedule' ||
github.repository == 'AcademySoftwareFoundation/OpenColorIO'
strategy:
matrix:
include:
# -------------------------------------------------------------------
# CPython 64 bits
# -------------------------------------------------------------------
- build: CPython 3.10 64 bits
python: cp310-macosx_x86_64
arch: x86_64
- build: CPython 3.11 64 bits
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
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: Remove brew OpenEXR/Imath
run: |
brew uninstall --ignore-dependencies openexr imath || true
- 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
# ---------------------------------------------------------------------------
# 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
# ---------------------------------------------------------------------------
# Windows Wheels
# ---------------------------------------------------------------------------
windows:
name: Build wheels on Windows
runs-on: windows-2022
# Don't run on OCIO forks
if: |
github.event_name != 'schedule' ||
github.repository == 'AcademySoftwareFoundation/OpenColorIO'
strategy:
matrix:
include:
# -------------------------------------------------------------------
# CPython 64 bits
# -------------------------------------------------------------------
- build: CPython 3.10 64 bits
python: cp310-win_amd64
arch: AMD64
- build: CPython 3.11 64 bits
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@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
# ---------------------------------------------------------------------------
# Upload
# ---------------------------------------------------------------------------
upload_pypi:
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@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
- uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
with:
pattern: cibw-*
path: dist
merge-multiple: true
- 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
+1 -1
View File
@@ -52,7 +52,7 @@ This charter (the &quot;Charter&quot;) sets forth the responsibilities and proce
7. Intellectual Property Policy
* **a.** Participants acknowledge that the copyright in all new contributions shall be retained by the copyright holder as independent works of authorship and that no contributor or copyright holder will be required to assign copyrights to the Project.
* **b.** Except as described in Section 7.c., all code contributions to the Project are subject to the following:
* **i.** All new inbound code contributions to the Project must be made using the **BSD 3-Clause License (available here: [https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/master/LICENSE](https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/master/LICENSE))** (the &quot;Project License&quot;).
* **i.** All new inbound code contributions to the Project must be made using the **BSD 3-Clause License (available here: [https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/main/LICENSE](https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/main/LICENSE))** (the &quot;Project License&quot;).
* **ii.** All new inbound code contributions must:
1. be made pursuant to a duly executed Project Contribution License Agreement (the &quot;CLA&quot;), available on the Project&#39;s web site; and
2. be accompanied by a Developer Certificate of Origin ([http://developercertificate.org](http://developercertificate.org)) sign-off in the source code system that is submitted through a TSC-approved contribution process which will bind the authorized contributor and, if not self-employed, their employer to the applicable license;
+124
View File
@@ -0,0 +1,124 @@
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
<!-- Copyright Contributors to the OpenColorIO Project. -->
# OpenColorIO Google Summer of Code 2021
OpenColorIO (OCIO) is a complete color management solution geared towards
motion picture production with an emphasis on visual effects and computer
animation. OCIO provides a straightforward and consistent user experience
across all supporting applications while allowing for sophisticated back-end
configuration options suitable for high-end production usage. OCIO is compatible
with the Academy Color Encoding Specification (ACES) and is LUT-format agnostic,
supporting many popular formats.
OpenColorIO version 1.0 was released in 2011, having been in development since
2003. OCIO v1 represented the culmination of years of production experience
earned on such films as SpiderMan 2 (2004), Surf’s Up (2007), Cloudy with a
Chance of Meatballs (2009), Alice in Wonderland (2010), and many more.
OpenColorIO v2 has been in development since 2017 and was feature complete as of
SIGGRAPH 2020. After a stabilization and bug-fixing period, an official 2.0.0
release was made in January 2021!
While OCIO is a color management library (written in C++ with a Python API),
its only knowledge of color science comes from its execution of the transforms
defined in the OCIO configuration file, written in YAML. These transforms are
either defined by the end user in a custom OCIO config or inherited from the
publicly available configs. By specifying your desired config file in the local
environment all OCIO compatible applications and software libraries will be able
to see your defined color transform “universe”. You can then direct the
transformation of image data from one defined OCIO Color Space to another, in
addition to the other transforms documented elsewhere - the options are endless!
## About the Academy Software Foundation
The Academy Software Foundation (ASWF) is collaboration between the Linux
Foundation and the Academy of Motion Picture Arts and Sciences, serving as
an umbrella organization that is the home to several key open source
software projects used by the film industry (primarily visual effects and
animation production). The projects we manage are some of the most
high-profile and widely used open source projects originating and used in
film production studios. It's a great opportunity for students to get
involved with projects that will be used professionally on films!
The mission of the ASWF is to increase the quality and quantity of
contributions to the content creation industry's open source software base;
to provide a neutral forum to coordinate cross-project efforts; to provide a
common build and test infrastructure; and to provide individuals and
organizations a clear path to participation in advancing our open source
ecosystem.
In 2020, the ASWF projects OpenEXR, OpenTimelineIO, and OpenCue mentored
GSoC students. This year, OpenColorIO is the ASWF project that looks forward
to welcoming and mentoring GSoC students.
## Application Instructions for Students
Please review the CONTRIBUTING guidelines thoroughly before applying. OCIO
maintains a contributor license agreement (CLA) which must be signed to
accept contributions.
**Successfully submitting a Pull Request to the OCIO project is a strict**
**requirement prior to submitting an application.**
This is not negotiable. We will not even read applications from students who
have not submitted an acceptable PR to the project. It can be a truly minimal
change -- for example, fixing a typo in an error message. You will find issues
tagged "good first issue" on our GitHub repo, which are ideal candidates for
your small trial PR to qualify for application.
## Application template
Please use this application template. Feel free to expand or tell us any other
relevant details, but this is a good place to start. The applications will be
judged by representatives of the OCIO technical steering comittee.
* Student name:
* School / year / area of study:
* Relevant courses, materials studied, jobs, programming projects, skills, other
open source projects you've contributed to. Go ahead and tell us anything about
your background that you think we will find interesting for our projects.
* Project proposal - please explain in detail and give specifics on acceptance
criteria -- how we can measure your success, how we can test your code. Provide
a weekly timeline for expected progress.
* Please tell us which test PR you had merged into the OCIO repo:
## Project information and suggested ideas list
Home page: https://opencolorio.org/ <br>
GitHub: https://github.com/AcademySoftwareFoundation/OpenColorIO <br>
Skills/knowledge relevant to the project: C++11, CMake, color science
Mentor suggestions: Patrick Hodoul, Doug Walker, Michael Dolan
## Project Ideas:
**Add OCIO support to FFmpeg or another FOSS project**
An important effort for OCIO is expanding the libraries and applications where
OCIO is implemented. Users have specifically called out FFmpeg as a library and
command-line tool where they would like to see OCIO support, but any other FOSS
project leveraged by digital artists or production pipelines could be considered.
This could also include upgrading an existing implementation to support the OCIO
v2 API and leverage new functionality.
Special skills: Familiarity with prospective host library or tool, and knowledge
of working with image buffers and authoring plugins.
**OpenFX Plugin Development**
OCIO currently has a number of plug-ins in the GitHub repo for proprietary
application interfaces. (And in several cases, these have become out of sync
with the actual plug-ins shipped by vendors.) It would be great to have OpenFX
plug-ins in the repo. These would have the benefit of bringing OCIO support to
a wider range of applications. Furthermore, the existing plug-ins are all based
on OCIO v1, the new OpenFX plug-ins would be the perfect place to showcase the
new OCIO v2 features.
Special skills: Access to a host application that supports OpenFX plug-ins and
ability to build the basic demo plug-ins in the OpenFX SDK.
**Add support for more ICC profile structures**
OCIO currently supports basic ICC monitor profiles. These are the type that
are most often set as monitor profiles on Mac and Windows. But it would be nice
for OCIO to be able to read and convert some of the more advanced ICC profile
structures such as the A2B* and B2A* tags. There are some monitor profiles that
use these tags to implement gamut mapping. OCIO already has operators to support
the most common usage of these tags, so the project is simply about importing a
profile into existing OCIO operators. It would not be a goal of this project to
import structures that don’t already have an OCIO equivalent, such as
4-dimensional tables.
+1 -1
View File
@@ -36,7 +36,7 @@ Attendees:
* Infrastructure
* GitHub repo needs migrating to the ASWF organisation
* **TODO** - John Mertic to coordinate with Steve Winslow at the LF to complete.
* https://github.com/AcademySoftwareFoundation/tac/blob/master/process/contributing.md
* https://github.com/AcademySoftwareFoundation/tac/blob/main/process/contributing.md
* Require that any existing copyright notices are reviewed and amended by the current stated owners if their respective legal agrees.
* Once migrated will enable DCO sign off checking and CLA checks.
* Sub-discussion on the option of separate sign off for committer vs developer sign off.
+2 -2
View File
@@ -44,9 +44,9 @@ Attendees:
* Do a patch against 1.1 that fixes a few minor things?
* Consensus is that we should make 1.1.1 with some important non-breaking patches and release that fix right away.
* **TODO**: Patrick will send Slack the list of candidate commits for a 1.1.1.
* Do we make an intermediate release from master before v2.0? People want a "developer preview" to be able to use the new GPU path.
* Do we make an intermediate release from main before v2.0? People want a "developer preview" to be able to use the new GPU path.
* Patrick reluctant to make a full release.
* Proposal: just make a "developer preview" tag in master to designate a point we think is stable and has some helpful new features, but we don't promise any support or compatibility with the eventual v2.
* Proposal: just make a "developer preview" tag in main to designate a point we think is stable and has some helpful new features, but we don't promise any support or compatibility with the eventual v2.
* Down side: people will use it and expect us to support it.
* No consensus that this is a good idea. Mark especially doesn't like unsupported dev preview tag.
* But v2 will NOT be ready by SIGGRAPH 2019. In light of this, Mark thinks maybe we should have a real intermediate release.
+2 -2
View File
@@ -26,7 +26,7 @@ Attendees:
- Doug: As established in the initial 2.0 proposal, this is not feasible.
- The plan remains to release a complete feature set when the full v2 roadmap is completed.
- Community concern is that the v2 release schedule is unknown, and time between OCIO releases is long.
- This can make planning for software vendors challenging, but preliminary implementation of the v2 interface is possible now from master for testing.
- This can make planning for software vendors challenging, but preliminary implementation of the v2 interface is possible now from main for testing.
- Autodesk discussing an official roadmap and insight on a potential release window. Stay tuned.
- Long PR review cycles contribute to development slowdowns:
- Most PRs are merged with the 2 week single reviewer clause.
@@ -37,7 +37,7 @@ Attendees:
- PRs are becoming smaller, more focused, which should help with review accessability
- **TODO**: Doug/Patrick to review and report back on what project management changes could help them
- Larry: Should we have a known commit for testing a given feature (i.e. GPU renderer) for internal testing purposes.
- Doug: Testing off of master at any given time is stable, and ideal.
- Doug: Testing off of main at any given time is stable, and ideal.
* ASWF/LF CI update from TAC meeting
- Thanh presented comparison of Circle CI and current Jenkins infrastructure:
+1 -1
View File
@@ -43,7 +43,7 @@ Attendees:
- Any recommendations from LF regarding what to add to CI?
- Thanh: Some options are Nexus IQ, WhiteSource for security, Sonar Qube for static.
- Thanh is doing some investigation for TAC, we will follow closely for recommendations.
- John provide the following link: https://github.com/coreinfrastructure/best-practices-badge/blob/master/doc/security.md
- John provide the following link: https://github.com/coreinfrastructure/best-practices-badge/blob/main/doc/security.md
- Chair asked John if we were moving too slowly, John: no.
* 1.1.1 Release
+1 -1
View File
@@ -29,7 +29,7 @@ Apologies:
- Waiting approval
* Azure CI Build:
- Larry G.: Needs to build OCIO with some dependency master branch to trap coming issues?
- Larry G.: Needs to build OCIO with some dependency main branch to trap coming issues?
- Larry G. Only some libraries:
As OpenEXR is an indirect dependency, perhaps not needed.
But OIIO could be a good candidate.
+1 -1
View File
@@ -38,7 +38,7 @@ Apologies:
Meatballs” images with Sony.
- Kevin: We also need to update the LICENSE on the OCIO website
- Michael: That is pulled from GitHub, but currently from the RB-1.1
branch. Since the license cleanup work is being done in master, is it Ok
branch. Since the license cleanup work is being done in main, is it Ok
to wait for a 2.0 release next year to update the site?
- John: That should be Ok.
- Kevin: Let’s make a note to not forget it.
+2 -2
View File
@@ -30,8 +30,8 @@ Attendees:
* RB-1.1
- Michael: Following the approval for another minor release (*TSC meeting 2019-08-12*),
Travis & AppVeyor (i.e. the former CI build) are back for the RB-1.1 branch only.
- AppVeyor uses RB-1.1 & master branch
- **TODO**: Sean will help to disable master.
- AppVeyor uses RB-1.1 & main branch
- **TODO**: Sean will help to disable main.
- Travis triggers new warnings/errors.
Check [PR 798](https://github.com/imageworks/OpenColorIO/pull/798) for details.
- Agreed to fix them.
+1 -1
View File
@@ -28,7 +28,7 @@ Apologies:
- Doug raised that pull request #831 removes macros specific to these versions of GCC.
- Patrick raised that as we add more C+11 features the more we will be restricted.
- Kevin thinks we should definitely drop support for GCC 3.
- Patrick thought dropping GCC 3 would be fine and should be done in the master branch.
- Patrick thought dropping GCC 3 would be fine and should be done in the main branch.
* Azure CI build
- Patrick raised that the communication between Azure and Github is broken.
+1 -1
View File
@@ -26,7 +26,7 @@ Attendees:
- To document the policy concerning repository rights vs. roles.
* Branch protected
- Agreement to only protect `master`, `RB-**` and `gh-pages`.
- Agreement to only protect `main`, `RB-**` and `gh-pages`.
* Stalled pull requests
- Agreement to not have any automatic removal of stalled pull requests.
+2 -2
View File
@@ -32,7 +32,7 @@ Attendees:
* ASWF GSoC discussion
- Polled Slack for project ideas for ASWF's application to Google Summer of
Code, and submitted PR to:
`https://github.com/AcademySoftwareFoundation/tac/blob/master/gsoc/README.md`_
`https://github.com/AcademySoftwareFoundation/tac/blob/main/gsoc/README.md`_
- In summary, four projects initially proposed:
- Add Metal, Vulkan, or CUDA language support to GPU renderer
- Restore Java bindings
@@ -52,7 +52,7 @@ Attendees:
* Python bindings
- Michael: Resumed work on pybind11 bindings. Got everything up to date with
master.
main.
- Mei Chu (Imageworks) is interested in helping with this work, potentially
designing unit tests to start.
- Mei: Looking forward to getting more involved in OCIO
+1 -1
View File
@@ -61,7 +61,7 @@ Apologies: Michael Dolan
in what types of EXR images may be read (e.g. looking for a specific channel layout,
no multi-part support).
- Kevin: A quick scan of the EXR codec shows it only really outputs 16 bit RGB, RGBA, YCbCr.

https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/exr.c#L1691


https://github.com/FFmpeg/FFmpeg/blob/main/libavcodec/exr.c#L1691

- Mark: Is that integer 16 bit?

- Kevin: Yes, integers.
- Mark: One approach would be to make video filters for OCIO ColorSpaceTransform and
+1 -1
View File
@@ -70,7 +70,7 @@ Apologies:
- Carol: A lot of it can hopefully be to work with DCC vendors to help them
update their docs as well, and to understand coming changes. Then we can
point our docs to theirs.
- Michael: The [Compatible Software](https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/master/docs/CompatibleSoftware.rst)
- Michael: The [Compatible Software](https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/main/docs/CompatibleSoftware.rst)
page of the OCIO website was updated recently and contains many
up-to-date documentation links.
- Doug: Also may want to add OCIO developers to the list of consumers, to
+1 -1
View File
@@ -87,7 +87,7 @@ Apologies:
- Sean: Docstring header PR is in. Need another PR for pybind11 docstring
header, and another for reorganization of doc structure. The RTD page
points to official OCIO repo, so we're live now, but API docs and new
style is missing. Any changes to master are getting pushed to RTD now.
style is missing. Any changes to main are getting pushed to RTD now.
Not as much holding back docs as it seems.
- Simran: An event hook in GH communicates to RTD when to update the site.
- Michael: Can we open GH issues for logical chunks of work?
+100
View File
@@ -0,0 +1,100 @@
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
<!-- Copyright Contributors to the OpenColorIO Project. -->
November 16, 2020
Host: Doug Walker
Rotating Secretary: Carol Payne
Attendees:
* [x] Mark Boorer (_TSC_) - Industrial Light & Magic
* [x] Mei Chu (_TSC_) - Sony Pictures Imageworks
* [ ] Sean Cooper (_TSC ACES TAC Rep_) - DNEG
* [ ] Michael Dolan (_TSC Chair_) - Epic Games
* [x] Patrick Hodoul (_TSC_) - Autodesk
* [ ] John Mertic - Academy Software Foundation / Linux Foundation
* [x] Carol Payne (_TSC_) - Netflix
* [x] Mark Titchener (_TSC_) - Foundry
* [x] Carl Rand (_TSC_) - Weta Digital
* [x] Doug Walker (_TSC Chief Architect_) - Autodesk
* [x] Kevin Wheatley (_TSC_) - Framestore
* [x] Bernard Lefebvre - Autodesk
* [x] J Schulte - ILM
* [x] Matthias Scharfenberg - ILM
* [x] Larry Gritz - SPI
* [x] Aymee Kennett (Yeh) - Netflix
Apologies:
Michael Dolan
# **OCIO TSC Meeting Notes**
* Named Color Transforms - Continued discussion
- Doug: Patrick, Bernard and I have been discussing the feedback and how to respond. We have made it possible to turn off the NamedTransforms - similar to an environment variable. Config author/ dev would be able to control whether or not the feature is visible to the user. Bernard has pushed that commit to the PR so it should be available for viewing.
- Mark: on/off isn't a true solution - we don't want to fracture the community. The opposition was because we felt that NamedTransforms opposed the way we want OCIO to work.
- Doug: would be interested to hear alternate proposals.
- Mark: the solutions already exist - you just have to utilize your working space as your reference space.
- Doug: Not everyone is going to be solely using the working space of the config.
- Mark: You design your config based on your requirements for your work. Having different in and out colorspaces is not how it's defined to work.
- Doug: We can't expect everyone to have a separate config per working space. Even a difference between rendering space vs. compositing space. Thinking ahead to the studio config as well, it would be ideal if this workflow was easier to implement.
- Mark: But ACES is trying to be the single working space - and should be for the future.
- Carl: WETA works in a different compositing colorspace than rendering space, for example.
- Matthias: verifying that we're talking about NamedTransforms that are basically a transfer funtion or something similar? So you don't get the matrix transform that you would get by using the colorspace which goes through the reference space as well? It sounds like a "trapdoor" in the color management system.
- Kevin: I didn't see it quite that way. Instead of performing a 2-sided transformation, it's a 1 sided.
- Matthias: but isn't that not how OCIO is designed? That you need to go through the reference? This becomes like a "transfer function toolbox" for debugging, design, etc. Could be handy but don't see how it ties into the OCIO ecosystem itself.
- Kevin: Are we talking about something that a DCC needs access to? Or just a toolbox of options.
- Doug: So we wanted to clarify this by not calling it a colorspace - it's a NamedTransform. The ability to define a transform rather than a colorspace.
- Mark: will you see these in say, the list of options to load a texture in an application?
- Kevin: Are we just missing some UI/UX design features? Do we need an OCIOTransform op? Would that accomplish the same thing?
- Matthias: the concern is that this really offers a trapdoor - an exit from the color managed worflow - what happens when you don't know where you're coming from or where you're going?
- Mark: Still don't understand who the end user is here - seems to be config authors, but config authors already know how to do this correctly.
- Doug: we have received feedback that this feature is a requirement. From multiple users / DCC authors. Not everyone knows how to write a config
- J: but if we think to the future, and if we can help users move forward to a correct color management workflows, that a lot of these requests would be moot?
- Doug: a lot of users don't understand/want anything more than a 1d linear/log workflow - but still need to be able to connect into a color managed world.
- Mark: I don't think you can have it both ways.
- J: Is the concept of what we're trying to get out of this enabling workflows that go against the "correct" OCIO usage? Does this matter - or are we just providing ways to work to DCCs to use it as they will.
- Carol: Is there a middle ground? We want people to graduate to color management, and if this is a feature that's been requested, wouldn't we rather enable them to move forward into OCIO?
- Mei: what transforms are we talking about that couldn't be expressed via an OCIOFileTransform node in Nuke?
- J: Worried about introducing this potential for breakage in already complicated pipelines and worflows.
- Doug: tools already have this, what's the opposition to having it in OCIO?
- J: We try to operate solely in fully color managed workflows, and introducing this throws a wrench in those workflows that requires additional support and tracking and awareness. Should OCIO be setting the standard and authority of good practices, or is it solely middleware at this point?
- Doug: It's a complete color management solution. I feel that if it's going to be complete, it can't only be state of the art, as practiced by the best. We need to make it applicable and achievable to all. There's an expectation that workflows that have existed still exist and there is a broad user base we need to support. We need to be realistic.
- Carol: there's a huge group of people who have been working the way they are for years, who might not benefit at all from changing their workflows.
- Mark: the rest of the line in the documentation is - geared toward the motion picture industry for visual effects and animation.
- Doug: visual effects is a very big industry - learning the craft through youtube without guidance. A number of these features are indeed broadening the scope of the original OCIO features. I don't think that is uncommon as projects grow, their user base expands, and needs change. Michael and I tried to start this earlier in the year when we updated the mission statement. We feel we've been very clear in our participation in OCIO - which is to suit the needs of a wide range of visual effects and animation artists in every area. We used to have two color management systems - we are trying to have one system to meet all of the needs.
- J: Thank you, that's very clarifying.
- Doug: I don't know where this leaves us, we have a few more things to discuss.
- J: would love to think about this and regroup.
* RC1 or beta1 tag:
- Doug: we are fine with beta1 instead of rc1.
- Mark: Good with that.
* CUDA implementation followup.
- Doug: We talked about this last week, but missed the intent of Larry's original question - so he's here this week to help us understand his ask for OSL and other renderers.
- Larry: Traditionally OCIO functionality has been in 2 directions - using interactive graphics APIs to color correct a display. Makes sense for this to be OpenGL. But there's a 2nd interface callable from c++, which we use in OSL which do arbitrary transforms in shaders that we need at the time, as long as it's in the config. Trick here is renderers that take advantage of that are switching to CUDA based implementations - want to figure out how to continue to access this functionality in the new CUDA world? Or is this not something these libraries will continue to be able to use OCIO for? It's not uncomplicated - there has to be a directly accesible implementation for CUDA.
- Mark: So added functionality to the API to get a CUDA callable alternative would this solve the problem?
- Larry: CPU based c++ app launching CUDA kernels. Can the CPU app ask for the correct CUDA version to pass for the shader - think this would be fine. Just want something - get a handle to a CUDA callable transform.
- Mark: only thing we have now is the GLSL "get me a shader". Another API call where you pass in CUDA instead of whatever, that would work? Either texture source or byte code?
- Larry: either is fine.
- Mark: Textural source would be much easier.
- Doug: Issue with the GPU is how to get the texture onto the GPU.
- Patrick: Yeah it's a big blob of data - the texture that you have to get onto the GPU. The structure is there to be able to generate the CUDA code. There are two APIs - one that's openGL oriented, the other that just takes what it needs to do.
- Larry: CUDA has similar texture lookup to what you find in OpenGL.
- Patrick: Dynamic properties are another functionality to consider.
- Doug: Yes, how would you do uniforms?
- Larry: Not sure, will find out - but not critical right now.
- Mark: Imagine it's there, values you can tweak on your shaders.
- Larry: There are assumptions it makes - numbers you can't change without regenerating the shader. But it's not the primary concern right now.
- Mark: should be doable - just need someone to do it. There's not a lot to change, it's just annoying - go through every transform to add the CUDA implementation.
- Larry: good news is CUDA is basically C++ with decorators.
- Patrick: Another thing we have are helper functions - still C++ but soemthing to consider. It's a function in the shader.
- Mark: so the hooks in the shader where you're expecting user input?
- Patrick: No, at the intitial generation. A shader might use another method to call to perform a function - it's a subfunction.
- Mark: Ah, so it's like a standard library of things you can use in your GLSL.
- Patrick. Yes, so we're not repeating a bunch of code.
- Doug: to summarize, the current API would support CUDA, but it would be a fair amount of work to implement - we have an issue open for it now, looking for volunteers.
- Doug: thanks everyone, there's a configs meeting tomorrow, make sure you check the times!
+153
View File
@@ -0,0 +1,153 @@
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
<!-- Copyright Contributors to the OpenColorIO Project. -->
November 23, 2020
Host: Michael Dolan
Rotating Secretary: Doug Walker
Attendees:
* [ ] Mark Boorer (_TSC_) - Industrial Light & Magic
* [X] Mei Chu (_TSC_) - Sony Pictures Imageworks
* [ ] Sean Cooper (_TSC ACES TAC Rep_) - DNEG
* [X] Michael Dolan (_TSC Chair_) - Epic Games
* [X] Patrick Hodoul (_TSC_) - Autodesk
* [ ] John Mertic - Academy Software Foundation / Linux Foundation
* [X] Carol Payne (_TSC_) - Netflix
* [X] Mark Titchener (_TSC_) - Foundry
* [X] Carl Rand (_TSC_) - Weta Digital
* [X] Doug Walker (_TSC Chief Architect_) - Autodesk
* [X] Kevin Wheatley (_TSC_) - Framestore
* [X] Bernard Lefebvre - Autodesk
* [X] Deke Kincaid - Digital Domain
Apologies:
Mark Boorer
# **OCIO TSC Meeting Notes**
* ASWF Survey:
- Michael: Our part of the ASWF survey includes a question "Are there any
areas of color management that OCIO is NOT helping you with?". Is there a
way to make this multiple choice to fit with the rest of the survey?
- Carol: I would remove if it needs to be multiple choice. Don't want to
seed responses. Michael, Doug, Kevin: agree.
- Kevin: Also don't want to imply we are thinking about adding something
that we actually are not.
- Michael: Will try to keep it as an optional write-in.
* Documentation Update:
- Michael: Hoping to wrap up PR #1197 in a few days. Adding the part to
handle Python that we discussed previously. Basic issue is that RTD does not
allow us to use cmake and build. Implies Python needs to be pre-generated and
"frozen" into the repo. Also implies Doxygen needs to be run via Sphinx rather
than cmake.
- Michael: Not happy with how complicated the solution is but until RTD
supports cmake, will need some kind of solution like this. The process of
generating and updating the documentation will itself need careful
documentation.
- Doug: Thanks for working on this Michael!
* Review of Current and Upcoming PRs:
- Doug: We've pushed several PRs in the past week: #1208, #1214, #1215.
These are all either minor clean-ups or bug fixes. The most important is #1215
since it fixes a bug reading v1 configs that use "interpolation=unknown" in a
FileTransform. We view this as a critical bug fix and would like to merge it
before placing the beta1 tag. Does anyone object to us going ahead and merging
this one now?
- Michael, Mark, Carol, Kevin: Yes, merge #1215 immediately. (No one objected.)
- Doug: We will go ahead and merge it and then place the "beta1" tag
discussed at the previous TSC meeting.
- Doug: We have two more PRs that will land this week. First is related to
Issue #1155. In that issue I proposed cleaining up the CDLTransform API. We
have done that and moved the parsing and serialization code out of CDLTransform
and put it in the FileFormat modules, to be more like the other formats. We did
not go quite as far as I had proposed in Issue #1155 in that we did not remove
all the mentioned functions (although the name of one was changed to clarify
what it does). Also, we moved the write method from the Processor class to the
GroupTransform class.
- Michael: Why move the write method to the GroupTransform?
- Patrick: It allows for more flexibility, don't need to create a Processor
in order to write. No functionality is removed, one may always get a
GroupTransform from a Processor.
- Doug: Note that this was not in v1, so moving it will not break any
existing apps.
- Michael: Is there a case for also leaving it on Processor so that it's
more discoverable?
- Patrick: Metadata may be lost when a Processor is built, also some
spurious items may be added (Allocation, etc.). Having it on the GroupTransform
is a better design, allows one to write exactly what is intended. It's more
deterministic.
- Kevin: If the worry is about making it discoverable, that could be done
via documentation rather than leaving it in the Processor API.
- Michael: Yes, and it could also be confusing to have it in both places
giving somewhat different results.
- Doug: The other PR landing this week is a move of the AppHelpers modules
into the core. This is following up on the TSC's request to move it from a
separate library into the core. The goal is to avoid needing two OCIO libraries
(for Linux distros, etc.).
- Michael: What about the OIIO and OGL helpers? Patrick: Those remain as
separate. Really don't want to bring those third-party dependencies into the
core library. AppHelpers adds no third-party dependencies.
* OpenEXR 3.0
- Michael: Their v3 is on the way. Pulling from top of tree may break
downstreams. We pull from most recent tag, so not impacted yet but will be
soon. Currently we do some special stuff in our cmake since the only thing we
need is half.h. This could probably be improved based on their refactoring.
- Patrick: This dependency is not in our public API, but agree it will
require some updates. Could be a good first issue for someone.
- Doug: Michael, would you create an issue on GitHub so it has more
visibility? Michael: Yes, will do.
* Open Tasks Needed for OCIO v2
- Michael: Wanted to discuss some of the remaining items. Mei, where do we
stand with the Python unit tests?
- Mei: The Transforms is the area that needs the most work. Would also like
to centralize more.
- Michael: If you need help, reach out. Don't want you to feel like this is
all on your shoulders. Mei: Will do.
- Michael: On the documentation front, where are there holes? Is it all
documented in the GitHub Project?
- Carol: We don't have Issues created for everything. There are still some
items in my head, and Doug's too probably. We have been trying to onboard new
contributors. Have received some great assistance from Zach. We have some
tasks that would benefit from having a sample v2 config, but not blocked by that
yet.
- Doug: Another important task is making OpenFX plug-ins for v2. We have a
student who has volunteered to help with this but he is having trouble getting
the example plug-ins from the OpenFX SDK loaded. He's tried Natron but the
plug-ins are not loading. Not sure if it is a problem with what he's built or
in Natron. Once he gets the plug-ins loading in a host, Patrick and I could
help him with the OCIO part but is there anyone that could help us get him over
this first hurdle of getting some example plug-ins to load? The student has
posted in #dev on Slack asking for help.
- Michael: Mark, OpenFX was originally a Foundry initiative, right? Is
there someone on your team that could help?
- Mark: I will check. Also, once the plug-ins are ready to test, we could
help with that too.
* Items for next TSC meeting agenda:
- Doug: The Named Transform will soon be a blocker for us. Need to get to a
resolution on that. Also, would like to know if our reply to ILM's memo
addressed their other concerns.
- Michael: I have put Named Transform on the agenda for next meeting.
Carol: Could set a goal to resolve it.
- Patrick: The end of the year is rapidly approaching and in the roadmap
presentations we showed releasing a v2 library at year end. Need to make rapid
progress.
- Michael: We may need to settle for just having the release candidate done
by then. Would like to have more feedback before the final release.
- Doug: Agree. I'd also like to have a discussion around the categories feature.
The code was added a long time ago but we still need to have the discussion
around what are the recommended strings. (These are the strings that allow apps
to filter the list of color spaces based on the specific menus.)
- Deke: Sounds good, we're excited about that.
- Carol: Yes, I'll also put some thoughts on GitHub prior to the next live
discussion.
- Doug: I'll create an Issue for the category naming.
* Documentation Meeting Schedule
- The group decided to cancel the documentation working group meeting this
Friday due to the Thanksgiving holiday in the US.
+213
View File
@@ -0,0 +1,213 @@
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
<!-- Copyright Contributors to the OpenColorIO Project. -->
November 30, 2020
Host: Michael Dolan
Attendees:
* [X] Mark Boorer (_TSC_) - Industrial Light & Magic
* [X] Mei Chu (_TSC_) - Sony Pictures Imageworks
* [ ] Sean Cooper (_TSC ACES TAC Rep_) - DNEG
* [X] Michael Dolan (_TSC Chair_) - Epic Games
* [X] Patrick Hodoul (_TSC_) - Autodesk
* [ ] John Mertic - Academy Software Foundation / Linux Foundation
* [X] Carol Payne (_TSC_) - Netflix
* [X] Mark Titchener (_TSC_) - Foundry
* [X] Carl Rand (_TSC_) - Weta Digital
* [X] Doug Walker (_TSC Chief Architect_) - Autodesk
* [X] Kevin Wheatley (_TSC_) - Framestore
* [x] Bernard Lefebvre - Autodesk
* [x] Deke Kincaid - Digital Domain
* [x] Joseph Goldstone - ARRI
* [x] Matthias Scharfenberg - Industrial Light & Magic
* [x] Nick Shaw - Antler Post
* [x] J Schulte - Industrial Light & Magic
* [x] Alessandra Tomassi - Industrial Light & Magic
# **OCIO TSC Meeting Notes**
* Doug to recap goals of OCIO v2 and relation to OCIO mission:
- Some recent discussions about controversial topics. Thought it would be
useful to recap what we're doing with v2 from AD point of view - clarify
motivation for some of these new features. As written in origin proposal,
goal is to be able to use OCIO across apps more broadly, and to rely on
it entirely as our color management system (CMS). We would like to
standardize on OCIO across apps. Need OCIO to do a variety of color
management tasks. When thinking about how OCIO is used, there's color
space based transformations (OCIOColorSpaceNode, etc.) and other
operations which are more ignorant of color spaces (OCIOFileTransform,
etc.). In ideal world, only the former would exist, since it requires the
least knowledge from user. Reality is though there is need for people to
apply independent transforms, in apps where it's expected the user knows
a reasonable amount about color management (e.g. Flame - users know how
to load a LUT and apply it). Don't want two separate libs for applying
LUTs. For things like dynamic properties and NamedTransform, it's more
the latter case, using the same CMS to apply the independent transforms.
We aren't trying to change the existing config way of working - very
supportive of that workflow. Don't want to enable people with ability to
edit individual transforms in a config to edit look of a config.
- Mark B: Caught up with Doug offline to discuss. The way Doug describes it
now, it makes sense. Objections were based more around how these features
would map to configs. Some of the objectional features don't map to
configs, so we're ok with that.
- Deke: Really useful for tools like Nuke, where you have to jump over a
wall to implement things differently based on what workflow you are
doing. Would be nice if Foundry could have one code path instead of two
separate ways.
- Mark T: Agree. We would like that too and hope to standardize on OCIO in
Nuke and across products.
- Doug: Would be helpful to write whitepaper to try to establish best
practices. Sometimes we have people who are asked to implement color
management but are not color management experts, and implement without
being aware of best practices. Think having something that documents this
more extensively than current docs would be helpful. Hope TSC can focus
on this once v2 is out. Help people understand color management and
implement it correctly.
- Deke: Any support for deep merging of multiple configs?
- Doug: There is a way to convert between multiple configs in OCIO v2. USD
for example could reference one scene config, and import an asset using
another config. We added a processor command which can convert between a
known color space present in both configs. Looks for these two roles that
have been added which act as an interchange. Also added a version where
you can provide your own interchange (common color space used across
studio).
- Deke: No way to merge two configs though? To support vendors having
configs which inherit from each other.
- Doug: No.
- Mark B: Any use case where you're trying todo that?
- Deke: If vendors could have their own internal config and add it on top
of yours. You could add it above or below and merge them together and
have access to those transforms. Also for MaterialX, USD, etc. Point to
someone else's config to get transforms without cleaning up and
ingesting.
- Mark B: Need to use the solution Doug describes since you don't know if
the two config are compatible.
- Deke: Could also be a studio vs show level config.
- Mark B: We have same thing, facility, show, shot. We merge them through
custom sanitizing tools.
- Deke: Same. Inherit from ACES config and build on it.
- Mark B: Might put out another doc to clarify what was discussed with Doug
offline. Might be more to discuss but inconsequential compared to other
stuff.
* Named Color Transforms - Continued discussion:
- Michael: Is this topic still up for debate? Or was it resolved through
offline discussion?
- Mark B: Didn't cover this topic. Still up for discussion.
- Doug: We implemented ability to make NamedTransforms inactive. Commit
pushed to existing PR that does this. Zach proposed alternative way to
make them inactive. I replied that we are open to implementing that
instead of or along with what was done. His idea was to use env var to
disable named transforms all together, instead of treating them as
inactive color spaces where they are disabled one at a time.
- Michael: Could be good to have a config attribute in that case too since
the env could be cleared accidentally when shelling out to a process.
That would prevent it in a persistent way. Like how active displays and
views are handled currently, with env var or config property.
- Doug: The individual inactive flags are persistent, so can be used in
that way.
- Michael: Does that answer ILM concerns?
- Mark B: Our concern is feature itself, not the implementation. And how
it's exposed inside of tools. Does processor take NamedTransform
constructor?
- Doug: Would call getProcessor which takes generic transform, and pass
in NamedTransform. Same approach as using FileTransform.
- Mark B: Based on conversation earlier, don't have strong objection. If
intent to enable DCC to expose individual transforms where they won't get
confused with other transforms.
- J: Yes, and this is progress on previous discussion. With beta going out
and implementation being considered, need to get standardized view on
implementation.
- Mark B: In terms of enabling/disabling, like active displays/active
users, sounds reasonable.
- Carol: As aside, another useful case Matthias and I were discussing. This
would be the perfect vehicle for the ACES gamut compression transform.
Would be nice to be able to do that separately, in ACES config. Fits
nicely.
- Mark B: One point we discussed. Two very separate use cases for OCIO. One
we're trying to defend is config author creating black box, being
represented properly. Second use case with graph and a skilled artists
making decisions with toolbox of consistent math. In terms of first
users, don't see much use for NamedTransforms. Can see benefit for second
group of people though.
- Michael: Use of NamedTransforms could be covered in Doug's proposed
whitepaper too.
- Nick: Would that be a separate node in Nuke?
- Mark B: Think so
- Mark T: Yes, think that would be the case.
- Michael: Wanted to propose we form a UX working group to discuss these
topics and forming standards for OCIO v2 implementation in DCCs. We could
transition from the doc working group to that. If anyone is interested in
helping lead that, please reach out.
- Others: Agree.
- Deke: ACES has own UI rules, could collaborate between projects.
- J: Don't think OCIO UX being involved with ACES is good fit, since there
are workflows that don't involve ACES.
- Doug: As config working group moves forward a lot of the same questions
are going to come up. A lot of questions from initial config discussion
was on things like naming and interface.
- **TODO**: Michael will help organize a UX working group.
* Categories discussion (Issue #1222):
- Doug: At last TSC meeting talked about this. Created issue #1222. Trying
to collect a number of new features and discussions on how color spaces
appear in application menus. Motivation is the new categories attribute.
Hadn't gotten to the list of proposed categories, or sorted out how we
expect applications to use this. Want to make sure we're all on the same
page in case tweaks are needed to get this working as expected. Proposed
some tweaks in the issue. One of the things that came up in v2 working
group meetings was request from people that they want to specify, from
studio perspective, env vars to filter color spaces for artist
groups, like compositors, lighting artists, modelers, etc. Different from
app developer point of view with different menus for tasks. Proposed both
use cases and something which could work on both ends. Want feedback on
whether I've captured this correctly. See issue content:
https://github.com/AcademySoftwareFoundation/OpenColorIO/issues/1222
- Kevin: Have existing concept of roles. Fixed set of assumed roles plus
extended set. How would we choose to filter those with this. Nuke now
shows roles in menus, and would be good to filter those as well.
- Doug: App helpers code has setting to show roles or not.
- Kevin: Want users to find the roles they want to find. Artists trained
to use particular roles for certain tasks.
- Deke: Mari has roles listed too, and has its own roles.
- Mark B: Intention for roles was just to make sure basic color spaces were
there. Roles have been misused since then. Don't think roles should
appear at all in menus.
- Deke: Like roles there, but need to filter them.
- Mark B: Category system is powerful. If DCCs have prefs as to what
category might be associated with a dropdown (i.e. texture in Maya). DCCs
can assign categories to UI elements and only show those. Don't think
this should be OCIO-wide env var. Should be per-DCC.
- Doug: Yes, would be fixed for certain menu. Specific documented category
so config authors know what an app uses.
- Mark B: Could end up with overlapping categories. If up to user they
could define that themselves.
- Doug: Proposing standard categories to encourage consistency, but doesn't
need to be limited to this. The key part is there is a set pre-defined to
an application. So Maya would say what categories it's using for different
menus. There is another set that is end-user defined and would expect to
find those at runtime.
- Mark B: What if you have both types of categories?
- Doug: Then would use the intersection. So for texture, you could have
file-io intersected with an end-user environment variable (basic-3d etc.)
- Mark B: If either is empty, defaults to other?
- Doug: Yes.
- Mark B: Would make these categories configured by the config author. DCC
authors would allow users to customize the category names, or fallback on
the default list.
- Carol: Something to fall back on is good. Most people just use defaults.
Don't have a problem with proposed options.
- Mark: Defaults from DCC (as documented) is fine. Want to avoid problem
with roles where categories are inconsistent between apps. If all left to
user can be very explicit.
- Michael: More topics for discussion at UX group.
- Mark T: Agree. Highlights importance of best practice to show how things
are intended to be used. Developer may not find the right thing and use
something outside standard use. UX stuff really important.
- Mark B: App helpers has concrete implementation for reference.
- **TODO**: All: Read through issue #1222 and provide feedback there or in
next TSC meeting.
* Items for next TSC meeting agenda:
- Finish discussion on standard categories.
+141
View File
@@ -0,0 +1,141 @@
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
<!-- Copyright Contributors to the OpenColorIO Project. -->
December 7, 2020
Host: Michael Dolan
Attendees:
* [X] Mark Boorer (_TSC_) - Industrial Light & Magic
* [ ] Mei Chu (_TSC_) - Sony Pictures Imageworks
* [ ] Sean Cooper (_TSC ACES TAC Rep_) - DNEG
* [X] Michael Dolan (_TSC Chair_) - Epic Games
* [X] Patrick Hodoul (_TSC_) - Autodesk
* [ ] John Mertic - Academy Software Foundation / Linux Foundation
* [X] Carol Payne (_TSC_) - Netflix
* [X] Mark Titchener (_TSC_) - Foundry
* [X] Carl Rand (_TSC_) - Weta Digital
* [X] Doug Walker (_TSC Chief Architect_) - Autodesk
* [X] Kevin Wheatley (_TSC_) - Framestore
* [X] Bernard Lefebvre - Autodesk
* [X] Nick Shaw - Antler Post
Apologies:
* Mei Chu
# **OCIO TSC Meeting Notes**
* Doug to summarize in-progress work:
- Doug: With regard to categories, looking at issue (#1222). Idea to
improve app helpers code to implement improved category mechanism.
- Other work in progress:
- Color space alias mechanism. Seemed to be good consensus on this
being helpful.
- Improve list of builtin transforms in support of ACES.
- Various bug fixes.
- Michael: Any feedback so far on OCIO v2 testing?
- Doug: Not as much as we would like - a risk factor on release. Wondering
what we can do to improve that situation. Draft PR for OFX plugin arrived
yesterday. Still ways from being done, but could get us more testing upon
completion. Chicken and egg situation.
- Michael: Any studios here tested it out?
- Kevin: Not that I'm aware of [at Framestore]. Have used commandline stuff.
- Michael: Might be worth starting ocio-dev thread to invite people to beta
test. Could mention what needs feedback and provide more details.
- **TODO**: Michael and Doug will draft ocio-dev thread to reiterate beta
testing.
- Mark T: We have started testing it, but off for break. In new year will
hope to have something. End of January-ish.
- Kevin: Talked to Nigel about work done there so far. Suggested demoing
the work for the TSC.
- Michael: We're happy to set up a Zoom meeting if that's helpful, to give
feedback. Will help once we have UX working group up and running.
* Frozen doc generation platform differences and difference threshold:
- Michael: See PR #1197 for explanation, but faced challenge with frozen
docs differing between platforms, due to subtle naming differences from
the C++ side. Implemented fuzzy matching to pass/fail CI based on
difference threshold, which isn't ideal, but will work for now. Should
probably limit freezing to Linux builds only since that's what RTD uses.
Any objections to the current RST freezing workflow?
- Doug: May impact developers. Have to build docs and run python 3 to pass
CI.
- Michael: True. Alternative solution was to store CI build artifacts in an
S3 bucket and download those during RTD build, but current ASWF S3 bucket
is not public and requires secrets to access. Would need another setup.
- Mark B: Good first step to get in the door. Good for now. Not such a bad
thing.
- Doug: Huge step forward in process. Have looked at review. Think we
should merge it, and do follow ups.
- **TODO**: Michael to talk to Lf and/or RTD about plans for future
CMake/compiler support. Would remove need for these workarounds.
* Categories, continued discussion (Issue #1222)
- Doug: To summarize, we're proposing making the 3 changes listed in
summary of issue #1222.
- Doug: Documenting these initial categories would not be part of the
initial PR. any questions?
- Kevin: The names we give these things have to be really bulletproof about
what they mean, or leave it up to the apps to tell us what to look for.
Would make is straightforward to link apps and config. May need default
set of terms, but need to be careful to say what they mean.
- Doug: If we don't companies will come up with their own and could make
the list much longer if everyone has different name for same thing. Will
be differences between apps, so not clear cut.
- Carol: Can we reach out to some subsets of apps, Foundry, AD, and others
(Black Magic) and ask what their preferences would be?
- Doug: Proposed these from an app point of view. These three seemed like
they would be common menus. Proposed starting point.
- Carol: Would be worthwhile to show to Foundry and others.
- Mark T: I can show this and discuss internally.
- Mark B: We could agree on the categories, but the list is large and some
are not represented in this meeting. Felt that empowering users to always
set it is the only answer. Would allow all needed workflows; up to config
author if they want to tag them as disciplines or tag based on
functionality.
- Carol: What would we do for ACES studio config?
- Mark B: That will come up in that working group discussion. Should expect
the default case to be a user telling a DCC what category is assigned to
what drop down menu.
- Doug: That would be the ultimate in flexibility. Does impose more work on
app vendors - that customization, and not everyone may do it.
- Kevin: If we had that and same default terms. Would need map between apps
and what they need to know about. Also other cases where rules were used
in past. Becomes open ended at some point. Sometimes we have SG task or
process step that tells the app why the user is loading it: tracking,
lighting, etc. In that case, doing it in one config would be difficult.
- Mark: If you want artist based workflow, tag those, but still up to app
to associate the tags with menus. Need app preferences of which category
to assign to specific menus.
- Kevin: That's almost a different table of mappings.
- Mark: Or a different config per DCC, which we would likely not have.
- Doug: In terms of proposed code, app helpers implements possibility to
pass in two categories and do a join/intersection. Initial PR doesn't
need to sort out question of recommended categories or not, or if users
should be able to customize menus. Talked about UX working group, that
would be a topic to wrestle with.
- Mark: Current proposed work seems fine and mergeable then. Would be great
if working group result would be PR into app helpers. Already a place to
point to for DCC authors to buy into. Almost outside our scope,
encouraging apps to save these options.
- Michael: We have one volunteer to lead the UX group, but would like to
have a second to balance the work. If anyone is interested place reach
out.
- Carol: Definitely want to be part of it.
- Kevin: In response to Zach's comment in issue: Not sure I'm enamoured by
the suggested do-not-use approach. If going to have a feature it should
be explicit.
- Doug: Will make PR and have concrete stuff to review. For purposes of
docs, what we can take these menu and artist categories and include them
in docs as examples. Make it clear it's open to what users want.
- Carol: Agree.
- Doug: Can use OFX plugin as prototype. Can have field in plugin for
categories to use, and users can type different things. Can anyone
provide some help on this OFX work? It's an important step for
testing.
- Mark T: Spoke to some at Foundry. Many involved in OFX no longer there,
but some could help with specific questions. Reached out to contributor
after previous TSC meeting about build issues and got that fixed. Tried
examples on my end and worked fine. Just had bad flag. Definitely
potential for help from engineers at Foundry.
- Michael: I can help with guidance too. I'll have a look at the PR.
+148
View File
@@ -0,0 +1,148 @@
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
<!-- Copyright Contributors to the OpenColorIO Project. -->
December 14, 2020
Host: Michael Dolan
Attendees:
* [ ] Mark Boorer (_TSC_) - Industrial Light & Magic
* [X] Mei Chu (_TSC_) - Sony Pictures Imageworks
* [ ] Sean Cooper (_TSC ACES TAC Rep_) - DNEG
* [X] Michael Dolan (_TSC Chair_) - Epic Games
* [X] Patrick Hodoul (_TSC_) - Autodesk
* [ ] John Mertic - Academy Software Foundation / Linux Foundation
* [X] Carol Payne (_TSC_) - Netflix
* [ ] Mark Titchener (_TSC_) - Foundry
* [ ] Carl Rand (_TSC_) - Weta Digital
* [X] Doug Walker (_TSC Chief Architect_) - Autodesk
* [X] Kevin Wheatley (_TSC_) - Framestore
* [X] Bernard Lefebvre - Autodesk
* [X] Alessandra Tomassi - Industrial Light & Magic
* [X] Thomas Mansencal - Weta Digital
* [X] Matthias Scharfenberg - Industrial Light & Magic
* [X] Joseph Goldstone - ARRI
Apologies:
* Mark Boorer
* Mark Titchener
# **OCIO TSC Meeting Notes**
* Doug to summarize in-progress work:
- Doug: Have PR in progress about moving app helpers to core, and for
category updates described in issue #1222.
- Current PR for small BuiltinTransform changes. Much larger PR in
progress - adding remaining ACES transforms.
- CDLTransform cleanup PR is ready to be merged.
- Maya beta going out with preliminary OCIO v2 integration. Not on
by default - needs environment variable. Very preliminary, missing
stuff, but felt it was important to get it out as soon as possible.
We're worried it's not being tested enough. Good way to get
additional coverage.
- Carol: We'll do some testing at Netflix with it.
- Thomas: Any word on Nuke?
- Michael: Mark Titchener mentioned last week that they are working on
Nuke implementation. Hoping to have something around end of January
or so.
- Patrick: Regarding the preliminary Maya integration - it just hints
at what's coming, so keep in mind.
- Doug: Will be a post on rendering forum with more details.
- Michael: How long did it take to implement, roughly?
- Patrick: Took quite a bit of time. We did deep integration of color
management in Maya, so replacement with OCIO v2 is a lot of work.
Depends on integration in your tool; could be straightforward. In
Maya it was deeply integrated, so was not trivial. Nothing to do
with library itself. Even if it's preliminary, OCIO v2 is still here.
Can use config and displays, etc. Limitations listed in release
notes.
- Doug: Not sure in release notes, but in rendering forum. Will post
issues there. We had the most difficult job since we're transitioning
from SynColor and have to have backwards compatibility. Lot of work
for us, but hoping companies already using OCIO v1 exclusively will
be more straightforward. Some new work to take advantage of new
features, but getting up and running should be less complex.
- Patrick: Someone did integration in another tool and had it up and
running in week.
* Enable the new GitHub Discussions feature for OCIO?
- Michael: Been some discussion on this in Slack with mixed responses. I
can enable it to play with if we think it's useful.
- Thomas: Can mark topics as answered, so could be mini Stack Overflow on
GH. Could be useful. Will try to use it on colour science.
- Patrick: How do you compare it to Google groups?
- Thomas: Good question. We don't have a lot of good Groups traffic, but
think will make sense to put it in GH.
- Michael: Would be nice to get ocio-dev/ocio-user out there like that.
Lots of channels currently, but lists is less accessible.
- Thomas: Not much traffic there now.
- Carol: Would be interested in that too. Could test as method for
replacing it.
- Michael: Could enable it just to test. To push buttons, etc. Could set it
up on OpenColorIO-Configs-ACES repo if we want to test it somewhere less
active.
- Patrick: Have to be careful. We have changed a lot. Need to not lose
existing community. Something to keep in mind.
- Thomas: Good point. We have same concern. Has useful features though,
like turning GH issues into discussion. Can move between issue and
discussion, to keep issue board clean. Much harder on mail list. Could
de-clutter issue tracker.
- Michael: A lot of our traffic has moved to Slack, since it's more real
time. Same for ASWF discussion. There was initially concern about Slack,
since it is expensive to keep history, but a lot of discussion has moved
there.
- Doug: Happened to quite a few mail lists when they added Slack option.
* Remove OIIO dependency from OCIO apps (Issue #1233)
- Michael: This topic has been ongoing for a couple years. Propose in #1233
to implement the fix of replace OIIO with OpenEXR and libTiff. Any
objections?
- Doug: Could also use DPX vs tiff.
- Carol: Prefer tiff.
- Thomas: Agree.
- Doug: DPX is simple enough that makes it easy to grab. Could be fallback
if libTiff implementation is involved.
- Patrick: Do we agree on the direction?
- Michael: The main arguments for this solution are that the apps don't
need to be rewritten (or duplicated) in Python, or broken into their own
repo. The cpp apps are currently the main implementation example for app
developers. Python examples are more useful for topic of config
authoring.
- Patrick: Should not underestimate app examples. Some use these heavily.
- Doug, Patrick, Thomas: Agree with proposal.
- Thomas: OCIO/OIIO are a pain right now to build because of that circular
dependency.
- Michael: Aloys is also facing issues with this in the development of
production VFX ref platform Docker images for aswf-docker.
- Patrick: Should also think about package managers; brew, vcpkg, etc.
vcpkg is broken right now.
- Michael: Yes, a discussion on Conan is what brought this topic back up.
* GH Actions macOS runners maintenance:
- Michael: Received notice from GitHub that they are doing maintenance on
macOS runners this week, so we may see interruption.
- Patrick: Any problems with CentOS runners?
- Michael: No, those are run on Ubuntu runners. CentOS is purely in the
Docker container, managed by aswf-docker.
* Next TSC meeting January 4:
- Michael: After tomorrow's Config working group meeting, no OCIO meetings
until January 4th. All events have been cancelled in that window since
most have holidays.
* Other discussion:
- Doug: As mentioned previously, a student is working on high priority OFX
plugins for OCIO, and may need assistance. If anyone has time to help
him, see PR #1231.
- Michael: I reached out last week to see if specific help was needed, but
no request as of yet. Can bump issue to get status.
- Michael: Also, last week we talked about sending an update to ocio-dev
to invite more testing, but I hadn't noticed that Doug already sent
something like that to announce the beta 2 release.
- Doug: May do beta 3 before next TSC meeting. If anyone has time, would
appreciate testing and feedback, to move forward with RC in early
January.
- Michael: Are the PRs coming this week the last major changes?
- Doug: The last feature, aliases, should land next week. Still some other
PRs finishing up features already in place. Polishing, fixing, etc.
Will have some PRs in early January.
+122
View File
@@ -0,0 +1,122 @@
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
<!-- Copyright Contributors to the OpenColorIO Project. -->
January 4, 2021
Host: Michael Dolan
Attendees:
* [X] Mark Boorer (_TSC_) - Industrial Light & Magic
* [ ] Mei Chu (_TSC_) - Sony Pictures Imageworks
* [ ] Sean Cooper (_TSC ACES TAC Rep_) - DNEG
* [X] Michael Dolan (_TSC Chair_) - Epic Games
* [X] Patrick Hodoul (_TSC_) - Autodesk
* [ ] John Mertic - Academy Software Foundation / Linux Foundation
* [ ] Carol Payne (_TSC_) - Netflix
* [X] Mark Titchener (_TSC_) - Foundry
* [X] Carl Rand (_TSC_) - Weta Digital
* [X] Doug Walker (_TSC Chief Architect_) - Autodesk
* [X] Kevin Wheatley (_TSC_) - Framestore
* [X] Bernard Lefebvre - Autodesk
* [X] Robin Rowe - CinePaint
Apologies:
* Carol Payne
* Mei Chu
# **OCIO TSC Meeting Notes**
* rawtoaces:
- Michael: rawtoaces was accepted as an ASWF incubation project at the
last TAC meeting. Might be some interesting collaboration opportunity
there.
* Doug to summarize in-progress work:
- Doug: New PRs two weeks ago, some updated commits last week.
- Grading op implementation now complete.
- Minor fixes/changes: v1/v2 serialization issue (#1244).
to_reference/from_reference synonyms. Default view transform
specification.
- #1241 implements color space alias feature.
- Michael: Use case for config name added in PR? Comment seemed to
imply could be used as a color space namespace, and referenced
externally?
- Doug: Optional config name, could be useful for:
- Alternative to filename for tracking config.
- Indicate version.
- Future use as more fully qualified name for a color space.
- Reference for USD, other projects, etc.
- Just metadata for now.
- **TODO**: Bernard will clarify comment in API that config name has no
influence on color space lookups.
* Seeking approval to merge PRs #1220, 1234, 1241 (today), 1244, 1245
(tomorrow):
- Doug: Want to get OCIO v2 out there, since we're over the VFX ref
platform release date a bit. Suggest releasing 2.0.0 by mid-January.
Want to get last PRs merged and RC tag to communicate final testing
state.
- Michael: Have a Python binding fix for CPUProcessor that should be in
RC release.
- Mark: Did apphelpers (#1220) add dependecy to core? OpenGL?
- Doug: No, that's in another helpers lib separate from core.
- No objections to proposed merges.
* Version handling discussion:
- Doug: Once config v2 version starts getting used, will be need to bump
version for future changes. Want to discuss how to handle versioning. If
config syntax needs tweaking, what to do. Currently will throw for v3
and warn for v2.1.
- Michael: Currently just single int right?
- Doug: Yes, and added ability to have minor version in OCIO v2.
- Kevin: What additions would we make to need a version warning? Fixed
transform?
- Doug: Yes, and some things would throw. A new style string for a
transform for example.
- Mark: Don't think there's need to be future compatible. Would prefer to
fail fast vs. silently ignoring incompatibility. OCIO and config version
numbers can diverge.
- Patrick: For debugging would be useful to keep major version in sync
between lib and config.
- Kevin: Does the minor version increment sequentially, or is it tied to
lib release? Under what circumstances is a warning valid. Or is it just
valid or not valid, ok or throw.
- Doug: If an older version config is not using new features, it could
try to load.
- Michael: Failing fast would avoid subtle differences, like
ExponentTransform negative handling changing for example.
- Kevin: Or changed defaults.
- Michael: Could have metadata in config with exact lib version if needed.
- Patrick: Need to be careful with optional metadata. Could get out of date
and be confusing.
- Mark: If having minor version helps keep it organized, have no problem
with it.
- All agree to allow minor version, and fail on unknown/unsupported version
rather than raising a warning.
- **TODO**: Bernard will push updated to #1244, which is related.
* Discussion about creating a RB-2.0 release branch:
- Doug: After these PRs get merged, will create the branch. Should RC tag
begin that?
- Kevin: If we create them together we are saying they are the same. If
separated, might be different.
- Patrick: Where do we put the tag? In main or in RB-2.0?
- Mark: Have it in both, and cherry pick main changes into RB-2.0.
- Patrick: Only consequence is main will be tagged as RC.
- All agree to create tag in main and branch RB-2.0 from that.
* General discussion:
- Kevin: If we are concerned with ABI compatibility, should we put
something in place to warn about it? Extra symbol appears or disappears,
etc.
- Mark: OCIO is good at avoiding this since all symbols have version
namespace. Only issue if you don't update the version number.
- Patrick: If we are consistent, won't happen. Should be caught in review.
- Mark: Difficult to comare symbols to detect change. Would need two builds
or maintained list of symbols.
- Patrick: Even changing order could be an issue.
- Kevin: What about for Python?
- Michael: We are setting __version__ currently.
- Mark: It is likely used in setup.py, etc.
- Michael: We will eventually setup PyPi, so could be used there too.
- Follow up: See PEP 396: https://www.python.org/dev/peps/pep-0396/
+159
View File
@@ -0,0 +1,159 @@
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
<!-- Copyright Contributors to the OpenColorIO Project. -->
January 18, 2021
Host: Michael Dolan
Attendees:
* [X] Mark Boorer (_TSC_) - Industrial Light & Magic
* [ ] Mei Chu (_TSC_) - Sony Pictures Imageworks
* [X] Sean Cooper (_TSC ACES TAC Rep_) - ARRI
* [X] Michael Dolan (_TSC Chair_) - Epic Games
* [X] Patrick Hodoul (_TSC_) - Autodesk
* [ ] John Mertic - Academy Software Foundation / Linux Foundation
* [X] Carol Payne (_TSC_) - Netflix
* [X] Mark Titchener (_TSC_) - Foundry
* [X] Carl Rand (_TSC_) - Weta Digital
* [X] Doug Walker (_TSC Chief Architect_) - Autodesk
* [X] Kevin Wheatley (_TSC_) - Framestore
* [X] Bernard Lefebvre - Autodesk
Apologies:
* Mei Chu
# **OCIO TSC Meeting Notes**
* Doug to summarize in-progress work:
- Doug: Number of PRs landing this week. Bug fixes in Python bindings, etc.
No new features. Small but appreciate quick turn around.
* Any volunteers to help get the OpenFX plug-ins compiling (PR #1232)?
- Doug: Contributor needs help with compilation and loading in OFX
compliant app. Doesn't need help writing plugins, just initial step of
getting it built.
- Michael: Currently is swapping code into a Resolve plugin example I
believe.
- Carol: Is there more we can do to help people get up and running with
OCIO? Many new developers are struggling to get up and running. Not sure
what the issue is.
- Doug: Valid point. Heard similar feedback from ACES community too. Not
all those trying to build OCIO are necessarily developers.
- Sean: Might be lack of familiarity with C++ build env.
- Carol: Could link to some CMake help for getting started, etc.
- Sean: After release, when we get into other package envs, those
complaints will go away.
- Michael: I brought this up in the last CI working group. Pushed for
making one of the goals this year to work on standardized package manager
support across ASWF projects.
- Mark T: He had example plugins building. I talked to him about some of
that. Is able to build examples now, but not able to build his plugin.
- Michael: We can do zoom to help support if needed.
* VFX Reference Platform 2.0.x -> 2.x:
- Michael: I reached out to the platform working group and the TAC about
the change and got good feedback. OpenVDB has always had a variable minor
version, but has to be handled carefully. Stance from VFX ref platform is
that a CY version range must be ABI compatible.
- Doug: Challenge is we may want to do 2.x release that breaks ABI
compatibility. Lots of things could break it.
- Michael: Can do minor version ranges in platform, if we could commit to
certain minor versions being ABI compatible.
- Doug: Anyone rememberer when tetrahedral interpolation was added to
OCIO v1? Did that break ABI compatibility?
- Kevin: It didn't quite. Was able to put binary from Nuke into Mari and
it worked.
- Patrick: Can add enum, but add at end.
- Doug: Risk is committing to all 2.x not breaking ABI.
- Patrick: Need to say that for next 9 months, no change will break ABI
compatibility. Since v2 is first being used, challenge to say that.
- Carol: Have not done enough testing to be confident.
- Michael: Semver doesn't explicitly say ABI compatibility, but sort of
implies it in minor version changes being backwards compatible. That
would impact the decision too.
- Patrick: We will have to change API.
- Carol: Might be 6 months before we see v2 release with Nuke.
- Mark T: Yes, taking longer than we hoped. also delay getting into
production once it's in DCCs.
- Michael: Suggest we back out changes if we're not confident in adhering
to the rule.
- Doug: Will need to be 2.0.1 as bug fix, and then eventually 2.1.
- Carol: Can push bigger changes to CY2022.
- Mark B: Don't forsee needing to use these new features at facility scale
in 2021. Not a huge deal if VFX ref misses some of those minor features.
- Michael: We're currently missing builtin transforms needed for the ACES
config. Would we need to resort to LUTs to get that out?
- Doug: Can do like was pasted in Slack a while back, building the output
transforms in the config.
- Michael: Any performance cost? Or since builtin transform just builds ops
directly, is it about the same?
- Doug: Shouldn't be. Have not tested yet.
- Michael: Complicates config build script a bit. ACES 1.3 can wait, but we
will need output transforms.
- Kevin: How many releases could we have this year? How many versions on
active support? Committing to support VFX ref platform. Minor versions
could be more to support. Tradeoff of not locking ref platform down.
- Mark B: Could add broken endpoints for features we're planning to add.
Then API won't change.
- Michael: Good idea. I have seen other libraries do that. Let's continue
this discussion in the config wg meeting tomorrow. I will followup with
platform working group after that.
* Release plan discussion for 2.0.0:
- Doug: Would like to do 2.0.0 release next week, Monday or Tuesday. Minor
PRs in this week to merge quickly.
* Issues, Built-in Transform, Documentation, or other “must haves” for 2.0.0:
- Doug: If there are things people feel are must haves, want to get them on
table. Bernard working on issues. Not currently working on reported
OpenEXR 2.5 CMake issue.
- **TODO**: Michael will roll back OIIO find module to resolve that
issue for now.
* Ociocheck behavior for missing roles:
- Doug: ociocheck looks for known set of roles. If they are missing it
prints error message. Added new roles to OCIO v2, so was going to add
them to OCIO check, but they aren't mandatory. some of the roles it is
currently complaining about don't seem mandatory. Propose changing
message to warning instead of error.
- Kevin: Difference in behavior with new roles. They are required in
certain circumstances. Without matte_paint role config will work. Would
like a strict check that validates as an error. Agree on some other roles
being warnings though.
- Sean: Core roles could be hard coded in DCCs and know that those exist.
More for DCC/API compatibility. With newer v2.0 features, can question
whether they are necessary.
* Should inactive color spaces be included by parseColorSpaceFromString?
- Doug: Inactive spaces won't be in menus. Should we parse inactive color
spaces from strings?
- Kevin: I think so. Useful for loading historical color spaces. Like to be
able to load file on disk.
- Mark, Sean: Agree. Good to load them still if it's defined.
* Scope of image IO support for app refactor (to remove OpenImageIO dependency):
- Michael: I've been building simple image interface to load EXRs for apps.
OpenEXR is a broad interface though, with many types of files. Should we
support them all? Or limit it since the apps only operate on RGBA?
- Mark B: Think we can keep the OIIO dependency. If needed can change how
they are built, with apps in another repo, or a separate CMake build.
- Kevin: Package managers would prefer library and tools separate.
- Mark B: That's what debian and brew do.
- Patrick: Agree not a huge problem, but falls in problem category. Two
types of commandline tools. Helpers and apps like ociodisplay, which are
useful for development. Moving tools for external users outside could be
good. But ocioperf less convinced. ocioperf would be ok only having
OpenEXR format. Tool we really need OIIO for is ociodisplay.
- Group agrees to continue discussion next week and in GH issue. Leaning
toward keeping OIIO dependency and implementing one of Mark's
suggestions.
* ASWF 2020 CCLA 2.1 transition:
- Sean: What would the timeline by for this change? 6 months?
- Michael: I talked to John and it sounds like we can get the new CCLA
signed before we switch and then switch it over once we know there will
be no disruption to contributions. Will follow up more on this next week.
* Items for next TSC meeting agenda:
- Removing apps from repo or main build.
- ASWF 2020 CCLA 2.1 transition plan.
+87
View File
@@ -0,0 +1,87 @@
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
<!-- Copyright Contributors to the OpenColorIO Project. -->
February 8, 2021
Host: Michael Dolan
Attendees:
* [X] Mark Boorer (_TSC_) - Industrial Light & Magic
* [X] Mei Chu (_TSC_) - Sony Pictures Imageworks
* [ ] Sean Cooper (_TSC ACES TAC Rep_) - ARRI
* [X] Michael Dolan (_TSC Chair_) - Epic Games
* [X] Patrick Hodoul (_TSC_) - Autodesk
* [ ] John Mertic - Academy Software Foundation / Linux Foundation
* [X] Carol Payne (_TSC_) - Netflix
* [X] Mark Titchener (_TSC_) - Foundry
* [ ] Carl Rand (_TSC_) - Weta Digital
* [X] Doug Walker (_TSC Chief Architect_) - Autodesk
* [X] Kevin Wheatley (_TSC_) - Framestore
* [X] Rémi Achard - DNEG
* [X] Thomas Mansencal - Weta Digital
* [X] Matthias Scharfenberg - Industrial Light & Magic
* [X] J Schulte - Industrial Light & Magic
# **OCIO TSC Meeting Notes**
* Several pending pull requests: some are Python reviews, but most of them are
meeting minute reviews.
- Patrick: Few PRs awaiting review. Not C++ changes - meeting minutes,
Python, etc.
- Carol: There's a website PR ready for review too. I will take a look at
that.
- Michael: Noting some issues reported related to v2, which means it's
being used and tested. I've been testing it and love the new config
features. Being able to build configs without external files is great.
- Patrick: Doug and I are investigating the issues. Big thanks to Doug for
the config improvements. *clap*
- Kevin: Using pre-release of v2 and encountered a bug while baking to
Resolve cube with ociobakelut. Known issue? Asking to bake 3D cube, but
resulted in 1d cube. I will investigate further.
* GSoC/D&I internships:
- Carol: Put doc in TSC channel. Two projects - ffmpeg support, and OFX
plugins:
https://docs.google.com/document/d/1sa68Cjq0TzSYFg2xhf2w2FFAQ1In7G391iINWKXfDo8/edit?usp=sharing
- Carol: Going to ask community for more ideas, and for more mentor
volunteers this week. End of this week needs to go to Larry. Think we're
the only ones submitting to GSoC this year.
- Michael: Quick mention that there's a new ASWF working group forming
around topic of Rust bindings for VFX OSS libs. Sounds like a group of
developers interested in working on this for several projects. First need
to make C bindings.
- Mark B: Talked about OCIO C bindings a while ago. Complex due to use
of shared pointers everywhere.
- Patrick: Earlier we discussed the idea of going back and making OCIO a C
lib with header only C++ bindings. Too late now, but interesting topic.
* Static builds - cmake export:
- Mark B: Problems with static builds when deploying on Windows. Looking at
fixing a number of CMake issues and improving 3rd party lib builds.
Improving debug and release builds too. PR will have a lot of changes,
but only to CMake. Hoping to open PR this week. Also noting some issues
with the way unit tests are linked which could be improved later. Tests
don't use same targets as lib, so must rebuild code.
- Patrick: Unit tests need private part of some files, so needed in some
places. Even if CMake is platform agnostic, have to deal with Windows
specific stuff. Often seems slightly broken on Windows platform.
- Mark: Big one for me was debug. CMake build type variable doesn't work on
all platforms. Default setup on Windows uses VS solutions, which support
multiple targets. Since on Windows release and debug libs can't be mixed,
current setup can be problematic.
* Locale issue:
- Patrick: Working on OCIO v2 integration in Maya. Facing locale issue -
numeric separator handling. We discussed this earlier, but will need to
resume conversation.
- Mark B: Parsing LUT files with locale wrong can cause read issues.
Probably want correct locale when reading yaml files, but one consistent
locale when reading LUTs.
- Patrick: Previous Turkish locale bug was related to upper to lower case
conversion (PR #984). I agree that numeric parsing should be locked to
decimal points.
- Doug: Lib is quite dependent on lowercase conversions. Could argue not
needed, but for backward compatibility might have to keep it.
* Items for next TSC meeting agenda:
- Absent next week: Patrick, Michael. Doug will be present and host.
+2 -4
View File
@@ -5,12 +5,12 @@ DATE
Host: NAME (Michael Dolan?)
Rotating Secretary: NAME
Secretary: NAME
Attendees:
* [ ] Mark Boorer (_TSC_) - Industrial Light & Magic
* [ ] Mei Chu (_TSC_) - Sony Pictures Imageworks
* [ ] Sean Cooper (_TSC ACES TAC Rep_) - DNEG
* [ ] Sean Cooper (_TSC ACES TAC Rep_) - ARRI
* [ ] Michael Dolan (_TSC Chair_) - Epic Games
* [ ] Patrick Hodoul (_TSC_) - Autodesk
* [ ] John Mertic - Academy Software Foundation / Linux Foundation
@@ -36,5 +36,3 @@ Apologies:
* Items for next TSC meeting agenda:
- xxx
@@ -0,0 +1,176 @@
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
<!-- Copyright Contributors to the OpenColorIO Project. -->
November 17, 2020
Host: Michael Dolan
Attendees:
* [X] Mark Boorer (_TSC_) - Industrial Light & Magic
* [X] Michael Dolan (_TSC Chair_) - Epic Games
* [X] Carol Payne (_TSC_) - Netflix
* [X] Doug Walker (_TSC Chief Architect_) - Autodesk
* [X] Matthias Scharfenberg - Industrial Light & Magic
* [X] Dennis Adams - Sony
* [X] Thomas Mansencal - Weta Digital
* [X] Christophe Brejon
* [X] Deke Kincaid - Digital Domain
* [X] Allie Moon - Industrial Light & Magic
* [X] Kevin Wheatley (_TSC_) - Framestore
* [X] Zach Lewis - Method
* [X] Alex Forsythe - A.M.P.A.S.
* [X] J Schulte - Industrial Light & Magic
* [X] Matthias Scharfenberg - Industrial Light & Magic
Apologies:
*
# **OCIO Configs Working Group Meeting Notes**
* OCIO output transform implementation:
- Doug: Working on PR to do something similar to ACES color space
transforms. Add builtin transforms to facilitate making ACES config, etc.
Involves mapping ACES output transform structure to OCIO structure.
- **See slides**: https://docs.google.com/presentation/d/1sLyY8Q4JVkM6TqDHbqq9OWAW0zNcwvJQnh_jCtM4JHU/edit?usp=sharing
- Plan is to map ACES 1.0 and 1.1 output transforms into OCIO v2
structure. Reduces code and makes it clear how the ACES transforms
are defined. Moving linearCV to outputCV section of CTL into its own
transform. Transforms which have similar calculations would share
components in OCIO.
- Naming can be discussed. Table is just straw-man for group
discussion.
- Alex: So primaries don't come into play until clamping happens?
- Doug: Yes. Last slide has summary of all view transforms and display
color spaces. display color spaces are very simple - basically matrix and
gamma, or matrix and EOTF. Working on PR for this, but wanted to share
high level thought process.
- Mark: What is the PR for?
- Doug: To add builtin transforms outlined in the slides. Each view
transform would become a builtin transform. PR only on the OCIO repo
(not configs repo).
- Mark: Does this mean we have multiple display referred spaces, and some
outputs attached to each one? Or are they associated with specific
displays?
- Doug: In display/view section of config. For example, "Rec. 709"
display/view with "ACES 1.0 SDR-video" view transform, and "Rec. 709"
display color space. Each would have name, view transform, and display
color space. Down in 'view_transform' section of config would have the
view transforms with a transform referencing builtin transform
(see slides).
- Mark: Shame that so many view transforms are required, due to gamut
limiting and simming. Not a nice common space for them all to go through,
like OCES for example. Can limits not be done on display end after
transform?
- Doug: Could be done that way. Depends what we think of as a display color
space. Would take things from view transforms and move to display color
spaces (limits, etc.). Did it the current way because it's nicer to keep
display color spaces as simple matrix/gamma transform. The limiting and
white poiont simulating parts are more of the view rather than part of
Rec. 709/Rec. 2020, etc. Display color spaces kept as simple pure display
specs.
- Mark: Under assumption that with separate view transforms, the graph
would be simpler. But with the complexity, why even need the view
transform? Rather than going direct from scene to display?
- Doug: This is more flexible. Allows adding other combinations not in
aces-dev repo. Right now aces-dev doesn't have D60 sim on Rec. 2020
monitor. If someone needs that there's no way to do it. With this,
that could be done easily.
- Mark: That would need to be explicitly added to the config right?
- Doug: Need to decide what we need to do with ACES config. Could be
faithful mapping of things just in aces-dev repo. And a studio config
with the other parts in the current ACES configs. Would be a choice for
config author to make. The building blocks are there.
- J: Know trying to map CTL to OCIO. There are lot of color spaces that use
limited output, but we would never use the limited output. Adds a lot of
extra outputs.
- Doug: These are convenance things for people that want to work that way.
Common request that people don't want to put colors out that they can't
preview on their device. Goes against original ACES design intent, which
was to preserve all of the colors. In practice post production doesn't
want to take risk on out of gamut colors and clamp.
- Kevin: Artistic intent to clamp in range sometimes, in DI.
- J: Yes, we master to an explicit target with no room for
misinterpretation.
- Michael: The idea too is that the config generator would be configurable.
Definitely the studio config, but we could also make the reference config
configurable to include/exclude certain transforms, like limited outputs.
- Doug: Could also make them inactive, and just turn them on, wouldn't need
to re-generate. Either way fine though.
- Carol: Get the reasoning for adding ACES version to the naming, but also
don't know how much that's going to be relevant to people. For change
control mechanism?
- Kevin: Runs risk of comparing versions and saying one is better than
other.
- Mark: Need it to support revisions. Very internal pieces.
- Carol: Would version config with transforms usually.
- Doug: Name of builtin transform definitely have version in it, but only
seen by config author. Good point that for user facing parts, do we need
the version in there?
- Matthias: If the SDR transform hasn't changed and we're on new version,
means that the SDR transform is still same for new version. Consistent
version number that matches latest version of ACES release. If all taken
from same ACES version, use current name, instead of old name.
- Mark: Can alias them between versions and have same math if that helps
people. Gives flexibility for building version specific configs.
- Kevin: Version number change makes sense when look changes.
- Mark: Would be nice if you could make a config based on specific ACES
version, aliasing versions to keep them up to date.
- Doug: One concern on ACES side about the transform ID. Thomas pulls name
from the ID, which has persistent name for things like ACES metadata
file. Wouldn't want to bump the ID version unless the code changed, but
not a user facing name. For ID strings, shouldn't bump version, but for
user facing things we need to figure out something thats not confusing.
- Mark: Config authors are also users. Currently no mapping from ID strings
to builtin transforms.
- Doug: Correct, no direct mapping. Tried to demonstrate that in slides.
Thomas is filtering some of the names. Kept it simpler for presentation,
but agree that builtin transform code should have full transform id string.
- Mark: If someone really has to understand history - the way ACES config
code was structured at time. We have generator that sees both worlds. If
you remove half from users, will have no idea.
- Doug: That's behind string proposals in slides. But need to decide as
group.
- Michael: Could we store that in format metadata? accessible from API?
- Doug: Yes, could create description tags in format metadata. More human
readable name and include data from CTL which has a lot of great
information.
- Thomas: Being put in description right now.
- J: A UI bomb for tools that use it.
- Michael: Will it be 1:1 transform -> CTL?
- Mark: Hard to keep that link because of the view/display split. Breaks
that relationship. Free then to put whatever comment you like.
- Doug: For input and color space conversion side, more 1:1. For output
transform would need table.
* ACES transform spreadsheet:
- Another item we previously discussed was creating a spreadsheet with all
ACES transforms, where we could discuss what should be included in the
reference config.
- Mark: Can take names from Doug's slides as well?
- Kevin: For lib itself, would these transforms introduce new ops? Or black
boxes?
- Mark: Black boxes, implemented however we like. Either existing ops or on
the fly 1D or 3D LUT.
- Doug: No 3D LUTs in builtin transforms. Goal is to move beyond 3D LUT
limitations. Big limitation in current config. Have ops now (fixed
function, etc.) added for this purpose, which is faithful to CTL itself.
- Kevin: Tradeoff between the black box and being able to understand that
it is doing what the CTL is doing.
- Doug: Will be very clear, mapping from ops to the CTL. That will be in
the PR, and I can show corresponding YAML to help. Should show this
comparison in meeting at some point.
- Mark: Already quite a few implemented in OCIO source, under builtin
transform folder.
- Kevin: It's a bit opaque.
- Mark: Its a black box by design, not having to think about how to add all
the pieces to get an ACES config. Opting to have the pre-made collection
of transforms.
- Doug: convenience for config authors. If someone looks at the internals,
could manually put all the pieces in the config yourself to be more
transparent. Could have a builtin transform and more exposed version
which lists individual ops. Would be long and verbose, but clearer for
those who want to understand each step.
- For next week let's get a spreadsheet populated so we can discuss config
contents.
- Mark: Can we link empty sapreadsheet in notes?
- **Spreadsheet for next discussion**: https://docs.google.com/spreadsheets/d/1SXPt-USy3HlV2G2qAvh9zit6ZCINDOlfKT07yXJdWLg/edit?usp=sharing
@@ -0,0 +1,227 @@
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
<!-- Copyright Contributors to the OpenColorIO Project. -->
December 1, 2020
Host: Michael Dolan
Attendees:
* [X] Mark Boorer (_TSC_) - Industrial Light & Magic
* [X] Michael Dolan (_TSC Chair_) - Epic Games
* [X] Carol Payne (_TSC_) - Netflix
* [X] Doug Walker (_TSC Chief Architect_) - Autodesk
* [X] Kevin Wheatley (_TSC_) - Framestore
* [X] Matthias Scharfenberg - Industrial Light & Magic
* [X] Dennis Adams - Sony
* [X] Thomas Mansencal - Weta Digital
* [X] Christophe Brejon
* [X] Mitch Prater - LAIKA
* [X] Zach Lewis - Method
* [X] Alessandra Tomassi - Industrial Light & Magic
* [X] J Schulte - Industrial Light & Magic
* [X] Nick Shaw - Antler Post
# **OCIO Configs Working Group Meeting Notes**
* Review spreadsheet, agree on reference config scope:
- Spreadsheet: https://docs.google.com/spreadsheets/d/1SXPt-USy3HlV2G2qAvh9zit6ZCINDOlfKT07yXJdWLg/edit#gid=0
- NOTE: Doug updating and adding discussion comments in spreadsheet.
- Michael: Thanks to Zach for populating much of the spreadsheet! Of this
list, which transforms are accounted for currently in BuiltinTransform?
- Doug: All of ACES CSC complete.
- Mark: Do we need 10 and 12 bit ACESproxy?
- Doug: Those are annoying. They are implemented differently, with bitshift
scaling.
- Mark: Is it possible to correctly use those? Due to not supporting 10 and
12-bit integer inputs.
- Doug: you can directly process integer pixels on input and output. Could
produce correct pixel with 10i or 12i values. Sort of like ADX10 or
ADX16. Not claiming they need to be encoded at that depth. They are just
different color spaces. I think they should be in reference config since
they are part of ACES.
- Mark: Don't agree with putting it in config just because it's in CTL.
Muddying the waters by having them in here. If not possible to input 10
or 12-bit integer into OCIO, doesn't make sense to support the use case
where bit-shifting is needed.
- Thomas: Might be requirement for logo program. For ACES official support.
- Michael: Was initial meeting with ACES team to get OCIO in ACES logo
program.
- Doug: ACES committee maintains product partners. Vendor would sign up as
partner. There is implied commitment to meet the requirements. Since
there is new CLF and AMF specs, probably will be more forceful about
adhering to the standards. They would like OCIO to be part of the
program.
- Mark: Don't think they would deny the logo program based on agreed
exclusions.
- Thomas: Should discuss with ACES.
- Carol: Agree, don't think they would have a problem excluding something
if it can't be implemented correctly.
- Doug: Can be implemented correctly. No technical reason it would not
work.
- Mark: Still have to do conversion outside of OCIO.
- Kevin: Sample application. What happens in Nuke were color processing is
independent of file processing. Relying on downstream tool to do correct
output. Ambiguous about who should do that.
- Doug: OCIO does support 10 and 12-bit pixel formats, and it would produce
ready to use pixels. Not saying we have to support it, but it would work
in OCIO.
- Mark: Should you have new color space for that? Or do you assume just by
choosing that you get the right output.
- Doug: Complicated because of the scaling implementation. Would be nicer
if you could just select ACESproxy and let something else worry about
the scaling.
- **TODO**: Michael will add another option to include columns in
spreadsheet.
marking a transform as undecided or in discussion.
- Kevin: We can't control implementations even if OCIO does the right
thing. If builtin into reader or writer, ok, but in color space
conversion node, all bets are off.
- Thomas: Could come with caveat - documentation on how to use. Don't think
a lot of people will use it.
- Mark: Should do ADX ones as well.
- Doug: Don't think there's a question about including those. They are
vastly different color spaces. ADX10 not able to capture everything on
current negative films.
- Kevin: We never get anything film scanned that's ADX10. Always different
density range than ADX can hold.
- Doug: ACES team has identified ADX support as an area that they want to
upgrade.
- J: Discussion outside this scope.
- Michael: Next discussion id about ALEXA IDTs.
- Doug: These aren't all of them. These are the EI 800 ones.
- Thomas: Some of these will likely be removed. Need to discuss with
Joseph, Scott, and Alex.
- Mark: Strong preference that they aren't included. Just include one.
- Kevin: Might need to be two. These are from RAW. Still need wide gamut
as well.
- Matthias: Should they be included at all? Haven't seen ALEXA RAW image
at all, except what I've made. Question the usefulness. Will need ALEXA
wide gamut.
- J: Agree. Camera native is unlikely to show up in our workflows due to
sophistication of our pipelines. Support removing all of these others
bits of noise.
- Carol: Think that's what ARRI will say as well. Moving forward there are
use cases for debugging, but not necessity to have all in a config.
- Thomas: Goes back to ACES logo program. Should say to Academy what we're
not supporting and why.
- Matthias: In last IDT meeting showed table of what qualified as logo
program. Needed two matrices in camera, or a common gamut where
white-point optimization is already done.
- Doug: Making note about sensor RAW ALEXA, which are not commonly
received.
- Kevin: If we go for logo program status, do we have to keep following
ACES when new IDTs are added?
- Matthias: Don't see way out of it if new camera color space is made.
- Michael: What about all the Sony spaces?
- Mark: Need some of them.
- Carol: Need venice.
- Doug: Have CSC transforms for SGamut spaces, which are the newest
implementation.
- Zach: Do we need to differentiate between 10 and 12 bit, or include
SLog1?
- Doug: Other way to think about this is we could implement all of them,
but set them as inactive in the config. Proves OCIO has implemented the
full library, but wouldn't show up unless enabled.
- All: Sounds reasonable.
- Doug: Could start with essentials, and talk to ACES about doing more
later.
- Matthias: Agree to focus on what's important.
- Michael: Could put more builtin transforms in lib and not use them all in
config. The two don't have to align exactly.
- Mark: Think we should put minimal collection in OCIO, rely on LUTs for
others.
- Doug: Agree. For some would use LUTs.
- Mark: For ACES, not sure IDTs should even be included.
- Michael: If they can be implemented without builtin transforms (e.g.
LogCameraTransform), should they be?
- Doug: Convenient to have builtin transform to promote standardization.
Builtin transform gives confidence - don't need to check matrix
coefficients, etc.
- Michael: If we have rule about not including external files in reference
config, need to limit based on that as well.
- Doug: LMTs could be named transforms. Blue light fix gets used. Far from
optimal fix, and hopefully migrate to gamut mapping in future.
- Carol: Would be great to implement gamut compress.
- Thomas: Blue light fix still gets used.
- Kevin: Can give warning and deprecate in 1.3.
- Mark: Since this is an LMT, and productions are expected to provide own
LMT, could LMT be slotted into this config like in ACES graph?
- Kevin: Generally LMT is a cube or something else, rather than CDL.
- Mark: Whole look section is not useful in terms of OCIO config. Can put
it in to have correct pathway, as a block in a view.
- Carol: Might be space in studio config to write tools to enable that.
Reference config is what it is.
- Mark: Yes, and NamedTransform makes sense in same way as gamut compress.
- Zach: Any reason this LMT would be part of ACES logo program?
- Doug: Might be. After we have our proposed list we should run this by
ACES committee to see what they feel strongly about.
- Thomas: We don't know what all their users are doing and don't have that
feedback.
- Michael: Include all ODTs?
- J: Another question for ACES team.
- Mark: Would be nice to discourage use of D60 sim ODTs.
- Doug: Why do people not like D60 sim?
- Mark: Just get the right hardware.
- Kevin: Or provide LMT that does the same.
- Carol: That would be my preference too.
- Nick: Could D60 sim be done as LMT?
- Kevin: Haven't tried it, but think it could be done.
- Thomas: With inversion capabilities of RRT itself.
- **TODO**: Michael will share this spreadsheet with ACES for feedback. May
need to reformat it to be more concise. Could also invite them to join
next meeting to discuss.
- Kevin: Some controversy about DCDM ODT.
- Doug: For people needing to make DCDM, isn't this there best option?
- Kevin: Rely on downstream conversion to make tiff files. Rarely done in
same application grading is done in.
- Nick: Was ACES central discussion about this recently. Scott said
recommended approach was P3 master and make DCDM from that.
- Doug: Recommended in the sense that you get what you saw if grading on
P3, but some people actually setup projectors in X'Y'Z'.
- Kevin: And use native projector gamut as well. Just encoding XYZ and
don't go near ACES configs. Is there intersection of someone who does
this and who is using ACES as ACES?
* Talk about what we can do with the incorrectly named ACEStransformID as I
have the feeling we won’t get a resolution from the AMPAS soon:
- Thomas: Didn't have a feeling there would be resolution to this issue.
What should we do?
- Mark: Do you mean just fix the names that are wrong?
- Thomas: Yes.
- Mark: Thought we decided not to generate config directly.
- Thomas: Are doing that now, and can continue to do so.
- Mark: Had concerns about code base being complex. Good for graph layout,
querying, etc. But those things are ancillary to task of generating OCIO
config. When tried to go through it, found it difficult to get started.
Someone with little experience in ACES would have hard time.
- Thomas: Made like that to be similar to what was done for previous
version of config. Trivial to update generator and re-generate.
- Mark: Getting to point where maintaining exception list is as complex
as explicitly writing down combinations needed for final config.
- Thomas: Maybe? Not too much work right now, but fair point.
- Carol: Regardless, need to keep pushing on transform IDs getting fixed.
Have opportunity now to get those fixes in 1.3. If we can push on that,
it would help.
- Mark: What was their hesitance to merge PR?
- Carol: ACES release schedule. They don't do hot fixes. Would need to go
in new release.
- Doug: There is a hotfix branch, but doesn't get merged into main branch
until there is a release. Also an issue for ACES metadata file since
those IDs are important there too. Could push from that end too.
* Items for next TSC meeting agenda:
- Talk to ACES representative about spreadsheet questions. May be offline
discussion, but will make it public.
- Conclude discussion about whether to generate config from graph code
currently in repo, or to have separate library which explicitly builds
config, using the graph lib to validate.
- Talk about dev workflow, it is a bit painful atm:
https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES/pull/9#issuecomment-735352837
- Fully fledged display spaces, it was agreed here on Slack, but maybe we
can make it official.
- Zach: Specifically, we were talking about having a set of
display-referred CIE_XYZ-D65_to_Display-xxxx BuiltinTransform styles
that we could use to define display color spaces, just like we can
with the current scene-referred xxxxx-to-ACES2065-1 csc styles and
normal color spaces. These would be useful for non-ACES configs as
well, of course.
@@ -0,0 +1,184 @@
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
<!-- Copyright Contributors to the OpenColorIO Project. -->
December 15, 2020
Host: Michael Dolan
Attendees:
* [X] Mark Boorer (_TSC_) - Industrial Light & Magic
* [X] Michael Dolan (_TSC Chair_) - Epic Games
* [X] Carol Payne (_TSC_) - Netflix
* [X] Doug Walker (_TSC Chief Architect_) - Autodesk
* [X] Matthias Scharfenberg - Industrial Light & Magic
* [X] Dennis Adams - Sony
* [X] Thomas Mansencal - Weta Digital
* [X] Christophe Brejon
* [X] Zach Lewis - Method
* [X] J Schulte - Industrial Light & Magic
* [X] Scott Dyer - A.M.P.A.S.
# **OCIO Configs Working Group Meeting Notes**
* Continue spreadsheet discussion. Update from ACES:
- Michael: Would like to shift this meeting one week forward in the new
year as it currently conflicts with a SMPTE meeting Scott attends.
Any objections?
- No objections.
- Michael: Scott shared his opinion via email that he thinks we could omit
ACESproxy and DCDM ODTs from the reference config. Can discuss with him
further in new year to make a formal decision.
- Carol: No problem with that.
- Doug: No objection. Think it's better to track what Academy is doing and
remove if it matches what they are doing. Some we may need to preempt for
practical reasons.
- Zach: Is there a way to deprecate?
- Michael: Deprecation is supported with inactive color spaces and the
upcoming alias feature (for deprecated names).
- Mark: Since they are not currently there, would be better to not
implement.
- Doug: Agree.
- Mark: Depends what mean by deprecating. Doesn't work any more? Think we
would follow typical OCIO patch notes saying this doesn't exist anymore
and add ociocheck warnings.
- Thomas: Deprecate is not removal. Warn in prior release. We're talking
about removal without warning.
- Mark: If we were to deprecate a BuiltinTransform, would likely be over
multiple versions.
* Conclude discussion about whether to generate config from graph code
currently in repo, or to have a separate library which explicitly builds
config, using the graph lib to validate:
- Michael: Discussing whether we should stay on course with current config
generation code, or use that for validation and have separate more
concise script just for config generation.
- Mark: Nothing wrong with usefulness of this code, but as someone involved
with setting up configs, found it hard to approach current setup and to
make changes. It does so many other things than generate the config. Can
get stats, build graph, etc. I previously showed simpler version I
created that just builds config. Discussed mapping needed between CTL and
what we wanted color spaces to be called, and the intermediate color space
that doesn't exist. Sounds like there are more exceptions to the rule
than just following CTL. Think we would be better hand rolling config
code.
- Carol: With the display spaces, we're getting to place with mapping where
we have to do it ourselves anyway. Once fixed on ACES side, would manual
intervention lessen?
- Mark: Two PRs for URNs that mismatch. Each of our code has chunk to
handle the misnaming. Don't think those are dominant parts of the problem.
Different problem with needing to tease apart ODTs.
- Zach: Not going to avoid mapping one way or other.
- Mark: Nice aspects to tracking CTL. Comment strings make good docstrings,
but one of the big UX decisions is in regard to how those are formatted
since some are long and can't be displayed easily in apps. Should we lead
the way and lessen those? Feel our intent would be clearer expressed,
even with risk of drifting. Should present ACES workflow in OCIO way.
- Michael: Think we could use the current lib to support generating
config in smaller script. Find a middle ground between both approaches.
- Thomas: That's what it currently is essentially. CTL discovery code
builds list of transforms, can be used directly, which is similar to what
Mark did. Graph built on top of that, used to fit config generation code.
Config code is agnostic. Just gets input from graph. Nothing says graph
needs to be used. I think there is value in getting that info from CTL.
Can highlight issues which wouldn't be discovered otherwise. What is
being used to maintain current config. As current maintainer, it
is useful. When switched from 1.0 to 1.1, was easy to see what was
missing. Is complex, but can also look at complexity and reduce where
needed and make it easier. Don't have strong opinion. Can go in another
way. Just need to know to not waste time maintaining code that won't be
used.
- Carol: Think there's an overarching thing with OCIO way of doing stuff.
A partnership aspect of this between OCIO and ACES that should be
improved. Mark's points are valid. Hard to translate between projects.
Think if this is going to be ACES reference config, have responsibility
to link to CTL, to keep us accountable.
- Thomas: Agree. When started to work on automated generation, idea was to
have something Scott and Alex could run automatically. Could be useful
for them to check stuff on their end.
- Carol: Thinking too with comments, this is ACES reference config so can
be more verbose. Can make descriptions for a more well rounded studio
config.
- Thomas: To that, could be something in CTL itself, front facing (one
liner) user comments. Maybe some roads to be made here, and CTL can help
us do that work.
- Mark: I'll push my simplified version in a PR so you can see what I was
looking for. At this point it's doing same thing. Just less code. There's
a disconnect between CTL and OCIO. We aren't using the CTL in OCIO, but
re-implementing transforms ourselves. Get the desire to strengthen link
between projects, but feel the relationship goes opposite direction too,
with many using ACES through OCIO.
- Doug: Because of Thomas experience maintaining existing configs, has
learned how challenging it is to maintain. At each update may not be
obvious what has changed. What has been produced is complex, but it does
try to solve this problem with how to keep in sync with something with
many moving parts. Certainly not a unique problem for OCIO. All ACES
product partners face same problem. Every time there's a new ACES release
takes days to go through and make sure the transforms are implemented
correctly. Everyone is re-implementing it vs. using CTL directly. It
would be nice to give feedback to Academy to make it easier to do what
we're trying to do since we're not the only ones.
- Michael: Since we will also need to use this to generate the studio
config, which will include much more than just ACES, more argument to
leverage this code as library supporting config generation. Then both
scripts can use it as needed and for validation.
- Thomas: Agree to find middle ground. We can raise exception when we don't
have things mapped. Want library because I'm planning to use it, and hope
others too. Can become tools to not only generate ACES config, but other
configs too.
- Mark: For ACES config, all the guts are builtin transforms being chained
together. Just need to write YAML file in correct order.
- Carol: If we are thinking future extensible, good to start out well.
- Thomas: Needs to be something we can test. Advantage on a show is if
something is broken you change it, but here we're talking about
something being shipped in software. It needs to work. When I did
transition between 1.0 and 1.1, took ages because a mistake will effect
everybody. When Nuke ships with this, it's a big difference. Internal and
public software different jobs.
- Mark: Discussions around entry points for building ACES config vs config
library different. Would have had other discussions around creating the
lib. That's my concern. Not putting down current work. There is massive
ramifications for doing it wrong, so that's important and I appreciate
what's there.
- Thomas: Understand. Maybe I can do a write up on current state and idea.
- Zach: Raise interesting question. Do we want to have mechanism for
testing against ctlrender, etc?
- Thomas: Yes, planning to do that.
- Michael: Thomas set up GHA CI so we can test against images, etc.
- Thomas: Not implemented yet, but where I want to go. Don't think we can
do less than current config. Need to confirm implementation is matching.
- Doug: Think this will be very helpful to ACES project. Already flagged
issues with Transform IDs. As we get it, we'll likely find differences
with CTL and reference images.
* Talk about dev workflow, it is a bit painful atm:
- https://github.com/AcademySoftwareFoundation/OpenColorIO-Config-ACES/pull/9#issuecomment-735352837
- Thomas: Annoyance currently is we're not using gitflow. Currently one
main branch. When merging and squashing, get diverging history
because of other in-progress work. If you have two feature branches, if
you squash one, need to rebase.
- Michael: Same setup we have for core OCIO. Messy if people have many
commits, which is why we enforce squashing.
- Thomas: Can ask people to be cleaner. We tend to rebase on develop before
merging. Can ask people to squash on their own. Makes it easier to revert
changes.
- Mark: Think we expect most dev work to happen on forks, and for changes
to come in as PRs, vs. feature branches pushed to repo.
- Thomas: Yeah, that's what is happening. Look at PR #9. Can talk on Slack.
- Michael: Gitflow can get complex. OpenEXR is doing something in the
middle, with a develop and main branch. We could do something like that.
- Thomas: Mostly talking about main/develop. Not full gitflow. Two branches.
Suggested same to Academy.
* Talk about what we can do with the incorrectly named ACEStransformID as I
have the feeling we won’t get a resolution from the AMPAS soon:
- Scott: Working to get issues resolved with our repo. Fixes in dev branch
not integrated yet.
* Fully fledged display spaces, it was agreed here on Slack, but maybe we can
make it official:
- Thomas: Doug agreed in slides that the way the transforms were broken up
could be simplified to have single transform instead of group transform.
- Doug: Agree. Adding BuiltinTransforms in current PR.
* Items for next TSC meeting agenda:
- Further discuss spreadsheet questions with Scott.
@@ -0,0 +1,107 @@
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
<!-- Copyright Contributors to the OpenColorIO Project. -->
January 19, 2021
Host: Michael Dolan
Attendees:
* [X] Mark Boorer (_TSC_) - Industrial Light & Magic
* [X] Michael Dolan (_TSC Chair_) - Epic Games
* [X] Carol Payne (_TSC_) - Netflix
* [X] Doug Walker (_TSC Chief Architect_) - Autodesk
* [X] Dennis Adams - Sony
* [X] Christophe Brejon
* [X] Zach Lewis - Method
* [X] Scott Dyer - A.M.P.A.S.
* [X] Sean Cooper (_TSC_) - ARRI
* [X] Kevin Wheatley (_TSC_) - Framestore
Apologies:
* Thomas Mansencal
# **OCIO Configs Working Group Meeting Notes**
* Include skeleton API for missing building transforms in v2.0.0? Need to make
call on CY2021 ABI compatibility for VFX ref platform. If not may need to
expose transform internals in config:
- Michael: Following up from TSC meeting discussion. Options put on the
table: Add stubs for missing transforms? Switch to a minor version range
in CY2021?
- Decision: Back out of requested VFX ref platform change. Stick with 2.0.x
for CY2021 and move forward with any needed minor version updates
throughout the year. ACES 1.3 support won't arrive until CY2022, and the
ACES config will use verbose color space definitions instead of Builtin
transforms in some places, but in performance and functionality will be
equivalent. We will attempt to maintain ABI compatibility for initial
minor version releases for users who want to drop newer versions into
CY2021 DCCs. There are some algorithms (e.g. PQ) that need to be added to
core lib to support LUT-free ACES config. AD will submit PR with these
additions this week for the v2.0.0 release next week.
- Other proposed plans would have worked, but the group determined it
would be better to strictly follow semver and not make a rash
decision based solely on getting the changes into VFX ref platform.
As Sean put it: "Feels like the cart driving the horse". The agreed
upon resolution permits completion of the ACES reference
(and studio) configs and gives us a year to polish the v2 features
for CY2022. DCCs likely won't have v2 support until near mid year
anyway, and studios will likely delay further beyond that.
* Make decision on config generation code direction:
- Michael: Propose we stick with current code in repo. Refinements can be
contributed via PR if needed.
- Mark and group: Go for it.
- Sean: Will there be artifacts via CI? Biggest buffer to people not caring
about code.
- Mark: Discussed artifacts and versioning earlier. Still plan to provide
artifacts.
- Michael: Yes, Thomas add CI setup which can be extended to support that.
* Spreadsheet questions ACES feedback:
- Michael: Open questions are related to inclusion of ACESproxy and the
DCDM output transforms. Scott suggested they not be included by email,
but we can discuss here to confirm a decision.
- Carol: Get rid of them if ACES doesn't want them.
- Scott: Better way to do DCDM than the transforms. Leave them out.
- Michael: Same about ACESproxy?
- Doug: Clipped integer version of ACEScc. Not sure why needed in OCIO.
- Scott: Not sure of many using ACESproxy at all.
- Group agrees to exclude these. Set to "excluded" in spreadsheet.
- Carol: In first version, get people to speak up if they miss it.
- Michael: Anything else?
- Sean: Why only Sony Venice included?
- Doug: Other Sony transforms in CSC section further up.
- Carol: There isn't CSC of new Sony Venice IDTs yet.
* Un-tonemapped view naming:
- Doug: Discussion about needing another view (un-tone-mapped) in config.
Trying to come up with name: Source colors, scene referred colors,
textures, colorimetry, colorimetric view, un-ton-mapped, no tone-map,
identity tone-map, identity view, 1:1, flat...
- Decision: Group agrees on "un-tone-mapped" since it is explicit and
clear. It may be confusing to users not familiar with color science, but
it is better to have something clear to config authors, and a good
learning opportunity for others. Also the term used by ACES.
* Review of ACES Output Transform prototype:
- Doug demos how to implement output transform with current OCIO v2 state.
Breaking down transforms needed to create ODT, which in the future will
be defined in a builtin transform via C++.
- Doug: Clamps around ACES primary change prevent negative values from
becoming large positives due to matrix. In testing that, noticed that
some ACES output transforms generate black in unexpected places. Tested
synthetic chart with camera log space. Values going through power
function to infinity. Builtin functions for CSC log transforms will send
large input values (outside 0-1) to infinity on output. Is that ok? Or
should we clamp to large positive value? Often implemented with LUTs
where infinity won't occur. Implemented here with LogCameraTransform, so
exact math. Value greater than one could give infinity.
- Mark: Think infinity fine in that context. Doing the right thing.
- Doug: Downside is for synthetic chart image, with RGB inf,inf,inf one
channel will become negative and get mapped to NaN (Inf - Inf) when going
through a matrix. Since NaN typically maps to zero, it's possible that
extremely bright values map to black on display.
- Mark: Don't think would be problem. The formula should do what it does.
We understand floating point limitations and are used to hitting them,
so not crazy to expect same behavior here. Would be weird to do something
different.
@@ -69,7 +69,7 @@ Attendees:
- Alexa: Better to link to DCC vendors own guides.
- Michael: There is some of that on the site now in the Compatible Software
page, which was updated recently:
[Compatible Software](https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/master/docs/CompatibleSoftware.rst)
[Compatible Software](https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/main/docs/CompatibleSoftware.rst)
- Carol: Tricky to know which vendors to include tutorials for.
- Alexa: Could be better to explain the config, and what each part means.
It's difficult to find everything right now.
@@ -30,7 +30,7 @@ Recording on Zoom cloud:
- Mark: Is ociocheck crashing for anyone?
- Doug: We will look into it.
- *UPDATE:* We tested this and it is working. We found a case where illegal
(too long) spi1d LUTs caused a crash in master. These LUTs were not flagged as
(too long) spi1d LUTs caused a crash in main. These LUTs were not flagged as
being illegal in OCIO v1 and would have had incorrect results.
**STRING UTILS**
@@ -218,7 +218,7 @@ discussion about the questions raised.
**GENERAL DISCUSSION**
- Mark: I was testing master and found that role names are now
- Mark: I was testing main and found that role names are now
case-sensitive. This is a change from OCIO v1.
- Doug: Are we agreed we want case-insensitive behavior? Same for color
spaces too? Group agreed.
+8 -2
View File
@@ -1,8 +1,14 @@
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
<!-- Copyright Contributors to the OpenColorIO Project. -->
**Version 2.0.0 (unreleased):**
* Renamed sanityCheck() method to validate()
This file documents releases up to 1.1.1. For a description of version 2.0 and later
please refer to the Releases page on GitHub:
https://github.com/AcademySoftwareFoundation/OpenColorIO/releases
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+
+329 -26
View File
@@ -5,13 +5,14 @@
###############################################################################
# CMake definition.
cmake_minimum_required(VERSION 3.12)
cmake_minimum_required(VERSION 3.14...4.0)
set(CMAKE_MODULE_PATH
${CMAKE_MODULE_PATH}
${CMAKE_SOURCE_DIR}/share/cmake/utils
${CMAKE_SOURCE_DIR}/share/cmake/macros
${CMAKE_SOURCE_DIR}/share/cmake/modules
${CMAKE_CURRENT_SOURCE_DIR}/share/cmake/utils
${CMAKE_CURRENT_SOURCE_DIR}/share/cmake/macros
${CMAKE_CURRENT_SOURCE_DIR}/share/cmake/modules
${CMAKE_CURRENT_SOURCE_DIR}/share/cmake/modules/install
)
set(CMAKE_WARN_DEPRECATED ON)
@@ -20,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()
@@ -28,21 +29,34 @@ endif()
# Project definition.
project(OpenColorIO
VERSION 2.0.0
VERSION 2.6.0
DESCRIPTION "OpenColorIO (OCIO) is a complete color management solution"
HOMEPAGE_URL https://github.com/AcademySoftwareFoundation/OpenColorIO
LANGUAGES CXX C)
# "dev", "beta1", rc1", etc or "" for an official release.
set(OpenColorIO_VERSION_RELEASE_TYPE "beta1")
set(OpenColorIO_VERSION_RELEASE_TYPE "dev")
###############################################################################
# ctest
# To correctly generate the DartConfiguration.tcl, include the CTest CMake file.
# By doing so 'ctest -F memcheck' works.
include (CTest)
enable_testing()
###############################################################################
# Provides install directory variables as defined by the GNU Coding Standards.
include(GNUInstallDirs)
###############################################################################
# Forbid in-source build.
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
if(${PROJECT_SOURCE_DIR} STREQUAL ${PROJECT_BINARY_DIR})
message(FATAL_ERROR
"In-source build not allowed. Please make a new sub-directory and run cmake from there.")
endif()
@@ -81,11 +95,26 @@ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeR
# Is that a valid build type?
if(NOT "${CMAKE_BUILD_TYPE}" IN_LIST CMAKE_CONFIGURATION_TYPES)
set(_build_type_valid_ false)
foreach (_build_type_ ${CMAKE_CONFIGURATION_TYPES})
string(TOLOWER ${_build_type_} _lowercase_build_type_)
string(TOLOWER ${CMAKE_BUILD_TYPE} _lowercase_cmake_build_type_)
if (_lowercase_cmake_build_type_ STREQUAL _lowercase_build_type_)
# Build type is supported.
set(_build_type_valid_ true)
break()
endif()
endforeach()
unset(_lowercase_build_type_)
unset(_lowercase_cmake_build_type_)
if (NOT _build_type_valid_)
string(REPLACE ";" ", " _CMAKE_CONFIGURATION_TYPES_STR "${CMAKE_CONFIGURATION_TYPES}")
message(FATAL_ERROR
"CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} is unsupported. Supported values are: ${_CMAKE_CONFIGURATION_TYPES_STR}.")
endif()
unset(_build_type_valid_)
# Is that in debug mode?
@@ -109,43 +138,234 @@ include(CppVersion)
option(BUILD_SHARED_LIBS "Set to OFF to build static libraries" ON)
option(OCIO_BUILD_APPS "Set to OFF to disable command-line apps" ON)
option(OCIO_BUILD_OPENFX "Specify whether to build OpenFX plugins" OFF)
option(OCIO_BUILD_NUKE "Specify whether to build nuke plugins" OFF)
option(OCIO_BUILD_DOCS "Specify whether to build documentation" OFF)
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_DOCS "Specify whether to build documentation" OFF)
option(OCIO_BUILD_PYTHON "Specify whether to build python bindings" ON)
set (OCIO_PYTHON_VERSION "" CACHE STRING
"Preferred Python version (if any) in case multiple are available")
option(OCIO_BUILD_JAVA "Specify whether to build java bindings" OFF)
if (WIN32)
option(OCIO_USE_WINDOWS_UNICODE "Compile with Windows Unicode support" ON)
endif()
###############################################################################
# Other preferences
option(OCIO_VERBOSE "Display more information when searching or installing dependencies" OFF)
option(OCIO_USE_SOVERSION "Enable versioning in OCIO shared library name" ON)
###############################################################################
# Warnings / debugging settings
option(OCIO_WARNING_AS_ERROR "Set build error level for CI testing" OFF)
if (NOT WIN32)
option(OCIO_ENABLE_SANITIZER "Specify whether to enable compiler sanitizers (address)" OFF)
endif()
###############################################################################
# Optimization / internal linking preferences
option(OCIO_USE_SSE "Specify whether to enable SSE CPU performance optimizations" ON)
option(OCIO_INLINES_HIDDEN "Specify whether to build with -fvisibility-inlines-hidden" ${UNIX})
option(OCIO_USE_SIMD "Specify whether to enable SIMD CPU performance optimizations" ON)
option(OCIO_USE_OIIO_FOR_APPS "Request OIIO to build apps (ociolutimage, ocioconvert and ociodisplay), the default uses OpenEXR." OFF)
###############################################################################
# Supplemental builtins
if (NOT APPLE)
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)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C ON)
else()
set(OCIO_ARCH_X86 0)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE OFF)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX OFF)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C OFF)
endif()
elseif (APPLE)
# Multiple possible scenarios:
# A. Building on an Apple arm64 architecture for the native architecture (arm64).
# B. Building on an Apple arm64 architecture for x86_64.
# C. Building on an Apple arm64 architecture for universal binaries (x86_64 + arm64).
#
# D. Building on an Apple Intel architecture for the native architecture (x86_64).
# E. Building on an Apple Intel architecture for arm64.
# F. Building on an Apple Intel architecture for universal binaries (x86_64 + arm64).
# Add supplemental built-in transformations such as camera related one.
option(OCIO_ADD_EXTRA_BUILTINS "Specify whether to add supplemental built-in transforms" ON)
# Check if we are NOT cross-compiling to another Apple architecture.
if (NOT DEFINED CMAKE_OSX_ARCHITECTURES OR CMAKE_OSX_ARCHITECTURES STREQUAL "")
# Building for the native architectures.
if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
# Apple Intel-based computer or Rosetta. (covers case D)
set(OCIO_ARCH_X86 1)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE ON)
# The AVX and F16C will be compiled, but it won't used at runtime by Rosetta.
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX ON)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C ON)
elseif ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm64")
# Apple arm64. (covers case A)
set(OCIO_ARCH_X86 0)
# OCIO translates the SSE instructions into ARM Neon with the library SSE2NEON.
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE ON)
# OCIO does not translate AVX to ARM Neon.
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX OFF)
# Turn F16C off since they are x86_64 instructions.
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C OFF)
endif()
else()
# Cross-compiling to another Apple architecture (x86_64, arm64, or both (universal))
if ("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "x86_64")
# Compiling for x86_64 regardless of native architecture.
# Covers case B assuming CMAKE_SYSTEM_PROCESSOR is arm64.
# Covers case D if CMAKE_OSX_ARCHITECTURES is set to x86_64 on x86_64 architecture.
set(OCIO_ARCH_X86 1)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE ON)
# The AVX and F16C will be compiled, but they won't used at runtime by Rosetta.
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX ON)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C ON)
elseif ("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64")
# Compiling for arm64 regardless of native architecture.
# Covers case E assuming CMAKE_SYSTEM_PROCESSOR is x86_64.
# Covers case A if CMAKE_OSX_ARCHITECTURES is set arm64 on arm64 architecture.
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_OSX_ARCHITECTURES}" MATCHES "(arm64;x86_64|x86_64;arm64)")
# Universal build (covers case C and F).
set(OCIO_ARCH_X86 1)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE ON)
# The AVX and F16C will be compiled, but they won't used at runtime by Rosetta.
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX ON)
set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C ON)
endif()
endif()
endif()
option(OCIO_USE_SSE2 "Specify whether to enable SSE2 CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE})
option(OCIO_USE_SSE3 "Specify whether to enable SSE3 CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE})
option(OCIO_USE_SSSE3 "Specify whether to enable SSSE3 CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE})
option(OCIO_USE_SSE4 "Specify whether to enable SSE4 CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE})
option(OCIO_USE_SSE42 "Specify whether to enable SSE4.2 CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE})
option(OCIO_USE_AVX "Specify whether to enable AVX CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX})
option(OCIO_USE_AVX2 "Specify whether to enable AVX2 CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX})
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 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)
endif()
###############################################################################
# GPU configuration
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
# quickly. Once we know that ARM NEON is supported, we can add sse2neon library
# to the build.
if(OCIO_USE_SIMD)
include(CheckSupportARMNeon)
if (NOT COMPILER_SUPPORTS_ARM_NEON)
# Force it to OFF since ARM Neon is not supported.
set(OCIO_USE_SSE2NEON OFF)
endif()
endif()
###############################################################################
# Add sse2neon to the build if ARM NEON intrinsics are supported.
if(OCIO_USE_SIMD AND OCIO_USE_SSE2NEON AND COMPILER_SUPPORTS_ARM_NEON)
# Install sse2neon. Please note that sse2neon is downloaded during the configure step as it is
# needed for CompilerFlags.cmake and CheckSupportSSEUsingSSE2NEON.cmake.
# Sse2neon is not treated like an imported target. The logic to find sse2neon is here because
# a find module is not suitable for sse2neon's use case.
find_path(sse2neon_INCLUDE_DIR
NAMES
sse2neon.h
HINTS
${sse2neon_ROOT}
PATH_SUFFIXES
sse2neon
include
sse2neon/include
)
# As per instructions on sse2neon's GitHub page, the following compiler flags should be used:
# "-march=armv8-a+fp+simd+crypto+crc". These flags are required for some ARM platforms that do
# not enable floating point calculations or SIMD instructions by default. However, for ARM64
# (Apple ARM platform) and x86_64 platforms, these features are already enabled by default.
# Therefore, no additional compiler flags are needed.
if (NOT sse2neon_INCLUDE_DIR)
include(Installsse2neon)
else()
# Any changes to the following lines must be replicated in Installsse2neon.cmake as well.
# Create a target for sse2neon (non-imported)
add_library(sse2neon INTERFACE)
# Add the include directories to the target.
target_include_directories(sse2neon INTERFACE "${sse2neon_INCLUDE_DIR}")
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()
###############################################################################
# Define compilation and link flags
include(CompilerFlags)
###############################################################################
# Include utility functions for setting debugging environments
include(DebuggerEnvironment)
###############################################################################
# External linking options
@@ -189,11 +409,12 @@ endif()
# Namespace
if(NOT DEFINED OCIO_NAMESPACE)
set(OCIO_NAMESPACE OpenColorIO CACHE STRING
"Specify the master OCIO C++ namespace: Options include OpenColorIO OpenColorIO_<YOURFACILITY> etc.")
message(STATUS "Setting namespace to '${OCIO_NAMESPACE}' as none was specified.")
set(OCIO_NAMESPACE "OpenColorIO_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.")
elseif(OCIO_NAMESPACE STREQUAL "")
message(FATAL_ERROR "A namespace cannot be empty.")
else()
message(STATUS "Setting namespace to '${OCIO_NAMESPACE}'.")
endif()
@@ -231,6 +452,15 @@ if(OCIO_BUILD_STATIC)
endif()
endif()
if (NOT BUILD_SHARED_LIBS AND NOT OCIO_INSTALL_EXT_PACKAGES STREQUAL NONE)
message(STATUS "Note that building the static version of OpenColorIO does not embed the dependencies\
into the library file. The needed dependencies must be linked to the consumer
application or shared library that uses static OpenColorIO.
The following mandatory dependencies MUST be linked to the consumer application or shared library:
expat, yaml-cpp, Imath, pystring, minizip-ng and ZLIB")
endif()
###############################################################################
# Find or install external dependencies
@@ -244,11 +474,84 @@ include(FindExtPackages)
###############################################################################
# Progress to other sources
add_subdirectory(ext)
add_subdirectory(include)
add_subdirectory(src)
add_subdirectory(tests)
add_subdirectory(vendor)
if(OCIO_BUILD_DOCS)
add_subdirectory(docs)
endif()
add_subdirectory(vendor)
add_subdirectory(tests)
add_subdirectory(src)
add_subdirectory(ext)
###############################################################################
# Configure env script
if(WIN32)
set(OCIO_SETUP_NAME setup_ocio.bat)
else()
set(OCIO_SETUP_NAME setup_ocio.sh)
endif()
configure_file(${PROJECT_SOURCE_DIR}/share/ocio/${OCIO_SETUP_NAME}.in
${CMAKE_CURRENT_BINARY_DIR}/share/ocio/${OCIO_SETUP_NAME} @ONLY)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/share/ocio/${OCIO_SETUP_NAME} DESTINATION ${CMAKE_INSTALL_DATADIR}/ocio/)
###############################################################################
# Generate OpenColorIO-config.cmake
# Targets exported to ${PROJECT_NAME}_EXPORTED_TARGETS will be available for
# import using find_package(OpenColorIO).
include(CMakePackageConfigHelpers)
set(OCIO_TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets.cmake")
set(OCIO_VERSION_CONFIG "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake")
set(OCIO_PROJECT_CONFIG "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake")
set(OCIO_CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
set(OCIO_CUSTOM_FIND_MODULE_DIR "${CMAKE_INSTALL_PREFIX}/share/OpenColorIO/cmake/modules")
set(OCIO_CUSTOM_MACROS_MODULE_DIR "${CMAKE_INSTALL_PREFIX}/share/OpenColorIO/cmake/macros")
# Version fetched from the top level project()
write_basic_package_version_file(
${OCIO_VERSION_CONFIG}
# Version range supported only if generated by CMake 3.19.2 or newer.
COMPATIBILITY SameMajorVersion
)
configure_package_config_file(
${CMAKE_CURRENT_LIST_DIR}/src/cmake/Config.cmake.in ${OCIO_PROJECT_CONFIG}
INSTALL_DESTINATION ${OCIO_CONFIG_INSTALL_DIR}
NO_SET_AND_CHECK_MACRO
NO_CHECK_REQUIRED_COMPONENTS_MACRO
)
install(
EXPORT ${PROJECT_NAME}_EXPORTED_TARGETS
DESTINATION ${OCIO_CONFIG_INSTALL_DIR}
NAMESPACE ${PROJECT_NAME}::
FILE ${OCIO_TARGETS_EXPORT_NAME}
)
if (NOT BUILD_SHARED_LIBS)
# Install custom macros used in the find modules.
install(FILES
${CMAKE_CURRENT_LIST_DIR}/share/cmake/macros/VersionUtils.cmake
DESTINATION ${OCIO_CUSTOM_MACROS_MODULE_DIR}
)
# Install custom Find modules.
install(FILES
${CMAKE_CURRENT_LIST_DIR}/share/cmake/modules/Findexpat.cmake
${CMAKE_CURRENT_LIST_DIR}/share/cmake/modules/FindImath.cmake
${CMAKE_CURRENT_LIST_DIR}/share/cmake/modules/Findpystring.cmake
${CMAKE_CURRENT_LIST_DIR}/share/cmake/modules/Findminizip-ng.cmake
${CMAKE_CURRENT_LIST_DIR}/share/cmake/modules/Findyaml-cpp.cmake
DESTINATION ${OCIO_CUSTOM_FIND_MODULE_DIR}
)
endif()
install(
FILES "${OCIO_PROJECT_CONFIG}" "${OCIO_VERSION_CONFIG}"
DESTINATION "${OCIO_CONFIG_INSTALL_DIR}"
)
+22 -9
View File
@@ -3,19 +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 |
| Patrick Hodoul | @hodoulp |
| Cottalango Leon | @loorthu |
| Cédrik Fuoco | @cedrik-fuoco-adsk |
| Larry Gritz | @lgritz |
| Michael Parsons | @mlfp |
+21 -38
View File
@@ -19,7 +19,7 @@ explains our contribution process and procedures, so please review it first:
For a description of the roles and responsibilities of the various
members of the OpenColorIO community, see [GOVERNANCE](GOVERNANCE.md), and
for further details, see the project's
[Technical Charter](docs/aswf/Charter.md). Briefly, Contributors are anyone
[Technical Charter](ASWF/Charter.md). Briefly, Contributors are anyone
who submits content to the project, Committers review and approve such
submissions, and the Technical Steering Committee provides general project
oversight.
@@ -91,7 +91,7 @@ can be merged.
[Corporate Contributor Licence Agreement](https://docs.linuxfoundation.org/lfx/easycla/contributors/corporate-contributor).
The OCIO CLA's are the standard forms used by Linux Foundation projects and
[recommended by the ASWF TAC](https://github.com/AcademySoftwareFoundation/tac/blob/master/process/contributing.md#contributor-license-agreement-cla).
[recommended by the ASWF TAC](https://github.com/AcademySoftwareFoundation/tac/blob/main/process/contributing.md#contributor-license-agreement-cla).
### Commit Sign-Off
@@ -113,7 +113,7 @@ can be merged. Otherwise the EasyCLA system will provide instructions on
signing a CLA, or request inclusion in an existing corporate CLA approved list.
See the
[ASWF TAC CONTRIBUTING.md](https://github.com/AcademySoftwareFoundation/tac/blob/master/process/contributing.md#contribution-sign-off)
[ASWF TAC CONTRIBUTING.md](https://github.com/AcademySoftwareFoundation/tac/blob/main/process/contributing.md#contribution-sign-off)
file for more information on this requirement.
### Copyright Notices
@@ -161,15 +161,15 @@ You are now ready to contribute.
The OpenColorIO repository has a relatively straight-forward structure, and a
simple branching and merging strategy.
All development work is done directly on the master branch. This represents the
All development work is done directly on the main branch. This represents the
bleeding-edge of the project and any contributions should be done on top of it.
After sufficient work is done on the master branch and OCIO leadership
After sufficient work is done on the main branch and OCIO leadership
determines that a release is due, we will bump the relevant internal versioning
and tag a commit with the corresponding version number, e.g. v2.0.1. Each Minor
version also has its own “Release Branch”, e.g. RB-1.1. This marks a branch of
code dedicated to that Major.Minor version, which allows upstream bug fixes to
be cherry-picked to a given version while still allowing the master branch to
be cherry-picked to a given version while still allowing the main branch to
continue forward onto higher versions. This basic repository structure keeps
maintenance low, while remaining simple to understand.
@@ -183,7 +183,7 @@ Please review [PROCESS.md](PROCESS.md) for important procedures related to
making changes to OpenColorIO. Small bug fixes and documentation changes can be
more informal, but modifications to core OpenColorIO functionality MUST follow
the
[Core Library Changes](https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/master/PROCESS.md#Core-Library-Changes) process.
[Core Library Changes](https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/main/PROCESS.md#Core-Library-Changes) process.
The development cycle for a code change should follow this protocol:
@@ -210,22 +210,24 @@ who may discuss, offer constructive feedback, request changes, or approve
the work.
7. Upon receiving the required number of Committer approvals (as outlined in
[Required Approvals](https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/master/PROCESS.md#Required-Approvals)),
[Required Approvals](https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/main/PROCESS.md#Required-Approvals)),
a Committer other than the PR contributor may squash and merge changes into the
master branch.
main branch.
See also (from the OCIO Developer Guide):
* [Getting started](http://opencolorio.org/developers/getting_started.html)
* [Submitting Changes](http://opencolorio.org/developers/submitting_changes.html)
For a more detailed description of the contribution process, please see the
Contributing Guide in the main OCIO documentation:
* [Getting Started](https://opencolorio.readthedocs.io/en/latest/guides/contributing/contributing.html#getting-started)
* [Submitting Changes](https://opencolorio.readthedocs.io/en/latest/guides/contributing/contributing.html#submitting-changes)
## Coding Standards
Please see the OpenColorIO
[Coding guidelines](http://opencolorio.org/developers/coding_guidelines.html)
[Coding guidelines](https://opencolorio.readthedocs.io/en/latest/guides/contributing/contributing.html#coding-style-guide)
for a reference on project code style and best practices.
For standards on contributing to documentation, see the
[Documentation guidelines](http://opencolorio.org/developers/documentation_guidelines.html).
[Documentation guidelines](https://opencolorio.readthedocs.io/en/latest/guides/contributing/contributing.html#documentation-guidelines).
## Test Policy
@@ -241,31 +243,12 @@ 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
OpenColorIO uses [semantic versioning](https://semver.org), which labels each
version with three numbers: Major.Minor.Patch, where:
OpenColorIO labels each version with three numbers: Major.Minor.Patch, where:
* **MAJOR** indicates incompatible API changes
* **MINOR** indicates functionality added in a backwards-compatible manner
* **PATCH** indicates backwards-compatible bug fixes
## Creating a Release
To create a new release from the master branch:
1. Update the release notes in ``CHANGELOG.md`` with a high-level summary of
the features and improvements. Also include the summary in the Release
comments.
2. Create a new release on the GitHub Releases page.
3. Tag the release with name beginning with '``v``', e.g. '``v2.1.0``'.
4. Download and sign the release tarball, as described
[here](https://wiki.debian.org/Creating%20signed%20GitHub%20releases),
5. Attach the detached ``.asc`` signature file to the GitHub release as a
binary file.
* **MAJOR** indicates major architectural changes
* **MINOR** indicates an introduction of significant new features
* **PATCH** indicates ABI-compatible bug fixes and minor enhancements
+25 -15
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
@@ -107,23 +110,30 @@ project at all ASWF TAC meetings.
### TSC Leaders
* Chair: Michael Dolan
* Chair: Carol Payne
* Chief Architect: Doug Walker
* ACES TAC Rep: Sean Cooper
### TSC Members
* Rémi Achard - DNEG
* Mark Boorer - Industrial Light & Magic
* Mei Chu - Sony Pictures Imageworks
* Sean Cooper - DNEG
* Sean Cooper - ARRI
* Michael Dolan - Epic Games
* Patrick Hodoul - Autodesk
* Carol Payne - Netflix
* Carl Rand - Weta Digital
* Zach Lewis - Method Studios
* 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
@@ -143,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
@@ -152,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
+1 -1
View File
@@ -1,4 +1,4 @@
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
<!-- Copyright Contributors to the OpenColorIO Project. -->
For install instructions, see docs/installation.rst
For install instructions, see docs/quick_start/installation.rst
+11
View File
@@ -0,0 +1,11 @@
include LICENSE
graft docs
graft ext
graft include
graft share
graft src
graft tests
global-include CMakeLists.txt *.cmake *.md
global-exclude */__pycache__/*
global-exclude *.pyc
global-exclude .DS_Store
+1 -1
View File
@@ -28,7 +28,7 @@ across the project so are treated as core changes.
[ocio-dev](https://lists.aswf.io/g/ocio-dev), but are ultimately brought to a
TSC meeting where consensus can be reached around the proposal's relevance
and approach. TSC meetings are public and meeting notes are posted to the
[OCIO repo](https://github.com/AcademySoftwareFoundation/OpenColorIO/tree/master/ASWF/meetings/tsc)
[OCIO repo](https://github.com/AcademySoftwareFoundation/OpenColorIO/tree/main/ASWF/meetings/tsc)
within days of a meeting for a permanent record of decisions.
2. Following acceptance of the proposal by the TSC, an issue is created in
GitHub to present a design proposal. A period of further community
+13 -6
View File
@@ -10,6 +10,7 @@ OpenColorIO
[![Analysis Status](https://github.com/AcademySoftwareFoundation/OpenColorIO/workflows/Analysis/badge.svg)](https://github.com/AcademySoftwareFoundation/OpenColorIO/actions?query=workflow%3AAnalysis)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=AcademySoftwareFoundation_OpenColorIO&metric=alert_status)](https://sonarcloud.io/dashboard?id=AcademySoftwareFoundation_OpenColorIO)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/2612/badge)](https://bestpractices.coreinfrastructure.org/projects/2612)
[![Wheels](https://github.com/AcademySoftwareFoundation/OpenColorIO/workflows/Wheel/badge.svg)](https://github.com/AcademySoftwareFoundation/OpenColorIO/actions?query=workflow%3AWheel)
Introduction
------------
@@ -28,16 +29,16 @@ configuration options suitable for high-end production usage. OCIO is
compatible with the Academy Color Encoding Specification (ACES) and is
LUT-format agnostic, supporting many popular formats.
OpenColorIO is released as version 1.0 and has been in development since 2003.
OpenColorIO is released as version 2.0 and has been in development since 2003.
OCIO represents the culmination of years of production experience earned on
such films as SpiderMan 2 (2004), Surf's Up (2007), Cloudy with a Chance of
Meatballs (2009), Alice in Wonderland (2010), and many more. OpenColorIO is
natively supported in commercial applications like Katana, Mari, Nuke, Maya,
Houdini, Silhouette FX, and
[others](https://opencolorio.org/CompatibleSoftware.html).
[others](https://opencolorio.org/#supported_apps).
OpenColorIO is free and open source software ([LICENSE](LICENSE)), and
one of several projects actvively sponsored by the ASWF
one of several projects actively sponsored by the ASWF
([Academy Software Foundation](https://www.aswf.io/)).
OpenColorIO Project Mission
@@ -49,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
@@ -64,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>
@@ -98,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)
+66 -26
View File
@@ -9,32 +9,6 @@ In no particular order:
---------------------------------------------------------------------
MD5, courtesy of L. Peter Deutsch, Aladdin Enterprises.
http://sourceforge.net/projects/libmd5-rfc/files/
Copyright (C) 1999, 2002 Aladdin Enterprises. All rights reserved.
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
L. Peter Deutsch
ghost@aladdin.com
---------------------------------------------------------------------
argparse, courtesy of OpenImageIO and Larry Gritz
http://openimageio.org
@@ -192,4 +166,70 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---------------------------------------------------------------------
OpenFX Support Library, courtesy of The Open Effects Association Ltd.
http://openeffects.org/
Software License :
Copyright (c) 2004-2007, The Open Effects Association Ltd. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name The Open Effects Association Ltd, nor the names of its
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The Open Effects Association Ltd
1 Wardour St
London W1D 6PA
England
---------------------------------------------------------------------
xxHash Library
Copyright (c) 2012-2021 Yann Collet
All rights reserved.
BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php)
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---------------------------------------------------------------------
If we have left anything out, it is unintentional. Please let us know.
+105 -129
View File
@@ -3,100 +3,105 @@
###############################################################################
### Python ###
find_package(Python REQUIRED COMPONENTS Interpreter)
if(${Python_VERSION_MAJOR} GREATER_EQUAL 3)
if(NOT OCIO_BUILD_PYTHON)
message(FATAL_ERROR "Doc generation requires that the python bindings be built")
endif()
###############################################################################
###########################################################################
### Required dependencies ###
# Doxygen
# https://github.com/doxygen/doxygen
find_package(Doxygen REQUIRED)
# Sphinx
# https://pypi.python.org/pypi/Sphinx
find_package(Sphinx REQUIRED)
include(FindPythonPackage)
# six
# https://pypi.org/project/six/
find_python_package(six REQUIRED)
# testresources
# https://pypi.org/project/testresources/
find_python_package(testresources REQUIRED)
# Recommonmark
# https://pypi.org/project/recommonmark/
find_python_package(recommonmark REQUIRED)
# Sphinx Press Theme
# https://pypi.org/project/sphinx-press-theme/
find_python_package(sphinx-press-theme REQUIRED)
# sphinx-tabs
# https://pypi.org/project/sphinx-tabs/
find_python_package(sphinx-tabs REQUIRED)
# Breathe
# https://pypi.org/project/breathe/
find_python_package(breathe REQUIRED)
###########################################################################
### Setup PYTHONPATH ###
# Override PYTHONPATH prior to running Sphinx. This makes the PyOpenColorIO
# build available, prioritizes ext/ installed Python dependencies, and
# propagates the system PYTHONPATH.
if(WIN32)
# Use Windows path separators since this is being passed through to cmd
file(TO_NATIVE_PATH ${CMAKE_BINARY_DIR} WIN_BINARY_DIR)
include(GetPythonPreCommand)
set(DLL_PATH "${WIN_BINARY_DIR}\\src\\OpenColorIO")
if(MSVC_IDE)
set(DLL_PATH "${DLL_PATH}\\${CMAKE_BUILD_TYPE}")
endif()
# Sets Python_PRE_CMD, which sets PATH and PYTHONPATH for Sphinx
get_python_pre_command()
string(CONCAT PATH_SET
"PATH="
"${DLL_PATH}"
"\\\\;"
"%PATH%"
)
set(PYD_PATH "${WIN_BINARY_DIR}\\src\\bindings\\python")
if(MSVC_IDE)
set(PYD_PATH "${PYD_PATH}\\${CMAKE_BUILD_TYPE}")
endif()
string(CONCAT PYTHONPATH_SET
"PYTHONPATH="
"${PYD_PATH}"
"\\\\;"
"${WIN_BINARY_DIR}\\ext\\dist\\lib${LIB_SUFFIX}\\site-packages"
"\\\\;"
"%PYTHONPATH%"
)
# Mimic *nix:
# '> PYTHONPATH=XXX CMD'
# on Windows with:
# '> set PYTHONPATH=XXX \n call CMD'
# '\n' is here because '\\&' does not work.
set(PYT_PRE_CMD set ${PATH_SET} "\n" set ${PYTHONPATH_SET} "\n" call)
else()
set(_Python_VARIANT "${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}")
string(CONCAT PYT_PRE_CMD
"PYTHONPATH="
"${CMAKE_BINARY_DIR}/src/bindings/python"
":"
"${CMAKE_BINARY_DIR}/ext/dist/lib${LIB_SUFFIX}/python${_Python_VARIANT}/site-packages"
":"
"$ENV{PYTHONPATH}"
)
endif()
###############################################################################
###########################################################################
### Copy templates to build area ###
# NOTE: The *.in extension is omitted from conf.py since RTD uses this file
# without CMake configuration.
message(STATUS "Substitute sphinx conf.py variables")
configure_file(${CMAKE_SOURCE_DIR}/docs/conf.py
${CMAKE_BINARY_DIR}/docs/conf.py @ONLY)
# Find and configure all *.in files in documentation. conf.py needs
# configuration, but omits *.in to work in RTD builds.
message(STATUS "Substitute documentation variables")
file(GLOB_RECURSE DOC_IN_FILES
"${PROJECT_SOURCE_DIR}/docs/**.in"
"${PROJECT_SOURCE_DIR}/docs/conf.py"
)
foreach(in_file ${DOC_IN_FILES})
string(REPLACE "${PROJECT_SOURCE_DIR}/" "${PROJECT_BINARY_DIR}/"
out_file ${in_file})
string(REPLACE ".in" ""
out_file ${out_file})
configure_file(${in_file} ${out_file} @ONLY)
endforeach()
file(GLOB_RECURSE DOC_SOURCES "${CMAKE_SOURCE_DIR}/docs/*")
# Copy documentation source to build location
file(GLOB_RECURSE DOC_SOURCES "${PROJECT_SOURCE_DIR}/docs/*")
list(APPEND DOC_SOURCES
${CMAKE_SOURCE_DIR}/README.md
${CMAKE_SOURCE_DIR}/INSTALL.md
${CMAKE_SOURCE_DIR}/CHANGELOG.md
${CMAKE_SOURCE_DIR}/LICENSE
${PROJECT_SOURCE_DIR}/README.md
${PROJECT_SOURCE_DIR}/INSTALL.md
${PROJECT_SOURCE_DIR}/CHANGELOG.md
${PROJECT_SOURCE_DIR}/LICENSE
)
if(OCIO_BUILD_NUKE)
list(APPEND DOC_SOURCES ${CMAKE_SOURCE_DIR}/share/nuke/ocionuke/viewer.py)
list(APPEND DOC_SOURCES ${PROJECT_SOURCE_DIR}/share/nuke/ocionuke/viewer.py)
endif()
# Don't copy configured files. In particular this prevents overwriting conf.py,
# since it isn't renamed during configuration.
list(REMOVE_ITEM DOC_SOURCES ${DOC_IN_FILES})
add_custom_target(doc_copy
COMMENT "Copying doc files to staging area"
)
foreach(f ${DOC_SOURCES})
string(REGEX REPLACE "^${CMAKE_SOURCE_DIR}/" "" relpath ${f})
string(REGEX REPLACE "^${PROJECT_SOURCE_DIR}/" "" relpath ${f})
string(REGEX REPLACE "[/. ]" "_" tgtname ${relpath})
string(REGEX MATCH "^docs" IN_DOCS ${relpath})
set(SRC_PATH ${CMAKE_SOURCE_DIR}/${relpath})
set(DST_PATH ${CMAKE_BINARY_DIR}/${relpath})
set(SRC_PATH ${PROJECT_SOURCE_DIR}/${relpath})
set(DST_PATH ${PROJECT_BINARY_DIR}/${relpath})
if(NOT IN_DOCS)
get_filename_component(F_NAME ${relpath} NAME)
set(DST_PATH "${CMAKE_BINARY_DIR}/docs/${F_NAME}")
set(DST_PATH "${PROJECT_BINARY_DIR}/docs/${F_NAME}")
endif()
add_custom_command(OUTPUT ${DST_PATH}
@@ -107,43 +112,56 @@ if(${Python_VERSION_MAJOR} GREATER_EQUAL 3)
add_dependencies(doc_copy "copy_${tgtname}")
endforeach()
###############################################################################
### Extract rst from c++ headers ###
###########################################################################
### Extract XML from C++ headers ###
set(EXTRACT_COMMAND "${CMAKE_SOURCE_DIR}/share/sphinx/ExtractRstFromSourceCPP.py")
set(OCIO_HEADER_DIR "${CMAKE_SOURCE_DIR}/include/OpenColorIO")
set(RST_DESTINATION "${CMAKE_BINARY_DIR}/docs/developers/api/")
add_custom_target(rst_extraction
COMMAND ${CMAKE_COMMAND} -E make_directory ${RST_DESTINATION}
COMMAND ${Python_EXECUTABLE} ${EXTRACT_COMMAND} ${OCIO_HEADER_DIR}/OpenColorIO.h ${RST_DESTINATION}/OpenColorIO.rst
COMMAND ${Python_EXECUTABLE} ${EXTRACT_COMMAND} ${OCIO_HEADER_DIR}/OpenColorTransforms.h ${RST_DESTINATION}/OpenColorTransforms.rst
COMMAND ${Python_EXECUTABLE} ${EXTRACT_COMMAND} ${OCIO_HEADER_DIR}/OpenColorTypes.h ${RST_DESTINATION}/OpenColorTypes.rst
COMMENT "Extracting .rst files from C++ headers"
get_target_property(DOXYGEN_EXECUTABLE Doxygen::doxygen IMPORTED_LOCATION)
file(GLOB_RECURSE DOXYGEN_SOURCES
"${PROJECT_SOURCE_DIR}/include/*.h"
"${PROJECT_BINARY_DIR}/include/*.h"
)
set(DOXYGEN_INDEX_XML "${PROJECT_BINARY_DIR}/docs/_doxygen/xml/index.xml")
# Run doxygen if index.xml is behind OCIO headers or doxygen config
add_custom_command(OUTPUT ${DOXYGEN_INDEX_XML}
COMMAND "${DOXYGEN_EXECUTABLE}" "${PROJECT_BINARY_DIR}/docs/Doxyfile"
DEPENDS
${PROJECT_BINARY_DIR}/docs/Doxyfile
${DOXYGEN_SOURCES}
COMMENT "Extracting XML files from C++ headers"
)
###############################################################################
add_custom_target(doxygen_extraction
DEPENDS ${DOXYGEN_INDEX_XML}
)
###########################################################################
### HTML doc target ###
file(GLOB_RECURSE SPHINX_EXTENSIONS
"${PROJECT_SOURCE_DIR}/share/docs/*.py"
)
# Run Sphinx
add_custom_target(docs ALL
COMMAND
${PYT_PRE_CMD} "${Sphinx_EXECUTABLE}" -b html . "${CMAKE_CURRENT_BINARY_DIR}/build-html"
${Python_PRE_CMD} "${Sphinx_EXECUTABLE}" -b html . "${CMAKE_CURRENT_BINARY_DIR}/build-html"
DEPENDS
${CMAKE_BINARY_DIR}/docs/conf.py
${PROJECT_BINARY_DIR}/docs/conf.py
${SPHINX_EXTENSIONS}
${DOXYGEN_INDEX_XML}
COMMENT "Building html docs"
)
add_dependencies(docs
OpenColorIO
PyOpenColorIO
rst_extraction
doc_copy
Sphinx
sphinx-press-theme
recommonmark
sphinx-tabs
doxygen_extraction
)
###############################################################################
###########################################################################
### Installation ###
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/build-html/
@@ -151,48 +169,6 @@ if(${Python_VERSION_MAJOR} GREATER_EQUAL 3)
PATTERN .* EXCLUDE
)
###############################################################################
### PDF target ###
find_package(LATEX)
package_root_message(LATEX)
if(PDFLATEX_COMPILER)
add_custom_target(latex
COMMAND
${PYT_PRE_CMD} "${Sphinx_EXECUTABLE}" -b latex . "${CMAKE_CURRENT_BINARY_DIR}/build-latex"
DEPENDS
${CMAKE_BINARY_DIR}/docs/conf.py
COMMENT "Building latex doc"
)
add_dependencies(latex
OpenColorIO
PyOpenColorIO
rst_extraction
doc_copy
Sphinx
sphinx-press-theme
recommonmark
)
add_custom_target(pdf ALL
COMMAND ${PDFLATEX_COMPILER} OpenColorIO.tex
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/build-latex
COMMENT "Building pdf doc"
)
add_dependencies(pdf
latex
)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/build-latex/OpenColorIO.pdf
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/doc/OpenColorIO/)
endif()
else()
message(Warning "Skipping local documentation generation, requires Python >= 3.x")
endif()
+2453
View File
File diff suppressed because it is too large Load Diff
-47
View File
@@ -1,47 +0,0 @@
# OCIO v2 Documentation Effort
Since the API autodoc effort is happening simultaneously it will be easier for
a lot of contributors to do a light-weight build of the Sphinx docs, which
doesn't require building OCIO in its entirety.
## How to Build RST-Only Docs
In addition to the general OCIO v2 dependencies (Python and Sphinx), install the
Python packages listed in the `docs/requirements.txt` file.
```
pip install -r docs/requirements.txt
```
Build the sphinx docs locally...
```
cd docs
mkdir _build
sphinx-build -b html . _build
firefox _build/index.html
```
## Quirks
The vuepress theme that we've migrated to has some quirks to its design. For
example it only allows two nested table of contents (TOC). So things have to be
organized in a slightly different way than other sphinx projects.
The root-level `toc_redirect.rst` points to where to find the different section
TOCs. The name and contents of each sections TOC is defined in that
sub-directory's `_index.rst` file.
In this TOC the `:caption:` directive determines what the name of the section
will be in the side-bar, and in the header of the website. The *H1* header
determines the name of the page in the right/left arrows navigation bar. In a
lot of cases this ends up doubling up the name on the page, but this seems
unavoidable at the present time. If additional explanatory text is put in the
`_index.rst` files then it shouldn't be as problematic.
The site will show all *H1* headers in the side panel by default, these then
expand when selected to show all *H2* headers.
Due to the limited TOC and side-bar depth, we shouldn't be afraid of looong
pages with many *H2* headings to break down the page into logical quadrants.
+20 -20
View File
@@ -8,24 +8,24 @@ API
.. toctree::
:caption: API
installation
c_baker
c_colorspace
c_colorspaceset
c_config
c_context
c_cpuprocessor
c_dynamicproperty
c_filerules
c_formatmetadata
c_gpuprocessor
c_gpushadercreator
c_gpushaderdesc
c_imagedesc
c_look
c_packedimagedesc
c_planarimagedesc
c_processor
c_viewingrules
apphelpers
baker
colorspace
config
constants
context
dynamicproperty
enums
exceptions
formatmetadata
global
grading_transforms
imagedesc
look
namedtransform
processors
rules
shaders
systemmonitors
transforms
types
viewtransform
+129
View File
@@ -0,0 +1,129 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Applications Helpers
====================
ColorSpaceMenuHelpers
*********************
.. tabs::
.. group-tab:: Python
.. 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++
.. doxygenclass:: ${OCIO_NAMESPACE}::ColorSpaceMenuParameters
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const ColorSpaceMenuParameters&)
.. doxygenclass:: ${OCIO_NAMESPACE}::ColorSpaceMenuHelper
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const ColorSpaceMenuHelper&)
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstColorSpaceMenuHelperRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::ColorSpaceMenuHelperRcPtr
DisplayViewHelpers
******************
.. tabs::
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.DisplayViewHelpers.GetProcessor
.. autofunction:: PyOpenColorIO.DisplayViewHelpers.GetIdentityProcessor
.. autofunction:: PyOpenColorIO.DisplayViewHelpers.AddDisplayView
.. autofunction:: PyOpenColorIO.DisplayViewHelpers.RemoveDisplayView
.. group-tab:: C++
.. doxygennamespace:: ${OCIO_NAMESPACE}::DisplayViewHelpers
:members:
:undoc-members:
LegacyViewingPipeline
*********************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.LegacyViewingPipeline
:members:
:undoc-members:
:special-members: __init__, __str__
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::LegacyViewingPipeline
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const LegacyViewingPipeline&)
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstLegacyViewingPipelineRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::LegacyViewingPipelineRcPtr
MixingHelpers
*************
.. tabs::
.. group-tab:: Python
.. 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++
.. doxygenclass:: ${OCIO_NAMESPACE}::MixingSlider
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const MixingSlider&)
.. doxygenclass:: ${OCIO_NAMESPACE}::MixingColorSpaceManager
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const MixingColorSpaceManager&)
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstMixingColorSpaceManagerRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::MixingColorSpaceManagerRcPtr
+28
View File
@@ -0,0 +1,28 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Baker
=====
.. tabs::
.. group-tab:: Python
.. 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++
.. doxygenclass:: ${OCIO_NAMESPACE}::Baker
:members:
:undoc-members:
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstBakerRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::BakerRcPtr
-157
View File
@@ -1,157 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Python API
==========
Description
***********
A color configuration (:py:class:`PyOpenColorIO.Config`) defines all the color spaces to be
available at runtime.
(:py:class:`PyOpenColorIO.Config`) is the main object for interacting with this library.
It encapsulates all the information necessary to use customized
:py:class:`PyOpenColorIO.ColorSpaceTransform` and
:py:class:`PyOpenColorIO.DisplayTransform` operations.
See the :ref:`user-guide` for more information on selecting, creating,
and working with custom color configurations.
For applications interested in using only one color configuration at
a time (this is the vast majority of apps), their API would
traditionally get the global configuration and use that, as
opposed to creating a new one. This simplifies the use case
for plugins and bindings, as it alleviates the need to pass
around configuration handles.
An example of an application where this would not be
sufficient would be a multi-threaded image proxy server
(daemon) that wants to handle multiple show configurations
concurrently in a single process. This app would need to keep
multiple configurations alive, and manage them appropriately.
Roughly speaking, a novice user should select a default
configuration that most closely approximates the use case
(animation, visual effects, etc.), and set the :envvar:`OCIO`
environment variable to point at the root of that configuration.
.. note::
Initialization using environment variables is typically preferable
in a multi-app ecosystem, as it allows all applications to be consistently configured.
.. note::
Paths to LUTs can be relative. The search paths are defined in :py:class:`PyOpenColorIO.Config`.
See :ref:`developers-usageexamples`
Examples of Use
+++++++++++++++
.. code-block:: python
import PyOpenColorIO as OCIO
# Load an existing configuration from the environment.
# The resulting configuration is read-only. If $OCIO is set, it will use that.
# Otherwise it will use an internal default.
config = OCIO.GetCurrentConfig()
# What color spaces exist?
colorSpaceNames = [ cs.getName() for cs in config.getColorSpaces() ]
# Given a string, can we parse a color space name from it?
inputString = 'myname_linear.exr'
colorSpaceName = config.parseColorSpaceFromString(inputString)
if colorSpaceName:
print 'Found color space', colorSpaceName
else:
print 'Could not get color space from string', inputString
# What is the name of scene-linear in the configuration?
colorSpace = config.getColorSpace(OCIO.Constants.ROLE_SCENE_LINEAR)
if colorSpace:
print colorSpace.getName()
else:
print 'The role of scene-linear is not defined in the configuration'
# For examples of how to actually perform the color transform math,
# see 'Python: Processor' docs.
# Create a new, empty, editable configuration
config = OCIO.Config()
# Create a new color space, and add it
cs = OCIO.ColorSpace(...)
# (See ColorSpace for details)
config.addColorSpace(cs)
# For additional examples of config manipulation, see
# https://github.com/imageworks/OpenColorIO-Configs/blob/master/nuke-default/make.py
Exceptions
**********
.. autoclass:: PyOpenColorIO.Exception
:members:
:undoc-members:
.. autoclass:: PyOpenColorIO.ExceptionMissingFile
:members:
:undoc-members:
Global
******
.. autofunction:: PyOpenColorIO.ClearAllCaches
.. autofunction:: PyOpenColorIO.GetCurrentConfig
.. autofunction:: PyOpenColorIO.GetLoggingLevel
.. autofunction:: PyOpenColorIO.SetCurrentConfig
.. autofunction:: PyOpenColorIO.SetLoggingLevel
Config
******
.. autoclass:: PyOpenColorIO.Config
:members:
:undoc-members:
ColorSpace
**********
.. autoclass:: PyOpenColorIO.ColorSpace
:members:
:undoc-members:
Look
****
.. autoclass:: PyOpenColorIO.Look
:members:
:undoc-members:
Processor
*********
.. autoclass:: PyOpenColorIO.Processor
:members:
:undoc-members:
Context
*******
.. autoclass:: PyOpenColorIO.Context
:members:
:undoc-members:
Baker
*****
.. autoclass:: PyOpenColorIO.Baker
:members:
:undoc-members:
-138
View File
@@ -1,138 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
.. _python-transforms:
Python Transforms
=================
Transform
*********
.. autoclass:: PyOpenColorIO.Transform
:members:
:undoc-members:
AllocationTransform
*******************
.. code-block:: python
import PyOpenColorIO as OCIO
transform = OCIO.AllocationTransform()
transform.setAllocation(OCIO.Constants.ALLOCATION_LG2)
.. autoclass:: PyOpenColorIO.AllocationTransform
:members:
:undoc-members:
:inherited-members:
CDLTransform
************
.. code-block:: python
import PyOpenColorIO as OCIO
cdl = OCIO.CDLTransform()
# Set the slope, offset, power, and saturation for each channel.
cdl.setSOP([, , , , , , , , ])
cdl.setSat([, , ])
cdl.getSatLumaCoefs()
.. autoclass:: PyOpenColorIO.CDLTransform
:members:
:undoc-members:
:inherited-members:
ColorSpaceTransform
*******************
This class is meant so that ColorSpace conversions can be reused, referencing ColorSpaces that already exist.
.. note::
Careless use of this may create infinite loops, so avoid referencing the colorspace you're in.
.. code-block:: python
import PyOpenColorIO as OCIO
transform = OCIO.ColorSpaceTransform()
.. autoclass:: PyOpenColorIO.ColorSpaceTransform
:members:
:undoc-members:
:inherited-members:
DisplayTransform
****************
.. code-block:: python
import PyOpenColorIO as OCIO
transform = OCIO.DisplayTransform()
.. autoclass:: PyOpenColorIO.DisplayTransform
:members:
:undoc-members:
:inherited-members:
ExponentTransform
*****************
.. code-block:: python
import PyOpenColorIO as OCIO
transform = OCIO.ExponentTransform()
.. autoclass:: PyOpenColorIO.ExponentTransform
:members:
:undoc-members:
:inherited-members:
FileTransform
*************
.. autoclass:: PyOpenColorIO.FileTransform
:members:
:undoc-members:
:inherited-members:
GroupTransform
**************
.. autoclass:: PyOpenColorIO.GroupTransform
:members:
:undoc-members:
:inherited-members:
LogTransform
************
.. code-block:: python
import PyOpenColorIO as OCIO
:py:class:`PyOpenColorIO.LogTransform` is used to define a log transform. The direction of
the transform and its numerical base can be specified.
.. autoclass:: PyOpenColorIO.LogTransform
:members:
:undoc-members:
:inherited-members:
LookTransform
*************
.. autoclass:: PyOpenColorIO.LookTransform
:members:
:undoc-members:
:inherited-members:
MatrixTransform
***************
.. autoclass:: PyOpenColorIO.MatrixTransform
:members:
:undoc-members:
:inherited-members:
-13
View File
@@ -1,13 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Python Types
============
Constants
*********
.. automodule:: PyOpenColorIO.Constants
:members:
:undoc-members:
-197
View File
@@ -1,197 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Baker
=====
.. CAUTION::
API Docs are a work in progress, expect them to improve over time.
**class Baker**
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*
::
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(OCIO::METADATA_DESCRIPTION, "A first comment");
metadata.addChildElement(OCIO::METADATA_DESCRIPTION, "A second comment");
std::ostringstream out;
baker->bake(out); // fresh bread anyone!
std::cout << out.str();
.. tabs::
.. group-tab:: C++
.. cpp:function:: BakerRcPtr createEditableCopy() const
Create a copy of this Baker.
.. cpp:function:: ConstConfigRcPtr getConfig() const
.. cpp:function:: void setConfig(const ConstConfigRcPtr &config)
Set the config to use.
.. cpp:function:: const char *getFormat() const
.. cpp:function:: void setFormat(const char *formatName)
Set the LUT output format.
.. cpp:function:: const FormatMetadata &getFormatMetadata() const
.. cpp:function:: FormatMetadata &getFormatMetadata()
Get editable *optional* format metadata. The metadata that will
be used varies based on the capability of the given file format.
Formats such as CSP, IridasCube, and ResolveCube will create
comments in the file header using the value of any first-level
children elements of the formatMetadata. The CLF/CTF formats
will make use of the top-level “id” and “name” attributes and
children elements “Description”, “InputDescriptor”,
“OutputDescriptor”, and “Info”.
.. cpp:function:: const char *getInputSpace() const
.. cpp:function:: void setInputSpace(const char *inputSpace)
Set the input ColorSpace that the LUT will be applied to.
.. cpp:function:: const char *getShaperSpace() const
.. cpp:function:: void setShaperSpace(const char *shaperSpace)
Set an *optional* ColorSpace to be used to shape / transfer the
input colorspace. This is mostly used to allocate an HDR
luminance range into an LDR one. If a shaper space is not
explicitly specified, and the file format supports one, the
ColorSpace Allocation will be used (not implemented for all
formats).
.. cpp:function:: const char *getLooks() const
.. cpp:function:: void setLooks(const char *looks)
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).
.. cpp:function:: const char *getTargetSpace() const
.. cpp:function:: void setTargetSpace(const char *targetSpace)
Set the target device colorspace for the LUT.
.. cpp:function:: int getShaperSize() const
.. cpp:function:: void setShaperSize(int shapersize)
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).
.. cpp:function:: int getCubeSize() const
.. cpp:function:: void setCubeSize(int cubesize)
Override the default cube sample size. default: <format specific>
.. cpp:function:: void bake(std::ostream &os) const
Bake the LUT into the output stream.
.. cpp:function:: ~Baker()
-[ Public Static Functions ]-
.. cpp:function:: BakerRcPtr Create()
Create a new Baker.
.. cpp:function:: int getNumFormats()
Get the number of LUT bakers.
.. cpp:function:: const char *getFormatNameByIndex(int index)
Get the LUT baker format name at index, return empty string if
an invalid index is specified.
.. cpp:function:: const char *getFormatExtensionByIndex(int index)
Get the LUT baker format extension at index, return empty string
if an invalid index is specified.
.. group-tab:: Python
.. py:class:: PyOpenColorIO.Baker
.. py:class:: FormatIterator
.. py:method:: bake(*args,**kwargs)
Overloaded function.
1. .. py:method:: bake(self: PyOpenColorIO.Baker, fileName: str) -> None
2. .. py:method:: bake(self: PyOpenColorIO.Baker) -> str
.. py:method:: getConfig(self: PyOpenColorIO.Baker) -> PyOpenColorIO.Config
.. py:method:: getCubeSize(self: PyOpenColorIO.Baker) -> int
.. py:method:: getFormat(self: PyOpenColorIO.Baker) -> str
.. py:method:: getFormatMetadata(*args, **kwargs)**
Overloaded function.
1. .. py:method:: getFormatMetadata(self: PyOpenColorIO.Baker) -> PyOpenColorIO.FormatMetadata
2. .. py:method:: getFormatMetadata(self: PyOpenColorIO.Baker) -> PyOpenColorIO.FormatMetadata
.. py:method:: getFormats() -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::Baker>, 0>
.. py:method:: getInputSpace(self: PyOpenColorIO.Baker) -> str
.. py:method:: getLooks(self: PyOpenColorIO.Baker) -> str
.. py:method:: getShaperSize(self: PyOpenColorIO.Baker) -> int
.. py:method:: getShaperSpace(self: PyOpenColorIO.Baker) -> str
.. py:method:: getTargetSpace(self: PyOpenColorIO.Baker) -> str
.. py:method:: setConfig(self: PyOpenColorIO.Baker, config: PyOpenColorIO.Config) -> None
.. py:method:: setCubeSize(self: PyOpenColorIO.Baker, cubeSize: int) -> None
.. py:method:: setFormat(self: PyOpenColorIO.Baker, formatName: str) -> None
.. py:method:: setInputSpace(self: PyOpenColorIO.Baker, inputSpace: str) -> None
.. py:method:: setLooks(self: PyOpenColorIO.Baker, looks: str) -> None
.. py:method:: setShaperSize(self: PyOpenColorIO.Baker, shaperSize: int) -> None
.. py:method:: setShaperSpace(self: PyOpenColorIO.Baker, shaperSpace: str) -> None
.. py:method:: setTargetSpace(self: PyOpenColorIO.Baker, targetSpace: str) -> None
-199
View File
@@ -1,199 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
ColorSpace
**********
.. CAUTION::
API Docs are a work in progress, expect them to improve over time.
The *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).
*ColorSpaces* are specific to a particular image precision (float32,
uint8, etc.), and the set of ColorSpaces that provide equivalent mappings
(at different precisions) are referred to as a 'family'.
**class ColorSpace**
.. tabs::
.. group-tab:: C++
.. cpp:function:: ColorSpaceRcPtr createEditableCopy() const
.. cpp:function:: const char *getName() const noexcept
.. cpp:function:: void setName(const char *name)
.. cpp:function:: const char *getFamily() const noexcept
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.
.. cpp:function:: void setFamily(const char *family)
Set the family, for use in user interfaces (optional)
.. cpp:function:: const char *getEqualityGroup() const noexcept
Get the ColorSpace group name (used for equality comparisons)
This allows no-op transforms between different colorspaces. If
an equalityGroup is not defined (an empty string), it will be
considered unique (i.e., it will not compare as equal to other
ColorSpaces with an empty equality group). This is often, though
not always, set to the same value as ‘family’.
.. cpp:function:: void setEqualityGroup(const char *equalityGroup)
.. cpp:function:: const char *getDescription() const noexcept
.. cpp:function:: void setDescription(const char *description)
.. cpp:function:: BitDepth getBitDepth() const noexcept
.. cpp:function:: void setBitDepth(BitDepth bitDepth)
.. cpp:function:: ReferenceSpaceType getReferenceSpaceType() const noexcept
A display color space will use the display-referred reference
space.
.. cpp:function:: bool hasCategory(const char *category) const
Return true if the category is present.
.. cpp:function:: void addCategory(const char *category)
Add a single category.
**Note**
Will do nothing if the category already exists.
.. cpp:function:: void removeCategory(const char *category)
Remove a category.
**Note**
Will do nothing if the category is missing.
.. cpp:function:: int getNumCategories() const
Get the number of categories.
.. cpp:function:: const char *getCategory(int index) const
Return the category name using its index.
**Note**
Will be null if the index is invalid.
.. cpp:function:: void clearCategories()
Clear all the categories.
.. cpp:function:: const char *getEncoding() const noexcept
.. cpp:function:: void setEncoding(const char *encoding)
.. cpp:function:: bool isData() const noexcept
.. cpp:function:: void setIsData(bool isData) noexcept
.. cpp:function:: Allocation getAllocation() const noexcept
.. cpp:function:: void setAllocation(Allocation allocation) noexcept
.. cpp:function:: int getAllocationNumVars() const
.. cpp:function:: void getAllocationVars(float *vars) const
.. cpp:function:: void setAllocationVars(int numvars, const float *vars)
.. cpp:function:: ConstTransformRcPtr getTransform(ColorSpaceDirection dir) const
If a transform in the specified direction has been specified,
return it. Otherwise return a null ConstTransformRcPtr
.. cpp:function:: void setTransform(const ConstTransformRcPtr &transform, ColorSpaceDirection dir)
Specify the transform for the appropriate direction. Setting the
transform to null will clear it.
.. cpp:function:: ColorSpace(const ColorSpace&) = delete
.. cpp:function:: ColorSpace &operator=(const ColorSpace&) = delete
.. cpp:function:: ~ColorSpace()
-[ Public Static Functions ]-
.. cpp:function:: ColorSpaceRcPtr Create()
.. cpp:function:: ColorSpaceRcPtr Create(ReferenceSpaceType referenceSpace)
.. group-tab:: Python
.. py:class:: PyOpenColorIO.ColorSpace
.. py:class:: ColorSpaceCategoryIterator
.. py:method:: addCategory(self: PyOpenColorIO.ColorSpace, category: str) -> None
.. py:method:: clearCategories(self: PyOpenColorIO.ColorSpace) -> None
.. py:method:: getAllocation(self: PyOpenColorIO.ColorSpace) -> PyOpenColorIO.Allocation
.. py:method:: getAllocationVars(self: PyOpenColorIO.ColorSpace) -> List[float]
.. py:method:: getBitDepth(self: PyOpenColorIO.ColorSpace) -> PyOpenColorIO.BitDepth
.. py:method:: getCategories(self: PyOpenColorIO.ColorSpace) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::ColorSpace>, 0>
.. py:method:: getDescription(self: PyOpenColorIO.ColorSpace) -> str
.. py:method:: getEncoding(self: PyOpenColorIO.ColorSpace) -> str
.. py:method:: getEqualityGroup(self: PyOpenColorIO.ColorSpace) -> str
.. py:method:: getFamily(self: PyOpenColorIO.ColorSpace) -> str
.. py:method:: getName(self: PyOpenColorIO.ColorSpace) -> str
.. py:method:: getReferenceSpaceType(self: PyOpenColorIO.ColorSpace) -> PyOpenColorIO.ReferenceSpaceType
.. py:method:: getTransform(self: PyOpenColorIO.ColorSpace, direction: PyOpenColorIO.ColorSpaceDirection) -> PyOpenColorIO.Transform
.. py:method:: hasCategory(self: PyOpenColorIO.ColorSpace, category: str) -> bool
.. py:method:: isData(self: PyOpenColorIO.ColorSpace) -> bool
.. py:method:: removeCategory(self: PyOpenColorIO.ColorSpace, category: str) -> None
.. py:method:: setAllocation(self: PyOpenColorIO.ColorSpace, allocation: PyOpenColorIO.Allocation) -> None
.. py:method:: setAllocationVars(self: PyOpenColorIO.ColorSpace, vars: List[float]) -> None
.. py:method:: setBitDepth(self: PyOpenColorIO.ColorSpace, bitDepth: PyOpenColorIO.BitDepth) -> None
.. py:method:: setDescription(self: PyOpenColorIO.ColorSpace, description: str) -> None
.. py:method:: setEncoding(self: PyOpenColorIO.ColorSpace, encoding: str) -> None
.. py:method:: setEqualityGroup(self: PyOpenColorIO.ColorSpace, equalityGroup: str) -> None
.. py:method:: setFamily(self: PyOpenColorIO.ColorSpace, family: str) -> None
.. py:method:: setIsData(self: PyOpenColorIO.ColorSpace, isData: bool) -> None
.. py:method:: setName(self: PyOpenColorIO.ColorSpace, name: str) -> None
.. py:method:: setTransform(self: PyOpenColorIO.ColorSpace, transform: PyOpenColorIO.Transform, direction: PyOpenColorIO.ColorSpaceDirection) -> None
-141
View File
@@ -1,141 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
ColorSpaceSet
*************
.. CAUTION::
API Docs are a work in progress, expect them to improve over time.
**class ColorSpaceSet**
The *ColorSpaceSet* is a set of color spaces (i.e. no color space
duplication) which could be the result of
:cpp:func:```Config::getColorSpaces`_`` or built from scratch.
**Note**
The color spaces are decoupled from the config ones, i.e., any
changes to the set itself or to its color spaces do not affect
the original color spaces from the configuration. If needed, use
:cpp:func:```Config::addColorSpace`_`` to update the
configuration.
.. tabs::
.. group-tab:: C++
.. cpp:function:: ColorSpaceSetRcPtr createEditableCopy() const
Create a set containing a copy of all the color spaces.
.. cpp:function:: bool operator==(const ColorSpaceSet &css) const
Return true if the two sets are equal.
**Note**
The comparison is done on the color space names (not a deep comparison).
.. cpp:function:: bool operator!=(const ColorSpaceSet &css) const
Return true if the two sets are different.
.. cpp:function:: int getNumColorSpaces() const
Return the number of color spaces.
.. cpp:function:: const char *getColorSpaceNameByIndex(int index) const
Return the color space name using its index. This will be null
if an invalid index is specified.
.. cpp:function:: ConstColorSpaceRcPtr getColorSpaceByIndex(int index) const
Return the color space using its index. This will be empty if an
invalid index is specified.
.. cpp:function:: ConstColorSpaceRcPtr getColorSpace(const char *name) const
Will return null if the name is not found.
**Note**
Only accepts color space names (i.e. no role name).
.. cpp:function:: int getColorSpaceIndex(const char *name) const
Will return -1 if the name is not found.
**Note**
Only accepts color space names (i.e. no role name).
.. cpp:function:: bool hasColorSpace(const char *name) const
**Note**
Only accepts color space names (i.e. no role name)
**Return**
true
**Return**
false
**Parameters**
* ``name``:
.. cpp:function:: void addColorSpace(const ConstColorSpaceRcPtr &cs)
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).
.. cpp:function:: void addColorSpaces(const ConstColorSpaceSetRcPtr &cs)
.. cpp:function:: void removeColorSpace(const char *name)
Remove color space(s) using color space names (i.e. no role
name).
**Note**
The removal of a missing color space does nothing.
.. cpp:function:: void removeColorSpaces(const ConstColorSpaceSetRcPtr &cs)
.. cpp:function:: void clearColorSpaces()
Clear all color spaces.
.. cpp:function:: ~ColorSpaceSet()
-[ Public Static Functions ]-
.. cpp:function:: ColorSpaceSetRcPtr Create()
Create an empty set of color spaces.
.. group-tab:: Python
.. py:class:: PyOpenColorIO.ColorSpaceSet
.. py:class:: ColorSpaceIterator
.. py:class:: ColorSpaceNameIterator
.. py:method:: addColorSpace(self: PyOpenColorIO.ColorSpaceSet, colorSpace: PyOpenColorIO.ColorSpace) -> None
.. py:method:: addColorSpaces(self: PyOpenColorIO.ColorSpaceSet, colorSpace: PyOpenColorIO.ColorSpaceSet) -> None
.. py:method:: clearColorSpaces(self: PyOpenColorIO.ColorSpaceSet) -> None
.. py:method:: getColorSpace(self: PyOpenColorIO.ColorSpaceSet, name: str) -> PyOpenColorIO.ColorSpace
.. py:method:: getColorSpaceNames(self: PyOpenColorIO.ColorSpaceSet) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::ColorSpaceSet>, 0>
.. py:method:: getColorSpaces(self: PyOpenColorIO.ColorSpaceSet) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::ColorSpaceSet>, 1>
.. py:method:: removeColorSpace(self: PyOpenColorIO.ColorSpaceSet, colorSpace: str) -> None
.. py:method:: removeColorSpaces(self: PyOpenColorIO.ColorSpaceSet, colorSpace: PyOpenColorIO.ColorSpaceSet) -> None
-975
View File
@@ -1,975 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Config
******
.. CAUTION::
API Docs are a work in progress, expect them to improve over time.
A config defines all the color spaces to be available at runtime.
The color configuration (:cpp:class:`Config`) is the main object for
interacting with this library. It encapsulates all of the information
necessary to use customized :cpp:class:`ColorSpaceTransform` and
:cpp:class:`DisplayViewTransform` operations.
See the :ref:`user-guide` for more information on
selecting, creating, and working with custom color configurations.
For applications interested in using only one color config at
a time (this is the vast majority of apps), their API would
traditionally get the global configuration and use that, as opposed to
creating a new one. This simplifies the use case for
plugins and bindings, as it alleviates the need to pass around configuration
handles.
An example of an application where this would not be sufficient would be
a multi-threaded image proxy server (daemon), which wished to handle
multiple show configurations in a single process concurrently. This
app would need to keep multiple configurations alive, and to manage them
appropriately.
Roughly speaking, a novice user should select a
default configuration that most closely approximates the use case
(animation, visual effects, etc.), and set the :envvar:`OCIO` environment
variable to point at the root of that configuration.
.. NOTE::
Initialization using environment variables is typically preferable in
a multi-app ecosystem, as it allows all applications to be
consistently configured.
**class Config**
.. tabs::
.. group-tab:: C++
.. cpp:function:: ConfigRcPtr createEditableCopy() const
.. cpp:function:: unsigned int getMajorVersion() const
Get the configuration major version.
.. cpp:function:: void setMajorVersion(unsigned int major)
Set the configuration major version.
.. cpp:function:: unsigned int getMinorVersion() const
Get the configuration minor version.
.. cpp:function:: void setMinorVersion(unsigned int minor)
Set the configuration minor version.
.. cpp:function:: void upgradeToLatestVersion()
Allows an older config to be serialized as the current
version.
.. cpp:function:: void sanityCheck() const
Performs a thorough sanity check for the most common user
errors.
This will throw an exception if the config is malformed. The
most common error occurs when references are made to
colorspaces that do not exist.
.. cpp:function:: char getFamilySeparator() const
If not empty or null a single character to separate the
family string in levels.
.. cpp:function:: void setFamilySeparator(char separator)
Succeeds if the characters is null or a valid character from
the ASCII table i.e. from value 32 (i.e. space) to 126 (i.e.
‘~’); otherwise, it throws an exception.
.. cpp:function:: const char *getDescription() const
.. cpp:function:: void setDescription(const char *description)
.. cpp:function:: void serialize(std::ostream &os) const
Returns the string representation of the Config in YAML text
form.
This is typically stored on disk in a file with the extension
.ocio.
.. cpp:function:: const char *getCacheID() const
This will produce a hash of the all colorspace definitions,
etc. All external references, such as files used in
FileTransforms, etc., will be incorporated into the cacheID.
While the contents of the files are not read, the file system
is queried for relevant information (mtime, inode) so that
the config’s cacheID will change when the underlying luts are
updated. If a context is not provided, the current Context
will be used. If a null context is provided, file references
will not be taken into account (this is essentially a hash of
`Config::serialize`_).
.. cpp:function:: const char *getCacheID(const ConstContextRcPtr &context) const
.. cpp:function:: ConstContextRcPtr getCurrentContext() const
.. cpp:function:: void addEnvironmentVar(const char *name, const char *defaultValue)
.. cpp:function:: int getNumEnvironmentVars() const
.. cpp:function:: const char *getEnvironmentVarNameByIndex(int index) const
.. cpp:function:: const char *getEnvironmentVarDefault(const char *name) const
.. cpp:function:: void clearEnvironmentVars()
.. cpp:function:: void setEnvironmentMode(EnvironmentMode mode)
.. cpp:function:: EnvironmentMode getEnvironmentMode() const
.. cpp:function:: void loadEnvironment()
.. cpp:function:: const char *getSearchPath() const
.. cpp:function:: void setSearchPath(const char *path)
Set all search paths as a concatenated string, ‘:’ to
separate the paths.
See `addSearchPath`_ for a more robust and platform-agnostic
method of setting the search paths.
.. cpp:function:: int getNumSearchPaths() const
.. cpp:function:: const char *getSearchPath(int index) const
Get a search path from the list.
The paths are in the order they will be searched (that is,
highest to lowest priority).
.. cpp:function:: void clearSearchPaths()
.. cpp:function:: void addSearchPath(const char *path)
Add a single search path to the end of the list.
Paths may be either absolute or relative. Relative paths are
relative to the working directory. Forward slashes will be
normalized to reverse for Windows. Environment (context)
variables may be used in paths.
.. cpp:function:: const char *getWorkingDir() const
.. cpp:function:: void setWorkingDir(const char *dirname)
The working directory defaults to the location of the config
file. It is used to convert any relative paths to absolute.
If no search paths have been set, the working directory will
be used as the fallback search path. No environment (context)
variables may be used in the working directory.
.. cpp:function:: ColorSpaceSetRcPtr getColorSpaces(const char *category) const
Get all active color spaces having a specific category in the
order they appear in the config file.
**Note**
If the category is null or empty, the method returns all
the active color spaces like
:cpp:func:```Config::getNumColorSpaces`_`` and
:cpp:func:```Config::getColorSpaceNameByIndex`_`` do.
**Note**
It’s worth noticing that the method returns a copy of the
selected color spaces decoupling the result from the
config. Hence, any changes on the config do not affect the
existing color space sets, and vice-versa.
.. cpp:function:: int getNumColorSpaces(SearchReferenceSpaceType searchReferenceType, ColorSpaceVisibility visibility) const
Work on the color spaces selected by the reference color
space type and visibility.
.. cpp:function:: const char *getColorSpaceNameByIndex(SearchReferenceSpaceType searchReferenceType, ColorSpaceVisibility visibility, int index) const
Work on the color spaces selected by the reference color
space type and visibility (active or inactive).
Return empty for invalid index.
.. cpp:function:: ConstColorSpaceRcPtr getColorSpace(const char *name) const
Get the color space from all the color spaces (i.e. active
and inactive) and return null if the name is not found.
**Note**
The fcn accepts either a color space OR role name. (Color
space names take precedence over roles.)
.. cpp:function:: int getNumColorSpaces() const
Work on the active color spaces only.
**Note**
Only works from the list of active color spaces.
.. cpp:function:: const char *getColorSpaceNameByIndex(int index) const
Work on the active color spaces only and return null for
invalid index.
**Note**
Only works from the list of active color spaces.
.. cpp:function:: int getIndexForColorSpace(const char *name) const
Get an index from the active color spaces only and return -1
if the name is not found.
**Note**
The fcn accepts either a color space OR role name. (Color
space names take precedence over roles.)
.. cpp:function:: void addColorSpace(const ConstColorSpaceRcPtr &cs)
Add a color space to the configuration.
**Note**
If another color space is already present with the same
name, this will overwrite it. This stores a copy of the
specified color space.
**Note**
Adding a color space to a Config does not affect any
ColorSpaceSet sets that have already been created.
.. cpp:function:: void removeColorSpace(const char *name)
Remove a color space from the configuration.
**Note**
It does not throw an exception if the color space is not
present or used by an existing role. Role name arguments
are ignored.
**Note**
Removing a color space to a Config does not affect any
ColorSpaceSet sets that have already been created.
.. cpp:function:: bool isColorSpaceUsed(const char *name) const noexcept
Return true if the color space is used by a transform, a
role, or a look.
.. cpp:function:: void clearColorSpaces()
Remove all the color spaces from the configuration.
**Note**
Removing color spaces from a Config does not affect any
ColorSpaceSet sets that have already been created.
.. cpp:function:: const char *parseColorSpaceFromString(const char *str) const
Given the specified string, get the longest, right-most,
colorspace substring that appears.
* If strict parsing is enabled, and no color space is found,
return an empty string.
* If strict parsing is disabled, return ROLE_DEFAULT (if
defined).
* If the default role is not defined, return an empty
string.
.. cpp:function:: bool isStrictParsingEnabled() const
.. cpp:function:: void setStrictParsingEnabled(bool enabled)
.. cpp:function:: void setInactiveColorSpaces(const char *inactiveColorSpaces)
Set/get a list of inactive color space names.
* The inactive spaces are color spaces that should not
appear in application menus.
* These color spaces will still work in
:cpp:func:``Config::getProcessor`` calls.
* The argument is a comma-delimited string. A null or empty
string empties the list.
* The environment variable OCIO_INACTIVE_COLORSPACES may
also be used to set the inactive color space list.
* The env. var. takes precedence over the
inactive_colorspaces list in the config file.
* Setting the list via the API takes precedence over either
the env. var. or the config file list.
* Roles may not be used.
.. cpp:function:: const char *getInactiveColorSpaces() const
.. cpp:function:: void setRole(const char *role, const char *colorSpaceName)
**Note**
Setting the ``colorSpaceName`` name to a null string
unsets it.
.. cpp:function:: int getNumRoles() const
.. cpp:function:: bool hasRole(const char *role) const
Return true if the role has been defined.
.. cpp:function:: const char *getRoleName(int index) const
Get the role name at index, this will return values like
‘scene_linear’, ‘compositing_log’.
Return empty string if index is out of range.
.. cpp:function:: const char *getRoleColorSpace(int index) const
Get the role color space at index.
Return empty string if index is out of range.
.. cpp:function:: void addSharedView(const char *view, const char *viewTransformName, const char *colorSpaceName, const char *looks, const char *ruleName, const char *description)
Will throw if view or colorSpaceName are null or empty.
.. cpp:function:: void removeSharedView(const char *view)
Remove a shared view. Will throw if the view does not exist.
.. cpp:function:: const char *getDefaultDisplay() const
.. cpp:function:: int getNumDisplays() const
.. cpp:function:: const char *getDisplay(int index) const
Will return “” if the index is invalid.
.. cpp:function:: const char *getDefaultView(const char *display) const
.. cpp:function:: int getNumViews(const char *display) const
Return the number of views attached to the display including
the number of shared views if any. Return 0 if display does
not exist.
.. cpp:function:: const char *getView(const char *display, int index) const
.. cpp:function:: int getNumViews(const char *display, const char *colorspaceName) const
If the config has ViewingRules, get the number of active
Views for this colorspace. (If there are no rules, it returns
all of them.)
.. cpp:function:: const char *getView(const char *display, const char *colorspaceName, int index) const
.. cpp:function:: const char *getDisplayViewTransformName(const char *display, const char *view) const
Returns the view_transform attribute of the (display, view)
pair. View can be a shared view of the display. If display is
null or empty, config shared views are used.
.. cpp:function:: const char *getDisplayViewColorSpaceName(const char *display, const char *view) const
Returns the colorspace attribute of the (display, view) pair.
(Note that this may be either a color space or a display
color space.)
.. cpp:function:: const char *getDisplayViewLooks(const char *display, const char *view) const
Returns the looks attribute of a (display, view) pair.
.. cpp:function:: const char *getDisplayViewRule(const char *display, const char *view) const noexcept
Returns the rule attribute of a (display, view) pair.
.. cpp:function:: const char *getDisplayViewDescription(const char *display, const char *view) const noexcept
Returns the description attribute of a (display, view) pair.
.. cpp:function:: void addDisplayView(const char *display, const char *view, const char *colorSpaceName, const char *looks)
For the (display, view) pair, specify which color space and
look to use. If a look is not desired, then just pass a null
or empty string.
.. cpp:function:: void addDisplayView(const char *display, const char *view, const char *viewTransformName, const char *colorSpaceName, const char *looks, const char *ruleName, const char *description)
For the (display, view) pair, specify the color space or
alternatively specify the view transform and display color
space. The looks, viewing rule, and description are optional.
Pass a null or empty string for any optional arguments. If
the view already exists, it is replaced.
Will throw if:
* Display, view or colorSpace are null or empty.
* Display already has a shared view with the same name.
.. cpp:function:: void addDisplaySharedView(const char *display, const char *sharedView)
Add a (reference to a) shared view to a display.
The shared view must be part of the config. See
`Config::addSharedView`_
This will throw if:
* Display or view are null or empty.
* Display already has a view (shared or not) with the same
name.
.. cpp:function:: void removeDisplayView(const char *display, const char *view)
Remove the view and the display if no more views.
It does not remove the associated color space. If the view
name is a shared view, it only removes the reference to the
view from the display but the shared view, remains in the
config.
Will throw if the view does not exist.
.. cpp:function:: void clearDisplays()
.. cpp:function:: void setActiveDisplays(const char *displays)
$OCIO_ACTIVE_DISPLAYS envvar can, at runtime, optionally
override the allowed displays. It is a comma or colon
delimited list. Active displays that are not in the specified
profile will be ignored, and the left-most defined display
will be the default.
Comma-delimited list of names to filter and order the active
displays.
**Note**
The setter does not override the envvar. The getter does
not take into account the envvar value and thus may not
represent what the user is seeing.
.. cpp:function:: const char *getActiveDisplays() const
.. cpp:function:: void setActiveViews(const char *views)
$OCIO_ACTIVE_VIEWS envvar can, at runtime, optionally
override the allowed views. It is a comma or colon delimited
list. Active views that are not in the specified profile will
be ignored, and the left-most defined view will be the
default.
Comma-delimited list of names to filter and order the active
views.
**Note**
The setter does not override the envvar. The getter does
not take into account the envvar value and thus may not
represent what the user is seeing.
.. cpp:function:: const char *getActiveViews() const
.. cpp:function:: int getNumDisplaysAll() const
Get all displays in the config, ignoring the active_displays
list.
.. cpp:function:: const char *getDisplayAll(int index) const
.. cpp:function:: int getNumViews(ViewType type, const char *display) const
Get either the shared or display-defined views for a display.
The active_views list is ignored. Passing a null or empty
display (with type=VIEW_SHARED) returns the contents of the
shared_views section of the config. Return 0 if display does
not exist.
.. cpp:function:: const char *getView(ViewType type, const char *display, int index) const**
.. cpp:function:: ConstViewingRulesRcPtr getViewingRules() const noexcept
Get read-only version of the viewing rules.
.. cpp:function:: void setViewingRules(ConstViewingRulesRcPtr viewingRules)
Set viewing rules.
**Note**
The argument is cloned.
.. cpp:function:: void getDefaultLumaCoefs(double *rgb) const
Get the default coefficients for computing luma.
**Note**
There is no “1 size fits all” set of luma coefficients.
(The values are typically different for each colorspace,
and the application of them may be nonsensical depending
on the intensity coding anyways). Thus, the ‘right’ answer
is to make these functions on the :cpp:class:``Config``
class. However, it’s often useful to have a config-wide
default so here it is. We will add the colorspace specific
luma call if/when another client is interesting in using
it.
.. cpp:function:: void setDefaultLumaCoefs(const double *rgb)
These should be normalized (sum to 1.0 exactly).
.. cpp:function:: ConstLookRcPtr getLook(const char *name) const
.. cpp:function:: int getNumLooks() const
.. cpp:function:: const char *getLookNameByIndex(int index) const
.. cpp:function:: void addLook(const ConstLookRcPtr &look)
.. cpp:function:: void clearLooks()
.. cpp:function:: int getNumViewTransforms() const noexcept
.. cpp:function:: ConstViewTransformRcPtr getViewTransform(const char *name) const noexcept
.. cpp:function:: const char *getViewTransformNameByIndex(int i) const noexcept
.. cpp:function:: void addViewTransform(const ConstViewTransformRcPtr &viewTransform)
.. cpp:function:: ConstViewTransformRcPtr getDefaultSceneToDisplayViewTransform() const
The default transform to use for scene-referred to
display-referred reference space conversions is the first
scene-referred view transform listed in that section of the
config (the one with the lowest index). Returns a null
ConstTransformRcPtr if there isn’t one.
.. cpp:function:: void clearViewTransforms()
.. cpp:function:: ConstFileRulesRcPtr getFileRules() const noexcept
Get read-only version of the file rules.
.. cpp:function:: void setFileRules(ConstFileRulesRcPtr fileRules)
Set file rules.
**Note**
The argument is cloned.
.. cpp:function:: const char *getColorSpaceFromFilepath(const char *filePath) const
Get the color space of the first rule that matched filePath.
.. cpp:function:: const char *getColorSpaceFromFilepath(const char *filePath, size_t &ruleIndex) const
Most applications will use the preceding method, but this
method may be used for applications that want to know which
was the highest priority rule to match filePath. The
:cpp:func:```FileRules::getNumCustomKeys`_`` and custom keys
methods may then be used to get additional information about
the matching rule.
.. cpp:function:: bool filepathOnlyMatchesDefaultRule(const char *filePath) const
Returns true if the only rule matched by filePath is the
default rule. This is a convenience method for applications
that want to require the user to manually choose a color
space when strictParsing is true and no other rules match.
.. cpp:function:: ConstProcessorRcPtr getProcessor(const ConstContextRcPtr &context, const ConstColorSpaceRcPtr &srcColorSpace, const ConstColorSpaceRcPtr &dstColorSpace) const
.. cpp:function:: ConstProcessorRcPtr getProcessor(const ConstColorSpaceRcPtr &srcColorSpace, const ConstColorSpaceRcPtr &dstColorSpace) const
.. cpp:function:: ConstProcessorRcPtr getProcessor(const char *srcColorSpaceName, const char *dstColorSpaceName) const
**Note**
Names can be colorspace name, role name, or a combination
of both.
.. cpp:function:: ConstProcessorRcPtr getProcessor(const ConstContextRcPtr &context, const char *srcColorSpaceName, const char *dstColorSpaceName) const
.. cpp:function:: ConstProcessorRcPtr getProcessor(const char *srcColorSpaceName, const char *display, const char *view) const
.. cpp:function:: ConstProcessorRcPtr getProcessor(const ConstContextRcPtr &context, const char *srcColorSpaceName, const char *display, const char *view) const
.. cpp:function:: ConstProcessorRcPtr getProcessor(const ConstTransformRcPtr &transform) const
Get the processor for the specified transform.
Not often needed, but will allow for the re-use of atomic
OCIO functionality (such as to apply an individual LUT file).
.. cpp:function:: ConstProcessorRcPtr getProcessor(const ConstTransformRcPtr &transform, TransformDirection direction) const
.. cpp:function:: ConstProcessorRcPtr getProcessor(const ConstContextRcPtr &context, const ConstTransformRcPtr &transform, TransformDirection direction) const
.. cpp:function:: Config(const Config&) = delete
.. cpp:function:: `Config`_ &operator=(const Config&) = delete
.. cpp:function:: ~Config()
-[ Public Static Functions ]-
.. cpp:function:: ConfigRcPtr Create()
Create a default empty configuration.
.. cpp:function:: ConstConfigRcPtr CreateRaw()
Create a fall-back config.
This may be useful to allow client apps to launch in cases
when the supplied config path is not loadable.
.. cpp:function:: ConstConfigRcPtr CreateFromEnv()
Create a configuration using the OCIO environment variable.
If the variable is missing or empty, returns the same result
as `Config::CreateRaw`_ .
.. cpp:function:: ConstConfigRcPtr CreateFromFile(const char *filename)
Create a configuration using a specific config file.
.. cpp:function:: ConstConfigRcPtr CreateFromStream(std::istream &istream)
Create a configuration using a stream.
.. cpp:function:: ConstProcessorRcPtr GetProcessorFromConfigs(const ConstConfigRcPtr &srcConfig, const char *srcColorSpaceName, const ConstConfigRcPtr &dstConfig, const char *dstColorSpaceName)
Get a processor to convert between color spaces in two
separate configs.
This relies on both configs having the aces_interchange role
(when srcName is scene-referred) or the role
cie_xyz_d65_interchange (when srcName is display-referred)
defined. An exception is thrown if that is not the case.
.. cpp:function:: ConstProcessorRcPtr GetProcessorFromConfigs(const ConstContextRcPtr &srcContext, const ConstConfigRcPtr &srcConfig, const char *srcColorSpaceName, const ConstContextRcPtr &dstContext, const ConstConfigRcPtr &dstConfig, const char *dstColorSpaceName)
.. cpp:function:: ConstProcessorRcPtr GetProcessorFromConfigs(const ConstConfigRcPtr &srcConfig, const char *srcColorSpaceName, const char *srcInterchangeName, const ConstConfigRcPtr &dstConfig, const char *dstColorSpaceName, const char *dstInterchangeName)
The srcInterchangeName and dstInterchangeName must refer to a
pair of color spaces in the two configs that are the same. A
role name may also be used.
.. cpp:function:: ConstProcessorRcPtr GetProcessorFromConfigs(const ConstContextRcPtr &srcContext, const ConstConfigRcPtr &srcConfig, const char *srcColorSpaceName, const char *srcInterchangeName, const ConstContextRcPtr &dstContext, const ConstConfigRcPtr &dstConfig, const char *dstColorSpaceName, const char *dstInterchangeName)
.. group-tab:: Python
.. py:class:: PyOpenColorIO.Config
.. py:class:: ActiveColorSpaceIterator
.. py:class:: ActiveColorSpaceNameIterator
.. py:class:: ColorSpaceIterator
.. py:class:: ColorSpaceNameIterator
.. py:function:: CreateFromEnv() -> PyOpenColorIO.Config
.. py:function:: CreateFromFile(fileName: str) -> PyOpenColorIO.Config
.. py:function:: CreateFromStream(str: str) -> PyOpenColorIO.Config
.. py:function:: CreateRaw() -> PyOpenColorIO.Config
.. py:class:: DisplayIterator
.. py:class:: EnvironmentVarNameIterator
.. py:function:: GetProcessorFromConfigs(*args,**kwargs)
Overloaded function.
1. .. py:function:: GetProcessorFromConfigs(srcConfig: PyOpenColorIO.Config, srcColorSpaceName: str, dstConfig: PyOpenColorIO.Config, dstColorSpaceName: str) -> OpenColorIO_v2_0dev::Processor
2. .. py:function:: GetProcessorFromConfigs(srcContext: OpenColorIO_v2_0dev::Context, srcConfig: PyOpenColorIO.Config, srcColorSpaceName: str, dstContext: OpenColorIO_v2_0dev::Context, dstConfig: PyOpenColorIO.Config, dstColorSpaceName: str) -> OpenColorIO_v2_0dev::Processor
3. .. py:function:: GetProcessorFromConfigs(srcConfig: PyOpenColorIO.Config, srcColorSpaceName: str, srcInterchangeName: str, dstConfig: PyOpenColorIO.Config, dstColorSpaceName: str, dstInterchangeName: str) -> OpenColorIO_v2_0dev::Processor
4. .. py:function:: GetProcessorFromConfigs(srcContext: OpenColorIO_v2_0dev::Context, srcConfig: PyOpenColorIO.Config, srcColorSpaceName: str, srcInterchangeName: str, dstContext: OpenColorIO_v2_0dev::Context, dstConfig: PyOpenColorIO.Config, dstColorSpaceName: str, dstInterchangeName: str) -> OpenColorIO_v2_0dev::Processor
.. py:class:: LookIterator
.. py:class:: LookNameIterator
.. py:class:: RoleColorSpaceIterator
.. py:class:: RoleNameIterator
.. py:class:: SearchPathIterator
.. py:class:: SharedViewIterator
.. py:class:: ViewForColorSpaceIterator
.. py:class:: ViewIterator
.. py:class:: ViewTransformIterator
.. py:class:: ViewTransformNameIterator
.. py:method:: addColorSpace(self: PyOpenColorIO.Config, colorSpace: OpenColorIO_v2_0dev::ColorSpace) -> None
.. py:method:: addDisplaySharedView(self: PyOpenColorIO.Config, display: str, view: str) -> None
.. py:function:: addDisplayView(*args,**kwargs)
Overloaded function.
1. addDisplayView(self: PyOpenColorIO.Config, display: str,
view: str, colorSpaceName: str, looks: str) -> None
2. addDisplayView(self: PyOpenColorIO.Config, display: str,
view: str, viewTransform: str, displayColorSpaceName:
str, looks: str, ruleName: str, description: str) -> None
.. py:method:: addEnvironmentVar(self: PyOpenColorIO.Config, name: str, defaultValue: str) -> None
.. py:method:: addLook(self: PyOpenColorIO.Config, look: OpenColorIO_v2_0dev::Look) -> None
.. py:method:: addSearchPath(self: PyOpenColorIO.Config, path: str) -> None
.. py:method:: addSharedView(self: PyOpenColorIO.Config, view: str, viewTransformName: str, colorSpaceName: str, looks: str, ruleName: str, description: str) -> None
.. py:method:: addViewTransform(self: PyOpenColorIO.Config, viewTransform: OpenColorIO_v2_0dev::ViewTransform) -> None
.. py:method:: clearColorSpaces(self: PyOpenColorIO.Config) -> None
.. py:method:: clearDisplays(self: PyOpenColorIO.Config) -> None
.. py:method:: clearEnvironmentVars(self: PyOpenColorIO.Config) -> None
.. py:method:: clearLooks(self: PyOpenColorIO.Config) -> None
.. py:method:: clearSearchPaths(self: PyOpenColorIO.Config) -> None
.. py:method:: clearViewTransforms(self: PyOpenColorIO.Config) -> None
.. py:method:: filepathOnlyMatchesDefaultRule(self: PyOpenColorIO.Config, filePath: str) -> bool
.. py:method:: getActiveDisplays(self: PyOpenColorIO.Config) -> str
.. py:method:: getActiveViews(self: PyOpenColorIO.Config) -> str
.. py:function:: getCacheID(*args,**kwargs)
Overloaded function.
1. getCacheID(self: PyOpenColorIO.Config) -> str
2. getCacheID(self: PyOpenColorIO.Config, context: OpenColorIO_v2_0dev::Context) -> str
.. py:function:: *getColorSpace(self: PyOpenColorIO.Config, name: str) -> OpenColorIO_v2_0dev::ColorSpace**
.. py:function:: getColorSpaceFromFilepath(*args,**kwargs)
Overloaded function.
1. getColorSpaceFromFilepath(self: PyOpenColorIO.Config,
filePath: str) -> str
2. getColorSpaceFromFilepath(self: PyOpenColorIO.Config,
filePath: str, ruleIndex: int) -> str
.. py:function:: getColorSpaceNames(*args,**kwargs)
Overloaded function.
1. getColorSpaceNames(self: PyOpenColorIO.Config, searchReferenceType: PyOpenColorIO.SearchReferenceSpaceType, visibility: PyOpenColorIO.ColorSpaceVisibility) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::Config>, 2, OpenColorIO_v2_0dev::SearchReferenceSpaceType, OpenColorIO_v2_0dev::ColorSpaceVisibility>
2. getColorSpaceNames(self: PyOpenColorIO.Config) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::Config>, 4>
.. py:function:: getColorSpaces(*args,**kwargs)
Overloaded function.
1. getColorSpaces(self: PyOpenColorIO.Config, category: str) -> OpenColorIO_v2_0dev::ColorSpaceSet
2. getColorSpaces(self: PyOpenColorIO.Config, searchReferenceType: PyOpenColorIO.SearchReferenceSpaceType, visibility: PyOpenColorIO.ColorSpaceVisibility) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::Config>, 3, OpenColorIO_v2_0dev::SearchReferenceSpaceType, OpenColorIO_v2_0dev::ColorSpaceVisibility>
3. getColorSpaces(self: PyOpenColorIO.Config) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::Config>, 5>
.. py:method:: getCurrentContext(self: PyOpenColorIO.Config) -> OpenColorIO_v2_0dev::Context
.. py:method:: getDefaultDisplay(self: PyOpenColorIO.Config) -> str
.. py:method:: getDefaultLumaCoefs(self: PyOpenColorIO.Config) -> List[float[3]]
.. py:method:: getDefaultSceneToDisplayViewTransform(self: PyOpenColorIO.Config) -> OpenColorIO_v2_0dev::ViewTransform
.. py:method:: getDefaultView(self: PyOpenColorIO.Config, display: str) -> str
.. py:method:: getDescription(self: PyOpenColorIO.Config) -> str
.. py:method:: getDisplayViewColorSpaceName(self: PyOpenColorIO.Config, display: str, view: str) -> str
.. py:method:: getDisplayViewDescription(self: PyOpenColorIO.Config, display: str, view: str) -> str
.. py:method:: getDisplayViewLooks(self: PyOpenColorIO.Config, display: str, view: str) -> str
.. py:method:: getDisplayViewRule(self: PyOpenColorIO.Config, display: str, view: str) -> str
.. py:method:: getDisplayViewTransformName(self: PyOpenColorIO.Config, display: str, view: str) -> str
.. py:method:: getDisplays(self: PyOpenColorIO.Config) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::Config>, 8>
.. py:method:: getEnvironmentMode(self: PyOpenColorIO.Config) -> PyOpenColorIO.EnvironmentMode
.. py:method:: getEnvironmentVarDefault(self: PyOpenColorIO.Config, name: str) -> str
.. py:method:: getEnvironmentVarNames(self: PyOpenColorIO.Config) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::Config>, 0>
.. py:method:: getFamilySeparator(self: PyOpenColorIO.Config) -> str
.. py:method:: getFileRules(self: PyOpenColorIO.Config) -> OpenColorIO_v2_0dev::FileRules
.. py:method:: getInactiveColorSpaces(self: PyOpenColorIO.Config) -> str
.. py:method:: getLook(self: PyOpenColorIO.Config, name: str) -> OpenColorIO_v2_0dev::Look
.. py:method:: getLookNames(self: PyOpenColorIO.Config) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::Config>, 12>
.. py:method:: getLooks(self: PyOpenColorIO.Config) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::Config>, 13>
.. py:method:: getMajorVersion(self: PyOpenColorIO.Config) -> int
.. py:method:: getMinorVersion(self: PyOpenColorIO.Config) -> int
.. py:function:: getProcessor(*args,**kwargs)
Overloaded function.
1. getProcessor(self: PyOpenColorIO.Config, srcColorSpace: OpenColorIO_v2_0dev::ColorSpace, dstColorSpace: OpenColorIO_v2_0dev::ColorSpace) -> OpenColorIO_v2_0dev::Processor
2. getProcessor(self: PyOpenColorIO.Config, context: OpenColorIO_v2_0dev::Context, srcColorSpace: OpenColorIO_v2_0dev::ColorSpace, dstColorSpace: OpenColorIO_v2_0dev::ColorSpace) -> OpenColorIO_v2_0dev::Processor
3. getProcessor(self: PyOpenColorIO.Config, srcColorSpaceName: str, dstColorSpaceName: str) -> OpenColorIO_v2_0dev::Processor
4. getProcessor(self: PyOpenColorIO.Config, context: OpenColorIO_v2_0dev::Context, srcColorSpaceName: str, dstColorSpaceName: str) -> OpenColorIO_v2_0dev::Processor
5. getProcessor(self: PyOpenColorIO.Config, srcColorSpaceName: str, display: str, view: str) -> OpenColorIO_v2_0dev::Processor
6. getProcessor(self: PyOpenColorIO.Config, context: OpenColorIO_v2_0dev::Context, srcColorSpaceName: str, display: str, view: str) -> OpenColorIO_v2_0dev::Processor
7. getProcessor(self: PyOpenColorIO.Config, transform: PyOpenColorIO.Transform) -> OpenColorIO_v2_0dev::Processor
8. getProcessor(self: PyOpenColorIO.Config, transform: PyOpenColorIO.Transform, direction: PyOpenColorIO.TransformDirection) -> OpenColorIO_v2_0dev::Processor
9. getProcessor(self: PyOpenColorIO.Config, context: OpenColorIO_v2_0dev::Context, transform: PyOpenColorIO.Transform, direction: PyOpenColorIO.TransformDirection) -> OpenColorIO_v2_0dev::Processor
.. py:method:: getRoleNames(self: PyOpenColorIO.Config) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::Config>, 6>
.. py:method:: getRoles(self: PyOpenColorIO.Config) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::Config>, 7>
.. py:method:: getSearchPath(self: PyOpenColorIO.Config) -> str
.. py:method:: getSearchPaths(self: PyOpenColorIO.Config) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::Config>, 1>
.. py:method:: getSharedViews(self: PyOpenColorIO.Config) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::Config>, 9>
.. py:method:: getViewTransform(self: PyOpenColorIO.Config, name: str) -> OpenColorIO_v2_0dev::ViewTransform
.. py:method:: getViewTransformNames(self: PyOpenColorIO.Config) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::Config>, 14>
.. py:method:: getViewTransforms(self: PyOpenColorIO.Config) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::Config>, 15>
.. py:method:: getViewingRules(self: PyOpenColorIO.Config) -> OpenColorIO_v2_0dev::ViewingRules
.. py:function:: getViews(*args,**kwargs)
Overloaded function.
1. getViews(self: PyOpenColorIO.Config, display: str) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::Config>, 10, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >
2. getViews(self: PyOpenColorIO.Config, display: str, colorSpaceName: str) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::Config>, 11, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >
.. py:method:: getWorkingDir(self: PyOpenColorIO.Config) -> str
.. py:method:: hasRole(self: PyOpenColorIO.Config, role: str) -> bool
.. py:method:: isColorSpaceUsed(self: PyOpenColorIO.Config, name: str) -> bool
.. py:method:: isStrictParsingEnabled(self: PyOpenColorIO.Config) -> bool
.. py:method:: loadEnvironment(self: PyOpenColorIO.Config) -> None
.. py:method:: parseColorSpaceFromString(self: PyOpenColorIO.Config, str: str) -> str
.. py:method:: removeColorSpace(self: PyOpenColorIO.Config, name: str) -> None
.. py:method:: removeDisplayView(self: PyOpenColorIO.Config, display: str, view: str) -> None
.. py:method:: removeSharedView(self: PyOpenColorIO.Config, view: str) -> None
.. py:method:: sanityCheck(self: PyOpenColorIO.Config) -> None**
.. py:function:: serialize(*args,**kwargs)
Overloaded function.
1. serialize(self: PyOpenColorIO.Config, fileName: str) -> None
2. serialize(self: PyOpenColorIO.Config) -> str
.. py:method:: setActiveDisplays(self: PyOpenColorIO.Config, displays: str) -> None
.. py:method:: setActiveViews(self: PyOpenColorIO.Config, views: str) -> None
.. py:method:: setDefaultLumaCoefs(self: PyOpenColorIO.Config, rgb: List[float[3]]) -> None
.. py:method:: setDescription(self: PyOpenColorIO.Config, description: str) -> None
.. py:method:: setEnvironmentMode(self: PyOpenColorIO.Config, mode: PyOpenColorIO.EnvironmentMode) -> None
.. py:method:: setFamilySeparator(self: PyOpenColorIO.Config, separator: str) -> None
.. py:method:: setFileRules(self: PyOpenColorIO.Config, fileRules: OpenColorIO_v2_0dev::FileRules) -> None
.. py:method:: setInactiveColorSpaces(self: PyOpenColorIO.Config, inactiveColorSpaces: str) -> None
.. py:method:: setMajorVersion(self: PyOpenColorIO.Config, major: int) -> None
.. py:method:: setMinorVersion(self: PyOpenColorIO.Config, minor: int) -> None
.. py:method:: setRole(self: PyOpenColorIO.Config, role: str, colorSpaceName: str) -> None
.. py:method:: setSearchPath(self: PyOpenColorIO.Config, path: str) -> None
.. py:method:: setViewingRules(self: PyOpenColorIO.Config, ViewingRules: OpenColorIO_v2_0dev::ViewingRules) -> None
.. py:method:: setWorkingDir(self: PyOpenColorIO.Config, dirName: str) -> None
.. py:method:: upgradeToLatestVersion(self: PyOpenColorIO.Config) -> None
-116
View File
@@ -1,116 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Context
*******
.. CAUTION::
API Docs are a work in progress, expect them to improve over time.
**class Context**
.. tabs::
.. group-tab:: C++
.. cpp:function:: ContextRcPtr createEditableCopy() const
.. cpp:function:: const char *getCacheID() const
.. cpp:function:: void setSearchPath(const char *path)
.. cpp:function:: const char *getSearchPath() const
.. cpp:function:: int getNumSearchPaths() const
.. cpp:function:: const char *getSearchPath(int index) const
.. cpp:function:: void clearSearchPaths()
.. cpp:function:: void addSearchPath(const char *path)
.. cpp:function:: void setWorkingDir(const char *dirname)
.. cpp:function:: const char *getWorkingDir() const
.. cpp:function:: void setStringVar(const char *name, const char *value)
.. cpp:function:: const char *getStringVar(const char *name) const
.. cpp:function:: int getNumStringVars() const
.. cpp:function:: const char *getStringVarNameByIndex(int index) const
.. cpp:function:: void clearStringVars()
.. cpp:function:: void setEnvironmentMode(EnvironmentMode mode)
.. cpp:function:: EnvironmentMode getEnvironmentMode() const
.. cpp:function:: void loadEnvironment()
Seed all string vars with the current environment.
.. cpp:function:: const char *resolveStringVar(const char *val) const
Do a string lookup. Do a file lookup.
Evaluate the specified variable (as needed). Will not throw
exceptions.
.. cpp:function:: const char *resolveFileLocation(const char *filename) const
Do a file lookup. Do a file lookup.
Evaluate all variables (as needed). Also, walk the full search
path until the file is found. If the filename cannot be found,
an exception will be thrown.
.. cpp:function:: ~Context()
-[ Public Static Functions ]-
.. cpp:function:: ContextRcPtr Create()
.. group-tab:: Python
.. py:class:: PyOpenColorIO.Context
.. py:class:: SearchPathIterator
.. py:class:: StringVarIterator
.. py:class:: StringVarNameIterator
.. py:method:: addSearchPath(self: PyOpenColorIO.Context, path: str) -> None
.. py:method:: clearSearchPaths(self: PyOpenColorIO.Context) -> None
.. py:method:: clearStringVars(self: PyOpenColorIO.Context) -> None
.. py:method:: getCacheID(self: PyOpenColorIO.Context) -> str
.. py:method:: getEnvironmentMode(self: PyOpenColorIO.Context) -> PyOpenColorIO.EnvironmentMode
.. py:method:: getSearchPath(self: PyOpenColorIO.Context) -> str
.. py:method:: getSearchPaths(self: PyOpenColorIO.Context) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::Context>, 2>
.. py:method:: getStringVars(self: PyOpenColorIO.Context) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::Context>, 1>
.. py:method:: getWorkingDir(self: PyOpenColorIO.Context) -> str
.. py:method:: loadEnvironment(self: PyOpenColorIO.Context) -> None
.. py:method:: resolveFileLocation(self: PyOpenColorIO.Context, fileName: str) -> str
.. py:method:: resolveStringVar(self: PyOpenColorIO.Context, value: str) -> str
.. py:method:: setEnvironmentMode(self: PyOpenColorIO.Context, mode: PyOpenColorIO.EnvironmentMode) -> None
.. py:method:: setSearchPath(self: PyOpenColorIO.Context, path: str) -> None
.. py:method:: setWorkingDir(self: PyOpenColorIO.Context, dirName: str) -> None
-107
View File
@@ -1,107 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
CPUProcessor
************
.. CAUTION::
API Docs are a work in progress, expect them to improve over time.
**class CPUProcessor**
.. tabs::
.. group-tab:: C++
.. cpp:function:: bool isNoOp() const
The in and out bit-depths must be equal for isNoOp to be true.
.. cpp:function:: bool isIdentity() const
Equivalent to isNoOp from the underlying Processor, i.e., it
ignores in/out bit-depth differences.
.. cpp:function:: bool hasChannelCrosstalk() const
.. cpp:function:: const char *getCacheID() const
.. cpp:function:: BitDepth getInputBitDepth() const
Bit-depth of the input pixel buffer.
.. cpp:function:: BitDepth getOutputBitDepth() const
Bit-depth of the output pixel buffer.
.. cpp:function:: DynamicPropertyRcPtr getDynamicProperty(DynamicPropertyType type)
const**
Refer to `GPUProcessor::getDynamicProperty`_.
.. cpp:function:: void apply(ImageDesc &imgDesc) const
Apply to an image with any kind of channel ordering while
respecting the input and output bit-depths.
.. cpp:function:: void apply(const ImageDesc &srcImgDesc, ImageDesc &dstImgDesc)
const**
.. cpp:function:: void applyRGB(float *pixel) const
Apply to a single pixel respecting that the input and output
bit-depths be 32-bit float and the image buffer be packed
RGB/RGBA.
**Note**
This is not as efficient as applying to an entire image at
once. If you are processing multiple pixels, and have the
flexibility, use the above function instead.
.. cpp:function:: void applyRGBA(float *pixel) const
.. cpp:function:: ~CPUProcessor()**
.. group-tab:: Python
.. py:class:: PyOpenColorIO.CPUProcessor
.. py:function:: apply(*args,**kwargs)
Overloaded function.
1. .. py:function:: apply(self: PyOpenColorIO.CPUProcessor, imgDesc: OpenColorIO_v2_0dev::PyImageDesc) -> None
2. .. py:function:: apply(self: PyOpenColorIO.CPUProcessor, srcImgDesc: OpenColorIO_v2_0dev::PyImageDesc, dstImgDesc: OpenColorIO_v2_0dev::PyImageDesc) -> None
.. py:function:: applyRGB(*args,**kwargs)
Overloaded function.
1. .. py:function:: applyRGB(self: PyOpenColorIO.CPUProcessor, pixel: buffer) buffer
2. .. py:function:: applyRGB(self: PyOpenColorIO.CPUProcessor, pix List[float]) -> List[float]
.. py:function:: applyRGBA(*args,**kwargs)
Overloaded function.
1. .. py:function:: applyRGBA(self: PyOpenColorIO.CPUProcessor, pixel: buffer) -> buffer
2. .. py:function:: applyRGBA(self: PyOpenColorIO.CPUProcessor, pixel: List[float]) -> List[float]
.. py:method:: getCacheID(self: PyOpenColorIO.CPUProcessor) -> str
.. py:method:: getDynamicProperty(self: PyOpenColorIO.CPUProcessor, type: PyOpenColorIO.DynamicPropertyType) -> `PyOpenColorIO.DynamicProperty`_
.. py:method:: getInputBitDepth(self: PyOpenColorIO.CPUProcessor) -> PyOpenColorIO.BitDepth
.. py:method:: getOutputBitDepth(self: PyOpenColorIO.CPUProcessor) -> PyOpenColorIO.BitDepth
.. py:method:: hasChannelCrosstalk(self: PyOpenColorIO.CPUProcessor) -> bool
.. py:method:: isIdentity(self: PyOpenColorIO.CPUProcessor) -> bool
.. py:method:: isNoOp(self: PyOpenColorIO.CPUProcessor) -> bool
-47
View File
@@ -1,47 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
DynamicProperty
***************
.. CAUTION::
API Docs are a work in progress, expect them to improve over time.
**class DynamicProperty**
Allows transform parameter values to be set on-the-fly (after
finalization). For example, to modify the exposure in a viewport.
.. tabs::
.. group-tab:: C++
.. cpp:function:: DynamicPropertyType getType() const = 0
.. cpp:function:: DynamicPropertyValueType getValueType() const = 0
.. cpp:function:: double getDoubleValue() const = 0
.. cpp:function:: void setValue(double value) = 0
.. cpp:function:: bool isDynamic() const = 0
.. cpp:function:: DynamicProperty &operator=(const DynamicProperty&) = delete
.. cpp:function:: ~DynamicProperty()
.. group-tab:: Python
.. py:class:: PyOpenColorIO.DynamicProperty
.. py:method:: getDoubleValue(self: PyOpenColorIO.DynamicProperty) -> float
.. py:method:: getType(self: PyOpenColorIO.DynamicProperty) -> PyOpenColorIO.DynamicPropertyType
.. py:method:: getValueType(self: PyOpenColorIO.DynamicProperty) -> PyOpenColorIO.DynamicPropertyValueType
.. py:method:: isDynamic(self: PyOpenColorIO.DynamicProperty) -> bool
.. py:method:: setValue(self: PyOpenColorIO.DynamicProperty, value: float) -> None
-239
View File
@@ -1,239 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
FileRules
*********
.. CAUTION::
API Docs are a work in progress, expect them to improve over time.
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 :cpp:func:`FileRules::insertPathSearchRule`.
It has the key:
* name: Must be "ColorSpaceNamePathSearch".
Default Rule: The file_rules must always end with this rule. If no prior rules match,
this rule specifies the color space applications will use.
See :cpp:func:`FileRules::setDefaultRuleColorSpace`.
It has the keys:
* name: must be "Default".
* colorspace : Color space name to be returned.
Custom string keys and associated string values may be used to convey app or
workflow-specific information, e.g. whether the color space should be left as is
or converted into a working space.
Getters and setters are using the rule position, they will throw if the position is not
valid. If the rule at the specified position does not implement the requested property
getter will return NULL and setter will throw.
**class FileRules**
.. tabs::
.. group-tab:: C++
.. cpp:function:: FileRulesRcPtr createEditableCopy() const
The method clones the content decoupling the two instances.
.. cpp:function:: size_t getNumEntries() const noexcept
Does include default rule. Result will be at least 1.
.. cpp:function:: size_t getIndexForRule(const char *ruleName) const
Get the index from the rule name.
.. cpp:function:: const char *getName(size_t ruleIndex) const
Get name of the rule.
.. cpp:function:: const char *getPattern(size_t ruleIndex) const
Setting pattern will erase regex.
.. cpp:function:: void setPattern(size_t ruleIndex, const char *pattern)
.. cpp:function:: const char *getExtension(size_t ruleIndex) const
Setting extension will erase regex.
.. cpp:function:: void setExtension(size_t ruleIndex, const char *extension)
.. cpp:function:: const char *getRegex(size_t ruleIndex) const
Setting a regex will erase pattern & extension.
.. cpp:function:: void setRegex(size_t ruleIndex, const char *regex)
.. cpp:function:: const char *getColorSpace(size_t ruleIndex) const
Set the rule’s color space (may also be a role).
.. cpp:function:: void setColorSpace(size_t ruleIndex, const char *colorSpace)
.. cpp:function:: size_t getNumCustomKeys(size_t ruleIndex) const
Get number of key/value pairs.
.. cpp:function:: const char *getCustomKeyName(size_t ruleIndex, size_t key) const
Get name of key.
.. cpp:function:: const char *getCustomKeyValue(size_t ruleIndex, size_t key) const
Get value for the key.
.. cpp:function:: void setCustomKey(size_t ruleIndex, const char *key, const char *value)
Adds a key/value or replace value if key exists. Setting a NULL
or an empty value will erase the key.
.. cpp:function:: void insertRule(size_t ruleIndex, const char *name, const char *colorSpace, const char *pattern, const char *extension)
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 `FileRules::setDefaultRuleColorSpace`_ ).
* ”ColorSpaceNamePathSearch” is also a reserved name (see
`FileRules::insertPathSearchRule`_ ).
Will throw if ruleIndex is not less than
`FileRules::getNumEntries`_ .
.. cpp:function:: void insertRule(size_t ruleIndex, const char *name, const char *colorSpace, const char *regex)
.. cpp:function:: void insertPathSearchRule(size_t ruleIndex)
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).
.. cpp:function:: void setDefaultRuleColorSpace(const char *colorSpace)
Helper function to set the color space for the default rule.
.. cpp:function:: void removeRule(size_t ruleIndex)
.. cpp:function:: Note
Default rule can’t be removed. Will throw if ruleIndex + 1 is
not less than `FileRules::getNumEntries`_ .
.. cpp:function:: void increaseRulePriority(size_t ruleIndex)
Move a rule closer to the start of the list by one position.
.. cpp:function:: void decreaseRulePriority(size_t ruleIndex)
Move a rule closer to the end of the list by one position.
.. cpp:function:: FileRules(const FileRules&) = delete
.. cpp:function:: `FileRules`_ &operator=(const FileRules&) = delete
.. cpp:function:: ~FileRules()
-[ Public Static Functions ]-
.. cpp:function:: FileRulesRcPtr Create()
Creates FileRules for a Config. File rules will contain the
default rule using the default role. The default rule cannot be
removed.
.. group-tab:: Python
.. py:method:: decreaseRulePriority(self: PyOpenColorIO.FileRules, ruleIndex: int) -> None
.. py:method:: getColorSpace(self: PyOpenColorIO.FileRules, ruleIndex: int) -> str
.. py:method:: getCustomKeyName(self: PyOpenColorIO.FileRules, ruleIndex: int, key: int) -> str
.. py:method:: getCustomKeyValue(self: PyOpenColorIO.FileRules, ruleIndex: int, key: int) -> str
.. py:method:: getExtension(self: PyOpenColorIO.FileRules, ruleIndex: int) -> str
.. py:method:: getIndexForRule(self: PyOpenColorIO.FileRules, ruleName: str) -> int
.. py:method:: getName(self: PyOpenColorIO.FileRules, ruleIndex: int) -> str
.. py:method:: getNumCustomKeys(self: PyOpenColorIO.FileRules, ruleIndex: int) -> int
.. py:method:: getNumEntries(self: PyOpenColorIO.FileRules) -> int
.. py:method:: getPattern(self: PyOpenColorIO.FileRules, ruleIndex: int) -> str
.. py:method:: getRegex(self: PyOpenColorIO.FileRules, ruleIndex: int) -> str
.. py:method:: increaseRulePriority(self: PyOpenColorIO.FileRules, ruleIndex: int) -> None
.. py:method:: insertPathSearchRule(self: PyOpenColorIO.FileRules, ruleIndex: int) -> None
.. py:function:: insertRule(*args,**kwargs)
Overloaded function.
1. .. py:function:: insertRule(self: PyOpenColorIO.FileRules, ruleIndex: int, name: str, colorSpace: str, pattern: str, extension: str) -> None
2. .. py:function:: insertRule(self: PyOpenColorIO.FileRules, ruleIndex: int, name: str, colorSpace: str, regex: str) -> None
.. py:method:: removeRule(self: PyOpenColorIO.FileRules, ruleIndex: int) -> None
.. py:method:: setColorSpace(self: PyOpenColorIO.FileRules, ruleIndex: int, colorSpace: str) -> None
.. py:method:: setCustomKey(self: PyOpenColorIO.FileRules, ruleIndex: int, key: str, value: str) -> None
.. py:method:: setDefaultRuleColorSpace(self: PyOpenColorIO.FileRules, colorSpace: str) -> None
.. py:method:: setExtension(self: PyOpenColorIO.FileRules, ruleIndex: int, extension: str) -> None
.. py:method:: setPattern(self: PyOpenColorIO.FileRules, ruleIndex: int, pattern: str) -> None
.. py:method:: setRegex(self: PyOpenColorIO.FileRules, ruleIndex: int, regex: str) -> None
-106
View File
@@ -1,106 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
FormatMetadata
**************
.. CAUTION::
API Docs are a work in progress, expect them to improve over time.
**class FormatMetadata**
The 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. It contains:
* A name string (e.g. “Description”).
* A value string (e.g. “updated viewing LUT”).
* A list of attributes (name, value) string pairs (e.g. “version”,
“1.5”).
* And a list of child sub-elements, which are also objects
implementing FormatMetadata.
.. tabs::
.. group-tab:: C++
.. cpp:function:: const char *getName() const = 0
.. cpp:function:: void setName(const char*) = 0
.. cpp:function:: const char *getValue() const = 0
.. cpp:function:: void setValue(const char*) = 0
.. cpp:function:: int getNumAttributes() const = 0
.. cpp:function:: const char *getAttributeName(int i) const = 0
.. cpp:function:: const char *getAttributeValue(int i) const = 0
.. cpp:function:: void addAttribute(const char *name, const char *value) = 0
Add an attribute with a given name and value. If an attribute
with the same name already exists, the value is replaced.
.. cpp:function:: int getNumChildrenElements() const = 0
.. cpp:function:: const `FormatMetadata`_ &getChildElement(int i) const = 0
.. cpp:function:: `FormatMetadata`_ &getChildElement(int i) = 0
.. cpp:function:: `FormatMetadata`_ &addChildElement(const char *name, const char *value) = 0
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. Return a reference to the added element.
.. cpp:function:: void clear() = 0
.. cpp:function:: `FormatMetadata`_ &operator=(const FormatMetadata &rhs) = 0
.. cpp:function:: FormatMetadata(const FormatMetadata &rhs) = delete
.. cpp:function:: ~FormatMetadata()
.. group-tab:: Python
.. py:class:: PyOpenColorIO.FormatMetadata
.. py:class:: AttributeIterator
.. py:class:: AttributeNameIterator
.. py:class:: ChildElementIterator
.. py:class:: ConstChildElementIterator
.. py:method:: addChildElement(self: PyOpenColorIO.FormatMetadata, name: str, value: str) -> `PyOpenColorIO.FormatMetadata`_
.. py:method:: clear(self: PyOpenColorIO.FormatMetadata) -> None
.. py:method:: getAttributes(self: PyOpenColorIO.FormatMetadata) -> OpenColorIO_v2_0dev::PyIterator<OpenColorIO_v2_0dev::FormatMetadata const&, 1>
.. py:function:: getChildElements(*args,**kwargs)
Overloaded function.
1. .. py:function:: getChildElements(self: PyOpenColorIO.FormatMetadata) -> OpenColorIO_v2_0dev::PyIterator<OpenColorIO_v2_0dev::FormatMetadata const&, 2>
2. .. py:function:: getChildElements(self: PyOpenColorIO.FormatMetadata) -> OpenColorIO_v2_0dev::PyIterator<OpenColorIO_v2_0dev::FormatMetadata&, 3>
.. py:method:: getName(self: PyOpenColorIO.FormatMetadata) -> str
.. py:method:: getValue(self: PyOpenColorIO.FormatMetadata) -> str
.. py:method:: setName(self: PyOpenColorIO.FormatMetadata, name: str) -> None
.. py:method:: setValue(self: PyOpenColorIO.FormatMetadata, value: str) -> None
-69
View File
@@ -1,69 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
GPUProcessor
************
.. CAUTION::
API Docs are a work in progress, expect them to improve over time.
**class GPUProcessor**
.. tabs::
.. group-tab:: C++
.. cpp:function:: bool isNoOp() const
.. cpp:function:: bool hasChannelCrosstalk() const
.. cpp:function:: const char *getCacheID() const
.. cpp:function:: DynamicPropertyRcPtr getDynamicProperty(DynamicPropertyType type) const
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 ones for
which dynamic has been enabled will be controlled.
**Note**
The dynamic properties in this object are decoupled from the
ones in the :cpp:class:``Processor`` it was generated from.
.. cpp:function:: void extractGpuShaderInfo(GpuShaderDescRcPtr &shaderDesc) const
Extract & Store the shader information to implement the color
processing.
.. cpp:function:: void extractGpuShaderInfo(GpuShaderCreatorRcPtr &shaderCreator) const
Extract the shader information using a custom GpuShaderCreator
class.
.. cpp:function:: ~GPUProcessor()
.. group-tab:: Python
.. py:class:: PyOpenColorIO.GPUProcessor
.. py:function:: extractGpuShaderInfo(*args,**kwargs)
Overloaded function.
1. .. py:function:: extractGpuShaderInfo(self: PyOpenColorIO.GPUProcessor, shaderDesc: OpenColorIO_v2_0dev::GpuShaderDesc) -> None
2. .. py:function:: extractGpuShaderInfo(self: PyOpenColorIO.GPUProcessor, shaderCreator: OpenColorIO_v2_0dev::GpuShaderCreator) -> None
.. py:function:: getCacheID(self: PyOpenColorIO.GPUProcessor) -> str
.. py:function:: getDynamicProperty(self: PyOpenColorIO.GPUProcessor, type: PyOpenColorIO.DynamicPropertyType) -> `PyOpenColorIO.DynamicProperty`_
.. py:function:: hasChannelCrosstalk(self: PyOpenColorIO.GPUProcessor) -> bool
.. py:function:: isNoOp(self: PyOpenColorIO.GPUProcessor) -> bool
-187
View File
@@ -1,187 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
GpuShaderCreator
****************
.. CAUTION::
API Docs are a work in progress, expect them to improve over time.
**class GpuShaderCreator**
Inherit from the class to fully customize the implementation of a
GPU shader program from a color transformation.
When no customizations are needed then the
:cpp:class:`GpuShaderDesc` is a better choice.
Subclassed by OpenColorIO::GpuShaderDesc
.. tabs::
.. group-tab:: C++
.. cpp:enum:: TextureType
*Values:*
.. cpp:enumerator:: TEXTURE_RED_CHANNEL
Only use the red channel of the texture.
.. cpp:enumerator:: TEXTURE_RGB_CHANNEL
**Public Functions**
.. cpp:function:: GpuShaderCreatorRcPtr clone() const = 0
.. cpp:function:: const char *getUniqueID() const noexcept
.. cpp:function:: void setUniqueID(const char *uid) noexcept
.. cpp:function:: GpuLanguage getLanguage() const noexcept
.. cpp:function:: void setLanguage(GpuLanguage lang) noexcept
Set the shader program language.
.. cpp:function:: const char *getFunctionName() const noexcept
.. cpp:function:: void setFunctionName(const char *name) noexcept
.. cpp:function:: const char *getPixelName() const noexcept
.. cpp:function:: void setPixelName(const char *name) noexcept
Set the pixel name variable holding the color values.
.. cpp:function:: const char *getResourcePrefix() const noexcept
**Note**
Some applications require that textures, uniforms, and helper
methods be uniquely named because several processor instances
could coexist.
.. cpp:function:: void setResourcePrefix(const char *prefix) noexcept
Set a prefix to the resource name.
.. cpp:function:: const char *getCacheID() const noexcept
.. cpp:function:: void begin(const char *uid)
Start to collect the shader data.
.. cpp:function:: void end()
End to collect the shader data.
.. cpp:function:: void setTextureMaxWidth(unsigned maxWidth) = 0
Some graphic cards could have 1D & 2D textures with size
limitations.
.. cpp:function:: unsigned getTextureMaxWidth() const noexcept = 0
.. cpp:function:: unsigned getNextResourceIndex() noexcept
To avoid texture/unform name clashes always append an increasing
number to the resource name.
.. cpp:function:: bool addUniform(const char *name, const DynamicPropertyRcPtr &value) = 0
.. cpp:function:: void addTexture(const char *textureName, const char *samplerName, const char *uid, unsigned width, unsigned height, TextureType channel, Interpolation interpolation, const float *values) = 0
.. cpp:function:: void add3DTexture(const char *textureName, const char *samplerName, const char *uid, unsigned edgelen, Interpolation interpolation, const float *values) = 0
.. cpp:function:: void addToDeclareShaderCode(const char *shaderCode)
.. cpp:function:: void addToHelperShaderCode(const char *shaderCode)
.. cpp:function:: void addToFunctionHeaderShaderCode(const char *shaderCode)
.. cpp:function:: void addToFunctionShaderCode(const char *shaderCode)
.. cpp:function:: void addToFunctionFooterShaderCode(const char *shaderCode)
.. cpp:function:: void createShaderText(const char *shaderDeclarations, const char *shaderHelperMethods, const char *shaderFunctionHeader, const char *shaderFunctionBody, const char *shaderFunctionFooter)
Create the OCIO shader program.
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.
**Note**
.. cpp:function:: void finalize()
.. cpp:function:: ~GpuShaderCreator()
.. group-tab:: Python
.. py:class:: TextureType
Members:
.. py:const:: TEXTURE_RED_CHANNEL = TextureType.TEXTURE_RED_CHANNEL
.. py:const:: TEXTURE_RGB_CHANNEL = TextureType.TEXTURE_RGB_CHANNEL
.. py:method:: add3DTexture(self: PyOpenColorIO.GpuShaderCreator, textureName: str, samplerName: str, uid: str, edgeLen: int, interpolation: PyOpenColorIO.Interpolation, values: float) -> None
.. py:method:: addTexture(self: PyOpenColorIO.GpuShaderCreator, textureName: str, samplerName: str, uid: str, width: int, height: int, channel: OpenColorIO_v2_0dev::GpuShaderCreator::TextureType, interpolation: PyOpenColorIO.Interpolation, values: float) -> None
.. py:method:: addToDeclareShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
.. py:method:: addToFunctionFooterShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
.. py:method:: addToFunctionHeaderShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
.. py:method:: addToFunctionShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
.. py:method:: addToHelperShaderCode(self: PyOpenColorIO.GpuShaderCreator, shaderCode: str) -> None
.. py:method:: addUniform(self: PyOpenColorIO.GpuShaderCreator, name: str, value: PyOpenColorIO.DynamicProperty) -> bool
.. py:method:: begin(self: PyOpenColorIO.GpuShaderCreator, uid: str) -> None
.. py:method:: clone(self: PyOpenColorIO.GpuShaderCreator) -> `PyOpenColorIO.GpuShaderCreator`_
.. py:method:: createShaderText(self: PyOpenColorIO.GpuShaderCreator, shaderDeclarations: str, shaderHelperMethods: str, shaderFunctionHeader: str, shaderFunctionBody: str, shaderFunctionFooter: str) -> None
.. py:method:: end(self: PyOpenColorIO.GpuShaderCreator) -> None
.. py:method:: finalize(self: PyOpenColorIO.GpuShaderCreator) -> None
.. py:method:: getCacheID(self: PyOpenColorIO.GpuShaderCreator) -> str
.. py:method:: getFunctionName(self: PyOpenColorIO.GpuShaderCreator) -> str
.. py:method:: getLanguage(self: PyOpenColorIO.GpuShaderCreator) -> str
.. py:method:: getNextResourceIndex(self: PyOpenColorIO.GpuShaderCreator) -> int
.. py:method:: getPixelName(self: PyOpenColorIO.GpuShaderCreator) -> str
.. py:method:: getResourcePrefix(self: PyOpenColorIO.GpuShaderCreator) -> str
.. py:method:: getTextureMaxWidth(self: PyOpenColorIO.GpuShaderCreator) -> int
.. py:method:: getUniqueID(self: PyOpenColorIO.GpuShaderCreator) -> str
.. py:method:: setFunctionName(self: PyOpenColorIO.GpuShaderCreator, name: str) -> None
.. py:method:: setLanguage(self: PyOpenColorIO.GpuShaderCreator, language: str) -> None
.. py:method:: setPixelName(self: PyOpenColorIO.GpuShaderCreator, name: str) -> None
.. py:method:: setResourcePrefix(self: PyOpenColorIO.GpuShaderCreator, prefix: str) -> None
.. py:method:: setTextureMaxWidth(self: PyOpenColorIO.GpuShaderCreator, maxWidth: int) -> None
.. py:method:: setUniqueID(self: PyOpenColorIO.GpuShaderCreator, uid: str) -> None
-269
View File
@@ -1,269 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
GpuShaderDesc
*************
.. CAUTION::
API Docs are a work in progress, expect them to improve over time.
TODO: Move to .rst
!rst::
GpuShaderDesc
*************
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 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 three potential scenarios are:
//
// 1. Instantiate the legacy shader description. The color processor
// is baked down to contain at most one 3D LUT and no 1D LUTs.
//
// This is the v1 behavior and will remain part of OCIO v2
// for backward compatibility.
//
OCIO::GpuShaderDescRcPtr shaderDesc
= OCIO::GpuShaderDesc::CreateLegacyShaderDesc(LUT3D_EDGE_SIZE);
//
// 2. 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();
//
// 3. 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_3);
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
**class GpuShaderDesc : public OpenColorIO::`GpuShaderCreator`_**
.. tabs::
.. group-tab:: C++
.. cpp:function:: GpuShaderCreatorRcPtr clone() const override
.. cpp:function:: unsigned getNumUniforms() const noexcept = 0
.. cpp:function:: void getUniform(unsigned index, const char *&name, DynamicPropertyRcPtr &value) const = 0
.. cpp:function:: unsigned getNumTextures() const noexcept = 0
.. cpp:function:: void getTexture(unsigned index, const char *&textureName, const char *&samplerName, const char *&uid, unsigned &width, unsigned &height, TextureType &channel, Interpolation &interpolation) const = 0
.. cpp:function:: void getTextureValues(unsigned index, const float *&values) const = 0
.. cpp:function:: unsigned getNum3DTextures() const noexcept = 0
.. cpp:function:: void get3DTexture(unsigned index, const char *&textureName, const char *&samplerName, const char *&uid, unsigned &edgelen, Interpolation &interpolation) const = 0
.. cpp:function:: void get3DTextureValues(unsigned index, const float *&values) const = 0**
.. cpp:function:: const char *getShaderText() const noexcept
Get the complete OCIO shader program.
.. cpp:function:: ~GpuShaderDesc()
-[ Public Static Functions ]-
.. cpp:function:: GpuShaderDescRcPtr CreateLegacyShaderDesc(unsigned edgelen)
Create the legacy shader description.
.. cpp:function:: GpuShaderDescRcPtr CreateShaderDesc()
Create the default shader description.
.. group-tab:: Python
.. py:class:: PyOpenColorIO.GpuShaderDesc
.. py:function:: CreateLegacyShaderDesc(edgeLen: int, language: PyOpenColorIO.GpuLanguage = GpuLanguage.GPU_LANGUAGE_UNKNOWN, functionName: str = 'OCIOMain', pixelName: str = 'outColor', resourcePrefix: str = 'ocio', uid: str = '') -> `PyOpenColorIO.GpuShaderDesc`_
.. py:function:: CreateShaderDesc(language: PyOpenColorIO.GpuLanguage = GpuLanguage.GPU_LANGUAGE_UNKNOWN, functionName: str = 'OCIOMain', pixelName: str = 'outColor', resourcePrefix: str = 'ocio', uid: str = '') -> `PyOpenColorIO.GpuShaderDesc`_
.. py:class:: Texture
**property channel**
**property height**
**property interpolation**
**property samplerName**
**property textureName**
**property uid**
**property width**
.. py:class:: Texture3D
**property edgeLen**
**property interpolation**
**property samplerName**
**property textureName**
**property uid**
.. py:class:: Texture3DIterator
.. py:class:: TextureIterator
.. py:class:: UniformIterator
.. py:method:: add3DTexture(self: PyOpenColorIO.GpuShaderDesc, textureName: str, samplerName: str, uid: str, edgeLen: int, interpolation: PyOpenColorIO.Interpolation, values: buffer) -> None
.. py:method:: addTexture(self: PyOpenColorIO.GpuShaderDesc, textureName: str, samplerName: str, uid: str, width: int, height: int, channel: PyOpenColorIO.GpuShaderCreator.TextureType, interpolation: PyOpenColorIO.Interpolation, values: buffer) -> None
.. py:method:: addUniform(self: PyOpenColorIO.GpuShaderDesc, name: str, value: PyOpenColorIO.DynamicProperty) -> bool
.. py:method:: get3DTextureValues(self: PyOpenColorIO.GpuShaderDesc, index: int) -> array
.. py:method:: get3DTextures(self: PyOpenColorIO.GpuShaderDesc) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::GpuShaderDesc>, 2>
.. py:method:: getNum3DTextures(self: PyOpenColorIO.GpuShaderDesc) -> int**
.. py:method:: getNumTextures(self: PyOpenColorIO.GpuShaderDesc) -> int**
.. py:method:: getTextureValues(self: PyOpenColorIO.GpuShaderDesc, index: int) -> array
.. py:method:: getTextures(self: PyOpenColorIO.GpuShaderDesc) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::GpuShaderDesc>, 1>
.. py:method:: getUniforms(self: PyOpenColorIO.GpuShaderDesc) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::GpuShaderDesc>, 0>
-96
View File
@@ -1,96 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
ImageDesc
*********
.. CAUTION::
API Docs are a work in progress, expect them to improve over time.
**class ImageDesc**
This is a light-weight wrapper around an image, that provides a
context for pixel access. This does NOT claim ownership of the
pixels or copy image data.
Subclassed by OpenColorIO::PackedImageDesc,
OpenColorIO::PlanarImageDesc
.. tabs::
.. group-tab:: C++
.. cpp:function:: ImageDesc()
.. cpp:function:: ~ImageDesc()
.. cpp:function:: void *getRData() const = 0
Get a pointer to the red channel of the first pixel.
.. cpp:function:: void *getGData() const = 0
Get a pointer to the green channel of the first pixel.
.. cpp:function:: void *getBData() const = 0
Get a pointer to the blue channel of the first pixel.
.. cpp:function:: void *getAData() const = 0
Get a pointer to the alpha channel of the first pixel or null as
alpha channel is optional.
.. cpp:function:: BitDepth getBitDepth() const = 0
Get the bit-depth.
.. cpp:function:: long getWidth() const = 0
Get the width to process (where x position starts at 0 and ends
at width-1).
.. cpp:function:: long getHeight() const = 0
Get the height to process (where y position starts at 0 and ends
at height-1).
.. cpp:function:: ptrdiff_t getXStrideBytes() const = 0
Get the step in bytes to find the same color channel of the next
pixel.
.. cpp:function:: ptrdiff_t getYStrideBytes() const = 0
Get the step in bytes to find the same color channel of the
pixel at the same position in the next line.
.. cpp:function:: bool isRGBAPacked() const = 0
Is the image buffer in packed mode with the 4 color channels?
(“Packed” here means that XStrideBytes is 4x the bytes per
channel, so it is more specific than simply any
PackedImageDesc.)
.. cpp:function:: bool isFloat() const = 0
Is the image buffer 32-bit float?
.. group-tab:: Python
.. py:method:: getBitDepth(self: PyOpenColorIO.ImageDesc) -> PyOpenColorIO.BitDepth
.. py:method:: getHeight(self: PyOpenColorIO.ImageDesc) -> int
.. py:method:: getWidth(self: PyOpenColorIO.ImageDesc) -> int
.. py:method:: getXStrideBytes(self: PyOpenColorIO.ImageDesc) -> int
.. py:method:: getYStrideBytes(self: PyOpenColorIO.ImageDesc) -> int
.. py:method:: isFloat(self: PyOpenColorIO.ImageDesc) -> bool
.. py:method:: isRGBAPacked(self: PyOpenColorIO.ImageDesc) -> bool
-73
View File
@@ -1,73 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Look
****
.. CAUTION::
API Docs are a work in progress, expect them to improve over time.
The *Look* is an 'artistic' image modification, in a specified image state.
The processSpace defines the ColorSpace the image is required to be in, for the math to apply correctly.
**class Look**
.. tabs::
.. group-tab:: C++
.. cpp:function:: LookRcPtr createEditableCopy() const
.. cpp:function:: const char *getName() const
.. cpp:function:: void setName(const char *name)
.. cpp:function:: const char *getProcessSpace() const
.. cpp:function:: void setProcessSpace(const char *processSpace)
.. cpp:function:: ConstTransformRcPtr getTransform() const
.. cpp:function:: void setTransform(const ConstTransformRcPtr &transform)
Setting a transform to a non-null call makes it allowed.
.. cpp:function:: ConstTransformRcPtr getInverseTransform() const
.. cpp:function:: void setInverseTransform(const ConstTransformRcPtr &transform)
Setting a transform to a non-null call makes it allowed.
.. cpp:function:: const char *getDescription() const
.. cpp:function:: void setDescription(const char *description)
.. cpp:function:: ~Look()
.. cpp:function:: LookRcPtr Create()
.. group-tab:: Python
.. py:method:: getDescription(self: PyOpenColorIO.Look) -> str
.. py:method:: getInverseTransform(self: PyOpenColorIO.Look) -> `PyOpenColorIO.Transform`_
.. py:method:: getName(self: PyOpenColorIO.Look) -> str
.. py:method:: getProcessSpace(self: PyOpenColorIO.Look) -> str
.. py:method:: getTransform(self: PyOpenColorIO.Look) -> `PyOpenColorIO.Transform`_
.. py:method:: setDescription(self: PyOpenColorIO.Look, description: str) -> None
.. py:method:: setInverseTransform(self: PyOpenColorIO.Look, transform: PyOpenColorIO.Transform) -> None
.. py:method:: setName(self: PyOpenColorIO.Look, name: str) -> None
.. py:method:: setProcessSpace(self: PyOpenColorIO.Look, processSpace: str) -> None
.. py:method:: setTransform(self: PyOpenColorIO.Look, transform: PyOpenColorIO.Transform) -> None
-118
View File
@@ -1,118 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
PackedImageDesc
***************
.. CAUTION::
API Docs are a work in progress, expect them to improve over time.
**class PackedImageDesc : public OpenColorIO::`ImageDesc`_**
All the constructors expect a pointer to packed image data (such as
rgbrgbrgb or rgbargbargba) starting at the first color channel of
the first pixel to process (which does not need to be the first
pixel of the image). The number of channels must be greater than or
equal to 3. If a 4th channel is specified, it is assumed to be
alpha information. Channels > 4 will be ignored.
**Note**
The methods assume the CPUProcessor bit-depth type for the data
pointer.
.. tabs::
.. group-tab:: C++
.. cpp:function:: PackedImageDesc(void *data, long width, long height, long numChannels)
**Note**
numChannels must be 3 (RGB) or 4 (RGBA).
.. cpp:function:: PackedImageDesc(void *data, long width, long height, long numChannels, BitDepth bitDepth, ptrdiff_t chanStrideBytes, ptrdiff_t xStrideBytes, ptrdiff_t yStrideBytes)
**Note**
numChannels must be 3 (RGB) or 4 (RGBA).
.. cpp:function:: PackedImageDesc(void *data, long width, long height, ChannelOrdering chanOrder)
.. cpp:function:: PackedImageDesc(void *data, long width, long height, ChannelOrdering chanOrder, BitDepth bitDepth, ptrdiff_t chanStrideBytes, ptrdiff_t xStrideBytes, ptrdiff_t yStrideBytes)
.. cpp:function:: ~PackedImageDesc()
.. cpp:function:: ChannelOrdering getChannelOrder() const
Get the channel ordering of all the pixels.
.. cpp:function:: BitDepth getBitDepth() const override
Get the bit-depth.
.. cpp:function:: void *getData() const
Get a pointer to the first color channel of the first pixel.
.. cpp:function:: void *getRData() const override
Get a pointer to the red channel of the first pixel.
.. cpp:function:: void *getGData() const override
Get a pointer to the green channel of the first pixel.
.. cpp:function:: void *getBData() const override
Get a pointer to the blue channel of the first pixel.
.. cpp:function:: void *getAData() const override
Get a pointer to the alpha channel of the first pixel or null as
alpha channel is optional.
.. cpp:function:: long getWidth() const override
Get the width to process (where x position starts at 0 and ends
at width-1).
.. cpp:function:: long getHeight() const override
Get the height to process (where y position starts at 0 and ends
at height-1).
.. cpp:function:: long getNumChannels() const
.. cpp:function:: ptrdiff_t getChanStrideBytes() const
.. cpp:function:: ptrdiff_t getXStrideBytes() const override
Get the step in bytes to find the same color channel of the next
pixel.
.. cpp:function:: ptrdiff_t getYStrideBytes() const override
Get the step in bytes to find the same color channel of the
pixel at the same position in the next line.
.. cpp:function:: bool isRGBAPacked() const override
Is the image buffer in packed mode with the 4 color channels?
(“Packed” here means that XStrideBytes is 4x the bytes per
channel, so it is more specific than simply any
PackedImageDesc.)
.. cpp:function:: bool isFloat() const override
Is the image buffer 32-bit float?
.. group-tab:: Python
.. py:method:: getChanStrideBytes(self: PyOpenColorIO.PackedImageDesc) -> int
.. py:method:: getChannelOrder(self: PyOpenColorIO.PackedImageDesc) -> PyOpenColorIO.ChannelOrdering
.. py:method:: getData(self: PyOpenColorIO.PackedImageDesc) -> array
.. py:method:: getNumChannels(self: PyOpenColorIO.PackedImageDesc) -> int
-100
View File
@@ -1,100 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
PlanarImageDesc
***************
.. CAUTION::
API Docs are a work in progress, expect them to improve over time.
**class PlanarImageDesc : public OpenColorIO::`ImageDesc`_**
All the constructors expect pointers to the specified image planes
(i.e. rrrr gggg bbbb) starting at the first color channel of the
first pixel to process (which need not be the first pixel of the
image). Pass NULL for aData if no alpha exists (r/g/bData must not
be NULL).
**Note**
The methods assume the CPUProcessor bit-depth type for the
R/G/B/A data pointers.
.. tabs::
.. group-tab:: C++
.. cpp:function:: PlanarImageDesc(void *rData, void *gData, void *bData, void *aData, long width, long height)
.. cpp:function:: PlanarImageDesc(void *rData, void *gData, void *bData, void *aData, long width, long height, BitDepth bitDepth, ptrdiff_t xStrideBytes, ptrdiff_t yStrideBytes)
Note that although PlanarImageDesc is powerful enough to also
describe all :cpp:class:``PackedImageDesc`` scenarios, it is
recommended to use a PackedImageDesc where possible since that
allows for additional optimizations.
.. cpp:function:: ~PlanarImageDesc()
.. cpp:function:: void *getRData() const override
Get a pointer to the red channel of the first pixel.
.. cpp:function:: void *getGData() const override
Get a pointer to the green channel of the first pixel.
.. cpp:function:: void *getBData() const override
Get a pointer to the blue channel of the first pixel.
.. cpp:function:: void *getAData() const override
Get a pointer to the alpha channel of the first pixel or null as
alpha channel is optional.
.. cpp:function:: BitDepth getBitDepth() const override
Get the bit-depth.
.. cpp:function:: long getWidth() const override
Get the width to process (where x position starts at 0 and ends
at width-1).
.. cpp:function:: long getHeight() const override
Get the height to process (where y position starts at 0 and ends
at height-1).
.. cpp:function:: ptrdiff_t getXStrideBytes() const override
Get the step in bytes to find the same color channel of the next
pixel.
.. cpp:function:: ptrdiff_t getYStrideBytes() const override
Get the step in bytes to find the same color channel of the
pixel at the same position in the next line.
.. cpp:function:: bool isRGBAPacked() const override
Is the image buffer in packed mode with the 4 color channels?
(“Packed” here means that XStrideBytes is 4x the bytes per
channel, so it is more specific than simply any
PackedImageDesc.)
.. cpp:function:: bool isFloat() const override
Is the image buffer 32-bit float?
.. group-tab:: Python
.. py:method:: getAData(self: PyOpenColorIO.PlanarImageDesc) -> array
.. py:method:: getBData(self: PyOpenColorIO.PlanarImageDesc) -> array
.. py:method:: getGData(self: PyOpenColorIO.PlanarImageDesc) -> array
.. py:method:: getRData(self: PyOpenColorIO.PlanarImageDesc) -> array
-240
View File
@@ -1,240 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Processor
*********
.. CAUTION::
API Docs are a work in progress, expect them to improve over time.
**class Processor**
The *Processor* represents a specific color transformation which is
the result of :cpp:func:``Config::getProcessor``.
.. tabs::
.. group-tab:: C++
.. cpp:function:: bool isNoOp() const
.. cpp:function:: bool hasChannelCrosstalk() const
True if the image transformation is non-separable. For example,
if a change in red may also cause a change in green or blue.
.. cpp:function:: const char *getCacheID() const
.. cpp:function:: ConstProcessorMetadataRcPtr getProcessorMetadata() const
The ProcessorMetadata contains technical information such as the
number of files and looks used in the processor.
.. cpp:function:: const `FormatMetadata`_ &getFormatMetadata() const
Get a FormatMetadata containing the top level metadata for the
processor. For a processor from a CLF file, this corresponds to
the ProcessList metadata.
.. cpp:function:: int getNumTransforms() const
Get the number of transforms that comprise the processor. Each
transform has a (potentially empty) FormatMetadata.
.. cpp:function:: const `FormatMetadata`_ &getTransformFormatMetadata(int index) const
Get a FormatMetadata containing the metadata for a transform
within the processor. For a processor from a CLF file, this
corresponds to the metadata associated with an individual
process node.
.. cpp:function:: GroupTransformRcPtr createGroupTransform() const
Return a GroupTransform that contains a copy of the transforms
that comprise the processor. (Changes to it will not modify the
original processor.)
.. cpp:function:: void write(const char *formatName, std::ostream &os) const
Write the transforms comprising the processor to the stream.
Writing (as opposed to Baking) is a lossless process. An
exception is thrown if the processor cannot be losslessly
written to the specified file format.
.. cpp:function:: DynamicPropertyRcPtr getDynamicProperty(DynamicPropertyType type) const
.. cpp:function:: bool hasDynamicProperty(DynamicPropertyType type) const
.. cpp:function:: ConstProcessorRcPtr getOptimizedProcessor(OptimizationFlags oFlags) const
Run the optimizer on a Processor to create a new
:cpp:class:``Processor``. It is usually not necessary to call
this since getting a CPUProcessor or GPUProcessor will also
optimize. However if you need both, calling this method first
makes getting a CPU and GPU Processor faster since the
optimization is effectively only done once.
.. cpp:function:: ConstProcessorRcPtr getOptimizedProcessor(BitDepth inBD, BitDepth outBD, OptimizationFlags oFlags) const
Create a :cpp:class:``Processor`` that is optimized for a
specific in and out bit-depth (as CPUProcessor would do). This
method is provided primarily for diagnostic purposes.
.. cpp:function:: ConstGPUProcessorRcPtr getDefaultGPUProcessor() const
Get an optimized GPUProcessor instance.
.. cpp:function:: ConstGPUProcessorRcPtr getOptimizedGPUProcessor(OptimizationFlags oFlags) const
.. cpp:function:: ConstCPUProcessorRcPtr getDefaultCPUProcessor() const
Get an optimized :cpp:class:``CPUProcessor`` instance.
::
OCIO::ConstConfigRcPtr config = OCIO::GetCurrentConfig();
OCIO::ConstProcessorRcPtr processor
= config->getProcessor(colorSpace1, colorSpace2);
OCIO::ConstCPUProcessorRcPtr cpuProcessor
= processor->getDefaultCPUProcessor();
OCIO::PackedImageDesc img(imgDataPtr, imgWidth, imgHeight, imgChannels);
cpuProcessor->apply(img);
**Note**
This may provide higher fidelity than anticipated due to
internal optimizations. For example, if the inputColorSpace
and the outputColorSpace are members of the same family, no
conversion will be applied, even though strictly speaking
quantization should be added.
**Note**
The typical use case to apply color processing to an image
is:
.. cpp:function:: ConstCPUProcessorRcPtr getOptimizedCPUProcessor(OptimizationFlags oFlags) const
.. cpp:function:: ConstCPUProcessorRcPtr getOptimizedCPUProcessor(BitDepth inBitDepth, BitDepth outBitDepth, OptimizationFlags oFlags) const
.. cpp:function:: ~Processor()
-[ Public Static Functions ]-
.. cpp:function:: int getNumWriteFormats()
Get the number of writers.
.. cpp:function:: const char *getFormatNameByIndex(int index)
Get the writer at index, return empty string if an invalid index
is specified.
.. cpp:function:: const char *getFormatExtensionByIndex(int index)
.. group-tab:: Python
.. py:class:: TransformFormatMetadataIterator
.. py:class:: WriteFormatIterator
.. py:method:: createGroupTransform(self: PyOpenColorIO.Processor) -> `PyOpenColorIO.GroupTransform`_
.. py:method:: getCacheID(self: PyOpenColorIO.Processor) -> str
.. py:method:: getDefaultCPUProcessor(self: PyOpenColorIO.Processor) -> OpenColorIO_v2_0dev::CPUProcessor
.. py:method:: getDefaultGPUProcessor(self: PyOpenColorIO.Processor) -> OpenColorIO_v2_0dev::GPUProcessor
.. py:method:: getDynamicProperty(self: PyOpenColorIO.Processor, type: PyOpenColorIO.DynamicPropertyType) -> `PyOpenColorIO.DynamicProperty`_
.. py:method:: getFormatMetadata(self: PyOpenColorIO.Processor) -> `PyOpenColorIO.FormatMetadata`_
.. py:method:: getOptimizedCPUProcessor(*args,**kwargs)
Overloaded function.
1. ..py:method:: getOptimizedCPUProcessor(self: PyOpenColorIO.Processor, oFlags: PyOpenColorIO.OptimizationFlags) -> OpenColorIO_v2_0dev::CPUProcessor
2. ..py:method:: getOptimizedCPUProcessor(self: PyOpenColorIO.Processor, inBitDepth: PyOpenColorIO.BitDepth, outBitDepth: PyOpenColorIO.BitDepth, oFlags: PyOpenColorIO.OptimizationFlags) -> OpenColorIO_v2_0dev::CPUProcessor
.. py:method:: getOptimizedGPUProcessor(self: PyOpenColorIO.Processor, oFlags: PyOpenColorIO.OptimizationFlags) -> OpenColorIO_v2_0dev::GPUProcessor
.. py:method:: getOptimizedProcessor(*args,**kwargs)
Overloaded function.
1. ..py:method:: getOptimizedProcessor(self: PyOpenColorIO.Processor, oFlags: PyOpenColorIO.OptimizationFlags) -> PyOpenColorIO.Processor
2. ..py:method:: getOptimizedProcessor(self: PyOpenColorIO.Processor, inBitDepth: PyOpenColorIO.BitDepth, outBitDepth: PyOpenColorIO.BitDepth, oFlags: PyOpenColorIO.OptimizationFlags) -> PyOpenColorIO.Processor
.. py:method:: getProcessorMetadata(self: PyOpenColorIO.Processor) -> OpenColorIO_v2_0dev::ProcessorMetadata
.. py:method:: getTransformFormatMetadata(self: PyOpenColorIO.Processor) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::Processor>, 1>
.. py:method:: static getWriteFormats() -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::Processor>, 0>
.. py:method:: hasChannelCrosstalk(self: PyOpenColorIO.Processor) -> bool
.. py:method:: hasDynamicProperty(self: PyOpenColorIO.Processor, type: PyOpenColorIO.DynamicPropertyType) -> bool
.. py:method:: isNoOp(self: PyOpenColorIO.Processor) -> bool
.. py:method:: write(*args,**kwargs)
Overloaded function.
1. ..py:method:: write(self: PyOpenColorIO.Processor, formatName: str,
fileName: str) -> None
2. ..py:method:: write(self: PyOpenColorIO.Processor, formatName: str) -> str
ProcessorMetadata
*****************
**class ProcessorMetadata**
This class contains meta information about the process that
generated this processor. The results of these functions do not
impact the pixel processing.
.. tabs::
.. group-tab:: C++
.. cpp:function:: int getNumFiles() const
.. cpp:function:: const char *getFile(int index) const
.. cpp:function:: int getNumLooks() const
.. cpp:function:: const char *getLook(int index) const
.. cpp:function:: void addFile(const char *fname)
.. cpp:function:: void addLook(const char *look)
.. cpp:function:: ~ProcessorMetadata()
.. cpp:function:: ProcessorMetadataRcPtr Create()
.. group-tab:: Python
.. py:class:: FileIterator
.. py:class:: LookIterator
.. py:method:: addFile(self: PyOpenColorIO.ProcessorMetadata, fileName: str) -> None
.. py:method:: addLook(self: PyOpenColorIO.ProcessorMetadata, look: str) -> None
.. py:method:: getFiles(self: PyOpenColorIO.ProcessorMetadata) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::ProcessorMetadata>, 0>
.. py:method:: getLooks(self: PyOpenColorIO.ProcessorMetadata) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::ProcessorMetadata>, 1>
-161
View File
@@ -1,161 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
ViewingRules
************
.. CAUTION::
API Docs are a work in progress, expect them to improve over time.
**class ViewingRules**
.. tabs::
.. group-tab:: C++
.. cpp:function:: ViewingRulesRcPtr createEditableCopy() const
The method clones the content decoupling the two instances.
.. cpp:function:: size_t getNumEntries() const noexcept
.. cpp:function:: size_t getIndexForRule(const char *ruleName) const
Get the index from the rule name. Will throw if there is no rule
named ruleName.
.. cpp:function:: const char *getName(size_t ruleIndex) const
Get name of the rule. Will throw if ruleIndex is invalid.
.. cpp:function:: size_t getNumColorSpaces(size_t ruleIndex) const
Get number of colorspaces. Will throw if ruleIndex is invalid.
.. cpp:function:: const char *getColorSpace(size_t ruleIndex, size_t colorSpaceIndex) const
Get colorspace name. Will throw if ruleIndex or colorSpaceIndex
is invalid.
.. cpp:function:: void addColorSpace(size_t ruleIndex, const char *colorSpace)
Add colorspace name. Will throw if:
* RuleIndex is invalid.
* :cpp:func:```ViewingRules::getNumEncodings`_`` is not 0.
.. cpp:function:: void removeColorSpace(size_t ruleIndex, size_t colorSpaceIndex)
Remove colorspace. Will throw if ruleIndex or colorSpaceIndex is
invalid.
.. cpp:function:: size_t getNumEncodings(size_t ruleIndex) const
Get number of encodings. Will throw if ruleIndex is invalid.
.. cpp:function:: const char *getEncoding(size_t ruleIndex, size_t encodingIndex) const
Get encoding name. Will throw if ruleIndex or encodingIndex is
invalid.
.. cpp:function:: void addEncoding(size_t ruleIndex, const char *encoding)
Add encoding name. Will throw if:
* RuleIndex is invalid.
* :cpp:func:```ViewingRules::getNumColorSpaces`_`` is not 0.
.. cpp:function:: void removeEncoding(size_t ruleIndex, size_t encodingIndex)
Remove encoding. Will throw if ruleIndex or encodingIndex is
invalid.
.. cpp:function:: size_t getNumCustomKeys(size_t ruleIndex) const
Get number of key/value pairs. Will throw if ruleIndex is
invalid.
.. cpp:function:: const char *getCustomKeyName(size_t ruleIndex, size_t keyIndex) const
Get name of key. Will throw if ruleIndex or keyIndex is invalid.
.. cpp:function:: const char *getCustomKeyValue(size_t ruleIndex, size_t keyIndex) const
Get value for the key. Will throw if ruleIndex or keyIndex is
invalid.
.. cpp:function:: void setCustomKey(size_t ruleIndex, const char *key, const char *value)
Adds a key/value or replace value if key exists. Setting a NULL
or an empty value will erase the key. Will throw if ruleIndex is
invalid.
.. cpp:function:: void insertRule(size_t ruleIndex, const char *ruleName)
Insert a rule at a given ruleIndex.
Rule currently at ruleIndex will be pushed to index: ruleIndex +
1. If ruleIndex is :cpp:func:``ViewingRules::getNumEntries`` new
rule will be added at the end. Will throw if:
* RuleIndex is invalid (must be less than or equal to
cpp:func:`ViewingRules::getNumEntries`).
* RuleName already exists.
.. cpp:function:: void removeRule(size_t ruleIndex)
Remove a rule. Throws if ruleIndex is not valid.
.. cpp:function:: ViewingRules(const ViewingRules&) = delete
.. cpp:function:: `ViewingRules`_ &operator=(const ViewingRules&) = delete
.. cpp:function:: ~ViewingRules()
-[ Public Static Functions ]-
.. cpp:function:: ViewingRulesRcPtr Create()
Creates ViewingRules for a Config.
.. group-tab:: Python
.. py:class:: ViewingRuleColorSpaceIterator
.. py:class:: ViewingRuleEncodingIterator
.. py:method:: addColorSpace(self: PyOpenColorIO.ViewingRules, ruleIndex: int, colorSpaceName: str) -> None
.. py:method:: addEncoding(self: PyOpenColorIO.ViewingRules, ruleIndex: int, encodingName: str) -> None
.. py:method:: getColorSpaces(self: PyOpenColorIO.ViewingRules, ruleIndex: int) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::ViewingRules>, 0, unsigned long>
.. py:method:: getCustomKeyName(self: PyOpenColorIO.ViewingRules, ruleIndex: int, key: int) -> str
.. py:method:: getCustomKeyValue(self: PyOpenColorIO.ViewingRules, ruleIndex: int, key: int) -> str
.. py:method:: getEncodings(self: PyOpenColorIO.ViewingRules, ruleIndex: int) -> OpenColorIO_v2_0dev::PyIterator<std::shared_ptr<OpenColorIO_v2_0dev::ViewingRules>, 1, unsigned long>
.. py:method:: getIndexForRule(self: PyOpenColorIO.ViewingRules, ruleName: str) -> int
.. py:method:: getName(self: PyOpenColorIO.ViewingRules, ruleIndex: int) -> str
.. py:method:: getNumCustomKeys(self: PyOpenColorIO.ViewingRules, ruleIndex: int) -> int
.. py:method:: getNumEntries(self: PyOpenColorIO.ViewingRules) -> int
.. py:method:: insertRule(self: PyOpenColorIO.ViewingRules, ruleIndex: int, name: str) -> None
.. py:method:: removeColorSpace(self: PyOpenColorIO.ViewingRules, ruleIndex: int, colorSpaceIndex: int) -> None
.. py:method:: removeEncoding(self: PyOpenColorIO.ViewingRules, ruleIndex: int, encodingIndex: int) -> None
.. py:method:: removeRule(self: PyOpenColorIO.ViewingRules, ruleIndex: int) -> None
.. py:method:: setCustomKey(self: PyOpenColorIO.ViewingRules, ruleIndex: int, key: str, value: str) -> None
-553
View File
@@ -1,553 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
ChangeLog
*********
**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
* getDisplays() result ordering now matches the active_displays
config definition or OCIO_ACTIVE_DISPLAYS env var override.
* Fixed incorrect getDefaultDisplay()/getDefaultView() result when
OCIO_ACTIVE_DISPLAYS or OCIO_ACTIVE_VIEWS env vars are unset.
* Fixed Windows-specific GetEnv() bug
* Fixed Windows and MacOS CI failure cases
**Version 1.1.0 (Jan 5 2018):**
* libc++ build fixes
* Added support for YAML > 5.0.1
* YAML and TinyXML patch fixes
* Clang visibility fix
* Added write support for Truelight LUTs
* Improved OCIOYaml
* Python string corruption fix
* Added support for CDL
* Updated documentation
* Added args/kwargs support to Python MatrixTransform
* Added description field to Look objects
* Improved Python 3 compatibility
* CSP file read fix
* Added Linux, MacOS, and Windows continuos integration
* Improved 1D LUT extrapolation
* Improved 1D LUT negative handling
* Improved Windows build system
* Improved cross-platform build system
* Undefined role crash fix
* After Effects plugin updated
* Added reference Photoshop plugin
* Added reference Docker image
**Version 1.0.9 (Sep 2 2013):**
* CDL cccid supports both named id and index lookups
* ociobakelut / ocioconvert updates
* FreeBSD compile dixes
* FileTransform disk cache allows concurrent disk lookups
* CSP windows fix
* Python 3 support
* Fix envvar abs/relative path testing
* Can explicitly declare config envvars
* gcc44 compile warning fixes
**Version 1.0.8 (Dec 11 2012):**
* After Effects plugin
* Core increased precision for matrix inversion
* Core md5 symbols no longer leaked
* CMake compatibility with OIIO 1.0 namespacing
* Cmake option to control python soname
* Nuke register_viewers defaults OCIODisplay to “all”
* Nuke ColorLookup <-> spi1d lut examples
* Windows uses boost shared_ptr by default
* Windows fixed csp writing
* Windows build fixes
* ociobakelut supports looks
**Version 1.0.7 (April 17 2012):**
* IRIDAS .look support
* ociolutimage utility added (handles image <-> 3dlut)
* CMake build allows optional reliance on system libraries
* CMake layout changes for python and nuke installs
* Bumped internals to yaml 0.3.0, pystring 1.1.2
* Optimized internal handling of Matrix / Exponent Ops
* Added INTERP_BEST interpolation option
* Python config.clearLooks() added
* Python docs revamp
* Nuke config-dependent knob values now baked into .nk scripts
* Nuke OCIOLookTransform gets reload button
* Nuke nodes get updated help text
**Version 1.0.6 (March 12 2012):**
* JNI (Java) updates
* ocioconvert arbitrary attr support
**Version 1.0.5 (Feb 22 2012):**
* Internal optimization framework added
* SetLoggingLevel(..) bugfix
* Python API Documentation / website updates
* Clang compilation fix
**Version 1.0.4 (Jan 25 2012):**
* ocio2icc deprecated (functionality merged into ociobakelut)
* rv integration (beta)
* nuke: updated channel handling
* Documentation / website updates
**Version 1.0.3 (Dec 21 2011):**
* Tetrahedral 3dlut interpolation (CPU only)
* ociocheck and Config.sanityCheck() have improved validation
* Mari: updated examples
* Makefile: misc updates to match distro library conventions
**Version 1.0.2 (Nov 30 2011):**
* 3D lut processing (cpu) is resiliant to nans
* Nuke OCIOFileTransform gains Reload buttons
* Installation on multi-lib >>*<<nix systems improved
* Installation handling of soversion for C++/python improved
* ociobakelut improvements
* Initial version of Java bindings (alpha)
**Version 1.0.1 (Oct 31 2011):**
* Luts with incorrect extension are properly loaded
* ocio2icc / ociobakelut get –lut option (no longer requires ocio
config)
* DisplayTransform looks do not apply to ‘data’ passes.
**Version 1.0.0 (Oct 3 2011):**
* ABI Lockoff for 1.0 branch
* General API Cleanup (removed deprecated / unnecessary functions)
* New features can be added, but the ABI will only be extended in
a binary compatible manner. Profiles written from 1.0 will
always be readable in future versions.
* Fixed Truelight Reading Bug
* ocio2icc no longer requires ocio config (can provide raw lut(s)
======================================================================
**Version 0.8.7 (Oct 3 2011):**
* Fixed Truelight Reading Bug
**Version 0.8.6 (Sept 7 2011):**
* Updated .ocio config reading / writing to be forwards
compatibile with 1.0 (Profiles written in 0.8.6+ will be 1.0
compatible. Compatibility from prior versions is likely, though
not guaranteed.)
* Better logging
* Added ColorSpace.equalitygroup (makes ColorSpace equality
explicit)
* Substantial Nuke node updates
* Added support for Iridas .itx read/write
* Windows Build Support
**Version 0.8.5 (Aug 2 2011):**
* Nuke OCIODisplay fixed (bug from 0.8.4)
* Updated Houdini HDL Reader / Writer
**Version 0.8.4 (July 25 2011):**
* Native Look Support
* Core / Nuke OCIODisplay supports alpha viewing
* Added Houdini (.lut) writing
* Added Pandora (.mga,.m3d) reading
* Additional internal bug fixes
**Version 0.8.3 (June 27 2011):**
* OCIO::Config symlink resolution fixed (bugfix)
* Nuke OCIODisplay knobs use string storage (bugfix)
* Makefile cleanup
* Documentation cleanup
**Version 0.8.2 (June 7 2011):**
* Numerous Windows compatibility fixes
* Python binding improvements
* OCIO::Baker / ociobakelut improvements
* Lut1D/3D do not crash on nans (bugfix)
* Nuke UI doesnt crash in known corner case (bugfix)
**Version 0.8.1 (May 9 2011):**
* New roles: TEXTURE_PAINT + MATTE_PAINT
* Mari API Example (src/mari)
* FileFormat registry updated to allow Windows + Debug support
* boost_ptr build compatibility option
**Version 0.8.0 (Apr 19 2011):**
* ABI Lockoff for stable 0.8 branch New features can be added, but
the ABI will only be extended in a binary compatible manner
* Otherwise identical to 0.7.9
======================================================================
**Version 0.7.9 (Apr 18 2011):**
* Added support for .vf luts
* Misc. Nuke enhancements
* Adds optional boost ptr support (backwards compatibility)
* Makefile enhancements (Nuke / CMAKE_INSTALL_EXEC_PREFIX)
* cdlTransform.setXML crash fix
**Version 0.7.8 (March 31 2011):**
* Iridas lut (.cube) bugfix, DOMAIN_MIN / DOMAIN_MAX now obeyed
* Exposed GPU functions in python (needed for Mari)
* Nuke OCIODisplay cleanup: Fixed knob names and added envvar
support
* ociobaker cleanup
* tinyxml ABI visibility cleaned up
* Removed Boost dependency, tr1::shared_ptr now used instead
**Version 0.7.7 (March 1 2011):**
* Lut baking API + standalone app
* Truelight runtime support (optional)
* Cinespace (3d) lut writing
* CSP prelut support
* Boost argparse dependency removed
* SanityCheck is more exhaustive
* FileTransform supports relative path dirs
* Python enhancements (transform kwarg support)
* Makefile enhancements (OIIO Path)
* Processor API update (code compatible, binary incompatible)
**Version 0.7.6 (Feb 1 2011):**
* Updated Config Display API (.ocio config format updated)
* Added ocio2icc app (ICC Profile Generation)
* Revamp of ASC CDL, added .cc and .ccc support
* Documentation Improvements
* Makefile enhancements (Boost_INCLUDE_DIR, etc)
**Version 0.7.5 (Jan 13 2011):**
* ociodisplay enhancements
* gpu display bugfix (glsl profile 1.0 only)
* Makefile enhancements
* Nuke installation cleanup
* Doc generation using sphinx (html + pdf)
**Version 0.7.4 (Jan 4 2011):**
* Added ‘Context’, allowing for ‘per-shot’ Transforms
* Misc API Cleanup: removed old functions + fixed const-ness
* Added config.sanityCheck() for validation
* Additional Makefile configuration options, SONAME, etc.
**Version 0.7.3 (Dec 16 2010):**
* Added example applications: ociodisplay, ocioconvert
* Makefile: Add boost header dependency
* Makefile: Nuke plugins are now version specific
* Fixed bug in GLSL MatrixOp
**Version 0.7.2 (Dec 9 2010):**
* GPUAllocation refactor (API tweak)
* Added AllocationTransform
* Added LogTransform
* Removed CineonLogToLinTransform
* A few bug fixes
**Version 0.7.1 (Nov 15 2010):**
* Additional 3d lut formats: Truelight .cub + Iridas .cube
* FileTransform supports envvars and search paths
* Added Nuke plugins: LogConvert + FileTransform
* Improved OCIO profile formatting
* GCC visibility used (when available) to hide private symbols
* A few bug fixes
**Version 0.7.0 (Oct 21 2010):**
* Switched file format from XML to Yaml
======================================================================
**Version 0.6.1 (Oct 5 2010):**
* Exposed ExponentTransform
* Added CineonLogToLinTransform - a simple ‘straight-line’
negative linearization. Not strictly needed (could be done
previously with LUTs) but often convenient to have.
* Added DisplayTransform.displayCC for post display lut CC.
* Many python improvements
* A few bug fixes
* A few Makefile enhancements
**Version 0.6.0 (Sept 21 2010):**
* Start of 0.6, “stable” branch
All 0.6.x builds will be ABI compatible (forward only). New
features (even experimental ones) will be added to the 0.6
branch, as long as binary and source compatibility is
maintained. Once this no longer is possible, a 0.7 “dev” branch
will be forked.
* Split public header into 3 parts for improved readability (you
still only import <OpenColorIO/OpenColorIO.h> though)
* Added MatrixTransform
* Refactored internal unit testing
* Fixed many compile warnings
======================================================================
**Version 0.5.16 (Sept 16 2010):**
* PyTransforms now use native python class inheritance
* OCIO namespace can now be configured at build time (for
distribution in commercial apps)
* Updated make install behavior
* DisplayTransform accepts generic cc operators (instead of CDL
only)
* A few bug fixes / compile warning fixes
**Version 0.5.15 (Sept 8 2010):**
* OCIO is well behaved when $OCIO is unset, allowing
un-color-managed use.
* Color Transforms can be applied in python config->getProcessor
* Simplification of API (getColorSpace allows cs name, role names,
and cs objects)
* Makefile enhancements (courtesy Malcolm Humphreys)
* A bunch of bug fixes
**Version 0.5.14 (Sept 1 2010):**
* Python binding enhancements
* Simplified class implmentations (reduced internal header count)
**Version 0.5.13 (Aug 24 2010):**
* GPU Processing now supports High Dynamic Range color spaces
* Added log processing operator
* Numerous bug fixes
* Numerous enhancements to python glue
* Exposed PyOpenColorIO header, for use in apps that require
custom python glue
* Matrix op is optimized for diagonal-only subcases
* Numerous changes to Nuke Plugin (now with an addition node,
OCIODisplay)
**Version 0.5.12 (Aug 18 2010):**
* Additional DisplayTransform improvements
* Additional GPU Improvements
* Added op hashing (processor->getGPULut3DCacheID)
**Version 0.5.11 (Aug 11 2010):**
* Initial DisplayTransform implementation
* ASC CDL Support
* Config Luma coefficients
**Version 0.5.10 (July 22 2010):**
* Updated Nuke Plugin, now works in OSX
* Fixed misc. build warnings.
* Continued GPU progress (still under development)
**Version 0.5.9 (June 28 2010):**
* Renamed project, classes, namespaces to OpenColorIO (OCIO)
* Added single-pixel processor path
* Improved python path makefile detection
* Continued GPU progress (still under development)
**Version 0.5.8 (June 22 2010):**
* Support for .3dl
* Support for matrix ops
* Code refactor (added Processors) to support gpu/cpu model
* Much better error checking
* Compilation support for python 2.5
* Compilation support for OSX
**Version 0.5.7 (June 14 2010):**
* Python API is much more fleshed out
* Improved public C++ header
**Version 0.5.6 (June 8 2010):**
* PyConfig stub implementation
* Dropped ImageDesc.init; added PlanarImageDesc / PackedImageDesc
* Dropped tr1::shared_ptr; added boost::shared_ptr
**Version 0.5.5 (June 4 2010):**
* .ocio supports path references
* Switch config envvar to $OCIO
* Added 3D lut processing ops
**Version 0.5.4 (June 1 2010):**
* Initial Release
* CMake linux support
* XML OCIO format parsing / saving
* Example colorspace configuration with a few ‘trivial’
colorspaces
* Mutable colorspace configuration API
* Support for 1D lut processing
* Support for SPI 1D fileformats.
* Nuke plugin
+66
View File
@@ -0,0 +1,66 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
ColorSpace
==========
.. tabs::
.. group-tab:: Python
.. 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++
.. doxygenclass:: ${OCIO_NAMESPACE}::ColorSpace
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const ColorSpace&)
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstColorSpaceRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::ColorSpaceRcPtr
ColorSpaceSet
=============
.. tabs::
.. group-tab:: Python
.. 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++
.. doxygenclass:: ${OCIO_NAMESPACE}::ColorSpaceSet
:members:
:undoc-members:
.. doxygengroup:: ColorSpaceSetOperators
:content-only:
:members:
:undoc-members:
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstColorSpaceSetRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::ColorSpaceSetRcPtr
+112
View File
@@ -0,0 +1,112 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Config
======
.. tabs::
.. group-tab:: Python
.. 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++
.. doxygenfunction:: ${OCIO_NAMESPACE}::GetCurrentConfig
.. doxygenfunction:: ${OCIO_NAMESPACE}::SetCurrentConfig
.. doxygenclass:: ${OCIO_NAMESPACE}::Config
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const Config&)
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstConfigRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConfigRcPtr
Constants: :ref:`vars_roles`, :ref:`vars_shared_view`
+267
View File
@@ -0,0 +1,267 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Constants
=========
.. _vars_envvar:
Environment Variables
*********************
These environmental variables are used by the OpenColorIO library
(i.e. these variables are defined in src/OpenColorIO/Config.cpp).
.. tabs::
.. group-tab:: Python
.. data:: PyOpenColorIO.OCIO_CONFIG_ENVVAR
The envvar 'OCIO' provides a path to the config file used by
:ref:`Config.CreateFromEnv`
.. data:: PyOpenColorIO.OCIO_ACTIVE_DISPLAYS_ENVVAR
The envvar 'OCIO_ACTIVE_DISPLAYS' provides a list of displays
overriding the 'active_displays' list from the config file.
.. data:: PyOpenColorIO.OCIO_ACTIVE_VIEWS_ENVVAR
The envvar 'OCIO_ACTIVE_VIEWS' provides a list of views overriding the
'active_views' list from the config file.
.. data:: PyOpenColorIO.OCIO_INACTIVE_COLORSPACES_ENVVAR
The envvar 'OCIO_INACTIVE_COLORSPACES' provides a list of inactive
color spaces overriding the 'inactive_color_spaces' list from the
config file.
.. data:: PyOpenColorIO.OCIO_OPTIMIZATION_FLAGS_ENVVAR
The envvar 'OCIO_OPTIMIZATION_FLAGS' provides a way to force a given
optimization level. Remove the variable or set the value to empty to
not use it. Set the value of the variable to the desired optimization
level as either an integer or hexadecimal value.
Ex: OCIO_OPTIMIZATION_FLAGS="20479" or "0x4FFF" for
OPTIMIZATION_LOSSLESS.
.. group-tab:: C++
.. doxygengroup:: VarsEnvvar
:content-only:
:members:
:undoc-members:
.. _vars_roles:
Roles
*****
ColorSpace Roles are used so that plugins, in addition to this API can have
abstract ways of asking for common colorspaces, without referring to them
by hardcoded names.
Internal::
Extracting color space from file path - (ROLE_DEFAULT)
App Helpers::
ViewingPipeline - (ROLE_SCENE_LINEAR (LinearCC for exposure))
(ROLE_COLOR_TIMING (ColorTimingCC))
MixingColorSpaceManager - (ROLE_COLOR_PICKING)
External Plugins (currently known)::
Colorpicker UIs - (ROLE_COLOR_PICKING)
Compositor LogConvert - (ROLE_SCENE_LINEAR, ROLE_COMPOSITING_LOG)
.. tabs::
.. group-tab:: Python
.. data:: PyOpenColorIO.ROLE_DEFAULT
"default"
.. data:: PyOpenColorIO.ROLE_REFERENCE
"reference"
.. data:: PyOpenColorIO.ROLE_DATA
"data"
.. data:: PyOpenColorIO.ROLE_COLOR_PICKING
"color_picking"
.. data:: PyOpenColorIO.ROLE_SCENE_LINEAR
"scene_linear"
.. data:: PyOpenColorIO.ROLE_COMPOSITING_LOG
"compositing_log"
.. data:: PyOpenColorIO.ROLE_COLOR_TIMING
"color_timing"
.. data:: PyOpenColorIO.ROLE_TEXTURE_PAINT
This role defines the transform for painting textures. In some
workflows this is just a inverse display gamma with some limits.
.. data:: PyOpenColorIO.ROLE_MATTE_PAINT
This role defines the transform for matte painting. In some workflows
this is a 1D HDR to LDR allocation. It is normally combined with
another display transform in the host app for preview.
.. data:: PyOpenColorIO.ROLE_RENDERING
The rendering role may be used to identify a specific color space to be
used by CGI renderers. This is typically a scene-linear space but the
primaries also matter since they influence the resulting color, especially
in areas of indirect illumination.
.. data:: PyOpenColorIO.ROLE_INTERCHANGE_SCENE
The aces_interchange role is used to specify which color space in the
config implements the standard ACES2065-1 color space (SMPTE ST2065-1).
This may be used when converting scene-referred colors from one config
to another.
.. data:: PyOpenColorIO.ROLE_INTERCHANGE_DISPLAY
The cie_xyz_d65_interchange role is used to specify which color space in
the config implements CIE XYZ colorimetry with the neutral axis at D65.
This may be used when converting display-referred colors from one config
to another.
.. group-tab:: C++
.. doxygengroup:: VarsRoles
:content-only:
:members:
:undoc-members:
.. _vars_shared_view:
Shared View
***********
.. tabs::
.. group-tab:: Python
.. data:: PyOpenColorIO.OCIO_VIEW_USE_DISPLAY_NAME
A shared view using this for the color space name will use a display
color space that has the same name as the display the shared view is
used by.
.. group-tab:: C++
.. doxygengroup:: VarsSharedView
:content-only:
:members:
:undoc-members:
.. _vars_format_metadata:
FormatMetadata
**************
These constants describe various types of rich metadata. They are used with
FormatMetadata objects as the "name" part of a (name, value) pair. All of these
types of metadata are supported in the CLF/CTF file formats whereas other
formats support some or none of them.
Although the string constants used here match those used in the CLF/CTF
formats, the concepts are generic, so the goal is for other file formats to
reuse the same constants within a FormatMetadata object (even if the syntax
used in a given format is somewhat different).
.. tabs::
.. group-tab:: Python
.. data:: PyOpenColorIO.METADATA_DESCRIPTION
A description string -- used as the "Description" element in CLF/CTF
and CDL, and to hold comments for other LUT formats when baking.
.. data:: PyOpenColorIO.METADATA_INFO
A block of informative metadata such as the "Info" element in CLF/CTF.
Usually contains child elements.
.. data:: PyOpenColorIO.METADATA_INPUT_DESCRIPTOR
A string describing the expected input color space -- used as the
"InputDescriptor" element in CLF/CTF and the "InputDescription" in
CDL.
.. data:: PyOpenColorIO.METADATA_OUTPUT_DESCRIPTOR
A string describing the output color space -- used as the
"OutputDescriptor" element in CLF/CTF and the "OutputDescription" in
CDL.
.. data:: PyOpenColorIO.METADATA_NAME
A name string -- used as a "name" attribute in CLF/CTF elements. Use
on a GroupTransform to get/set the name for the CLF/CTF ProcessList.
Use on an individual Transform (i.e. MatrixTransform, etc.) to get/set
the name of the corresponding process node.
.. data:: PyOpenColorIO.METADATA_ID
An ID string -- used as an "id" attribute in CLF/CTF elements. Use on
a GroupTransform to get/set the id for the CLF/CTF ProcessList. Use
on an individual Transform (i.e. MatrixTransform, etc.) to get/set the
id of the corresponding process node.
.. group-tab:: C++
.. doxygengroup:: VarsFormatMetadata
:content-only:
:members:
:undoc-members:
.. _vars_caches:
Caches
******
.. tabs::
.. group-tab:: Python
.. data:: PyOpenColorIO.OCIO_DISABLE_ALL_CACHES
Disable all caches, including for FileTransforms and Optimized/CPU/GPU
Processors. (Provided only to facilitate developer investigations.)
.. data:: PyOpenColorIO.OCIO_DISABLE_PROCESSOR_CACHES
Disable only the Optimized, CPU, and GPU Processor caches. (Provided
only to facilitate developer investigations.)
.. data:: PyOpenColorIO.OCIO_DISABLE_CACHE_FALLBACK
By default the processor caches check for identical color
transformations when cache keys do not match. That fallback introduces
a major performance hit in some cases so there is an env. variable to
disable the fallback.
.. group-tab:: C++
.. doxygengroup:: VarsCaches
:content-only:
:members:
:undoc-members:
+38
View File
@@ -0,0 +1,38 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Context
=======
.. tabs::
.. group-tab:: Python
.. 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++
.. doxygenclass:: ${OCIO_NAMESPACE}::Context
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const Context&)
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstContextRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::ContextRcPtr
+89
View File
@@ -0,0 +1,89 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
DynamicProperty
===============
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.DynamicProperty
:members:
:undoc-members:
:special-members: __init__
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::DynamicProperty
:members:
:undoc-members:
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstDynamicPropertyRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::DynamicPropertyRcPtr
DynamicPropertyValue
====================
.. tabs::
.. group-tab:: C++
.. doxygennamespace:: ${OCIO_NAMESPACE}::DynamicPropertyValue
DynamicPropertyDouble
=====================
.. tabs::
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::DynamicPropertyDouble
:members:
:undoc-members:
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstDynamicPropertyDoubleRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::DynamicPropertyDoubleRcPtr
DynamicPropertyGradingPrimary
=============================
.. tabs::
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::DynamicPropertyGradingPrimary
:members:
:undoc-members:
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstDynamicPropertyGradingPrimaryRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::DynamicPropertyGradingPrimaryRcPtr
DynamicPropertyGradingRGBCurve
==============================
.. tabs::
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::DynamicPropertyGradingRGBCurve
:members:
:undoc-members:
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstDynamicPropertyGradingRGBCurveRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::DynamicPropertyGradingRGBCurveRcPtr
DynamicPropertyGradingTone
==========================
.. tabs::
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::DynamicPropertyGradingTone
:members:
:undoc-members:
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstDynamicPropertyGradingToneRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::DynamicPropertyGradingToneRcPtr
+484
View File
@@ -0,0 +1,484 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Enums
=====
LoggingLevel
************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.LoggingLevel
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::LoggingLevel
Conversions: :ref:`conversion_logging_level`
ReferenceSpaceType
******************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ReferenceSpaceType
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::ReferenceSpaceType
SearchReferenceSpaceType
************************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.SearchReferenceSpaceType
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::SearchReferenceSpaceType
NamedTransformVisibility
************************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.NamedTransformVisibility
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::NamedTransformVisibility
ColorSpaceVisibility
********************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ColorSpaceVisibility
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::ColorSpaceVisibility
ViewType
********
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ViewType
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::ViewType
ColorSpaceDirection
*******************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ColorSpaceDirection
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::ColorSpaceDirection
Conversions: :ref:`conversion_color_space_direction`
ViewTransformDirection
**********************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ViewTransformDirection
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::ViewTransformDirection
.. _enum_transform_direction:
TransformDirection
******************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.TransformDirection
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::TransformDirection
Conversions: :ref:`conversion_transform_direction`
TransformType
*************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.TransformType
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::TransformType
Interpolation
*************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.Interpolation
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::Interpolation
Conversions: :ref:`conversion_interpolation`
BitDepth
********
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.BitDepth
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::BitDepth
Conversions: :ref:`conversion_bit_depth`
Lut1DHueAdjust
**************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.Lut1DHueAdjust
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::Lut1DHueAdjust
ChannelOrdering
***************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ChannelOrdering
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::ChannelOrdering
Allocation
**********
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.Allocation
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::Allocation
Conversions: :ref:`conversion_allocation`
GpuLanguage
***********
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GpuLanguage
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::GpuLanguage
Conversions: :ref:`conversion_gpu_language`
EnvironmentMode
***************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.EnvironmentMode
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::EnvironmentMode
Conversions: :ref:`conversion_environment_mode`
RangeStyle
**********
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.RangeStyle
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::RangeStyle
Conversions: :ref:`conversion_range_style`
FixedFunctionStyle
******************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.FixedFunctionStyle
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::FixedFunctionStyle
Conversions: :ref:`conversion_fixed_function_style`
ExposureContrastStyle
*********************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ExposureContrastStyle
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::ExposureContrastStyle
Conversions: :ref:`conversion_exposure_contrast_style`
CDLStyle
********
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.CDLStyle
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::CDLStyle
Conversions: :ref:`conversion_cdl_style`
NegativeStyle
*************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.NegativeStyle
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::NegativeStyle
Conversions: :ref:`conversion_negative_style`
GradingStyle
************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingStyle
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::GradingStyle
Conversions: :ref:`conversion_grading_style`
DynamicPropertyType
*******************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.DynamicPropertyType
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::DynamicPropertyType
RGBCurveType
************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.RGBCurveType
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::RGBCurveType
UniformDataType
***************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.UniformDataType
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::UniformDataType
OptimizationFlags
*****************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.OptimizationFlags
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::OptimizationFlags
ProcessorCacheFlags
*******************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ProcessorCacheFlags
:members:
:undoc-members:
:exclude-members: name
.. group-tab:: C++
.. doxygenenum:: ${OCIO_NAMESPACE}::ProcessorCacheFlags
+24
View File
@@ -0,0 +1,24 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Exceptions
==========
.. tabs::
.. group-tab:: Python
.. autoexception:: PyOpenColorIO.Exception
.. autoexception:: PyOpenColorIO.ExceptionMissingFile
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::Exception
:members:
:undoc-members:
.. doxygenclass:: ${OCIO_NAMESPACE}::ExceptionMissingFile
:members:
:undoc-members:
+46
View File
@@ -0,0 +1,46 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
FormatMetadata
==============
.. tabs::
.. group-tab:: Python
.. 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++
.. doxygenclass:: ${OCIO_NAMESPACE}::FormatMetadata
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const FormatMetadata&)
Constants: :ref:`vars_format_metadata`
+416
View File
@@ -0,0 +1,416 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Global
======
Caching
*******
.. tabs::
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.ClearAllCaches
.. group-tab:: C++
.. doxygenfunction:: ${OCIO_NAMESPACE}::ClearAllCaches
Constants: :ref:`vars_caches`
Version
*******
.. tabs::
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.GetVersion
.. autofunction:: PyOpenColorIO.GetVersionHex
.. group-tab:: C++
.. doxygenfunction:: ${OCIO_NAMESPACE}::GetVersion
.. doxygenfunction:: ${OCIO_NAMESPACE}::GetVersionHex
Logging
*******
.. tabs::
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.GetLoggingLevel
.. autofunction:: PyOpenColorIO.SetLoggingLevel
.. group-tab:: C++
.. doxygenfunction:: ${OCIO_NAMESPACE}::GetLoggingLevel
.. doxygenfunction:: ${OCIO_NAMESPACE}::SetLoggingLevel
Logging Function
^^^^^^^^^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.SetLoggingFunction
.. autofunction:: PyOpenColorIO.ResetToDefaultLoggingFunction
.. autofunction:: PyOpenColorIO.LogMessage
.. group-tab:: C++
.. doxygentypedef:: ${OCIO_NAMESPACE}::LoggingFunction
.. doxygenfunction:: ${OCIO_NAMESPACE}::SetLoggingFunction
.. doxygenfunction:: ${OCIO_NAMESPACE}::ResetToDefaultLoggingFunction
.. doxygenfunction:: ${OCIO_NAMESPACE}::LogMessage
Compute Hash Function
*********************
.. tabs::
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.SetComputeHashFunction
.. autofunction:: PyOpenColorIO.ResetComputeHashFunction
.. group-tab:: C++
.. doxygentypedef:: ${OCIO_NAMESPACE}::ComputeHashFunction
.. doxygenfunction:: ${OCIO_NAMESPACE}::SetComputeHashFunction
.. doxygenfunction:: ${OCIO_NAMESPACE}::ResetComputeHashFunction
Environment Variables
*********************
.. tabs::
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.GetEnvVariable
.. autofunction:: PyOpenColorIO.SetEnvVariable
.. autofunction:: PyOpenColorIO.UnsetEnvVariable
.. autofunction:: PyOpenColorIO.IsEnvVariablePresent
.. group-tab:: C++
.. doxygenfunction:: ${OCIO_NAMESPACE}::GetEnvVariable
.. doxygenfunction:: ${OCIO_NAMESPACE}::SetEnvVariable
.. doxygenfunction:: ${OCIO_NAMESPACE}::UnsetEnvVariable
.. doxygenfunction:: ${OCIO_NAMESPACE}::IsEnvVariablePresent
Constants: :ref:`vars_envvar`
Casting
*******
.. tabs::
.. group-tab:: C++
.. doxygenfunction:: ${OCIO_NAMESPACE}::DynamicPtrCast
Conversions
***********
Bool
^^^^
.. tabs::
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.BoolToString
.. autofunction:: PyOpenColorIO.BoolFromString
.. group-tab:: C++
.. doxygenfunction:: ${OCIO_NAMESPACE}::BoolToString
.. doxygenfunction:: ${OCIO_NAMESPACE}::BoolFromString
.. _conversion_logging_level:
LoggingLevel
^^^^^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.LoggingLevelToString
.. autofunction:: PyOpenColorIO.LoggingLevelFromString
.. group-tab:: C++
.. doxygenfunction:: ${OCIO_NAMESPACE}::LoggingLevelToString
.. doxygenfunction:: ${OCIO_NAMESPACE}::LoggingLevelFromString
.. _conversion_transform_direction:
TransformDirection
^^^^^^^^^^^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.TransformDirectionToString
.. autofunction:: PyOpenColorIO.TransformDirectionFromString
.. autofunction:: PyOpenColorIO.GetInverseTransformDirection
.. autofunction:: PyOpenColorIO.CombineTransformDirections
.. group-tab:: C++
.. doxygenfunction:: ${OCIO_NAMESPACE}::TransformDirectionToString
.. doxygenfunction:: ${OCIO_NAMESPACE}::TransformDirectionFromString
.. doxygenfunction:: ${OCIO_NAMESPACE}::GetInverseTransformDirection
.. doxygenfunction:: ${OCIO_NAMESPACE}::CombineTransformDirections
.. _conversion_bit_depth:
BitDepth
^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.BitDepthToString
.. autofunction:: PyOpenColorIO.BitDepthFromString
.. autofunction:: PyOpenColorIO.BitDepthIsFloat
.. autofunction:: PyOpenColorIO.BitDepthToInt
.. group-tab:: C++
.. doxygenfunction:: ${OCIO_NAMESPACE}::BitDepthToString
.. doxygenfunction:: ${OCIO_NAMESPACE}::BitDepthFromString
.. doxygenfunction:: ${OCIO_NAMESPACE}::BitDepthIsFloat
.. doxygenfunction:: ${OCIO_NAMESPACE}::BitDepthToInt
.. _conversion_allocation:
Allocation
^^^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.AllocationToString
.. autofunction:: PyOpenColorIO.AllocationFromString
.. group-tab:: C++
.. doxygenfunction:: ${OCIO_NAMESPACE}::AllocationToString
.. doxygenfunction:: ${OCIO_NAMESPACE}::AllocationFromString
.. _conversion_interpolation:
Interpolation
^^^^^^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.InterpolationToString
.. autofunction:: PyOpenColorIO.InterpolationFromString
.. group-tab:: C++
.. doxygenfunction:: ${OCIO_NAMESPACE}::InterpolationToString
.. doxygenfunction:: ${OCIO_NAMESPACE}::InterpolationFromString
.. _conversion_gpu_language:
GpuLanguage
^^^^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.GpuLanguageToString
.. autofunction:: PyOpenColorIO.GpuLanguageFromString
.. group-tab:: C++
.. doxygenfunction:: ${OCIO_NAMESPACE}::GpuLanguageToString
.. doxygenfunction:: ${OCIO_NAMESPACE}::GpuLanguageFromString
.. _conversion_environment_mode:
EnvironmentMode
^^^^^^^^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.EnvironmentModeToString
.. autofunction:: PyOpenColorIO.EnvironmentModeFromString
.. group-tab:: C++
.. doxygenfunction:: ${OCIO_NAMESPACE}::EnvironmentModeToString
.. doxygenfunction:: ${OCIO_NAMESPACE}::EnvironmentModeFromString
.. _conversion_cdl_style:
CDLStyle
^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.CDLStyleToString
.. autofunction:: PyOpenColorIO.CDLStyleFromString
.. group-tab:: C++
.. doxygenfunction:: ${OCIO_NAMESPACE}::CDLStyleToString
.. doxygenfunction:: ${OCIO_NAMESPACE}::CDLStyleFromString
.. _conversion_range_style:
RangeStyle
^^^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.RangeStyleToString
.. autofunction:: PyOpenColorIO.RangeStyleFromString
.. group-tab:: C++
.. doxygenfunction:: ${OCIO_NAMESPACE}::RangeStyleToString
.. doxygenfunction:: ${OCIO_NAMESPACE}::RangeStyleFromString
.. _conversion_fixed_function_style:
FixedFunctionStyle
^^^^^^^^^^^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.FixedFunctionStyleToString
.. autofunction:: PyOpenColorIO.FixedFunctionStyleFromString
.. group-tab:: C++
.. doxygenfunction:: ${OCIO_NAMESPACE}::FixedFunctionStyleToString
.. doxygenfunction:: ${OCIO_NAMESPACE}::FixedFunctionStyleFromString
.. _conversion_grading_style:
GradingStyle
^^^^^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.GradingStyleToString
.. autofunction:: PyOpenColorIO.GradingStyleFromString
.. group-tab:: C++
.. doxygenfunction:: ${OCIO_NAMESPACE}::GradingStyleToString
.. doxygenfunction:: ${OCIO_NAMESPACE}::GradingStyleFromString
.. _conversion_exposure_contrast_style:
ExposureContrastStyle
^^^^^^^^^^^^^^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.ExposureContrastStyleToString
.. autofunction:: PyOpenColorIO.ExposureContrastStyleFromString
.. group-tab:: C++
.. doxygenfunction:: ${OCIO_NAMESPACE}::ExposureContrastStyleToString
.. doxygenfunction:: ${OCIO_NAMESPACE}::ExposureContrastStyleFromString
.. _conversion_negative_style:
NegativeStyle
^^^^^^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autofunction:: PyOpenColorIO.NegativeStyleToString
.. autofunction:: PyOpenColorIO.NegativeStyleFromString
.. group-tab:: C++
.. doxygenfunction:: ${OCIO_NAMESPACE}::NegativeStyleToString
.. doxygenfunction:: ${OCIO_NAMESPACE}::NegativeStyleFromString
+277
View File
@@ -0,0 +1,277 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
.. _grading_transforms:
Grading Transforms
==================
GradingPrimaryTransform
***********************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingPrimaryTransform
:members:
:undoc-members:
:special-members: __init__, __str__
:inherited-members:
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::GradingPrimaryTransform
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const GradingPrimaryTransform&) noexcept
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstGradingPrimaryTransformRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::GradingPrimaryTransformRcPtr
GradingPrimary
^^^^^^^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingPrimary
:members:
:undoc-members:
:special-members: __init__, __str__
.. group-tab:: C++
.. doxygenstruct:: ${OCIO_NAMESPACE}::GradingPrimary
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const GradingPrimary&)
GradingRGBM
^^^^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingRGBM
:members:
:undoc-members:
:special-members: __init__, __str__
.. group-tab:: C++
.. doxygenstruct:: ${OCIO_NAMESPACE}::GradingRGBM
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const GradingRGBM&)
GradingRGBCurveTransform
************************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingRGBCurveTransform
:members:
:undoc-members:
:special-members: __init__, __str__
:inherited-members:
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::GradingRGBCurveTransform
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const GradingRGBCurveTransform&) noexcept
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstGradingRGBCurveTransformRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::GradingRGBCurveTransformRcPtr
GradingRGBCurve
^^^^^^^^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingRGBCurve
:members:
:undoc-members:
:special-members: __init__, __str__
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::GradingRGBCurve
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const 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
^^^^^^^^^^^^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingControlPoint
:members:
:undoc-members:
:special-members: __init__, __str__
.. group-tab:: C++
.. doxygenstruct:: ${OCIO_NAMESPACE}::GradingControlPoint
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const GradingControlPoint&)
GradingBSplineCurve
^^^^^^^^^^^^^^^^^^^
.. tabs::
.. group-tab:: Python
.. 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++
.. doxygenclass:: ${OCIO_NAMESPACE}::GradingBSplineCurve
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const GradingBSplineCurve&)
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstGradingBSplineCurveRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::GradingBSplineCurveRcPtr
GradingToneTransform
********************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingToneTransform
:members:
:undoc-members:
:special-members: __init__, __str__
:inherited-members:
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::GradingToneTransform
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const GradingToneTransform&) noexcept
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstGradingToneTransformRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::GradingToneTransformRcPtr
GradingTone
^^^^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingTone
:members:
:undoc-members:
:special-members: __init__, __str__
.. group-tab:: C++
.. doxygenstruct:: ${OCIO_NAMESPACE}::GradingTone
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const GradingTone&)
GradingRGBMSW
^^^^^^^^^^^^^
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GradingRGBMSW
:members:
:undoc-members:
:special-members: __init__, __str__
.. group-tab:: C++
.. doxygenstruct:: ${OCIO_NAMESPACE}::GradingRGBMSW
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const GradingRGBMSW&)
+70
View File
@@ -0,0 +1,70 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
ImageDesc
=========
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ImageDesc
:members:
:undoc-members:
:special-members: __init__
.. py:data:: AutoStride
:module: PyOpenColorIO
:type: int
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::ImageDesc
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const ImageDesc&)
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstImageDescRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::ImageDescRcPtr
.. doxygenvariable:: ${OCIO_NAMESPACE}::AutoStride
PackedImageDesc
***************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.PackedImageDesc
:members:
:undoc-members:
:special-members: __init__
:inherited-members:
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::PackedImageDesc
:members:
:undoc-members:
PlanarImageDesc
***************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.PlanarImageDesc
:members:
:undoc-members:
:special-members: __init__
:inherited-members:
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::PlanarImageDesc
:members:
:undoc-members:
+26
View File
@@ -0,0 +1,26 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Look
====
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.Look
:members:
:undoc-members:
:special-members: __init__, __str__
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::Look
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const Look&)
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstLookRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::LookRcPtr
+30
View File
@@ -0,0 +1,30 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Named Transform
===============
.. tabs::
.. group-tab:: Python
.. 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++
.. doxygenclass:: ${OCIO_NAMESPACE}::NamedTransform
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const NamedTransform&)
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstNamedTransformRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::NamedTransformRcPtr
+101
View File
@@ -0,0 +1,101 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Processors
==========
Processor
*********
.. tabs::
.. group-tab:: Python
.. 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++
.. doxygenclass:: ${OCIO_NAMESPACE}::Processor
:members:
:undoc-members:
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstProcessorRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::ProcessorRcPtr
CPUProcessor
************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.CPUProcessor
:members:
:undoc-members:
:special-members: __init__
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::CPUProcessor
:members:
:undoc-members:
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstCPUProcessorRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::CPUProcessorRcPtr
GPUProcessor
************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GPUProcessor
:members:
:undoc-members:
:special-members: __init__
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::GPUProcessor
:members:
:undoc-members:
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstGPUProcessorRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::GPUProcessorRcPtr
ProcessorMetadata
*****************
.. tabs::
.. group-tab:: Python
.. 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++
.. doxygenclass:: ${OCIO_NAMESPACE}::ProcessorMetadata
:members:
:undoc-members:
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstProcessorMetadataRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::ProcessorMetadataRcPtr
+59
View File
@@ -0,0 +1,59 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Rules
=====
FileRules
*********
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.FileRules
:members:
:undoc-members:
:special-members: __init__
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::FileRules
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const FileRules&)
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstFileRulesRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::FileRulesRcPtr
ViewingRules
************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.ViewingRules
:members:
:undoc-members:
:special-members: __init__
:exclude-members: ViewingRuleColorSpaceIterator, ViewingRuleEncodingIterator
.. autoclass:: PyOpenColorIO.ViewingRules.ViewingRuleColorSpaceIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.ViewingRules.ViewingRuleEncodingIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::ViewingRules
:members:
:undoc-members:
.. doxygenfunction:: ${OCIO_NAMESPACE}::operator<<(std::ostream&, const ViewingRules&)
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstViewingRulesRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::ViewingRulesRcPtr
+99
View File
@@ -0,0 +1,99 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Shaders
=======
GpuShaderCreator
****************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GpuShaderCreator
:members:
:undoc-members:
:exclude-members: TextureType,
TEXTURE_RED_CHANNEL,
TEXTURE_RGB_CHANNEL,
DynamicPropertyIterator
.. autoclass:: PyOpenColorIO.GpuShaderCreator.TextureType
:members:
:undoc-members:
:exclude-members: name
.. autoclass:: PyOpenColorIO.GpuShaderCreator.DynamicPropertyIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::GpuShaderCreator
:members:
:undoc-members:
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstGpuShaderCreatorRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::GpuShaderCreatorRcPtr
GpuShaderDesc
*************
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.GpuShaderDesc
:members:
:undoc-members:
:special-members: __init__
:exclude-members: TextureType,
TEXTURE_RED_CHANNEL,
TEXTURE_RGB_CHANNEL,
UniformData,
Texture,
Texture3D,
UniformIterator,
TextureIterator,
Texture3DIterator,
DynamicPropertyIterator
:inherited-members:
.. autoclass:: PyOpenColorIO.GpuShaderDesc.TextureType
:members:
:undoc-members:
:exclude-members: name
.. autoclass:: PyOpenColorIO.GpuShaderDesc.UniformData
:members:
:undoc-members:
.. autoclass:: PyOpenColorIO.GpuShaderDesc.Texture
:members:
:undoc-members:
.. autoclass:: PyOpenColorIO.GpuShaderDesc.Texture3D
:members:
:undoc-members:
.. autoclass:: PyOpenColorIO.GpuShaderDesc.UniformIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.GpuShaderDesc.TextureIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.GpuShaderDesc.Texture3DIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. autoclass:: PyOpenColorIO.GpuShaderDesc.DynamicPropertyIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::GpuShaderDesc
:members:
:undoc-members:
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstGpuShaderDescRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::GpuShaderDescRcPtr
+28
View File
@@ -0,0 +1,28 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
SystemMonitors
==============
.. tabs::
.. group-tab:: Python
.. autoclass:: PyOpenColorIO.SystemMonitors
:members:
:undoc-members:
:special-members: __init__
:exclude-members: MonitorIterator
.. autoclass:: PyOpenColorIO.SystemMonitors.MonitorIterator
:special-members: __getitem__, __iter__, __len__, __next__
.. group-tab:: C++
.. doxygenclass:: ${OCIO_NAMESPACE}::SystemMonitors
:members:
:undoc-members:
.. doxygentypedef:: ${OCIO_NAMESPACE}::ConstSystemMonitorsRcPtr
.. doxygentypedef:: ${OCIO_NAMESPACE}::SystemMonitorsRcPtr
+291 -1852
View File
File diff suppressed because it is too large Load Diff
-964
View File
@@ -1,964 +0,0 @@
..
SPDX-License-Identifier: CC-BY-4.0
Copyright Contributors to the OpenColorIO Project.
Types
*****
.. CAUTION::
API Docs are a work in progress, expect them to improve over time.
LoggingLevel
============
.. tabs::
.. group-tab:: C++
.. cpp:enum:: OpenColorIO::LoggingLevel
*Values:*
.. cpp:enumerator:: LOGGING_LEVEL_NONE = 0
.. cpp:enumerator:: LOGGING_LEVEL_WARNING = 1
.. cpp:enumerator:: LOGGING_LEVEL_INFO = 2
.. cpp:enumerator:: LOGGING_LEVEL_DEBUG = 3
.. cpp:enumerator:: LOGGING_LEVEL_UNKNOWN = 255
.. cpp:enumerator:: LOGGING_LEVEL_DEFAULT = `LOGGING_LEVEL_INFO`_
.. group-tab:: Python
.. py:class:: PyOpenColorIO.LoggingLevel
Members:
* LOGGING_LEVEL_NONE
* LOGGING_LEVEL_WARNING
* LOGGING_LEVEL_INFO
* LOGGING_LEVEL_DEBUG
* LOGGING_LEVEL_UNKNOWN
ReferenceSpaceType
==================
.. tabs::
.. group-tab:: C++
.. cpp:enum:: OpenColorIO::ReferenceSpaceType
OCIO does not mandate the image state of the main reference space
and it is not required to be scene-referred. This enum is used in
connection with the display color space and view transform features
which do assume that the main reference space is scene-referred and
the display reference space is display-referred. If a config used a
non-scene-referred reference space, presumably it would not use
either display color spaces or view transforms, so this enum
becomes irrelevant.
*Values:*
.. cpp:enumerator:: REFERENCE_SPACE_SCENE = 0
the main scene reference space
.. cpp:enumerator:: REFERENCE_SPACE_DISPLAY
the reference space for display color spaces
.. group-tab:: Python
.. py:class:: PyOpenColorIO.ReferenceSpaceType
Members:
* REFERENCE_SPACE_SCENE
* REFERENCE_SPACE_DISPLAY
SearchReferenceSpaceType
========================
.. tabs::
.. group-tab:: C++
.. cpp:enum:: OpenColorIO::SearchReferenceSpaceType
*Values:*
.. cpp:enumerator:: SEARCH_REFERENCE_SPACE_SCENE = 0
.. cpp:enumerator:: SEARCH_REFERENCE_SPACE_DISPLAY
.. cpp:enumerator:: SEARCH_REFERENCE_SPACE_ALL
.. group-tab:: Python
.. py:class:: PyOpenColorIO.SearchReferenceSpaceType
Members:
* SEARCH_REFERENCE_SPACE_SCENE
* SEARCH_REFERENCE_SPACE_DISPLAY
* SEARCH_REFERENCE_SPACE_ALL
ColorSpaceVisibility
====================
.. tabs::
.. group-tab:: C++
.. cpp:enum:: OpenColorIO::ColorSpaceVisibility
*Values:*
.. cpp:enumerator:: COLORSPACE_ACTIVE = 0
.. cpp:enumerator:: COLORSPACE_INACTIVE
.. cpp:enumerator:: COLORSPACE_ALL
.. group-tab:: Python
.. py:class:: PyOpenColorIO.ColorSpaceVisibility
Members:
* COLORSPACE_ACTIVE
* COLORSPACE_INACTIVE
* COLORSPACE_ALL
ColorSpaceDirection
===================
.. tabs::
.. group-tab:: C++
.. cpp:enum:: OpenColorIO::ColorSpaceDirection
*Values:*
.. cpp:enumerator:: COLORSPACE_DIR_UNKNOWN = 0
.. cpp:enumerator:: COLORSPACE_DIR_TO_REFERENCE
.. cpp:enumerator:: COLORSPACE_DIR_FROM_REFERENCE
.. group-tab:: Python
.. py:class:: PyOpenColorIO.ColorSpaceDirection
Members:
* COLORSPACE_DIR_UNKNOWN
* COLORSPACE_DIR_TO_REFERENCE
* COLORSPACE_DIR_FROM_REFERENCE
ViewTransformDirection
======================
.. tabs::
.. group-tab:: C++
.. cpp:enum:: OpenColorIO::ViewTransformDirection
*Values:*
.. cpp:enumerator:: VIEWTRANSFORM_DIR_UNKNOWN = 0
.. cpp:enumerator:: VIEWTRANSFORM_DIR_TO_REFERENCE
.. cpp:enumerator:: VIEWTRANSFORM_DIR_FROM_REFERENCE
.. group-tab:: Python
.. py:class:: PyOpenColorIO.ViewTransformDirection
Members:
* VIEWTRANSFORM_DIR_UNKNOWN
* VIEWTRANSFORM_DIR_TO_REFERENCE
* VIEWTRANSFORM_DIR_FROM_REFERENCE
TransformDirection
==================
.. tabs::
.. group-tab:: C++
.. cpp:enum:: OpenColorIO::TransformDirection
*Values:*
.. cpp:enumerator:: TRANSFORM_DIR_UNKNOWN = 0
.. cpp:enumerator:: TRANSFORM_DIR_FORWARD
.. cpp:enumerator:: TRANSFORM_DIR_INVERSE
.. group-tab:: Python
.. py:class:: PyOpenColorIO.TransformDirection
Members:
* TRANSFORM_DIR_UNKNOWN
* TRANSFORM_DIR_FORWARD
* TRANSFORM_DIR_INVERSE
Interpolation
=============
.. tabs::
.. group-tab:: C++
.. cpp:enum:: OpenColorIO::Interpolation
Specify the interpolation type to use If the specified
interpolation type is not supported in the requested context (for
example, using tetrahedral interpolationon 1D LUTs) an exception
will be thrown.
INTERP_DEFAULT will choose the default interpolation type for the
requested context:
1D LUT INTERP_DEFAULT: LINEAR 3D LUT INTERP_DEFAULT: LINEAR
INTERP_BEST will choose the best interpolation type for the
requested context:
1D LUT INTERP_BEST: LINEAR 3D LUT INTERP_BEST: TETRAHEDRAL
Note: INTERP_BEST and INTERP_DEFAULT are subject to change in minor
releases, so if you care about locking off on a specific
interpolation type, we’d recommend directly specifying it.
*Values:*
.. cpp:enumerator:: INTERP_UNKNOWN = 0
.. cpp:enumerator:: INTERP_NEAREST = 1
nearest neighbor
.. cpp:enumerator:: INTERP_LINEAR = 2
linear interpolation (trilinear for Lut3D)
.. cpp:enumerator:: INTERP_TETRAHEDRAL = 3
tetrahedral interpolation (Lut3D only)
.. cpp:enumerator:: INTERP_CUBIC = 4
cubic interpolation (not supported)
.. cpp:enumerator:: INTERP_DEFAULT = 254
the default interpolation type
.. cpp:enumerator:: INTERP_BEST = 255
the ‘best’ suitable interpolation type
.. group-tab:: Python
.. py:class:: PyOpenColorIO.Interpolation
Members:
* INTERP_UNKNOWN
* INTERP_NEAREST
* INTERP_LINEAR
* INTERP_TETRAHEDRAL
* INTERP_CUBIC
* INTERP_DEFAULT
* INTERP_BEST
BitDepth
========
.. tabs::
.. group-tab:: C++
.. cpp:enum:: OpenColorIO::BitDepth
Used in a configuration file to indicate the bit-depth of a color
space, and by the Processor to specify the input and output
bit-depths of images to process. Note that Processor only supports:
UINT8, UINT10, UINT12, UINT16, F16 and F32.
*Values:*
.. cpp:enumerator:: BIT_DEPTH_UNKNOWN = 0
.. cpp:enumerator:: BIT_DEPTH_UINT8
.. cpp:enumerator:: BIT_DEPTH_UINT10
.. cpp:enumerator:: BIT_DEPTH_UINT12
.. cpp:enumerator:: BIT_DEPTH_UINT14
.. cpp:enumerator:: BIT_DEPTH_UINT16
.. cpp:enumerator:: BIT_DEPTH_UINT32
.. cpp:enumerator:: BIT_DEPTH_F16
.. cpp:enumerator:: BIT_DEPTH_F32
.. group-tab:: Python
.. py:class:: PyOpenColorIO.BitDepth
Members:
* BIT_DEPTH_UNKNOWN
* BIT_DEPTH_UINT8
* BIT_DEPTH_UINT10
* BIT_DEPTH_UINT12
* BIT_DEPTH_UINT14
* BIT_DEPTH_UINT16
* BIT_DEPTH_UINT32
* BIT_DEPTH_F16
* BIT_DEPTH_F32
Lut1DHueAdjust
==============
.. tabs::
.. group-tab:: C++
.. cpp:enum:: OpenColorIO::Lut1DHueAdjust
Used by :cpp:classLut1DTransform to control optional hue
restoration algorithm.
*Values:*
.. cpp:enumerator:: HUE_NONE = 0
.. cpp:enumerator:: HUE_DW3
.. group-tab:: Python
.. py:class:: PyOpenColorIO.Lut1DHueAdjust
Members:
* HUE_NONE
* HUE_DW3
ChannelOrdering
===============
.. tabs::
.. group-tab:: C++
.. cpp:enum:: OpenColorIO::ChannelOrdering
Used by PackedImageDesc to indicate the channel ordering of the
image to process.
*Values:*
.. cpp:enumerator:: CHANNEL_ORDERING_RGBA = 0
.. cpp:enumerator:: CHANNEL_ORDERING_BGRA
.. cpp:enumerator:: CHANNEL_ORDERING_ABGR
.. cpp:enumerator:: CHANNEL_ORDERING_RGB
.. cpp:enumerator:: CHANNEL_ORDERING_BGR
.. group-tab:: Python
.. py:class:: PyOpenColorIO.ChannelOrdering
Members:
* CHANNEL_ORDERING_RGBA
* CHANNEL_ORDERING_BGRA
* CHANNEL_ORDERING_ABGR
* CHANNEL_ORDERING_RGB
* CHANNEL_ORDERING_BGR
Allocation
==========
.. tabs::
.. group-tab:: C++
.. cpp:enum:: OpenColorIO::Allocation
*Values:*
.. cpp:enumerator:: ALLOCATION_UNKNOWN = 0
.. cpp:enumerator:: ALLOCATION_UNIFORM
.. cpp:enumerator:: ALLOCATION_LG2
.. group-tab:: Python
.. py:class:: PyOpenColorIO.Allocation
Members:
* ALLOCATION_UNKNOWN
* ALLOCATION_UNIFORM
* ALLOCATION_LG2
GpuLanguage
===========
.. tabs::
.. group-tab:: C++
.. cpp:enum:: OpenColorIO::GpuLanguage
Used when there is a choice of hardware shader language.
*Values:*
.. cpp:enumerator:: GPU_LANGUAGE_UNKNOWN = 0
.. cpp:enumerator:: GPU_LANGUAGE_CG
Nvidia Cg shader.
.. cpp:enumerator:: GPU_LANGUAGE_GLSL_1_0
OpenGL Shading Language.
.. cpp:enumerator:: GPU_LANGUAGE_GLSL_1_3
OpenGL Shading Language.
.. cpp:enumerator:: GPU_LANGUAGE_GLSL_4_0
OpenGL Shading Language.
.. cpp:enumerator:: GPU_LANGUAGE_HLSL_DX11
DirectX Shading Language.
.. group-tab:: Python
.. py:class:: PyOpenColorIO.GpuLanguage
Members:
* GPU_LANGUAGE_UNKNOWN
* GPU_LANGUAGE_CG
* GPU_LANGUAGE_GLSL_1_0
* GPU_LANGUAGE_GLSL_1_3
* GPU_LANGUAGE_GLSL_4_0
* GPU_LANGUAGE_HLSL_DX11
EnvironmentMode
===============
.. tabs::
.. group-tab:: C++
.. cpp:enum:: OpenColorIO::EnvironmentMode
*Values:*
.. cpp:enumerator:: ENV_ENVIRONMENT_UNKNOWN = 0
.. cpp:enumerator:: ENV_ENVIRONMENT_LOAD_PREDEFINED
.. cpp:enumerator:: ENV_ENVIRONMENT_LOAD_ALL
.. group-tab:: Python
.. py:class:: PyOpenColorIO.EnvironmentMode
Members:
* ENV_ENVIRONMENT_UNKNOWN
* ENV_ENVIRONMENT_LOAD_PREDEFINED
* ENV_ENVIRONMENT_LOAD_ALL
RangeStyle
==========
.. tabs::
.. group-tab:: C++
.. cpp:enum:: OpenColorIO::RangeStyle
A RangeTransform may be set to clamp the values, or not.
*Values:*
.. cpp:enumerator:: RANGE_NO_CLAMP = 0
.. cpp:enumerator:: RANGE_CLAMP
.. group-tab:: Python
.. py:class:: PyOpenColorIO.RangeStyle
Members:
* RANGE_NO_CLAMP
* RANGE_CLAMP
FixedFunctionStyle
==================
.. tabs::
.. group-tab:: C++
.. cpp:enum:: OpenColorIO::FixedFunctionStyle
Enumeration of the :cpp:class:FixedFunctionTransform transform
algorithms.
*Values:*
.. cpp:enumerator:: FIXED_FUNCTION_ACES_RED_MOD_03 = 0
Red modifier (ACES 0.3/0.7)
.. cpp:enumerator:: FIXED_FUNCTION_ACES_RED_MOD_10
Red modifier (ACES 1.0)
.. cpp:enumerator:: FIXED_FUNCTION_ACES_GLOW_03
Glow function (ACES 0.3/0.7)
.. cpp:enumerator:: FIXED_FUNCTION_ACES_GLOW_10
Glow function (ACES 1.0)
.. cpp:enumerator:: FIXED_FUNCTION_ACES_DARK_TO_DIM_10
Dark to dim surround correction (ACES 1.0)
.. cpp:enumerator:: FIXED_FUNCTION_REC2100_SURROUND
Rec.2100 surround correction (takes one double for the gamma
param)
.. cpp:enumerator:: FIXED_FUNCTION_RGB_TO_HSV
Classic RGB to HSV function.
.. cpp:enumerator:: FIXED_FUNCTION_XYZ_TO_xyY
CIE XYZ to 1931 xy chromaticity coordinates.
.. cpp:enumerator:: FIXED_FUNCTION_XYZ_TO_uvY
CIE XYZ to 1976 u’v’ chromaticity coordinates.
.. cpp:enumerator:: FIXED_FUNCTION_XYZ_TO_LUV
CIE XYZ to 1976 CIELUV colour space (D65 white)
.. group-tab:: Python
.. py:class:: PyOpenColorIO.FixedFunctionStyle
Members:
* FIXED_FUNCTION_ACES_RED_MOD_03
* FIXED_FUNCTION_ACES_RED_MOD_10
* FIXED_FUNCTION_ACES_GLOW_03
* FIXED_FUNCTION_ACES_GLOW_10
* FIXED_FUNCTION_ACES_DARK_TO_DIM_10
* FIXED_FUNCTION_REC2100_SURROUND
* FIXED_FUNCTION_RGB_TO_HSV
* FIXED_FUNCTION_XYZ_TO_xyY
* FIXED_FUNCTION_XYZ_TO_uvY
* FIXED_FUNCTION_XYZ_TO_LUV
ExposureContrastStyle
=====================
.. tabs::
.. group-tab:: C++
.. cpp:enum:: OpenColorIO::ExposureContrastStyle
Enumeration of the :cpp:class:ExposureContrastTransform
transform algorithms.
*Values:*
.. cpp:enumerator:: EXPOSURE_CONTRAST_LINEAR = 0
E/C to be applied to a linear space image.
.. cpp:enumerator:: EXPOSURE_CONTRAST_VIDEO
E/C to be applied to a video space image.
.. cpp:enumerator:: EXPOSURE_CONTRAST_LOGARITHMIC
E/C to be applied to a log space image.
.. group-tab:: Python
.. py:class:: PyOpenColorIO.ExposureContrastStyle
Members:
* EXPOSURE_CONTRAST_LINEAR
* EXPOSURE_CONTRAST_VIDEO
* EXPOSURE_CONTRAST_LOGARITHMIC
CDLStyle
========
.. tabs::
.. group-tab:: C++
.. cpp:enum:: OpenColorIO::CDLStyle
Enumeration of the :cpp:class:CDLTransform transform
algorithms.
**Note**
The default for reading .cc/.ccc/.cdl files, config file YAML,
and CDLTransform is no-clamp, since that is what is primarily
desired in VFX. However, the CLF format default is ASC.
*Values:*
.. cpp:enumerator:: CDL_ASC = 0
ASC CDL specification v1.2.
.. cpp:enumerator:: CDL_NO_CLAMP
CDL that does not clamp.
.. cpp:enumerator:: CDL_TRANSFORM_DEFAULT = `CDL_NO_CLAMP`_
.. group-tab:: Python
.. py:class:: PyOpenColorIO.CDLStyle
Members:
* CDL_ASC
* CDL_NO_CLAMP
* CDL_TRANSFORM_DEFAULT
NegativeStyle
=============
.. tabs::
.. group-tab:: C++
.. cpp:enum:: OpenColorIO::NegativeStyle
Negative values handling style for ExponentTransform and
ExponentWithLinearTransform transform algorithms.
*Values:*
.. cpp:enumerator:: NEGATIVE_CLAMP = 0
Clamp negative values.
.. cpp:enumerator:: NEGATIVE_MIRROR
Positive curve is rotated 180 degrees around the origin to
handle negatives.
.. cpp:enumerator:: NEGATIVE_PASS_THRU
Negative values are passed through unchanged.
.. cpp:enumerator:: NEGATIVE_LINEAR
Linearly extrapolate the curve for negative values.
.. group-tab:: Python
.. py:class:: PyOpenColorIO.NegativeStyle
Members:
* NEGATIVE_CLAMP
* NEGATIVE_MIRROR
* NEGATIVE_PASS_THRU
* NEGATIVE_LINEAR
DynamicPropertyType
===================
.. tabs::
.. group-tab:: C++
.. cpp:enum:: OpenColorIO::DynamicPropertyType
*Values:*
.. cpp:enumerator:: DYNAMIC_PROPERTY_EXPOSURE = 0
Image exposure value (double floating point value)
.. cpp:enumerator:: DYNAMIC_PROPERTY_CONTRAST
Image contrast value (double floating point value)
.. cpp:enumerator:: DYNAMIC_PROPERTY_GAMMA
Image gamma value (double floating point value)
.. group-tab:: Python
.. py:class:: PyOpenColorIO.DynamicPropertyType
Members:
* DYNAMIC_PROPERTY_EXPOSURE
* DYNAMIC_PROPERTY_CONTRAST
* DYNAMIC_PROPERTY_GAMMA
OptimizationFlags
=================
.. tabs::
.. group-tab:: C++
.. cpp:enum:: OpenColorIO::OptimizationFlags
Provides control over how the ops in a Processor are combined in
order to improve performance.
*Values:*
.. cpp:enumerator:: OPTIMIZATION_NONE = 0x00000000
Do not optimize.
.. cpp:enumerator:: OPTIMIZATION_IDENTITY = 0x00000001
Replace identity ops (other than gamma).
.. cpp:enumerator:: OPTIMIZATION_IDENTITY_GAMMA = 0x00000002
Replace identity gamma ops.
.. cpp:enumerator:: OPTIMIZATION_PAIR_IDENTITY_CDL = 0x00000004
Replace a pair of ops where one is the inverse of the other.
.. cpp:enumerator:: OPTIMIZATION_PAIR_IDENTITY_EXPOSURE_CONTRAST =
0x00000008
.. cpp:enumerator:: OPTIMIZATION_PAIR_IDENTITY_FIXED_FUNCTION = 0x00000010
.. cpp:enumerator:: OPTIMIZATION_PAIR_IDENTITY_GAMMA = 0x00000020
.. cpp:enumerator:: OPTIMIZATION_PAIR_IDENTITY_LUT1D = 0x00000040
.. cpp:enumerator:: OPTIMIZATION_PAIR_IDENTITY_LUT3D = 0x00000080
.. cpp:enumerator:: OPTIMIZATION_PAIR_IDENTITY_LOG = 0x00000100
.. cpp:enumerator:: OPTIMIZATION_COMP_EXPONENT = 0x00000200
Compose a pair of ops into a single op.
.. cpp:enumerator:: OPTIMIZATION_COMP_GAMMA = 0x00000400
.. cpp:enumerator:: OPTIMIZATION_COMP_MATRIX = 0x00000800
.. cpp:enumerator:: OPTIMIZATION_COMP_LUT1D = 0x00001000
.. cpp:enumerator:: OPTIMIZATION_COMP_LUT3D = 0x00002000
.. cpp:enumerator:: OPTIMIZATION_COMP_RANGE = 0x00004000
.. cpp:enumerator:: OPTIMIZATION_COMP_SEPARABLE_PREFIX = 0x00008000
For integer and half bit-depths only, replace separable ops
(i.e. no channel crosstalk ops) by a single 1D LUT of input
bit-depth domain.
.. cpp:enumerator:: OPTIMIZATION_LUT_INV_FAST = 0x00010000
Implement inverse Lut1D and Lut3D evaluations using a a forward
LUT (faster but less accurate). Note that GPU evals always do
FAST.
.. cpp:enumerator:: OPTIMIZATION_NO_DYNAMIC_PROPERTIES = 0x00020000
Turn off dynamic control of any ops that offer adjustment of
parameter values after finalization (e.g. ExposureContrast).
.. cpp:enumerator:: OPTIMIZATION_ALL = 0xFFFFFFFF
Apply all possible optimizations.
.. cpp:enumerator:: OPTIMIZATION_LOSSLESS = (`OPTIMIZATION_IDENTITY`_ | `OPTIMIZATION_IDENTITY_GAMMA`_ | `OPTIMIZATION_PAIR_IDENTITY_CDL`_ | `OPTIMIZATION_PAIR_IDENTITY_EXPOSURE_CONTRAST`_ | `OPTIMIZATION_PAIR_IDENTITY_FIXED_FUNCTION`_ | `OPTIMIZATION_PAIR_IDENTITY_GAMMA`_ | `OPTIMIZATION_PAIR_IDENTITY_LOG`_ | `OPTIMIZATION_PAIR_IDENTITY_LUT1D`_ | `OPTIMIZATION_PAIR_IDENTITY_LUT3D`_ | `OPTIMIZATION_COMP_EXPONENT`_ | `OPTIMIZATION_COMP_GAMMA`_ | `OPTIMIZATION_COMP_MATRIX`_ | `OPTIMIZATION_COMP_RANGE`_)
.. cpp:enumerator:: OPTIMIZATION_VERY_GOOD = (`OPTIMIZATION_LOSSLESS`_ | `OPTIMIZATION_COMP_LUT1D`_ | `OPTIMIZATION_LUT_INV_FAST`_ | `OPTIMIZATION_COMP_SEPARABLE_PREFIX`_)
.. cpp:enumerator:: OPTIMIZATION_GOOD = `OPTIMIZATION_VERY_GOOD`_ | `OPTIMIZATION_COMP_LUT3D`_
.. cpp:enumerator:: OPTIMIZATION_DRAFT = `OPTIMIZATION_ALL`_
For quite lossy optimizations.
.. cpp:enumerator:: OPTIMIZATION_DEFAULT = `OPTIMIZATION_VERY_GOOD`_
.. group-tab:: Python
.. py:class:: PyOpenColorIO.OptimizationFlags
Members:
* OPTIMIZATION_NONE
* OPTIMIZATION_IDENTITY
* OPTIMIZATION_IDENTITY_GAMMA
* OPTIMIZATION_PAIR_IDENTITY_CDL
* OPTIMIZATION_PAIR_IDENTITY_EXPOSURE_CONTRAST
* OPTIMIZATION_PAIR_IDENTITY_FIXED_FUNCTION
* OPTIMIZATION_PAIR_IDENTITY_GAMMA
* OPTIMIZATION_PAIR_IDENTITY_LUT1D
* OPTIMIZATION_PAIR_IDENTITY_LUT3D
* OPTIMIZATION_PAIR_IDENTITY_LOG
* OPTIMIZATION_COMP_EXPONENT
* OPTIMIZATION_COMP_GAMMA
* OPTIMIZATION_COMP_MATRIX
* OPTIMIZATION_COMP_LUT1D
* OPTIMIZATION_COMP_LUT3D
* OPTIMIZATION_COMP_RANGE
* OPTIMIZATION_COMP_SEPARABLE_PREFIX
* OPTIMIZATION_LUT_INV_FAST
* OPTIMIZATION_NO_DYNAMIC_PROPERTIES
* OPTIMIZATION_ALL
* OPTIMIZATION_LOSSLESS
* OPTIMIZATION_VERY_GOOD
* OPTIMIZATION_GOOD
* OPTIMIZATION_DRAFT
* OPTIMIZATION_DEFAULT

Some files were not shown because too many files have changed in this diff Show More