* 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>
* 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>
* 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>
* - 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>
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>
* 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>
* 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>
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>
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>
* 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>
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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
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>
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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
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>
* 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>
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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* - 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* - 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>
* 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>
* 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>
* - 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>
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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* * 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>
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>
* 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>
* * 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>
* * 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>
* -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>
* 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>
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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* '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>
* 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>
* 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>
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>
* // 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>
* 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>
* 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>
* 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>
- 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* Add TSC meeting notes for 11-09-2020
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Clean up notes
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Add Config working group notes for 11-03-2020
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Correct apologies list
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Fix typos
Signed-off-by: Michael Dolan <michdolan@gmail.com>
The name was changed to OCIO_VERSION_STR in PR 1167, but that can break
other software that might be looking for that symbol.
Fixes 1186
Signed-off-by: Larry Gritz <lg@larrygritz.com>
* Update config default version and optimization enhancements.
Default config version is now the latest version (2 for the time being).
Tests have been adjusted to take this into account.
New optimization flag: OPTIMIZATION_SIMPLIFY_OPS: break down certain ops into simpler ops whne possible. Today, only CDL make use of this, and could be replaced by a matrix when possible. The goal is to avoid complex functions and allow more ops to be combined. The flag is enabled with the default optimization.
New optimization flag: OPTIMIZATION_FAST_LOG_EXP_POW: SSE implementation of log, power, exp is faster but less precise. When this new flag is set the fast implement is used, else the non SSE implementation is used. Optimization default does not include the file, so the non SSE version is used. This applies to CDL, ExposureContrast, Gamma, Log (ut not to legacy Exponent).
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Change baker test from a string compare to a value compare to fix failing test on one windows target
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Fix config tests after merge from master
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Expose added flags to python
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Create PROCESS.md for process documentation
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Add Roadmap to feature proposal process
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Revise design proposal section
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Address required approval feedback
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Revise committer approver rules based on feedback
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Adjust merge notice wording
Signed-off-by: Michael Dolan <michdolan@gmail.com>
Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
* Grading ops related improvements.
Improve uniforms implementation and usage.
- Use vector (instead of array) for variable size containers name.
- Introduce Float3.
- Replace int2 container by int vector.
- Reuse the Uniform structure in the glsl implementation.
Precompute grading primary values to simplify to simplify renderers.
Fix GradingRGBCurveOpGPU uniform declaration for offsets and adjust to VectorInt.
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Fix merge issue
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Fix alignement
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
* Adsk Contrib - Add processor caches and improve the context variable support
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Fix merge issues with the Grading pull request
Signed-off-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
* Follow up on conflicting merges
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Some changes following the code review
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Updated Transforms python unit tests first by breaking them down. Starting with:
- AllocatioNTransformTest
- ColorSpaceTransformTest
Signed-off-by: Mei Chu <meimchu@gmail.com>
* Updated AllocationTransform and ColorSpaceTransform tests based on feedback. Also updated ExponentTransformTest and LogTransformTest.
Signed-off-by: Mei Chu <meimchu@gmail.com>
* Updated FileTransformTest. Also cleaned up some previous transform tests based on recent pybind changes.
Signed-off-by: Mei Chu <meimchu@gmail.com>
* Updated PyFileTransform to match #1042.
Signed-off-by: Mei Chu <meimchu@gmail.com>
* Updated ExponentWithLinearTransform python test.
Signed-off-by: Mei Chu <meimchu@gmail.com>
* Updated ColorSpaceTransform constructor from dir to direction.
Signed-off-by: Mei Chu <meimchu@gmail.com>
* Updated ExposureContrastTransformTest and addressed previous feedbacks.
Signed-off-by: Mei Chu <meimchu@gmail.com>
* Added new ExposureContrastTransformTest to OCIOTestSuite.
Signed-off-by: Mei Chu <meimchu@gmail.com>
* Updated ExposureContrastTransform's python binding.
Signed-off-by: Mei Chu <meimchu@gmail.com>
* Added FixedFunctionTransform python test. Small typo fix for ExposureContrastTransform python test.
Signed-off-by: Mei Chu <meimchu@gmail.com>
* Fixed ExposureContrastTransform python test.
Signed-off-by: Mei Chu <meimchu@gmail.com>
* Updated GroupTransform python unit test.
Signed-off-by: Mei Chu <meimchu@gmail.com>
* Updated ExponentWithLinearTransform and ExposureContrastTransform python unit tests per feedback.
Signed-off-by: Mei Chu <meimchu@gmail.com>
* Add grading ops
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Fixing build issues
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Build issue (forgot these)
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Python test syntax
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Adjust error for a non SSE test failure on linux
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Fix build break after merge (validate instead of sanaityCheck)
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Revert find module patch
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Instead of trying to revert the commit before the merge, use master version of the files.
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* When style of GradingTone is changed, values are reset to defaults, but precomputed values might not be updated until the values are modified.
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Uniforms for offsets for grading curves are declared with the right size, but the getSize was wrong with the risk of not updating some offset values.
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
* Initial CodeBuild setup for GH Actions
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Remove extra comment
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Remove unnecessary quotes
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Disable Python build/test
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Update CodeBuild project name from ARN
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Enable headless GPU rendering, remove GLEW workaround from Analysis workflow
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Specify headless ON
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Pull changes from gpu_ci_test branch
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Remove GLEW workaround from buildspec
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Add GPU CI status badge to README
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Disable GPU CI on forks
Signed-off-by: Michael Dolan <michdolan@gmail.com>
Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
* Add TSC notes from 08-21-2020
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Revise notes from feedback
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Rename Config::GetProcessor to GetProcessorFromConfigs
Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>
* Update python bindings, docs, and tests to match C++ API changes
Rename Config.GetProcessor static method to Config.GetProcessorFromConfigs
Signed-off-by: Zach Lewis <zachcanbereached@gmail.com>
* Remove duplicated -t flag
Signed-off-by: Rémi Achard <remiachard@gmail.com>
* Remove extra carriage return
Signed-off-by: Rémi Achard <remiachard@gmail.com>
* Add LUT inverse direction flag
Signed-off-by: Rémi Achard <remiachard@gmail.com>
* Fix ociochecklut --gpu not working correctly for LUT1D
In OglApp::applyGPU, call to updateImage() update the currently bound GL_TEXTURE_2D
target, by doing so, the latter sampling of a 1DLUT that was allocated as
a GL_TEXTURE_2D (because of it's size), will sample the wrong texture.
Solution proposed is to call OglApp::setShader() again after image was updated.
Signed-off-by: Rémi Achard <remiachard@gmail.com>
* Fixing pkgconfig file installation
Signed-off-by: Rémi Achard <remiachard@gmail.com>
* Fix resources binding directly from inside drawing method
Signed-off-by: Rémi Achard <remiachard@gmail.com>
* Fix pkgconfig installation on non-windows platforms
Signed-off-by: Rémi Achard <remiachard@gmail.com>
* Fix pkgconfig generation
Signed-off-by: Rémi Achard <remiachard@gmail.com>
* Activate correct texture unit before uploading image (by @hodoulp)
Signed-off-by: Rémi Achard <remiachard@gmail.com>
Co-authored-by: Patrick Hodoul <patrick.hodoul@autodesk.com>
* update for hiero and substance logos, fixing typo
Signed-off-by: Carol Payne <carolp@netflix.com>
* fixing logo scale on safari
Signed-off-by: Carol Payne <carolp@netflix.com>
* updates for images, adding spiderverse credit, text fix
Signed-off-by: Carol Payne <carolp@netflix.com>
* Disable yaml-cpp package registry check, improve CMake messaging
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Make OCIO_INSTALL_EXT_PACKAGES case insensitive and validate
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Fix typo
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Disable package registry globally
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Initial PR for new OCIO homepage
Signed-off-by: Carol Payne <carolp@netflix.com>
* Updating filenames for CI1
Signed-off-by: Carol Payne <carolp@netflix.com>
* adding back one file for the build, updating site name
Signed-off-by: Carol Payne <carolp@netflix.com>
* updating site name and image filename
Signed-off-by: Carol Payne <carolp@netflix.com>
* Add 08-03-2020 TSC meeting notes
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Rename 2020_07_06.md to 2020-07-06.md
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Fix typos, adjust to new meeting notes folder structure
Signed-off-by: Michael Dolan <michdolan@gmail.com>
Co-authored-by: Patrick Hodoul <patrickhodoul@gmail.com>
* Fix doc CI for macOS and Windows
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Access pip via python interpreter
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Enable pip versbose logging to debug Linux failure
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Disable pip verbose logging
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* initial doc restructure
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
* rename file to avoid conflict
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
* rename directory to avoid conflict`
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
* fix readme
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
* add images back
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
* add python dependencies
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
* remove min version
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
* add find_python_package
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
* update dependencies
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
* add python2 blocking to doc generation
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
* add local pip install pythonpath
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
* remove recommonmark
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
* add min version
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
* reduce python dependencies
modify python macro to support dependencies
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
* update dependencies
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
* update python pip prefix
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
* swap to original sphinx-press-theme
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
* reconfigure docs target dependencies
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
* temporarily disable windows docs builds
Signed-off-by: Sean Cooper <sean@seancooper.xyz>
* Add documentation working group notes from 06-12-2020
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Correct section title
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Fix typo
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Fix typo, add notes from 06-18-2020 meeting
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Add defStr to transform classes, cleanup param names
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Update unit test params
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Update param name in DisplayViewTransform test
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Initial update to python unit test module LookTest.
Signed-off-by: Mei Chu <meimchu@gmail.com>
* Updated PyLook and added some extra wrong type tests for LookTest.py
Signed-off-by: Mei Chu <meimchu@gmail.com>
* Updated LookTest and PyLook according to feedbacks.
Signed-off-by: Mei Chu <meimchu@gmail.com>
* Updated python LookTest according to further feedbacks.
Signed-off-by: Mei Chu <meimchu@gmail.com>
* Updated constructor method names per feedback.
Signed-off-by: Mei Chu <meimchu@gmail.com>
Co-authored-by: Patrick Hodoul <patrickhodoul@gmail.com>
* Add notes from 06-01-2020 TSC meeting
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Fix typo
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Adsk Contrib - Built-in Transforms
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Fix MSVC build break
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Add Python bindings
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Fix a computation overflow
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Fix a computation overflow, part II
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Revert previous changes; Impose the right overflow
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Fix Python bindings
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Use CI builds to print values on all machines/compilers
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Use CI builds to print values on all machines/compilers, disable the prints
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Use CI builds to print values on all machines/compilers, remove some prints
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Use CI builds to print values on all machines/compilers, remove some prints
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Use CI builds to print values on all machines/compilers, remove some prints
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Use CI builds to print values on all machines/compilers, remove some prints
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Use CI builds to print values on all machines/compilers, remove some prints
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Try to bypass the AppleClang 11.0.3 bug
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Try to bypass the AppleClang 11.0.3 bug
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Try to bypass the AppleClang 11.0.3 bug
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Try to bypass the AppleClang 11.0.3 bug
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Try to bypass the AppleClang 11.0.3 bug
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Try to bypass the AppleClang 11.0.3 bug
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Try to bypass the AppleClang 11.0.3 bug
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Try to bypass the AppleClang 11.0.3 bug
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Try to bypass the AppleClang 11.0.3 bug
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Warning when built-in camera transforms are not built
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Improve the warning message
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Add notes for TSC Meeting 05-04-2020
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Fixes from review
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Add Carol Payne to GOVERNANCE.md
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Add Carol Payne to TSC meeting template
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Fix Analysis failure, plus GHA changes to test
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Restore Analysis workflow triggers
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Added duplicate check to other functions
Signed-off-by: Rashil Gandhi <rashil2000@gmail.com>
* Covered some more functions
Signed-off-by: Rashil Gandhi <rashil2000@gmail.com>
* Added check to Matrix transform and a test
Signed-off-by: Rashil Gandhi <rashil2000@gmail.com>
* Made requested changes and added Config test
Signed-off-by: Rashil Gandhi <rashil2000@gmail.com>
* Added check in Config and a test for it
Signed-off-by: Rashil Gandhi <rashil2000@gmail.com>
Co-authored-by: Patrick Hodoul <patrickhodoul@gmail.com>
* Add version detection to pybind11 CMake module
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Prioritize location override
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Fix missing Python package case
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Clean up messaging; require PythonInterp when needed
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Move Python fallback to condition
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Add header version detection
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Add ci-ocio:2020 images, new jobs, GHA badges, remove AZP
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Fix typos
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Adsk contrib - Fix VC++ compilation warnings & some SonarCloud reported bugs
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Fix some doc warnings
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Fix macos build breaks
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Fix macos build breaks, part II
Signed-off-by: Patrick Hodoul <Patrick@BANPC13RSC2.ads.autodesk.com>
* Fix Windows build break: C++17 warning related to nodiscard
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Fix Windows build break: C++17 warning related to nodiscard, part II
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Fix Windows build break: C++17 warning related to nodiscard, part III
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Fix Windows build break: C++17 warning related to nodiscard, part IV
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* C++ version detection improvment
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* C++ version detection improvment, part II
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Fix Windows build break: C++17 warning related to nodiscard, part V
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Fix Windows build break: C++17 warning related to nodiscard, part VI
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
* Fix Windows build break: C++17 warning related to nodiscard, part VI
Signed-off-by: Patrick Hodoul <Patrick.Hodoul@autodesk.com>
Co-authored-by: Patrick Hodoul <Patrick@BANPC13RSC2.ads.autodesk.com>
In file parsing there are tests like Lower(x) == "spilut". However this was
using the locale dependent std::tolower, which for Turkish does not change
I to i.
Instead this implements a custom Lower() function which is not affected by
locale and so can be used for file parsing.
Signed-off-by: Brecht Van Lommel <brecht@blender.org>
Co-authored-by: Patrick Hodoul <patrickhodoul@gmail.com>
* Review ops finalization.
- ops are only finalized once.
- clarify LUT inversion
- move direction to MatrixOpData and RangeOpData
- change how FixedFunction surround inverse is saved
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Fix build after merge from main.
- adjust gpu test set-up.
- expose new api function to python.
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
Co-authored-by: Patrick Hodoul <patrickhodoul@gmail.com>
* Refactor opengl usage for apps and utit tests.
All opengl code used by command line apps (and gpu tests) has been refactor.
Ociodisplay is also using the refactored code and still uses opengl directly.
- add gpu support to ociochecklut.
- add optimization level to ociodisplay.
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Build fix: use {} instead of () for makefile.
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
Co-authored-by: Patrick Hodoul <patrickhodoul@gmail.com>
* Rewrite Python bindings with pybind11
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Add virtual destructor to PyImageDesc
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Fix MatrixTransform array sizes, CMake libpython linking
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Fix reported typos/issues
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Fix Lut1DTransform.getData impl
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Review feedback fixes
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Case-insensitive compare, improve PyImageDesc
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Fix GCC default constructor error
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Rename Pybind11 to pybind11, match target name to config
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Add LogCameraTransform, missing methods, Transform validation
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Minor cleanup
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Update LogCameraTransform convenience constructor
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Add cmake support for OCIO_LIBNAME_SUFFIX
This patch from Lee Kerley makes it easier for people making custom
builds to add an optional suffix to the library name itself.
The purpose is to prevent a studio build for internal tools from
conflicting with a different build of OCIO that might be embedded in a
DCC app. The existing option to customize the inner namespace does a
good job preventing symbol clashes at link time, but does not address
the problem where both the DCC app and the plugin we write end up
callled libOpenColorIO.so, so whichever is first in the
`LD_LIBRARY_PATH` will win and the other won't be found.
This is a patch against RB-1.1, because that's what we need ASAP, but
after this is merged, we will submit another one against master (the
build system has changed enough it won't just cherry pick).
Signed-off-by: Lee Kerley <lkerley@imageworks.com>
* Additional cleanup as suggested by Patrick Hodoul
Signed-off-by: Larry Gritz <lg@larrygritz.com>
Co-authored-by: Lee Kerley <lkerley@imageworks.com>
Co-authored-by: Patrick Hodoul <patrickhodoul@gmail.com>
* Display reference space
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Fix tests on linux & macos: expacted exception message is not the same because typeid(*this).name() does not give the same result on different platforms.
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Change how ColorSpace is serialized
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
Co-authored-by: Patrick Hodoul <patrickhodoul@gmail.com>
* Upgrade EOL AZP agents
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Disable Windows 2019 build with TODO
Signed-off-by: Michael Dolan <michdolan@gmail.com>
* Adding file rules to config.
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. 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. 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. It has the keys:
* name: must be "Default".
* colorspace : Color space name to be returned.
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Remove unused constexpr.
Do not check system specific regex error.
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Add comments.
Rename some FileRules releated functions for clarity.
Add new FileRules function to insert the "ColorSpaceNamePathSearch" rule with specifying its name.
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Add new helper function setDefaultRuleColorSpace.
More comments.
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Rework GroupTransform interface and remove transform functions using float when there is a double version.
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Update PyExponentTransform.cpp
Replace tabs by spaces
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Using constexpr when possible.
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Fix conflict resolution
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Remove bit-depth from ops.
Only keep file-bitdepth to save ops and for LUT 1D CPU op.
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Remove unused variable.
Remove multiple unsequenced modifications.
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* One more multiple unsequenced modifications.
Signed-off-by: Bernard Lefebvre <bernard.lefebvre@autodesk.com>
* Add nightly cron, Azure cleanup
Sunday has a full forced cron CI build. Monday-Saturday now have
a full CI build if code has been changed.
Moved "latest" builds to ci-common image and removed explicit lib
path cmake overrides. They pointed to the default install location
for each lib, so weren't necessary.
Implemented macOS python install improvement suggested by OpenEXR.
Signed-off-by: michdolan <michdolan@gmail.com>
* Remove hard-coded brew version
Signed-off-by: michdolan <michdolan@gmail.com>
* Temp enable all builds, test nullability flag
Signed-off-by: michdolan <michdolan@gmail.com>
* Fix SONAR_TOKEN, switch to ci-base image
Signed-off-by: michdolan <michdolan@gmail.com>
* Use sonar variable group for login
Signed-off-by: michdolan <michdolan@gmail.com>
* Move variables declaration to root azure pipeline
Signed-off-by: michdolan <michdolan@gmail.com>
* Namespace not needed for variable group
Signed-off-by: michdolan <michdolan@gmail.com>
* Re-enable SonarCloud condition. Clean up.
Signed-off-by: michdolan <michdolan@gmail.com>
* Replace putenv with _putenv_s/setenv
* Fix possible buffer overrun in strncpy call
* Switch from stringCopy macro to snprintf
Signed-off-by: Matthew Cong <1372750+matthewdcong@users.noreply.github.com>
Rename LICENSE.md to LICENSE and LICENSE-THIRD-PARTY.md -> THIRD-PARTY.md to get around GitHub license checks.
Signed-off-by: John Mertic <jmertic@linuxfoundation.org>
* Fix CTF version when saving CDL. Fix 3D LUT tetrahedal intepolation saving in CTF. Save an identity matrix when saving an empty transform in CTF. Enhance ociowrite verbose mode.
* Matrix with Alpha are not allowed in CLF.
Validate ops before writing.
* Fix merge from master
* Remove legacy LUT structs and replace them with LUT OpData.
* Fix linux build issues
* Fix merge issue
* Merge issues. Namespace for tests and cast.
* Add comment on GetBitdepthFromMaxValue and redo implementation.
* Swap SPDX license statements throughout
* Fix whitespace
* Revert CDL (CineSite)
* Move third-party license notices to dedicated file
* Recommendations to LICENSE.md that fixes verbiage to align with the standard BSD-3-Clause license.
* Added Third Party License link to README.md
* Add acknowledgment section to README
* Add Maya, Houdini, and "other" link
* Update new source license statements
* Fix typo
* Cleanup RangeTransform merge
Centos 7 ships with an older version of docbook that will fail to build the man pages of expat.
As the documentation is not required for OCIO, I am disabling the documentation of expat when built inline to avoid the issue.
* Adsk Contrib - Enable GPU unit tests on macOS
* Fix typo
* macOS - Silence deprecated warnings
* macOS - Silence deprecated warnings, part II
* macOS - Silence deprecated warnings, part III
* Output GPU information when running GPU unit tests
* Disable GPU Unit tests
* Fix typo in __declspec macro
* Mingw GCC define __GNUC__ but need to use Windows export decorators, so rearrange defines
* Fix WIN32 macro names
* Remove unneded extra define conditions
* Remove more extra defines condition
* Replace self-defined macros for Windows
* Restore mistakenly removed ifdef
* Create 2019-06-03.md
* Update docs/tsc/meetings/2019-06-03.md
Co-Authored-By: Michael Dolan <michdolan@gmail.com>
* Update docs/tsc/meetings/2019-06-03.md
Co-Authored-By: Michael Dolan <michdolan@gmail.com>
* Exclude ci_test from Travis CI
* Exclude ci_test from AppVeyor CI
* Switch to inclusive branch filtering
* Switch to inclusive branch filtering
* Add stricter RB branch filtering
* Add CTF parsing for FixedFunction, Gamma and Log.
Refactor CTF parsing code.
* Fix after merge from master where new types have been introduced.
* Refactor to enhance coherence.
* Update src/OpenColorIO/fileformats/FileFormatCTF.cpp
Co-Authored-By: Michael Dolan <michdolan@gmail.com>
* Update src/OpenColorIO/fileformats/ctf/CTFReaderHelper.cpp
Co-Authored-By: Michael Dolan <michdolan@gmail.com>
* Update src/OpenColorIO/fileformats/ctf/CTFReaderHelper.cpp
Co-Authored-By: Michael Dolan <michdolan@gmail.com>
* Update src/OpenColorIO/fileformats/ctf/CTFReaderHelper.cpp
Co-Authored-By: Michael Dolan <michdolan@gmail.com>
* Update src/OpenColorIO/fileformats/ctf/CTFReaderHelper.cpp
Co-Authored-By: Michael Dolan <michdolan@gmail.com>
* Update src/OpenColorIO/fileformats/ctf/CTFReaderHelper.cpp
Co-Authored-By: Michael Dolan <michdolan@gmail.com>
Exposure contrast has 3 properties that can be dynamic. When a property is dynamic it can be change after the processor has been created and optimized.
If 2 ops do have the same dynamic property, both will be controlled together.
Rework GPU unit test infrastructure to allow the same shader to be used several time (so that dynamic properties can be tested).
* Adsk Contrib - Enable 'warnings as error' for the Linux CI builds
* Fix warnings
* Fix Clang warnings
* Fix warning
* Fix tab vs spaces issue
* Fix Merge issue: 'warnings as errors' finally found a bug
* Port further LUT tests using CLF/CTF parsing.
* Update Lut1DOpGPU.cpp
Shorten some very long lines
* Fix issues after merge from master - compCLFversion is mandatory for clf and BuildOpsTest has changed.
Add an interface to manipulate search paths one by one, allowing users to bypass the Windows issue with ":" being used as a path separator in the existing interface.
* Adsk Contrib - Add the infrastructure for the pixel format support
* Fix Linux build break
* Fix code review comments
* Finalize the pull request
* Fix merge build breaks
* Add a file to control eol of test files.
We favour lf on all platforms for most files.
One matrix_windows.clf is used to test crlf on different platforms.
* Update .gitattributes
eol, not eof
Co-Authored-By: BernardLefebvre <37628108+BernardLefebvre@users.noreply.github.com>
* Adsk Contrib - Add the FixedFunctionOp support
* Fix a missing 'override'
* Fix a missing 'override'
* Add a whitespace to unlock the CI builds
* Add explanations to the FixedTransform styles
* Add line number to the Yaml parsing error messages
* Add a unit test to validate the line number
* Fix code review comments
* Improve the error messages
* Improve error messages
* Fix a merge conflict
* Rework LogOpData to get ready for Log CTF parsing.
Add LogAffineTransform.
Add SSE and non SSE code path CPU and GPU implementation.
* LogAffine transform: remove enum defining parameters order from the API. Adding get/set for each paramater.
* Fix build after bad merge
* Adjust SSE version of the baked LUT in test.
* Adsk Contrib - Add the Gamma Op as defined by the ACES CLF specification
* Fix build break
* Add missing dependency
* Fix OSX build break
* Fix merge build breaks
* Fix merge build breaks
* Comment fixes
* Address the code review comments
* Improve the RenderParams structure
* Change to have ExponentTransform and ExponentWithLinearTransform (instead of the former GammaTransform) in the public API, and in the config file.
* Fix code review comments
* Fix code review comments
* Add some GPU unit tests for OCIO v1
* Improve the validation error message
* Fix code review comments
* Fix code review comments
* Add double support to ExponentTransform
* Fix code review comments
* Fix merge build breaks
* Fix platform specific 'Not SSE' computation precision
The Windows batch file example was for OCIO v1.
I've updated the content to OCIO v2, added dependencies for GPU unit tests and added some explanations.
* Add 02-25-2019 notes as RST and correct template TSC membership
* Corrected some illegal characters
* TSC note revisions and further template correction
We recently tried to change the OCIO code so that it would build
against both OIIO 2.0 as well as the older 1.x versions. In doing so,
we inadvertently broke OCIO for C++03.
This patch still requires C++11 when building against OIIO 2.x (it has
to), but is fine with C++03 if using older OIIO.
This PR implements Issue #610. It adds a new FileFormat to read Academy/ASC Common LUT Format (CLF) files. This fully implements the S-2014-006 spec from the Academy.
Note: you will see references to CTF in the code. The CLF support is based on the SynColor CTF reader, since CLF is a subset of CTF. The Autodesk Color Transform Format (CTF) is a superset of CLF that adds support for all OCIO ops (e.g. including Exponent and Log) as well as some ops that are useful for accurate ACES implementations. Because CTF requires adding some additional ops to OCIO, this PR does not enable CTF support yet. That will come in a future PR.
This PR adds a lot of unit tests and the tests/data/unittestsfiles.tar.gz has many new example CLF files for parsing tests. There are files that excercise all parts of the spec, including good files and files with syntax errors to test the exception handling. We put a fair amount of work into trying to provide useful error messages when a file cannot be parsed, indicating the line number and the exact nature of the issue.
* Array function already declared in base class. Removes an override warning.
* Adjust exception messages to constantly say CTF/CLF. <Info> element is CTF only.
* Update CTFReaderHelper.cpp
Fix expression with side effects will be evaluated despite being used as an operand to 'typeid' [-Werror,-Wpotentially-evaluated-expression]
The earlier one was copied straight from OpenVDB, which Sony Legal
decided was too closely tied to OpenVDB's use of the Mozilla Public
License.
This draft brings it more in line with the standard Linux Foundation
CLAs found here:
https://github.com/AcademySoftwareFoundation/tac/tree/master/process
The new CCLA is exactly the LF one found above (with the proper name and
license substitutions). The new ICLA is very close to the CCLA, whereas
the LF template is more minimal; Sony Legal liked how the LF CCLA
spelled out some definitions more precisely and modeled after that.
* Adsk Contrib - Add Category support to Color Spaces
* Fix Linux build break
* Update the Linux image used by Travis to upgrade gcc
* Fix the C++11 build break without upgrading gcc/clang
* Update include/OpenColorIO/OpenColorIO.h
Co-Authored-By: hodoulp <23659034+hodoulp@users.noreply.github.com>
MSVC implementation of vector does many checks in debug and this makes the LUT 3D inversion tests too slow to be enabled by default in debug for windows. (#651)
* Enable CI build without SSE
* Fixing a Matrix test that does not work in non SSE mode.
* Update MatrixOps.cpp
Only use errorInverse for the inverse transform
* Remove large values from MatrixOps tests
* Fix window-specific issue in GetEnv()
While the content of result was correct, its length was set
to a wrong size.
This is a patch by Patrick Hodoul.
* Fix wrong display returned by getDefaultDisplay()
Solved by ignoring environment variable if it's an empty string.
Ideally, need to test it to be NULL instead to support obscure
case when empty string is passed. Unfortunately, this is not
possible with the current API, and is unlikely scenario anyway.
The issue was caused by wrong logic around parsing display/views
override environment variable: if it is missing, it was converted
to an empty string. That empty string was considered an override
of one element display, with an empty name.
Additionally, make it so getDisplay() returns displays in order
of either active_displays configuration variable or environment
variable override. the issue there was caused by wrong order of
arguments to vector intersection.
* Matrix improvments and refactor.
This PR adds double support and refactors Matrix towards CLF support.
Note that the Lut1D PR has to be merged first (there is temporary code in OpTools.cpp that will be removed when merging with Lut1D).
* Update MatrixOps.h
fix include file case
* Rename setRGBValues and setRGBAValues by removing Values for better consistency.
* Lut1D improvements (WIP)
This PR contains upgrades to the Lut1D that speeds up inversion and sets the foundation for further improvements. This PR is related to several upcoming PRs and is a Work in Progress. As previously mentioned we are also planning on adding support for integer pixel buffers for the apply method. This PR contains some code paths in Lut1DOpCPU.cpp that will not do anything until the bit-depth PR arrives and it will be substantially refactored at that time. We are also adding support for CLF reading and until that arrives we cannot add some of the SynColor unit tests.
This PR keeps the original Lut1D struct from OCIO v1, which is used in the file format readers. However in a future PR those will be switched over to using the new Lut1DOpData class and the original struct will be removed. The code for determining if a LUT is a no-op/identity is changing somewhat as part of this and the new algorithm is in this PR but will not actually be used in the file readers until the upcoming PR.
Apologies for the incomplete aspects of this review. We are trying to keep the PRs smaller but this implies the complete picture will not be clear until all the branches are in place.
* Update Lut1DOp.cpp
Replace tab by spaces
* Update Lut1DOpCPU.cpp
Update copyright
* Update src/OpenColorIO/ops/Lut1D/Lut1DOpData.cpp
Co-Authored-By: BernardLefebvre <37628108+BernardLefebvre@users.noreply.github.com>
* Update src/OpenColorIO/ops/Lut1D/Lut1DOpData.cpp
Co-Authored-By: BernardLefebvre <37628108+BernardLefebvre@users.noreply.github.com>
* Update src/OpenColorIO/ops/Lut3D/Lut3DOpData.cpp
Co-Authored-By: BernardLefebvre <37628108+BernardLefebvre@users.noreply.github.com>
* Remove Lut3D changes from the Lut1D PR.
Fix a compilation conversion warning.
PFNGLGETFRAGMENTMATERIALIVSGIXPROC
has a conflicting definition in Debian Buster
and will cause OCIO to fail building.
Removing glext references in the offending
files solves the compilation issues.
Fixes#635
* const shared_ptr.
A const shared_ptr does not prevent to modify the pointed object. shared_ptr to const objects should be used instead.
This is adding const correctness. One drawback is that when a shared_ptr to data can not be used as a parameter to a function that expects a reference shared_ptr to const data. A shared_ptr to const data has to be constructed and passed to the function.
* On linux opData() functions are returning an object that needs to be assigned before being passed as a reference.
* Adjust Lut3D that got merged from master to use shared pointers to const objects
* Refactor 3D LUT.
Create new Lut3DOpData class.
Keep the old Lut3D struct for some file format loading. Once loaded Lut3D is converted into Lut3DOpData to create Lut3D ops. These will be refactored in a later PR.
Introduce the Array class that will also be used by other types such a Lut1D and Matrix.
Add new CPU renderer (and tests to compare with legacy computation).
Add support for Lut3D inversion.
* Update FileFormatIridasLook.cpp
remove tab
* Update Lut3DOp_test.cpp
Add comment about poor threshold
* Update src/OpenColorIO/Platform.h
Co-Authored-By: BernardLefebvre <37628108+BernardLefebvre@users.noreply.github.com>
* Update Lut3DOpData.cpp
Turn commented code to OCIO code
* Update OpenColorTypes.h
Add comment about 3D LUT inversion
* Update Lut3DOpData.h
Add comment about inversion methods
* Update OpenColorTypes.h
Adjust comment
Copied from here: https://github.com/coreinfrastructure/best-practices-badge/blob/master/doc/criteria.md
I added the colorful emoji annotations next to each item. Most are
marked with the 'unknown' question mark indicating that somebody more
knowledgeable needs to assess it, but I tried to mark the ones as done
(green check box) that were obvious to me.
The idea is that once we check this in to the developer docs, people can
submit PRs that modify the status of items that they know about, or as
they are fixed.
* Adsk Contrib - Add the CDL Op following the CLF specification
* Remove Visual Studio 2013 from AppVeyor as OCIO is now only C++11
* Fix merge failures
* Replace tinyXML by expat (#57)
eXpat is the xml parsing solution chosen for clf parsing, Replacing use of tinyXML by eXpat.
Add support for SATNode for CDL xml parsing.
* edit CMakeList.txt to use LF so that it gets patched properly
Remove uneeded compile options for eXpat
Fix CDL python test
* Fix text in test
* move expat header to a dedicated directory
fix linux build
* Fix typo in getXmlLineNumber
Remove references to CTF
This fix adds compatibility with OIIO 1.9+, minor ImageInput/ImageOutput API changes. At a certain point ImageInput::create switched from returning a raw pointer (that later needed to be deleted) to returning a std::unique_ptr.
* Fix some spelling and format issues with comments.
Add consistency to how LUT is spelled.
"OCIO configuration" or ".ocio configuration file"
* Fixing function parameters alignment
Improve unit test capabilities and outputs with new macros.
The pull request adds new macros and improves the unit test outputs.
The new macros stop the unit test if there is an error because it invalidates the following validations. Please refer the first unit test of src/core/MatrixOps.cpp to see the usage.
Note: After several changes in the src/oiio/src/include/unittest.h, the file is more and more specific to the OCIO project, and so it could be moved/renamed to src/core_tests or another existing framework could be used (with much more capabilities).
Add Resolve .cube LUT format support (1d LUT, 3d LUT, and combined 1d shaper + 3d LUT).
* Resolve .cube format support
* Fix python unit tests
* Add unit test for 1D + 3D combined LUT
* Fix missing header for std::max
* Fix mintor typos
* Remove debug log
* Support 1D, 3D and 1D+3D LUT write
* Unit tests for baker output
* Don't specify LUT_ND_INPUT_RANGE tags if not needed, for wider parsing compatibility
* Add basic write functionality for Iridas cube 3D LUTs (no shapers).
* Incorporate part of OCIO PR #530 that gets past markupsafe install issue
* Bump Baker.py expected number of writable formats from 6 to 7 as we add Iridas Cube writing
* size_t instead of int on loop variable set from size() return value
* Add basic write functionality for Iridas cube 3D LUTs (no shapers).
* Bump Baker.py expected number of writable formats from 6 to 7 as we add Iridas Cube writing
* size_t instead of int on loop variable set from size() return value
* Remove accidental double addition of Write member function declaration and definition.
* Update to note that we can write Iridas cubes now.
* Conform to convention on spaces between if and for, and the following open parenthesis.
* Add basic write functionality for Iridas cube 3D LUTs (no shapers).
* Bump Baker.py expected number of writable formats from 6 to 7 as we add Iridas Cube writing
* size_t instead of int on loop variable set from size() return value
* Remove accidental double addition of Write member function declaration and definition.
* Update to note that we can write Iridas cubes now.
* Conform to convention on spaces between if and for, and the following open parenthesis.
* Add missing #include of <algorithm>, the lack of which broke the WIndows build.
* Address [minor] issues from code review.
* Adding icc support (#31)
Extract code from SampleICC to allow reading ICC profiles.
Add tests.
* Adjust include file case to match the file
* Adjust error tolerance for one test
* Update iccProfileReader.h
Add a cast to fix conversion issue.
* Add the new GPU API with the legacy shader desc
* Add GPU tests for ExponentTransform and LogTransform (#15)
* Add GPU tests for ExponentTransform and LogTransform
* Update file header
* Add GPU unit tests
* Add Generic GPU support
* fix
* Add missing files
* Fix breaks following the merge
* Fix Linux build breaks
* Add some comments
* Add new unit tests
* Changes following the code review
* Add more GPU unit tests
* Change unit test luts to improve GPU unit test results
* Add various improvements on GPU shader program
Add many new GPU unit tests
* Fixes
* Fix errors following the cherry-pick's
* Fix comments from code review
* Fix OSX build breaks
* Add a new test
* Fix lang-glsl installation
* Fix Linux build breaks
Add CPU unit tests
Add GPU unit tests
Fix OSX build breaks
* Fix Linux build break
* Fix AppVeyor build change
* Fix AppVeyor build change, part II
Discreet 1D LUT: Add read support copying code from syn color. No support for half float. Bitdepth is ignored and lut are converted to [0.f, 1.0f]
Add tests for Discreet 3D-Luts and other FileFormats
Make 3dl parsing stricter (rejecting ctf)
Rework error message when several formats are tried.
Rename GetLut3DIndex_B & GetLut3DIndex_R to what they are actually for.
Trying several thing in a fork and finally found that using pyenv as suggested in https://github.com/ianunruh/hvac/issues/75 worked.
Validate that all builds are now passing on my fork.
Unit tests for operators: review existing tests and add no tests.
Add macro to test the content of an Exception being thrown.
Tests for AllocationOps, ExponentOps, LogOps, Lut1DOps, Lut3DOps, MatrixOps, NoOps.
Fix GPU tests disabling.
Remove an hardcoded dependency.
Fix a gcc 4.4.x build break. The program was only used by gcc 8.x.x build so hide it for lower gcc versions
Pull initial docstrings from C++ API documentation, and refine to
play nicely with Sphinx.
Add example demonstrating how to query all formats with write
capability, and more detailed explanation of looks token formatting.
Append Baker to PythonAPI.rst. Its omission from there was the reason
Baker was missing from API docs.
GCC 8 appears to be rather stricter about various issues to do
with type conversions and casts than GCC 7 was. This affects
OpenColorIO's Python bindings quite heavily, producing a large
number of warnings (which are converted to errors by `-Werror`)
and outright errors.
The changes here are almost all one of three basic types:
1. Many functions that become Python methods with no arguments
(using the METH_NOARGS flag) did not include the expected second
parameter in their signatures at all. METH_NOARGS does not
prevent this second parameter being passed *at all*, it only
ensures that it will always be NULL. It's still not technically
correct to leave it out of the function signature; as a comment
from 'yak' on https://stackoverflow.com/questions/10256315
points out, there are situations where this could cause a crash.
I've added the second parameter (with no name, per convention)
to every one of these cases.
2. In several cases, classes specified a custom destructor, with
a cast to the `destructor` type, which only takes a single
parameter. However, the signatures for these destructor functions
included two parameters, assuming that they'd get an 'args'
parameter (they do not). I've corrected all these cases.
3. In several cases, classes specified custom str or repr
methods. However, in the `PyTypeObject` structures for these
classes, these methods were not cast to the `reprfunc` type, as
they ought to be. I've added these casts.
There are two warnings I just can't get rid of with my limited
C++ knowledge. The `Config` class (in PyConfig.cpp) defines a
couple of methods that take kwargs as well as args. This is
done by setting the `METH_KEYWORDS` flag, which ultimately seems
to result in a cast from type `PyCFunctionWithKeywords` to
`PyCFunction` happening somewhere behind the scenes. There's some
discussion of this at https://stackoverflow.com/questions/9496753
GCC 8 does not like this cast - it causes a 'cast-function-type'
warning. I've messed around a bit with `reinterpret_cast` and
stuff, but didn't really understand precisely what I was doing
and didn't manage to find anything that got rid of the warnings.
So I just suppressed these warnings with GCC pragmas instead
(using `-Wno-error=cast-function-type` causes older GCC versions
to choke, so we can't do that).
I've tested at least that the compilation succeeds, and I can
import the Python module and instantiate a few classes and
examine their docstrings and stuff with no apparent errors.
Many thanks to Kevin Kofler for his help with these fixes.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
* Stop accepting .ccc files while we don't have a way to get the ID
* Getting video space buffers for Premiere
* Bump After Effects and Photoshop plug-ins to 1.1.0
* Update Mac AE and PS plug-in builds
* Update Windows AE and PS plug-in builds
GNUInstallDirs is supported on all platforms and variables are set
to the standard GNU locations.
Fix the location where the .cmake files are installed.
Signed-off by: Jonathan Scruggs <j.scruggs@gmail.com>
* Create the framework for any GPU unit tests
1. Create an empty framework
2. Add the CPU processing and 2 gpu unit tests
3. Add one Lut 3d gpu init test
4. Remove some Windows warnings
* Fix Linux compilation
Fix gcc 5.4.0 build breaks
Fix the temp filename for Linux
* Improve the GPU unit test makefile
1. Enforce the black box approach by only using the dynamic library (and not source files like CPU unit tests)
2. Remove useless external dependencies
* Fix GPU unit test issue where the wrong dynamic library was used
1. Add the PATH to the test script
2. Fix the dynamic library path when using the "Visual Studio" target for cmake i.e. by default, it adds the build type in the output path of a target...
* Add some comments and some unit tests
* Compile everything but only run CPU & Python tests (not the GPU ones)
* Add some missing packages
* Fix OSX build break
<!-- Copyright Contributors to the OpenColorIO Project. -->
# Technical Charter (the "Charter") for OpenColorIO a Series of LF Projects, LLC
**Adopted \_\_\_\_\_\_\_\_\_\_\_**
This charter (the "Charter") sets forth the responsibilities and procedures for technical contribution to, and oversight of, the OpenColorIO project, which has been established as OpenColorIO a Series of LF Projects, LLC (the "Project"). LF Projects, LLC ("LF Projects") is a Delaware series limited liability company. All Contributors to the Project must comply with the terms of this Charter.
1. Mission and Scope of the Project
* **a.** The mission of the Project is to develop an open source project with the goals indicated in the "README" file within the Project's code repository.
* **b.** The scope of the Project includes software development under an OSI-approved open source license supporting the mission, including documentation, testing, integration and the creation of other artifacts that aid the development, deployment, operation or adoption of the open source software project.
2. Technical Steering Committee
* **a.** The Technical Steering Committee (the "TSC") will be responsible for all technical oversight of the open source Project.
* **b.** The TSC voting members are initially the Project's Committers. At the inception of the project, the Committers of the Project will be as set forth within the "GOVERNANCE" file within the Project's code repository. The TSC may choose an alternative approach for determining the voting members of the TSC, and any such alternative approach will be documented in the GOVERNANCE file. Any meetings of the Technical Steering Committee are intended to be open to the public, and can be conducted electronically, via teleconference, or in person.
* **c.** TSC projects generally will involve Contributors and Committers. The TSC may adopt or modify roles so long as the roles are documented in the GOVERNANCE file. Unless otherwise documented:
* **i.** Contributors include anyone in the technical community that contributes code, documentation, or other technical artifacts to the Project;
* **ii.** Committers are Contributors who have earned the ability to modify ("commit") source code, documentation or other technical artifacts in a project's repository; and
* **iii.** A Contributor may become a Committer by a majority approval of the existing Committers. A Committer may be removed by a majority approval of the other existing Committers.
* **d.** Participation in the Project through becoming a Contributor and Committer is open to anyone so long as they abide by the terms of this Charter.
* **e.** The TSC may (1) establish work flow procedures for the submission, approval, and closure/archiving of projects, (2) set requirements for the promotion of Contributors to Committer status, as applicable, and (3) amend, adjust, refine and/or eliminate the roles of Contributors, and Committers, and create new roles, and publicly document any TSC roles, as it sees fit.
* **f.** The TSC may elect a TSC Chair, who will preside over meetings of the TSC and will serve until their resignation or replacement by the TSC. The TSC Chair, or any other TSC member so designated by the TSC, will serve as the primary communication contact between the Project and the Technical Advisory Council of the Academy Software Foundation of The Linux Foundation.
* **g.** Responsibilities: The TSC will be responsible for all aspects of oversight relating to the Project, which may include:
* **i.** coordinating the technical direction of the Project;
* **ii.** approving project or system proposals (including, but not limited to, incubation, deprecation, and changes to a sub-project's scope);
* **iii.** rganizing sub-projects and removing projects;
* **ii.** creating sub-committees or working groups to focus on cross-project technical issues and requirements;
* **v.** appointing representatives to work with other open source or open standards communities;
* **vi.** establishing community norms, workflows, issuing releases, and security issue reporting policies;
* **vii.** approving and implementing policies and processes for contributing (to be published in the CONTRIBUTING file) and coordinating with the Series Manager to resolve matters or concerns that may arise as set forth in Section 7 of this Charter;
* **viii.** discussions, seeking consensus, and where necessary, voting on technical matters relating to the code base that affect multiple projects; and
* **ix.** coordinating any marketing, events, or communications regarding the Project with the LF Projects Manager or their designee.
3. TSC Voting
* **a.** While the Project aims to operate as a consensus based community, if any TSC decision requires a vote to move the Project forward, the voting members of the TSC will vote on a one vote per voting member basis.
* **b.** Quorum for TSC meetings requires at least two-thirds of all voting members of the TSC to be present. The TSC may continue to meet if quorum is not met, but will be prevented from making any decisions at the meeting.
* **c.** Except as provided in Section 7.c. and 8.a, decisions by vote at a meeting require a majority vote of those in attendance, provided quorum is met. Decisions made by electronic vote without a meeting require a majority vote of all voting members of the TSC.
* **d.** In the event a vote cannot be resolved by the TSC, any voting member of the TSC may refer the matter to the Series Manager for assistance in reaching a resolution.
4. Compliance with Policies
* **a.** This Charter is subject to the Series Agreement for the Project and the Operating Agreement of LF Projects. Contributors will comply with the policies of LF Projects as may be adopted and amended by LF Projects, including, without limitation the policies listed at https://lfprojects.org/policies/.
* **b.** The TSC may adopt a code of conduct ("CoC") for the Project, which is subject to approval by the Series Manager. Contributors to the Project will comply with the CoC or, in the event that a Project-specific CoC has not been approved, the LF Projects Code of Conduct listed at https://lfprojects.org/policies/.
* **c.** When amending or adopting any policy applicable to the Project, LF Projects will publish such policy, as to be amended or adopted, on its web site at least 30 days prior to such policy taking effect; provided, however, that in the case of any amendment of the Trademark Policy or Terms of Use of LF Projects, any such amendment is effective upon publication on LF Project's web site.
* **d.** All participants must allow open participation from any individual or organization meeting the requirements for contributing under this Charter and any policies adopted for all participants by the TSC, regardless of competitive interests. Put another way, the Project community must not seek to exclude any participant based on any criteria, requirement, or reason other than those that are reasonable and applied on a non-discriminatory basis to all participants in the Project community.
* **e.** The Project will operate in a transparent, open, collaborative, and ethical manner at all times. The output of all Project discussions, proposals, timelines, decisions, and status should be made open and easily visible to all. Any potential violations of this requirement should be reported immediately to the LF Projects Manager.
5. Community Assets
* **a.** LF Projects shall hold title to all trade or service marks used by the Project ("Project Trademarks"), whether based on common law or registered rights. Project Trademarks shall be transferred and assigned to LF Projects to hold on behalf of the Project. Any use of any Project Trademarks by participants in the Project shall be in accordance with the license from LF Projects and inure to the benefit of LF Projects.
* **b.** The Project shall, as permitted and in accordance with such license from LF Projects, develop and own all Project GitHub and social media accounts, and domain name registrations created by the Project community.
* **c.** Under no circumstances shall LF Projects be expected or required to undertake any action on behalf of the Project that is inconsistent with the tax-exempt status or purpose, as applicable, of LFP, Inc. or LF Projects, LLC.
6. General Rules and Operations.
* **a.** The Project will:
* **i.** engage in the work of the project in a professional manner consistent with maintaining a cohesive community, while also maintaining the goodwill and esteem of LF Projects, LFP, Inc. and other partner organizations in the open source software community; and
* **ii.** respect the rights of all trademark owners, including any branding and trademark usage guidelines.
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/main/LICENSE](https://github.com/AcademySoftwareFoundation/OpenColorIO/blob/main/LICENSE))** (the "Project License").
* **ii.** All new inbound code contributions must:
1. be made pursuant to a duly executed Project Contribution License Agreement (the "CLA"), available on the Project'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;
* **iii.** All outbound code will be made available under the Project License.
* **iv.** Documentation will be received and made available by the Project under the Creative Commons Attribution 4.0 International License (available at [http://creativecommons.org/licenses/by/4.0/](http://creativecommons.org/licenses/by/4.0/)).
* **V.** The Project may seek to integrate and contribute back to other open source projects ("Upstream Projects"). In such cases, the Project will conform to all license requirements of the Upstream Projects, including dependencies, leveraged by the Project. Upstream Project code contributions not stored within the Project's main code repository shall comply with the contribution process and license terms for the applicable Upstream Project.
* **c.** If an alternative inbound or outbound license is required for compliance with the license for a leveraged open source project or is otherwise required to achieve the Project's mission, the Governing Board of the Academy Software Foundation of The Linux Foundation ("Governing Board") or the Governing Board's designated committee may approve the use of an alternative license for specific inbound or outbound contributions on an exception basis. Any exceptions must be approved by a vote of the Governing Board and must be limited in scope to what is required for such purpose. To request an exception, please describe the contribution, the alternative open source license(s), and the justification for using an alternative open source license for the Project.
* **d.** Contributed files should contain license information, such as SPDX short form identifiers, indicating the open source license or licenses pertaining to the file.
8. Amendments
* **a.** This charter may be amended by a two-thirds vote of the entire TSC and is subject to approval by LF Projects.
<!-- Copyright Contributors to the OpenColorIO Project. -->
Feb. 4, 2019
Host: John Mertic
Secretary: Kevin Wheatley
Attendees:
* Sean Cooper (_TSC_) - DNEG
* Michael Dolan (_TSC_) - Sony Pictures Imageworks
* Larry Gritz (_TSC_) - Sony Pictures Imageworks
* Thanh Ha - Academy Software Foundation / Linux Foundation
* Patrick Hodoul (_TSC_) - Autodesk
* Bernard Lefebvre - Autodesk
* John Mertic - Academy Software Foundation / Linux Foundation
* Carl Rand (_TSC_) - Foundry
* Doug Walker (_TSC_) - Autodesk
* Kevin Wheatley (_TSC_) - Framestore
# **OCIO TSC Meeting Notes**
* Opening explanation of form and function of TSC by John Mertic.
* Election of officials/Nominations for roles
* Doug Walker, explained the prior discussion from the Slack #tsc channel
* Michael Dolan - Chairperson
* Doug Walker for Chief Architect
* Additional nominations
* Sean Cooper - Chairperson
* Discussion around the concept of Chair + Vice chair and the distinction of only the chair having voting rights on the TAC.
* Larry Gritz suggested we may benefit from a singular chair as an efficiency point, rather than the potential of delays by trying to maintain something similar to the current consensus model.
* John Mertic requested candidates provide their background for inclusion in the voting process with the aim of opening voting on the 5th February.
* Secretary - in view of no volunteers, suggested we might consider rotating role.
* Infrastructure
* GitHub repo needs migrating to the ASWF organisation
* **TODO** - John Mertic to coordinate with Steve Winslow at the LF to complete.
* 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.
* **TODO** - John Mertic to determine if sign off lines need to be in the contribution license agreement list
* CLAs from corporations and individuals would preferentially be in place prior to migration, John Mertic to action the set-up.
* Need to transfer DNS and website registration
* **TODO** - Larry Gritz to action transfer
* Discussion around transfer of mailing lists/slack channel
* **TODO** - John Mertic to confirm if Google Groups and message history can be migrated to groups.io, and pricing/options for Slack to Rocket.chat or Mattermost migration
* Build infrastructure
* Note about the use of current infrastructure for builds in parallel until we have parity of features with the build system.
* TSC meeting suggested weekly during initial roll out until we have settled down.
<!-- Copyright Contributors to the OpenColorIO Project. -->
Feb 11, 2019
Host: John Mertic
Rotating Secretary: Larry Gritz
Attendees:
* Sean Cooper (_TSC_) - DNEG
* Michael Dolan (_TSC_) - Sony Pictures Imageworks
* Larry Gritz (_TSC_) - Sony Pictures Imageworks
* Thanh Ha - Academy Software Foundation / Linux Foundation
* Patrick Hodoul (_TSC_) - Autodesk
* John Mertic - Academy Software Foundation / Linux Foundation
* Carl Rand (_TSC_) - Foundry
* Doug Walker (_TSC_) - Autodesk
* Kevin Wheatley (_TSC_) - Framestore
# **OCIO TSC Meeting Notes**
* Election Results
* Chair: Michael Dolan, by offline vote over the last week.
* Chief architect: Doug Walker, confirmed by unanimous voice vote.
* Infrastructure updates:
* Domain transfer: LG reports he has identified the office at Sony Pictures that holds domains and working on the logistics of the transfer.
* Repo transfer: Should be straightforward to transfer from GitHub imageworks to AcademySoftwareFoundation accounts. (Note: also must transfer ocio-config repo.)
* Code scan:
* Competed initial code scan to check for licenses, etc.
* Overall pretty good
* "ext/" directory containing upstream dependencies should perhaps be pulled in at build time rather than embedded? But there were reasons (convenience, lcms no longer maintained, patches for custom namespacing for us). We could download at build time and apply the patches, so still build just for us, but not have those packages' source embedded in our repo.
* **TODO**: Patrick & Thanh to look offline at the initial CI builds and consider the ext packages to assess what can be pulled, what can be upstreamed, what must be embedded.
* Communication tools:
* If we want to move mail list communications to aswf.io, there is a migration path from google groups -> ASWF.io mail lists that will preserve the archives.
* Nobody objected to moving to aswf.io, so JM to work on this.
* JM can provision a dedicated Zoom line for meetings, if we want.
* CLA system
* New CLA system should be operational on Friday.
* At that point, JM will send us links to get new CLAs signed.
* **TODO**: JM to look into how to do retroactive DCOs. Investigate how necessary that is, considering we have CLAs from all prior contributors.
* Releases:
* 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 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 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.
* Sean: Considering how long it takes us to review things and the long v2 schedule, maybe we should reconsider what is v2 and what gets pushed to v3? (Patrick points out: it's the same ADSK people supporting the release as building "v2", only so much bandwidth available, so an intermediate release will make the full release take even longer.
* **Tabled** for further thought and discussion. Patrick made a GH issue for further discussion: #665
- Thinking is that because ASWF already has Linux CI support, we could start using it.
- The ASWF solution is Jenkins at the moment, but due to the young age of the project, no-one is really using it yet.
- Circle CI has been proposed as a potential candidate as well.
- There is a proof of concept of OCIO on the travis CI, though it is only a simple CMake build (no tests).
- Additionally it would be good to get away from Travis CI as its future seems uncertain.
- Potentially wait for results of ASWF TAC discussion on future CI decision before actioning any changes.
- Thoughts are that migration of repo to ASWF is more important. We can keep our existing CI, and just move the repo.
- **TODO**: Might need someone from Sony to do the ASWF move.
- There will be a day or so crossover to set up the existing CI on the new ASWF setup.
- Decided to move to ASWF first, then sort CI later.
- **TODO**: Candidate for championing CI? Mark Boorer and Sean Cooper.
* Embedded libraries
- Decision to remove all embedded dependencies at the same time as CI update.
- Concerns over Windows developer experience (as building of dependencies would now be required prior to building OCIO.
- Potentially solvable via vcpkg or Chocolatey.
- Patrick made a GH issue for further discussion: #690
* 1.1 patch release
- Updates to OCIO to allow optional OIIO 2.0 compatability (which requires C++11)
- **TODO**: Larry / Michael will look into removal of auto keyword from OIIO headers.
* Feature preview tag / Early 2.0 release
- Proponents want to the benefits of the improved GPU features for internal use.
- Fear is that it will achieve semi-release status and start being used in other DCC's where inconsistencies might arise, leading to all the same effort as an actual release.
- Suggestion for a limited release of some 2.0 features (3d lut inversion, gpu improvements).
- Autodesk have two main reasons to oppose both a tag or early release:
1. They don't feel the current state of the features represent a good, stable product to support.
2. As the primary integrators of Autodesk's DCC's are also the developers working on 2.0, the developers times would be split between adding the new integrations, and completing 2.0.
- Discussion tabled for next week.
- Further discussion, and status of continued TSC discussion in GH issue #665
* Items for next TSC meeting agenda:
- Discuss ASWF TAC proposal of future CI direction
- Consensus on feature preview tag / early 2.0 release discussion
- Other tabled items (due to time)
- Python binding update (pybind11 proposed by Sony)
- Apple deprecation of OpenGL. Explore Metal or another alternative?
- Decision to NOT do either a preview tag or early 2.0 release
- 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 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.
- Larry: If current merge policies are a roadblock to AD, can they be revised?
- Proposed rotating review duty for a TSC member to do initial PR reviews as they are submitted for their assigned week
- This needs to be improved if it's blocking.
- Doug: Feature interdependency part of the challenge:
- 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 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:
- Overall, TAC impression is that Circle seems like a better choice, but pricing and logistics needs further investigation.
- Circle supports local CI, allowing contributors to test CI *before* submitting a PR.
- Supports GPUs when hosted on our servers, but pricing may be a concern.
- Proposed AppVeyor for Windows support for now.
- OpenVDB reports that Circle significantly faster than Travis
- Larry: Circle has better, faster CPUs than Travis
- **TODO**: Once ASWF/LF commit to CI choice, Mark/Sean to investigate transition to new CI infastructure
- If OpenVDB adopts new system first, we can reference their setup.
* Moving OCIO to ASWF Git organization
- Legal approvals for OCIO domain tranfer are complete!
- The GitHub account move should be fairly straightforward, but may bring down CI builds for a day or two during the transition.
- **TODO**: LF needs Travis and AppVeyor accounts created before we can move repo, to host CI builds.
- **TODO**: Larry/Michael to work with John/Thanh to facilitate the account move.
- There may be a requirement to fix some of the embedded external dependencies *before* the repo move to satisfy detected license issues (from the license scan).
- Patrick made a GH issue for further discussion on 3rd-party dependencies: #690
* OCIO v2 Python bindings
- SPI proposes contributing new bindings via pybind11:
- Mark: Current OCIO bindings have no external dependency. Are we sure we want to introduce one, vs. using Python's C API?
- Larry: Supporting both Python 2 and 3 would make use of C API more complicated. pybind11 is simple to implement, and header only.
- Sean: Good opportunity to improve consistency in Python interface:
- Currently there are inconsistencies with argument and return types.
- Implementors are not always sure what types they'll get back from the API.
- Larry: proposes a design PR be created first (using new GH feature), which outlines the new interface, prior to actually doing the work.
- **TODO**: Michael to create new Python API design and submit PR for feedback/discussion/approval.
* Apple has deprecated OpenGL
- Mark: One option could be to build a bridget between Vulcan and Metal. Proposes use of MoltenVK.
- Sean: SPIRV-Cross also worth investigation.
- Doug: We're not sure yet when OpenGL support will actually be removed by Apple.
- From my point of view, OCIO will definitely need to support low-level graphics APIs such as Vulkan and Metal, so the question is more when than if.
- Agreed MoltenVK is one option to investigate.
- Carl: Different parties within Apple have different opinions of timeline for dropping support.
- Mark: Nothing in OCIO's design is preventing Metal support from being added now.
- Doug: Investigation is needed not only on the shader language but also on how textures will be managed under a low-level graphics API.
* 2019 SIGGRAPH BoF
- ASWF BoFs will be back to back.
- Mark: a smaller fishbowl room is preferred for the OCIO BoF, instead of a large hall (like what ACES had in 2018).
- This is an important meeting for the community. Need to make sure the format is not impacted.
- Effort should be taken (as much as possible) to avoid the OCIO BoF intersecting with other color talks.
- Valid points to raise to LF/ASWF as the overall event is organized.
- All that being said, having LF/ASWF help is getting these sessions organized is much appreciated.
* OCIO-Configs ACES 1.1
- Carl raised question of an official ACES 1.1 OCIO config availability. Nuke team is asking.
- Doug: 1.1 has some key differences from 1.0.3, which will need to be taken into account (i.e., new outputTransform)
- Contributors who have been supporting these configs are busy with other projects, so timeline is uncertain.
- **TODO**: Foundry to follow up in ocio-user mail list and/or Slack, to see if anyone can offer a status update.
* Items for next TSC meeting agenda:
- Status update on GH project move to ASWF account, and any impact this has on other TODOs.
- What are we going to do with the "ext/" directory?
- Do we maintain or replace?
- How will this affect CI?
- Platform specifics
- Linux isn't so much a problem, however Windows and MacOS are another story.
- Some of the major DCCs using OCIO are on Windows and MacOS which could prove problematic.
- Do we need to build all the dependencies first, and then build OCIO against them.
- It should be of the style
- Pull the dependencies, rather than using the archive files found in the "ext/" directory.
- Maybe also have a flag to say use my local build of the library.
- Run CMake and build.
- What is the motivation behind doing this?
- This maybe a good opportunity to address the technical debt.
- John: Happy to help connecting with the other project coordinators.
- Mark: Uncertain that it is actually technical debt and more of a purest point of view in that we don’t want code from other sources checked into the OCIO repository?
- It would be good to at least gain a better understanding of the dependencies.
- Some of the current dependencies have raised red flags.
- The LCMS color management repository has been abandoned. Is currently only used for baking ICC profiles.
- Mark: Happy to go away and fix up what he can.
- Larry: Raised that it may lead to security issues if we don’t do this. Old versions can cause problems. OpenEXR had this problem in the past.
- John: Mavin solved the dependency fetch for Java a while ago. We should look to solutions like this.
- Concerns we raised in that CMake is not the best at pulling in dependencies from the internet.
- Patrick: We are not just able to download binaries, but we will also need to download the source of specific versions and build locally on the machine building OCIO. We will also have to be careful about static libraries and symbols. We will have to look at name-spacing things carefully.
- We will need to make the TAC aware of any external code that is needed when we ship with the library.
* CLA/DCO requirements
- Needs them signed before doing merges into the new repository.
- John: Resolving issues with the initial setup. Team is currently backlogged on other projects but hoping to get something done in the next couple of days.
- DCO when we are ready to DCO sign off with commits.
- Every commit will have DCO sign off.
- John: Some info can be pulled or referenced from the TAC guidelines.
- Larry: Who needs to sign off the work?
- John: We can refer to https://developercertificate.org/
- Michael: This isn’t required until we move to the new account. Not to worry about it for now.
- Want to have the Linux foundation CLA system up and running first, pre-sign all the CLAs, and do one commit to flick the switch.
- Larry: Have agreed on the CLA but not on all the surrounding areas e.g. signature blocks etc.
- **TODO**: Document DCO sign off practices in CONTRIBUTING.md.
- Currently going through the CII badge discussions this week.
- Mainly focusing on documentation.
- Looking at offline private reporting mail of security vulnerabilities.
- Mail address will be security.ocio.org
- Larry: Is a private mail address private enough?
- Michael: The private aspect is only suggested. Other sites don't tend to go beyond a private mail. And doing so would be quite a bit more work and far more complicated.
- Michael has tested the mail system by emailing into it.
- Larry: We just need to make sure it's a mail that isn't publicly visible. It's very unlikely that someone is going to need it to be more private than that.
- Michael: The system states that it's private.
- John is currently setting up the email side of things.
* Updates on ongoing tasks - Python bindings
- Michael is actively working on the bindings.
- Michael: The current API is not very Pythonic.
- Michael: Do we need backwards compatibility? Or can we split it?
- Kevin: It will depend on when we need to support Python 3 and whether we need to do something sooner rather than later.
- Kevin: If this is going to be in version 1.x then we would need to keep backwards compatibility.
- Michael: In 2.x we will have to remove some things regardless.
- Michael: Pushing the API changes back to 1.x is something we could do.
- Patrick: In 1.x the C API shouldn't change. Should this then not be the case for Python API?
- Michael: The option is there to backport the work done in 2.x to 1.x.
- Doug: For the near term we need to maintain backwards compatibility. Could we decide later and see what the new API will be like?
- Michael is starting off now by writing the documentation.
- Trying to balance out the types to reduce the inconsistences.
- Currently maintaining backwards compatibility.
- Larry: Switching the bindings to PyBind 11 might be a good time.
- Carl: Could we mark parts of the API as deprecated and remove them later to give people warning?
- Michael: The problem with this is trying to figure out the deprecation mechanism to use.
- Michael: OCIO 2.x will support both Python 2 and 3
- Kevin: We should make the C and Python API change at the same time. This will make it easier for users.
- Larry: The C/C++ and Python API should only deviate in places where it's natural for the specific language.
* Other items discussed:
- Larry: Raised pushing the meeting forward by 30 minutes as the meetings are only lasting 20 - 30 minutes. It would help people in certain time zones due to rush hour.
- Next weeks meeting will be cancelled due to Easter holiday.
- Kevin will be on PR duty next week but wont be available on Monday.
* Suggestions for SIGGRAPH BOF and WG meeting agenda
- ACES 1.1 config update
- Not clear on the exact features to show from the Autodesk Team, but likely
- Impact and changes of becoming ASWF project
- Mark offered to present Open Colour Math ideas
- Need to put out some messaging to the mailing lists to announce the BOf and working group meetings.
- **Action: Mark and Emily to discuss sizzle real content for SIGGRAPH**
- **Action: Michael to start with some blank ASWF slides to promt discussion**
* ASFW Adoption progress
- CII badge needed - currently 97% done, still todo:
* Security experts; Larry suggests a pragmatic approach to say we will have experts on the code base who reasonably aware of security principals, but not specific security experts
* Security Policy documentation; Suggestion to adopt the OpenVDB style approach
* "ext" refactoring update
- Implemented as a cmake script to download and build external dependencies
- patching is something we are trying to avoid in the new implementation for simplicity
- Being developed on Linux and using Azure to do cross platform checks
- SampleICC is trickier to implement as it is a hand-crafted subset of the full code base. **Action: Discuss with Doug when he is back from vacation**
- Unit test discussion, current choice to adopt a renamed OIIO unit test macros header,
possibly looking at alternate implementation in the future
- ASWF needs all things to be under same license for final approval
- Doug will look at unit test licenses
- Unsure if [CI/Slack] will continue working / authenticating after move, so might need to be fixed soon after.
* Mingw on windows patches
- Does this correspond to a new platform?
- How should we respond to requests of this nature?
- Mark thinks as long as the community is responding / submitting patches
we should consider it “supported”
- Remember that adding CI for every platform might be expensive (in terms of build time or other resources)
- Larry says that we should accept all reasonable patches, though perhaps only “supported platforms” would be listed in any documentation. Supported platforms might include only those we have CI for.
- TODO: Michael will check that the CI works on the Release branch as well
* Granting Kevin Wheatley rights to act as an approver for pull requests (write access). Approved **Michael to action in github**
* GPU host for CI infrastructure, funding is approved. We really only need lower end GPU capabilities, but does need to be real hardware.
Need to call out to TAC? John queried Andy@LF on progress, challenge with creating dynamic builders with GPU resources.
Carl noted that it may be worth having some variety of hardware vendors as they have different compliance levels with OpenGL.
**Invite Andy to next weeks TSC Meeting**
* John reported that the governing board approved the license waivers. This should be the last hurdle to migrating the repository to the ASWF.
Contributers will thus need to have their CLA signed.
Query over the status of the Autodesk CLA, it should have been done.
**Michael to drop the TAC an email, requesting migration**
**Doug to approve license pull request #799**
* Issue with Azure builds not passing status check to github, help request is in with Microsoft.
* Python bindings discussion around trying to improve automatic generation of bindings. Autodesk to take a look at what could be done to smooth out this.
Michael noted that we need a way to handle read only objects in python.
Explanation around the use of shared_ptr<> with private destructors.
**Michael to submit example pull request** showing how it could be if we did not have private destructors so the team can better understand the issue and offer suggestions.
- Mark: Would be an API breaking change. No problem changing it though.
- Kevin: "validity" check also not ideal.
- Michael: What about just "validate"? Now is the time to change it since
the API has already changed for v2.
- Carol: Should we do a sweep for other terms too?
- Simran: Yes. Only checked this one term so far, but can check others.
- Kevin: Can you do a word scan?
- Mark: Can open issue per term to discuss.
- **TODO**: Simran will submit PR with suggested changes to promote
inclusive language.
* Status updates:
- [Comment in this document's TOC for sections of documentation you would like to contribute to](https://docs.google.com/document/d/1AdCWgo_g7SHoVCakGTizs8j6AljSVfx1u6RKnyxIC2A/edit)
- Michael: For open source days, suggest reusing DigiPro content and just
expanding for the audience.
- TSC agrees on reusing content where possible.
* Apple silicon build and CI:
- Joseph: Any discussion about support for Apple silicon?
- Michael: This was discussed at the last CI working group. It's on the
radar and Apple has a representative in the group who is knowledgeable
on the subject. Ongoing discussion will continue.
- Doug: We will need to check OCIO's SSE code.
* Logo discussion:
- Logo type all caps or upper/lower mixed case? Discussion in #branding Slack
channel on this topic. Other ASWF projects use mixed case.
- Carol: Like the all caps. Individual projects can have unique logos.
- Doug: Adding spaces helped readability a lot. I see Emily's point for
consistency, but there is already some difference in ASWF logos.
- Patrick: Good to have consistency across ASWF, but should not be mandatory.
Should do what's right for the project. Best to see what's appropriate for
OCIO first.
* Items for next TSC meeting agenda:
- Discussion around whether additional static libs should be shipped for
- 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!
- 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/
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.