From cfc54f6566f173db714b9449f9389a8c27a1081c Mon Sep 17 00:00:00 2001 From: Joshua Miller Date: Thu, 2 Jun 2022 10:29:47 -0700 Subject: [PATCH 001/352] [arch, plug] fix paths that contain unicode char for plugInfo.json arch: ArchGetAddressInfo was using GetModuleFileName instead of GetModuleFileNameW on Windows. This prevented the objectPath to be correctly returned should the module found at the address contained a unicode character. plug: _ReadPlugInfoObject did not properly handle the case of a UTF-8 encoded string on Windows. This would result in the plugInfo.json file not being loaded if it resided at a path containing a unicode character --- build_scripts/build_usd.py | 13 ++++++++ cmake/macros/Public.cmake | 10 ++++-- pxr/base/arch/symbols.cpp | 7 +++-- pxr/base/plug/CMakeLists.txt | 15 +++++++++ pxr/base/plug/info.cpp | 10 ++++++ pxr/base/plug/testPlug.py | 5 +-- .../testenv/TestPlugModuleUnicode__init__.py | 31 +++++++++++++++++++ .../TestPlugModuleUnicode_plugInfo.json | 15 +++++++++ 8 files changed, 98 insertions(+), 8 deletions(-) create mode 100644 pxr/base/plug/testenv/TestPlugModuleUnicode__init__.py create mode 100644 pxr/base/plug/testenv/TestPlugModuleUnicode_plugInfo.json diff --git a/build_scripts/build_usd.py b/build_scripts/build_usd.py index cfe243effb..084b3ff301 100644 --- a/build_scripts/build_usd.py +++ b/build_scripts/build_usd.py @@ -97,6 +97,19 @@ def Python3(): return sys.version_info.major == 3 def GetLocale(): + if Windows(): + # Windows handles encoding a little differently then Linux / Mac + # For interactive streams (isatty() == True) it will use the + # console codepage, otherwise it will return an ANSI codepage. + # To keep things consistent we'll force UTF-8 for non-interactive + # streams (which is recommended by Microsoft). See: + # https://docs.python.org/3.6/library/sys.html#sys.stdout + # https://docs.microsoft.com/en-us/windows/win32/intl/code-page-identifiers + if sys.stdout.isatty(): + return sys.stdout.encoding + else: + return "UTF-8" + return sys.stdout.encoding or locale.getdefaultlocale()[1] or "UTF-8" def GetCommandOutput(command): diff --git a/cmake/macros/Public.cmake b/cmake/macros/Public.cmake index a4d1f947db..133d1bd4df 100644 --- a/cmake/macros/Public.cmake +++ b/cmake/macros/Public.cmake @@ -408,12 +408,16 @@ function (pxr_create_test_module MODULE_NAME) return() endif() - cmake_parse_arguments(tm "" "INSTALL_PREFIX;SOURCE_DIR" "" ${ARGN}) + cmake_parse_arguments(tm "" "INSTALL_PREFIX;SOURCE_DIR;DEST_DIR" "" ${ARGN}) if (NOT tm_SOURCE_DIR) set(tm_SOURCE_DIR testenv) endif() + if (NOT tm_DEST_DIR) + set(tm_DEST_DIR ${MODULE_NAME}) + endif() + # Look specifically for an __init__.py and a plugInfo.json prefixed by the # module name. These will be installed without the module prefix. set(initPyFile ${tm_SOURCE_DIR}/${MODULE_NAME}__init__.py) @@ -427,7 +431,7 @@ function (pxr_create_test_module MODULE_NAME) RENAME __init__.py DESTINATION - tests/${tm_INSTALL_PREFIX}/lib/python/${MODULE_NAME} + tests/${tm_INSTALL_PREFIX}/lib/python/${tm_DEST_DIR} ) endif() if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${plugInfoFile}") @@ -437,7 +441,7 @@ function (pxr_create_test_module MODULE_NAME) RENAME plugInfo.json DESTINATION - tests/${tm_INSTALL_PREFIX}/lib/python/${MODULE_NAME} + tests/${tm_INSTALL_PREFIX}/lib/python/${tm_DEST_DIR} ) endif() endfunction() # pxr_create_test_module diff --git a/pxr/base/arch/symbols.cpp b/pxr/base/arch/symbols.cpp index 2c6bf030c4..299c71aab6 100644 --- a/pxr/base/arch/symbols.cpp +++ b/pxr/base/arch/symbols.cpp @@ -26,6 +26,7 @@ #include "pxr/base/arch/fileSystem.h" #include "pxr/base/arch/symbols.h" #include "pxr/base/arch/defines.h" + #if defined(ARCH_OS_LINUX) #include #elif defined(ARCH_OS_DARWIN) @@ -87,9 +88,9 @@ ArchGetAddressInfo( } if (objectPath) { - char modName[MAX_PATH] = {0}; - if (GetModuleFileName(module, modName, MAX_PATH)) { - objectPath->assign(modName); + wchar_t modName[ARCH_PATH_MAX] = {0}; + if (GetModuleFileNameW(module, modName, ARCH_PATH_MAX)) { + objectPath->assign(ArchWindowsUtf16ToUtf8(modName)); } } diff --git a/pxr/base/plug/CMakeLists.txt b/pxr/base/plug/CMakeLists.txt index 7940647505..f3f7583bba 100644 --- a/pxr/base/plug/CMakeLists.txt +++ b/pxr/base/plug/CMakeLists.txt @@ -166,6 +166,21 @@ pxr_create_test_module(TestPlugModuleIncomplete INSTALL_PREFIX PlugPlugins ) +if (CMAKE_SYSTEM_NAME STREQUAL "Windows") + # Create a test module that has a unicode character in it's path + # for Windows + pxr_create_test_module(TestPlugModuleUnicode + INSTALL_PREFIX PlugPlugins + DEST_DIR TestPlugMödüleÜnicöde + ) +else() + # Create a test module without a unicode character in the path + # to make this test consistent on other OSes + pxr_create_test_module(TestPlugModuleUnicode + INSTALL_PREFIX PlugPlugins + ) +endif() + pxr_register_test(testPlug PYTHON COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testPlug" diff --git a/pxr/base/plug/info.cpp b/pxr/base/plug/info.cpp index c6791c4514..fb896c66b5 100644 --- a/pxr/base/plug/info.cpp +++ b/pxr/base/plug/info.cpp @@ -150,7 +150,17 @@ _ReadPlugInfoObject(const std::string& pathname, JsObject* result) // The file may not exist or be readable. std::ifstream ifs; +#if defined(ARCH_OS_WINDOWS) + // XXX: This is a MSVC specific overload to std::ifstream::open which + // supports std::wstring as an argument. + // Other compilers on Windows may fail here since it's not + // enforced by the C++ standard. If another compiler for Windows is needed + // we could use ArchOpenFile / ArchGetFileLength / ArchPRead instead + // of std::ifstream + ifs.open(ArchWindowsUtf8ToUtf16(pathname).c_str()); +#else ifs.open(pathname.c_str()); +#endif if (!ifs.is_open()) { TF_DEBUG(PLUG_INFO_SEARCH). Msg("Failed to open plugin info %s\n", pathname.c_str()); diff --git a/pxr/base/plug/testPlug.py b/pxr/base/plug/testPlug.py index d8df79eacd..82c0a7e895 100644 --- a/pxr/base/plug/testPlug.py +++ b/pxr/base/plug/testPlug.py @@ -108,7 +108,7 @@ def test_Registration(self): 'TestPlugModuleDepBadDep2', 'TestPlugModuleDepBadLoad', 'TestPlugModuleDepCycle', 'TestPlugModuleLoaded', 'TestPlugModuleLoadedBadBase', - 'TestPlugModuleUnloadable'])) + 'TestPlugModuleUnloadable', 'TestPlugModuleUnicode'])) # Check available subclasses of TestPlugBase<1> base1Subclasses = Tf.Type.FindByName('_TestPlugBase<1>').GetAllDerivedTypes() @@ -117,7 +117,8 @@ def test_Registration(self): 'TestPlugModule1.TestPlugPythonDerived1', 'TestPlugModuleLoaded.TestPlugPythonLoaded', 'TestPlugModuleLoadedBadBase.TestPlugPythonLoadedBadBase', - 'TestPlugUnloadable', 'TestPlugPythonUnloadable') + 'TestPlugUnloadable', 'TestPlugPythonUnloadable', + 'TestPlugModuleUnicode.TestPlugPythonUnicode') for sc in base1SubclassesExpected: self.assertIn(sc, base1Subclasses) self.assertEqual(len(base1Subclasses), len(base1SubclassesExpected)) diff --git a/pxr/base/plug/testenv/TestPlugModuleUnicode__init__.py b/pxr/base/plug/testenv/TestPlugModuleUnicode__init__.py new file mode 100644 index 0000000000..ddcfe79825 --- /dev/null +++ b/pxr/base/plug/testenv/TestPlugModuleUnicode__init__.py @@ -0,0 +1,31 @@ +# +# Copyright 2016 Pixar +# +# Licensed under the Apache License, Version 2.0 (the "Apache License") +# with the following modification; you may not use this file except in +# compliance with the Apache License and the following modification to it: +# Section 6. Trademarks. is deleted and replaced with: +# +# 6. Trademarks. This License does not grant permission to use the trade +# names, trademarks, service marks, or product names of the Licensor +# and its affiliates, except as required to comply with Section 4(c) of +# the License and to reproduce the content of the NOTICE file. +# +# You may obtain a copy of the Apache License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the Apache License with the above modification is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the Apache License for the specific +# language governing permissions and limitations under the Apache License. +# +from pxr import Plug + +# This plugin is coded correctly, but will have a pluginfo.json in a +# unicode path +class TestPlugPythonUnicode(Plug._TestPlugBase1): + def GetTypeName(self): + return 'TestPlugPythonUnicode' + diff --git a/pxr/base/plug/testenv/TestPlugModuleUnicode_plugInfo.json b/pxr/base/plug/testenv/TestPlugModuleUnicode_plugInfo.json new file mode 100644 index 0000000000..42dcd27d25 --- /dev/null +++ b/pxr/base/plug/testenv/TestPlugModuleUnicode_plugInfo.json @@ -0,0 +1,15 @@ +{ + "Plugins": [ + { + "Type": "python", + "Name": "TestPlugModuleUnicode", + "Info": { + "Types": { + "TestPlugModuleUnicode.TestPlugPythonUnicode": { + "bases": ["_TestPlugBase<1>"] + } + } + } + } + ] +} From d24b7554af48e4d1e6e9a36e27929af72c69749d Mon Sep 17 00:00:00 2001 From: Paul Molodowitch Date: Sat, 10 Dec 2022 11:47:54 -0800 Subject: [PATCH 002/352] [gf] testGfCamera: add a small tolerance allows test to pass on linux aarch64 architecture --- pxr/base/gf/testenv/testGfCamera.py | 30 +++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/pxr/base/gf/testenv/testGfCamera.py b/pxr/base/gf/testenv/testGfCamera.py index 65c38f2502..8dd1675a63 100644 --- a/pxr/base/gf/testenv/testGfCamera.py +++ b/pxr/base/gf/testenv/testGfCamera.py @@ -28,14 +28,36 @@ import math import unittest +if 'unittest.util' in __import__('sys').modules: + # Show full diff in self.assertEqual. + __import__('sys').modules['unittest.util']._MAX_LENGTH = 999999999 + class TestGfCamera(unittest.TestCase): + maxDiff = None def AssertListGfClose(self, l1, l2, delta = 1e-6): for v1, v2 in zip(l1, l2): self.assertTrue(Gf.IsClose(v1, v2, delta)) - def AssertEqualCams(self, cam1, cam2): - # Check fields + def AssertCamsClose(self, cam1, cam2, delta = 1e-6): + self.AssertListGfClose(cam1.transform, cam2.transform, delta=delta) + self.assertEqual(cam1.projection, cam2.projection) + self.assertAlmostEqual(cam1.horizontalAperture, cam2.horizontalAperture, delta=delta) + self.assertAlmostEqual(cam1.verticalAperture, cam2.verticalAperture, delta=delta) + self.assertAlmostEqual(cam1.horizontalApertureOffset, cam2.horizontalApertureOffset, delta=delta) + self.assertAlmostEqual(cam1.verticalApertureOffset, cam2.verticalApertureOffset, delta=delta) + self.assertAlmostEqual(cam1.focalLength, cam2.focalLength, delta=delta) + self.assertAlmostEqual(cam1.clippingRange, cam2.clippingRange, delta=delta) + self.assertAlmostEqual(cam1.clippingPlanes, cam2.clippingPlanes, delta=delta) + self.assertAlmostEqual(cam1.fStop, cam2.fStop, delta=delta) + self.assertAlmostEqual(cam1.focusDistance, cam2.focusDistance, delta=delta) + + # Check computation of frustum + self.AssertListGfClose(cam1.frustum.ComputeCorners(), + cam2.frustum.ComputeCorners(), + delta=delta) + + def AssertCamsEqual(self, cam1, cam2): self.assertEqual(cam1.transform, cam2.transform) self.assertEqual(cam1.projection, cam2.projection) self.assertEqual(cam1.horizontalAperture, cam2.horizontalAperture) @@ -58,7 +80,7 @@ def AssertEqualCams(self, cam1, cam2): def AssertCamSelfEvaluating(self, cam): - self.AssertEqualCams(cam, eval(repr(cam))) + self.AssertCamsEqual(cam, eval(repr(cam))) def test_CameraEqualOperator(self): @@ -369,7 +391,7 @@ def test_CameraOrthonormal(self): verticalAperture = 20.0, focalLength = 26.684656143188477) - self.AssertEqualCams(cam, otherCam) + self.AssertCamsClose(cam, otherCam) self.assertEqual(cam.projection, Gf.Camera.Perspective) From c0c7f7a0a652eda19723f72fb460771ffe88ade5 Mon Sep 17 00:00:00 2001 From: Jerry Gamache Date: Mon, 12 Dec 2022 17:19:28 -0500 Subject: [PATCH 003/352] Fix missing refresh when editing nodegraph attributes (#187) Fixes https://github.com/PixarAnimationStudios/USD/issues/2128 --- pxr/usdImaging/usdImaging/delegate.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pxr/usdImaging/usdImaging/delegate.cpp b/pxr/usdImaging/usdImaging/delegate.cpp index 26ec9fb1db..e05c7bd1f0 100644 --- a/pxr/usdImaging/usdImaging/delegate.cpp +++ b/pxr/usdImaging/usdImaging/delegate.cpp @@ -1586,7 +1586,8 @@ UsdImagingDelegate::_RefreshUsdObject( _ResyncUsdPrim(usdPrimPath, cache, proxy, true); resyncNeeded = true; - } else if (usdPrim && usdPrim.IsA()) { + } else if (usdPrim && (usdPrim.IsA() || + usdPrim.IsA())) { // Shader edits get forwarded to parent material. while (usdPrim && !usdPrim.IsA()) { usdPrim = usdPrim.GetParent(); From c0cd106db5effacbc7cf669336ec72e4f819d327 Mon Sep 17 00:00:00 2001 From: angudavi Date: Tue, 24 Jan 2023 15:02:27 -0800 Subject: [PATCH 004/352] Allow first Embree frame to be interrupted --- pxr/imaging/plugin/hdEmbree/renderer.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/pxr/imaging/plugin/hdEmbree/renderer.cpp b/pxr/imaging/plugin/hdEmbree/renderer.cpp index 20ec78c6aa..d0bd123b72 100644 --- a/pxr/imaging/plugin/hdEmbree/renderer.cpp +++ b/pxr/imaging/plugin/hdEmbree/renderer.cpp @@ -313,7 +313,7 @@ HdEmbreeRenderer::Clear() continue; } - HdEmbreeRenderBuffer *rb = + HdEmbreeRenderBuffer *rb = static_cast(_aovBindings[i].renderBuffer); rb->Map(); @@ -413,7 +413,7 @@ HdEmbreeRenderer::Render(HdRenderThread *renderThread) if (!_IsContained(_dataWindow, _width, _height)) { TF_CODING_ERROR( "dataWindow is larger than render buffer"); - + } } @@ -444,9 +444,12 @@ HdEmbreeRenderer::Render(HdRenderThread *renderThread) // Render by scheduling square tiles of the sample buffer in a parallel // for loop. + // Always pass the renderThread to _RenderTiles to allow the first frame + // to be interrupted. WorkParallelForN(numTilesX*numTilesY, std::bind(&HdEmbreeRenderer::_RenderTiles, this, - (i == 0) ? nullptr : renderThread, + // (i == 0) ? nullptr : renderThread, + renderThread, std::placeholders::_1, std::placeholders::_2)); // After the first pass, mark the single-sampled attachments as @@ -529,7 +532,7 @@ HdEmbreeRenderer::_RenderTiles(HdRenderThread *renderThread, // Compute the pixel location of tile boundaries. const unsigned int tileY = tile / numTilesX; - const unsigned int tileX = tile - tileY * numTilesX; + const unsigned int tileX = tile - tileY * numTilesX; // (Above is equivalent to: tileX = tile % numTilesX) const unsigned int x0 = tileX * tileSize + minX; const unsigned int y0 = tileY * tileSize + minY; @@ -589,7 +592,7 @@ HdEmbreeRenderer::_RenderTiles(HdRenderThread *renderThread, /// Fill in an RTCRay structure from the given parameters. static void -_PopulateRay(RTCRay *ray, GfVec3f const& origin, +_PopulateRay(RTCRay *ray, GfVec3f const& origin, GfVec3f const& dir, float nearest) { ray->org_x = origin[0]; From 9258b2b005ea478c0c5ef651f27450585e6cfc85 Mon Sep 17 00:00:00 2001 From: angudavi Date: Tue, 31 Jan 2023 09:33:48 -0800 Subject: [PATCH 005/352] reverted trailing whitespace removal changes --- pxr/imaging/plugin/hdEmbree/renderer.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pxr/imaging/plugin/hdEmbree/renderer.cpp b/pxr/imaging/plugin/hdEmbree/renderer.cpp index d0bd123b72..7e5842a609 100644 --- a/pxr/imaging/plugin/hdEmbree/renderer.cpp +++ b/pxr/imaging/plugin/hdEmbree/renderer.cpp @@ -313,7 +313,7 @@ HdEmbreeRenderer::Clear() continue; } - HdEmbreeRenderBuffer *rb = + HdEmbreeRenderBuffer *rb = static_cast(_aovBindings[i].renderBuffer); rb->Map(); @@ -413,7 +413,7 @@ HdEmbreeRenderer::Render(HdRenderThread *renderThread) if (!_IsContained(_dataWindow, _width, _height)) { TF_CODING_ERROR( "dataWindow is larger than render buffer"); - + } } @@ -532,7 +532,7 @@ HdEmbreeRenderer::_RenderTiles(HdRenderThread *renderThread, // Compute the pixel location of tile boundaries. const unsigned int tileY = tile / numTilesX; - const unsigned int tileX = tile - tileY * numTilesX; + const unsigned int tileX = tile - tileY * numTilesX; // (Above is equivalent to: tileX = tile % numTilesX) const unsigned int x0 = tileX * tileSize + minX; const unsigned int y0 = tileY * tileSize + minY; @@ -592,7 +592,7 @@ HdEmbreeRenderer::_RenderTiles(HdRenderThread *renderThread, /// Fill in an RTCRay structure from the given parameters. static void -_PopulateRay(RTCRay *ray, GfVec3f const& origin, +_PopulateRay(RTCRay *ray, GfVec3f const& origin, GfVec3f const& dir, float nearest) { ray->org_x = origin[0]; From e8a7d1de3bfd6355c3dedcfd0226dd0b6824f566 Mon Sep 17 00:00:00 2001 From: Ashley Ruglys Date: Fri, 3 Feb 2023 20:43:16 +0100 Subject: [PATCH 006/352] Change the TfRefPtr() to just TfRefPtr() --- pxr/base/tf/refPtr.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pxr/base/tf/refPtr.h b/pxr/base/tf/refPtr.h index 24b3f5a52b..b791e155eb 100644 --- a/pxr/base/tf/refPtr.h +++ b/pxr/base/tf/refPtr.h @@ -1252,14 +1252,14 @@ TfConst_cast(const TfRefPtr& ptr) template <> class TfRefPtr { private: - TfRefPtr() { + TfRefPtr() { } }; template <> class TfRefPtr { private: - TfRefPtr() { + TfRefPtr() { } }; From fae9c4eea223fad64a4e765110c1dbfbe7c9c6ad Mon Sep 17 00:00:00 2001 From: zhangha Date: Mon, 28 Nov 2022 11:02:13 +0800 Subject: [PATCH 007/352] Use TfNormPath to fix TfPathUtils test failures on Windows. --- pxr/base/tf/testenv/pathUtils.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pxr/base/tf/testenv/pathUtils.cpp b/pxr/base/tf/testenv/pathUtils.cpp index e8d5f43fcb..1bd493d2df 100644 --- a/pxr/base/tf/testenv/pathUtils.cpp +++ b/pxr/base/tf/testenv/pathUtils.cpp @@ -104,11 +104,11 @@ TestTfRealPath() if (testSymlinks) { // Leaf dir is symlink - TF_AXIOM(TfRealPath("d", true) == TfAbsPath("subdir")); + TF_AXIOM(TfNormPath(TfRealPath("d", true)) == TfNormPath(TfAbsPath("subdir"))); // Symlinks through to dir - TF_AXIOM(TfRealPath("d/e", true) == TfAbsPath("subdir/e")); + TF_AXIOM(TfNormPath(TfRealPath("d/e", true)) == TfNormPath(TfAbsPath("subdir/e"))); // Symlinks through to nonexistent dirs - TF_AXIOM(TfRealPath("d/e/f/g/h", true) == TfAbsPath("subdir/e/f/g/h")); + TF_AXIOM(TfNormPath(TfRealPath("d/e/f/g/h", true)) == TfNormPath(TfAbsPath("subdir/e/f/g/h"))); // Symlinks through to broken link TF_AXIOM(TfRealPath("g", true) == ""); } @@ -129,7 +129,7 @@ TestTfRealPath() } #if defined(ARCH_OS_WINDOWS) - string thisdir = TfRealPath("."); + string thisdir = TfNormPath(TfRealPath(".")); // This directory on Windows should start with a drive letter. TF_AXIOM(thisdir.length() > 2 && thisdir[1] == ':'); // Strip off the drive letter, leaving a path that starts with a slash, @@ -137,7 +137,7 @@ TestTfRealPath() // (because of the "current drive" concept in Windows). string testdir = thisdir; testdir.erase(0, 2); - TF_AXIOM(TfRealPath(testdir) == thisdir); + TF_AXIOM(TfNormPath(TfRealPath(testdir)) == thisdir); if (testSymlinks) { // Call Windows function to change the current working directory to // put us inside a directory that is a symlink. Then validate that @@ -146,17 +146,17 @@ TestTfRealPath() ::SetCurrentDirectory("b"); string thissubdir = thisdir; thissubdir += "/subdir"; - TF_AXIOM(TfRealPath(".") == thissubdir); + TF_AXIOM(TfNormPath(TfRealPath(".")) == thissubdir); ::SetCurrentDirectory(".."); // Then from outside the directory, validate that the more indirect // symlink (d->c->b->subdir) also resolves properly. We can't actually // "cd" to "d", because it isn't configured as a "directory" symlink. string testsubdir = thisdir; testsubdir += "/d"; - TF_AXIOM(TfRealPath(testsubdir) == thissubdir); + TF_AXIOM(TfNormPath(TfRealPath(testsubdir)) == thissubdir); // Test the more direct and indirect symlinks as relative paths. - TF_AXIOM(TfRealPath("b") == thissubdir); - TF_AXIOM(TfRealPath("d") == thissubdir); + TF_AXIOM(TfNormPath(TfRealPath("b")) == thissubdir); + TF_AXIOM(TfNormPath(TfRealPath("d")) == thissubdir); } #endif From 30e404840b0512dcc30b1e0e08bbf60d9b41c625 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Tue, 31 Jan 2023 11:37:33 -0800 Subject: [PATCH 008/352] Replace `boost::unordered_map` with `std::unordered_map` in `pxr/usd/pcp/layerStackRegistry.cpp` --- pxr/usd/pcp/layerStackRegistry.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/pxr/usd/pcp/layerStackRegistry.cpp b/pxr/usd/pcp/layerStackRegistry.cpp index 95cbe26751..b7cb6fafb6 100644 --- a/pxr/usd/pcp/layerStackRegistry.cpp +++ b/pxr/usd/pcp/layerStackRegistry.cpp @@ -35,9 +35,8 @@ #include -#include - #include +#include #include using std::pair; @@ -55,16 +54,16 @@ class Pcp_LayerStackRegistryData { typedef SdfLayerHandleVector Layers; typedef PcpLayerStackPtrVector LayerStacks; - typedef boost::unordered_map - IdentifierToLayerStack; - typedef boost::unordered_map + typedef std::unordered_map IdentifierToLayerStack; + typedef std::unordered_map LayerToLayerStacks; - typedef boost::unordered_map + typedef std::unordered_map LayerStackToLayers; - typedef boost::unordered_map + typedef std::unordered_map MutedLayerIdentifierToLayerStacks; - typedef boost::unordered_map > + typedef std::unordered_map, TfHash> LayerStackToMutedLayerIdentifiers; IdentifierToLayerStack identifierToLayerStack; From 74c22638896919c74a02a2fb29c048a7c47c5c74 Mon Sep 17 00:00:00 2001 From: Thibaud Lambert Date: Mon, 27 Feb 2023 11:25:33 +0100 Subject: [PATCH 009/352] Add missing HD_API in generativeProcedural.h and generativeProceduralPlugin.h --- pxr/imaging/hdGp/generativeProcedural.h | 4 ++++ pxr/imaging/hdGp/generativeProceduralPlugin.h | 1 + 2 files changed, 5 insertions(+) diff --git a/pxr/imaging/hdGp/generativeProcedural.h b/pxr/imaging/hdGp/generativeProcedural.h index c9f87763e1..520495a4ea 100644 --- a/pxr/imaging/hdGp/generativeProcedural.h +++ b/pxr/imaging/hdGp/generativeProcedural.h @@ -48,7 +48,10 @@ TF_DECLARE_PUBLIC_TOKENS(HdGpGenerativeProceduralTokens, class HdGpGenerativeProcedural { public: + HD_API HdGpGenerativeProcedural(const SdfPath &proceduralPrimPath); + + HD_API virtual ~HdGpGenerativeProcedural(); using DependencyMap = @@ -119,6 +122,7 @@ class HdGpGenerativeProcedural const SdfPath &childPrimPath) = 0; protected: + HD_API const SdfPath &_GetProceduralPrimPath(); private: diff --git a/pxr/imaging/hdGp/generativeProceduralPlugin.h b/pxr/imaging/hdGp/generativeProceduralPlugin.h index 46f0a5ee6b..348b360f2c 100644 --- a/pxr/imaging/hdGp/generativeProceduralPlugin.h +++ b/pxr/imaging/hdGp/generativeProceduralPlugin.h @@ -49,6 +49,7 @@ class HdGpGenerativeProceduralPlugin : public HfPluginBase protected: + HD_API HdGpGenerativeProceduralPlugin(); HD_API From 9cff8982674136ffbb8a22b474abda65aea5d677 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Thu, 2 Mar 2023 12:14:58 -0800 Subject: [PATCH 010/352] Use non-deprecated TBB headers in `pxr/base/work` --- pxr/base/work/loops.h | 2 +- pxr/base/work/reduce.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pxr/base/work/loops.h b/pxr/base/work/loops.h index 263718c9af..76ae9e8d8e 100644 --- a/pxr/base/work/loops.h +++ b/pxr/base/work/loops.h @@ -32,7 +32,7 @@ #include #include #include -#include +#include PXR_NAMESPACE_OPEN_SCOPE diff --git a/pxr/base/work/reduce.h b/pxr/base/work/reduce.h index cb5dd2a359..332ec20a21 100644 --- a/pxr/base/work/reduce.h +++ b/pxr/base/work/reduce.h @@ -31,7 +31,7 @@ #include #include -#include +#include PXR_NAMESPACE_OPEN_SCOPE From dce47a4713dec2be65a3617ca6be986b7f72853c Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Thu, 2 Mar 2023 12:27:32 -0800 Subject: [PATCH 011/352] Use non-deprecated TBB headers in `pxr/usd/usd/instanceCache.h` --- pxr/usd/usd/instanceCache.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pxr/usd/usd/instanceCache.h b/pxr/usd/usd/instanceCache.h index 36c97b2b2b..5118f14146 100644 --- a/pxr/usd/usd/instanceCache.h +++ b/pxr/usd/usd/instanceCache.h @@ -30,7 +30,7 @@ #include "pxr/usd/sdf/path.h" #include "pxr/base/tf/hashmap.h" -#include +#include #include #include #include From 9d2e76625bb50d98916acb22989add3aefa12a07 Mon Sep 17 00:00:00 2001 From: Thibaud Lambert Date: Thu, 16 Mar 2023 11:04:00 +0100 Subject: [PATCH 012/352] Add hdGp own api.h file and use HDGP_API instead of HD_API inside hdGp library --- pxr/imaging/hdGp/CMakeLists.txt | 3 ++ pxr/imaging/hdGp/api.h | 47 +++++++++++++++++++ pxr/imaging/hdGp/generativeProcedural.h | 7 +-- pxr/imaging/hdGp/generativeProceduralPlugin.h | 8 ++-- .../hdGp/generativeProceduralPluginRegistry.h | 6 +-- 5 files changed, 61 insertions(+), 10 deletions(-) create mode 100644 pxr/imaging/hdGp/api.h diff --git a/pxr/imaging/hdGp/CMakeLists.txt b/pxr/imaging/hdGp/CMakeLists.txt index d5bae8f571..f7abad702c 100644 --- a/pxr/imaging/hdGp/CMakeLists.txt +++ b/pxr/imaging/hdGp/CMakeLists.txt @@ -18,6 +18,9 @@ pxr_library(hdGp generativeProceduralPluginRegistry generativeProceduralResolvingSceneIndex sceneIndexPlugin + + PUBLIC_HEADERS + api.h RESOURCE_FILES plugInfo.json diff --git a/pxr/imaging/hdGp/api.h b/pxr/imaging/hdGp/api.h new file mode 100644 index 0000000000..7b44d5c0b5 --- /dev/null +++ b/pxr/imaging/hdGp/api.h @@ -0,0 +1,47 @@ +// +// Copyright 2023 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +#ifndef PXR_IMAGING_HDGP_API_H +#define PXR_IMAGING_HDGP_API_H + +#include "pxr/base/arch/export.h" + +#if defined(PXR_STATIC) +# define HDGP_API +# define HDGP_API_TEMPLATE_CLASS(...) +# define HDGP_API_TEMPLATE_STRUCT(...) +# define HDGP_LOCAL +#else +# if defined(HDGP_EXPORTS) +# define HDGP_API ARCH_EXPORT +# define HDGP_API_TEMPLATE_CLASS(...) ARCH_EXPORT_TEMPLATE(class, __VA_ARGS__) +# define HDGP_API_TEMPLATE_STRUCT(...) ARCH_EXPORT_TEMPLATE(struct, __VA_ARGS__) +# else +# define HDGP_API ARCH_IMPORT +# define HDGP_API_TEMPLATE_CLASS(...) ARCH_IMPORT_TEMPLATE(class, __VA_ARGS__) +# define HDGP_API_TEMPLATE_STRUCT(...) ARCH_IMPORT_TEMPLATE(struct, __VA_ARGS__) +# endif +# define HDGP_LOCAL ARCH_HIDDEN +#endif + +#endif // PXR_IMAGING_HDGP_API_H diff --git a/pxr/imaging/hdGp/generativeProcedural.h b/pxr/imaging/hdGp/generativeProcedural.h index 520495a4ea..caea87a176 100644 --- a/pxr/imaging/hdGp/generativeProcedural.h +++ b/pxr/imaging/hdGp/generativeProcedural.h @@ -24,6 +24,7 @@ #ifndef PXR_IMAGING_HD_GP_GENERATIVE_PROCEDURAL_H #define PXR_IMAGING_HD_GP_GENERATIVE_PROCEDURAL_H +#include "pxr/imaging/hdGp/api.h" #include "pxr/imaging/hd/sceneIndex.h" #include "pxr/base/tf/denseHashMap.h" @@ -48,10 +49,10 @@ TF_DECLARE_PUBLIC_TOKENS(HdGpGenerativeProceduralTokens, class HdGpGenerativeProcedural { public: - HD_API + HDGP_API HdGpGenerativeProcedural(const SdfPath &proceduralPrimPath); - HD_API + HDGP_API virtual ~HdGpGenerativeProcedural(); using DependencyMap = @@ -122,7 +123,7 @@ class HdGpGenerativeProcedural const SdfPath &childPrimPath) = 0; protected: - HD_API + HDGP_API const SdfPath &_GetProceduralPrimPath(); private: diff --git a/pxr/imaging/hdGp/generativeProceduralPlugin.h b/pxr/imaging/hdGp/generativeProceduralPlugin.h index 348b360f2c..9851bf8de3 100644 --- a/pxr/imaging/hdGp/generativeProceduralPlugin.h +++ b/pxr/imaging/hdGp/generativeProceduralPlugin.h @@ -27,7 +27,7 @@ #include "pxr/imaging/hdGp/generativeProcedural.h" #include "pxr/pxr.h" -#include "pxr/imaging/hd/api.h" +#include "pxr/imaging/hdGp/api.h" #include "pxr/imaging/hf/pluginBase.h" PXR_NAMESPACE_OPEN_SCOPE @@ -43,16 +43,16 @@ class HdGpGenerativeProceduralPlugin : public HfPluginBase /// Subclasses implement this to instantiate an HdGpGenerativeProcedural /// at a given prim path. - HD_API + HDGP_API virtual HdGpGenerativeProcedural *Construct( const SdfPath &proceduralPrimPath); protected: - HD_API + HDGP_API HdGpGenerativeProceduralPlugin(); - HD_API + HDGP_API ~HdGpGenerativeProceduralPlugin() override; }; diff --git a/pxr/imaging/hdGp/generativeProceduralPluginRegistry.h b/pxr/imaging/hdGp/generativeProceduralPluginRegistry.h index 88dda8f3ff..d6205bdc7b 100644 --- a/pxr/imaging/hdGp/generativeProceduralPluginRegistry.h +++ b/pxr/imaging/hdGp/generativeProceduralPluginRegistry.h @@ -27,7 +27,7 @@ #include "pxr/pxr.h" #include "pxr/base/tf/singleton.h" #include "pxr/imaging/hf/pluginRegistry.h" -#include "pxr/imaging/hd/api.h" +#include "pxr/imaging/hdGp/api.h" #include "pxr/imaging/hdGp/generativeProceduralPlugin.h" @@ -39,7 +39,7 @@ class HdGpGenerativeProceduralPluginRegistry final : public HfPluginRegistry /// /// Returns the singleton registry for \c HdSceneIndexPlugin /// - HD_API + HDGP_API static HdGpGenerativeProceduralPluginRegistry &GetInstance(); /// @@ -48,7 +48,7 @@ class HdGpGenerativeProceduralPluginRegistry final : public HfPluginRegistry template static void Define(); - HD_API + HDGP_API HdGpGenerativeProcedural *ConstructProcedural( const TfToken &proceduralTypeName, const SdfPath &proceduralPrimPath); From c0731797a1d64337ce71426a24811ce3e8977f8f Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Tue, 21 Mar 2023 20:40:38 -0700 Subject: [PATCH 013/352] Fix ranged loop type in `SdfLayer` --- pxr/usd/sdf/layer.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pxr/usd/sdf/layer.cpp b/pxr/usd/sdf/layer.cpp index cc82b8ded9..907404b9d4 100644 --- a/pxr/usd/sdf/layer.cpp +++ b/pxr/usd/sdf/layer.cpp @@ -4096,8 +4096,7 @@ SdfLayer::_SetData(const SdfAbstractDataPtr &newData, if (!updater.unrecognizedFields.empty()) { vector fieldDescrs; fieldDescrs.reserve(updater.unrecognizedFields.size()); - for (std::pair const &tokenPath: - updater.unrecognizedFields) { + for (auto const &tokenPath: updater.unrecognizedFields) { fieldDescrs.push_back( TfStringPrintf("'%s' first seen at <%s>", tokenPath.first.GetText(), From 90e1c8263c4289d849404c687d4343a6e791763b Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Fri, 17 Feb 2023 15:23:39 -0800 Subject: [PATCH 014/352] Replace `boost::container::flat_map` with `robin_map` --- pxr/usd/usd/crateFile.cpp | 16 +++++++++++++--- pxr/usd/usd/crateFile.h | 4 ++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/pxr/usd/usd/crateFile.cpp b/pxr/usd/usd/crateFile.cpp index 1303e7d829..701a2239e0 100644 --- a/pxr/usd/usd/crateFile.cpp +++ b/pxr/usd/usd/crateFile.cpp @@ -2624,7 +2624,7 @@ CrateFile::_AddDeferredSpecs() { // A map from sample time to VtValues within TimeSamples instances in // _deferredSpecs. - boost::container::flat_map> allValuesAtAllTimes; + pxr_tsl::robin_map> allValuesAtAllTimes; // Search for the TimeSamples, add to the allValuesAtAllTimes. for (auto &spec: _deferredSpecs) { @@ -2638,12 +2638,22 @@ CrateFile::_AddDeferredSpecs() } } + // Create a sorted view of the underlying map keys. + std::vector orderedTimes(allValuesAtAllTimes.size()); + std::transform(std::cbegin(allValuesAtAllTimes), + std::cend(allValuesAtAllTimes), + std::begin(orderedTimes), + [](const auto& element) { return element.first; }); + std::sort(orderedTimes.begin(), orderedTimes.end()); + // Now walk through allValuesAtAllTimes in order and pack all the values, // swapping them out with the resulting reps. This ensures that when we // pack the specs, which will re-pack the values, they'll be noops since // they are just holding value reps that point into the file. - for (auto const &p: allValuesAtAllTimes) { - for (VtValue *val: p.second) + for (auto const &t: orderedTimes) { + auto it = allValuesAtAllTimes.find(t); + TF_DEV_AXIOM(it != allValuesAtAllTimes.end()); + for (VtValue *val: it->second) *val = _PackValue(*val); } diff --git a/pxr/usd/usd/crateFile.h b/pxr/usd/usd/crateFile.h index 399367e6e0..67b1aa385f 100644 --- a/pxr/usd/usd/crateFile.h +++ b/pxr/usd/usd/crateFile.h @@ -32,6 +32,7 @@ #include "pxr/base/arch/fileSystem.h" #include "pxr/base/tf/hash.h" +#include "pxr/base/tf/pxrTslRobinMap/robin_map.h" #include "pxr/base/tf/token.h" #include "pxr/base/vt/array.h" #include "pxr/base/vt/value.h" @@ -43,7 +44,6 @@ #include "pxr/usd/sdf/path.h" #include "pxr/usd/sdf/types.h" -#include #include #include @@ -1046,7 +1046,7 @@ class CrateFile mutable tbb::spin_rw_mutex _sharedTimesMutex; // functions to write VtValues to file by type. - boost::container::flat_map< + pxr_tsl::robin_map< std::type_index, std::function> _packValueFunctions; From f2c07d3feaf310a174c93f384da6bc442ceb6069 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Wed, 1 Feb 2023 15:36:42 -0800 Subject: [PATCH 015/352] Replace `boost::iterator_adaptor` with explicitly specified iterator definition for `Usd_PrimData{Sibling,Subtree}Iterator` --- pxr/usd/usd/primData.h | 126 ++++++++++++++++++++++++++++++----------- 1 file changed, 94 insertions(+), 32 deletions(-) diff --git a/pxr/usd/usd/primData.h b/pxr/usd/usd/primData.h index 785422b702..253579eda6 100644 --- a/pxr/usd/usd/primData.h +++ b/pxr/usd/usd/primData.h @@ -41,7 +41,6 @@ #include "pxr/usd/sdf/path.h" #include -#include #include #include @@ -353,31 +352,62 @@ class Usd_PrimData }; // Sibling iterator class. -class Usd_PrimDataSiblingIterator : public boost::iterator_adaptor< - Usd_PrimDataSiblingIterator, // crtp. - Usd_PrimData *, // base iterator. - Usd_PrimData *, // value. - boost::forward_traversal_tag, // traversal. - Usd_PrimData * // reference. - > -{ +class Usd_PrimDataSiblingIterator { + using _UnderylingIterator = Usd_PrimData*; + class _PtrProxy { + public: + Usd_PrimData** operator->() { return &_primData; } + private: + friend class Usd_PrimDataSiblingIterator; + explicit _PtrProxy(Usd_PrimData* primData) : _primData(primData) {} + Usd_PrimData* _primData = nullptr; + }; public: + using iterator_category = std::forward_iterator_tag; + using value_type = Usd_PrimData*; + using reference = Usd_PrimData*; + using pointer = _PtrProxy; + using difference_type = std::ptrdiff_t; + // Default ctor. - Usd_PrimDataSiblingIterator() {} + Usd_PrimDataSiblingIterator() = default; + + reference operator*() const { return _underlyingIterator; } + pointer operator->() const { return pointer(_underlyingIterator); } + + // pre-increment + Usd_PrimDataSiblingIterator& operator++() { + increment(); + return *this; + } + + // post-increment + Usd_PrimDataSiblingIterator operator++(int) { + Usd_PrimDataSiblingIterator result = *this; + increment(); + return result; + } + + bool operator==(const Usd_PrimDataSiblingIterator& other) const { + return _underlyingIterator == other._underlyingIterator; + } + + bool operator!=(const Usd_PrimDataSiblingIterator& other) const { + return _underlyingIterator != other._underlyingIterator; + } private: friend class Usd_PrimData; // Constructor used by Prim. - Usd_PrimDataSiblingIterator(const base_type &i) - : iterator_adaptor_(i) {} + Usd_PrimDataSiblingIterator(const _UnderylingIterator &i) + : _underlyingIterator(i) {} - // Core primitives implementation. - friend class boost::iterator_core_access; - reference dereference() const { return base(); } void increment() { - base_reference() = base_reference()->GetNextSibling(); + _underlyingIterator = _underlyingIterator->GetNextSibling(); } + + _UnderylingIterator _underlyingIterator = nullptr; }; // Sibling range. @@ -412,33 +442,65 @@ Usd_PrimData::_GetChildrenRange() const // Tree iterator class. -class Usd_PrimDataSubtreeIterator : public boost::iterator_adaptor< - Usd_PrimDataSubtreeIterator, // crtp. - Usd_PrimData *, // base iterator. - Usd_PrimData *, // value. - boost::forward_traversal_tag, // traversal. - Usd_PrimData * // reference. - > -{ +class Usd_PrimDataSubtreeIterator { + using _UnderlyingIterator = Usd_PrimData*; + class _PtrProxy { + public: + Usd_PrimData** operator->() { return &_primData; } + private: + friend class Usd_PrimDataSubtreeIterator; + explicit _PtrProxy(Usd_PrimData* primData) : _primData(primData) {} + Usd_PrimData* _primData = nullptr; + }; public: + using iterator_category = std::forward_iterator_tag; + using value_type = Usd_PrimData*; + using reference = Usd_PrimData*; + using pointer = _PtrProxy; + using difference_type = std::ptrdiff_t; + // Default ctor. - Usd_PrimDataSubtreeIterator() {} + Usd_PrimDataSubtreeIterator() = default; + + reference operator*() const { return _underlyingIterator; } + pointer operator->() const { return pointer(_underlyingIterator); } + + // pre-increment + Usd_PrimDataSubtreeIterator& operator++() { + increment(); + return *this; + } + + // post-increment + Usd_PrimDataSubtreeIterator operator++(int) { + Usd_PrimDataSubtreeIterator result = *this; + increment(); + return result; + } + + bool operator==(const Usd_PrimDataSubtreeIterator& other) const { + return _underlyingIterator == other._underlyingIterator; + } + + bool operator!=(const Usd_PrimDataSubtreeIterator& other) const { + return _underlyingIterator != other._underlyingIterator; + } private: friend class Usd_PrimData; friend class UsdPrimSubtreeIterator; // Constructor used by Prim. - Usd_PrimDataSubtreeIterator(const base_type &i) - : iterator_adaptor_(i) {} + Usd_PrimDataSubtreeIterator(const _UnderlyingIterator &i) + : _underlyingIterator(i) {} - // Core primitives implementation. - friend class boost::iterator_core_access; - reference dereference() const { return base(); } void increment() { - base_type &b = base_reference(); - b = b->GetFirstChild() ? b->GetFirstChild() : b->GetNextPrim(); + _underlyingIterator = _underlyingIterator->GetFirstChild() ? + _underlyingIterator->GetFirstChild() : + _underlyingIterator->GetNextPrim(); } + + _UnderlyingIterator _underlyingIterator = nullptr; }; // Tree range. From 3594c4214de72ba846c5db3354fcd28ad93db0e7 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Tue, 18 Apr 2023 12:41:55 -0700 Subject: [PATCH 016/352] Remove unused pointer proxy --- pxr/usd/usd/primData.h | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/pxr/usd/usd/primData.h b/pxr/usd/usd/primData.h index 253579eda6..b7031f3b6b 100644 --- a/pxr/usd/usd/primData.h +++ b/pxr/usd/usd/primData.h @@ -354,26 +354,17 @@ class Usd_PrimData // Sibling iterator class. class Usd_PrimDataSiblingIterator { using _UnderylingIterator = Usd_PrimData*; - class _PtrProxy { - public: - Usd_PrimData** operator->() { return &_primData; } - private: - friend class Usd_PrimDataSiblingIterator; - explicit _PtrProxy(Usd_PrimData* primData) : _primData(primData) {} - Usd_PrimData* _primData = nullptr; - }; public: using iterator_category = std::forward_iterator_tag; using value_type = Usd_PrimData*; using reference = Usd_PrimData*; - using pointer = _PtrProxy; + using pointer = void; using difference_type = std::ptrdiff_t; // Default ctor. Usd_PrimDataSiblingIterator() = default; reference operator*() const { return _underlyingIterator; } - pointer operator->() const { return pointer(_underlyingIterator); } // pre-increment Usd_PrimDataSiblingIterator& operator++() { @@ -444,26 +435,17 @@ Usd_PrimData::_GetChildrenRange() const // Tree iterator class. class Usd_PrimDataSubtreeIterator { using _UnderlyingIterator = Usd_PrimData*; - class _PtrProxy { - public: - Usd_PrimData** operator->() { return &_primData; } - private: - friend class Usd_PrimDataSubtreeIterator; - explicit _PtrProxy(Usd_PrimData* primData) : _primData(primData) {} - Usd_PrimData* _primData = nullptr; - }; public: using iterator_category = std::forward_iterator_tag; using value_type = Usd_PrimData*; using reference = Usd_PrimData*; - using pointer = _PtrProxy; + using pointer = void; using difference_type = std::ptrdiff_t; // Default ctor. Usd_PrimDataSubtreeIterator() = default; reference operator*() const { return _underlyingIterator; } - pointer operator->() const { return pointer(_underlyingIterator); } // pre-increment Usd_PrimDataSubtreeIterator& operator++() { From 903da3d4d305a32eff878ea403facd887dc5458c Mon Sep 17 00:00:00 2001 From: Mark Tucker Date: Thu, 20 Apr 2023 17:02:33 -0400 Subject: [PATCH 017/352] Make sure add_dll_directory is always called with an absolute path. Calling it with a relative path on Windows raises an exception. --- pxr/base/tf/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pxr/base/tf/__init__.py b/pxr/base/tf/__init__.py index 53e437642d..30d236226e 100644 --- a/pxr/base/tf/__init__.py +++ b/pxr/base/tf/__init__.py @@ -44,7 +44,8 @@ def WindowsImportWrapper(): # Calling add_dll_directory raises an exception if paths don't # exist, or if you pass in dot if os.path.exists(path) and path != '.': - dirs.append(os.add_dll_directory(path)) + abs_path = os.path.abspath(path) + dirs.append(os.add_dll_directory(abs_path)) # This block guarantees we clear the dll directories if an exception # is raised in the with block. try: From 7dc39691dc4d5c32b2c23dc080807a59824591bb Mon Sep 17 00:00:00 2001 From: Mark Tucker Date: Thu, 20 Apr 2023 16:48:10 -0400 Subject: [PATCH 018/352] Allow instancing of bounding boxes drawn on prims with unloaded payloads. --- pxr/usdImaging/usdImaging/delegate.cpp | 7 ++++--- pxr/usdImaging/usdImaging/drawModeAdapter.cpp | 6 +----- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/pxr/usdImaging/usdImaging/delegate.cpp b/pxr/usdImaging/usdImaging/delegate.cpp index 4264970e54..bfe9fa616b 100644 --- a/pxr/usdImaging/usdImaging/delegate.cpp +++ b/pxr/usdImaging/usdImaging/delegate.cpp @@ -232,10 +232,11 @@ UsdImagingDelegate::_AdapterLookup(UsdPrim const& prim, bool ignoreInstancing) // threads. TfToken adapterKey; - if (_displayUnloadedPrimsWithBounds && !prim.IsLoaded()) { - adapterKey = UsdImagingAdapterKeyTokens->drawModeAdapterKey; - } else if (!ignoreInstancing && prim.IsInstance()) { + + if (!ignoreInstancing && prim.IsInstance()) { adapterKey = UsdImagingAdapterKeyTokens->instanceAdapterKey; + } else if (_displayUnloadedPrimsWithBounds && !prim.IsLoaded()) { + adapterKey = UsdImagingAdapterKeyTokens->drawModeAdapterKey; } else if (_hasDrawModeAdapter && _enableUsdDrawModes && _IsDrawModeApplied(prim)) { adapterKey = UsdImagingAdapterKeyTokens->drawModeAdapterKey; diff --git a/pxr/usdImaging/usdImaging/drawModeAdapter.cpp b/pxr/usdImaging/usdImaging/drawModeAdapter.cpp index 0add8f3447..89e194ca0f 100644 --- a/pxr/usdImaging/usdImaging/drawModeAdapter.cpp +++ b/pxr/usdImaging/usdImaging/drawModeAdapter.cpp @@ -1561,11 +1561,7 @@ UsdImagingDrawModeAdapter::GetTransform(UsdPrim const& prim, // the instance prim, but we want to ignore transforms on that // prim since the instance adapter will incorporate it into the per-instance // transform and we don't want to double-transform the prim. - // - // Note: if the prim is unloaded (because unloaded prims are drawing as - // bounds), we skip the normal instancing machinery and need to handle - // the transform ourselves. - if (prim.IsInstance() && prim.IsLoaded()) { + if (prim.IsInstance()) { return GfMatrix4d(1.0); } else { return BaseAdapter::GetTransform( From 17360ab530c1d0e721edf7d35aa0feb3f9a8ecaf Mon Sep 17 00:00:00 2001 From: Mark Tucker Date: Fri, 28 Apr 2023 09:57:21 -0400 Subject: [PATCH 019/352] Fix VtArray declaraions of extern template instantiations so that the code in array.cpp will actually instantiate and export the templates as expected. Currently the templates are marked as extern even while compiling array.cpp so the compiler isn't actually instantiating anything. --- pxr/base/vt/array.cpp | 2 +- pxr/base/vt/array.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pxr/base/vt/array.cpp b/pxr/base/vt/array.cpp index 811a946e24..876b13b2e3 100644 --- a/pxr/base/vt/array.cpp +++ b/pxr/base/vt/array.cpp @@ -47,7 +47,7 @@ Vt_ArrayBase::_DetachCopyHook(char const *funcName) const // Instantiate basic array templates. #define VT_ARRAY_EXPLICIT_INST(r, unused, elem) \ - template class VtArray< VT_TYPE(elem) >; + template class VT_API VtArray< VT_TYPE(elem) >; BOOST_PP_SEQ_FOR_EACH(VT_ARRAY_EXPLICIT_INST, ~, VT_SCALAR_VALUE_TYPES) diff --git a/pxr/base/vt/array.h b/pxr/base/vt/array.h index 3f4cc34837..0824378495 100644 --- a/pxr/base/vt/array.h +++ b/pxr/base/vt/array.h @@ -919,7 +919,7 @@ class VtArray : public Vt_ArrayBase { // Declare basic array instantiations as extern templates. They are explicitly // instantiated in array.cpp. #define VT_ARRAY_EXTERN_TMPL(r, unused, elem) \ - extern template class VtArray< VT_TYPE(elem) >; + VT_API_TEMPLATE_CLASS(VtArray< VT_TYPE(elem) >); BOOST_PP_SEQ_FOR_EACH(VT_ARRAY_EXTERN_TMPL, ~, VT_SCALAR_VALUE_TYPES) template From 09ffb88e49856f3aa8d0c3a1ed19ec505959c55b Mon Sep 17 00:00:00 2001 From: Davide Pesare Date: Tue, 9 May 2023 16:00:03 -0700 Subject: [PATCH 020/352] fix typos in complianceChecker --- pxr/usd/usdUtils/complianceChecker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pxr/usd/usdUtils/complianceChecker.py b/pxr/usd/usdUtils/complianceChecker.py index 1c051617e1..3ba4f8f296 100644 --- a/pxr/usd/usdUtils/complianceChecker.py +++ b/pxr/usd/usdUtils/complianceChecker.py @@ -1031,7 +1031,7 @@ def GetFailedChecks(self): def CheckCompliance(self, inputFile): from pxr import Sdf, Usd, UsdUtils if not Usd.Stage.IsSupportedFile(inputFile): - _AddError("Cannot open file '%s' on a USD stage." % args.inputFile) + self._AddError("Cannot open file '%s' on a USD stage." % inputFile) return # Collect all warnings using a diagnostic delegate. From 69deea05014da3ede99a7d1fff6b37b773bba2c0 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Thu, 1 Jun 2023 11:14:45 -0700 Subject: [PATCH 021/352] Nominally reference the IRI specification in documentation --- pxr/usd/ar/overview.dox | 31 ++++++++++++++++++++-------- pxr/usd/ar/resolver.cpp | 41 ++++++++++++++++++++----------------- pxr/usd/ar/resolver.h | 45 ++++++++++++++++++++++------------------- 3 files changed, 69 insertions(+), 48 deletions(-) diff --git a/pxr/usd/ar/overview.dox b/pxr/usd/ar/overview.dox index 55eef85d78..74946ebde2 100644 --- a/pxr/usd/ar/overview.dox +++ b/pxr/usd/ar/overview.dox @@ -94,15 +94,20 @@ that will search for an asset in a specified list of directories. See documentation on ArDefaultResolver for more information on configuring this behavior. -\subsection ar_uri_resolvers URI Resolvers +\subsection ar_uri_resolvers URI/IRI Resolvers -URI resolvers are ArResolver subclasses that are associated with particular -URI schemes. +URI/IRI resolvers are ArResolver subclasses that are associated with particular +resource identifier schemes. + +\note IRIs are URIs which support unicode characters in certain components of +the identifier. All URIs are IRIs, and compliant IRIs can be idempotently +converted to URIs through percent encoding. When Ar encounters an asset path or resolved path of the form ":...", it will check if any ArResolver subclasses have been registered for the scheme. If so, it will dispatch the path to that subclass for handling. If not, it will -dispatch the path to the primary resolver for handling. +dispatch the path to the primary resolver for handling. Schemes should adhere to +the URI/IRI specification and are ASCII only. For example, if there were an HTTPResolver subclass of ArResolver that was registered to handle the "http" scheme. If the following was called: @@ -116,13 +121,13 @@ Ar would inspect the given path, find the "http" scheme and determine that HTTPResolver (if one had not already been created), then call HTTPResolver::Resolve on that instance with the given path. -To create a URI resolver: +To create a URI/IRI resolver: - Implement a subclass of ArResolver as described in the \ref ar_primary_resolver "Primary Resolver" section above. - In the entry for the subclass in the plugin's plugInfo.json file, - add a "uriSchemes" key with a list of URI schemes associated with the + add a "uriSchemes" key with a list of schemes associated with the resolver. \code{.json} { @@ -142,6 +147,16 @@ To create a URI resolver: } \endcode +`uriSchemes` may be used to register resolvers which support non-percent +encoded IRIs. Unicode characters in asset path strings should be UTF-8 encoded. + +Resolvers are ultimately responsible for validation, normalization, and parsing +of asset paths. USD does not attempt to validate or parse resource identifiers +beyond what's needed for dispatching via 'scheme'. When a resolver is working +with a protocol that strictly requires percent-encoded URIs, it's acceptable +for the resolver to accept UTF-8 encoded IRIs and internally handle percent +encoding. + \section ar_resolution Asset Path Resolution An asset path is a string that describes the location of an asset in a user's @@ -267,11 +282,11 @@ Ar reserves trailing bracket-enclosed paths as syntax for package-relative asset paths. For example, paths like: - "/foo/baz.usdz[file.usd]" -- "my_uri://foo/baz.usdz[file.usd]" +- "my-uri://foo/baz.usdz[file.usd]" will be recognized by Ar as a package-relative asset path and will be split so that ArResolver subclasses will only see the path "/foo/baz.usdz" or -"my_uri://foo/baz.usdz". For more details, see +"my-uri://foo/baz.usdz". For more details, see \ref Ar_packagePaths "Package Relative Paths" */ diff --git a/pxr/usd/ar/resolver.cpp b/pxr/usd/ar/resolver.cpp index ee2be95862..e571c6c6a4 100644 --- a/pxr/usd/ar/resolver.cpp +++ b/pxr/usd/ar/resolver.cpp @@ -70,7 +70,7 @@ TF_DEFINE_PRIVATE_TOKENS(_tokens, // Plugin metadata key for package resolver extensions. (extensions) - // Plugin metadata key for resolver URI schemes. + // Plugin metadata key for resolver URI/IRI schemes. (uriSchemes) // Plugin metadata keys for specifying resolver functionality. @@ -85,7 +85,7 @@ TF_DEFINE_ENV_SETTING( TF_DEFINE_ENV_SETTING( PXR_AR_DISABLE_PLUGIN_URI_RESOLVERS, false, - "Disables plugin URI resolver implementations."); + "Disables plugin URI/IRI resolver implementations."); static TfStaticData _preferredResolver; @@ -114,7 +114,7 @@ class _ResolverInfo // TfType for the resolver implementation. TfType type; - // URI schemes associated with the resolver implementation. + // URI/IRI schemes associated with the resolver implementation. std::vector uriSchemes; // Whether this resolver can be used as a primary resolver. @@ -210,7 +210,7 @@ _GetAvailableResolvers() std::vector<_ResolverInfo> resolvers; resolvers.reserve(sortedResolverTypes.size()); - // Fill in the URI schemes associated with each available resolver. + // Fill in the URI/IRI schemes associated with each available resolver. for (const TfType& resolverType : sortedResolverTypes) { const PlugPluginPtr plugin = _GetPluginForType(resolverType); if (!plugin) { @@ -506,12 +506,13 @@ class _DispatchingResolver final const ArResolvedPath& anchorAssetPath, const CreateIdentifierFn& createIdentifierFn) const { - // If assetPath has a recognized URI scheme, we assume it's an absolute - // URI per RFC 3986 sec 4.3 and delegate to the associated URI resolver - // to handle this query. + // If assetPath has a recognized URI/IRI scheme, we assume it's an + // absolute identifier per RFC 3986 sec 4.3 (RFC 3987 sec 2.2 for IRIs) + // and delegate to the associated scheme's resolver to handle this + // query. // - // If path does not have a recognized URI scheme, we delegate to the - // resolver for the anchorAssetPath. Although we could implement URI + // If path does not have a recognized URI/IRI scheme, we delegate to + // the resolver for the anchorAssetPath. Although we could implement // anchoring per RFC 3986 sec 5 here, we want to give implementations // the chance to do additional manipulations. ArResolver* resolver = _GetURIResolver(assetPath); @@ -589,11 +590,11 @@ class _DispatchingResolver final return resolver.GetExtension(path); } - // The primary resolver and the URI resolvers all participate + // The primary resolver and the URI/IRI resolvers all participate // in context binding and may have context-related data to store // away. To accommodate this, _Resolve stores away a vector of // VtValues where each element corresponds to the primary resolver - // or a URI resolver. + // or a URI/IRI resolver. using _ResolverContextData = std::vector; void _BindContext( @@ -1109,8 +1110,9 @@ class _DispatchingResolver final uriSchemes.reserve(resolverInfo.uriSchemes.size()); for (std::string uriScheme : resolverInfo.uriSchemes) { - // Per RFC 3986 sec 3.1 schemes are case-insensitive. - // Force all schemes to lower-case to support this. + // Per RFC 3986 sec 3.1 / RFC 3987 sec 5.3.2.1 schemes are + // case-insensitive. Force all schemes to lower-case to support + // this. uriScheme = TfStringToLower(uriScheme); if (const _ResolverSharedPtr* existingResolver = @@ -1241,7 +1243,7 @@ class _DispatchingResolver final return nullptr; } - // Search for the first ":" character delimiting a URI scheme in + // Search for the first ":" character delimiting a URI/IRI scheme in // the given asset path. As an optimization, we only search the // first _maxURISchemeLength + 1 (to accommodate the ":") characters. const size_t numSearchChars = @@ -1262,9 +1264,10 @@ class _DispatchingResolver final const std::string& scheme, const _ResolverInfo** info = nullptr) const { - // Per RFC 3986 sec 3.1 schemes are case-insensitive. The schemes - // stored in _uriResolvers are always stored in lower-case, so - // convert our candidate scheme to lower case as well. + // Per RFC 3986 sec 3.1 / RFC 3987 5.3.2.1 schemes are + // case-insensitive. The schemes stored in _uriResolvers are always + // stored in lower-case, so convert our candidate scheme to lower case + // as well. const _ResolverSharedPtr* uriResolver = TfMapLookupPtr(_uriResolvers, TfStringToLower(scheme)); if (uriResolver) { @@ -1344,7 +1347,7 @@ class _DispatchingResolver final return resolveFn(path); } - // Primary and URI Resolvers -------------------- + // Primary and URI/IRI Resolvers -------------------- class _Resolver : public _PluginResolver @@ -1368,7 +1371,7 @@ class _DispatchingResolver final // Primary Resolver _ResolverSharedPtr _resolver; - // URI Resolvers + // URI/IRI Resolvers std::unordered_map _uriResolvers; size_t _maxURISchemeLength; diff --git a/pxr/usd/ar/resolver.h b/pxr/usd/ar/resolver.h index fc99ab424f..3df60f873d 100644 --- a/pxr/usd/ar/resolver.h +++ b/pxr/usd/ar/resolver.h @@ -166,7 +166,7 @@ class ArResolver /// to resolve assets when no other context is explicitly specified. /// /// The returned ArResolverContext will contain the default context - /// returned by the primary resolver and all URI resolvers. + /// returned by the primary resolver and all URI/IRI resolvers. AR_API ArResolverContext CreateDefaultContext() const; @@ -175,7 +175,8 @@ class ArResolver /// that asset when no other context is explicitly specified. /// /// The returned ArResolverContext will contain the default context - /// for \p assetPath returned by the primary resolver and all URI resolvers. + /// for \p assetPath returned by the primary resolver and all URI/IRI + /// resolvers. AR_API ArResolverContext CreateDefaultContextForAsset( const std::string& assetPath) const; @@ -194,6 +195,8 @@ class ArResolver /// /// If no resolver is registered for \p uriScheme, returns an empty /// ArResolverContext. + /// + /// \note 'uriScheme' can be used to register IRI resolvers AR_API ArResolverContext CreateContextFromString( const std::string& uriScheme, const std::string& contextStr) const; @@ -202,25 +205,25 @@ class ArResolver /// objects created from the given \p contextStrs. /// /// \p contextStrs is a list of pairs of strings. The first element in the - /// pair is the URI scheme for the ArResolver that will be used to create - /// the ArResolverContext from the second element in the pair. An empty - /// URI scheme indicates the primary resolver. + /// pair is the URI/IRI scheme for the ArResolver that will be used to + /// create the ArResolverContext from the second element in the pair. An + /// empty resource identifier scheme indicates the primary resolver. /// /// For example: /// /// \code /// ArResolverContext ctx = ArGetResolver().CreateContextFromStrings( /// { {"", "context str 1"}, - /// {"my_scheme", "context str 2"} }); + /// {"my-scheme", "context str 2"} }); /// \endcode /// /// This will use the primary resolver to create an ArResolverContext /// using the string "context str 1" and use the resolver registered for - /// the "my_scheme" URI scheme to create an ArResolverContext using + /// the "my-scheme" URI/IRI scheme to create an ArResolverContext using /// "context str 2". These contexts will be combined into a single /// ArResolverContext and returned. /// - /// If no resolver is registered for a URI scheme in an entry in + /// If no resolver is registered for a URI/IRI scheme in an entry in /// \p contextStrs, that entry will be ignored. AR_API ArResolverContext CreateContextFromStrings( @@ -453,9 +456,9 @@ class ArResolver /// same asset, so implementations should take care to canonicalize and /// normalize the returned identifier to a consistent format. /// - /// If either \p assetPath or \p anchorAssetPath have a URI scheme, this - /// function will be called on the resolver associated with that URI scheme, - /// if any. + /// If either \p assetPath or \p anchorAssetPath have a URI/IRI scheme, + /// this function will be called on the resolver associated with that + /// URI/IRI scheme, if any. /// /// Example uses: /// - When opening a layer via SdfLayer::FindOrOpen or Find, @@ -563,9 +566,9 @@ class ArResolver /// to resolve assets when no other context is explicitly specified. /// /// When CreateDefaultContext is called on the configured asset resolver, - /// Ar will call this method on the primary resolver and all URI resolvers - /// and merge the results into a single ArResolverContext that will be - /// returned to the consumer. + /// Ar will call this method on the primary resolver and all URI/IRI + /// resolvers and merge the results into a single ArResolverContext that + /// will be returned to the consumer. /// /// This function should not automatically bind this context, but should /// create one that may be used later. @@ -585,16 +588,16 @@ class ArResolver /// that asset when no other context is explicitly specified. /// /// When CreateDefaultContextForAsset is called on the configured asset - /// resolver, Ar will call this method on the primary resolver and all URI - /// resolvers and merge the results into a single ArResolverContext that - /// will be returned to the consumer. + /// resolver, Ar will call this method on the primary resolver and all + /// URI/IRI resolvers and merge the results into a single ArResolverContext + /// that will be returned to the consumer. /// /// Note that this means this method may be called with asset paths that /// are not associated with this resolver. For example, this method may - /// be called on a URI resolver with a non-URI asset path. This is to - /// support cases where the asset at \p assetPath references other - /// assets with URI schemes that differ from the URI scheme (if any) - /// in \p assetPath. + /// be called on a URI/IRI resolver with a non-URI/IRI asset path. This is + /// to support cases where the asset at \p assetPath references other + /// assets with URI/IRI schemes that differ from the URI/IRI scheme + /// (if any) in \p assetPath. /// /// This function should not automatically bind this context, but should /// create one that may be used later. From 74b45736659160cc879b568630d7038774106e71 Mon Sep 17 00:00:00 2001 From: fanc Date: Wed, 19 Apr 2023 11:06:06 +0800 Subject: [PATCH 022/352] update zlib to 1.2.13 to address a vulnerability --- build_scripts/build_usd.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_scripts/build_usd.py b/build_scripts/build_usd.py index 8eba23e87f..7394762fc1 100644 --- a/build_scripts/build_usd.py +++ b/build_scripts/build_usd.py @@ -676,7 +676,7 @@ def AnyPythonDependencies(deps): ############################################################ # zlib -ZLIB_URL = "https://github.com/madler/zlib/archive/v1.2.11.zip" +ZLIB_URL = "https://github.com/madler/zlib/archive/v1.2.13.zip" def InstallZlib(context, force, buildArgs): with CurrentWorkingDirectory(DownloadURL(ZLIB_URL, context, force)): From 8cd79efa10a661ead5c4f48e7b082ce36eb7fa4e Mon Sep 17 00:00:00 2001 From: Eoin Mcloughlin Date: Wed, 14 Jun 2023 11:23:44 +0100 Subject: [PATCH 023/352] WIP cylinders, capsules with two radii --- pxr/imaging/geomUtil/capsuleMeshGenerator.cpp | 21 +- pxr/imaging/geomUtil/capsuleMeshGenerator.h | 8 +- pxr/usd/usdGeom/CMakeLists.txt | 2 + pxr/usd/usdGeom/capsule_1.cpp | 234 +++++++++++ pxr/usd/usdGeom/capsule_1.h | 298 ++++++++++++++ pxr/usd/usdGeom/cone_1.cpp | 129 ++++++ pxr/usd/usdGeom/cone_1.h | 171 ++++++++ pxr/usd/usdGeom/cylinder_1.cpp | 234 +++++++++++ pxr/usd/usdGeom/cylinder_1.h | 300 ++++++++++++++ pxr/usd/usdGeom/generatedSchema.usda | 389 ++++++++++++++++++ pxr/usd/usdGeom/plugInfo.json | 32 ++ pxr/usd/usdGeom/schema.usda | 100 +++++ pxr/usd/usdGeom/tokens.cpp | 10 + pxr/usd/usdGeom/tokens.h | 38 +- pxr/usd/usdGeom/wrapCapsule_1.cpp | 194 +++++++++ pxr/usd/usdGeom/wrapCone_1.cpp | 124 ++++++ pxr/usd/usdGeom/wrapCylinder_1.cpp | 194 +++++++++ pxr/usd/usdGeom/wrapTokens.cpp | 5 + pxr/usdImaging/usdImaging/capsuleAdapter.cpp | 50 ++- pxr/usdImaging/usdImaging/cylinderAdapter.cpp | 21 +- pxr/usdImaging/usdImaging/drawModeStandin.cpp | 3 + pxr/usdImaging/usdImaging/plugInfo.json | 6 +- 22 files changed, 2528 insertions(+), 35 deletions(-) create mode 100644 pxr/usd/usdGeom/capsule_1.cpp create mode 100644 pxr/usd/usdGeom/capsule_1.h create mode 100644 pxr/usd/usdGeom/cone_1.cpp create mode 100644 pxr/usd/usdGeom/cone_1.h create mode 100644 pxr/usd/usdGeom/cylinder_1.cpp create mode 100644 pxr/usd/usdGeom/cylinder_1.h create mode 100644 pxr/usd/usdGeom/wrapCapsule_1.cpp create mode 100644 pxr/usd/usdGeom/wrapCone_1.cpp create mode 100644 pxr/usd/usdGeom/wrapCylinder_1.cpp diff --git a/pxr/imaging/geomUtil/capsuleMeshGenerator.cpp b/pxr/imaging/geomUtil/capsuleMeshGenerator.cpp index 7c14f4e715..8c216ec7dc 100644 --- a/pxr/imaging/geomUtil/capsuleMeshGenerator.cpp +++ b/pxr/imaging/geomUtil/capsuleMeshGenerator.cpp @@ -82,7 +82,9 @@ GeomUtilCapsuleMeshGenerator::_GeneratePointsImpl( const typename PointType::ScalarType topRadius, const typename PointType::ScalarType height, const typename PointType::ScalarType bottomCapHeight, + const typename PointType::ScalarType bottomCapLatitudeRange, const typename PointType::ScalarType topCapHeight, + const typename PointType::ScalarType topCapLatitudeRange, const typename PointType::ScalarType sweepDegrees, const _PointWriter& ptWriter) { @@ -115,10 +117,9 @@ GeomUtilCapsuleMeshGenerator::_GeneratePointsImpl( // Bottom hemisphere latitude rings: for (size_t axIdx = 1; axIdx < (numCapAxial + 1); ++axIdx) { - // Latitude range: (-0.5pi, 0] - const ScalarType latAngle = - ((ScalarType(axIdx) / ScalarType(numCapAxial)) - 1.0) * - (0.5 * M_PI); + // Latitude range: (-0.5pi, topCapLatitudeRange] + const ScalarType latAngle = GfLerp(double(axIdx) / double(numCapAxial), + ScalarType(-0.5 * M_PI), topCapLatitudeRange); const ScalarType radScale = cos(latAngle); const ScalarType latitude = @@ -134,9 +135,9 @@ GeomUtilCapsuleMeshGenerator::_GeneratePointsImpl( // Top hemisphere latitude rings: for (size_t axIdx = 0; axIdx < numCapAxial; ++axIdx) { - // Latitude range: [0, 0.5pi) - const ScalarType latAngle = - (ScalarType(axIdx) / ScalarType(numCapAxial)) * (0.5 * M_PI); + // Latitude range: [bottomCapLatitudeRange, 0.5pi) + const ScalarType latAngle = GfLerp(double(axIdx) / double(numCapAxial), + bottomCapLatitudeRange, ScalarType(0.5 * M_PI)); const ScalarType radScale = cos(latAngle); const ScalarType latitude = @@ -158,13 +159,13 @@ GeomUtilCapsuleMeshGenerator::_GeneratePointsImpl( // calling method template (the public GeneratePoints, in the header). template GEOMUTIL_API void GeomUtilCapsuleMeshGenerator::_GeneratePointsImpl( const size_t, const size_t, const float, const float, - const float, const float, const float, const float, + const float, const float, const float, const float, const float, const float, const GeomUtilCapsuleMeshGenerator::_PointWriter&); template GEOMUTIL_API void GeomUtilCapsuleMeshGenerator::_GeneratePointsImpl( const size_t, const size_t, const double, const double, - const double, const double, const double, const double, + const double, const double, const double, const double, const double, const double, const GeomUtilCapsuleMeshGenerator::_PointWriter&); -PXR_NAMESPACE_CLOSE_SCOPE \ No newline at end of file +PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/imaging/geomUtil/capsuleMeshGenerator.h b/pxr/imaging/geomUtil/capsuleMeshGenerator.h index 0d8ef696e3..9a1883f427 100644 --- a/pxr/imaging/geomUtil/capsuleMeshGenerator.h +++ b/pxr/imaging/geomUtil/capsuleMeshGenerator.h @@ -104,7 +104,9 @@ class GeomUtilCapsuleMeshGenerator final /* topRadius = */ radius, height, /* bottomCapHeight = */ radius, + /* bottomCapLatitude = */ ScalarType(0), /* topCapHeight = */ radius, + /* topCapLatitude = */ ScalarType(0), sweep, framePtr); } @@ -120,7 +122,9 @@ class GeomUtilCapsuleMeshGenerator final const ScalarType topRadius, const ScalarType height, const ScalarType bottomCapHeight, + const ScalarType bottomLatitudeRange, const ScalarType topCapHeight, + const ScalarType topLatitudeRange, const ScalarType sweepDegrees, const GfMatrix4d* framePtr = nullptr) { @@ -128,7 +132,7 @@ class GeomUtilCapsuleMeshGenerator final typename std::iterator_traits::value_type; _GeneratePointsImpl(numRadial, numCapAxial, bottomRadius, topRadius, - height, bottomCapHeight, topCapHeight, sweepDegrees, + height, bottomCapHeight, bottomLatitudeRange, topCapHeight, topLatitudeRange, sweepDegrees, framePtr ? _PointWriter(iter, framePtr) : _PointWriter(iter)); } @@ -144,7 +148,9 @@ class GeomUtilCapsuleMeshGenerator final const typename PointType::ScalarType topRadius, const typename PointType::ScalarType height, const typename PointType::ScalarType bottomCapHeight, + const typename PointType::ScalarType bottomLatitudeRange, const typename PointType::ScalarType topCapHeight, + const typename PointType::ScalarType topLatitudeRange, const typename PointType::ScalarType sweep, const _PointWriter& ptWriter); }; diff --git a/pxr/usd/usdGeom/CMakeLists.txt b/pxr/usd/usdGeom/CMakeLists.txt index d39e5949a7..80c1bb1f76 100644 --- a/pxr/usd/usdGeom/CMakeLists.txt +++ b/pxr/usd/usdGeom/CMakeLists.txt @@ -29,10 +29,12 @@ pxr_library(usdGeom boundableComputeExtent camera capsule + capsule_1 cone cube curves cylinder + cylinder_1 hermiteCurves imageable gprim diff --git a/pxr/usd/usdGeom/capsule_1.cpp b/pxr/usd/usdGeom/capsule_1.cpp new file mode 100644 index 0000000000..938179bd1e --- /dev/null +++ b/pxr/usd/usdGeom/capsule_1.cpp @@ -0,0 +1,234 @@ +// +// Copyright 2016 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +#include "pxr/usd/usdGeom/capsule_1.h" +#include "pxr/usd/usd/schemaRegistry.h" +#include "pxr/usd/usd/typed.h" + +#include "pxr/usd/sdf/types.h" +#include "pxr/usd/sdf/assetPath.h" + +PXR_NAMESPACE_OPEN_SCOPE + +// Register the schema with the TfType system. +TF_REGISTRY_FUNCTION(TfType) +{ + TfType::Define >(); + + // Register the usd prim typename as an alias under UsdSchemaBase. This + // enables one to call + // TfType::Find().FindDerivedByName("Capsule_1") + // to find TfType, which is how IsA queries are + // answered. + TfType::AddAlias("Capsule_1"); +} + +/* virtual */ +UsdGeomCapsule_1::~UsdGeomCapsule_1() +{ +} + +/* static */ +UsdGeomCapsule_1 +UsdGeomCapsule_1::Get(const UsdStagePtr &stage, const SdfPath &path) +{ + if (!stage) { + TF_CODING_ERROR("Invalid stage"); + return UsdGeomCapsule_1(); + } + return UsdGeomCapsule_1(stage->GetPrimAtPath(path)); +} + +/* static */ +UsdGeomCapsule_1 +UsdGeomCapsule_1::Define( + const UsdStagePtr &stage, const SdfPath &path) +{ + static TfToken usdPrimTypeName("Capsule_1"); + if (!stage) { + TF_CODING_ERROR("Invalid stage"); + return UsdGeomCapsule_1(); + } + return UsdGeomCapsule_1( + stage->DefinePrim(path, usdPrimTypeName)); +} + +/* virtual */ +UsdSchemaKind UsdGeomCapsule_1::_GetSchemaKind() const +{ + return UsdGeomCapsule_1::schemaKind; +} + +/* static */ +const TfType & +UsdGeomCapsule_1::_GetStaticTfType() +{ + static TfType tfType = TfType::Find(); + return tfType; +} + +/* static */ +bool +UsdGeomCapsule_1::_IsTypedSchema() +{ + static bool isTyped = _GetStaticTfType().IsA(); + return isTyped; +} + +/* virtual */ +const TfType & +UsdGeomCapsule_1::_GetTfType() const +{ + return _GetStaticTfType(); +} + +UsdAttribute +UsdGeomCapsule_1::GetHeightAttr() const +{ + return GetPrim().GetAttribute(UsdGeomTokens->height); +} + +UsdAttribute +UsdGeomCapsule_1::CreateHeightAttr(VtValue const &defaultValue, bool writeSparsely) const +{ + return UsdSchemaBase::_CreateAttr(UsdGeomTokens->height, + SdfValueTypeNames->Double, + /* custom = */ false, + SdfVariabilityVarying, + defaultValue, + writeSparsely); +} + +UsdAttribute +UsdGeomCapsule_1::GetRadiusTopAttr() const +{ + return GetPrim().GetAttribute(UsdGeomTokens->radiusTop); +} + +UsdAttribute +UsdGeomCapsule_1::CreateRadiusTopAttr(VtValue const &defaultValue, bool writeSparsely) const +{ + return UsdSchemaBase::_CreateAttr(UsdGeomTokens->radiusTop, + SdfValueTypeNames->Double, + /* custom = */ false, + SdfVariabilityVarying, + defaultValue, + writeSparsely); +} + +UsdAttribute +UsdGeomCapsule_1::GetRadiusBottomAttr() const +{ + return GetPrim().GetAttribute(UsdGeomTokens->radiusBottom); +} + +UsdAttribute +UsdGeomCapsule_1::CreateRadiusBottomAttr(VtValue const &defaultValue, bool writeSparsely) const +{ + return UsdSchemaBase::_CreateAttr(UsdGeomTokens->radiusBottom, + SdfValueTypeNames->Double, + /* custom = */ false, + SdfVariabilityVarying, + defaultValue, + writeSparsely); +} + +UsdAttribute +UsdGeomCapsule_1::GetAxisAttr() const +{ + return GetPrim().GetAttribute(UsdGeomTokens->axis); +} + +UsdAttribute +UsdGeomCapsule_1::CreateAxisAttr(VtValue const &defaultValue, bool writeSparsely) const +{ + return UsdSchemaBase::_CreateAttr(UsdGeomTokens->axis, + SdfValueTypeNames->Token, + /* custom = */ false, + SdfVariabilityUniform, + defaultValue, + writeSparsely); +} + +UsdAttribute +UsdGeomCapsule_1::GetExtentAttr() const +{ + return GetPrim().GetAttribute(UsdGeomTokens->extent); +} + +UsdAttribute +UsdGeomCapsule_1::CreateExtentAttr(VtValue const &defaultValue, bool writeSparsely) const +{ + return UsdSchemaBase::_CreateAttr(UsdGeomTokens->extent, + SdfValueTypeNames->Float3Array, + /* custom = */ false, + SdfVariabilityVarying, + defaultValue, + writeSparsely); +} + +namespace { +static inline TfTokenVector +_ConcatenateAttributeNames(const TfTokenVector& left,const TfTokenVector& right) +{ + TfTokenVector result; + result.reserve(left.size() + right.size()); + result.insert(result.end(), left.begin(), left.end()); + result.insert(result.end(), right.begin(), right.end()); + return result; +} +} + +/*static*/ +const TfTokenVector& +UsdGeomCapsule_1::GetSchemaAttributeNames(bool includeInherited) +{ + static TfTokenVector localNames = { + UsdGeomTokens->height, + UsdGeomTokens->radiusTop, + UsdGeomTokens->radiusBottom, + UsdGeomTokens->axis, + UsdGeomTokens->extent, + }; + static TfTokenVector allNames = + _ConcatenateAttributeNames( + UsdGeomGprim::GetSchemaAttributeNames(true), + localNames); + + if (includeInherited) + return allNames; + else + return localNames; +} + +PXR_NAMESPACE_CLOSE_SCOPE + +// ===================================================================== // +// Feel free to add custom code below this line. It will be preserved by +// the code generator. +// +// Just remember to wrap code in the appropriate delimiters: +// 'PXR_NAMESPACE_OPEN_SCOPE', 'PXR_NAMESPACE_CLOSE_SCOPE'. +// ===================================================================== // +// --(BEGIN CUSTOM CODE)-- diff --git a/pxr/usd/usdGeom/capsule_1.h b/pxr/usd/usdGeom/capsule_1.h new file mode 100644 index 0000000000..f8400e7f09 --- /dev/null +++ b/pxr/usd/usdGeom/capsule_1.h @@ -0,0 +1,298 @@ +// +// Copyright 2016 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +#ifndef USDGEOM_GENERATED_CAPSULE_1_H +#define USDGEOM_GENERATED_CAPSULE_1_H + +/// \file usdGeom/capsule_1.h + +#include "pxr/pxr.h" +#include "pxr/usd/usdGeom/api.h" +#include "pxr/usd/usdGeom/gprim.h" +#include "pxr/usd/usd/prim.h" +#include "pxr/usd/usd/stage.h" +#include "pxr/usd/usdGeom/tokens.h" + +#include "pxr/base/vt/value.h" + +#include "pxr/base/gf/vec3d.h" +#include "pxr/base/gf/vec3f.h" +#include "pxr/base/gf/matrix4d.h" + +#include "pxr/base/tf/token.h" +#include "pxr/base/tf/type.h" + +PXR_NAMESPACE_OPEN_SCOPE + +class SdfAssetPath; + +// -------------------------------------------------------------------------- // +// CAPSULE_1 // +// -------------------------------------------------------------------------- // + +/// \class UsdGeomCapsule_1 +/// +/// Defines a primitive capsule, i.e. a cylinder capped by two half +/// spheres, with potentially different radii, centered at the origin, and whose +/// spine is along the specified \em axis. +/// +/// For any described attribute \em Fallback \em Value or \em Allowed \em Values below +/// that are text/tokens, the actual token is published and defined in \ref UsdGeomTokens. +/// So to set an attribute to the value "rightHanded", use UsdGeomTokens->rightHanded +/// as the value. +/// +class UsdGeomCapsule_1 : public UsdGeomGprim +{ +public: + /// Compile time constant representing what kind of schema this class is. + /// + /// \sa UsdSchemaKind + static const UsdSchemaKind schemaKind = UsdSchemaKind::ConcreteTyped; + + /// Construct a UsdGeomCapsule_1 on UsdPrim \p prim . + /// Equivalent to UsdGeomCapsule_1::Get(prim.GetStage(), prim.GetPath()) + /// for a \em valid \p prim, but will not immediately throw an error for + /// an invalid \p prim + explicit UsdGeomCapsule_1(const UsdPrim& prim=UsdPrim()) + : UsdGeomGprim(prim) + { + } + + /// Construct a UsdGeomCapsule_1 on the prim held by \p schemaObj . + /// Should be preferred over UsdGeomCapsule_1(schemaObj.GetPrim()), + /// as it preserves SchemaBase state. + explicit UsdGeomCapsule_1(const UsdSchemaBase& schemaObj) + : UsdGeomGprim(schemaObj) + { + } + + /// Destructor. + USDGEOM_API + virtual ~UsdGeomCapsule_1(); + + /// Return a vector of names of all pre-declared attributes for this schema + /// class and all its ancestor classes. Does not include attributes that + /// may be authored by custom/extended methods of the schemas involved. + USDGEOM_API + static const TfTokenVector & + GetSchemaAttributeNames(bool includeInherited=true); + + /// Return a UsdGeomCapsule_1 holding the prim adhering to this + /// schema at \p path on \p stage. If no prim exists at \p path on + /// \p stage, or if the prim at that path does not adhere to this schema, + /// return an invalid schema object. This is shorthand for the following: + /// + /// \code + /// UsdGeomCapsule_1(stage->GetPrimAtPath(path)); + /// \endcode + /// + USDGEOM_API + static UsdGeomCapsule_1 + Get(const UsdStagePtr &stage, const SdfPath &path); + + /// Attempt to ensure a \a UsdPrim adhering to this schema at \p path + /// is defined (according to UsdPrim::IsDefined()) on this stage. + /// + /// If a prim adhering to this schema at \p path is already defined on this + /// stage, return that prim. Otherwise author an \a SdfPrimSpec with + /// \a specifier == \a SdfSpecifierDef and this schema's prim type name for + /// the prim at \p path at the current EditTarget. Author \a SdfPrimSpec s + /// with \p specifier == \a SdfSpecifierDef and empty typeName at the + /// current EditTarget for any nonexistent, or existing but not \a Defined + /// ancestors. + /// + /// The given \a path must be an absolute prim path that does not contain + /// any variant selections. + /// + /// If it is impossible to author any of the necessary PrimSpecs, (for + /// example, in case \a path cannot map to the current UsdEditTarget's + /// namespace) issue an error and return an invalid \a UsdPrim. + /// + /// Note that this method may return a defined prim whose typeName does not + /// specify this schema class, in case a stronger typeName opinion overrides + /// the opinion at the current EditTarget. + /// + USDGEOM_API + static UsdGeomCapsule_1 + Define(const UsdStagePtr &stage, const SdfPath &path); + +protected: + /// Returns the kind of schema this class belongs to. + /// + /// \sa UsdSchemaKind + USDGEOM_API + UsdSchemaKind _GetSchemaKind() const override; + +private: + // needs to invoke _GetStaticTfType. + friend class UsdSchemaRegistry; + USDGEOM_API + static const TfType &_GetStaticTfType(); + + static bool _IsTypedSchema(); + + // override SchemaBase virtuals. + USDGEOM_API + const TfType &_GetTfType() const override; + +public: + // --------------------------------------------------------------------- // + // HEIGHT + // --------------------------------------------------------------------- // + /// The size of the capsule's spine along the specified + /// \em axis excluding the size of the two half spheres, i.e. + /// the size of the cylinder portion of the capsule. + /// If you author \em height you must also author \em extent. + /// \sa GetExtentAttr() + /// + /// | || + /// | -- | -- | + /// | Declaration | `double height = 1` | + /// | C++ Type | double | + /// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->Double | + USDGEOM_API + UsdAttribute GetHeightAttr() const; + + /// See GetHeightAttr(), and also + /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. + /// If specified, author \p defaultValue as the attribute's default, + /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - + /// the default for \p writeSparsely is \c false. + USDGEOM_API + UsdAttribute CreateHeightAttr(VtValue const &defaultValue = VtValue(), bool writeSparsely=false) const; + +public: + // --------------------------------------------------------------------- // + // RADIUSTOP + // --------------------------------------------------------------------- // + /// The radius of the capping sphere at the top of the capsule - + /// i.e. the sphere in the direction of the positive \em axis. If you + /// author \em radius you must also author \em extent. + /// + /// \sa GetExtentAttr() + /// + /// | || + /// | -- | -- | + /// | Declaration | `double radiusTop = 0.5` | + /// | C++ Type | double | + /// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->Double | + USDGEOM_API + UsdAttribute GetRadiusTopAttr() const; + + /// See GetRadiusTopAttr(), and also + /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. + /// If specified, author \p defaultValue as the attribute's default, + /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - + /// the default for \p writeSparsely is \c false. + USDGEOM_API + UsdAttribute CreateRadiusTopAttr(VtValue const &defaultValue = VtValue(), bool writeSparsely=false) const; + +public: + // --------------------------------------------------------------------- // + // RADIUSBOTTOM + // --------------------------------------------------------------------- // + /// The radius of the capping sphere at the bottom of the capsule - + /// i.e. the sphere located in the direction of the negative \em axis. If + /// you author \em radius you must also author \em extent. + /// + /// \sa GetExtentAttr() + /// + /// | || + /// | -- | -- | + /// | Declaration | `double radiusBottom = 0.5` | + /// | C++ Type | double | + /// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->Double | + USDGEOM_API + UsdAttribute GetRadiusBottomAttr() const; + + /// See GetRadiusBottomAttr(), and also + /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. + /// If specified, author \p defaultValue as the attribute's default, + /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - + /// the default for \p writeSparsely is \c false. + USDGEOM_API + UsdAttribute CreateRadiusBottomAttr(VtValue const &defaultValue = VtValue(), bool writeSparsely=false) const; + +public: + // --------------------------------------------------------------------- // + // AXIS + // --------------------------------------------------------------------- // + /// The axis along which the spine of the capsule is aligned + /// + /// | || + /// | -- | -- | + /// | Declaration | `uniform token axis = "Z"` | + /// | C++ Type | TfToken | + /// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->Token | + /// | \ref SdfVariability "Variability" | SdfVariabilityUniform | + /// | \ref UsdGeomTokens "Allowed Values" | X, Y, Z | + USDGEOM_API + UsdAttribute GetAxisAttr() const; + + /// See GetAxisAttr(), and also + /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. + /// If specified, author \p defaultValue as the attribute's default, + /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - + /// the default for \p writeSparsely is \c false. + USDGEOM_API + UsdAttribute CreateAxisAttr(VtValue const &defaultValue = VtValue(), bool writeSparsely=false) const; + +public: + // --------------------------------------------------------------------- // + // EXTENT + // --------------------------------------------------------------------- // + /// Extent is re-defined on Capsule only to provide a fallback + /// value. \sa UsdGeomGprim::GetExtentAttr(). + /// + /// | || + /// | -- | -- | + /// | Declaration | `float3[] extent = [(-0.5, -0.5, -1), (0.5, 0.5, 1)]` | + /// | C++ Type | VtArray | + /// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->Float3Array | + USDGEOM_API + UsdAttribute GetExtentAttr() const; + + /// See GetExtentAttr(), and also + /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. + /// If specified, author \p defaultValue as the attribute's default, + /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - + /// the default for \p writeSparsely is \c false. + USDGEOM_API + UsdAttribute CreateExtentAttr(VtValue const &defaultValue = VtValue(), bool writeSparsely=false) const; + +public: + // ===================================================================== // + // Feel free to add custom code below this line, it will be preserved by + // the code generator. + // + // Just remember to: + // - Close the class declaration with }; + // - Close the namespace with PXR_NAMESPACE_CLOSE_SCOPE + // - Close the include guard with #endif + // ===================================================================== // + // --(BEGIN CUSTOM CODE)-- +}; + +PXR_NAMESPACE_CLOSE_SCOPE + +#endif diff --git a/pxr/usd/usdGeom/cone_1.cpp b/pxr/usd/usdGeom/cone_1.cpp new file mode 100644 index 0000000000..1d2f106c55 --- /dev/null +++ b/pxr/usd/usdGeom/cone_1.cpp @@ -0,0 +1,129 @@ +// +// Copyright 2016 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +#include "pxr/usd/usdGeom/cone_1.h" +#include "pxr/usd/usd/schemaRegistry.h" +#include "pxr/usd/usd/typed.h" + +#include "pxr/usd/sdf/types.h" +#include "pxr/usd/sdf/assetPath.h" + +PXR_NAMESPACE_OPEN_SCOPE + +// Register the schema with the TfType system. +TF_REGISTRY_FUNCTION(TfType) +{ + TfType::Define >(); + + // Register the usd prim typename as an alias under UsdSchemaBase. This + // enables one to call + // TfType::Find().FindDerivedByName("Cone_1") + // to find TfType, which is how IsA queries are + // answered. + TfType::AddAlias("Cone_1"); +} + +/* virtual */ +UsdGeomCone_1::~UsdGeomCone_1() +{ +} + +/* static */ +UsdGeomCone_1 +UsdGeomCone_1::Get(const UsdStagePtr &stage, const SdfPath &path) +{ + if (!stage) { + TF_CODING_ERROR("Invalid stage"); + return UsdGeomCone_1(); + } + return UsdGeomCone_1(stage->GetPrimAtPath(path)); +} + +/* static */ +UsdGeomCone_1 +UsdGeomCone_1::Define( + const UsdStagePtr &stage, const SdfPath &path) +{ + static TfToken usdPrimTypeName("Cone_1"); + if (!stage) { + TF_CODING_ERROR("Invalid stage"); + return UsdGeomCone_1(); + } + return UsdGeomCone_1( + stage->DefinePrim(path, usdPrimTypeName)); +} + +/* virtual */ +UsdSchemaKind UsdGeomCone_1::_GetSchemaKind() const +{ + return UsdGeomCone_1::schemaKind; +} + +/* static */ +const TfType & +UsdGeomCone_1::_GetStaticTfType() +{ + static TfType tfType = TfType::Find(); + return tfType; +} + +/* static */ +bool +UsdGeomCone_1::_IsTypedSchema() +{ + static bool isTyped = _GetStaticTfType().IsA(); + return isTyped; +} + +/* virtual */ +const TfType & +UsdGeomCone_1::_GetTfType() const +{ + return _GetStaticTfType(); +} + +/*static*/ +const TfTokenVector& +UsdGeomCone_1::GetSchemaAttributeNames(bool includeInherited) +{ + static TfTokenVector localNames; + static TfTokenVector allNames = + UsdGeomCylinder_1::GetSchemaAttributeNames(true); + + if (includeInherited) + return allNames; + else + return localNames; +} + +PXR_NAMESPACE_CLOSE_SCOPE + +// ===================================================================== // +// Feel free to add custom code below this line. It will be preserved by +// the code generator. +// +// Just remember to wrap code in the appropriate delimiters: +// 'PXR_NAMESPACE_OPEN_SCOPE', 'PXR_NAMESPACE_CLOSE_SCOPE'. +// ===================================================================== // +// --(BEGIN CUSTOM CODE)-- diff --git a/pxr/usd/usdGeom/cone_1.h b/pxr/usd/usdGeom/cone_1.h new file mode 100644 index 0000000000..c87b45bb74 --- /dev/null +++ b/pxr/usd/usdGeom/cone_1.h @@ -0,0 +1,171 @@ +// +// Copyright 2016 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +#ifndef USDGEOM_GENERATED_CONE_1_H +#define USDGEOM_GENERATED_CONE_1_H + +/// \file usdGeom/cone_1.h + +#include "pxr/pxr.h" +#include "pxr/usd/usdGeom/api.h" +#include "pxr/usd/usdGeom/cylinder_1.h" +#include "pxr/usd/usd/prim.h" +#include "pxr/usd/usd/stage.h" + +#include "pxr/base/vt/value.h" + +#include "pxr/base/gf/vec3d.h" +#include "pxr/base/gf/vec3f.h" +#include "pxr/base/gf/matrix4d.h" + +#include "pxr/base/tf/token.h" +#include "pxr/base/tf/type.h" + +PXR_NAMESPACE_OPEN_SCOPE + +class SdfAssetPath; + +// -------------------------------------------------------------------------- // +// CONE_1 // +// -------------------------------------------------------------------------- // + +/// \class UsdGeomCone_1 +/// +/// Defines a primitive cone, centered at the origin, whose spine +/// is along the specified \em axis, with the apex of the cone pointing +/// in the direction of the positive axis. This is a special-case of a cylinder +/// whose top radius is zero. +/// +/// The fallback values for Cube, Sphere, Cone, and Cylinder are set so that +/// they all pack into the same volume/bounds. +/// +class UsdGeomCone_1 : public UsdGeomCylinder_1 +{ +public: + /// Compile time constant representing what kind of schema this class is. + /// + /// \sa UsdSchemaKind + static const UsdSchemaKind schemaKind = UsdSchemaKind::ConcreteTyped; + + /// Construct a UsdGeomCone_1 on UsdPrim \p prim . + /// Equivalent to UsdGeomCone_1::Get(prim.GetStage(), prim.GetPath()) + /// for a \em valid \p prim, but will not immediately throw an error for + /// an invalid \p prim + explicit UsdGeomCone_1(const UsdPrim& prim=UsdPrim()) + : UsdGeomCylinder_1(prim) + { + } + + /// Construct a UsdGeomCone_1 on the prim held by \p schemaObj . + /// Should be preferred over UsdGeomCone_1(schemaObj.GetPrim()), + /// as it preserves SchemaBase state. + explicit UsdGeomCone_1(const UsdSchemaBase& schemaObj) + : UsdGeomCylinder_1(schemaObj) + { + } + + /// Destructor. + USDGEOM_API + virtual ~UsdGeomCone_1(); + + /// Return a vector of names of all pre-declared attributes for this schema + /// class and all its ancestor classes. Does not include attributes that + /// may be authored by custom/extended methods of the schemas involved. + USDGEOM_API + static const TfTokenVector & + GetSchemaAttributeNames(bool includeInherited=true); + + /// Return a UsdGeomCone_1 holding the prim adhering to this + /// schema at \p path on \p stage. If no prim exists at \p path on + /// \p stage, or if the prim at that path does not adhere to this schema, + /// return an invalid schema object. This is shorthand for the following: + /// + /// \code + /// UsdGeomCone_1(stage->GetPrimAtPath(path)); + /// \endcode + /// + USDGEOM_API + static UsdGeomCone_1 + Get(const UsdStagePtr &stage, const SdfPath &path); + + /// Attempt to ensure a \a UsdPrim adhering to this schema at \p path + /// is defined (according to UsdPrim::IsDefined()) on this stage. + /// + /// If a prim adhering to this schema at \p path is already defined on this + /// stage, return that prim. Otherwise author an \a SdfPrimSpec with + /// \a specifier == \a SdfSpecifierDef and this schema's prim type name for + /// the prim at \p path at the current EditTarget. Author \a SdfPrimSpec s + /// with \p specifier == \a SdfSpecifierDef and empty typeName at the + /// current EditTarget for any nonexistent, or existing but not \a Defined + /// ancestors. + /// + /// The given \a path must be an absolute prim path that does not contain + /// any variant selections. + /// + /// If it is impossible to author any of the necessary PrimSpecs, (for + /// example, in case \a path cannot map to the current UsdEditTarget's + /// namespace) issue an error and return an invalid \a UsdPrim. + /// + /// Note that this method may return a defined prim whose typeName does not + /// specify this schema class, in case a stronger typeName opinion overrides + /// the opinion at the current EditTarget. + /// + USDGEOM_API + static UsdGeomCone_1 + Define(const UsdStagePtr &stage, const SdfPath &path); + +protected: + /// Returns the kind of schema this class belongs to. + /// + /// \sa UsdSchemaKind + USDGEOM_API + UsdSchemaKind _GetSchemaKind() const override; + +private: + // needs to invoke _GetStaticTfType. + friend class UsdSchemaRegistry; + USDGEOM_API + static const TfType &_GetStaticTfType(); + + static bool _IsTypedSchema(); + + // override SchemaBase virtuals. + USDGEOM_API + const TfType &_GetTfType() const override; + +public: + // ===================================================================== // + // Feel free to add custom code below this line, it will be preserved by + // the code generator. + // + // Just remember to: + // - Close the class declaration with }; + // - Close the namespace with PXR_NAMESPACE_CLOSE_SCOPE + // - Close the include guard with #endif + // ===================================================================== // + // --(BEGIN CUSTOM CODE)-- +}; + +PXR_NAMESPACE_CLOSE_SCOPE + +#endif diff --git a/pxr/usd/usdGeom/cylinder_1.cpp b/pxr/usd/usdGeom/cylinder_1.cpp new file mode 100644 index 0000000000..1b590e79e0 --- /dev/null +++ b/pxr/usd/usdGeom/cylinder_1.cpp @@ -0,0 +1,234 @@ +// +// Copyright 2016 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +#include "pxr/usd/usdGeom/cylinder_1.h" +#include "pxr/usd/usd/schemaRegistry.h" +#include "pxr/usd/usd/typed.h" + +#include "pxr/usd/sdf/types.h" +#include "pxr/usd/sdf/assetPath.h" + +PXR_NAMESPACE_OPEN_SCOPE + +// Register the schema with the TfType system. +TF_REGISTRY_FUNCTION(TfType) +{ + TfType::Define >(); + + // Register the usd prim typename as an alias under UsdSchemaBase. This + // enables one to call + // TfType::Find().FindDerivedByName("Cylinder_1") + // to find TfType, which is how IsA queries are + // answered. + TfType::AddAlias("Cylinder_1"); +} + +/* virtual */ +UsdGeomCylinder_1::~UsdGeomCylinder_1() +{ +} + +/* static */ +UsdGeomCylinder_1 +UsdGeomCylinder_1::Get(const UsdStagePtr &stage, const SdfPath &path) +{ + if (!stage) { + TF_CODING_ERROR("Invalid stage"); + return UsdGeomCylinder_1(); + } + return UsdGeomCylinder_1(stage->GetPrimAtPath(path)); +} + +/* static */ +UsdGeomCylinder_1 +UsdGeomCylinder_1::Define( + const UsdStagePtr &stage, const SdfPath &path) +{ + static TfToken usdPrimTypeName("Cylinder_1"); + if (!stage) { + TF_CODING_ERROR("Invalid stage"); + return UsdGeomCylinder_1(); + } + return UsdGeomCylinder_1( + stage->DefinePrim(path, usdPrimTypeName)); +} + +/* virtual */ +UsdSchemaKind UsdGeomCylinder_1::_GetSchemaKind() const +{ + return UsdGeomCylinder_1::schemaKind; +} + +/* static */ +const TfType & +UsdGeomCylinder_1::_GetStaticTfType() +{ + static TfType tfType = TfType::Find(); + return tfType; +} + +/* static */ +bool +UsdGeomCylinder_1::_IsTypedSchema() +{ + static bool isTyped = _GetStaticTfType().IsA(); + return isTyped; +} + +/* virtual */ +const TfType & +UsdGeomCylinder_1::_GetTfType() const +{ + return _GetStaticTfType(); +} + +UsdAttribute +UsdGeomCylinder_1::GetHeightAttr() const +{ + return GetPrim().GetAttribute(UsdGeomTokens->height); +} + +UsdAttribute +UsdGeomCylinder_1::CreateHeightAttr(VtValue const &defaultValue, bool writeSparsely) const +{ + return UsdSchemaBase::_CreateAttr(UsdGeomTokens->height, + SdfValueTypeNames->Double, + /* custom = */ false, + SdfVariabilityVarying, + defaultValue, + writeSparsely); +} + +UsdAttribute +UsdGeomCylinder_1::GetRadiusTopAttr() const +{ + return GetPrim().GetAttribute(UsdGeomTokens->radiusTop); +} + +UsdAttribute +UsdGeomCylinder_1::CreateRadiusTopAttr(VtValue const &defaultValue, bool writeSparsely) const +{ + return UsdSchemaBase::_CreateAttr(UsdGeomTokens->radiusTop, + SdfValueTypeNames->Double, + /* custom = */ false, + SdfVariabilityVarying, + defaultValue, + writeSparsely); +} + +UsdAttribute +UsdGeomCylinder_1::GetRadiusBottomAttr() const +{ + return GetPrim().GetAttribute(UsdGeomTokens->radiusBottom); +} + +UsdAttribute +UsdGeomCylinder_1::CreateRadiusBottomAttr(VtValue const &defaultValue, bool writeSparsely) const +{ + return UsdSchemaBase::_CreateAttr(UsdGeomTokens->radiusBottom, + SdfValueTypeNames->Double, + /* custom = */ false, + SdfVariabilityVarying, + defaultValue, + writeSparsely); +} + +UsdAttribute +UsdGeomCylinder_1::GetAxisAttr() const +{ + return GetPrim().GetAttribute(UsdGeomTokens->axis); +} + +UsdAttribute +UsdGeomCylinder_1::CreateAxisAttr(VtValue const &defaultValue, bool writeSparsely) const +{ + return UsdSchemaBase::_CreateAttr(UsdGeomTokens->axis, + SdfValueTypeNames->Token, + /* custom = */ false, + SdfVariabilityUniform, + defaultValue, + writeSparsely); +} + +UsdAttribute +UsdGeomCylinder_1::GetExtentAttr() const +{ + return GetPrim().GetAttribute(UsdGeomTokens->extent); +} + +UsdAttribute +UsdGeomCylinder_1::CreateExtentAttr(VtValue const &defaultValue, bool writeSparsely) const +{ + return UsdSchemaBase::_CreateAttr(UsdGeomTokens->extent, + SdfValueTypeNames->Float3Array, + /* custom = */ false, + SdfVariabilityVarying, + defaultValue, + writeSparsely); +} + +namespace { +static inline TfTokenVector +_ConcatenateAttributeNames(const TfTokenVector& left,const TfTokenVector& right) +{ + TfTokenVector result; + result.reserve(left.size() + right.size()); + result.insert(result.end(), left.begin(), left.end()); + result.insert(result.end(), right.begin(), right.end()); + return result; +} +} + +/*static*/ +const TfTokenVector& +UsdGeomCylinder_1::GetSchemaAttributeNames(bool includeInherited) +{ + static TfTokenVector localNames = { + UsdGeomTokens->height, + UsdGeomTokens->radiusTop, + UsdGeomTokens->radiusBottom, + UsdGeomTokens->axis, + UsdGeomTokens->extent, + }; + static TfTokenVector allNames = + _ConcatenateAttributeNames( + UsdGeomGprim::GetSchemaAttributeNames(true), + localNames); + + if (includeInherited) + return allNames; + else + return localNames; +} + +PXR_NAMESPACE_CLOSE_SCOPE + +// ===================================================================== // +// Feel free to add custom code below this line. It will be preserved by +// the code generator. +// +// Just remember to wrap code in the appropriate delimiters: +// 'PXR_NAMESPACE_OPEN_SCOPE', 'PXR_NAMESPACE_CLOSE_SCOPE'. +// ===================================================================== // +// --(BEGIN CUSTOM CODE)-- diff --git a/pxr/usd/usdGeom/cylinder_1.h b/pxr/usd/usdGeom/cylinder_1.h new file mode 100644 index 0000000000..6ac4d69ac2 --- /dev/null +++ b/pxr/usd/usdGeom/cylinder_1.h @@ -0,0 +1,300 @@ +// +// Copyright 2016 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +#ifndef USDGEOM_GENERATED_CYLINDER_1_H +#define USDGEOM_GENERATED_CYLINDER_1_H + +/// \file usdGeom/cylinder_1.h + +#include "pxr/pxr.h" +#include "pxr/usd/usdGeom/api.h" +#include "pxr/usd/usdGeom/gprim.h" +#include "pxr/usd/usd/prim.h" +#include "pxr/usd/usd/stage.h" +#include "pxr/usd/usdGeom/tokens.h" + +#include "pxr/base/vt/value.h" + +#include "pxr/base/gf/vec3d.h" +#include "pxr/base/gf/vec3f.h" +#include "pxr/base/gf/matrix4d.h" + +#include "pxr/base/tf/token.h" +#include "pxr/base/tf/type.h" + +PXR_NAMESPACE_OPEN_SCOPE + +class SdfAssetPath; + +// -------------------------------------------------------------------------- // +// CYLINDER_1 // +// -------------------------------------------------------------------------- // + +/// \class UsdGeomCylinder_1 +/// +/// Defines a primitive cylinder with closed ends, centered at the +/// origin, whose spine is along the specified \em axis, with a pair of radii +/// desribing the size of the end points. +/// +/// The fallback values for Cube, Sphere, Cone, and Cylinder are set so that +/// they all pack into the same volume/bounds. +/// +/// For any described attribute \em Fallback \em Value or \em Allowed \em Values below +/// that are text/tokens, the actual token is published and defined in \ref UsdGeomTokens. +/// So to set an attribute to the value "rightHanded", use UsdGeomTokens->rightHanded +/// as the value. +/// +class UsdGeomCylinder_1 : public UsdGeomGprim +{ +public: + /// Compile time constant representing what kind of schema this class is. + /// + /// \sa UsdSchemaKind + static const UsdSchemaKind schemaKind = UsdSchemaKind::ConcreteTyped; + + /// Construct a UsdGeomCylinder_1 on UsdPrim \p prim . + /// Equivalent to UsdGeomCylinder_1::Get(prim.GetStage(), prim.GetPath()) + /// for a \em valid \p prim, but will not immediately throw an error for + /// an invalid \p prim + explicit UsdGeomCylinder_1(const UsdPrim& prim=UsdPrim()) + : UsdGeomGprim(prim) + { + } + + /// Construct a UsdGeomCylinder_1 on the prim held by \p schemaObj . + /// Should be preferred over UsdGeomCylinder_1(schemaObj.GetPrim()), + /// as it preserves SchemaBase state. + explicit UsdGeomCylinder_1(const UsdSchemaBase& schemaObj) + : UsdGeomGprim(schemaObj) + { + } + + /// Destructor. + USDGEOM_API + virtual ~UsdGeomCylinder_1(); + + /// Return a vector of names of all pre-declared attributes for this schema + /// class and all its ancestor classes. Does not include attributes that + /// may be authored by custom/extended methods of the schemas involved. + USDGEOM_API + static const TfTokenVector & + GetSchemaAttributeNames(bool includeInherited=true); + + /// Return a UsdGeomCylinder_1 holding the prim adhering to this + /// schema at \p path on \p stage. If no prim exists at \p path on + /// \p stage, or if the prim at that path does not adhere to this schema, + /// return an invalid schema object. This is shorthand for the following: + /// + /// \code + /// UsdGeomCylinder_1(stage->GetPrimAtPath(path)); + /// \endcode + /// + USDGEOM_API + static UsdGeomCylinder_1 + Get(const UsdStagePtr &stage, const SdfPath &path); + + /// Attempt to ensure a \a UsdPrim adhering to this schema at \p path + /// is defined (according to UsdPrim::IsDefined()) on this stage. + /// + /// If a prim adhering to this schema at \p path is already defined on this + /// stage, return that prim. Otherwise author an \a SdfPrimSpec with + /// \a specifier == \a SdfSpecifierDef and this schema's prim type name for + /// the prim at \p path at the current EditTarget. Author \a SdfPrimSpec s + /// with \p specifier == \a SdfSpecifierDef and empty typeName at the + /// current EditTarget for any nonexistent, or existing but not \a Defined + /// ancestors. + /// + /// The given \a path must be an absolute prim path that does not contain + /// any variant selections. + /// + /// If it is impossible to author any of the necessary PrimSpecs, (for + /// example, in case \a path cannot map to the current UsdEditTarget's + /// namespace) issue an error and return an invalid \a UsdPrim. + /// + /// Note that this method may return a defined prim whose typeName does not + /// specify this schema class, in case a stronger typeName opinion overrides + /// the opinion at the current EditTarget. + /// + USDGEOM_API + static UsdGeomCylinder_1 + Define(const UsdStagePtr &stage, const SdfPath &path); + +protected: + /// Returns the kind of schema this class belongs to. + /// + /// \sa UsdSchemaKind + USDGEOM_API + UsdSchemaKind _GetSchemaKind() const override; + +private: + // needs to invoke _GetStaticTfType. + friend class UsdSchemaRegistry; + USDGEOM_API + static const TfType &_GetStaticTfType(); + + static bool _IsTypedSchema(); + + // override SchemaBase virtuals. + USDGEOM_API + const TfType &_GetTfType() const override; + +public: + // --------------------------------------------------------------------- // + // HEIGHT + // --------------------------------------------------------------------- // + /// The size of the cylinder's spine along the specified + /// \em axis. If you author \em height you must also author \em extent. + /// + /// \sa GetExtentAttr() + /// + /// | || + /// | -- | -- | + /// | Declaration | `double height = 2` | + /// | C++ Type | double | + /// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->Double | + USDGEOM_API + UsdAttribute GetHeightAttr() const; + + /// See GetHeightAttr(), and also + /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. + /// If specified, author \p defaultValue as the attribute's default, + /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - + /// the default for \p writeSparsely is \c false. + USDGEOM_API + UsdAttribute CreateHeightAttr(VtValue const &defaultValue = VtValue(), bool writeSparsely=false) const; + +public: + // --------------------------------------------------------------------- // + // RADIUSTOP + // --------------------------------------------------------------------- // + /// The radius of the top of the cylinder - i.e. the face located + /// along the positive \em axis. If you author \em radiusTop you must also + /// author \em extent. + /// + /// \sa GetExtentAttr() + /// + /// | || + /// | -- | -- | + /// | Declaration | `double radiusTop = 1` | + /// | C++ Type | double | + /// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->Double | + USDGEOM_API + UsdAttribute GetRadiusTopAttr() const; + + /// See GetRadiusTopAttr(), and also + /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. + /// If specified, author \p defaultValue as the attribute's default, + /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - + /// the default for \p writeSparsely is \c false. + USDGEOM_API + UsdAttribute CreateRadiusTopAttr(VtValue const &defaultValue = VtValue(), bool writeSparsely=false) const; + +public: + // --------------------------------------------------------------------- // + // RADIUSBOTTOM + // --------------------------------------------------------------------- // + /// The radius of the bottom of the cylinder - i.e. the face + /// point located along the negative \em axis. If you author + /// \em radiusBottom you must also author \em extent. + /// + /// \sa GetExtentAttr() + /// + /// | || + /// | -- | -- | + /// | Declaration | `double radiusBottom = 1` | + /// | C++ Type | double | + /// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->Double | + USDGEOM_API + UsdAttribute GetRadiusBottomAttr() const; + + /// See GetRadiusBottomAttr(), and also + /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. + /// If specified, author \p defaultValue as the attribute's default, + /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - + /// the default for \p writeSparsely is \c false. + USDGEOM_API + UsdAttribute CreateRadiusBottomAttr(VtValue const &defaultValue = VtValue(), bool writeSparsely=false) const; + +public: + // --------------------------------------------------------------------- // + // AXIS + // --------------------------------------------------------------------- // + /// The axis along which the spine of the cylinder is aligned + /// + /// | || + /// | -- | -- | + /// | Declaration | `uniform token axis = "Z"` | + /// | C++ Type | TfToken | + /// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->Token | + /// | \ref SdfVariability "Variability" | SdfVariabilityUniform | + /// | \ref UsdGeomTokens "Allowed Values" | X, Y, Z | + USDGEOM_API + UsdAttribute GetAxisAttr() const; + + /// See GetAxisAttr(), and also + /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. + /// If specified, author \p defaultValue as the attribute's default, + /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - + /// the default for \p writeSparsely is \c false. + USDGEOM_API + UsdAttribute CreateAxisAttr(VtValue const &defaultValue = VtValue(), bool writeSparsely=false) const; + +public: + // --------------------------------------------------------------------- // + // EXTENT + // --------------------------------------------------------------------- // + /// Extent is re-defined on Cylinder only to provide a fallback + /// value. \sa UsdGeomGprim::GetExtentAttr(). + /// + /// | || + /// | -- | -- | + /// | Declaration | `float3[] extent = [(-1, -1, -1), (1, 1, 1)]` | + /// | C++ Type | VtArray | + /// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->Float3Array | + USDGEOM_API + UsdAttribute GetExtentAttr() const; + + /// See GetExtentAttr(), and also + /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. + /// If specified, author \p defaultValue as the attribute's default, + /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - + /// the default for \p writeSparsely is \c false. + USDGEOM_API + UsdAttribute CreateExtentAttr(VtValue const &defaultValue = VtValue(), bool writeSparsely=false) const; + +public: + // ===================================================================== // + // Feel free to add custom code below this line, it will be preserved by + // the code generator. + // + // Just remember to: + // - Close the class declaration with }; + // - Close the namespace with PXR_NAMESPACE_CLOSE_SCOPE + // - Close the include guard with #endif + // ===================================================================== // + // --(BEGIN CUSTOM CODE)-- +}; + +PXR_NAMESPACE_CLOSE_SCOPE + +#endif diff --git a/pxr/usd/usdGeom/generatedSchema.usda b/pxr/usd/usdGeom/generatedSchema.usda index 19b8219f6e..91aedd649c 100644 --- a/pxr/usd/usdGeom/generatedSchema.usda +++ b/pxr/usd/usdGeom/generatedSchema.usda @@ -1352,6 +1352,395 @@ class Cone "Cone" ( ) } +class Cylinder_1 "Cylinder_1" ( + doc = """Defines a primitive cylinder with closed ends, centered at the + origin, whose spine is along the specified axis, with a pair of radii + desribing the size of the end points. + + The fallback values for Cube, Sphere, Cone, and Cylinder are set so that + they all pack into the same volume/bounds.""" +) +{ + uniform token axis = "Z" ( + allowedTokens = ["X", "Y", "Z"] + doc = "The axis along which the spine of the cylinder is aligned" + ) + uniform bool doubleSided = 0 ( + doc = """Although some renderers treat all parametric or polygonal + surfaces as if they were effectively laminae with outward-facing + normals on both sides, some renderers derive significant optimizations + by considering these surfaces to have only a single outward side, + typically determined by control-point winding order and/or + orientation. By doing so they can perform \"backface culling\" to + avoid drawing the many polygons of most closed surfaces that face away + from the viewer. + + However, it is often advantageous to model thin objects such as paper + and cloth as single, open surfaces that must be viewable from both + sides, always. Setting a gprim's doubleSided attribute to + \\c true instructs all renderers to disable optimizations such as + backface culling for the gprim, and attempt (not all renderers are able + to do so, but the USD reference GL renderer always will) to provide + forward-facing normals on each side of the surface for lighting + calculations.""" + ) + float3[] extent = [(-1, -1, -1), (1, 1, 1)] ( + doc = """Extent is re-defined on Cylinder only to provide a fallback + value. \\sa UsdGeomGprim::GetExtentAttr().""" + ) + double height = 2 ( + doc = """The size of the cylinder's spine along the specified + axis. If you author height you must also author extent. + + \\sa GetExtentAttr()""" + ) + uniform token orientation = "rightHanded" ( + allowedTokens = ["rightHanded", "leftHanded"] + doc = """Orientation specifies whether the gprim's surface normal + should be computed using the right hand rule, or the left hand rule. + Please see for a deeper explanation and + generalization of orientation to composed scenes with transformation + hierarchies.""" + ) + color3f[] primvars:displayColor ( + doc = '''It is useful to have an "official" colorSet that can be used + as a display or modeling color, even in the absence of any specified + shader for a gprim. DisplayColor serves this role; because it is a + UsdGeomPrimvar, it can also be used as a gprim override for any shader + that consumes a displayColor parameter.''' + ) + float[] primvars:displayOpacity ( + doc = """Companion to displayColor that specifies opacity, broken + out as an independent attribute rather than an rgba color, both so that + each can be independently overridden, and because shaders rarely consume + rgba parameters.""" + ) + rel proxyPrim ( + doc = '''The proxyPrim relationship allows us to link a + prim whose purpose is "render" to its (single target) + purpose="proxy" prim. This is entirely optional, but can be + useful in several scenarios: + + - In a pipeline that does pruning (for complexity management) + by deactivating prims composed from asset references, when we + deactivate a purpose="render" prim, we will be able to discover + and additionally deactivate its associated purpose="proxy" prim, + so that preview renders reflect the pruning accurately. + + - DCC importers may be able to make more aggressive optimizations + for interactive processing and display if they can discover the proxy + for a given render prim. + + - With a little more work, a Hydra-based application will be able + to map a picked proxy prim back to its render geometry for selection. + + \\note It is only valid to author the proxyPrim relationship on + prims whose purpose is "render".''' + ) + uniform token purpose = "default" ( + allowedTokens = ["default", "render", "proxy", "guide"] + doc = """Purpose is a classification of geometry into categories that + can each be independently included or excluded from traversals of prims + on a stage, such as rendering or bounding-box computation traversals. + + See for more detail about how + purpose is computed and used.""" + ) + double radiusBottom = 1 ( + doc = """The radius of the bottom of the cylinder - i.e. the face + point located along the negative axis. If you author + radiusBottom you must also author extent. + + \\sa GetExtentAttr()""" + ) + double radiusTop = 1 ( + doc = """The radius of the top of the cylinder - i.e. the face located + along the positive axis. If you author radiusTop you must also + author extent. + + \\sa GetExtentAttr()""" + ) + token visibility = "inherited" ( + allowedTokens = ["inherited", "invisible"] + doc = '''Visibility is meant to be the simplest form of "pruning" + visibility that is supported by most DCC apps. Visibility is + animatable, allowing a sub-tree of geometry to be present for some + segment of a shot, and absent from others; unlike the action of + deactivating geometry prims, invisible geometry is still + available for inspection, for positioning, for defining volumes, etc.''' + ) + uniform token[] xformOpOrder ( + doc = """Encodes the sequence of transformation operations in the + order in which they should be pushed onto a transform stack while + visiting a UsdStage's prims in a graph traversal that will effect + the desired positioning for this prim and its descendant prims. + + You should rarely, if ever, need to manipulate this attribute directly. + It is managed by the AddXformOp(), SetResetXformStack(), and + SetXformOpOrder(), and consulted by GetOrderedXformOps() and + GetLocalTransformation().""" + ) +} + +class Capsule_1 "Capsule_1" ( + doc = """Defines a primitive capsule, i.e. a cylinder capped by two half + spheres, with potentially different radii, centered at the origin, and whose + spine is along the specified axis.""" +) +{ + uniform token axis = "Z" ( + allowedTokens = ["X", "Y", "Z"] + doc = "The axis along which the spine of the capsule is aligned" + ) + uniform bool doubleSided = 0 ( + doc = """Although some renderers treat all parametric or polygonal + surfaces as if they were effectively laminae with outward-facing + normals on both sides, some renderers derive significant optimizations + by considering these surfaces to have only a single outward side, + typically determined by control-point winding order and/or + orientation. By doing so they can perform \"backface culling\" to + avoid drawing the many polygons of most closed surfaces that face away + from the viewer. + + However, it is often advantageous to model thin objects such as paper + and cloth as single, open surfaces that must be viewable from both + sides, always. Setting a gprim's doubleSided attribute to + \\c true instructs all renderers to disable optimizations such as + backface culling for the gprim, and attempt (not all renderers are able + to do so, but the USD reference GL renderer always will) to provide + forward-facing normals on each side of the surface for lighting + calculations.""" + ) + float3[] extent = [(-0.5, -0.5, -1), (0.5, 0.5, 1)] ( + doc = """Extent is re-defined on Capsule only to provide a fallback + value. \\sa UsdGeomGprim::GetExtentAttr().""" + ) + double height = 1 ( + doc = """The size of the capsule's spine along the specified + axis excluding the size of the two half spheres, i.e. + the size of the cylinder portion of the capsule. + If you author height you must also author extent. + \\sa GetExtentAttr()""" + ) + uniform token orientation = "rightHanded" ( + allowedTokens = ["rightHanded", "leftHanded"] + doc = """Orientation specifies whether the gprim's surface normal + should be computed using the right hand rule, or the left hand rule. + Please see for a deeper explanation and + generalization of orientation to composed scenes with transformation + hierarchies.""" + ) + color3f[] primvars:displayColor ( + doc = '''It is useful to have an "official" colorSet that can be used + as a display or modeling color, even in the absence of any specified + shader for a gprim. DisplayColor serves this role; because it is a + UsdGeomPrimvar, it can also be used as a gprim override for any shader + that consumes a displayColor parameter.''' + ) + float[] primvars:displayOpacity ( + doc = """Companion to displayColor that specifies opacity, broken + out as an independent attribute rather than an rgba color, both so that + each can be independently overridden, and because shaders rarely consume + rgba parameters.""" + ) + rel proxyPrim ( + doc = '''The proxyPrim relationship allows us to link a + prim whose purpose is "render" to its (single target) + purpose="proxy" prim. This is entirely optional, but can be + useful in several scenarios: + + - In a pipeline that does pruning (for complexity management) + by deactivating prims composed from asset references, when we + deactivate a purpose="render" prim, we will be able to discover + and additionally deactivate its associated purpose="proxy" prim, + so that preview renders reflect the pruning accurately. + + - DCC importers may be able to make more aggressive optimizations + for interactive processing and display if they can discover the proxy + for a given render prim. + + - With a little more work, a Hydra-based application will be able + to map a picked proxy prim back to its render geometry for selection. + + \\note It is only valid to author the proxyPrim relationship on + prims whose purpose is "render".''' + ) + uniform token purpose = "default" ( + allowedTokens = ["default", "render", "proxy", "guide"] + doc = """Purpose is a classification of geometry into categories that + can each be independently included or excluded from traversals of prims + on a stage, such as rendering or bounding-box computation traversals. + + See for more detail about how + purpose is computed and used.""" + ) + double radiusBottom = 0.5 ( + doc = """The radius of the capping sphere at the bottom of the capsule - + i.e. the sphere located in the direction of the negative axis. If + you author radius you must also author extent. + + \\sa GetExtentAttr()""" + ) + double radiusTop = 0.5 ( + doc = """The radius of the capping sphere at the top of the capsule - + i.e. the sphere in the direction of the positive axis. If you + author radius you must also author extent. + + \\sa GetExtentAttr()""" + ) + token visibility = "inherited" ( + allowedTokens = ["inherited", "invisible"] + doc = '''Visibility is meant to be the simplest form of "pruning" + visibility that is supported by most DCC apps. Visibility is + animatable, allowing a sub-tree of geometry to be present for some + segment of a shot, and absent from others; unlike the action of + deactivating geometry prims, invisible geometry is still + available for inspection, for positioning, for defining volumes, etc.''' + ) + uniform token[] xformOpOrder ( + doc = """Encodes the sequence of transformation operations in the + order in which they should be pushed onto a transform stack while + visiting a UsdStage's prims in a graph traversal that will effect + the desired positioning for this prim and its descendant prims. + + You should rarely, if ever, need to manipulate this attribute directly. + It is managed by the AddXformOp(), SetResetXformStack(), and + SetXformOpOrder(), and consulted by GetOrderedXformOps() and + GetLocalTransformation().""" + ) +} + +class Cone_1 "Cone_1" ( + doc = """Defines a primitive cone, centered at the origin, whose spine + is along the specified axis, with the apex of the cone pointing + in the direction of the positive axis. This is a special-case of a cylinder + whose top radius is zero. + + The fallback values for Cube, Sphere, Cone, and Cylinder are set so that + they all pack into the same volume/bounds.""" +) +{ + uniform token axis = "Z" ( + allowedTokens = ["X", "Y", "Z"] + doc = "The axis along which the spine of the cylinder is aligned" + ) + uniform bool doubleSided = 0 ( + doc = """Although some renderers treat all parametric or polygonal + surfaces as if they were effectively laminae with outward-facing + normals on both sides, some renderers derive significant optimizations + by considering these surfaces to have only a single outward side, + typically determined by control-point winding order and/or + orientation. By doing so they can perform \"backface culling\" to + avoid drawing the many polygons of most closed surfaces that face away + from the viewer. + + However, it is often advantageous to model thin objects such as paper + and cloth as single, open surfaces that must be viewable from both + sides, always. Setting a gprim's doubleSided attribute to + \\c true instructs all renderers to disable optimizations such as + backface culling for the gprim, and attempt (not all renderers are able + to do so, but the USD reference GL renderer always will) to provide + forward-facing normals on each side of the surface for lighting + calculations.""" + ) + float3[] extent = [(-1, -1, -1), (1, 1, 1)] ( + doc = """Extent is re-defined on Cylinder only to provide a fallback + value. \\sa UsdGeomGprim::GetExtentAttr().""" + ) + double height = 2 ( + doc = """The size of the cylinder's spine along the specified + axis. If you author height you must also author extent. + + \\sa GetExtentAttr()""" + ) + uniform token orientation = "rightHanded" ( + allowedTokens = ["rightHanded", "leftHanded"] + doc = """Orientation specifies whether the gprim's surface normal + should be computed using the right hand rule, or the left hand rule. + Please see for a deeper explanation and + generalization of orientation to composed scenes with transformation + hierarchies.""" + ) + color3f[] primvars:displayColor ( + doc = '''It is useful to have an "official" colorSet that can be used + as a display or modeling color, even in the absence of any specified + shader for a gprim. DisplayColor serves this role; because it is a + UsdGeomPrimvar, it can also be used as a gprim override for any shader + that consumes a displayColor parameter.''' + ) + float[] primvars:displayOpacity ( + doc = """Companion to displayColor that specifies opacity, broken + out as an independent attribute rather than an rgba color, both so that + each can be independently overridden, and because shaders rarely consume + rgba parameters.""" + ) + rel proxyPrim ( + doc = '''The proxyPrim relationship allows us to link a + prim whose purpose is "render" to its (single target) + purpose="proxy" prim. This is entirely optional, but can be + useful in several scenarios: + + - In a pipeline that does pruning (for complexity management) + by deactivating prims composed from asset references, when we + deactivate a purpose="render" prim, we will be able to discover + and additionally deactivate its associated purpose="proxy" prim, + so that preview renders reflect the pruning accurately. + + - DCC importers may be able to make more aggressive optimizations + for interactive processing and display if they can discover the proxy + for a given render prim. + + - With a little more work, a Hydra-based application will be able + to map a picked proxy prim back to its render geometry for selection. + + \\note It is only valid to author the proxyPrim relationship on + prims whose purpose is "render".''' + ) + uniform token purpose = "default" ( + allowedTokens = ["default", "render", "proxy", "guide"] + doc = """Purpose is a classification of geometry into categories that + can each be independently included or excluded from traversals of prims + on a stage, such as rendering or bounding-box computation traversals. + + See for more detail about how + purpose is computed and used.""" + ) + double radiusBottom = 1 ( + doc = """The radius of the bottom of the cylinder - i.e. the face + point located along the negative axis. If you author + radiusBottom you must also author extent. + + \\sa GetExtentAttr()""" + ) + double radiusTop = 1 ( + doc = """The radius of the top of the cylinder - i.e. the face located + along the positive axis. If you author radiusTop you must also + author extent. + + \\sa GetExtentAttr()""" + ) + token visibility = "inherited" ( + allowedTokens = ["inherited", "invisible"] + doc = '''Visibility is meant to be the simplest form of "pruning" + visibility that is supported by most DCC apps. Visibility is + animatable, allowing a sub-tree of geometry to be present for some + segment of a shot, and absent from others; unlike the action of + deactivating geometry prims, invisible geometry is still + available for inspection, for positioning, for defining volumes, etc.''' + ) + uniform token[] xformOpOrder ( + doc = """Encodes the sequence of transformation operations in the + order in which they should be pushed onto a transform stack while + visiting a UsdStage's prims in a graph traversal that will effect + the desired positioning for this prim and its descendant prims. + + You should rarely, if ever, need to manipulate this attribute directly. + It is managed by the AddXformOp(), SetResetXformStack(), and + SetXformOpOrder(), and consulted by GetOrderedXformOps() and + GetLocalTransformation().""" + ) +} + class Plane "Plane" ( doc = """Defines a primitive plane, centered at the origin, and is defined by a cardinal axis, width, and length. The plane is double-sided by default. diff --git a/pxr/usd/usdGeom/plugInfo.json b/pxr/usd/usdGeom/plugInfo.json index 26d3a8b286..52d0773768 100644 --- a/pxr/usd/usdGeom/plugInfo.json +++ b/pxr/usd/usdGeom/plugInfo.json @@ -106,6 +106,17 @@ "implementsComputeExtent": true, "schemaKind": "concreteTyped" }, + "UsdGeomCapsule_1": { + "alias": { + "UsdSchemaBase": "Capsule_1" + }, + "autoGenerated": true, + "bases": [ + "UsdGeomGprim" + ], + "implementsComputeExtent": true, + "schemaKind": "concreteTyped" + }, "UsdGeomCone": { "alias": { "UsdSchemaBase": "Cone" @@ -117,6 +128,16 @@ "implementsComputeExtent": true, "schemaKind": "concreteTyped" }, + "UsdGeomCone_1": { + "alias": { + "UsdSchemaBase": "Cone_1" + }, + "autoGenerated": true, + "bases": [ + "UsdGeomCylinder_1" + ], + "schemaKind": "concreteTyped" + }, "UsdGeomCube": { "alias": { "UsdSchemaBase": "Cube" @@ -150,6 +171,17 @@ "implementsComputeExtent": true, "schemaKind": "concreteTyped" }, + "UsdGeomCylinder_1": { + "alias": { + "UsdSchemaBase": "Cylinder_1" + }, + "autoGenerated": true, + "bases": [ + "UsdGeomGprim" + ], + "implementsComputeExtent": true, + "schemaKind": "concreteTyped" + }, "UsdGeomGprim": { "alias": { "UsdSchemaBase": "Gprim" diff --git a/pxr/usd/usdGeom/schema.usda b/pxr/usd/usdGeom/schema.usda index a0b1e337b6..187b7bf65f 100644 --- a/pxr/usd/usdGeom/schema.usda +++ b/pxr/usd/usdGeom/schema.usda @@ -809,6 +809,106 @@ class Cone "Cone" ( ) } +class Cylinder_1 "Cylinder_1" ( + inherits = + doc = """Defines a primitive cylinder with closed ends, centered at the + origin, whose spine is along the specified \\em axis, with a pair of radii + desribing the size of the end points. + + The fallback values for Cube, Sphere, Cone, and Cylinder are set so that + they all pack into the same volume/bounds.""" + customData = { + dictionary extraPlugInfo = { + bool implementsComputeExtent = true + } + } +) { + double height = 2 ( + doc = """The size of the cylinder's spine along the specified + \\em axis. If you author \\em height you must also author \\em extent. + + \\sa GetExtentAttr()""" + ) + double radiusTop = 1.0 ( + doc = """The radius of the top of the cylinder - i.e. the face located + along the positive \\em axis. If you author \\em radiusTop you must also + author \\em extent. + + \\sa GetExtentAttr()""" + ) + double radiusBottom = 1.0 ( + doc = """The radius of the bottom of the cylinder - i.e. the face + point located along the negative \\em axis. If you author + \\em radiusBottom you must also author \\em extent. + + \\sa GetExtentAttr()""" + ) + uniform token axis = "Z" ( + allowedTokens = ["X", "Y", "Z"] + doc = """The axis along which the spine of the cylinder is aligned""" + ) + + float3[] extent = [(-1.0, -1.0, -1.0), (1.0, 1.0, 1.0)] ( + doc = """Extent is re-defined on Cylinder only to provide a fallback + value. \\sa UsdGeomGprim::GetExtentAttr().""" + ) +} + +class Capsule_1 "Capsule_1" ( + inherits = + doc = """Defines a primitive capsule, i.e. a cylinder capped by two half + spheres, with potentially different radii, centered at the origin, and whose + spine is along the specified \\em axis.""" + customData = { + dictionary extraPlugInfo = { + bool implementsComputeExtent = true + } + } +) { + double height = 1.0 ( + doc = """The size of the capsule's spine along the specified + \\em axis excluding the size of the two half spheres, i.e. + the size of the cylinder portion of the capsule. + If you author \\em height you must also author \\em extent. + \\sa GetExtentAttr()""" + ) + double radiusTop = 0.5 ( + doc = """The radius of the capping sphere at the top of the capsule - + i.e. the sphere in the direction of the positive \\em axis. If you + author \\em radius you must also author \\em extent. + + \\sa GetExtentAttr()""" + ) + double radiusBottom = 0.5 ( + doc = """The radius of the capping sphere at the bottom of the capsule - + i.e. the sphere located in the direction of the negative \\em axis. If + you author \\em radius you must also author \\em extent. + + \\sa GetExtentAttr()""" + ) + uniform token axis = "Z" ( + allowedTokens = ["X", "Y", "Z"] + doc = """The axis along which the spine of the capsule is aligned""" + ) + + float3[] extent = [(-0.5, -0.5, -1.0), (0.5, 0.5, 1.0)] ( + doc = """Extent is re-defined on Capsule only to provide a fallback + value. \\sa UsdGeomGprim::GetExtentAttr().""" + ) +} + +class Cone_1 "Cone_1" ( + inherits = + doc = """Defines a primitive cone, centered at the origin, whose spine + is along the specified \\em axis, with the apex of the cone pointing + in the direction of the positive axis. This is a special-case of a cylinder + whose top radius is zero. + + The fallback values for Cube, Sphere, Cone, and Cylinder are set so that + they all pack into the same volume/bounds.""" +) { +} + class Plane "Plane" ( inherits = doc = """Defines a primitive plane, centered at the origin, and is defined by diff --git a/pxr/usd/usdGeom/tokens.cpp b/pxr/usd/usdGeom/tokens.cpp index 813b3ac4b0..e3ae1a2301 100644 --- a/pxr/usd/usdGeom/tokens.cpp +++ b/pxr/usd/usdGeom/tokens.cpp @@ -139,6 +139,8 @@ UsdGeomTokensType::UsdGeomTokensType() : proxyVisibility("proxyVisibility", TfToken::Immortal), purpose("purpose", TfToken::Immortal), radius("radius", TfToken::Immortal), + radiusBottom("radiusBottom", TfToken::Immortal), + radiusTop("radiusTop", TfToken::Immortal), ranges("ranges", TfToken::Immortal), render("render", TfToken::Immortal), renderVisibility("renderVisibility", TfToken::Immortal), @@ -192,10 +194,13 @@ UsdGeomTokensType::UsdGeomTokensType() : Boundable("Boundable", TfToken::Immortal), Camera("Camera", TfToken::Immortal), Capsule("Capsule", TfToken::Immortal), + Capsule_1("Capsule_1", TfToken::Immortal), Cone("Cone", TfToken::Immortal), + Cone_1("Cone_1", TfToken::Immortal), Cube("Cube", TfToken::Immortal), Curves("Curves", TfToken::Immortal), Cylinder("Cylinder", TfToken::Immortal), + Cylinder_1("Cylinder_1", TfToken::Immortal), GeomModelAPI("GeomModelAPI", TfToken::Immortal), GeomSubset("GeomSubset", TfToken::Immortal), Gprim("Gprim", TfToken::Immortal), @@ -330,6 +335,8 @@ UsdGeomTokensType::UsdGeomTokensType() : proxyVisibility, purpose, radius, + radiusBottom, + radiusTop, ranges, render, renderVisibility, @@ -383,10 +390,13 @@ UsdGeomTokensType::UsdGeomTokensType() : Boundable, Camera, Capsule, + Capsule_1, Cone, + Cone_1, Cube, Curves, Cylinder, + Cylinder_1, GeomModelAPI, GeomSubset, Gprim, diff --git a/pxr/usd/usdGeom/tokens.h b/pxr/usd/usdGeom/tokens.h index bfbab2152d..7ed2c23159 100644 --- a/pxr/usd/usdGeom/tokens.h +++ b/pxr/usd/usdGeom/tokens.h @@ -76,7 +76,7 @@ struct UsdGeomTokensType { const TfToken angularVelocities; /// \brief "axis" /// - /// UsdGeomCylinder, UsdGeomCapsule, UsdGeomCone, UsdGeomPlane + /// UsdGeomCylinder, UsdGeomCapsule, UsdGeomCone, UsdGeomCylinder_1, UsdGeomCapsule_1, UsdGeomPlane const TfToken axis; /// \brief "basis" /// @@ -208,7 +208,7 @@ struct UsdGeomTokensType { const TfToken exposure; /// \brief "extent" /// - /// UsdGeomBoundable, UsdGeomCube, UsdGeomSphere, UsdGeomCylinder, UsdGeomCapsule, UsdGeomCone, UsdGeomPlane + /// UsdGeomBoundable, UsdGeomCube, UsdGeomSphere, UsdGeomCylinder, UsdGeomCapsule, UsdGeomCone, UsdGeomCylinder_1, UsdGeomCapsule_1, UsdGeomPlane const TfToken extent; /// \brief "extentsHint" /// @@ -264,7 +264,7 @@ struct UsdGeomTokensType { const TfToken guideVisibility; /// \brief "height" /// - /// UsdGeomCylinder, UsdGeomCapsule, UsdGeomCone + /// UsdGeomCylinder, UsdGeomCapsule, UsdGeomCone, UsdGeomCylinder_1, UsdGeomCapsule_1 const TfToken height; /// \brief "hermite" /// @@ -514,6 +514,14 @@ struct UsdGeomTokensType { /// /// UsdGeomSphere, UsdGeomCylinder, UsdGeomCapsule, UsdGeomCone const TfToken radius; + /// \brief "radiusBottom" + /// + /// UsdGeomCylinder_1, UsdGeomCapsule_1 + const TfToken radiusBottom; + /// \brief "radiusTop" + /// + /// UsdGeomCylinder_1, UsdGeomCapsule_1 + const TfToken radiusTop; /// \brief "ranges" /// /// UsdGeomNurbsCurves @@ -696,7 +704,7 @@ struct UsdGeomTokensType { const TfToken wrap; /// \brief "X" /// - /// Possible value for UsdGeomCylinder::GetAxisAttr(), Possible value for UsdGeomCapsule::GetAxisAttr(), Possible value for UsdGeomCone::GetAxisAttr(), Possible value for UsdGeomPlane::GetAxisAttr() + /// Possible value for UsdGeomCylinder::GetAxisAttr(), Possible value for UsdGeomCapsule::GetAxisAttr(), Possible value for UsdGeomCone::GetAxisAttr(), Possible value for UsdGeomCylinder_1::GetAxisAttr(), Possible value for UsdGeomCapsule_1::GetAxisAttr(), Possible value for UsdGeomPlane::GetAxisAttr() const TfToken x; /// \brief "xformOpOrder" /// @@ -704,11 +712,11 @@ struct UsdGeomTokensType { const TfToken xformOpOrder; /// \brief "Y" /// - /// Possible value for UsdGeomCylinder::GetAxisAttr(), Possible value for UsdGeomCapsule::GetAxisAttr(), Possible value for UsdGeomCone::GetAxisAttr(), Possible value for UsdGeomPlane::GetAxisAttr() + /// Possible value for UsdGeomCylinder::GetAxisAttr(), Possible value for UsdGeomCapsule::GetAxisAttr(), Possible value for UsdGeomCone::GetAxisAttr(), Possible value for UsdGeomCylinder_1::GetAxisAttr(), Possible value for UsdGeomCapsule_1::GetAxisAttr(), Possible value for UsdGeomPlane::GetAxisAttr() const TfToken y; /// \brief "Z" /// - /// Fallback value for UsdGeomCylinder::GetAxisAttr(), Fallback value for UsdGeomCapsule::GetAxisAttr(), Fallback value for UsdGeomCone::GetAxisAttr(), Fallback value for UsdGeomPlane::GetAxisAttr() + /// Fallback value for UsdGeomCylinder::GetAxisAttr(), Fallback value for UsdGeomCapsule::GetAxisAttr(), Fallback value for UsdGeomCone::GetAxisAttr(), Fallback value for UsdGeomCylinder_1::GetAxisAttr(), Fallback value for UsdGeomCapsule_1::GetAxisAttr(), Fallback value for UsdGeomPlane::GetAxisAttr() const TfToken z; /// \brief "BasisCurves" /// @@ -724,12 +732,20 @@ struct UsdGeomTokensType { const TfToken Camera; /// \brief "Capsule" /// - /// Schema identifer and family for UsdGeomCapsule + /// Schema identifer and family for UsdGeomCapsule, Schema family for UsdGeomCapsule_1 const TfToken Capsule; + /// \brief "Capsule_1" + /// + /// Schema identifer for UsdGeomCapsule_1 + const TfToken Capsule_1; /// \brief "Cone" /// - /// Schema identifer and family for UsdGeomCone + /// Schema identifer and family for UsdGeomCone, Schema family for UsdGeomCone_1 const TfToken Cone; + /// \brief "Cone_1" + /// + /// Schema identifer for UsdGeomCone_1 + const TfToken Cone_1; /// \brief "Cube" /// /// Schema identifer and family for UsdGeomCube @@ -740,8 +756,12 @@ struct UsdGeomTokensType { const TfToken Curves; /// \brief "Cylinder" /// - /// Schema identifer and family for UsdGeomCylinder + /// Schema identifer and family for UsdGeomCylinder, Schema family for UsdGeomCylinder_1 const TfToken Cylinder; + /// \brief "Cylinder_1" + /// + /// Schema identifer for UsdGeomCylinder_1 + const TfToken Cylinder_1; /// \brief "GeomModelAPI" /// /// Schema identifer and family for UsdGeomModelAPI diff --git a/pxr/usd/usdGeom/wrapCapsule_1.cpp b/pxr/usd/usdGeom/wrapCapsule_1.cpp new file mode 100644 index 0000000000..fb6b9bcc15 --- /dev/null +++ b/pxr/usd/usdGeom/wrapCapsule_1.cpp @@ -0,0 +1,194 @@ +// +// Copyright 2016 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +#include "pxr/usd/usdGeom/capsule_1.h" +#include "pxr/usd/usd/schemaBase.h" + +#include "pxr/usd/sdf/primSpec.h" + +#include "pxr/usd/usd/pyConversions.h" +#include "pxr/base/tf/pyContainerConversions.h" +#include "pxr/base/tf/pyResultConversions.h" +#include "pxr/base/tf/pyUtils.h" +#include "pxr/base/tf/wrapTypeHelpers.h" + +#include + +#include + +using namespace boost::python; + +PXR_NAMESPACE_USING_DIRECTIVE + +namespace { + +#define WRAP_CUSTOM \ + template static void _CustomWrapCode(Cls &_class) + +// fwd decl. +WRAP_CUSTOM; + + +static UsdAttribute +_CreateHeightAttr(UsdGeomCapsule_1 &self, + object defaultVal, bool writeSparsely) { + return self.CreateHeightAttr( + UsdPythonToSdfType(defaultVal, SdfValueTypeNames->Double), writeSparsely); +} + +static UsdAttribute +_CreateRadiusTopAttr(UsdGeomCapsule_1 &self, + object defaultVal, bool writeSparsely) { + return self.CreateRadiusTopAttr( + UsdPythonToSdfType(defaultVal, SdfValueTypeNames->Double), writeSparsely); +} + +static UsdAttribute +_CreateRadiusBottomAttr(UsdGeomCapsule_1 &self, + object defaultVal, bool writeSparsely) { + return self.CreateRadiusBottomAttr( + UsdPythonToSdfType(defaultVal, SdfValueTypeNames->Double), writeSparsely); +} + +static UsdAttribute +_CreateAxisAttr(UsdGeomCapsule_1 &self, + object defaultVal, bool writeSparsely) { + return self.CreateAxisAttr( + UsdPythonToSdfType(defaultVal, SdfValueTypeNames->Token), writeSparsely); +} + +static UsdAttribute +_CreateExtentAttr(UsdGeomCapsule_1 &self, + object defaultVal, bool writeSparsely) { + return self.CreateExtentAttr( + UsdPythonToSdfType(defaultVal, SdfValueTypeNames->Float3Array), writeSparsely); +} + +static std::string +_Repr(const UsdGeomCapsule_1 &self) +{ + std::string primRepr = TfPyRepr(self.GetPrim()); + return TfStringPrintf( + "UsdGeom.Capsule_1(%s)", + primRepr.c_str()); +} + +} // anonymous namespace + +void wrapUsdGeomCapsule_1() +{ + typedef UsdGeomCapsule_1 This; + + class_ > + cls("Capsule_1"); + + cls + .def(init(arg("prim"))) + .def(init(arg("schemaObj"))) + .def(TfTypePythonClass()) + + .def("Get", &This::Get, (arg("stage"), arg("path"))) + .staticmethod("Get") + + .def("Define", &This::Define, (arg("stage"), arg("path"))) + .staticmethod("Define") + + .def("GetSchemaAttributeNames", + &This::GetSchemaAttributeNames, + arg("includeInherited")=true, + return_value_policy()) + .staticmethod("GetSchemaAttributeNames") + + .def("_GetStaticTfType", (TfType const &(*)()) TfType::Find, + return_value_policy()) + .staticmethod("_GetStaticTfType") + + .def(!self) + + + .def("GetHeightAttr", + &This::GetHeightAttr) + .def("CreateHeightAttr", + &_CreateHeightAttr, + (arg("defaultValue")=object(), + arg("writeSparsely")=false)) + + .def("GetRadiusTopAttr", + &This::GetRadiusTopAttr) + .def("CreateRadiusTopAttr", + &_CreateRadiusTopAttr, + (arg("defaultValue")=object(), + arg("writeSparsely")=false)) + + .def("GetRadiusBottomAttr", + &This::GetRadiusBottomAttr) + .def("CreateRadiusBottomAttr", + &_CreateRadiusBottomAttr, + (arg("defaultValue")=object(), + arg("writeSparsely")=false)) + + .def("GetAxisAttr", + &This::GetAxisAttr) + .def("CreateAxisAttr", + &_CreateAxisAttr, + (arg("defaultValue")=object(), + arg("writeSparsely")=false)) + + .def("GetExtentAttr", + &This::GetExtentAttr) + .def("CreateExtentAttr", + &_CreateExtentAttr, + (arg("defaultValue")=object(), + arg("writeSparsely")=false)) + + .def("__repr__", ::_Repr) + ; + + _CustomWrapCode(cls); +} + +// ===================================================================== // +// Feel free to add custom code below this line, it will be preserved by +// the code generator. The entry point for your custom code should look +// minimally like the following: +// +// WRAP_CUSTOM { +// _class +// .def("MyCustomMethod", ...) +// ; +// } +// +// Of course any other ancillary or support code may be provided. +// +// Just remember to wrap code in the appropriate delimiters: +// 'namespace {', '}'. +// +// ===================================================================== // +// --(BEGIN CUSTOM CODE)-- + +namespace { + +WRAP_CUSTOM { +} + +} diff --git a/pxr/usd/usdGeom/wrapCone_1.cpp b/pxr/usd/usdGeom/wrapCone_1.cpp new file mode 100644 index 0000000000..31eb0b90a6 --- /dev/null +++ b/pxr/usd/usdGeom/wrapCone_1.cpp @@ -0,0 +1,124 @@ +// +// Copyright 2016 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +#include "pxr/usd/usdGeom/cone_1.h" +#include "pxr/usd/usd/schemaBase.h" + +#include "pxr/usd/sdf/primSpec.h" + +#include "pxr/usd/usd/pyConversions.h" +#include "pxr/base/tf/pyContainerConversions.h" +#include "pxr/base/tf/pyResultConversions.h" +#include "pxr/base/tf/pyUtils.h" +#include "pxr/base/tf/wrapTypeHelpers.h" + +#include + +#include + +using namespace boost::python; + +PXR_NAMESPACE_USING_DIRECTIVE + +namespace { + +#define WRAP_CUSTOM \ + template static void _CustomWrapCode(Cls &_class) + +// fwd decl. +WRAP_CUSTOM; + + +static std::string +_Repr(const UsdGeomCone_1 &self) +{ + std::string primRepr = TfPyRepr(self.GetPrim()); + return TfStringPrintf( + "UsdGeom.Cone_1(%s)", + primRepr.c_str()); +} + +} // anonymous namespace + +void wrapUsdGeomCone_1() +{ + typedef UsdGeomCone_1 This; + + class_ > + cls("Cone_1"); + + cls + .def(init(arg("prim"))) + .def(init(arg("schemaObj"))) + .def(TfTypePythonClass()) + + .def("Get", &This::Get, (arg("stage"), arg("path"))) + .staticmethod("Get") + + .def("Define", &This::Define, (arg("stage"), arg("path"))) + .staticmethod("Define") + + .def("GetSchemaAttributeNames", + &This::GetSchemaAttributeNames, + arg("includeInherited")=true, + return_value_policy()) + .staticmethod("GetSchemaAttributeNames") + + .def("_GetStaticTfType", (TfType const &(*)()) TfType::Find, + return_value_policy()) + .staticmethod("_GetStaticTfType") + + .def(!self) + + + .def("__repr__", ::_Repr) + ; + + _CustomWrapCode(cls); +} + +// ===================================================================== // +// Feel free to add custom code below this line, it will be preserved by +// the code generator. The entry point for your custom code should look +// minimally like the following: +// +// WRAP_CUSTOM { +// _class +// .def("MyCustomMethod", ...) +// ; +// } +// +// Of course any other ancillary or support code may be provided. +// +// Just remember to wrap code in the appropriate delimiters: +// 'namespace {', '}'. +// +// ===================================================================== // +// --(BEGIN CUSTOM CODE)-- + +namespace { + +WRAP_CUSTOM { +} + +} diff --git a/pxr/usd/usdGeom/wrapCylinder_1.cpp b/pxr/usd/usdGeom/wrapCylinder_1.cpp new file mode 100644 index 0000000000..893d275269 --- /dev/null +++ b/pxr/usd/usdGeom/wrapCylinder_1.cpp @@ -0,0 +1,194 @@ +// +// Copyright 2016 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +#include "pxr/usd/usdGeom/cylinder_1.h" +#include "pxr/usd/usd/schemaBase.h" + +#include "pxr/usd/sdf/primSpec.h" + +#include "pxr/usd/usd/pyConversions.h" +#include "pxr/base/tf/pyContainerConversions.h" +#include "pxr/base/tf/pyResultConversions.h" +#include "pxr/base/tf/pyUtils.h" +#include "pxr/base/tf/wrapTypeHelpers.h" + +#include + +#include + +using namespace boost::python; + +PXR_NAMESPACE_USING_DIRECTIVE + +namespace { + +#define WRAP_CUSTOM \ + template static void _CustomWrapCode(Cls &_class) + +// fwd decl. +WRAP_CUSTOM; + + +static UsdAttribute +_CreateHeightAttr(UsdGeomCylinder_1 &self, + object defaultVal, bool writeSparsely) { + return self.CreateHeightAttr( + UsdPythonToSdfType(defaultVal, SdfValueTypeNames->Double), writeSparsely); +} + +static UsdAttribute +_CreateRadiusTopAttr(UsdGeomCylinder_1 &self, + object defaultVal, bool writeSparsely) { + return self.CreateRadiusTopAttr( + UsdPythonToSdfType(defaultVal, SdfValueTypeNames->Double), writeSparsely); +} + +static UsdAttribute +_CreateRadiusBottomAttr(UsdGeomCylinder_1 &self, + object defaultVal, bool writeSparsely) { + return self.CreateRadiusBottomAttr( + UsdPythonToSdfType(defaultVal, SdfValueTypeNames->Double), writeSparsely); +} + +static UsdAttribute +_CreateAxisAttr(UsdGeomCylinder_1 &self, + object defaultVal, bool writeSparsely) { + return self.CreateAxisAttr( + UsdPythonToSdfType(defaultVal, SdfValueTypeNames->Token), writeSparsely); +} + +static UsdAttribute +_CreateExtentAttr(UsdGeomCylinder_1 &self, + object defaultVal, bool writeSparsely) { + return self.CreateExtentAttr( + UsdPythonToSdfType(defaultVal, SdfValueTypeNames->Float3Array), writeSparsely); +} + +static std::string +_Repr(const UsdGeomCylinder_1 &self) +{ + std::string primRepr = TfPyRepr(self.GetPrim()); + return TfStringPrintf( + "UsdGeom.Cylinder_1(%s)", + primRepr.c_str()); +} + +} // anonymous namespace + +void wrapUsdGeomCylinder_1() +{ + typedef UsdGeomCylinder_1 This; + + class_ > + cls("Cylinder_1"); + + cls + .def(init(arg("prim"))) + .def(init(arg("schemaObj"))) + .def(TfTypePythonClass()) + + .def("Get", &This::Get, (arg("stage"), arg("path"))) + .staticmethod("Get") + + .def("Define", &This::Define, (arg("stage"), arg("path"))) + .staticmethod("Define") + + .def("GetSchemaAttributeNames", + &This::GetSchemaAttributeNames, + arg("includeInherited")=true, + return_value_policy()) + .staticmethod("GetSchemaAttributeNames") + + .def("_GetStaticTfType", (TfType const &(*)()) TfType::Find, + return_value_policy()) + .staticmethod("_GetStaticTfType") + + .def(!self) + + + .def("GetHeightAttr", + &This::GetHeightAttr) + .def("CreateHeightAttr", + &_CreateHeightAttr, + (arg("defaultValue")=object(), + arg("writeSparsely")=false)) + + .def("GetRadiusTopAttr", + &This::GetRadiusTopAttr) + .def("CreateRadiusTopAttr", + &_CreateRadiusTopAttr, + (arg("defaultValue")=object(), + arg("writeSparsely")=false)) + + .def("GetRadiusBottomAttr", + &This::GetRadiusBottomAttr) + .def("CreateRadiusBottomAttr", + &_CreateRadiusBottomAttr, + (arg("defaultValue")=object(), + arg("writeSparsely")=false)) + + .def("GetAxisAttr", + &This::GetAxisAttr) + .def("CreateAxisAttr", + &_CreateAxisAttr, + (arg("defaultValue")=object(), + arg("writeSparsely")=false)) + + .def("GetExtentAttr", + &This::GetExtentAttr) + .def("CreateExtentAttr", + &_CreateExtentAttr, + (arg("defaultValue")=object(), + arg("writeSparsely")=false)) + + .def("__repr__", ::_Repr) + ; + + _CustomWrapCode(cls); +} + +// ===================================================================== // +// Feel free to add custom code below this line, it will be preserved by +// the code generator. The entry point for your custom code should look +// minimally like the following: +// +// WRAP_CUSTOM { +// _class +// .def("MyCustomMethod", ...) +// ; +// } +// +// Of course any other ancillary or support code may be provided. +// +// Just remember to wrap code in the appropriate delimiters: +// 'namespace {', '}'. +// +// ===================================================================== // +// --(BEGIN CUSTOM CODE)-- + +namespace { + +WRAP_CUSTOM { +} + +} diff --git a/pxr/usd/usdGeom/wrapTokens.cpp b/pxr/usd/usdGeom/wrapTokens.cpp index da636c7032..1c6bf277dd 100644 --- a/pxr/usd/usdGeom/wrapTokens.cpp +++ b/pxr/usd/usdGeom/wrapTokens.cpp @@ -177,6 +177,8 @@ void wrapUsdGeomTokens() _AddToken(cls, "proxyVisibility", UsdGeomTokens->proxyVisibility); _AddToken(cls, "purpose", UsdGeomTokens->purpose); _AddToken(cls, "radius", UsdGeomTokens->radius); + _AddToken(cls, "radiusBottom", UsdGeomTokens->radiusBottom); + _AddToken(cls, "radiusTop", UsdGeomTokens->radiusTop); _AddToken(cls, "ranges", UsdGeomTokens->ranges); _AddToken(cls, "render", UsdGeomTokens->render); _AddToken(cls, "renderVisibility", UsdGeomTokens->renderVisibility); @@ -230,10 +232,13 @@ void wrapUsdGeomTokens() _AddToken(cls, "Boundable", UsdGeomTokens->Boundable); _AddToken(cls, "Camera", UsdGeomTokens->Camera); _AddToken(cls, "Capsule", UsdGeomTokens->Capsule); + _AddToken(cls, "Capsule_1", UsdGeomTokens->Capsule_1); _AddToken(cls, "Cone", UsdGeomTokens->Cone); + _AddToken(cls, "Cone_1", UsdGeomTokens->Cone_1); _AddToken(cls, "Cube", UsdGeomTokens->Cube); _AddToken(cls, "Curves", UsdGeomTokens->Curves); _AddToken(cls, "Cylinder", UsdGeomTokens->Cylinder); + _AddToken(cls, "Cylinder_1", UsdGeomTokens->Cylinder_1); _AddToken(cls, "GeomModelAPI", UsdGeomTokens->GeomModelAPI); _AddToken(cls, "GeomSubset", UsdGeomTokens->GeomSubset); _AddToken(cls, "Gprim", UsdGeomTokens->Gprim); diff --git a/pxr/usdImaging/usdImaging/capsuleAdapter.cpp b/pxr/usdImaging/usdImaging/capsuleAdapter.cpp index 943a226d7f..70994ea407 100644 --- a/pxr/usdImaging/usdImaging/capsuleAdapter.cpp +++ b/pxr/usdImaging/usdImaging/capsuleAdapter.cpp @@ -36,6 +36,7 @@ #include "pxr/imaging/hd/tokens.h" #include "pxr/usd/usdGeom/capsule.h" +#include "pxr/usd/usdGeom/capsule_1.h" #include "pxr/usd/usdGeom/xformCache.h" #include "pxr/base/tf/type.h" @@ -45,7 +46,7 @@ PXR_NAMESPACE_OPEN_SCOPE namespace { -using _PrimSource = UsdImagingDataSourceImplicitsPrim; +using _PrimSource = UsdImagingDataSourceImplicitsPrim; } TF_REGISTRY_FUNCTION(TfType) @@ -175,12 +176,14 @@ UsdImagingCapsuleAdapter::GetPoints(UsdPrim const& prim, TRACE_FUNCTION(); HF_MALLOC_TAG_FUNCTION(); - UsdGeomCapsule capsule(prim); + UsdGeomCapsule_1 capsule(prim); double height = 1.0; - double radius = 0.5; + double radiusTop = 0.5; + double radiusBottom = 0.5; TfToken axis = UsdGeomTokens->z; TF_VERIFY(capsule.GetHeightAttr().Get(&height, time)); - TF_VERIFY(capsule.GetRadiusAttr().Get(&radius, time)); + TF_VERIFY(capsule.GetRadiusTopAttr().Get(&radiusTop, time)); + TF_VERIFY(capsule.GetRadiusBottomAttr().Get(&radiusBottom, time)); TF_VERIFY(capsule.GetAxisAttr().Get(&axis, time)); // The capsule point generator computes points such that the "rings" of the @@ -192,14 +195,49 @@ UsdImagingCapsuleAdapter::GetPoints(UsdPrim const& prim, const size_t numPoints = GeomUtilCapsuleMeshGenerator::ComputeNumPoints(numRadial, numCapAxial); - VtVec3fArray points(numPoints); + double latitudeRange = 0.0; + if (radiusBottom != radiusTop) + { + // USD describes that the height excludes the sphere radii, so we have two spheres + // located at +height/2 and -height/2. We need to find a plane tangent to both spheres + // to generate a smooth smooth interface between the different radii. The angle of this + // tangent from the axis which will become the latitudeRange for the two spheres. + + // First, construct two circles: + // * One at (0,0), of radius height * 0.5 (i.e. the centers of the caps are on this surface) + // * One at (-height,0) of radius rBottom - rTop + // Then, find the intersection between those two circles = q. + // The vector |q - (-height, 0)| is perpendicular to the tangent + double rA = radiusBottom - radiusTop; + double rB = height * 0.5; + double a = height * -0.5; + GfVec2d q(0, 0); + q[0] = (rB * rB - rA * rA + a * a) / (2 * a); + // radiusBottom) + { + latitudeRange *= -1; + } + } + VtVec3fArray points(numPoints); + const double sweep = 360; GeomUtilCapsuleMeshGenerator::GeneratePoints( points.begin(), numRadial, numCapAxial, - radius, + radiusBottom, + radiusTop, height, + radiusBottom, + latitudeRange, + radiusTop, + latitudeRange, + sweep, &basis ); diff --git a/pxr/usdImaging/usdImaging/cylinderAdapter.cpp b/pxr/usdImaging/usdImaging/cylinderAdapter.cpp index 83d9920293..8e1d57a3d6 100644 --- a/pxr/usdImaging/usdImaging/cylinderAdapter.cpp +++ b/pxr/usdImaging/usdImaging/cylinderAdapter.cpp @@ -36,6 +36,7 @@ #include "pxr/imaging/hd/tokens.h" #include "pxr/usd/usdGeom/cylinder.h" +#include "pxr/usd/usdGeom/cylinder_1.h" #include "pxr/usd/usdGeom/xformCache.h" #include "pxr/base/tf/type.h" @@ -43,7 +44,7 @@ PXR_NAMESPACE_OPEN_SCOPE namespace { -using _PrimSource = UsdImagingDataSourceImplicitsPrim; +using _PrimSource = UsdImagingDataSourceImplicitsPrim; } TF_REGISTRY_FUNCTION(TfType) @@ -176,7 +177,7 @@ VtValue UsdImagingCylinderAdapter::GetPoints(UsdPrim const& prim, UsdTimeCode time) const { - UsdGeomCylinder cylinder(prim); + UsdGeomCylinder_1 cylinder(prim); double height = 2.0; UsdGeomSphere sphere(prim); @@ -184,9 +185,14 @@ UsdImagingCylinderAdapter::GetPoints(UsdPrim const& prim, TF_WARN("Could not evaluate double-valued height attribute on prim %s", prim.GetPath().GetText()); } - double radius = 1.0; - if (!cylinder.GetRadiusAttr().Get(&radius, time)) { - TF_WARN("Could not evaluate double-valued radius attribute on prim %s", + double radiusBottom = 1.0; + if (!cylinder.GetRadiusBottomAttr().Get(&radiusBottom, time)) { + TF_WARN("Could not evaluate double-valued bottom radius attribute on prim %s", + prim.GetPath().GetText()); + } + double radiusTop = 1.0; + if (!cylinder.GetRadiusTopAttr().Get(&radiusTop, time)) { + TF_WARN("Could not evaluate double-valued top radius attribute on prim %s", prim.GetPath().GetText()); } TfToken axis = UsdGeomTokens->z; @@ -202,11 +208,14 @@ UsdImagingCylinderAdapter::GetPoints(UsdPrim const& prim, VtVec3fArray points(numPoints); + const double sweepDegrees = 360; GeomUtilCylinderMeshGenerator::GeneratePoints( points.begin(), numRadial, - radius, + radiusBottom, + radiusTop, height, + sweepDegrees, &basis ); diff --git a/pxr/usdImaging/usdImaging/drawModeStandin.cpp b/pxr/usdImaging/usdImaging/drawModeStandin.cpp index 68437b00da..fb89ecdfe3 100644 --- a/pxr/usdImaging/usdImaging/drawModeStandin.cpp +++ b/pxr/usdImaging/usdImaging/drawModeStandin.cpp @@ -54,9 +54,12 @@ #include "pxr/base/gf/matrix4f.h" #include "pxr/base/gf/range3d.h" +#include "pxr/base/tf/token.h" #include #include +#include +#include PXR_NAMESPACE_OPEN_SCOPE diff --git a/pxr/usdImaging/usdImaging/plugInfo.json b/pxr/usdImaging/usdImaging/plugInfo.json index 54a8caae4a..305b4b88e4 100644 --- a/pxr/usdImaging/usdImaging/plugInfo.json +++ b/pxr/usdImaging/usdImaging/plugInfo.json @@ -48,9 +48,9 @@ "UsdImagingGprimAdapter" ], "isInternal": true, - "primTypeName": "Capsule" + "primTypeName": "Capsule_1" }, - "UsdImagingCollectionAPIAdapter" : { + "UsdImagingCollectionAPIAdapter" : { "bases": ["UsdImagingAPISchemaAdapter"], "isInternal": true, "apiSchemaName": "CollectionAPI" @@ -86,7 +86,7 @@ "UsdImagingGprimAdapter" ], "isInternal": true, - "primTypeName": "Cylinder" + "primTypeName": "Cylinder_1" }, "UsdImagingDrawModeAdapter" : { "bases": ["UsdImagingPrimAdapter"], From 5da3ea21be5df5ad6f4b614211dd05a9572b2d53 Mon Sep 17 00:00:00 2001 From: Eoin Mcloughlin Date: Fri, 16 Jun 2023 08:37:30 +0100 Subject: [PATCH 024/352] Test registering a single plugin with multiple prim types --- pxr/usdImaging/usdImaging/adapterRegistry.cpp | 73 +++++++++++++------ pxr/usdImaging/usdImaging/capsuleAdapter.cpp | 58 +++++++++++++-- pxr/usdImaging/usdImaging/cylinderAdapter.cpp | 68 ++++++++++++----- pxr/usdImaging/usdImaging/plugInfo.json | 4 +- 4 files changed, 152 insertions(+), 51 deletions(-) diff --git a/pxr/usdImaging/usdImaging/adapterRegistry.cpp b/pxr/usdImaging/usdImaging/adapterRegistry.cpp index a03955a810..7ccec35c74 100644 --- a/pxr/usdImaging/usdImaging/adapterRegistry.cpp +++ b/pxr/usdImaging/usdImaging/adapterRegistry.cpp @@ -111,51 +111,78 @@ UsdImagingAdapterRegistry::UsdImagingAdapterRegistry() { } - JsObject::const_iterator it = metadata.find("primTypeName"); - if (it == metadata.end()) { + JsObject::const_iterator primNameKey = metadata.find("primTypeName"); + JsObject::const_iterator primNamesKey = metadata.find("primTypeNames"); + if (primNameKey == metadata.end() && primNamesKey == metadata.end()) { TF_RUNTIME_ERROR("[PluginDiscover] primTypeName metadata was not " - "present for plugin '%s'\n", + "present for plugin '%s'\n", typeIt->GetTypeName().c_str()); continue; } - if (!it->second.Is()) { + + if (primNameKey != metadata.end() && !primNameKey->second.Is() ) { TF_RUNTIME_ERROR("[PluginDiscover] primTypeName metadata was " - "corrupted for plugin '%s'\n", + "corrupted for plugin '%s'\n", typeIt->GetTypeName().c_str()); continue; } - - const TfToken primTypeName(it->second.Get()); - - TF_DEBUG(USDIMAGING_PLUGINS).Msg("[PluginDiscover] Plugin discovered " - "'%s' for primType '%s'\n", - typeIt->GetTypeName().c_str(), primTypeName.GetText()); - if (_typeMap.count(primTypeName) != 0) { - TF_CODING_ERROR("[PluginDiscover] A prim adapter for primType '%s' " - "already exists! Overriding prim adapters at runtime is not " - "supported. The last discovered adapter (%s) will be used. The " - "previously discovered adapter (%s) will be discarded.", - primTypeName.GetText(), typeIt->GetTypeName().c_str(), - _typeMap[primTypeName].GetTypeName().c_str()); + if (primNamesKey != metadata.end() && (!primNamesKey->second.Is() || + false)) { //!primNamesKey->second.Get().IsArrayOf())) { + TF_RUNTIME_ERROR("[PluginDiscover] primTypeNames metadata was " + "corrupted for plugin '%s'\n", + typeIt->GetTypeName().c_str()); + continue; } - _typeMap[primTypeName] = *typeIt; // Adapters can opt in to being used as the adapter for any derived - // prim types (without adapters of their own) of the targeted prim type + // prim types (without adapters of their own) of the targeted prim type // through additional metadata. - JsObject::const_iterator includeDerivedIt = + JsObject::const_iterator includeDerivedIt = metadata.find("includeDerivedPrimTypes"); + bool includeDerivedTypes = false; if (includeDerivedIt != metadata.end()) { if (!includeDerivedIt->second.Is()) { TF_RUNTIME_ERROR("[PluginDiscover] includeDerivedPrimTypes " "metadata was corrupted for plugin '%s'; not holding " - "bool\n", + "bool\n", typeIt->GetTypeName().c_str()); continue; - } else if (includeDerivedIt->second.Get()){ + } else { + includeDerivedTypes = includeDerivedIt->second.Get(); + } + } + + auto registerPluginByName = [this, &includeDerivedPrimTypes](TfToken const& primTypeName, TfType const& pluginType, bool includeDerivedTypes) { + + TF_DEBUG(USDIMAGING_PLUGINS).Msg("[PluginDiscover] Plugin discovered " + "'%s' for primType '%s'\n", + pluginType.GetTypeName().c_str(), primTypeName.GetText()); + if (_typeMap.count(primTypeName) != 0) { + TF_CODING_ERROR("[PluginDiscover] A prim adapter for primType '%s' " + "already exists! Overriding prim adapters at runtime is not " + "supported. The last discovered adapter (%s) will be used. The " + "previously discovered adapter (%s) will be discarded.", + primTypeName.GetText(), pluginType.GetTypeName().c_str(), + _typeMap[primTypeName].GetTypeName().c_str()); + } + _typeMap[primTypeName] = pluginType; + + if (includeDerivedTypes) { includeDerivedPrimTypes.push_back(primTypeName); } + }; + + if (primNameKey != metadata.end()) { + registerPluginByName(TfToken(primNameKey->second.Get()), *typeIt, includeDerivedTypes); + } + + if (primNamesKey != metadata.end()) { + const JsArray& primNames = primNamesKey->second.Get(); + for(const JsValue& primName : primNames) { + registerPluginByName(TfToken(primName.GetString()), *typeIt, includeDerivedTypes); + } } + } // Process the types whose derived types can use its adapter after all diff --git a/pxr/usdImaging/usdImaging/capsuleAdapter.cpp b/pxr/usdImaging/usdImaging/capsuleAdapter.cpp index 70994ea407..532a422561 100644 --- a/pxr/usdImaging/usdImaging/capsuleAdapter.cpp +++ b/pxr/usdImaging/usdImaging/capsuleAdapter.cpp @@ -168,6 +168,53 @@ UsdImagingCapsuleAdapter::ProcessPropertyChange(UsdPrim const& prim, return BaseAdapter::ProcessPropertyChange(prim, cachePath, propertyName); } +static void extractRadii(UsdGeomCapsule const& capsule, UsdTimeCode time, double& radiusBottomOut, double& radiusTopOut) +{ + if (!capsule.GetRadiusAttr().Get(&radiusBottomOut, time)) { + TF_WARN("Could not evaluate double-valued radius attribute on prim %s", + capsule.GetPath().GetText()); + } else { + radiusTopOut = radiusBottomOut; + } +} + + +static void extractRadii(UsdGeomCapsule_1 const& capsule, UsdTimeCode time, double& radiusBottomOut, double& radiusTopOut) +{ + if (!capsule.GetRadiusBottomAttr().Get(&radiusBottomOut, time)) { + TF_WARN("Could not evaluate double-valued bottom radius attribute on prim %s", + capsule.GetPath().GetText()); + } + if (!capsule.GetRadiusTopAttr().Get(&radiusTopOut, time)) { + TF_WARN("Could not evaluate double-valued top radius attribute on prim %s", + capsule.GetPath().GetText()); + } +} + +template +static void extractCapsuleParameters(UsdPrim const& prim, UsdTimeCode time, double& heightOut, double& radiusBottomOut, + double& radiusTopOut, TfToken& axisOut) +{ + if (!prim.IsA()) { + return; + } + + CapsuleType capsule(prim); + + if (!capsule.GetHeightAttr().Get(&heightOut, time)) { + TF_WARN("Could not evaluate double-valued height attribute on prim %s", + capsule.GetPath().GetText()); + } + + extractRadii(capsule, time, radiusBottomOut, radiusTopOut); + + if (!capsule.GetAxisAttr().Get(&axisOut, time)) { + TF_WARN("Could not evaluate token-valued axis attribute on prim %s", + capsule.GetPath().GetText()); + } +} + + /*virtual*/ VtValue UsdImagingCapsuleAdapter::GetPoints(UsdPrim const& prim, @@ -176,15 +223,12 @@ UsdImagingCapsuleAdapter::GetPoints(UsdPrim const& prim, TRACE_FUNCTION(); HF_MALLOC_TAG_FUNCTION(); - UsdGeomCapsule_1 capsule(prim); - double height = 1.0; - double radiusTop = 0.5; + double height = 2.0; double radiusBottom = 0.5; + double radiusTop = 0.5; TfToken axis = UsdGeomTokens->z; - TF_VERIFY(capsule.GetHeightAttr().Get(&height, time)); - TF_VERIFY(capsule.GetRadiusTopAttr().Get(&radiusTop, time)); - TF_VERIFY(capsule.GetRadiusBottomAttr().Get(&radiusBottom, time)); - TF_VERIFY(capsule.GetAxisAttr().Get(&axis, time)); + extractCapsuleParameters(prim, time, height, radiusBottom, radiusTop, axis); + extractCapsuleParameters(prim, time, height, radiusBottom, radiusTop, axis); // The capsule point generator computes points such that the "rings" of the // capsule lie on a plane parallel to the XY plane, with the Z-axis being diff --git a/pxr/usdImaging/usdImaging/cylinderAdapter.cpp b/pxr/usdImaging/usdImaging/cylinderAdapter.cpp index 8e1d57a3d6..8fa5c39a48 100644 --- a/pxr/usdImaging/usdImaging/cylinderAdapter.cpp +++ b/pxr/usdImaging/usdImaging/cylinderAdapter.cpp @@ -172,34 +172,64 @@ UsdImagingCylinderAdapter::ProcessPropertyChange(UsdPrim const& prim, return BaseAdapter::ProcessPropertyChange(prim, cachePath, propertyName); } +static void extractRadii(UsdGeomCylinder const& cylinder, UsdTimeCode time, double& radiusBottomOut, double& radiusTopOut) +{ + if (!cylinder.GetRadiusAttr().Get(&radiusBottomOut, time)) { + TF_WARN("Could not evaluate double-valued radius attribute on prim %s", + cylinder.GetPath().GetText()); + } else { + radiusTopOut = radiusBottomOut; + } +} + + +static void extractRadii(UsdGeomCylinder_1 const& cylinder, UsdTimeCode time, double& radiusBottomOut, double& radiusTopOut) +{ + if (!cylinder.GetRadiusBottomAttr().Get(&radiusBottomOut, time)) { + TF_WARN("Could not evaluate double-valued bottom radius attribute on prim %s", + cylinder.GetPath().GetText()); + } + if (!cylinder.GetRadiusTopAttr().Get(&radiusTopOut, time)) { + TF_WARN("Could not evaluate double-valued top radius attribute on prim %s", + cylinder.GetPath().GetText()); + } +} + +template +static void extractCylinderParameters(UsdPrim const& prim, UsdTimeCode time, double& heightOut, double& radiusBottomOut, + double& radiusTopOut, TfToken& axisOut) +{ + if (!prim.IsA()) { + return; + } + + CylinderType cylinder(prim); + + if (!cylinder.GetHeightAttr().Get(&heightOut, time)) { + TF_WARN("Could not evaluate double-valued height attribute on prim %s", + cylinder.GetPath().GetText()); + } + + extractRadii(cylinder, time, radiusBottomOut, radiusTopOut); + + if (!cylinder.GetAxisAttr().Get(&axisOut, time)) { + TF_WARN("Could not evaluate token-valued axis attribute on prim %s", + cylinder.GetPath().GetText()); + } +} + /*virtual*/ VtValue UsdImagingCylinderAdapter::GetPoints(UsdPrim const& prim, UsdTimeCode time) const { - UsdGeomCylinder_1 cylinder(prim); - double height = 2.0; - UsdGeomSphere sphere(prim); - if (!cylinder.GetHeightAttr().Get(&height, time)) { - TF_WARN("Could not evaluate double-valued height attribute on prim %s", - prim.GetPath().GetText()); - } double radiusBottom = 1.0; - if (!cylinder.GetRadiusBottomAttr().Get(&radiusBottom, time)) { - TF_WARN("Could not evaluate double-valued bottom radius attribute on prim %s", - prim.GetPath().GetText()); - } double radiusTop = 1.0; - if (!cylinder.GetRadiusTopAttr().Get(&radiusTop, time)) { - TF_WARN("Could not evaluate double-valued top radius attribute on prim %s", - prim.GetPath().GetText()); - } TfToken axis = UsdGeomTokens->z; - if (!cylinder.GetAxisAttr().Get(&axis, time)) { - TF_WARN("Could not evaluate token-valued axis attribute on prim %s", - prim.GetPath().GetText()); - } + extractCylinderParameters(prim, time, height, radiusBottom, radiusTop, axis); + extractCylinderParameters(prim, time, height, radiusBottom, radiusTop, axis); + const GfMatrix4d basis = UsdImagingGprimAdapter::GetImplicitBasis(axis); diff --git a/pxr/usdImaging/usdImaging/plugInfo.json b/pxr/usdImaging/usdImaging/plugInfo.json index 305b4b88e4..50d67e4b90 100644 --- a/pxr/usdImaging/usdImaging/plugInfo.json +++ b/pxr/usdImaging/usdImaging/plugInfo.json @@ -48,7 +48,7 @@ "UsdImagingGprimAdapter" ], "isInternal": true, - "primTypeName": "Capsule_1" + "primTypeNames": ["Capsule", "Capsule_1"] }, "UsdImagingCollectionAPIAdapter" : { "bases": ["UsdImagingAPISchemaAdapter"], @@ -86,7 +86,7 @@ "UsdImagingGprimAdapter" ], "isInternal": true, - "primTypeName": "Cylinder_1" + "primTypeNames": ["Cylinder", "Cylinder_1"] }, "UsdImagingDrawModeAdapter" : { "bases": ["UsdImagingPrimAdapter"], From 040ca29b19f9d1bceaef00035b2f9b0fc3ea0d88 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Thu, 22 Jun 2023 15:00:28 -0700 Subject: [PATCH 025/352] Replace `boost::totally_ordered` with explicit operator overloads for `SdfSite` --- pxr/usd/sdf/site.h | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/pxr/usd/sdf/site.h b/pxr/usd/sdf/site.h index 8e111e90a9..c2d1b40464 100644 --- a/pxr/usd/sdf/site.h +++ b/pxr/usd/sdf/site.h @@ -30,7 +30,6 @@ #include #include -#include PXR_NAMESPACE_OPEN_SCOPE @@ -40,8 +39,7 @@ PXR_NAMESPACE_OPEN_SCOPE /// opinions may possibly be found. It is simply a pair of layer and path /// within that layer. /// -class SdfSite - : public boost::totally_ordered +class SdfSite { public: SdfSite() { } @@ -55,12 +53,32 @@ class SdfSite return layer == other.layer && path == other.path; } + bool operator!=(const SdfSite& other) const + { + return !(*this == other); + } + bool operator<(const SdfSite& other) const { return layer < other.layer || (!(other.layer < layer) && path < other.path); } + bool operator>(const SdfSite& other) const + { + return other < *this; + } + + bool operator<=(const SdfSite& other) const + { + return !(other < *this); + } + + bool operator>=(const SdfSite& other) const + { + return !(*this < other); + } + /// Explicit bool conversion operator. A site object converts to \c true iff /// both the layer and path fields are filled with valid values, \c false /// otherwise. From 228f591825b5b0a74a06632686a9642db5ec434a Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Thu, 22 Jun 2023 14:43:45 -0700 Subject: [PATCH 026/352] Replace `boost::totally_ordered` with explicit operator overloads for `SdfPayload` --- pxr/usd/sdf/payload.h | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/pxr/usd/sdf/payload.h b/pxr/usd/sdf/payload.h index f0f7c2d04a..b30616c4f3 100644 --- a/pxr/usd/sdf/payload.h +++ b/pxr/usd/sdf/payload.h @@ -33,8 +33,6 @@ #include "pxr/usd/sdf/path.h" #include "pxr/base/tf/hash.h" -#include - #include #include #include @@ -57,7 +55,7 @@ typedef std::vector SdfPayloadVector; /// system behaviors will not traverse across, providing a user-visible /// way to manage the working set of the scene. /// -class SdfPayload : boost::totally_ordered { +class SdfPayload { public: /// Create a payload. See SdfAssetPath for what characters are valid in \p /// assetPath. If \p assetPath contains invalid characters, issue an error @@ -107,10 +105,30 @@ class SdfPayload : boost::totally_ordered { /// Returns whether this payload equals \a rhs. SDF_API bool operator==(const SdfPayload &rhs) const; + /// \sa SdfPayload::operator== + bool operator!=(const SdfPayload& rhs) const { + return !(*this == rhs); + } + /// Returns whether this payload is less than \a rhs. /// The meaning of less than is arbitrary but stable. SDF_API bool operator<(const SdfPayload &rhs) const; + /// \sa SdfPayload::operator< + bool operator>(const SdfPayload& rhs) const { + return rhs < *this; + } + + /// \sa SdfPayload::operator< + bool operator<=(const SdfPayload& rhs) const { + return !(rhs < *this); + } + + /// \sa SdfPayload::operator< + bool operator>=(const SdfPayload& rhs) const { + return !(*this < rhs); + } + private: friend inline size_t hash_value(const SdfPayload &p) { return TfHash::Combine( From 1b1acac0763b22f801b835c8b5f3c9a999fd4ad5 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Tue, 27 Jun 2023 09:54:16 -0700 Subject: [PATCH 027/352] Replace `boost::totally_ordered` with explicit operator overloads for `SdfLayerOffset` --- pxr/usd/sdf/layerOffset.h | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/pxr/usd/sdf/layerOffset.h b/pxr/usd/sdf/layerOffset.h index 0903d0040a..c21ad9802b 100644 --- a/pxr/usd/sdf/layerOffset.h +++ b/pxr/usd/sdf/layerOffset.h @@ -29,7 +29,6 @@ #include "pxr/pxr.h" #include "pxr/usd/sdf/api.h" -#include #include #include @@ -58,7 +57,7 @@ class SdfTimeCode; /// GetReferenceLayerOffset() methods (the latter is the referenceLayerOffset /// property in Python) of the SdfPrimSpec class. /// -class SdfLayerOffset : public boost::totally_ordered +class SdfLayerOffset { public: /// \name Constructors @@ -127,11 +126,31 @@ class SdfLayerOffset : public boost::totally_ordered SDF_API bool operator==(const SdfLayerOffset &rhs) const; + /// \sa SdfLayerOffset::operator== + bool operator!=(const SdfLayerOffset &rhs) const { + return !(*this == rhs); + } + /// Returns whether this offset is less than another. The meaning /// of less than is somewhat arbitrary. SDF_API bool operator<(const SdfLayerOffset &rhs) const; + /// \sa SdfLayerOffset::operator< + bool operator>(const SdfLayerOffset& rhs) const { + return rhs < *this; + } + + /// \sa SdfLayerOffset::operator< + bool operator>=(const SdfLayerOffset& rhs) const { + return !(*this < rhs); + } + + /// \sa SdfLayerOffset::operator< + bool operator<=(const SdfLayerOffset& rhs) const { + return !(*this > rhs); + } + /// Composes this with the offset \e rhs, such that the resulting /// offset is equivalent to first applying \e rhs and then \e *this. SDF_API From 25889c439cec28709a4a19c0fe3d8c7ebbe095ca Mon Sep 17 00:00:00 2001 From: Eoin Mcloughlin Date: Thu, 29 Jun 2023 15:42:25 +0100 Subject: [PATCH 028/352] Option to register by family name --- pxr/usdImaging/usdImaging/adapterRegistry.cpp | 95 ++++++++++--------- pxr/usdImaging/usdImaging/plugInfo.json | 6 +- 2 files changed, 54 insertions(+), 47 deletions(-) diff --git a/pxr/usdImaging/usdImaging/adapterRegistry.cpp b/pxr/usdImaging/usdImaging/adapterRegistry.cpp index 7ccec35c74..5e0e9f7c10 100644 --- a/pxr/usdImaging/usdImaging/adapterRegistry.cpp +++ b/pxr/usdImaging/usdImaging/adapterRegistry.cpp @@ -70,6 +70,7 @@ UsdImagingAdapterRegistry::UsdImagingAdapterRegistry() { std::set types; PlugRegistry::GetAllDerivedTypes(*_adapterBaseType, &types); std::vector includeDerivedPrimTypes; + std::vector includeSchemaFamilies; TF_FOR_ALL(typeIt, types) { @@ -111,78 +112,82 @@ UsdImagingAdapterRegistry::UsdImagingAdapterRegistry() { } - JsObject::const_iterator primNameKey = metadata.find("primTypeName"); - JsObject::const_iterator primNamesKey = metadata.find("primTypeNames"); - if (primNameKey == metadata.end() && primNamesKey == metadata.end()) { + JsObject::const_iterator it = metadata.find("primTypeName"); + if (it == metadata.end()) { TF_RUNTIME_ERROR("[PluginDiscover] primTypeName metadata was not " - "present for plugin '%s'\n", + "present for plugin '%s'\n", typeIt->GetTypeName().c_str()); continue; } - - if (primNameKey != metadata.end() && !primNameKey->second.Is() ) { + if (!it->second.Is()) { TF_RUNTIME_ERROR("[PluginDiscover] primTypeName metadata was " - "corrupted for plugin '%s'\n", + "corrupted for plugin '%s'\n", typeIt->GetTypeName().c_str()); continue; } - if (primNamesKey != metadata.end() && (!primNamesKey->second.Is() || - false)) { //!primNamesKey->second.Get().IsArrayOf())) { - TF_RUNTIME_ERROR("[PluginDiscover] primTypeNames metadata was " - "corrupted for plugin '%s'\n", - typeIt->GetTypeName().c_str()); - continue; + + const TfToken primTypeName(it->second.Get()); + + TF_DEBUG(USDIMAGING_PLUGINS).Msg("[PluginDiscover] Plugin discovered " + "'%s' for primType '%s'\n", + typeIt->GetTypeName().c_str(), primTypeName.GetText()); + if (_typeMap.count(primTypeName) != 0) { + TF_CODING_ERROR("[PluginDiscover] A prim adapter for primType '%s' " + "already exists! Overriding prim adapters at runtime is not " + "supported. The last discovered adapter (%s) will be used. The " + "previously discovered adapter (%s) will be discarded.", + primTypeName.GetText(), typeIt->GetTypeName().c_str(), + _typeMap[primTypeName].GetTypeName().c_str()); } + _typeMap[primTypeName] = *typeIt; // Adapters can opt in to being used as the adapter for any derived - // prim types (without adapters of their own) of the targeted prim type + // prim types (without adapters of their own) of the targeted prim type // through additional metadata. - JsObject::const_iterator includeDerivedIt = + JsObject::const_iterator includeDerivedIt = metadata.find("includeDerivedPrimTypes"); - bool includeDerivedTypes = false; if (includeDerivedIt != metadata.end()) { if (!includeDerivedIt->second.Is()) { TF_RUNTIME_ERROR("[PluginDiscover] includeDerivedPrimTypes " "metadata was corrupted for plugin '%s'; not holding " - "bool\n", + "bool\n", typeIt->GetTypeName().c_str()); continue; - } else { - includeDerivedTypes = includeDerivedIt->second.Get(); + } else if (includeDerivedIt->second.Get()){ + includeDerivedPrimTypes.push_back(primTypeName); } } - auto registerPluginByName = [this, &includeDerivedPrimTypes](TfToken const& primTypeName, TfType const& pluginType, bool includeDerivedTypes) { - - TF_DEBUG(USDIMAGING_PLUGINS).Msg("[PluginDiscover] Plugin discovered " - "'%s' for primType '%s'\n", - pluginType.GetTypeName().c_str(), primTypeName.GetText()); - if (_typeMap.count(primTypeName) != 0) { - TF_CODING_ERROR("[PluginDiscover] A prim adapter for primType '%s' " - "already exists! Overriding prim adapters at runtime is not " - "supported. The last discovered adapter (%s) will be used. The " - "previously discovered adapter (%s) will be discarded.", - primTypeName.GetText(), pluginType.GetTypeName().c_str(), - _typeMap[primTypeName].GetTypeName().c_str()); - } - _typeMap[primTypeName] = pluginType; - - if (includeDerivedTypes) { - includeDerivedPrimTypes.push_back(primTypeName); + // Adapters can opt in to being used as the adapter for any prim + // types in the same family + JsObject::const_iterator includeFamilyIt = + metadata.find("includeSchemaFamily"); + if (includeFamilyIt != metadata.end()) { + if (!includeFamilyIt->second.Is()) { + TF_RUNTIME_ERROR("[PluginDiscover] includeSchemaFamily " + "metadata was corrupted for plugin '%s'; not holding " + "bool\n", + typeIt->GetTypeName().c_str()); + continue; + } else if (includeFamilyIt->second.Get()){ + includeSchemaFamilies.push_back(primTypeName); } - }; - - if (primNameKey != metadata.end()) { - registerPluginByName(TfToken(primNameKey->second.Get()), *typeIt, includeDerivedTypes); } + //second.Get(); - for(const JsValue& primName : primNames) { - registerPluginByName(TfToken(primName.GetString()), *typeIt, includeDerivedTypes); + for (const TfToken &familyName : includeSchemaFamilies) { + const TfType adapterType = _typeMap[familyName]; + for (const UsdSchemaRegistry::SchemaInfo* schemaInfo : + UsdSchemaRegistry::FindSchemaInfosInFamily(familyName)) { + if (_typeMap.emplace(schemaInfo->identifier, adapterType).second) { + const TfToken typeName = + UsdSchemaRegistry::GetSchemaTypeName(schemaInfo->type); + TF_DEBUG(USDIMAGING_PLUGINS).Msg( + "[PluginDiscover] Mapping adapter for family '%s' to type " + "'%s'\n", familyName.GetText(), typeName.GetText()); } } - } // Process the types whose derived types can use its adapter after all diff --git a/pxr/usdImaging/usdImaging/plugInfo.json b/pxr/usdImaging/usdImaging/plugInfo.json index 50d67e4b90..3448265797 100644 --- a/pxr/usdImaging/usdImaging/plugInfo.json +++ b/pxr/usdImaging/usdImaging/plugInfo.json @@ -48,7 +48,8 @@ "UsdImagingGprimAdapter" ], "isInternal": true, - "primTypeNames": ["Capsule", "Capsule_1"] + "includeSchemaFamily": true, + "primTypeName": "Capsule" }, "UsdImagingCollectionAPIAdapter" : { "bases": ["UsdImagingAPISchemaAdapter"], @@ -86,7 +87,8 @@ "UsdImagingGprimAdapter" ], "isInternal": true, - "primTypeNames": ["Cylinder", "Cylinder_1"] + "includeSchemaFamily": true, + "primTypeName": "Cylinder" }, "UsdImagingDrawModeAdapter" : { "bases": ["UsdImagingPrimAdapter"], From bdb50263c09a08727ad9bd1463bdd043d10a092b Mon Sep 17 00:00:00 2001 From: Eoin Mcloughlin Date: Fri, 30 Jun 2023 09:13:06 +0100 Subject: [PATCH 029/352] Allow includeSchemaFamily+includeDerivedPrimTypes in adapter registry Allows for registering an adaptor which handles all schemas in a family *and* the schemas which derive from a versioned schema. i.e., an adapter can handle all of: class Cylinder "Cylinder" ( inherits = ... class MyCustomCylinder "MyCustomCylinder" ( inherits = ... class Cylinder_1 "Cylinder_1" ( inherits = ... class MyCustomCylinder2 "MyCustomCylinder2" ( inherits = ... --- pxr/usdImaging/usdImaging/adapterRegistry.cpp | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/pxr/usdImaging/usdImaging/adapterRegistry.cpp b/pxr/usdImaging/usdImaging/adapterRegistry.cpp index 5e0e9f7c10..756ab9e506 100644 --- a/pxr/usdImaging/usdImaging/adapterRegistry.cpp +++ b/pxr/usdImaging/usdImaging/adapterRegistry.cpp @@ -70,7 +70,10 @@ UsdImagingAdapterRegistry::UsdImagingAdapterRegistry() { std::set types; PlugRegistry::GetAllDerivedTypes(*_adapterBaseType, &types); std::vector includeDerivedPrimTypes; - std::vector includeSchemaFamilies; + // Set of schema families we have an adapter for; the boolean indicates + // whether we also need to include types which are derived from another + // type in the same family. + std::vector> includeSchemaFamilies; TF_FOR_ALL(typeIt, types) { @@ -146,6 +149,7 @@ UsdImagingAdapterRegistry::UsdImagingAdapterRegistry() { // through additional metadata. JsObject::const_iterator includeDerivedIt = metadata.find("includeDerivedPrimTypes"); + bool includeDerived = false; if (includeDerivedIt != metadata.end()) { if (!includeDerivedIt->second.Is()) { TF_RUNTIME_ERROR("[PluginDiscover] includeDerivedPrimTypes " @@ -155,6 +159,7 @@ UsdImagingAdapterRegistry::UsdImagingAdapterRegistry() { continue; } else if (includeDerivedIt->second.Get()){ includeDerivedPrimTypes.push_back(primTypeName); + includeDerived = true; } } @@ -170,13 +175,15 @@ UsdImagingAdapterRegistry::UsdImagingAdapterRegistry() { typeIt->GetTypeName().c_str()); continue; } else if (includeFamilyIt->second.Get()){ - includeSchemaFamilies.push_back(primTypeName); + includeSchemaFamilies.push_back( + std::make_pair(primTypeName, includeDerived)); } } - //(pair); + const bool includeDerived = std::get<1>(pair); const TfType adapterType = _typeMap[familyName]; for (const UsdSchemaRegistry::SchemaInfo* schemaInfo : UsdSchemaRegistry::FindSchemaInfosInFamily(familyName)) { @@ -186,6 +193,13 @@ UsdImagingAdapterRegistry::UsdImagingAdapterRegistry() { TF_DEBUG(USDIMAGING_PLUGINS).Msg( "[PluginDiscover] Mapping adapter for family '%s' to type " "'%s'\n", familyName.GetText(), typeName.GetText()); + + if (includeDerived) { + // This plugin has requested including both derived types + // and all types in the family. This will include the + // adaptor for any derived types in the family, too. + includeDerivedPrimTypes.push_back(typeName); + } } } } From a32a506aca4715a48a4d56b8bf1d09906a6dd992 Mon Sep 17 00:00:00 2001 From: Eoin Mcloughlin Date: Fri, 30 Jun 2023 09:37:15 +0100 Subject: [PATCH 030/352] Remove Cone_1 --- pxr/usd/usdGeom/cone_1.cpp | 129 -------------------- pxr/usd/usdGeom/cone_1.h | 171 --------------------------- pxr/usd/usdGeom/generatedSchema.usda | 131 -------------------- pxr/usd/usdGeom/plugInfo.json | 10 -- pxr/usd/usdGeom/schema.usda | 12 -- pxr/usd/usdGeom/tokens.cpp | 2 - pxr/usd/usdGeom/tokens.h | 6 +- pxr/usd/usdGeom/wrapCone_1.cpp | 124 ------------------- pxr/usd/usdGeom/wrapTokens.cpp | 1 - 9 files changed, 1 insertion(+), 585 deletions(-) delete mode 100644 pxr/usd/usdGeom/cone_1.cpp delete mode 100644 pxr/usd/usdGeom/cone_1.h delete mode 100644 pxr/usd/usdGeom/wrapCone_1.cpp diff --git a/pxr/usd/usdGeom/cone_1.cpp b/pxr/usd/usdGeom/cone_1.cpp deleted file mode 100644 index 1d2f106c55..0000000000 --- a/pxr/usd/usdGeom/cone_1.cpp +++ /dev/null @@ -1,129 +0,0 @@ -// -// Copyright 2016 Pixar -// -// Licensed under the Apache License, Version 2.0 (the "Apache License") -// with the following modification; you may not use this file except in -// compliance with the Apache License and the following modification to it: -// Section 6. Trademarks. is deleted and replaced with: -// -// 6. Trademarks. This License does not grant permission to use the trade -// names, trademarks, service marks, or product names of the Licensor -// and its affiliates, except as required to comply with Section 4(c) of -// the License and to reproduce the content of the NOTICE file. -// -// You may obtain a copy of the Apache License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the Apache License with the above modification is -// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the Apache License for the specific -// language governing permissions and limitations under the Apache License. -// -#include "pxr/usd/usdGeom/cone_1.h" -#include "pxr/usd/usd/schemaRegistry.h" -#include "pxr/usd/usd/typed.h" - -#include "pxr/usd/sdf/types.h" -#include "pxr/usd/sdf/assetPath.h" - -PXR_NAMESPACE_OPEN_SCOPE - -// Register the schema with the TfType system. -TF_REGISTRY_FUNCTION(TfType) -{ - TfType::Define >(); - - // Register the usd prim typename as an alias under UsdSchemaBase. This - // enables one to call - // TfType::Find().FindDerivedByName("Cone_1") - // to find TfType, which is how IsA queries are - // answered. - TfType::AddAlias("Cone_1"); -} - -/* virtual */ -UsdGeomCone_1::~UsdGeomCone_1() -{ -} - -/* static */ -UsdGeomCone_1 -UsdGeomCone_1::Get(const UsdStagePtr &stage, const SdfPath &path) -{ - if (!stage) { - TF_CODING_ERROR("Invalid stage"); - return UsdGeomCone_1(); - } - return UsdGeomCone_1(stage->GetPrimAtPath(path)); -} - -/* static */ -UsdGeomCone_1 -UsdGeomCone_1::Define( - const UsdStagePtr &stage, const SdfPath &path) -{ - static TfToken usdPrimTypeName("Cone_1"); - if (!stage) { - TF_CODING_ERROR("Invalid stage"); - return UsdGeomCone_1(); - } - return UsdGeomCone_1( - stage->DefinePrim(path, usdPrimTypeName)); -} - -/* virtual */ -UsdSchemaKind UsdGeomCone_1::_GetSchemaKind() const -{ - return UsdGeomCone_1::schemaKind; -} - -/* static */ -const TfType & -UsdGeomCone_1::_GetStaticTfType() -{ - static TfType tfType = TfType::Find(); - return tfType; -} - -/* static */ -bool -UsdGeomCone_1::_IsTypedSchema() -{ - static bool isTyped = _GetStaticTfType().IsA(); - return isTyped; -} - -/* virtual */ -const TfType & -UsdGeomCone_1::_GetTfType() const -{ - return _GetStaticTfType(); -} - -/*static*/ -const TfTokenVector& -UsdGeomCone_1::GetSchemaAttributeNames(bool includeInherited) -{ - static TfTokenVector localNames; - static TfTokenVector allNames = - UsdGeomCylinder_1::GetSchemaAttributeNames(true); - - if (includeInherited) - return allNames; - else - return localNames; -} - -PXR_NAMESPACE_CLOSE_SCOPE - -// ===================================================================== // -// Feel free to add custom code below this line. It will be preserved by -// the code generator. -// -// Just remember to wrap code in the appropriate delimiters: -// 'PXR_NAMESPACE_OPEN_SCOPE', 'PXR_NAMESPACE_CLOSE_SCOPE'. -// ===================================================================== // -// --(BEGIN CUSTOM CODE)-- diff --git a/pxr/usd/usdGeom/cone_1.h b/pxr/usd/usdGeom/cone_1.h deleted file mode 100644 index c87b45bb74..0000000000 --- a/pxr/usd/usdGeom/cone_1.h +++ /dev/null @@ -1,171 +0,0 @@ -// -// Copyright 2016 Pixar -// -// Licensed under the Apache License, Version 2.0 (the "Apache License") -// with the following modification; you may not use this file except in -// compliance with the Apache License and the following modification to it: -// Section 6. Trademarks. is deleted and replaced with: -// -// 6. Trademarks. This License does not grant permission to use the trade -// names, trademarks, service marks, or product names of the Licensor -// and its affiliates, except as required to comply with Section 4(c) of -// the License and to reproduce the content of the NOTICE file. -// -// You may obtain a copy of the Apache License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the Apache License with the above modification is -// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the Apache License for the specific -// language governing permissions and limitations under the Apache License. -// -#ifndef USDGEOM_GENERATED_CONE_1_H -#define USDGEOM_GENERATED_CONE_1_H - -/// \file usdGeom/cone_1.h - -#include "pxr/pxr.h" -#include "pxr/usd/usdGeom/api.h" -#include "pxr/usd/usdGeom/cylinder_1.h" -#include "pxr/usd/usd/prim.h" -#include "pxr/usd/usd/stage.h" - -#include "pxr/base/vt/value.h" - -#include "pxr/base/gf/vec3d.h" -#include "pxr/base/gf/vec3f.h" -#include "pxr/base/gf/matrix4d.h" - -#include "pxr/base/tf/token.h" -#include "pxr/base/tf/type.h" - -PXR_NAMESPACE_OPEN_SCOPE - -class SdfAssetPath; - -// -------------------------------------------------------------------------- // -// CONE_1 // -// -------------------------------------------------------------------------- // - -/// \class UsdGeomCone_1 -/// -/// Defines a primitive cone, centered at the origin, whose spine -/// is along the specified \em axis, with the apex of the cone pointing -/// in the direction of the positive axis. This is a special-case of a cylinder -/// whose top radius is zero. -/// -/// The fallback values for Cube, Sphere, Cone, and Cylinder are set so that -/// they all pack into the same volume/bounds. -/// -class UsdGeomCone_1 : public UsdGeomCylinder_1 -{ -public: - /// Compile time constant representing what kind of schema this class is. - /// - /// \sa UsdSchemaKind - static const UsdSchemaKind schemaKind = UsdSchemaKind::ConcreteTyped; - - /// Construct a UsdGeomCone_1 on UsdPrim \p prim . - /// Equivalent to UsdGeomCone_1::Get(prim.GetStage(), prim.GetPath()) - /// for a \em valid \p prim, but will not immediately throw an error for - /// an invalid \p prim - explicit UsdGeomCone_1(const UsdPrim& prim=UsdPrim()) - : UsdGeomCylinder_1(prim) - { - } - - /// Construct a UsdGeomCone_1 on the prim held by \p schemaObj . - /// Should be preferred over UsdGeomCone_1(schemaObj.GetPrim()), - /// as it preserves SchemaBase state. - explicit UsdGeomCone_1(const UsdSchemaBase& schemaObj) - : UsdGeomCylinder_1(schemaObj) - { - } - - /// Destructor. - USDGEOM_API - virtual ~UsdGeomCone_1(); - - /// Return a vector of names of all pre-declared attributes for this schema - /// class and all its ancestor classes. Does not include attributes that - /// may be authored by custom/extended methods of the schemas involved. - USDGEOM_API - static const TfTokenVector & - GetSchemaAttributeNames(bool includeInherited=true); - - /// Return a UsdGeomCone_1 holding the prim adhering to this - /// schema at \p path on \p stage. If no prim exists at \p path on - /// \p stage, or if the prim at that path does not adhere to this schema, - /// return an invalid schema object. This is shorthand for the following: - /// - /// \code - /// UsdGeomCone_1(stage->GetPrimAtPath(path)); - /// \endcode - /// - USDGEOM_API - static UsdGeomCone_1 - Get(const UsdStagePtr &stage, const SdfPath &path); - - /// Attempt to ensure a \a UsdPrim adhering to this schema at \p path - /// is defined (according to UsdPrim::IsDefined()) on this stage. - /// - /// If a prim adhering to this schema at \p path is already defined on this - /// stage, return that prim. Otherwise author an \a SdfPrimSpec with - /// \a specifier == \a SdfSpecifierDef and this schema's prim type name for - /// the prim at \p path at the current EditTarget. Author \a SdfPrimSpec s - /// with \p specifier == \a SdfSpecifierDef and empty typeName at the - /// current EditTarget for any nonexistent, or existing but not \a Defined - /// ancestors. - /// - /// The given \a path must be an absolute prim path that does not contain - /// any variant selections. - /// - /// If it is impossible to author any of the necessary PrimSpecs, (for - /// example, in case \a path cannot map to the current UsdEditTarget's - /// namespace) issue an error and return an invalid \a UsdPrim. - /// - /// Note that this method may return a defined prim whose typeName does not - /// specify this schema class, in case a stronger typeName opinion overrides - /// the opinion at the current EditTarget. - /// - USDGEOM_API - static UsdGeomCone_1 - Define(const UsdStagePtr &stage, const SdfPath &path); - -protected: - /// Returns the kind of schema this class belongs to. - /// - /// \sa UsdSchemaKind - USDGEOM_API - UsdSchemaKind _GetSchemaKind() const override; - -private: - // needs to invoke _GetStaticTfType. - friend class UsdSchemaRegistry; - USDGEOM_API - static const TfType &_GetStaticTfType(); - - static bool _IsTypedSchema(); - - // override SchemaBase virtuals. - USDGEOM_API - const TfType &_GetTfType() const override; - -public: - // ===================================================================== // - // Feel free to add custom code below this line, it will be preserved by - // the code generator. - // - // Just remember to: - // - Close the class declaration with }; - // - Close the namespace with PXR_NAMESPACE_CLOSE_SCOPE - // - Close the include guard with #endif - // ===================================================================== // - // --(BEGIN CUSTOM CODE)-- -}; - -PXR_NAMESPACE_CLOSE_SCOPE - -#endif diff --git a/pxr/usd/usdGeom/generatedSchema.usda b/pxr/usd/usdGeom/generatedSchema.usda index 91aedd649c..416ab65588 100644 --- a/pxr/usd/usdGeom/generatedSchema.usda +++ b/pxr/usd/usdGeom/generatedSchema.usda @@ -1610,137 +1610,6 @@ class Capsule_1 "Capsule_1" ( ) } -class Cone_1 "Cone_1" ( - doc = """Defines a primitive cone, centered at the origin, whose spine - is along the specified axis, with the apex of the cone pointing - in the direction of the positive axis. This is a special-case of a cylinder - whose top radius is zero. - - The fallback values for Cube, Sphere, Cone, and Cylinder are set so that - they all pack into the same volume/bounds.""" -) -{ - uniform token axis = "Z" ( - allowedTokens = ["X", "Y", "Z"] - doc = "The axis along which the spine of the cylinder is aligned" - ) - uniform bool doubleSided = 0 ( - doc = """Although some renderers treat all parametric or polygonal - surfaces as if they were effectively laminae with outward-facing - normals on both sides, some renderers derive significant optimizations - by considering these surfaces to have only a single outward side, - typically determined by control-point winding order and/or - orientation. By doing so they can perform \"backface culling\" to - avoid drawing the many polygons of most closed surfaces that face away - from the viewer. - - However, it is often advantageous to model thin objects such as paper - and cloth as single, open surfaces that must be viewable from both - sides, always. Setting a gprim's doubleSided attribute to - \\c true instructs all renderers to disable optimizations such as - backface culling for the gprim, and attempt (not all renderers are able - to do so, but the USD reference GL renderer always will) to provide - forward-facing normals on each side of the surface for lighting - calculations.""" - ) - float3[] extent = [(-1, -1, -1), (1, 1, 1)] ( - doc = """Extent is re-defined on Cylinder only to provide a fallback - value. \\sa UsdGeomGprim::GetExtentAttr().""" - ) - double height = 2 ( - doc = """The size of the cylinder's spine along the specified - axis. If you author height you must also author extent. - - \\sa GetExtentAttr()""" - ) - uniform token orientation = "rightHanded" ( - allowedTokens = ["rightHanded", "leftHanded"] - doc = """Orientation specifies whether the gprim's surface normal - should be computed using the right hand rule, or the left hand rule. - Please see for a deeper explanation and - generalization of orientation to composed scenes with transformation - hierarchies.""" - ) - color3f[] primvars:displayColor ( - doc = '''It is useful to have an "official" colorSet that can be used - as a display or modeling color, even in the absence of any specified - shader for a gprim. DisplayColor serves this role; because it is a - UsdGeomPrimvar, it can also be used as a gprim override for any shader - that consumes a displayColor parameter.''' - ) - float[] primvars:displayOpacity ( - doc = """Companion to displayColor that specifies opacity, broken - out as an independent attribute rather than an rgba color, both so that - each can be independently overridden, and because shaders rarely consume - rgba parameters.""" - ) - rel proxyPrim ( - doc = '''The proxyPrim relationship allows us to link a - prim whose purpose is "render" to its (single target) - purpose="proxy" prim. This is entirely optional, but can be - useful in several scenarios: - - - In a pipeline that does pruning (for complexity management) - by deactivating prims composed from asset references, when we - deactivate a purpose="render" prim, we will be able to discover - and additionally deactivate its associated purpose="proxy" prim, - so that preview renders reflect the pruning accurately. - - - DCC importers may be able to make more aggressive optimizations - for interactive processing and display if they can discover the proxy - for a given render prim. - - - With a little more work, a Hydra-based application will be able - to map a picked proxy prim back to its render geometry for selection. - - \\note It is only valid to author the proxyPrim relationship on - prims whose purpose is "render".''' - ) - uniform token purpose = "default" ( - allowedTokens = ["default", "render", "proxy", "guide"] - doc = """Purpose is a classification of geometry into categories that - can each be independently included or excluded from traversals of prims - on a stage, such as rendering or bounding-box computation traversals. - - See for more detail about how - purpose is computed and used.""" - ) - double radiusBottom = 1 ( - doc = """The radius of the bottom of the cylinder - i.e. the face - point located along the negative axis. If you author - radiusBottom you must also author extent. - - \\sa GetExtentAttr()""" - ) - double radiusTop = 1 ( - doc = """The radius of the top of the cylinder - i.e. the face located - along the positive axis. If you author radiusTop you must also - author extent. - - \\sa GetExtentAttr()""" - ) - token visibility = "inherited" ( - allowedTokens = ["inherited", "invisible"] - doc = '''Visibility is meant to be the simplest form of "pruning" - visibility that is supported by most DCC apps. Visibility is - animatable, allowing a sub-tree of geometry to be present for some - segment of a shot, and absent from others; unlike the action of - deactivating geometry prims, invisible geometry is still - available for inspection, for positioning, for defining volumes, etc.''' - ) - uniform token[] xformOpOrder ( - doc = """Encodes the sequence of transformation operations in the - order in which they should be pushed onto a transform stack while - visiting a UsdStage's prims in a graph traversal that will effect - the desired positioning for this prim and its descendant prims. - - You should rarely, if ever, need to manipulate this attribute directly. - It is managed by the AddXformOp(), SetResetXformStack(), and - SetXformOpOrder(), and consulted by GetOrderedXformOps() and - GetLocalTransformation().""" - ) -} - class Plane "Plane" ( doc = """Defines a primitive plane, centered at the origin, and is defined by a cardinal axis, width, and length. The plane is double-sided by default. diff --git a/pxr/usd/usdGeom/plugInfo.json b/pxr/usd/usdGeom/plugInfo.json index 52d0773768..134f0e2e35 100644 --- a/pxr/usd/usdGeom/plugInfo.json +++ b/pxr/usd/usdGeom/plugInfo.json @@ -128,16 +128,6 @@ "implementsComputeExtent": true, "schemaKind": "concreteTyped" }, - "UsdGeomCone_1": { - "alias": { - "UsdSchemaBase": "Cone_1" - }, - "autoGenerated": true, - "bases": [ - "UsdGeomCylinder_1" - ], - "schemaKind": "concreteTyped" - }, "UsdGeomCube": { "alias": { "UsdSchemaBase": "Cube" diff --git a/pxr/usd/usdGeom/schema.usda b/pxr/usd/usdGeom/schema.usda index 187b7bf65f..d3b87185e7 100644 --- a/pxr/usd/usdGeom/schema.usda +++ b/pxr/usd/usdGeom/schema.usda @@ -897,18 +897,6 @@ class Capsule_1 "Capsule_1" ( ) } -class Cone_1 "Cone_1" ( - inherits = - doc = """Defines a primitive cone, centered at the origin, whose spine - is along the specified \\em axis, with the apex of the cone pointing - in the direction of the positive axis. This is a special-case of a cylinder - whose top radius is zero. - - The fallback values for Cube, Sphere, Cone, and Cylinder are set so that - they all pack into the same volume/bounds.""" -) { -} - class Plane "Plane" ( inherits = doc = """Defines a primitive plane, centered at the origin, and is defined by diff --git a/pxr/usd/usdGeom/tokens.cpp b/pxr/usd/usdGeom/tokens.cpp index e3ae1a2301..8d7457588b 100644 --- a/pxr/usd/usdGeom/tokens.cpp +++ b/pxr/usd/usdGeom/tokens.cpp @@ -196,7 +196,6 @@ UsdGeomTokensType::UsdGeomTokensType() : Capsule("Capsule", TfToken::Immortal), Capsule_1("Capsule_1", TfToken::Immortal), Cone("Cone", TfToken::Immortal), - Cone_1("Cone_1", TfToken::Immortal), Cube("Cube", TfToken::Immortal), Curves("Curves", TfToken::Immortal), Cylinder("Cylinder", TfToken::Immortal), @@ -392,7 +391,6 @@ UsdGeomTokensType::UsdGeomTokensType() : Capsule, Capsule_1, Cone, - Cone_1, Cube, Curves, Cylinder, diff --git a/pxr/usd/usdGeom/tokens.h b/pxr/usd/usdGeom/tokens.h index 7ed2c23159..a8843d21df 100644 --- a/pxr/usd/usdGeom/tokens.h +++ b/pxr/usd/usdGeom/tokens.h @@ -740,12 +740,8 @@ struct UsdGeomTokensType { const TfToken Capsule_1; /// \brief "Cone" /// - /// Schema identifer and family for UsdGeomCone, Schema family for UsdGeomCone_1 + /// Schema identifer and family for UsdGeomCone const TfToken Cone; - /// \brief "Cone_1" - /// - /// Schema identifer for UsdGeomCone_1 - const TfToken Cone_1; /// \brief "Cube" /// /// Schema identifer and family for UsdGeomCube diff --git a/pxr/usd/usdGeom/wrapCone_1.cpp b/pxr/usd/usdGeom/wrapCone_1.cpp deleted file mode 100644 index 31eb0b90a6..0000000000 --- a/pxr/usd/usdGeom/wrapCone_1.cpp +++ /dev/null @@ -1,124 +0,0 @@ -// -// Copyright 2016 Pixar -// -// Licensed under the Apache License, Version 2.0 (the "Apache License") -// with the following modification; you may not use this file except in -// compliance with the Apache License and the following modification to it: -// Section 6. Trademarks. is deleted and replaced with: -// -// 6. Trademarks. This License does not grant permission to use the trade -// names, trademarks, service marks, or product names of the Licensor -// and its affiliates, except as required to comply with Section 4(c) of -// the License and to reproduce the content of the NOTICE file. -// -// You may obtain a copy of the Apache License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the Apache License with the above modification is -// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the Apache License for the specific -// language governing permissions and limitations under the Apache License. -// -#include "pxr/usd/usdGeom/cone_1.h" -#include "pxr/usd/usd/schemaBase.h" - -#include "pxr/usd/sdf/primSpec.h" - -#include "pxr/usd/usd/pyConversions.h" -#include "pxr/base/tf/pyContainerConversions.h" -#include "pxr/base/tf/pyResultConversions.h" -#include "pxr/base/tf/pyUtils.h" -#include "pxr/base/tf/wrapTypeHelpers.h" - -#include - -#include - -using namespace boost::python; - -PXR_NAMESPACE_USING_DIRECTIVE - -namespace { - -#define WRAP_CUSTOM \ - template static void _CustomWrapCode(Cls &_class) - -// fwd decl. -WRAP_CUSTOM; - - -static std::string -_Repr(const UsdGeomCone_1 &self) -{ - std::string primRepr = TfPyRepr(self.GetPrim()); - return TfStringPrintf( - "UsdGeom.Cone_1(%s)", - primRepr.c_str()); -} - -} // anonymous namespace - -void wrapUsdGeomCone_1() -{ - typedef UsdGeomCone_1 This; - - class_ > - cls("Cone_1"); - - cls - .def(init(arg("prim"))) - .def(init(arg("schemaObj"))) - .def(TfTypePythonClass()) - - .def("Get", &This::Get, (arg("stage"), arg("path"))) - .staticmethod("Get") - - .def("Define", &This::Define, (arg("stage"), arg("path"))) - .staticmethod("Define") - - .def("GetSchemaAttributeNames", - &This::GetSchemaAttributeNames, - arg("includeInherited")=true, - return_value_policy()) - .staticmethod("GetSchemaAttributeNames") - - .def("_GetStaticTfType", (TfType const &(*)()) TfType::Find, - return_value_policy()) - .staticmethod("_GetStaticTfType") - - .def(!self) - - - .def("__repr__", ::_Repr) - ; - - _CustomWrapCode(cls); -} - -// ===================================================================== // -// Feel free to add custom code below this line, it will be preserved by -// the code generator. The entry point for your custom code should look -// minimally like the following: -// -// WRAP_CUSTOM { -// _class -// .def("MyCustomMethod", ...) -// ; -// } -// -// Of course any other ancillary or support code may be provided. -// -// Just remember to wrap code in the appropriate delimiters: -// 'namespace {', '}'. -// -// ===================================================================== // -// --(BEGIN CUSTOM CODE)-- - -namespace { - -WRAP_CUSTOM { -} - -} diff --git a/pxr/usd/usdGeom/wrapTokens.cpp b/pxr/usd/usdGeom/wrapTokens.cpp index 1c6bf277dd..cfb12556f4 100644 --- a/pxr/usd/usdGeom/wrapTokens.cpp +++ b/pxr/usd/usdGeom/wrapTokens.cpp @@ -234,7 +234,6 @@ void wrapUsdGeomTokens() _AddToken(cls, "Capsule", UsdGeomTokens->Capsule); _AddToken(cls, "Capsule_1", UsdGeomTokens->Capsule_1); _AddToken(cls, "Cone", UsdGeomTokens->Cone); - _AddToken(cls, "Cone_1", UsdGeomTokens->Cone_1); _AddToken(cls, "Cube", UsdGeomTokens->Cube); _AddToken(cls, "Curves", UsdGeomTokens->Curves); _AddToken(cls, "Cylinder", UsdGeomTokens->Cylinder); From b7076b4375f2af7f2129cff6d2ee4cbabc6001ee Mon Sep 17 00:00:00 2001 From: Eoin Mcloughlin Date: Fri, 30 Jun 2023 14:27:07 +0100 Subject: [PATCH 031/352] Remove old capsule tesselation code --- pxr/imaging/geomUtil/capsuleMeshGenerator.cpp | 62 +++++++++++++------ pxr/imaging/geomUtil/capsuleMeshGenerator.h | 17 +---- pxr/usdImaging/usdImaging/capsuleAdapter.cpp | 42 ++----------- 3 files changed, 51 insertions(+), 70 deletions(-) diff --git a/pxr/imaging/geomUtil/capsuleMeshGenerator.cpp b/pxr/imaging/geomUtil/capsuleMeshGenerator.cpp index 8c216ec7dc..6ef34dfb4f 100644 --- a/pxr/imaging/geomUtil/capsuleMeshGenerator.cpp +++ b/pxr/imaging/geomUtil/capsuleMeshGenerator.cpp @@ -81,10 +81,6 @@ GeomUtilCapsuleMeshGenerator::_GeneratePointsImpl( const typename PointType::ScalarType bottomRadius, const typename PointType::ScalarType topRadius, const typename PointType::ScalarType height, - const typename PointType::ScalarType bottomCapHeight, - const typename PointType::ScalarType bottomCapLatitudeRange, - const typename PointType::ScalarType topCapHeight, - const typename PointType::ScalarType topCapLatitudeRange, const typename PointType::ScalarType sweepDegrees, const _PointWriter& ptWriter) { @@ -112,18 +108,50 @@ GeomUtilCapsuleMeshGenerator::_GeneratePointsImpl( ringXY[radIdx][1] = sin(longAngle); } + ScalarType latitudeRange = 0.0; + if (bottomRadius != topRadius) + { + // USD describes that the height excludes the sphere radii, so we have + // two spheres located at +height/2 and -height/2. We need to find a + // plane tangent to both spheres to generate a smooth smooth interface + // between the different radii. The angle of this tangent from the axis + // which will become the latitudeRange for the two spheres. + + // First, construct two circles: + // * One at (0,0), of radius height * 0.5 (i.e. the centers of the caps + // are on this surface) + // * One at (-height,0) of radius rBottom - rTop + // Then, find the intersection between those two circles = q. + // The vector |q - (-height, 0)| is perpendicular to the tangent + ScalarType rA = bottomRadius - topRadius; + ScalarType rB = height * 0.5; + ScalarType a = height * -0.5; + PointType q(0, 0, 0); + q[0] = (rB * rB - rA * rA + a * a) / (2 * a); + // bottomRadius) + { + latitudeRange *= -1; + } + } + // Bottom point: - ptWriter.Write(PointType(0.0, 0.0, -(bottomCapHeight + (0.5 * height)))); + ptWriter.Write(PointType(0.0, 0.0, -(bottomRadius + (0.5 * height)))); // Bottom hemisphere latitude rings: for (size_t axIdx = 1; axIdx < (numCapAxial + 1); ++axIdx) { - // Latitude range: (-0.5pi, topCapLatitudeRange] + // Latitude range: (-0.5pi, latitudeRange] const ScalarType latAngle = GfLerp(double(axIdx) / double(numCapAxial), - ScalarType(-0.5 * M_PI), topCapLatitudeRange); + ScalarType(-0.5 * M_PI), latitudeRange); const ScalarType radScale = cos(latAngle); const ScalarType latitude = - -(0.5 * height) + (bottomCapHeight * sin(latAngle)); + -(0.5 * height) + (bottomRadius * sin(latAngle)); for (size_t radIdx = 0; radIdx < numRadialPoints; ++radIdx) { ptWriter.Write( @@ -135,13 +163,13 @@ GeomUtilCapsuleMeshGenerator::_GeneratePointsImpl( // Top hemisphere latitude rings: for (size_t axIdx = 0; axIdx < numCapAxial; ++axIdx) { - // Latitude range: [bottomCapLatitudeRange, 0.5pi) + // Latitude range: [latitudeRange, 0.5pi) const ScalarType latAngle = GfLerp(double(axIdx) / double(numCapAxial), - bottomCapLatitudeRange, ScalarType(0.5 * M_PI)); + latitudeRange, ScalarType(0.5 * M_PI)); const ScalarType radScale = cos(latAngle); const ScalarType latitude = - (0.5 * height) + (topCapHeight * sin(latAngle)); + (0.5 * height) + (topRadius * sin(latAngle)); for (size_t radIdx = 0; radIdx < numRadialPoints; ++radIdx) { ptWriter.Write(PointType(radScale * topRadius * ringXY[radIdx][0], @@ -151,21 +179,19 @@ GeomUtilCapsuleMeshGenerator::_GeneratePointsImpl( } // Top point: - ptWriter.Write(PointType(0.0, 0.0, topCapHeight + (0.5 * height))); + ptWriter.Write(PointType(0.0, 0.0, topRadius + (0.5 * height))); } // Force-instantiate _GeneratePointsImpl for the supported point types. Only // these instantiations will ever be needed due to the SFINAE machinery on the // calling method template (the public GeneratePoints, in the header). template GEOMUTIL_API void GeomUtilCapsuleMeshGenerator::_GeneratePointsImpl( - const size_t, const size_t, const float, const float, - const float, const float, const float, const float, const float, const float, - const GeomUtilCapsuleMeshGenerator::_PointWriter&); + const size_t, const size_t, const float, const float, const float, + const float, const GeomUtilCapsuleMeshGenerator::_PointWriter&); template GEOMUTIL_API void GeomUtilCapsuleMeshGenerator::_GeneratePointsImpl( - const size_t, const size_t, const double, const double, - const double, const double, const double, const double, const double, const double, - const GeomUtilCapsuleMeshGenerator::_PointWriter&); + const size_t, const size_t, const double, const double, const double, + const double, const GeomUtilCapsuleMeshGenerator::_PointWriter&); PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/imaging/geomUtil/capsuleMeshGenerator.h b/pxr/imaging/geomUtil/capsuleMeshGenerator.h index 9a1883f427..a2e933e02b 100644 --- a/pxr/imaging/geomUtil/capsuleMeshGenerator.h +++ b/pxr/imaging/geomUtil/capsuleMeshGenerator.h @@ -102,12 +102,7 @@ class GeomUtilCapsuleMeshGenerator final GeneratePoints(iter, numRadial, numCapAxial, /* bottomRadius = */ radius, /* topRadius = */ radius, - height, - /* bottomCapHeight = */ radius, - /* bottomCapLatitude = */ ScalarType(0), - /* topCapHeight = */ radius, - /* topCapLatitude = */ ScalarType(0), - sweep, framePtr); + height, sweep, framePtr); } template::value_type; _GeneratePointsImpl(numRadial, numCapAxial, bottomRadius, topRadius, - height, bottomCapHeight, bottomLatitudeRange, topCapHeight, topLatitudeRange, sweepDegrees, + height, sweepDegrees, framePtr ? _PointWriter(iter, framePtr) : _PointWriter(iter)); } @@ -147,10 +138,6 @@ class GeomUtilCapsuleMeshGenerator final const typename PointType::ScalarType bottomRadius, const typename PointType::ScalarType topRadius, const typename PointType::ScalarType height, - const typename PointType::ScalarType bottomCapHeight, - const typename PointType::ScalarType bottomLatitudeRange, - const typename PointType::ScalarType topCapHeight, - const typename PointType::ScalarType topLatitudeRange, const typename PointType::ScalarType sweep, const _PointWriter& ptWriter); }; diff --git a/pxr/usdImaging/usdImaging/capsuleAdapter.cpp b/pxr/usdImaging/usdImaging/capsuleAdapter.cpp index 532a422561..184c06b18f 100644 --- a/pxr/usdImaging/usdImaging/capsuleAdapter.cpp +++ b/pxr/usdImaging/usdImaging/capsuleAdapter.cpp @@ -227,8 +227,10 @@ UsdImagingCapsuleAdapter::GetPoints(UsdPrim const& prim, double radiusBottom = 0.5; double radiusTop = 0.5; TfToken axis = UsdGeomTokens->z; - extractCapsuleParameters(prim, time, height, radiusBottom, radiusTop, axis); - extractCapsuleParameters(prim, time, height, radiusBottom, radiusTop, axis); + extractCapsuleParameters(prim, time, height, radiusBottom, + radiusTop, axis); + extractCapsuleParameters(prim, time, height, radiusBottom, + radiusTop, axis); // The capsule point generator computes points such that the "rings" of the // capsule lie on a plane parallel to the XY plane, with the Z-axis being @@ -239,35 +241,6 @@ UsdImagingCapsuleAdapter::GetPoints(UsdPrim const& prim, const size_t numPoints = GeomUtilCapsuleMeshGenerator::ComputeNumPoints(numRadial, numCapAxial); - double latitudeRange = 0.0; - if (radiusBottom != radiusTop) - { - // USD describes that the height excludes the sphere radii, so we have two spheres - // located at +height/2 and -height/2. We need to find a plane tangent to both spheres - // to generate a smooth smooth interface between the different radii. The angle of this - // tangent from the axis which will become the latitudeRange for the two spheres. - - // First, construct two circles: - // * One at (0,0), of radius height * 0.5 (i.e. the centers of the caps are on this surface) - // * One at (-height,0) of radius rBottom - rTop - // Then, find the intersection between those two circles = q. - // The vector |q - (-height, 0)| is perpendicular to the tangent - double rA = radiusBottom - radiusTop; - double rB = height * 0.5; - double a = height * -0.5; - GfVec2d q(0, 0); - q[0] = (rB * rB - rA * rA + a * a) / (2 * a); - // radiusBottom) - { - latitudeRange *= -1; - } - } - VtVec3fArray points(numPoints); const double sweep = 360; GeomUtilCapsuleMeshGenerator::GeneratePoints( @@ -277,13 +250,8 @@ UsdImagingCapsuleAdapter::GetPoints(UsdPrim const& prim, radiusBottom, radiusTop, height, - radiusBottom, - latitudeRange, - radiusTop, - latitudeRange, sweep, - &basis - ); + &basis); return VtValue(points); } From 1370773fd065ae53790710df6d321211403ba722 Mon Sep 17 00:00:00 2001 From: Eoin Mcloughlin Date: Fri, 30 Jun 2023 15:00:22 +0100 Subject: [PATCH 032/352] Tidy up+comment angle calc; use same coordinate system as surrounding code --- pxr/imaging/geomUtil/capsuleMeshGenerator.cpp | 45 +++++++++---------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/pxr/imaging/geomUtil/capsuleMeshGenerator.cpp b/pxr/imaging/geomUtil/capsuleMeshGenerator.cpp index 6ef34dfb4f..a2e83468a9 100644 --- a/pxr/imaging/geomUtil/capsuleMeshGenerator.cpp +++ b/pxr/imaging/geomUtil/capsuleMeshGenerator.cpp @@ -111,29 +111,28 @@ GeomUtilCapsuleMeshGenerator::_GeneratePointsImpl( ScalarType latitudeRange = 0.0; if (bottomRadius != topRadius) { - // USD describes that the height excludes the sphere radii, so we have - // two spheres located at +height/2 and -height/2. We need to find a - // plane tangent to both spheres to generate a smooth smooth interface - // between the different radii. The angle of this tangent from the axis - // which will become the latitudeRange for the two spheres. - - // First, construct two circles: - // * One at (0,0), of radius height * 0.5 (i.e. the centers of the caps - // are on this surface) - // * One at (-height,0) of radius rBottom - rTop - // Then, find the intersection between those two circles = q. - // The vector |q - (-height, 0)| is perpendicular to the tangent - ScalarType rA = bottomRadius - topRadius; - ScalarType rB = height * 0.5; - ScalarType a = height * -0.5; - PointType q(0, 0, 0); - q[0] = (rB * rB - rA * rA + a * a) / (2 * a); - // topR. Flip the angle if incorrect: if (topRadius > bottomRadius) { latitudeRange *= -1; From 7ce782410dcb2c1ff690d7741e1237b43c7c6bce Mon Sep 17 00:00:00 2001 From: Mark Tucker Date: Fri, 30 Jun 2023 12:28:07 -0400 Subject: [PATCH 033/352] Support asset primvars on native instances. --- pxr/usdImaging/usdImaging/instanceAdapter.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pxr/usdImaging/usdImaging/instanceAdapter.cpp b/pxr/usdImaging/usdImaging/instanceAdapter.cpp index 310bafb361..cec697285c 100644 --- a/pxr/usdImaging/usdImaging/instanceAdapter.cpp +++ b/pxr/usdImaging/usdImaging/instanceAdapter.cpp @@ -1129,6 +1129,9 @@ UsdImagingInstanceAdapter::_ComputeInheritedPrimvar(UsdPrim const& instancer, } else if (dv.IsHolding()) { return _ComputeInheritedPrimvar( instancer, primvarName, result, time); + } else if (dv.IsHolding()) { + return _ComputeInheritedPrimvar( + instancer, primvarName, result, time); } else { TF_WARN("Native instancing: unrecognized inherited primvar type '%s' " "for primvar '%s'", From 969cd7dc1089264cd0a6bb214a222e7db420b513 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Fri, 30 Jun 2023 22:23:54 -0700 Subject: [PATCH 034/352] Revise change to better preserve object layout --- pxr/base/tf/denseHashMap.h | 66 +++++++++++++++++++++++--------------- pxr/base/tf/denseHashSet.h | 66 +++++++++++++++++++++++--------------- 2 files changed, 81 insertions(+), 51 deletions(-) diff --git a/pxr/base/tf/denseHashMap.h b/pxr/base/tf/denseHashMap.h index a42ee4b3e5..ea836b0486 100644 --- a/pxr/base/tf/denseHashMap.h +++ b/pxr/base/tf/denseHashMap.h @@ -56,12 +56,7 @@ template < unsigned Threshold = 128 > -class ARCH_EMPTY_BASES TfDenseHashMap : - // Since sizeof(EqualKey) == 0 and sizeof(HashFn) == 0 in many cases - // we use the empty base optimization to not pay a size penalty. - // In C++20, explore using [[no_unique_address]] as an alternative - // way to get this optimization. - private HashFn, private EqualKey +class TfDenseHashMap { public: @@ -224,9 +219,11 @@ class ARCH_EMPTY_BASES TfDenseHashMap : /// explicit TfDenseHashMap( const HashFn &hashFn = HashFn(), - const EqualKey &equalKey = EqualKey()) : - HashFn(hashFn), - EqualKey(equalKey) {} + const EqualKey &equalKey = EqualKey()) + { + _hash() = hashFn; + _equ() = equalKey; + } /// Construct with range. /// @@ -244,11 +241,11 @@ class ARCH_EMPTY_BASES TfDenseHashMap : /// Copy Ctor. /// TfDenseHashMap(const TfDenseHashMap &rhs) - : HashFn(rhs), - EqualKey(rhs), - _vector(rhs._vector), - _h(rhs._h ? std::make_unique<_HashMap>(*rhs._h) : nullptr) {} - + : _storage(rhs._storage) { + if (rhs._h) { + _h = std::make_unique<_HashMap>(*rhs._h); + } + } /// Move Ctor. /// TfDenseHashMap(TfDenseHashMap &&rhs) = default; @@ -310,10 +307,7 @@ class ARCH_EMPTY_BASES TfDenseHashMap : /// Swaps the contents of two maps. /// void swap(TfDenseHashMap &rhs) { - using std::swap; - swap(_hash(), rhs._hash()); - swap(_equ(), rhs._equ()); - _vector.swap(rhs._vector); + _storage.swap(rhs._storage); _h.swap(rhs._h); } @@ -548,32 +542,32 @@ class ARCH_EMPTY_BASES TfDenseHashMap : // Helper to access the storage vector. _Vector &_vec() { - return _vector; + return _storage.vector; } // Helper to access the hash functor. HashFn &_hash() { - return *this; + return _storage; } // Helper to access the equality functor. EqualKey &_equ() { - return *this; + return _storage; } // Helper to access the storage vector. const _Vector &_vec() const { - return _vector; + return _storage.vector; } // Helper to access the hash functor. const HashFn &_hash() const { - return *this; + return _storage; } // Helper to access the equality functor. const EqualKey &_equ() const { - return *this; + return _storage; } // Helper to linear-search the vector for a key. @@ -617,8 +611,28 @@ class ARCH_EMPTY_BASES TfDenseHashMap : } } - // Vector holding all elements - _Vector _vector; + // Since sizeof(EqualKey) == 0 and sizeof(HashFn) == 0 in many cases + // we use the empty base optimization to not pay a size penalty. + // In C++20, explore using [[no_unique_address]] as an alternative + // way to get this optimization. + struct ARCH_EMPTY_BASES _CompressedStorage : + private EqualKey, private HashFn { + static_assert(!std::is_same::value, + "EqualKey and HashFn must be distinct types."); + _CompressedStorage() = default; + _CompressedStorage(const EqualKey& equalKey, const HashFn& hashFn) + : EqualKey(equalKey), HashFn(hashFn) {} + + void swap(_CompressedStorage& other) { + using std::swap; + vector.swap(other.vector); + swap(static_cast(*this), static_cast(other)); + swap(static_cast(*this), static_cast(other)); + } + _Vector vector; + friend class TfDenseHashMap; + }; + _CompressedStorage _storage; // Optional hash map that maps from keys to vector indices. std::unique_ptr<_HashMap> _h; diff --git a/pxr/base/tf/denseHashSet.h b/pxr/base/tf/denseHashSet.h index ffc03e1b8b..dfb3b3fdbb 100644 --- a/pxr/base/tf/denseHashSet.h +++ b/pxr/base/tf/denseHashSet.h @@ -54,12 +54,7 @@ template < class EqualElement = std::equal_to, unsigned Threshold = 128 > -class ARCH_EMPTY_BASES TfDenseHashSet : - // Since sizeof(EqualElement) == 0 and sizeof(HashFn) == 0 in many cases - // we use the empty base optimization to not pay a size penalty. - // In C++20, explore using [[no_unique_address]] as an alternative - // way to get this optimization. - private HashFn, private EqualElement +class TfDenseHashSet { public: @@ -96,17 +91,20 @@ class ARCH_EMPTY_BASES TfDenseHashSet : /// explicit TfDenseHashSet( const HashFn &hashFn = HashFn(), - const EqualElement &equalElement = EqualElement()) : - HashFn(hashFn), - EqualElement(equalElement) {} + const EqualElement &equalElement = EqualElement()) + { + _hash() = hashFn; + _equ() = equalElement; + } /// Copy Ctor. /// TfDenseHashSet(const TfDenseHashSet &rhs) - : HashFn(rhs), - EqualElement(rhs), - _vector(rhs._vector), - _h(rhs._h ? std::make_unique<_HashMap>(*rhs._h) : nullptr) {} + : _storage(rhs._storage) { + if (rhs._h) { + _h = std::make_unique<_HashMap>(*rhs._h); + } + } /// Move Ctor. /// @@ -179,10 +177,7 @@ class ARCH_EMPTY_BASES TfDenseHashSet : /// Swaps the contents of two sets. /// void swap(TfDenseHashSet &rhs) { - using std::swap; - swap(_hash(), rhs._hash()); - swap(_equ(), rhs._equ()); - _vector.swap(rhs._vector); + _storage.swap(rhs._storage); _h.swap(rhs._h); } @@ -393,32 +388,32 @@ class ARCH_EMPTY_BASES TfDenseHashSet : // Helper to access the storage vector. _Vector &_vec() { - return _vector; + return _storage.vector; } // Helper to access the hash functor. HashFn &_hash() { - return *this; + return _storage; } // Helper to access the equality functor. EqualElement &_equ() { - return *this; + return _storage; } // Helper to access the storage vector. const _Vector &_vec() const { - return _vector; + return _storage.vector; } // Helper to access the hash functor. const HashFn &_hash() const { - return *this; + return _storage; } // Helper to access the equality functor. const EqualElement &_equ() const { - return *this; + return _storage; } // Helper to create the acceleration table if size dictates. @@ -438,8 +433,29 @@ class ARCH_EMPTY_BASES TfDenseHashSet : } } - // Vector holding all elements - _Vector _vector; + // Since sizeof(EqualElement) == 0 and sizeof(HashFn) == 0 in many cases + // we use the empty base optimization to not pay a size penalty. + // In C++20, explore using [[no_unique_address]] as an alternative + // way to get this optimization. + struct ARCH_EMPTY_BASES _CompressedStorage : + private EqualElement, private HashFn { + static_assert(!std::is_same::value, + "EqualElement and HashFn must be distinct types."); + _CompressedStorage() = default; + _CompressedStorage(const EqualElement& equal, const HashFn& hashFn) + : EqualElement(equal), HashFn(hashFn) {} + + void swap(_CompressedStorage& other) { + using std::swap; + vector.swap(other.vector); + swap(static_cast(*this), + static_cast(other)); + swap(static_cast(*this), static_cast(other)); + } + _Vector vector; + friend class TfDenseHashSet; + }; + _CompressedStorage _storage; // Optional hash map that maps from keys to vector indices. std::unique_ptr<_HashMap> _h; From 358b91a901fa0a029f8757d6bd49c84ec9927bba Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Mon, 26 Jun 2023 15:52:24 -0700 Subject: [PATCH 035/352] Replace `boost::totally_ordered` with explicit operator overloads for `SdfMapEditProxy` --- pxr/usd/sdf/mapEditProxy.h | 49 +++++++++++++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/pxr/usd/sdf/mapEditProxy.h b/pxr/usd/sdf/mapEditProxy.h index ddc98ae4a7..433f566776 100644 --- a/pxr/usd/sdf/mapEditProxy.h +++ b/pxr/usd/sdf/mapEditProxy.h @@ -38,7 +38,6 @@ #include "pxr/base/tf/mallocTag.h" #include #include -#include #include #include @@ -117,8 +116,7 @@ class SdfIdentityMapEditProxyValuePolicy { /// \sa SdfIdentityMapEditProxyValuePolicy /// template > -class SdfMapEditProxy : - boost::totally_ordered, T> { +class SdfMapEditProxy { public: typedef T Type; typedef _ValuePolicy ValuePolicy; @@ -578,6 +576,21 @@ class SdfMapEditProxy : return _Validate() ? _CompareEqual(other) : false; } + bool operator!=(const Type& other) const + { + return !(*this == other); + } + + friend bool operator==(const Type& lhs, const SdfMapEditProxy& rhs) + { + return rhs == lhs; + } + + friend bool operator!=(const Type& lhs, const SdfMapEditProxy& rhs) + { + return rhs != lhs; + } + bool operator<(const Type& other) const { return _Validate() ? _Compare(other) < 0 : false; @@ -588,6 +601,36 @@ class SdfMapEditProxy : return _Validate() ? _Compare(other) > 0 : false; } + bool operator>=(const Type& other) const + { + return !(*this < other); + } + + bool operator<=(const Type& other) const + { + return !(*this > other); + } + + friend bool operator<(const Type& lhs, const SdfMapEditProxy& rhs) + { + return rhs > lhs; + } + + friend bool operator>(const Type& lhs, const SdfMapEditProxy& rhs) + { + return rhs < lhs; + } + + friend bool operator<=(const Type& lhs, const SdfMapEditProxy& rhs) + { + return rhs >= lhs; + } + + friend bool operator>=(const Type& lhs, const SdfMapEditProxy& rhs) + { + return rhs <= lhs; + } + template bool operator==(const SdfMapEditProxy& other) const { From 22ab64bbd55e7f98893aff4f1d33a2c7a37f8275 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Fri, 23 Jun 2023 10:20:42 -0700 Subject: [PATCH 036/352] Replace `boost::totally_ordered` with explicit operator overloads for `SdfHandle` --- pxr/usd/sdf/declareHandles.h | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/pxr/usd/sdf/declareHandles.h b/pxr/usd/sdf/declareHandles.h index 377697a598..ce91a78575 100644 --- a/pxr/usd/sdf/declareHandles.h +++ b/pxr/usd/sdf/declareHandles.h @@ -39,7 +39,6 @@ #include #include #include -#include PXR_NAMESPACE_OPEN_SCOPE @@ -60,7 +59,7 @@ typedef boost::intrusive_ptr Sdf_IdentityRefPtr; /// be expired. /// template -class SdfHandle : private boost::totally_ordered > { +class SdfHandle { public: typedef SdfHandle This; typedef T SpecType; @@ -135,6 +134,12 @@ class SdfHandle : private boost::totally_ordered > { return _spec == other._spec; } + /// \sa SdfHandle::operator== + bool operator!=(const SdfHandle& other) const + { + return !(*this == other); + } + /// Arranges handles in an arbitrary strict weak ordering. Note that /// this ordering is stable across path changes. template @@ -143,6 +148,24 @@ class SdfHandle : private boost::totally_ordered > { return _spec < other._spec; } + /// \sa SdfHandle::operator< + bool operator>(const SdfHandle& other) const + { + return other < *this; + } + + /// \sa SdfHandle::operator< + bool operator<=(const SdfHandle& other) const + { + return !(other < *this); + } + + /// \sa SdfHandle::operator< + bool operator>=(const SdfHandle& other) const + { + return !(*this < other); + } + /// Hash. friend size_t hash_value(const This &x) { return hash_value(x._spec); From fbd4558ab573ebe18ae37a15367d88b55bafd29d Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Thu, 29 Jun 2023 14:28:43 -0700 Subject: [PATCH 037/352] Convert methods to friend functions --- pxr/usd/sdf/declareHandles.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pxr/usd/sdf/declareHandles.h b/pxr/usd/sdf/declareHandles.h index ce91a78575..7898cb3105 100644 --- a/pxr/usd/sdf/declareHandles.h +++ b/pxr/usd/sdf/declareHandles.h @@ -135,9 +135,9 @@ class SdfHandle { } /// \sa SdfHandle::operator== - bool operator!=(const SdfHandle& other) const + friend bool operator!=(const SdfHandle& lhs, const SdfHandle& rhs) { - return !(*this == other); + return !(lhs == rhs); } /// Arranges handles in an arbitrary strict weak ordering. Note that @@ -149,21 +149,21 @@ class SdfHandle { } /// \sa SdfHandle::operator< - bool operator>(const SdfHandle& other) const + friend bool operator>(const SdfHandle& lhs, const SdfHandle& rhs) { - return other < *this; + return rhs < lhs; } /// \sa SdfHandle::operator< - bool operator<=(const SdfHandle& other) const + friend bool operator<=(const SdfHandle& lhs, const SdfHandle& rhs) { - return !(other < *this); + return !(rhs < lhs); } /// \sa SdfHandle::operator< - bool operator>=(const SdfHandle& other) const + friend bool operator>=(const SdfHandle& lhs, const SdfHandle& rhs) { - return !(*this < other); + return !(lhs < rhs); } /// Hash. From 00e7887586ddaf91bfad35f9aa9f7093e047e3f8 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Thu, 26 Jan 2023 20:45:01 -0800 Subject: [PATCH 038/352] Replace boost traits and mpl with STL traits in pxr/base/vt --- pxr/base/vt/testenv/testVtCpp.cpp | 11 +++++++++++ pxr/base/vt/traits.h | 6 +++--- pxr/base/vt/value.h | 14 ++++++-------- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/pxr/base/vt/testenv/testVtCpp.cpp b/pxr/base/vt/testenv/testVtCpp.cpp index f1528b60bf..2044333d5c 100644 --- a/pxr/base/vt/testenv/testVtCpp.cpp +++ b/pxr/base/vt/testenv/testVtCpp.cpp @@ -1854,6 +1854,16 @@ testKnownValueTypeIndex() TF_AXIOM(!VtIsKnownValueType()); } +static void testVtCheapToCopy() { + static_assert(VtValueTypeHasCheapCopy::value, ""); + static_assert(VtValueTypeHasCheapCopy::value, ""); + static_assert(VtValueTypeHasCheapCopy::value, ""); + static_assert(VtValueTypeHasCheapCopy::value, ""); + static_assert(!VtValueTypeHasCheapCopy::value, ""); + static_assert(!VtValueTypeHasCheapCopy>::value, ""); + static_assert(!VtValueTypeHasCheapCopy>::value, ""); +} + int main(int argc, char *argv[]) { testArray(); @@ -1874,6 +1884,7 @@ int main(int argc, char *argv[]) testVisitValue(); testKnownValueTypeIndex(); + testVtCheapToCopy(); printf("Test SUCCEEDED\n"); diff --git a/pxr/base/vt/traits.h b/pxr/base/vt/traits.h index a03d12c106..9ab1bbaeff 100644 --- a/pxr/base/vt/traits.h +++ b/pxr/base/vt/traits.h @@ -30,8 +30,6 @@ #include "pxr/base/vt/api.h" #include "pxr/base/tf/preprocessorUtils.h" -#include - #include PXR_NAMESPACE_OPEN_SCOPE @@ -46,8 +44,10 @@ struct VtIsArray : public std::false_type {}; // space but do not have a trivial assignment are not cheap to copy. E.g. std:: // containers. Clients can specialize this template for their own types that // aren't trivially assignable but are cheap to copy to enable local storage. +// In C++17, std::is_trivially_copy_assignable could be used in place of +// std::is_trivially_assignable template -struct VtValueTypeHasCheapCopy : boost::has_trivial_assign {}; +struct VtValueTypeHasCheapCopy : std::is_trivially_assignable {}; #define VT_TYPE_IS_CHEAP_TO_COPY(T) \ template <> struct VtValueTypeHasCheapCopy \ diff --git a/pxr/base/vt/value.h b/pxr/base/vt/value.h index f4c23d82a4..9a736c01a0 100644 --- a/pxr/base/vt/value.h +++ b/pxr/base/vt/value.h @@ -49,10 +49,6 @@ #include "pxr/base/vt/types.h" #include -#include -#include -#include -#include #include #include @@ -201,12 +197,14 @@ class VtValue typedef std::aligned_storage< /* size */_MaxLocalSize, /* alignment */_MaxLocalSize>::type _Storage; + // In C++17, std::is_trivially_copy_assignable could be used in place of + // std::is_trivially_assignable template using _IsTriviallyCopyable = std::integral_constant::value && - boost::has_trivial_copy::value && - boost::has_trivial_assign::value && - boost::has_trivial_destructor::value>; + std::is_trivially_default_constructible::value && + std::is_trivially_copyable::value && + std::is_trivially_assignable::value && + std::is_trivially_destructible::value>; // Metafunction that returns true if T should be stored locally, false if it // should be stored remotely. From 1d6bff0b42f29ff99e6f14017556ff6782fbb837 Mon Sep 17 00:00:00 2001 From: Chad Dombrova Date: Tue, 4 Jul 2023 22:45:26 -0400 Subject: [PATCH 039/352] doxygenlib: add additional types to docstrings This also provides changes necessary to support creation of python type stubs Changes: - do not filter "file" xml type: these are necessary to find info on non-class functions - capture function default arguments - add slots for efficiency: there are a lot of xml nodes - fix a bug with Writer.__init__ --- .gitignore | 2 +- docs/python/convertDoxygen.py | 12 ++++-- docs/python/doxygenlib/cdDocElement.py | 23 ++++++++-- docs/python/doxygenlib/cdParser.py | 11 +++-- docs/python/doxygenlib/cdWriterDocstring.py | 47 +++++++-------------- 5 files changed, 52 insertions(+), 43 deletions(-) diff --git a/.gitignore b/.gitignore index af6e02bde2..876d49c12d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ .p4* .DS_Store .AppleDouble - +*.pyc diff --git a/docs/python/convertDoxygen.py b/docs/python/convertDoxygen.py index 2f5d37018c..2cfbf60e6c 100644 --- a/docs/python/convertDoxygen.py +++ b/docs/python/convertDoxygen.py @@ -106,11 +106,13 @@ # Loop through module list and create a Writer for each module to # load and generate the doc strings for the specific module for moduleName in moduleList: + if not moduleName: + continue writer = Writer(packageName, moduleName) # Parser.traverse builds the docElement tree for all the # doxygen XML files, so we only need to call it once if we're # processing multiple modules - if (docList == None): + if (docList is None): docList = parser.traverse(writer) Debug("Processed %d DocElements from doxygen XML" % len(docList)) Debug("Processing module %s" % moduleName) @@ -120,8 +122,12 @@ module_output_file = os.path.join(module_output_dir, "__DOC.py") writer.generate(module_output_file, docList) else: + moduleName = modules # Processing a single module. Writer's constructor will sanity # check module and verify it can be loaded - writer = Writer() + if not output_file.endswith(".py"): + module_output_dir = os.path.join(output_file, moduleName) + output_file = os.path.join(module_output_dir, "__DOC.py") + writer = Writer(packageName, moduleName) docList = parser.traverse(writer) - writer.generate(output_file, docList) \ No newline at end of file + writer.generate(output_file, docList) diff --git a/docs/python/doxygenlib/cdDocElement.py b/docs/python/doxygenlib/cdDocElement.py index 456c38c0ad..0215a51880 100644 --- a/docs/python/doxygenlib/cdDocElement.py +++ b/docs/python/doxygenlib/cdDocElement.py @@ -29,9 +29,14 @@ # # The Parser class is responsible for building up a list of these objects. # +from collections import namedtuple from .cdUtils import Warn + +Param = namedtuple("Param", "type name default") + + class DocElement: """ Describe the documentation for a single class, method, function, etc. @@ -45,6 +50,9 @@ class DocElement: same function, i.e., in C++ parlance, the overloaded methods. """ + __slots__ = ("name", "kind", "prot", "doc", "location", "children", "const", "virt", "explicit", + "static", "inline", "returnType", "argsString", "definition", "params") + def __init__(self, name, kind, prot, doc, location): self.name = name # the name of this class/method self.kind = kind # e.g., function, class, etc. @@ -60,7 +68,10 @@ def __init__(self, name, kind, prot, doc, location): self.returnType = None # return type of a method/function self.argsString = None # arguments for this method/func self.definition = None # full C++ definition for method - self.params = None # name and type of each parameter + self.params = None # type, name, and default of each parameter + + def __repr__(self): + return "%s(%r, %r, %r, ...)" % (self.__class__.__name__, self.name, self.kind, self.location) def isFunction(self): """Is this doc element a function?""" @@ -86,6 +97,10 @@ def isRoot(self): """Is this doc element the root of the doxygen XML tree?""" return self.kind == 'root' + def isStatic(self): + """Is this doc element static?""" + return self.static is not None and self.static == 'yes' + def addChildren(self, children): """Adds the list of nodes as children of this node.""" for child in children: @@ -103,7 +118,7 @@ def replaceInnerClass(self, innerClassName, obj): del(self.children[childName]) self.__addChild(obj) return - Warn('could not find innerclass %s in %s' % (innerClassName,self.name)) + Warn('%r: could not find innerclass %s in %s' % (self, innerClassName,self.name)) def __addChild(self, child): if child.name in self.children: @@ -120,8 +135,8 @@ def __addChild(self, child): # so just ignore it. pass else: - Warn('overload mismatch: expected functions, got %s and %s' % \ - (self.children[child.name][0].kind, child.kind)) + Warn('%r: overload mismatch: expected functions, got %s and %s' % \ + (self, self.children[child.name][0].kind, child.kind)) else: self.children[child.name] = [child] diff --git a/docs/python/doxygenlib/cdParser.py b/docs/python/doxygenlib/cdParser.py index 5a3992fc07..fc2561edd1 100644 --- a/docs/python/doxygenlib/cdParser.py +++ b/docs/python/doxygenlib/cdParser.py @@ -42,6 +42,8 @@ class XMLNode: """ Rrepresent a single node in the XML tree. """ + __slots__ = ("parent", "name", "attrs", "text", "childNodes") + def __init__(self, parent, name, attrs, text): self.parent = parent self.name = name @@ -49,6 +51,9 @@ def __init__(self, parent, name, attrs, text): self.text = text self.childNodes = [] + def __repr__(self) -> str: + return "XMLNode(%s, %s, ...)" % (self.name, self.attrs.items()) + def addChildNode(self, node): """Append the specifed node to the children of this node.""" self.childNodes.append(node) @@ -221,8 +226,7 @@ def parseDoxygenIndexFile(self, doxygen_index_file): continue if (kind == "dir"): continue - if (kind == "file"): - continue + # we need to keep kind == "file" because this holds info on functions refid = compound_element.get('refid') # Individual entity XML generated XML files are .xml entity_file_name = refid + ".xml" @@ -357,7 +361,8 @@ def __getAllParams(self, node): if child.name == 'param': pname = child.getText('declname') ptype = child.getText('type') - params.append((ptype, pname)) + pdefault = child.getText('defval') or None + params.append(Param(ptype, pname, pdefault)) return params def __createDocElement(self, node): diff --git a/docs/python/doxygenlib/cdWriterDocstring.py b/docs/python/doxygenlib/cdWriterDocstring.py index 0bf50695da..2175e50e7a 100644 --- a/docs/python/doxygenlib/cdWriterDocstring.py +++ b/docs/python/doxygenlib/cdWriterDocstring.py @@ -52,29 +52,6 @@ class Writer: # we can combine property docstrings for getters/setters. propertyTable = {} - # Default constructor that assumes we're processing a single module - def __init__(self): - # - # Parse the extra arguments required by this plugin - # - project = GetArgValue(['--package', '-p']) - package = GetArgValue(['--module', '-m']) - - if not project: - Error("Required option --package not specified") - if not package: - Error("Required option --module not specified") - - # Import the python module that these docs pertain to - if not Import("from " +project+ " import " +package+ " as " +package): - Error("Could not import %s" % (package)) - - self.module = eval(package) - self.prefix = self.module.__name__.split('.')[-1] - self.seenPaths = {} - - # Constructor that takes package and module name, used when processing - # a list of modules def __init__(self, packageName, moduleName): # Import the python module @@ -295,11 +272,14 @@ def generate(self, output_file, docElements): if len(lines) == 1: lines.append(" pass") + outputDir = os.path.split(output_file)[0] + if not os.path.exists(outputDir): + os.makedirs(outputDir) + # output the lines to disk... try: - logfile = open(output_file, 'w') - logfile.write('\n'.join(lines)) - logfile.close() + with open(output_file, 'w') as logfile: + logfile.write('\n'.join(lines)) except: Error("Could not write to file: %s" % output_file) @@ -502,11 +482,14 @@ def __getSignatureString(self, pyname, pyobj, doxy): if doxy.isFunction(): cnt = 1; pnames = [] - for ptype, pname in doxy.params: + for ptype, pname, pdefault in doxy.params: if len(pname): - pnames.append(pname) + arg = pname else: - pnames.append('arg%s' % cnt) + arg = 'arg%s' % cnt + if pdefault is not None: + arg += '=...' + pnames.append(arg) cnt += 1 sig = '('+', '.join(pnames)+')' retType = self.__convertTypeName(doxy.returnType) @@ -520,7 +503,7 @@ def __getSignatureDescription(self, pyname, pyobj, doxy): if doxy.isFunction(): cnt = 0 lines = [] - for ptype, pname in doxy.params: + for ptype, pname, pdefault in doxy.params: cnt += 1 if not len(pname): pname = 'arg%s' % cnt @@ -593,11 +576,11 @@ def __getOutputFormat(self, pypath, pyobj, overloads): if len(overloads) == 1: lines += self.__getFullDoc(pyname, pyobj, overloads[0]) - if overloads[0].static == 'yes': + if overloads[0].isStatic(): docString = LABEL_STATIC # set the return type to static else: for doxy in overloads: - if doxy.static == 'yes': + if doxy.isStatic(): docString = LABEL_STATIC # set the return type to static desc = self.__getFullDoc(pyname, pyobj, doxy) From 266fcfaa4892ff04e4da59c8d0c45daba96a7835 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Thu, 6 Jul 2023 21:07:16 -0700 Subject: [PATCH 040/352] Replace `boost::call_traits` in `pxr/usd/sdf/accessorHelpers.h` --- pxr/usd/sdf/accessorHelpers.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/pxr/usd/sdf/accessorHelpers.h b/pxr/usd/sdf/accessorHelpers.h index ef3817d787..014d2ed104 100644 --- a/pxr/usd/sdf/accessorHelpers.h +++ b/pxr/usd/sdf/accessorHelpers.h @@ -173,6 +173,13 @@ SDF_ACCESSOR_CLASS::name_( \ // Convenience macros to provide common combinations of value accessors +// Convert non-trivial types like `std::string` to `const std::string&` while +// preserving the type for `int`, `bool`, `char`, etc. +template +using Sdf_SetParameter = std::conditional< + std::is_arithmetic::value, std::add_const_t, + std::add_lvalue_reference_t>>; + #define SDF_DEFINE_TYPED_GET_SET(name_, key_, getType_, setType_) \ SDF_DEFINE_GET(name_, key_, getType_) \ SDF_DEFINE_SET(name_, key_, setType_) @@ -184,11 +191,11 @@ SDF_DEFINE_CLEAR(name_, key_) #define SDF_DEFINE_GET_SET(name_, key_, type_) \ SDF_DEFINE_TYPED_GET_SET(name_, key_, type_, \ - boost::call_traits::param_type) + Sdf_SetParameter::type) #define SDF_DEFINE_GET_SET_HAS_CLEAR(name_, key_, type_) \ SDF_DEFINE_TYPED_GET_SET_HAS_CLEAR(name_, key_, type_, \ - boost::call_traits::param_type) + Sdf_SetParameter::type) #define SDF_DEFINE_IS_SET(name_, key_) \ SDF_DEFINE_IS(name_, key_) \ From 534282a3bce297062db30127efb22948b7130c47 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Fri, 7 Jul 2023 13:48:24 -0700 Subject: [PATCH 041/352] Remove unused boost header from `pxr/usd/sdf/path.h` --- pxr/usd/sdf/path.h | 1 - 1 file changed, 1 deletion(-) diff --git a/pxr/usd/sdf/path.h b/pxr/usd/sdf/path.h index a6b8855aaf..12db33c05b 100644 --- a/pxr/usd/sdf/path.h +++ b/pxr/usd/sdf/path.h @@ -33,7 +33,6 @@ #include "pxr/base/vt/traits.h" #include -#include #include #include From 32bf41ab0a1b82a5ce8b35ddbbfbc475800e7bc9 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Tue, 4 Jul 2023 07:02:31 -0700 Subject: [PATCH 042/352] Remove unneeded boost dependencies from python bindings --- pxr/base/plug/wrapRegistry.cpp | 17 +++++++---------- pxr/base/vt/wrapArray.h | 2 +- pxr/usd/sdf/wrapAssetPath.cpp | 1 - pxr/usd/sdf/wrapTimeCode.cpp | 1 - 4 files changed, 8 insertions(+), 13 deletions(-) diff --git a/pxr/base/plug/wrapRegistry.cpp b/pxr/base/plug/wrapRegistry.cpp index 743c4ccee8..d55f8f9386 100644 --- a/pxr/base/plug/wrapRegistry.cpp +++ b/pxr/base/plug/wrapRegistry.cpp @@ -31,7 +31,6 @@ #include "pxr/base/tf/pySingleton.h" #include "pxr/base/tf/stringUtils.h" -#include #include #include @@ -40,11 +39,8 @@ #include #include #include -#include #include -using std::make_pair; -using std::pair; using std::string; using std::vector; @@ -120,11 +116,11 @@ struct SharedState : boost::noncopyable { std::atomic nextAvailable; }; -template -string PluginNames(Range const &range) { +template +string PluginNames(const It begin, const It end) { using std::distance; - vector names(distance(boost::begin(range), boost::end(range))); - transform(boost::begin(range), boost::end(range), names.begin(), + vector names(distance(begin, end)); + transform(begin, end, names.begin(), [](PlugPluginPtr const &plug) { return plug->GetName(); }); return TfStringJoin(names.begin(), names.end(), ", "); } @@ -150,7 +146,7 @@ void _LoadPluginsConcurrently(PluginPredicateFn pred, // Report any already loaded plugins as skipped. if (verbose && alreadyLoaded != plugins.end()) { printf("Skipping already-loaded plugins: %s\n", - PluginNames(make_pair(alreadyLoaded, plugins.end())).c_str()); + PluginNames(alreadyLoaded, plugins.end()).c_str()); } // Trim the already loaded plugins from the vector. @@ -172,7 +168,8 @@ void _LoadPluginsConcurrently(PluginPredicateFn pred, // Report what we're doing. if (verbose) { printf("Loading %zu plugins concurrently: %s\n", - plugins.size(), PluginNames(plugins).c_str()); + plugins.size(), + PluginNames(std::cbegin(plugins), std::cend(plugins)).c_str()); } // Establish shared state. diff --git a/pxr/base/vt/wrapArray.h b/pxr/base/vt/wrapArray.h index 7975572da9..436b1f405e 100644 --- a/pxr/base/vt/wrapArray.h +++ b/pxr/base/vt/wrapArray.h @@ -444,7 +444,7 @@ ARCH_PRAGMA_POP template static std::string _VtStr(T const &self) { - return boost::lexical_cast(self); + return TfStringify(self); } template diff --git a/pxr/usd/sdf/wrapAssetPath.cpp b/pxr/usd/sdf/wrapAssetPath.cpp index 60acd17177..9985e47c74 100644 --- a/pxr/usd/sdf/wrapAssetPath.cpp +++ b/pxr/usd/sdf/wrapAssetPath.cpp @@ -28,7 +28,6 @@ #include "pxr/base/tf/pyResultConversions.h" #include "pxr/base/vt/wrapArray.h" -#include #include #include #include diff --git a/pxr/usd/sdf/wrapTimeCode.cpp b/pxr/usd/sdf/wrapTimeCode.cpp index 4df07bc9d3..73b4f3ad1a 100644 --- a/pxr/usd/sdf/wrapTimeCode.cpp +++ b/pxr/usd/sdf/wrapTimeCode.cpp @@ -28,7 +28,6 @@ #include "pxr/base/tf/pyResultConversions.h" #include "pxr/base/vt/wrapArray.h" -#include #include #include #include From 1a3d88d8ca34f24dfa6a4251822eb74db700a446 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Sat, 8 Jul 2023 07:31:52 -0700 Subject: [PATCH 043/352] Replace `TF_NUM_ARGS` with `TF_PP_VARIADIC_SIZE` in `staticTokens.h` --- pxr/base/tf/staticTokens.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pxr/base/tf/staticTokens.h b/pxr/base/tf/staticTokens.h index e04797b0dd..84f56bc2bb 100644 --- a/pxr/base/tf/staticTokens.h +++ b/pxr/base/tf/staticTokens.h @@ -114,7 +114,7 @@ PXR_NAMESPACE_OPEN_SCOPE /// Macro to define public tokens. This declares a list of tokens that can be /// used globally. Use in conjunction with TF_DEFINE_PUBLIC_TOKENS. /// \hideinitializer -#define TF_DECLARE_PUBLIC_TOKENS(...) _TF_DECLARE_PUBLIC_TOKENS_EXPAND( _TF_DECLARE_PUBLIC_TOKENS_EVAL(_TF_DECLARE_PUBLIC_TOKENS_EXPAND( TF_NUM_ARGS(__VA_ARGS__) ))(__VA_ARGS__) ) +#define TF_DECLARE_PUBLIC_TOKENS(...) _TF_DECLARE_PUBLIC_TOKENS_EXPAND( _TF_DECLARE_PUBLIC_TOKENS_EVAL(_TF_DECLARE_PUBLIC_TOKENS_EXPAND( TF_PP_VARIADIC_SIZE(__VA_ARGS__) ))(__VA_ARGS__) ) /// Macro to define public tokens. Use in conjunction with /// TF_DECLARE_PUBLIC_TOKENS. From bce13c57341f586aaa7af631a7aa1ee8a5eba4c7 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Thu, 23 Feb 2023 11:07:36 -0800 Subject: [PATCH 044/352] Replace `boost::filter_iterator` with explicit iterator implementation --- pxr/usd/sdf/childrenView.h | 82 +++++++++++++++++++++++++++++++------- 1 file changed, 68 insertions(+), 14 deletions(-) diff --git a/pxr/usd/sdf/childrenView.h b/pxr/usd/sdf/childrenView.h index d6b45863dd..a3aeb9b6e0 100644 --- a/pxr/usd/sdf/childrenView.h +++ b/pxr/usd/sdf/childrenView.h @@ -31,7 +31,6 @@ #include "pxr/usd/sdf/children.h" #include "pxr/base/tf/iterator.h" -#include #include #include #include @@ -76,27 +75,82 @@ template class Sdf_ChildrenViewTraits { private: - // Internal predicate object which will be passed to the filter - // iterator. This just calls through to the owner's predicate. - class _Predicate { + // Owner's predicate object will be used by the filter iterator. + // In C++20, consider using the ranges library to simplify this + class _FilterIterator { public: - typedef typename _Owner::value_type value_type; + using iterator_category = std::forward_iterator_tag; + using value_type = typename _InnerIterator::value_type; + using reference = typename _InnerIterator::reference; + using pointer = typename _InnerIterator::pointer; + using difference_type = typename _InnerIterator::difference_type; + + _FilterIterator() = default; + _FilterIterator(const _Owner* owner, + const _InnerIterator& underlyingIterator, + const _InnerIterator& end) : + _owner(owner), + _underlyingIterator(underlyingIterator), + _end(end) { + _Filter(); + } + + reference operator*() const { + return *_underlyingIterator; + } + + pointer operator->() const { + return _underlyingIterator.operator->(); + } + + _FilterIterator& operator++() { + TF_DEV_AXIOM(_underlyingIterator != _end); + ++_underlyingIterator; + _Filter(); + return *this; + } + + _FilterIterator operator++(int) { + TF_DEV_AXIOM(_underlyingIterator != _end); + _FilterIterator result(*this); + ++_underlyingIterator; + _Filter(); + return result; + } - _Predicate() : _owner(NULL) { } - _Predicate(const _Owner* owner) : _owner(owner) { } + bool operator==(const _FilterIterator& other) const { + return _underlyingIterator == other._underlyingIterator; + } + + bool operator!=(const _FilterIterator& other) const { + return _underlyingIterator != other._underlyingIterator; + } - bool operator()(const value_type& x) const + const _InnerIterator& GetBase() const { return _underlyingIterator; } + + private: + // Skip any iterators that don't satisfy the predicate + bool _ShouldFilter(const value_type& x) const { - return _owner->GetPredicate()( + return !_owner->GetPredicate()( _Owner::Adapter::Convert(x)); } - private: - const _Owner* _owner; + void _Filter() + { + while (_underlyingIterator != _end && + _ShouldFilter(*_underlyingIterator)) { + ++_underlyingIterator; + } + } + + const _Owner* _owner = nullptr; + _InnerIterator _underlyingIterator; + _InnerIterator _end; }; public: - typedef boost::filter_iterator<_Predicate, _InnerIterator> const_iterator; + using const_iterator = _FilterIterator; // Convert from a private _InnerIterator to a public const_iterator. // filter_iterator requires an end iterator, which is constructed using @@ -106,13 +160,13 @@ class Sdf_ChildrenViewTraits { size_t size) { _InnerIterator end(owner,size); - return const_iterator(_Predicate(owner), i, end); + return const_iterator(owner, i, end); } // Convert from a public const_iterator to a private _InnerIterator. static const _InnerIterator& GetBase(const const_iterator& i) { - return i.base(); + return i.GetBase(); } }; From b1f8546b8a2b878bba326cb4b455a71f16cd033c Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Tue, 20 Jun 2023 20:30:46 -0700 Subject: [PATCH 045/352] Replace `boost::lexical_cast` with `pxr/base/tf/stringUtils.h` --- pxr/usd/usd/stageCache.h | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/pxr/usd/usd/stageCache.h b/pxr/usd/usd/stageCache.h index b33ce6fbf3..09c91a8ffd 100644 --- a/pxr/usd/usd/stageCache.h +++ b/pxr/usd/usd/stageCache.h @@ -28,8 +28,7 @@ #include "pxr/usd/usd/api.h" #include "pxr/usd/sdf/declareHandles.h" #include "pxr/base/tf/declarePtrs.h" - -#include +#include "pxr/base/tf/stringUtils.h" #include #include @@ -107,7 +106,15 @@ class UsdStageCache /// Create an Id from a string value. The supplied \p val must have /// been obtained by calling ToString() previously. static Id FromString(const std::string &s) { - return FromLongInt(boost::lexical_cast(s)); + bool overflow = false; + const long int result = TfStringToLong(s, &overflow); + if (overflow) { + TF_CODING_ERROR( + "'%s' overflowed during conversion to int64_t.", + s.c_str() + ); + } + return FromLongInt(result); } /// Convert this Id to an integral representation. @@ -115,7 +122,7 @@ class UsdStageCache /// Convert this Id to a string representation. std::string ToString() const { - return boost::lexical_cast(ToLongInt()); + return TfStringify(ToLongInt()); } /// Return true if this Id is valid. From e3397b5c60ed00a8043874e728ca1d818c18f7f8 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Tue, 11 Jul 2023 20:17:42 -0700 Subject: [PATCH 046/352] Make `TF_EAT_PARENS` not depend on boost --- pxr/base/tf/preprocessorUtils.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pxr/base/tf/preprocessorUtils.h b/pxr/base/tf/preprocessorUtils.h index c0d3a10ed7..f6893369dc 100644 --- a/pxr/base/tf/preprocessorUtils.h +++ b/pxr/base/tf/preprocessorUtils.h @@ -33,6 +33,7 @@ #include "pxr/base/arch/defines.h" #include "pxr/base/arch/pragmas.h" +#include "pxr/base/tf/preprocessorUtilsLite.h" #include #include #include @@ -141,7 +142,7 @@ ARCH_PRAGMA_MACRO_TOO_FEW_ARGUMENTS // 0. No other values of c are allowed. We can't use BOOST_PP_IFF() because // it won't expand during stringizing under MSVC. #define _TF_PP_EAT_PARENS_IFF(c, t, f) \ - BOOST_PP_CAT(_TF_PP_EAT_PARENS_IFF_, c)(t, f) + TF_PP_CAT(_TF_PP_EAT_PARENS_IFF_, c)(t, f) #define _TF_PP_EAT_PARENS_IFF_0(t, f) f #define _TF_PP_EAT_PARENS_IFF_1(t, f) t From 15eb194d481cc0d09736cac595818359550f3955 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Tue, 11 Jul 2023 20:47:58 -0700 Subject: [PATCH 047/352] Move `TF_EAT_PARENS` to `tf/preprocessorUtilsLite.h` --- pxr/base/tf/preprocessorUtils.h | 76 ----------------------------- pxr/base/tf/preprocessorUtilsLite.h | 74 ++++++++++++++++++++++++++++ pxr/base/tf/testenv/meta.cpp | 2 +- pxr/base/vt/traits.h | 2 +- 4 files changed, 76 insertions(+), 78 deletions(-) diff --git a/pxr/base/tf/preprocessorUtils.h b/pxr/base/tf/preprocessorUtils.h index f6893369dc..77ec135fe5 100644 --- a/pxr/base/tf/preprocessorUtils.h +++ b/pxr/base/tf/preprocessorUtils.h @@ -33,7 +33,6 @@ #include "pxr/base/arch/defines.h" #include "pxr/base/arch/pragmas.h" -#include "pxr/base/tf/preprocessorUtilsLite.h" #include #include #include @@ -110,81 +109,6 @@ ARCH_PRAGMA_MACRO_TOO_FEW_ARGUMENTS _TF_NUM_ARGS_REP, _TF)) #endif - -/// Return the arguments as is except if the first argument starts with a -/// matched parenthesis then remove those parentheses. -/// \ingroup group_tf_Preprocessor -/// \hideinitializer -// -// If the arguments satisfy _TF_PP_EAT_PARENS_IS_PARENS() then we expand to -// _TF_PP_EAT_PARENS_EXPAND1, otherwise to _TF_PP_EAT_PARENS_EXPAND. The -// former eats the parentheses while the latter passes the arguments -// unchanged. -// -// We add the ~ after the first __VA_ARGS__ in case there are zero -// arguments. MSVC will complain about insufficient arguments otherwise. -// The ~ will be discarded in any case. -#define TF_PP_EAT_PARENS(...) \ - _TF_PP_EAT_PARENS_IFF(_TF_PP_EAT_PARENS_IS_PARENS(__VA_ARGS__ ~),\ - _TF_PP_EAT_PARENS_EXPAND1,_TF_PP_EAT_PARENS_EXPAND)(__VA_ARGS__) - -/// Expand the arguments and make the result a string. -// We can't use -// BOOST_PP_STRINGIZE because on MSVC passing no arguments will report "not -// enough actual parameters" and yield nothing. We want no warnings and an -// empty string. We do that by passing an unused first argument to the inner -// macro (we need an inner macro to cause expansion). This causes MSVC to -// yield "" for an empty __VA_ARGS__ list. -#define TF_PP_EAT_PARENS_STR(...) _TF_PP_EAT_PARENS_STR2(~, __VA_ARGS__) -#define _TF_PP_EAT_PARENS_STR2(x, ...) #__VA_ARGS__ - -// Expands to the second argument if c is 1 and the third argument if c is -// 0. No other values of c are allowed. We can't use BOOST_PP_IFF() because -// it won't expand during stringizing under MSVC. -#define _TF_PP_EAT_PARENS_IFF(c, t, f) \ - TF_PP_CAT(_TF_PP_EAT_PARENS_IFF_, c)(t, f) -#define _TF_PP_EAT_PARENS_IFF_0(t, f) f -#define _TF_PP_EAT_PARENS_IFF_1(t, f) t - -// Force expansion of the arguments. -#define _TF_PP_EAT_PARENS_EXPAND(...) __VA_ARGS__ - -// Similar to expand except it will eat the first matching pair of -// parentheses. For example, _TF_PP_EAT_PARENS_EXPAND1((x)(y)) yields x(y). -// The outer _TF_PP_EAT_PARENS_EXPAND() is needed for MSVC, which otherwise -// would stringizing to "_TF_PP_EAT_PARENS_EXPAND " plus the literal -// substitution of the arguments. -#define _TF_PP_EAT_PARENS_EXPAND1(...) \ - _TF_PP_EAT_PARENS_EXPAND(_TF_PP_EAT_PARENS_EXPAND __VA_ARGS__) - -// This works around a MSVC bug. When a macro expands to FOO(__VA_ARGS__,bar), -// MSVC will separate the arguments of __VA_ARGS__ even if they're inside -// matching parentheses. So, for example, if __VA_ARGS__ is (x,y) then we'll -// expand to FOO(x,y,bar) instead of FOO((x,y),bar). This macro works around -// that. Use: _TF_PP_EAT_PARENS_CALL(FOO,(__VA_ARGS__,bar)). -// -// We need the _TF_PP_EAT_PARENS_EXPAND() here otherwise stringizing will -// stringize the literal replacements, not the result of the expansion of x y. -// If FOO(x,y) expands to x+y then we'd get "FOO ((x,y),bar)" without -// _TF_PP_EAT_PARENS_EXPAND() instead of the correct "(x,y)+bar". -#define _TF_PP_EAT_PARENS_CALL(x, y) _TF_PP_EAT_PARENS_EXPAND(x y) - -// Expands to 1 if x starts with a matched parenthesis, otherwise expands to -// 0. "_TF_PP_EAT_PARENS_IS_PARENS2 x" eats the parentheses if they exist and -// expands to "x, 1,", otherwise it expands to _TF_PP_EAT_PARENS_IS_PARENS2 -// and the literal expansion of x. This result goes to -// _TF_PP_EAT_PARENS_IS_PARENS_CHECK_N() which extracts the 1 expanded from -// _TF_PP_EAT_PARENS_IS_PARENS2 or a 0 passed as a final argument. In either -// case the desired result is the second argument to -// _TF_PP_EAT_PARENS_IS_PARENS_CHECK_N. -#define _TF_PP_EAT_PARENS_IS_PARENS(x) \ - _TF_PP_EAT_PARENS_IS_PARENS_CHECK(_TF_PP_EAT_PARENS_IS_PARENS2 x) -#define _TF_PP_EAT_PARENS_IS_PARENS_CHECK(...) \ - _TF_PP_EAT_PARENS_CALL(_TF_PP_EAT_PARENS_IS_PARENS_CHECK_N,(__VA_ARGS__,0,)) -#define _TF_PP_EAT_PARENS_IS_PARENS_CHECK_N(x, n, ...) n -#define _TF_PP_EAT_PARENS_IS_PARENS_TRUE(x) x, 1, -#define _TF_PP_EAT_PARENS_IS_PARENS2(...) _TF_PP_EAT_PARENS_IS_PARENS_TRUE(~) - /// Exapnds to 1 if the argument is a tuple, and 0 otherwise. /// \ingroup group_tf_Preprocessor /// \hideinitializer diff --git a/pxr/base/tf/preprocessorUtilsLite.h b/pxr/base/tf/preprocessorUtilsLite.h index bc77bfe8f4..2dfb043831 100644 --- a/pxr/base/tf/preprocessorUtilsLite.h +++ b/pxr/base/tf/preprocessorUtilsLite.h @@ -319,4 +319,78 @@ #endif +/// Return the arguments as is except if the first argument starts with a +/// matched parenthesis then remove those parentheses. +/// \ingroup group_tf_Preprocessor +/// \hideinitializer +// +// If the arguments satisfy _TF_PP_EAT_PARENS_IS_PARENS() then we expand to +// _TF_PP_EAT_PARENS_EXPAND1, otherwise to _TF_PP_EAT_PARENS_EXPAND. The +// former eats the parentheses while the latter passes the arguments +// unchanged. +// +// We add the ~ after the first __VA_ARGS__ in case there are zero +// arguments. MSVC will complain about insufficient arguments otherwise. +// The ~ will be discarded in any case. +#define TF_PP_EAT_PARENS(...) \ + _TF_PP_EAT_PARENS_IFF(_TF_PP_EAT_PARENS_IS_PARENS(__VA_ARGS__ ~),\ + _TF_PP_EAT_PARENS_EXPAND1,_TF_PP_EAT_PARENS_EXPAND)(__VA_ARGS__) + +/// Expand the arguments and make the result a string. +// We can't use +// BOOST_PP_STRINGIZE because on MSVC passing no arguments will report "not +// enough actual parameters" and yield nothing. We want no warnings and an +// empty string. We do that by passing an unused first argument to the inner +// macro (we need an inner macro to cause expansion). This causes MSVC to +// yield "" for an empty __VA_ARGS__ list. +#define TF_PP_EAT_PARENS_STR(...) _TF_PP_EAT_PARENS_STR2(~, __VA_ARGS__) +#define _TF_PP_EAT_PARENS_STR2(x, ...) #__VA_ARGS__ + +// Expands to the second argument if c is 1 and the third argument if c is +// 0. No other values of c are allowed. We can't use BOOST_PP_IFF() because +// it won't expand during stringizing under MSVC. +#define _TF_PP_EAT_PARENS_IFF(c, t, f) \ + TF_PP_CAT(_TF_PP_EAT_PARENS_IFF_, c)(t, f) +#define _TF_PP_EAT_PARENS_IFF_0(t, f) f +#define _TF_PP_EAT_PARENS_IFF_1(t, f) t + +// Force expansion of the arguments. +#define _TF_PP_EAT_PARENS_EXPAND(...) __VA_ARGS__ + +// Similar to expand except it will eat the first matching pair of +// parentheses. For example, _TF_PP_EAT_PARENS_EXPAND1((x)(y)) yields x(y). +// The outer _TF_PP_EAT_PARENS_EXPAND() is needed for MSVC, which otherwise +// would stringizing to "_TF_PP_EAT_PARENS_EXPAND " plus the literal +// substitution of the arguments. +#define _TF_PP_EAT_PARENS_EXPAND1(...) \ + _TF_PP_EAT_PARENS_EXPAND(_TF_PP_EAT_PARENS_EXPAND __VA_ARGS__) + +// This works around a MSVC bug. When a macro expands to FOO(__VA_ARGS__,bar), +// MSVC will separate the arguments of __VA_ARGS__ even if they're inside +// matching parentheses. So, for example, if __VA_ARGS__ is (x,y) then we'll +// expand to FOO(x,y,bar) instead of FOO((x,y),bar). This macro works around +// that. Use: _TF_PP_EAT_PARENS_CALL(FOO,(__VA_ARGS__,bar)). +// +// We need the _TF_PP_EAT_PARENS_EXPAND() here otherwise stringizing will +// stringize the literal replacements, not the result of the expansion of x y. +// If FOO(x,y) expands to x+y then we'd get "FOO ((x,y),bar)" without +// _TF_PP_EAT_PARENS_EXPAND() instead of the correct "(x,y)+bar". +#define _TF_PP_EAT_PARENS_CALL(x, y) _TF_PP_EAT_PARENS_EXPAND(x y) + +// Expands to 1 if x starts with a matched parenthesis, otherwise expands to +// 0. "_TF_PP_EAT_PARENS_IS_PARENS2 x" eats the parentheses if they exist and +// expands to "x, 1,", otherwise it expands to _TF_PP_EAT_PARENS_IS_PARENS2 +// and the literal expansion of x. This result goes to +// _TF_PP_EAT_PARENS_IS_PARENS_CHECK_N() which extracts the 1 expanded from +// _TF_PP_EAT_PARENS_IS_PARENS2 or a 0 passed as a final argument. In either +// case the desired result is the second argument to +// _TF_PP_EAT_PARENS_IS_PARENS_CHECK_N. +#define _TF_PP_EAT_PARENS_IS_PARENS(x) \ + _TF_PP_EAT_PARENS_IS_PARENS_CHECK(_TF_PP_EAT_PARENS_IS_PARENS2 x) +#define _TF_PP_EAT_PARENS_IS_PARENS_CHECK(...) \ + _TF_PP_EAT_PARENS_CALL(_TF_PP_EAT_PARENS_IS_PARENS_CHECK_N,(__VA_ARGS__,0,)) +#define _TF_PP_EAT_PARENS_IS_PARENS_CHECK_N(x, n, ...) n +#define _TF_PP_EAT_PARENS_IS_PARENS_TRUE(x) x, 1, +#define _TF_PP_EAT_PARENS_IS_PARENS2(...) _TF_PP_EAT_PARENS_IS_PARENS_TRUE(~) + #endif // PXR_BASE_TF_PREPROCESSOR_UTILS_LITE_H diff --git a/pxr/base/tf/testenv/meta.cpp b/pxr/base/tf/testenv/meta.cpp index db51b64c2e..eefe776c29 100644 --- a/pxr/base/tf/testenv/meta.cpp +++ b/pxr/base/tf/testenv/meta.cpp @@ -26,7 +26,7 @@ #include "pxr/base/tf/functionTraits.h" #include "pxr/base/tf/meta.h" -#include "pxr/base/tf/preprocessorUtils.h" +#include "pxr/base/tf/preprocessorUtilsLite.h" #include #include diff --git a/pxr/base/vt/traits.h b/pxr/base/vt/traits.h index a03d12c106..962112d38e 100644 --- a/pxr/base/vt/traits.h +++ b/pxr/base/vt/traits.h @@ -28,7 +28,7 @@ #include "pxr/pxr.h" #include "pxr/base/vt/api.h" -#include "pxr/base/tf/preprocessorUtils.h" +#include "pxr/base/tf/preprocessorUtilsLite.h" #include From cb788c5d00f801ba06ea4985743f17be88d6c389 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Wed, 22 Feb 2023 11:43:57 -0800 Subject: [PATCH 048/352] Replace `boost::iterator_facade` with explicit iterator for `TfDenseHashMap` --- pxr/base/tf/denseHashMap.h | 55 ++++++++++++++++++++++++++++++-------- pxr/base/tf/denseHashSet.h | 2 -- 2 files changed, 44 insertions(+), 13 deletions(-) diff --git a/pxr/base/tf/denseHashMap.h b/pxr/base/tf/denseHashMap.h index a42ee4b3e5..c8f9050d0d 100644 --- a/pxr/base/tf/denseHashMap.h +++ b/pxr/base/tf/denseHashMap.h @@ -33,8 +33,6 @@ #include #include -#include - PXR_NAMESPACE_OPEN_SCOPE /// \class TfDenseHashMap @@ -141,30 +139,65 @@ class ARCH_EMPTY_BASES TfDenseHashMap : // // Clearly not a good thing. // - // Therefore we use boost::iterator_facade to create an iterator that uses - // the map's value_type as externally visible type. + // Therefore we create an iterator that uses the map's value_type as + // externally visible type. // template - class _IteratorBase : - public boost::iterator_facade< - _IteratorBase, - ElementType, - boost::bidirectional_traversal_tag> + class _IteratorBase { public: + using iterator_category = std::bidirectional_iterator_tag; + using value_type = ElementType; + using reference = ElementType&; + using pointer = ElementType*; + using difference_type = typename UnderlyingIterator::difference_type; // Empty ctor. - _IteratorBase() {} + _IteratorBase() = default; // Allow conversion of an iterator to a const_iterator. template _IteratorBase(const OtherIteratorType &rhs) : _iter(rhs._GetUnderlyingIterator()) {} + reference operator*() const { return dereference(); } + pointer operator->() const { return &(dereference()); } + + _IteratorBase& operator++() { + increment(); + return *this; + } + + _IteratorBase& operator--() { + decrement(); + return *this; + } + + _IteratorBase operator++(int) { + _IteratorBase result(*this); + increment(); + return result; + } + + _IteratorBase operator--(int) { + _IteratorBase result(*this); + decrement(); + return result; + } + + template + bool operator==(const OtherIteratorType& other) const { + return equal(other); + } + + template + bool operator!=(const OtherIteratorType& other) const { + return !equal(other); + } + private: friend class TfDenseHashMap; - friend class boost::iterator_core_access; // Ctor from an underlying iterator. _IteratorBase(const UnderlyingIterator &iter) diff --git a/pxr/base/tf/denseHashSet.h b/pxr/base/tf/denseHashSet.h index ffc03e1b8b..e7f81ca411 100644 --- a/pxr/base/tf/denseHashSet.h +++ b/pxr/base/tf/denseHashSet.h @@ -33,8 +33,6 @@ #include #include -#include - PXR_NAMESPACE_OPEN_SCOPE /// \class TfDenseHashSet From 6cb705876893f2fb7896ef05dfc81dca8b418f3c Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Sat, 8 Jul 2023 10:28:15 -0700 Subject: [PATCH 049/352] Replace use of boost traits with `std::conditional` --- pxr/usd/usd/stage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pxr/usd/usd/stage.cpp b/pxr/usd/usd/stage.cpp index 9af401fc6d..92b698f00f 100644 --- a/pxr/usd/usd/stage.cpp +++ b/pxr/usd/usd/stage.cpp @@ -7430,7 +7430,7 @@ struct Usd_AttrGetValueHelper { // Metafunction for selecting the appropriate interpolation object if the // given value type supports linear interpolation. struct _SelectInterpolator - : public boost::mpl::if_c< + : public std::conditional< UsdLinearInterpolationTraits::isSupported, Usd_LinearInterpolator, Usd_HeldInterpolator > { }; From 07e009000170089dbcb819eb1343218d09242442 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Tue, 11 Jul 2023 20:54:45 -0700 Subject: [PATCH 050/352] Replace `boost::iterator_facade` with explicit implementation for `SdfPathTable` --- pxr/usd/sdf/pathTable.h | 41 ++++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/pxr/usd/sdf/pathTable.h b/pxr/usd/sdf/pathTable.h index aa94cb1da4..008400c96c 100644 --- a/pxr/usd/sdf/pathTable.h +++ b/pxr/usd/sdf/pathTable.h @@ -30,8 +30,6 @@ #include "pxr/base/tf/pointerAndBits.h" #include "pxr/base/tf/functionRef.h" -#include - #include #include #include @@ -202,14 +200,18 @@ class SdfPathTable // iterators. Currently only forward traversal is supported. template friend class Iterator; template - class Iterator : - public boost::iterator_facade, - ValType, boost::forward_traversal_tag> + class Iterator { public: + using iterator_category = std::forward_iterator_tag; + using value_type = ValType; + using reference = ValType&; + using pointer = ValType*; + using difference_type = std::ptrdiff_t; + /// The standard requires default construction but places practically no /// requirements on the semantics of default-constructed iterators. - Iterator() {} + Iterator() = default; /// Copy constructor (also allows for converting non-const to const). template @@ -217,6 +219,30 @@ class SdfPathTable : _entry(other._entry) {} + reference operator*() const { return dereference(); } + pointer operator->() const { return &(dereference()); } + + Iterator& operator++() { + increment(); + return *this; + } + + Iterator operator++(int) { + Iterator result(*this); + increment(); + return result; + } + + template + bool operator==(Iterator const &other) const { + return equal(other); + } + + template + bool operator!=(Iterator const &other) const { + return !equal(other); + } + /// Return an iterator \a e, defining a maximal range [\a *this, \a e) /// such that for all \a i in the range, \a i->first is \a /// (*this)->first or is prefixed by \a (*this)->first. @@ -248,7 +274,6 @@ class SdfPathTable } protected: - friend class boost::iterator_core_access; friend class SdfPathTable; template friend class Iterator; @@ -256,8 +281,6 @@ class SdfPathTable : _entry(entry) {} // Fundamental functionality to implement the iterator. - // boost::iterator_facade will invoke these as necessary to implement - // the full iterator public interface. // Iterator increment. inline void increment() { From 8a2d71159f3e25a18e4fd9496a48c24ae4e8ab1e Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Tue, 11 Jul 2023 22:09:14 -0700 Subject: [PATCH 051/352] Remove unused `tf/preprocessorUtils.h` dependency --- pxr/base/tf/enum.h | 1 - pxr/base/tf/scopeDescription.h | 1 - pxr/base/tf/staticData.h | 1 - pxr/usd/sdf/types.h | 1 - 4 files changed, 4 deletions(-) diff --git a/pxr/base/tf/enum.h b/pxr/base/tf/enum.h index 5a573e5693..f6d5dddc99 100644 --- a/pxr/base/tf/enum.h +++ b/pxr/base/tf/enum.h @@ -31,7 +31,6 @@ #include "pxr/base/arch/defines.h" #include "pxr/base/arch/demangle.h" #include "pxr/base/tf/hash.h" -#include "pxr/base/tf/preprocessorUtils.h" #include "pxr/base/tf/preprocessorUtilsLite.h" #include "pxr/base/tf/safeTypeCompare.h" #include "pxr/base/tf/api.h" diff --git a/pxr/base/tf/scopeDescription.h b/pxr/base/tf/scopeDescription.h index f38e506d86..908f2b4086 100644 --- a/pxr/base/tf/scopeDescription.h +++ b/pxr/base/tf/scopeDescription.h @@ -27,7 +27,6 @@ #include "pxr/pxr.h" #include "pxr/base/tf/callContext.h" -#include "pxr/base/tf/preprocessorUtils.h" #include "pxr/base/tf/stringUtils.h" #include "pxr/base/tf/api.h" diff --git a/pxr/base/tf/staticData.h b/pxr/base/tf/staticData.h index 9b3a9a4b34..5e03e003cd 100644 --- a/pxr/base/tf/staticData.h +++ b/pxr/base/tf/staticData.h @@ -29,7 +29,6 @@ #include "pxr/pxr.h" #include "pxr/base/arch/hints.h" -#include "pxr/base/tf/preprocessorUtils.h" #include "pxr/base/tf/preprocessorUtilsLite.h" #include diff --git a/pxr/usd/sdf/types.h b/pxr/usd/sdf/types.h index 0168aa0901..48b6a8794a 100644 --- a/pxr/usd/sdf/types.h +++ b/pxr/usd/sdf/types.h @@ -58,7 +58,6 @@ #include "pxr/base/gf/vec4h.h" #include "pxr/base/gf/vec4i.h" #include "pxr/base/tf/enum.h" -#include "pxr/base/tf/preprocessorUtils.h" #include "pxr/base/tf/staticTokens.h" #include "pxr/base/tf/token.h" #include "pxr/base/tf/type.h" From 744c197c182d69e88e75d366248886a4a4efe48e Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Tue, 18 Apr 2023 15:29:39 -0700 Subject: [PATCH 052/352] Replace 'boost::iterator_facade` with explicit implementation for `pcp/node.h` --- pxr/usd/pcp/node.h | 83 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 66 insertions(+), 17 deletions(-) diff --git a/pxr/usd/pcp/node.h b/pxr/usd/pcp/node.h index 19825dab63..30159e7227 100644 --- a/pxr/usd/pcp/node.h +++ b/pxr/usd/pcp/node.h @@ -31,9 +31,6 @@ #include "pxr/base/tf/iterator.h" #include "pxr/base/tf/hashset.h" -#include -#include - PXR_NAMESPACE_OPEN_SCOPE class PcpArc; @@ -349,20 +346,30 @@ hash_value(const PcpNodeRef& x) typedef TfHashSet PcpNodeRefHashSet; typedef std::vector PcpNodeRefVector; +class PcpNodeRef_PtrProxy { +public: + PcpNodeRef* operator->() { return &_nodeRef; } +private: + friend class PcpNodeRef_ChildrenIterator; + friend class PcpNodeRef_ChildrenReverseIterator; + explicit PcpNodeRef_PtrProxy(const PcpNodeRef& nodeRef) : _nodeRef(nodeRef) {} + PcpNodeRef _nodeRef; +}; + /// \class PcpNodeRef_ChildrenIterator /// /// Object used to iterate over child nodes (not all descendant nodes) of a /// node in the prim index graph in strong-to-weak order. /// class PcpNodeRef_ChildrenIterator - : public boost::iterator_facade< - /* Derived = */ PcpNodeRef_ChildrenIterator, - /* ValueType = */ PcpNodeRef, - /* Category = */ boost::forward_traversal_tag, - /* RefType = */ PcpNodeRef - > { public: + using iterator_category = std::forward_iterator_tag; + using value_type = PcpNodeRef; + using reference = PcpNodeRef; + using pointer = PcpNodeRef_PtrProxy; + using difference_type = std::ptrdiff_t; + /// Constructs an invalid iterator. PCP_API PcpNodeRef_ChildrenIterator(); @@ -372,8 +379,29 @@ class PcpNodeRef_ChildrenIterator PCP_API PcpNodeRef_ChildrenIterator(const PcpNodeRef& node, bool end = false); + reference operator*() const { return dereference(); } + pointer operator->() const { return pointer(dereference()); } + + PcpNodeRef_ChildrenIterator& operator++() { + increment(); + return *this; + } + + PcpNodeRef_ChildrenIterator operator++(int) { + const PcpNodeRef_ChildrenIterator result = *this; + increment(); + return result; + } + + bool operator==(const PcpNodeRef_ChildrenIterator& other) const { + return equal(other); + } + + bool operator!=(const PcpNodeRef_ChildrenIterator& other) const { + return !equal(other); + } + private: - friend class boost::iterator_core_access; PCP_API void increment(); bool equal(const PcpNodeRef_ChildrenIterator& other) const @@ -403,14 +431,14 @@ class PcpNodeRef_ChildrenIterator /// order. /// class PcpNodeRef_ChildrenReverseIterator - : public boost::iterator_facade< - /* Derived = */ PcpNodeRef_ChildrenReverseIterator, - /* ValueType = */ PcpNodeRef, - /* Category = */ boost::forward_traversal_tag, - /* RefType = */ PcpNodeRef - > { public: + using iterator_category = std::forward_iterator_tag; + using value_type = PcpNodeRef; + using reference = PcpNodeRef; + using pointer = PcpNodeRef_PtrProxy; + using difference_type = std::ptrdiff_t; + /// Constructs an invalid iterator. PCP_API PcpNodeRef_ChildrenReverseIterator(); @@ -424,8 +452,29 @@ class PcpNodeRef_ChildrenReverseIterator PCP_API PcpNodeRef_ChildrenReverseIterator(const PcpNodeRef& node,bool end = false); + reference operator*() const { return dereference(); } + pointer operator->() const { return pointer(dereference()); } + + PcpNodeRef_ChildrenReverseIterator& operator++() { + increment(); + return *this; + } + + PcpNodeRef_ChildrenReverseIterator operator++(int) { + const PcpNodeRef_ChildrenReverseIterator result = *this; + increment(); + return result; + } + + bool operator==(const PcpNodeRef_ChildrenReverseIterator& other) const { + return equal(other); + } + + bool operator!=(const PcpNodeRef_ChildrenReverseIterator& other) const { + return !equal(other); + } + private: - friend class boost::iterator_core_access; PCP_API void increment(); bool equal(const PcpNodeRef_ChildrenReverseIterator& other) const From cd96036cb68d55d5bf85512b4c70588bcf4c214b Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Tue, 18 Apr 2023 19:20:43 -0700 Subject: [PATCH 053/352] Replace `boost::iterator_facade` with explicit implementation for `SdfChildrenView`'s internal iterator --- pxr/usd/sdf/childrenView.h | 116 ++++++++++++++++++++++++++++++++----- 1 file changed, 102 insertions(+), 14 deletions(-) diff --git a/pxr/usd/sdf/childrenView.h b/pxr/usd/sdf/childrenView.h index d6b45863dd..7ee243869f 100644 --- a/pxr/usd/sdf/childrenView.h +++ b/pxr/usd/sdf/childrenView.h @@ -32,7 +32,6 @@ #include "pxr/base/tf/iterator.h" #include -#include #include #include #include @@ -187,23 +186,112 @@ class SdfChildrenView { // the owner's storage. That allows the iterator to operate without // knowing anything about the specific data storage that's used, // which is important for providing both Gd and Lsd backed storage. - class _InnerIterator : - public boost::iterator_facade<_InnerIterator, - value_type, - std::random_access_iterator_tag, - value_type> { + class _InnerIterator { + class _PtrProxy { + public: + SdfChildrenView::value_type* operator->() { return &_value; } + private: + friend class SdfChildrenView; + explicit _PtrProxy(const SdfChildrenView::value_type& value) + : _value(value) {} + SdfChildrenView::value_type _value; + }; public: - typedef value_type reference; - typedef size_t size_type; - typedef ptrdiff_t difference_type; + using iterator_category = std::random_access_iterator_tag; + using value_type = SdfChildrenView::value_type; + using reference = value_type; + using pointer = _PtrProxy; + using difference_type = std::ptrdiff_t; - _InnerIterator() : - _owner(NULL), _pos(0) { } + _InnerIterator() = default; _InnerIterator(const This* owner, const size_t& pos) : _owner(owner), _pos(pos) { } + reference operator*() const { return dereference(); } + pointer operator->() const { return pointer(dereference()); } + reference operator[](const difference_type index) const { + _InnerIterator advanced(*this); + advanced.advance(index); + return advanced.dereference(); + } + + difference_type operator-(const _InnerIterator& other) const { + return -distance_to(other); + } + + _InnerIterator& operator++() { + increment(); + return *this; + } + + _InnerIterator& operator--() { + decrement(); + return *this; + } + + _InnerIterator operator++(int) { + _InnerIterator result(*this); + increment(); + return result; + } + + _InnerIterator operator--(int) { + _InnerIterator result(*this); + decrement(); + return result; + } + + _InnerIterator operator+(const difference_type increment) const { + _InnerIterator result(*this); + result.advance(increment); + return result; + } + + _InnerIterator operator-(const difference_type decrement) const { + _InnerIterator result(*this); + result.advance(-decrement); + return result; + } + + _InnerIterator& operator+=(const difference_type increment) { + advance(increment); + return *this; + } + + _InnerIterator& operator-=(const difference_type decrement) { + advance(-decrement); + return *this; + } + + bool operator==(const _InnerIterator& other) const { + return equal(other); + } + + bool operator!=(const _InnerIterator& other) const { + return !equal(other); + } + + bool operator<(const _InnerIterator& other) const { + TF_DEV_AXIOM(_owner == other._owner); + return _pos < other._pos; + } + + bool operator<=(const _InnerIterator& other) const { + TF_DEV_AXIOM(_owner == other._owner); + return _pos <= other._pos; + } + + bool operator>(const _InnerIterator& other) const { + TF_DEV_AXIOM(_owner == other._owner); + return _pos > other._pos; + } + + bool operator>=(const _InnerIterator& other) const { + TF_DEV_AXIOM(_owner == other._owner); + return _pos >= other._pos; + } + private: - friend class boost::iterator_core_access; reference dereference() const { @@ -232,8 +320,8 @@ class SdfChildrenView { } private: - const This* _owner; - size_t _pos; + const This* _owner = nullptr; + size_t _pos = 0; }; public: From 8d4ef5b152f7b84cb8e3ab65d54413fe16cfa41e Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Wed, 1 Feb 2023 15:26:51 -0800 Subject: [PATCH 054/352] Replace `boost::iterator_adaptor` with explicitly specified iterator definition for `VtDictionary` --- pxr/base/vt/dictionary.h | 85 +++++++++++++++++++++++++++++----------- 1 file changed, 63 insertions(+), 22 deletions(-) diff --git a/pxr/base/vt/dictionary.h b/pxr/base/vt/dictionary.h index c2013a41b2..80fc512243 100644 --- a/pxr/base/vt/dictionary.h +++ b/pxr/base/vt/dictionary.h @@ -34,8 +34,6 @@ #include "pxr/base/tf/hash.h" #include "pxr/base/tf/mallocTag.h" -#include - #include #include #include @@ -74,43 +72,84 @@ class VtDictionary { // VtDictionary is empty, or the Iterator is at the end of a VtDictionary // that contains values). template - class Iterator : public boost::iterator_adaptor, UnderlyingIterator> { + class Iterator { public: + using iterator_category = std::bidirectional_iterator_tag; + using value_type = typename UnderlyingIterator::value_type; + using reference = typename UnderlyingIterator::reference; + using pointer = typename UnderlyingIterator::pointer; + using difference_type = typename UnderlyingIterator::difference_type; + + // Default constructor creates an Iterator equivalent to end() (i.e. // UnderlyingMapPtr is null) - Iterator() - : Iterator::iterator_adaptor_(UnderlyingIterator()) - , _underlyingMap(0) {} + Iterator() = default; // Copy constructor (also allows for converting non-const to const). template Iterator(Iterator const &other) - : Iterator::iterator_adaptor_(other.base()) - , _underlyingMap(other._underlyingMap) {} + : _underlyingIterator(other._underlyingIterator), + _underlyingMap(other._underlyingMap) {} + + reference operator*() const { return *_underlyingIterator; } + pointer operator->() const { return _underlyingIterator.operator->(); } + + Iterator& operator++() { + increment(); + return *this; + } + + Iterator operator++(int) { + Iterator result = *this; + increment(); + return result; + } + + Iterator& operator--() { + --_underlyingIterator; + return *this; + } + + Iterator operator--(int) { + Iterator result = *this; + --_underlyingIterator; + return result; + } + + template + bool operator==(const Iterator& other) const { + return equal(other); + } + + template + bool operator!=(const Iterator& other) const { + return !equal(other); + } private: + // Private constructor allowing the find, begin and insert methods // to create and return the proper Iterator. Iterator(UnderlyingMapPtr m, UnderlyingIterator i) - : Iterator::iterator_adaptor_(i) - , _underlyingMap(m) { + : _underlyingIterator(i), + _underlyingMap(m) { if (m && i == m->end()) - _underlyingMap = 0; + _underlyingMap = nullptr; } - friend class boost::iterator_core_access; friend class VtDictionary; UnderlyingIterator GetUnderlyingIterator(UnderlyingMapPtr map) const { TF_AXIOM(!_underlyingMap || _underlyingMap == map); - return (!_underlyingMap) ? map->end() : this->base(); + return (!_underlyingMap) ? map->end() : _underlyingIterator; } // Fundamental functionality to implement the iterator. - // boost::iterator_adaptor will invoke these as necessary to implement + // These will be invoked these as necessary to implement // the full iterator public interface. // Increments the underlying iterator, and sets the underlying map to @@ -121,8 +160,8 @@ class VtDictionary { "VtDictionary iterator"); return; } - if (++this->base_reference() == _underlyingMap->end()) { - _underlyingMap = 0; + if (++_underlyingIterator == _underlyingMap->end()) { + _underlyingMap = nullptr; } } @@ -131,18 +170,20 @@ class VtDictionary { // 2) They both point to the end() of a VtDictionary // - or- // 3) They both point to the same VtDictionary and their - // boost::iterator_adaptors' base() iterators are the same + // underlying iterators are the same // In cases 1 and 2 above, _underlyingMap will be null template bool equal(Iterator const& i) const { - if (_underlyingMap == i._underlyingMap) - if (!_underlyingMap || this->base() == i.base()) + OtherUnderlyingIterator> const& other) const { + if (_underlyingMap == other._underlyingMap) + if (!_underlyingMap || + (_underlyingIterator == other._underlyingIterator)) return true; return false; } - UnderlyingMapPtr _underlyingMap; + UnderlyingIterator _underlyingIterator; + UnderlyingMapPtr _underlyingMap = nullptr; }; TF_MALLOC_TAG_NEW("Vt", "VtDictionary"); From 9856497b697e990d8a9d8757cf714058ff512779 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Fri, 17 Feb 2023 21:18:38 -0800 Subject: [PATCH 055/352] Replace `boost::iterator_facade` with explicit iterator definition --- pxr/usd/pcp/iterator.cpp | 13 +- pxr/usd/pcp/iterator.h | 322 +++++++++++++++++++++--- pxr/usd/pcp/testenv/testPcpIterator.cpp | 45 ++++ 3 files changed, 340 insertions(+), 40 deletions(-) diff --git a/pxr/usd/pcp/iterator.cpp b/pxr/usd/pcp/iterator.cpp index ca5327b2b4..f5bd95c9bb 100644 --- a/pxr/usd/pcp/iterator.cpp +++ b/pxr/usd/pcp/iterator.cpp @@ -34,12 +34,7 @@ PXR_NAMESPACE_OPEN_SCOPE //////////////////////////////////////////////////////////// -PcpPrimIterator::PcpPrimIterator() - : _primIndex(NULL) - , _pos(PCP_INVALID_INDEX) -{ - // Do nothing -} +PcpPrimIterator::PcpPrimIterator() = default; PcpPrimIterator::PcpPrimIterator( const PcpPrimIndex* primIndex, size_t pos) @@ -125,11 +120,7 @@ PcpPrimIterator::_GetSiteRef() const //////////////////////////////////////////////////////////// -PcpPropertyIterator::PcpPropertyIterator() - : _propertyIndex(NULL) - , _pos(0) -{ -} +PcpPropertyIterator::PcpPropertyIterator() = default; PcpPropertyIterator::PcpPropertyIterator( const PcpPropertyIndex& index, size_t pos) diff --git a/pxr/usd/pcp/iterator.h b/pxr/usd/pcp/iterator.h index ea50a76c87..ca921146a6 100644 --- a/pxr/usd/pcp/iterator.h +++ b/pxr/usd/pcp/iterator.h @@ -34,7 +34,6 @@ #include "pxr/base/tf/iterator.h" -#include #include #include @@ -50,16 +49,24 @@ class PcpPropertyIndex; /// order. /// class PcpNodeIterator - : public boost::iterator_facade< - /* Derived = */ PcpNodeIterator, - /* ValueType = */ PcpNodeRef, - /* Category = */ boost::random_access_traversal_tag, - /* RefType = */ PcpNodeRef - > { + class _PtrProxy { + public: + PcpNodeRef* operator->() { return &_nodeRef; } + private: + friend class PcpNodeIterator; + explicit _PtrProxy(const PcpNodeRef& nodeRef) : _nodeRef(nodeRef) {} + PcpNodeRef _nodeRef; + }; public: + using iterator_category = std::random_access_iterator_tag; + using value_type = PcpNodeRef; + using reference = PcpNodeRef; + using pointer = _PtrProxy; + using difference_type = std::ptrdiff_t; + /// Constructs an invalid iterator. - PcpNodeIterator() : _graph(0), _nodeIdx(PCP_INVALID_INDEX) {} + PcpNodeIterator() = default; // Returns a compressed Sd site. For internal use only. Pcp_CompressedSdSite GetCompressedSdSite(size_t layerIndex) const @@ -67,13 +74,95 @@ class PcpNodeIterator return Pcp_CompressedSdSite(_nodeIdx, layerIndex); } + reference operator*() const { return dereference(); } + pointer operator->() const { return pointer(dereference()); } + reference operator[](const difference_type index) const { + PcpNodeIterator advanced(*this); + advanced.advance(index); + return advanced.dereference(); + } + + difference_type operator-(const PcpNodeIterator& other) const { + return -distance_to(other); + } + + PcpNodeIterator& operator++() { + increment(); + return *this; + } + + PcpNodeIterator& operator--() { + decrement(); + return *this; + } + + PcpNodeIterator operator++(int) { + PcpNodeIterator result(*this); + increment(); + return result; + } + + PcpNodeIterator operator--(int) { + PcpNodeIterator result(*this); + decrement(); + return result; + } + + PcpNodeIterator operator+(const difference_type increment) const { + PcpNodeIterator result(*this); + result.advance(increment); + return result; + } + + PcpNodeIterator operator-(const difference_type decrement) const { + PcpNodeIterator result(*this); + result.advance(-decrement); + return result; + } + + PcpNodeIterator& operator+=(const difference_type increment) { + advance(increment); + return *this; + } + + PcpNodeIterator& operator-=(const difference_type decrement) { + advance(-decrement); + return *this; + } + + bool operator==(const PcpNodeIterator& other) const { + return equal(other); + } + + bool operator!=(const PcpNodeIterator& other) const { + return !equal(other); + } + + bool operator<(const PcpNodeIterator& other) const { + TF_DEV_AXIOM(_graph == other._graph); + return _nodeIdx < other._nodeIdx; + } + + bool operator<=(const PcpNodeIterator& other) const { + TF_DEV_AXIOM(_graph == other._graph); + return _nodeIdx <= other._nodeIdx; + } + + bool operator>(const PcpNodeIterator& other) const { + TF_DEV_AXIOM(_graph == other._graph); + return _nodeIdx > other._nodeIdx; + } + + bool operator>=(const PcpNodeIterator& other) const { + TF_DEV_AXIOM(_graph == other._graph); + return _nodeIdx >= other._nodeIdx; + } + private: friend class PcpPrimIndex; PcpNodeIterator(PcpPrimIndex_Graph* graph, size_t nodeIdx) : _graph(graph), _nodeIdx(nodeIdx) {} - friend class boost::iterator_core_access; - void increment() { ++_nodeIdx; } void decrement() { --_nodeIdx; } void advance(difference_type n) { _nodeIdx += n; } @@ -88,8 +177,8 @@ class PcpNodeIterator } private: - PcpPrimIndex_Graph* _graph; - size_t _nodeIdx; + PcpPrimIndex_Graph* _graph = nullptr; + size_t _nodeIdx = PCP_INVALID_INDEX; }; /// \class PcpNodeReverseIterator @@ -112,14 +201,22 @@ class PcpNodeReverseIterator /// strong-to-weak order. /// class PcpPrimIterator - : public boost::iterator_facade< - /* Derived = */ PcpPrimIterator, - /* Value = */ SdfSite, - /* Category = */ boost::random_access_traversal_tag, - /* Ref = */ SdfSite - > { + class _PtrProxy { + public: + SdfSite* operator->() { return &_site; } + private: + friend class PcpPrimIterator; + explicit _PtrProxy(const SdfSite& site) : _site(site) {} + SdfSite _site; + }; public: + using iterator_category = std::random_access_iterator_tag; + using value_type = SdfSite; + using reference = SdfSite; + using pointer = _PtrProxy; + using difference_type = std::ptrdiff_t; + /// Constructs an invalid iterator. PCP_API PcpPrimIterator(); @@ -138,8 +235,91 @@ class PcpPrimIterator PCP_API Pcp_SdSiteRef _GetSiteRef() const; + reference operator*() const { return dereference(); } + pointer operator->() const { return pointer(dereference()); } + reference operator[](const difference_type index) const { + PcpPrimIterator advanced(*this); + advanced.advance(index); + return advanced.dereference(); + } + + difference_type operator-(const PcpPrimIterator& other) const { + return -distance_to(other); + } + + PcpPrimIterator& operator++() { + increment(); + return *this; + } + + PcpPrimIterator& operator--() { + decrement(); + return *this; + } + + PcpPrimIterator operator++(int) { + PcpPrimIterator result(*this); + increment(); + return result; + } + + PcpPrimIterator operator--(int) { + PcpPrimIterator result(*this); + decrement(); + return result; + } + + PcpPrimIterator operator+(const difference_type increment) const { + PcpPrimIterator result(*this); + result.advance(increment); + return result; + } + + PcpPrimIterator operator-(const difference_type decrement) const { + PcpPrimIterator result(*this); + result.advance(-decrement); + return result; + } + + PcpPrimIterator& operator+=(const difference_type increment) { + advance(increment); + return *this; + } + + PcpPrimIterator& operator-=(const difference_type decrement) { + advance(-decrement); + return *this; + } + + bool operator==(const PcpPrimIterator& other) const { + return equal(other); + } + + bool operator!=(const PcpPrimIterator& other) const { + return !equal(other); + } + + bool operator<(const PcpPrimIterator& other) const { + TF_DEV_AXIOM(_primIndex == other._primIndex); + return _pos < other._pos; + } + + bool operator<=(const PcpPrimIterator& other) const { + TF_DEV_AXIOM(_primIndex == other._primIndex); + return _pos <= other._pos; + } + + bool operator>(const PcpPrimIterator& other) const { + TF_DEV_AXIOM(_primIndex == other._primIndex); + return _pos > other._pos; + } + + bool operator>=(const PcpPrimIterator& other) const { + TF_DEV_AXIOM(_primIndex == other._primIndex); + return _pos >= other._pos; + } + private: - friend class boost::iterator_core_access; PCP_API void increment(); PCP_API @@ -154,8 +334,8 @@ class PcpPrimIterator reference dereference() const; private: - const PcpPrimIndex* _primIndex; - size_t _pos; + const PcpPrimIndex* _primIndex = nullptr; + size_t _pos = PCP_INVALID_INDEX; }; /// \class PcpPrimReverseIterator @@ -190,13 +370,14 @@ class PcpPrimReverseIterator /// strong-to-weak order. /// class PcpPropertyIterator - : public boost::iterator_facade< - /* Derived = */ PcpPropertyIterator, - /* Value = */ const SdfPropertySpecHandle, - /* Category = */ boost::random_access_traversal_tag - > { public: + using iterator_category = std::random_access_iterator_tag; + using value_type = const SdfPropertySpecHandle; + using reference = const SdfPropertySpecHandle&; + using pointer = const SdfPropertySpecHandle*; + using difference_type = std::ptrdiff_t; + /// Constructs an invalid iterator. PCP_API PcpPropertyIterator(); @@ -215,8 +396,91 @@ class PcpPropertyIterator PCP_API bool IsLocal() const; + reference operator*() const { return dereference(); } + pointer operator->() const { return &(dereference()); } + reference operator[](const difference_type index) const { + PcpPropertyIterator advanced(*this); + advanced.advance(index); + return advanced.dereference(); + } + + difference_type operator-(const PcpPropertyIterator& other) const { + return -distance_to(other); + } + + PcpPropertyIterator& operator++() { + increment(); + return *this; + } + + PcpPropertyIterator& operator--() { + decrement(); + return *this; + } + + PcpPropertyIterator operator++(int) { + PcpPropertyIterator result(*this); + increment(); + return result; + } + + PcpPropertyIterator operator--(int) { + PcpPropertyIterator result(*this); + decrement(); + return result; + } + + PcpPropertyIterator operator+(const difference_type increment) const { + PcpPropertyIterator result(*this); + result.advance(increment); + return result; + } + + PcpPropertyIterator operator-(const difference_type decrement) const { + PcpPropertyIterator result(*this); + result.advance(-decrement); + return result; + } + + PcpPropertyIterator& operator+=(const difference_type increment) { + advance(increment); + return *this; + } + + PcpPropertyIterator& operator-=(const difference_type decrement) { + advance(-decrement); + return *this; + } + + bool operator==(const PcpPropertyIterator& other) const { + return equal(other); + } + + bool operator!=(const PcpPropertyIterator& other) const { + return !equal(other); + } + + bool operator<(const PcpPropertyIterator& other) const { + TF_DEV_AXIOM(_propertyIndex == other._propertyIndex); + return _pos < other._pos; + } + + bool operator<=(const PcpPropertyIterator& other) const { + TF_DEV_AXIOM(_propertyIndex == other._propertyIndex); + return _pos <= other._pos; + } + + bool operator>(const PcpPropertyIterator& other) const { + TF_DEV_AXIOM(_propertyIndex == other._propertyIndex); + return _pos > other._pos; + } + + bool operator>=(const PcpPropertyIterator& other) const { + TF_DEV_AXIOM(_propertyIndex == other._propertyIndex); + return _pos >= other._pos; + } + private: - friend class boost::iterator_core_access; PCP_API void increment(); PCP_API @@ -231,8 +495,8 @@ class PcpPropertyIterator reference dereference() const; private: - const PcpPropertyIndex* _propertyIndex; - size_t _pos; + const PcpPropertyIndex* _propertyIndex = nullptr; + size_t _pos = 0; }; /// \class PcpPropertyReverseIterator diff --git a/pxr/usd/pcp/testenv/testPcpIterator.cpp b/pxr/usd/pcp/testenv/testPcpIterator.cpp index 6626c1cc17..63355c0946 100644 --- a/pxr/usd/pcp/testenv/testPcpIterator.cpp +++ b/pxr/usd/pcp/testenv/testPcpIterator.cpp @@ -224,6 +224,30 @@ _TestRandomAccessOperations(IteratorType first, IteratorType last) } } +// Ensure that using increment/decrement operators and std::prev / std::next +// produce symmetrical results +template +static void +_TestIncrementAndAdvanceSymmetry(IteratorType first, IteratorType last) +{ + TF_AXIOM(first != last); + TF_AXIOM(std::distance(first, last) > 2); + + IteratorType byIncrement = first; + ++byIncrement; + ++byIncrement; + --byIncrement; + + IteratorType byAdvance = std::prev(std::next(first, 2)); + + TF_AXIOM(std::distance(first, byIncrement) == 1); + TF_AXIOM(std::distance(first, byAdvance) == 1); + TF_AXIOM(std::distance(byIncrement, first) == -1); + TF_AXIOM(std::distance(byAdvance, first) == -1); + TF_AXIOM(std::distance(byAdvance, byIncrement) == 0); + TF_AXIOM(byIncrement == byAdvance); +} + static std::unique_ptr _CreateCacheForRootLayer(const std::string& rootLayerPath) { @@ -296,6 +320,27 @@ main(int argc, char** argv) _TestComparisonOperations(propRange.first, propRange.second); } + std::cout << "Testing Increment / Advance Symmetry" << std::endl; + { + PcpErrorVector errors; + const PcpPrimIndex& primIndex = + cache->ComputePrimIndex(SdfPath("/Model"), &errors); + PcpRaiseErrors(errors); + + const PcpNodeRange nodeRange = primIndex.GetNodeRange(); + _TestIncrementAndAdvanceSymmetry(nodeRange.first, nodeRange.second); + + const PcpPrimRange primRange = primIndex.GetPrimRange(); + _TestIncrementAndAdvanceSymmetry(primRange.first, primRange.second); + + const PcpPropertyIndex& propIndex = + cache->ComputePropertyIndex(SdfPath("/Model.a"), &errors); + PcpRaiseErrors(errors); + + const PcpPropertyRange propRange = propIndex.GetPropertyRange(); + _TestIncrementAndAdvanceSymmetry(propRange.first, propRange.second); + } + std::cout << "Testing random access operations..." << std::endl; { PcpErrorVector errors; From 031cc0f04779b54262cda266d457349be07ba391 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Sat, 8 Jul 2023 09:23:32 -0700 Subject: [PATCH 056/352] Replace `boost::iterator_facade` with explicit iterator definition in `node_Iterator.h` --- pxr/usd/pcp/node_Iterator.h | 76 ++++++++++++++++++++++++++++++------- 1 file changed, 62 insertions(+), 14 deletions(-) diff --git a/pxr/usd/pcp/node_Iterator.h b/pxr/usd/pcp/node_Iterator.h index caa6cb915b..833cebc25e 100644 --- a/pxr/usd/pcp/node_Iterator.h +++ b/pxr/usd/pcp/node_Iterator.h @@ -44,15 +44,16 @@ PXR_NAMESPACE_OPEN_SCOPE /// node in the prim index graph in strong-to-weak order. /// class PcpNodeRef_PrivateChildrenConstIterator - : public boost::iterator_facade< - /* Derived = */ PcpNodeRef_PrivateChildrenConstIterator, - /* ValueType = */ const PcpNodeRef, - /* Category = */ boost::forward_traversal_tag - > { public: + using iterator_category = std::forward_iterator_tag; + using value_type = const PcpNodeRef; + using reference = const PcpNodeRef&; + using pointer = const PcpNodeRef*; + using difference_type = std::ptrdiff_t; + // Required by TF_FOR_ALL but always assigned to afterwards. - PcpNodeRef_PrivateChildrenConstIterator() { } + PcpNodeRef_PrivateChildrenConstIterator() = default; /// Constructs an iterator pointing to \p node's first or past its /// last child. @@ -66,8 +67,31 @@ class PcpNodeRef_PrivateChildrenConstIterator : _nodes[_node._nodeIdx].indexes.firstChildIndex; } + reference operator*() const { return dereference(); } + pointer operator->() const { return &(dereference()); } + + PcpNodeRef_PrivateChildrenConstIterator& operator++() { + increment(); + return *this; + } + + PcpNodeRef_PrivateChildrenConstIterator operator++(int) { + PcpNodeRef_PrivateChildrenConstIterator result(*this); + increment(); + return result; + } + + bool operator==( + const PcpNodeRef_PrivateChildrenConstIterator& other) const { + return equal(other); + } + + bool operator!=( + const PcpNodeRef_PrivateChildrenConstIterator& other) const { + return !equal(other); + } + private: - friend class boost::iterator_core_access; void increment() { _node._nodeIdx = _nodes[_node._nodeIdx].indexes.nextSiblingIndex; @@ -95,15 +119,16 @@ class PcpNodeRef_PrivateChildrenConstIterator /// node in the prim index graph in weak-to-strong order. /// class PcpNodeRef_PrivateChildrenConstReverseIterator - : public boost::iterator_facade< - /* Derived = */ PcpNodeRef_PrivateChildrenConstReverseIterator, - /* ValueType = */ const PcpNodeRef, - /* Category = */ boost::forward_traversal_tag - > { public: + using iterator_category = std::forward_iterator_tag; + using value_type = const PcpNodeRef; + using reference = const PcpNodeRef&; + using pointer = const PcpNodeRef*; + using difference_type = std::ptrdiff_t; + // Required by TF_FOR_ALL but always assigned to afterwards. - PcpNodeRef_PrivateChildrenConstReverseIterator() { } + PcpNodeRef_PrivateChildrenConstReverseIterator() = default; /// Constructs an iterator pointing to \p node's first or past its /// last child. @@ -117,8 +142,31 @@ class PcpNodeRef_PrivateChildrenConstReverseIterator : _nodes[_node._nodeIdx].indexes.lastChildIndex; } + reference operator*() const { return dereference(); } + pointer operator->() const { return &(dereference()); } + + PcpNodeRef_PrivateChildrenConstReverseIterator& operator++() { + increment(); + return *this; + } + + PcpNodeRef_PrivateChildrenConstReverseIterator operator++(int) { + PcpNodeRef_PrivateChildrenConstReverseIterator result(*this); + increment(); + return result; + } + + bool operator==( + const PcpNodeRef_PrivateChildrenConstReverseIterator& other) const { + return equal(other); + } + + bool operator!=( + const PcpNodeRef_PrivateChildrenConstReverseIterator& other) const { + return !equal(other); + } + private: - friend class boost::iterator_core_access; void increment() { _node._nodeIdx = _nodes[_node._nodeIdx].indexes.prevSiblingIndex; From 3d7e545a2a11d5a6c13713522d717d85f8d07679 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Mon, 17 Jul 2023 11:02:52 -0700 Subject: [PATCH 057/352] Remove spurious include of `boost/iterator_adaptors.hpp` in `vt/array.h` --- pxr/base/vt/array.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/pxr/base/vt/array.h b/pxr/base/vt/array.h index d98a1450fc..ac46c5d3a7 100644 --- a/pxr/base/vt/array.h +++ b/pxr/base/vt/array.h @@ -38,8 +38,6 @@ #include "pxr/base/tf/diagnostic.h" #include "pxr/base/tf/mallocTag.h" -#include - #include #include #include From 31083acaad2cc9e5fba8bd7238a913ca927dceff Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Mon, 17 Jul 2023 11:18:08 -0700 Subject: [PATCH 058/352] Remove spurious include of boost in `sdf/types.h` --- pxr/usd/sdf/types.h | 1 - 1 file changed, 1 deletion(-) diff --git a/pxr/usd/sdf/types.h b/pxr/usd/sdf/types.h index 0168aa0901..dceb87ba75 100644 --- a/pxr/usd/sdf/types.h +++ b/pxr/usd/sdf/types.h @@ -68,7 +68,6 @@ #include #include -#include #include #include #include From 4b102a1fd407494dc3e9b0b87fcdaba1ad4b368a Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Sat, 8 Jul 2023 09:29:51 -0700 Subject: [PATCH 059/352] Replace `boost::iterator_facade` with explicit iterator definition in `childrenProxy.h` --- pxr/usd/sdf/children.h | 1 - pxr/usd/sdf/childrenProxy.h | 64 +++++++++++++++++++++++++++++++------ 2 files changed, 54 insertions(+), 11 deletions(-) diff --git a/pxr/usd/sdf/children.h b/pxr/usd/sdf/children.h index e93890a2f5..d5434c1d1b 100644 --- a/pxr/usd/sdf/children.h +++ b/pxr/usd/sdf/children.h @@ -29,7 +29,6 @@ #include "pxr/usd/sdf/declareHandles.h" #include "pxr/usd/sdf/path.h" -#include #include PXR_NAMESPACE_OPEN_SCOPE diff --git a/pxr/usd/sdf/childrenProxy.h b/pxr/usd/sdf/childrenProxy.h index c42a9146f8..d7110d4d82 100644 --- a/pxr/usd/sdf/childrenProxy.h +++ b/pxr/usd/sdf/childrenProxy.h @@ -33,7 +33,6 @@ #include "pxr/base/tf/diagnostic.h" #include "pxr/base/tf/iterator.h" -#include #include #include #include @@ -117,22 +116,67 @@ class SdfChildrenProxy { }; template - class _Iterator : - public boost::iterator_facade< - _Iterator<_Owner, _Iter, _Value>, - _Value, - std::bidirectional_iterator_tag, - _Value> { + class _Iterator { + class _PtrProxy { + public: + _Value* operator->() { return &_value; } + private: + friend class _Iterator; + explicit _PtrProxy(const _Value& value) : _value(value) {} + _Value _value; + }; public: - _Iterator() { } + static_assert(!std::is_reference<_Value>::value && + !std::is_pointer<_Value>::value, + "_Value cannot be a pointer or reference type."); + using iterator_category = std::bidirectional_iterator_tag; + using value_type = _Value; + using reference = _Value; + using pointer = _PtrProxy; + using difference_type = std::ptrdiff_t; + + _Iterator() = default; _Iterator(_Owner owner, _inner_iterator i) : _owner(owner), _pos(i) { } template _Iterator(const _Iterator& other) : _owner(other._owner), _pos(other._pos) { } - private: - friend class boost::iterator_core_access; + reference operator*() const { return dereference(); } + pointer operator->() const { return pointer(dereference()); } + + _Iterator& operator++() { + increment(); + return *this; + } + + _Iterator& operator--() { + decrement(); + return *this; + } + + _Iterator operator++(int) { + _Iterator result(*this); + increment(); + return result; + } + _Iterator operator--(int) { + _Iterator result(*this); + decrement(); + return result; + } + + template + bool operator==(const _Iterator& other) const { + return equal(other); + } + + template + bool operator!=(const _Iterator& other) const { + return !equal(other); + } + + private: _Value dereference() const { return _Traits::Dereference(_owner, _pos); From 9afefcbfa67cda95c4a739a8039971b3551d87a4 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Wed, 1 Feb 2023 15:31:38 -0800 Subject: [PATCH 060/352] Replace `boost::iterator_adaptor` with explicitly specified iterator definition for `UsdPrimRange` --- pxr/usd/usd/primRange.cpp | 22 ++++++++------- pxr/usd/usd/primRange.h | 59 ++++++++++++++++++++++++++++----------- 2 files changed, 54 insertions(+), 27 deletions(-) diff --git a/pxr/usd/usd/primRange.cpp b/pxr/usd/usd/primRange.cpp index b93214d58a..8a5b9b315e 100644 --- a/pxr/usd/usd/primRange.cpp +++ b/pxr/usd/usd/primRange.cpp @@ -52,7 +52,7 @@ UsdPrimRange::Stage(const UsdStagePtr &stage, void UsdPrimRange::iterator::PruneChildren() { - if (base() == _range->_end) { + if (_underlyingIterator == _range->_end) { TF_CODING_ERROR("Iterator past-the-end"); return; } @@ -68,33 +68,35 @@ UsdPrimRange::iterator::PruneChildren() void UsdPrimRange::iterator::increment() { - base_type &base = base_reference(); - base_type end = _range->_end; + _UnderlyingIterator end = _range->_end; if (ARCH_UNLIKELY(_isPost)) { _isPost = false; - if (Usd_MoveToNextSiblingOrParent( - base, _proxyPrimPath, end, _range->_predicate)) { + if (Usd_MoveToNextSiblingOrParent(_underlyingIterator, _proxyPrimPath, + end, _range->_predicate)) { if (_depth) { --_depth; _isPost = true; } else { - base = end; + _underlyingIterator = end; _proxyPrimPath = SdfPath(); } } } else if (!_pruneChildrenFlag && - Usd_MoveToChild(base, _proxyPrimPath, end, _range->_predicate)) { + Usd_MoveToChild(_underlyingIterator, _proxyPrimPath, end, + _range->_predicate)) { ++_depth; } else { if (_range->_postOrder) { _isPost = true; } else { - while (Usd_MoveToNextSiblingOrParent( - base, _proxyPrimPath, end, _range->_predicate)) { + while (Usd_MoveToNextSiblingOrParent(_underlyingIterator, + _proxyPrimPath, + end, + _range->_predicate)) { if (_depth) { --_depth; } else { - base = end; + _underlyingIterator = end; _proxyPrimPath = SdfPath(); break; } diff --git a/pxr/usd/usd/primRange.h b/pxr/usd/usd/primRange.h index caf3daa65a..3aae0c862c 100644 --- a/pxr/usd/usd/primRange.h +++ b/pxr/usd/usd/primRange.h @@ -137,20 +137,43 @@ class UsdPrimRange /// A forward iterator into a UsdPrimRange. Iterators are valid for the /// range they were obtained from. An iterator \em i obtained from a range /// \em r is not valid for a range \em c copied from \em r. - class iterator : public boost::iterator_adaptor< - iterator, // crtp base. - Usd_PrimDataConstPtr, // base iterator. - UsdPrim, // value type. - boost::forward_traversal_tag, // traversal. - UsdPrim> // reference type. - { + class iterator { + using _UnderlyingIterator = Usd_PrimDataConstPtr; + class _PtrProxy { + public: + UsdPrim* operator->() { return &_prim; } + private: + friend class iterator; + explicit _PtrProxy(const UsdPrim& prim) : _prim(prim) {} + UsdPrim _prim; + }; public: - iterator() : iterator_adaptor_(nullptr) {} + using iterator_category = std::forward_iterator_tag; + using value_type = UsdPrim; + using reference = UsdPrim; + using pointer = _PtrProxy; + using difference_type = std::ptrdiff_t; + + iterator() = default; /// Allow implicit conversion from EndSentinel. iterator(EndSentinel e) - : iterator_adaptor_(e._range->_end) + : _underlyingIterator(e._range->_end) , _range(e._range) {} + + reference operator*() const { return dereference(); } + pointer operator->() const { return pointer(dereference()); } + + iterator& operator++() { + increment(); + return *this; + } + + iterator operator++(int) { + iterator result = *this; + increment(); + return result; + } /// Return true if the iterator points to a prim visited the second time /// (in post order) for a pre- and post-order iterator, false otherwise. @@ -164,7 +187,7 @@ class UsdPrimRange /// Return true if this iterator is equivalent to \p other. inline bool operator==(iterator const &other) const { return _range == other._range && - base() == other.base() && + _underlyingIterator == other._underlyingIterator && _proxyPrimPath == other._proxyPrimPath && _depth == other._depth && _pruneChildrenFlag == other._pruneChildrenFlag && @@ -173,7 +196,8 @@ class UsdPrimRange /// Return true if this iterator is equivalent to \p other. inline bool operator==(EndSentinel const &other) const { - return _range == other._range && base() == _range->_end; + return _range == other._range && + _underlyingIterator == _range->_end; } /// Return true if this iterator is not equivalent to \p other. @@ -188,13 +212,12 @@ class UsdPrimRange private: friend class UsdPrimRange; - friend class boost::iterator_core_access; iterator(UsdPrimRange const *range, Usd_PrimDataConstPtr prim, SdfPath proxyPrimPath, unsigned int depth) - : iterator_adaptor_(prim) + : _underlyingIterator(prim) , _range(range) , _proxyPrimPath(proxyPrimPath) , _depth(depth) {} @@ -202,9 +225,10 @@ class UsdPrimRange USD_API void increment(); inline reference dereference() const { - return UsdPrim(base(), _proxyPrimPath); + return UsdPrim(_underlyingIterator, _proxyPrimPath); } + _UnderlyingIterator _underlyingIterator = nullptr; UsdPrimRange const *_range = nullptr; SdfPath _proxyPrimPath; unsigned int _depth = 0; @@ -338,7 +362,7 @@ class UsdPrimRange /// UsdPrimRange::iterator::IsPostVisit() be true. void set_begin(iterator const &newBegin) { TF_VERIFY(!newBegin.IsPostVisit()); - _begin = newBegin.base(); + _begin = newBegin._underlyingIterator; _initProxyPrimPath = newBegin._proxyPrimPath; _initDepth = newBegin._depth; } @@ -392,8 +416,9 @@ class UsdPrimRange // Advance to the first prim that passes the predicate. iterator b = begin(); - if (b.base() != _end && - !Usd_EvalPredicate(_predicate, b.base(), proxyPrimPath)) { + if (b._underlyingIterator != _end && + !Usd_EvalPredicate(_predicate, b._underlyingIterator, + proxyPrimPath)) { b._pruneChildrenFlag = true; set_begin(++b); } From 3cb4129167245e9bc229b4457ea5730786f8c03f Mon Sep 17 00:00:00 2001 From: Matt Johnson Date: Thu, 1 Jun 2023 13:08:18 -0400 Subject: [PATCH 061/352] geomUtil: use Tf.PreparePythonModule() in __init__.py This follows the pattern used by other library Python modules and ensures that the pxr.GeomUtil Python module can be imported correctly on all platforms. --- pxr/imaging/geomUtil/__init__.py | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/pxr/imaging/geomUtil/__init__.py b/pxr/imaging/geomUtil/__init__.py index d601f63d3f..61a4a350ea 100644 --- a/pxr/imaging/geomUtil/__init__.py +++ b/pxr/imaging/geomUtil/__init__.py @@ -25,15 +25,6 @@ Utilities to help image common geometry. """ -from . import _geomUtil from pxr import Tf -Tf.PrepareModule(_geomUtil, locals()) -del _geomUtil, Tf - -try: - import __DOC - __DOC.Execute(locals()) - del __DOC -except Exception: - pass - +Tf.PreparePythonModule() +del Tf From ad846be9354ee8889daa38dfbc8468aeed6065e7 Mon Sep 17 00:00:00 2001 From: mati-nvidia Date: Thu, 20 Jul 2023 16:18:16 -0400 Subject: [PATCH 062/352] updated USD Products entry for NVIDIA Omniverse --- docs/usd_products.rst | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/docs/usd_products.rst b/docs/usd_products.rst index b37f4fa719..d876febc2b 100644 --- a/docs/usd_products.rst +++ b/docs/usd_products.rst @@ -360,25 +360,33 @@ ZBrush NVIDIA Omniverse ================= -`NVIDIA Omniverse `_ is a platform for creating and operating metaverse applications. -It is based on USD. +`NVIDIA Omniverse `_ is a modular `development platform `_ for +building Universal Scene Description (OpenUSD)-based real time 3D simulations and workflows for +industrial digitalization and perception AI applications. -`NVIDIA USD Documentation `_ +* `NVIDIA USD Overview `_ +* `NVIDIA USD Resources `_ +* `NVIDIA USD Documentation `_ -Omniverse also adds USD connectors to many application, `listed here `_. -Some of the applications are: +Omniverse connects the `top OpenUSD-based software applications `_ +to unify your 3D workflow. Some of the applications are: +* Adobe Photoshop +* Adobe Substance 3D Designer * Archicad -* Character Creator -* Creo -* iClone -* ParaView -* Revit -* Rhino -* SketchUp - -Please see the `list `_ for a -fuller range of connectors, as there are more than listed here. +* Autodesk 3ds Max +* Autodesk Maya +* Autodesk Revit +* Blender +* Epic Games Unreal Engine +* Kitware Paraview +* McNeel Rhinoceros +* PTC Creo +* Reallusion Character Creator +* Reallusion iClone +* Trimble SketchUp + +Please see the latest `list of Omniverse Connectors `_. -------- From cbfed9cf646e43bc0d52ff8b94894e6224131ffe Mon Sep 17 00:00:00 2001 From: mati-nvidia Date: Thu, 20 Jul 2023 16:45:53 -0400 Subject: [PATCH 063/352] addressed PR comments --- docs/usd_products.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usd_products.rst b/docs/usd_products.rst index d876febc2b..fb235843f0 100644 --- a/docs/usd_products.rst +++ b/docs/usd_products.rst @@ -368,7 +368,7 @@ industrial digitalization and perception AI applications. * `NVIDIA USD Resources `_ * `NVIDIA USD Documentation `_ -Omniverse connects the `top OpenUSD-based software applications `_ +Omniverse connects `many top OpenUSD-based software applications `_ to unify your 3D workflow. Some of the applications are: * Adobe Photoshop From bc3fb3ed06651a2055d90a2ee98f0b4b70e5b136 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Wed, 1 Feb 2023 15:34:31 -0800 Subject: [PATCH 064/352] Replace `boost::iterator_adaptor` with explicitly specified iterator definition for `UsdPrim{Sibling,Subtree}Iterator` --- pxr/usd/usd/prim.h | 225 +++++++++++++++++++++++++-------------------- 1 file changed, 125 insertions(+), 100 deletions(-) diff --git a/pxr/usd/usd/prim.h b/pxr/usd/usd/prim.h index eab9555d5d..9aee83a7cc 100644 --- a/pxr/usd/usd/prim.h +++ b/pxr/usd/usd/prim.h @@ -43,7 +43,6 @@ #include "pxr/usd/sdf/path.h" -#include #include #include @@ -2213,34 +2212,6 @@ class UsdPrim : public UsdObject }; #ifdef doxygen - -/// Forward traversal iterator of sibling ::UsdPrim s. This is a -/// standard-compliant iterator that may be used with STL algorithms, etc. -class UsdPrimSiblingIterator { -public: - /// Iterator value type. - typedef UsdPrim value_type; - /// Iterator reference type, in this case the same as \a value_type. - typedef value_type reference; - /// Iterator difference type. - typedef unspecified-integral-type difference_type; - /// Dereference. - reference operator*() const; - /// Indirection. - unspecified-type operator->() const; - /// Postincrement. - UsdPrimSiblingIterator &operator++(); - /// Preincrement. - UsdPrimSiblingIterator operator++(int); -private: - /// Equality. - friend bool operator==(const UsdPrimSiblingIterator &lhs, - const UsdPrimSiblingIterator &rhs); - /// Inequality. - friend bool operator!=(const UsdPrimSiblingIterator &lhs, - const UsdPrimSiblingIterator &rhs); -}; - /// Forward iterator range of sibling ::UsdPrim s. This range type contains a /// pair of UsdPrimSiblingIterator s, denoting a half-open range of UsdPrim /// siblings. It provides a subset of container-like API, such as begin(), @@ -2305,53 +2276,93 @@ class UsdPrimSiblingRange { #else -// Sibling iterator class. Converts ref to weak and filters according to a -// supplied predicate. -class UsdPrimSiblingIterator : public boost::iterator_adaptor< - UsdPrimSiblingIterator, // crtp base. - const Usd_PrimData *, // base iterator. - UsdPrim, // value type. - boost::forward_traversal_tag, // traversal - UsdPrim> // reference type. -{ + +/// Forward traversal iterator of sibling ::UsdPrim s. This is a +/// standard-compliant iterator that may be used with STL algorithms, etc. +/// Filters according to a supplied predicate. +class UsdPrimSiblingIterator { + using _UnderlyingIterator = const Usd_PrimData*; + class _PtrProxy { + public: + UsdPrim* operator->() { return &_prim; } + private: + friend class UsdPrimSiblingIterator; + explicit _PtrProxy(const UsdPrim& prim) : _prim(prim) {} + UsdPrim _prim; + }; public: + using iterator_category = std::forward_iterator_tag; + using value_type = UsdPrim; + using reference = UsdPrim; + using pointer = _PtrProxy; + using difference_type = std::ptrdiff_t; + // Default ctor. - UsdPrimSiblingIterator() {} + UsdPrimSiblingIterator() = default; + + /// Dereference. + reference operator*() const { return dereference(); } + + /// Indirection. + pointer operator->() const { return pointer(dereference()); } + + /// Preincrement. + UsdPrimSiblingIterator &operator++() { + increment(); + return *this; + } + + /// Postincrement. + UsdPrimSiblingIterator operator++(int) { + UsdPrimSiblingIterator result = *this; + increment(); + return result; + } + + bool operator==(const UsdPrimSiblingIterator& other) const { + return equal(other); + } + + bool operator!=(const UsdPrimSiblingIterator& other) const { + return !equal(other); + } private: friend class UsdPrim; // Constructor used by Prim. - UsdPrimSiblingIterator(const base_type &i, const SdfPath& proxyPrimPath, + UsdPrimSiblingIterator(const _UnderlyingIterator &i, + const SdfPath& proxyPrimPath, const Usd_PrimFlagsPredicate &predicate) - : iterator_adaptor_(i) + : _underlyingIterator(i) , _proxyPrimPath(proxyPrimPath) , _predicate(predicate) { // Need to advance iterator to first matching element. - if (base() && !Usd_EvalPredicate(_predicate, base(), _proxyPrimPath)) + if (_underlyingIterator && + !Usd_EvalPredicate(_predicate, _underlyingIterator, + _proxyPrimPath)) increment(); } - // Core implementation invoked by iterator_adaptor. - friend class boost::iterator_core_access; bool equal(const UsdPrimSiblingIterator &other) const { - return base() == other.base() && + return _underlyingIterator == other._underlyingIterator && _proxyPrimPath == other._proxyPrimPath && _predicate == other._predicate; } void increment() { - base_type &base = base_reference(); - if (Usd_MoveToNextSiblingOrParent(base, _proxyPrimPath, _predicate)) { - base = nullptr; + if (Usd_MoveToNextSiblingOrParent(_underlyingIterator, _proxyPrimPath, + _predicate)) { + _underlyingIterator = nullptr; _proxyPrimPath = SdfPath(); } } reference dereference() const { - return UsdPrim(base(), _proxyPrimPath); + return UsdPrim(_underlyingIterator, _proxyPrimPath); } + _UnderlyingIterator _underlyingIterator = nullptr; SdfPath _proxyPrimPath; Usd_PrimFlagsPredicate _predicate; }; @@ -2406,33 +2417,6 @@ UsdPrim::_MakeSiblingRange(const Usd_PrimFlagsPredicate &pred) const { #ifdef doxygen -/// Forward traversal iterator of sibling ::UsdPrim s. This is a -/// standard-compliant iterator that may be used with STL algorithms, etc. -class UsdPrimSubtreeIterator { -public: - /// Iterator value type. - typedef UsdPrim value_type; - /// Iterator reference type, in this case the same as \a value_type. - typedef value_type reference; - /// Iterator difference type. - typedef unspecified-integral-type difference_type; - /// Dereference. - reference operator*() const; - /// Indirection. - unspecified-type operator->() const; - /// Postincrement. - UsdPrimSubtreeIterator &operator++(); - /// Preincrement. - UsdPrimSubtreeIterator operator++(int); -private: - /// Equality. - friend bool operator==(const UsdPrimSubtreeIterator &lhs, - const UsdPrimSubtreeIterator &rhs); - /// Inequality. - friend bool operator!=(const UsdPrimSubtreeIterator &lhs, - const UsdPrimSubtreeIterator &rhs); -}; - /// Forward iterator range of sibling ::UsdPrim s. This range type contains a /// pair of UsdPrimSubtreeIterator s, denoting a half-open range of UsdPrim /// siblings. It provides a subset of container-like API, such as begin(), @@ -2497,59 +2481,100 @@ class UsdPrimSubtreeRange { #else -// Subtree iterator class. Converts ref to weak and filters according to a -// supplied predicate. -class UsdPrimSubtreeIterator : public boost::iterator_adaptor< - UsdPrimSubtreeIterator, // crtp base. - const Usd_PrimData *, // base iterator. - UsdPrim, // value type. - boost::forward_traversal_tag, // traversal - UsdPrim> // reference type. -{ +/// Forward traversal iterator of sibling ::UsdPrim s. This is a +/// standard-compliant iterator that may be used with STL algorithms, etc. +/// Filters according to a supplied predicate. +class UsdPrimSubtreeIterator { + using _UnderlyingIterator = Usd_PrimDataConstPtr; + class _PtrProxy { + public: + UsdPrim* operator->() { return &_prim; } + private: + friend class UsdPrimSubtreeIterator; + explicit _PtrProxy(const UsdPrim& prim) : _prim(prim) {} + UsdPrim _prim; + }; public: + using iterator_category = std::forward_iterator_tag; + using value_type = UsdPrim; + using reference = UsdPrim; + using pointer = _PtrProxy; + using difference_type = std::ptrdiff_t; + // Default ctor. - UsdPrimSubtreeIterator() {} + UsdPrimSubtreeIterator() = default; + + /// Dereference. + reference operator*() const { return dereference(); } + /// Indirection. + pointer operator->() const { return pointer(dereference()); } + + /// Preincrement. + UsdPrimSubtreeIterator &operator++() { + increment(); + return *this; + } + + /// Postincrement. + UsdPrimSubtreeIterator operator++(int) { + UsdPrimSubtreeIterator result; + increment(); + return result; + } + + /// Equality. + bool operator==(const UsdPrimSubtreeIterator &other) const { + return equal(other); + } + + /// Inequality. + bool operator!=(const UsdPrimSubtreeIterator &other) const { + return !equal(other); + } + private: friend class UsdPrim; // Constructor used by Prim. - UsdPrimSubtreeIterator(const base_type &i, const SdfPath &proxyPrimPath, + UsdPrimSubtreeIterator(const _UnderlyingIterator &i, + const SdfPath &proxyPrimPath, const Usd_PrimFlagsPredicate &predicate) - : iterator_adaptor_(i) + : _underlyingIterator(i) , _proxyPrimPath(proxyPrimPath) , _predicate(predicate) { // Need to advance iterator to first matching element. - base_type &base = base_reference(); - if (base && !Usd_EvalPredicate(_predicate, base, _proxyPrimPath)) { - if (Usd_MoveToNextSiblingOrParent(base, _proxyPrimPath, - _predicate)) { - base = nullptr; + if (_underlyingIterator && + !Usd_EvalPredicate(_predicate, _underlyingIterator, + _proxyPrimPath)) { + if (Usd_MoveToNextSiblingOrParent(_underlyingIterator, + _proxyPrimPath, _predicate)) { + _underlyingIterator = nullptr; _proxyPrimPath = SdfPath(); } } } - // Core implementation invoked by iterator_adaptor. - friend class boost::iterator_core_access; bool equal(const UsdPrimSubtreeIterator &other) const { - return base() == other.base() && + return _underlyingIterator == other._underlyingIterator && _proxyPrimPath == other._proxyPrimPath && _predicate == other._predicate; } void increment() { - base_type &base = base_reference(); - if (!Usd_MoveToChild(base, _proxyPrimPath, _predicate)) { - while (Usd_MoveToNextSiblingOrParent(base, _proxyPrimPath, + if (!Usd_MoveToChild(_underlyingIterator, _proxyPrimPath, + _predicate)) { + while (Usd_MoveToNextSiblingOrParent(_underlyingIterator, + _proxyPrimPath, _predicate)) {} } } reference dereference() const { - return UsdPrim(base(), _proxyPrimPath); + return UsdPrim(_underlyingIterator, _proxyPrimPath); } + _UnderlyingIterator _underlyingIterator = nullptr; SdfPath _proxyPrimPath; Usd_PrimFlagsPredicate _predicate; }; From f98622c2153880b38de2ad8ca47c235de40914e6 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Sun, 23 Jul 2023 13:04:06 -0700 Subject: [PATCH 065/352] Replace `boost::iterator_facade` with explicit implementation for `SdfMapEditProxy` --- pxr/usd/sdf/mapEditProxy.h | 78 +++++++++++++++++++++++++++++++++----- 1 file changed, 69 insertions(+), 9 deletions(-) diff --git a/pxr/usd/sdf/mapEditProxy.h b/pxr/usd/sdf/mapEditProxy.h index ddc98ae4a7..9dba185dc8 100644 --- a/pxr/usd/sdf/mapEditProxy.h +++ b/pxr/usd/sdf/mapEditProxy.h @@ -36,7 +36,6 @@ #include "pxr/base/vt/value.h" // for Vt_DefaultValueFactory #include "pxr/base/tf/diagnostic.h" #include "pxr/base/tf/mallocTag.h" -#include #include #include #include @@ -232,12 +231,26 @@ class SdfMapEditProxy : }; template - class _Iterator : - public boost::iterator_facade<_Iterator, R, - std::bidirectional_iterator_tag, R> { + class _Iterator { + class _PtrProxy { + public: + std::add_pointer_t operator->() { + return std::addressof(_result); + } + private: + friend class _Iterator; + explicit _PtrProxy(const R& result) : _result(result) {} + R _result; + }; public: - _Iterator() : - _owner(NULL), _data(NULL) { } + using iterator_category = std::bidirectional_iterator_tag; + using value_type = R; + using reference = R; + using pointer = std::conditional_t::value, + std::add_pointer_t, _PtrProxy>; + using difference_type = std::ptrdiff_t; + + _Iterator() = default; _Iterator(Owner owner, const Type* data, I i) : _owner(owner), _data(data), _pos(i) @@ -252,11 +265,59 @@ class SdfMapEditProxy : // Do nothing } + reference operator*() const { return dereference(); } + + // In C++20, when pointer can be `void` and `operator->` elided, + // this conditional behavior may be deprecated. The `operator->` + // implementation is keyed off of whether the underlying pointer + // requires a proxy type + template ::value, int> = 0> + pointer operator->() const { return std::addressof(dereference()); } + template ::value, int> = 0> + pointer operator->() const { return pointer(dereference()); } + + const I& base() const { return _pos; } + _Iterator& operator++() { + increment(); + return *this; + } + + _Iterator& operator--() { + decrement(); + return *this; + } + + _Iterator operator++(int) { + _Iterator result(*this); + increment(); + return result; + } + + _Iterator operator--(int) { + _Iterator result(*this); + decrement(); + return result; + } + + template + bool operator==(const _Iterator& other) const { + return equal(other); + } + + template + bool operator!=(const _Iterator& other) const { + return !equal(other); + } + private: R dereference() const { @@ -289,11 +350,10 @@ class SdfMapEditProxy : } private: - Owner _owner; - const Type* _data; + Owner _owner = nullptr; + const Type* _data = nullptr; I _pos; - friend class boost::iterator_core_access; template friend class _Iterator; }; From 132dff917e615a4f9360eb7bcac3ed2549175107 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Sun, 23 Jul 2023 13:03:14 -0700 Subject: [PATCH 066/352] Replace `boost::iterator_facade` with explicit iterator implementation for `SdfListProxy` --- pxr/usd/sdf/listProxy.h | 145 +++++++++++++++++++++++++++++++--------- 1 file changed, 115 insertions(+), 30 deletions(-) diff --git a/pxr/usd/sdf/listProxy.h b/pxr/usd/sdf/listProxy.h index 26aab2e280..220394d199 100644 --- a/pxr/usd/sdf/listProxy.h +++ b/pxr/usd/sdf/listProxy.h @@ -35,7 +35,6 @@ #include "pxr/base/tf/diagnostic.h" #include "pxr/base/tf/errorMark.h" #include "pxr/base/tf/iterator.h" -#include #include #include @@ -136,43 +135,129 @@ class SdfListProxy { friend class _ConstGetHelper; template - class _Iterator : - public boost::iterator_facade< - _Iterator, - std::remove_cv_t< + class _Iterator { + class _PtrProxy { + public: + std::add_pointer_t operator->() { + return std::addressof(_result); + } + private: + friend class _Iterator; + explicit _PtrProxy( + std::add_const_t< + std::add_lvalue_reference_t< + typename GetItem::result_type> + > result) : _result(result) {} + typename GetItem::result_type _result; + }; + public: + using This = _Iterator; + using iterator_category = std::random_access_iterator_tag; + using value_type = std::remove_cv_t< std::remove_reference_t< typename GetItem::result_type > - >, - std::random_access_iterator_tag, - typename GetItem::result_type> { - public: - typedef _Iterator This; - typedef - boost::iterator_facade< - _Iterator, - std::remove_cv_t< - std::remove_reference_t< - typename GetItem::result_type - > - >, - std::random_access_iterator_tag, - typename GetItem::result_type> Parent; - typedef typename Parent::reference reference; - typedef typename Parent::difference_type difference_type; - - _Iterator() : _owner(NULL), _index(0) - { - // Do nothing - } + >; + using reference = typename GetItem::result_type; + using pointer = _PtrProxy; + using difference_type = std::ptrdiff_t; + + static_assert(!std::is_lvalue_reference::value, + "reference is an lvalue_reference and usage of " + "this class unnecessarily instantiates a _PtrProxy."); + + _Iterator() = default; _Iterator(Owner owner, size_t index) : _owner(owner), _index(index) { // Do nothing } + reference operator*() const { return dereference(); } + pointer operator->() const { return pointer(dereference()); } + reference operator[](const difference_type index) const { + This advanced(*this); + advanced.advance(index); + return advanced.dereference(); + } + + difference_type operator-(const This& other) const { + return -distance_to(other); + } + + This& operator++() { + increment(); + return *this; + } + + This& operator--() { + decrement(); + return *this; + } + + This operator++(int) { + This result(*this); + increment(); + return result; + } + + This operator--(int) { + This result(*this); + decrement(); + return result; + } + + This operator+(const difference_type increment) const { + This result(*this); + result.advance(increment); + return result; + } + + This operator-(const difference_type decrement) const { + This result(*this); + result.advance(-decrement); + return result; + } + + This& operator+=(const difference_type increment) { + advance(increment); + return *this; + } + + This& operator-=(const difference_type decrement) { + advance(-decrement); + return *this; + } + + bool operator==(const This& other) const { + return equal(other); + } + + bool operator!=(const This& other) const { + return !equal(other); + } + + bool operator<(const This& other) const { + TF_DEV_AXIOM(_owner == other._owner); + return _index < other._index; + } + + bool operator<=(const This& other) const { + TF_DEV_AXIOM(_owner == other._owner); + return _index <= other._index; + } + + bool operator>(const This& other) const { + TF_DEV_AXIOM(_owner == other._owner); + return _index > other._index; + } + + bool operator>=(const This& other) const { + TF_DEV_AXIOM(_owner == other._owner); + return _index >= other._index; + } + private: - friend class boost::iterator_core_access; reference dereference() const { return _getItem(_owner, _index); @@ -205,8 +290,8 @@ class SdfListProxy { private: GetItem _getItem; - Owner _owner; - size_t _index; + Owner _owner = nullptr; + size_t _index = 0; }; public: From 52dd2f696e6feb08c65afe974d2bc38e27a129dc Mon Sep 17 00:00:00 2001 From: tallytalwar Date: Tue, 25 Jul 2023 15:26:53 -0700 Subject: [PATCH 067/352] Bump USD version to anticipated next release 23.11 (Internal change: 2287073) --- cmake/defaults/Version.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/defaults/Version.cmake b/cmake/defaults/Version.cmake index dafcd80710..1406ac2a94 100644 --- a/cmake/defaults/Version.cmake +++ b/cmake/defaults/Version.cmake @@ -24,6 +24,6 @@ # Versioning information set(PXR_MAJOR_VERSION "0") set(PXR_MINOR_VERSION "23") -set(PXR_PATCH_VERSION "8") # NOTE: Must not have leading 0 for single digits +set(PXR_PATCH_VERSION "11") # NOTE: Must not have leading 0 for single digits math(EXPR PXR_VERSION "${PXR_MAJOR_VERSION} * 10000 + ${PXR_MINOR_VERSION} * 100 + ${PXR_PATCH_VERSION}") From d0a3f191af3a5de51c361dad71487ccf8375668b Mon Sep 17 00:00:00 2001 From: unhyperbolic Date: Tue, 25 Jul 2023 15:28:39 -0700 Subject: [PATCH 068/352] Disabling HdPrman Coord Sys prim scene index plugin by default. (Internal change: 2283833) --- .../hdPrman/coordSysPrimSceneIndexPlugin.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/third_party/renderman-25/plugin/hdPrman/coordSysPrimSceneIndexPlugin.cpp b/third_party/renderman-25/plugin/hdPrman/coordSysPrimSceneIndexPlugin.cpp index 4b36c20f7e..1b4694a8e9 100644 --- a/third_party/renderman-25/plugin/hdPrman/coordSysPrimSceneIndexPlugin.cpp +++ b/third_party/renderman-25/plugin/hdPrman/coordSysPrimSceneIndexPlugin.cpp @@ -26,8 +26,16 @@ #include "pxr/imaging/hdsi/coordSysPrimSceneIndex.h" #include "pxr/imaging/hd/sceneIndexPluginRegistry.h" +#include "pxr/base/tf/envSetting.h" + PXR_NAMESPACE_OPEN_SCOPE +TF_DEFINE_ENV_SETTING(HD_PRMAN_ENABLE_COORD_SYS_PRIM_SCENE_INDEX_PLUGIN, + false, + "If true, enables a plugin necessary for coord sys " + "to work with hdPrman and the " + "UsdImagingStageSceneIndex."); + TF_DEFINE_PRIVATE_TOKENS( _tokens, ((sceneIndexPluginName, "HdPrman_CoordSysPrimSceneIndexPlugin")) @@ -61,8 +69,11 @@ HdPrman_CoordSysPrimSceneIndexPlugin::_AppendSceneIndex( const HdSceneIndexBaseRefPtr &inputScene, const HdContainerDataSourceHandle &inputArgs) { -// return inputScene; - return HdsiCoordSysPrimSceneIndex::New(inputScene); + if (TfGetEnvSetting(HD_PRMAN_ENABLE_COORD_SYS_PRIM_SCENE_INDEX_PLUGIN)) { + return HdsiCoordSysPrimSceneIndex::New(inputScene); + } else { + return inputScene; + } } PXR_NAMESPACE_CLOSE_SCOPE From 0ddd5ea32aafb9c7f3c34020eafd62593c238a43 Mon Sep 17 00:00:00 2001 From: o2b3d Date: Tue, 25 Jul 2023 15:28:59 -0700 Subject: [PATCH 069/352] Fix a dangling pointer reference in TfType (Internal change: 2283908) --- pxr/base/tf/type.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/pxr/base/tf/type.cpp b/pxr/base/tf/type.cpp index fd8c7f4c89..ff890ac8d8 100644 --- a/pxr/base/tf/type.cpp +++ b/pxr/base/tf/type.cpp @@ -1178,19 +1178,26 @@ TfType::GetCanonicalTypeName(const std::type_info &t) using LookupMap = TfHashMap>; - static LookupMap lookupMap; + + // A std::type_index contains a pointer to a std::type_info and type_info + // objects may be defined in plugin libraries. On program exit, the plugins + // get unloaded from memory, potentially leaving type_index objects with + // dangling pointers and causing crashes when attempting to destroy a + // LookupMap. To avoid this, we allocate the LookupMap on the heap and + // simply let it leak at program exit so its destructor is never called. + static LookupMap * const lookupMap = new LookupMap; ScopedLock regLock(GetRegistryMutex(), /*write=*/false); const std::type_index typeIndex(t); - const LookupMap &map = lookupMap; + const LookupMap &map = *lookupMap; const LookupMap::const_iterator iter = map.find(typeIndex); - if (iter != lookupMap.end()) { + if (iter != map.end()) { return iter->second; } regLock.UpgradeToWriter(); - return lookupMap.insert({typeIndex, ArchGetDemangled(t)}).first->second; + return lookupMap->insert({typeIndex, ArchGetDemangled(t)}).first->second; } void From f6196617a222213c9bc29ba89227b74da3e43175 Mon Sep 17 00:00:00 2001 From: unhyperbolic Date: Tue, 25 Jul 2023 15:30:15 -0700 Subject: [PATCH 070/352] UsdImaging_NiInstanceAggregationSceneIndex: compute instance xforms relative to enclosing scope. This fixes a bug where the xform authored on a point instancer prototype root would be applied to both the instancer instancing a native instance and the instance within the point instancer prototype. (Internal change: 2284051) --- .../niInstanceAggregationSceneIndex.cpp | 59 ++++++++++++++--- pxr/usdImaging/usdImagingGL/CMakeLists.txt | 40 ++++++++++++ ...testUsdImagingGLInstancing_pi_ni_xform.png | Bin 0 -> 15322 bytes .../pi_ni_xform.usda | 60 ++++++++++++++++++ 4 files changed, 149 insertions(+), 10 deletions(-) create mode 100644 pxr/usdImaging/usdImagingGL/testenv/testUsdImagingGLInstancing/baseline/testUsdImagingGLInstancing_pi_ni_xform.png create mode 100644 pxr/usdImaging/usdImagingGL/testenv/testUsdImagingGLInstancing/pi_ni_xform.usda diff --git a/pxr/usdImaging/usdImaging/niInstanceAggregationSceneIndex.cpp b/pxr/usdImaging/usdImaging/niInstanceAggregationSceneIndex.cpp index 4b6d7ca1e4..329f9e8287 100644 --- a/pxr/usdImaging/usdImaging/niInstanceAggregationSceneIndex.cpp +++ b/pxr/usdImaging/usdImaging/niInstanceAggregationSceneIndex.cpp @@ -385,10 +385,40 @@ class _InstanceTransformPrimvarValueDataSource : public HdMatrixArrayDataSource { VtArray result(_instances->size()); - int i = 0; - for (const SdfPath &instance : *_instances) { - result[i] = _GetPrimTransform(_inputSceneIndex, instance); - i++; + // We want the native instance's xform relative to the xform of the + // enclosing root (e.g. the prototype of a point instancer). + // + // The instancer instancing the native instance is already picking up + // the xform of the enclosing root, so we need the relative xform + // to avoid applying the same xform twice to a native instance. + // + // Note that the flattening scene index is invalidating the + // native instance's xform when the xform of the enclosing root + // is changing, so there is no special logic to invalidate this + // data source when the enclosing root is changing here. + // + // TODO: Note that the current implementation does not deal with time samples. + // + const GfMatrix4d rootInverse = + _GetPrimTransform(_inputSceneIndex, _enclosingPrototypeRoot) + .GetInverse(); + + static const GfMatrix4d id(1.0); + + if (rootInverse == id) { + int i = 0; + for (const SdfPath &instance : *_instances) { + result[i] = + _GetPrimTransform(_inputSceneIndex, instance); + i++; + } + } else { + int i = 0; + for (const SdfPath &instance : *_instances) { + result[i] = + _GetPrimTransform(_inputSceneIndex, instance) * rootInverse; + i++; + } } return result; } @@ -396,14 +426,17 @@ class _InstanceTransformPrimvarValueDataSource : public HdMatrixArrayDataSource private: _InstanceTransformPrimvarValueDataSource( HdSceneIndexBaseRefPtr const &inputSceneIndex, - std::shared_ptr const &instances) + std::shared_ptr const &instances, + const SdfPath &enclosingPrototypeRoot) : _inputSceneIndex(inputSceneIndex) , _instances(instances) + , _enclosingPrototypeRoot(enclosingPrototypeRoot) { } HdSceneIndexBaseRefPtr const _inputSceneIndex; std::shared_ptr const _instances; + const SdfPath _enclosingPrototypeRoot; }; // Data source for locator primvars:instanceTransform for an instancer. @@ -434,7 +467,7 @@ class _InstanceTransformPrimvarDataSource : public HdContainerDataSource } if (name == HdPrimvarSchemaTokens->primvarValue) { return _InstanceTransformPrimvarValueDataSource::New( - _inputSceneIndex, _instances); + _inputSceneIndex, _instances, _enclosingPrototypeRoot); } // Does the instanceTransform have a role? return nullptr; @@ -443,14 +476,17 @@ class _InstanceTransformPrimvarDataSource : public HdContainerDataSource private: _InstanceTransformPrimvarDataSource( HdSceneIndexBaseRefPtr const &inputSceneIndex, - std::shared_ptr const &instances) + std::shared_ptr const &instances, + const SdfPath &enclosingPrototypeRoot) : _inputSceneIndex(inputSceneIndex) , _instances(instances) + , _enclosingPrototypeRoot(enclosingPrototypeRoot) { } HdSceneIndexBaseRefPtr const _inputSceneIndex; std::shared_ptr const _instances; + const SdfPath _enclosingPrototypeRoot; }; // Data source for locator primvars for an instancer. @@ -476,7 +512,7 @@ class _PrimvarsDataSource : public HdContainerDataSource HdDataSourceBaseHandle Get(const TfToken &name) override { if (name == HdInstancerTokens->instanceTransform) { return _InstanceTransformPrimvarDataSource::New( - _inputSceneIndex, _instances); + _inputSceneIndex, _instances, _enclosingPrototypeRoot); } if (!_instances->empty()) { if (_IsConstantPrimvar( @@ -491,14 +527,17 @@ class _PrimvarsDataSource : public HdContainerDataSource private: _PrimvarsDataSource( HdSceneIndexBaseRefPtr const &inputSceneIndex, - std::shared_ptr const &instances) + std::shared_ptr const &instances, + const SdfPath &enclosingPrototypeRoot) : _inputSceneIndex(inputSceneIndex) , _instances(instances) + , _enclosingPrototypeRoot(enclosingPrototypeRoot) { } HdSceneIndexBaseRefPtr const _inputSceneIndex; std::shared_ptr const _instances; + const SdfPath _enclosingPrototypeRoot; }; // [0, 1, ..., n-1] @@ -684,7 +723,7 @@ class _InstancerPrimSource : public HdContainerDataSource } if (name == HdPrimvarsSchema::GetSchemaToken()) { return _PrimvarsDataSource::New( - _inputSceneIndex, _instances); + _inputSceneIndex, _instances, _enclosingPrototypeRoot); } return nullptr; } diff --git a/pxr/usdImaging/usdImagingGL/CMakeLists.txt b/pxr/usdImaging/usdImagingGL/CMakeLists.txt index fcea957863..ffdf9223a4 100644 --- a/pxr/usdImaging/usdImagingGL/CMakeLists.txt +++ b/pxr/usdImaging/usdImagingGL/CMakeLists.txt @@ -1415,6 +1415,18 @@ pxr_register_test(testUsdImagingGLInstancing_internal_ni TESTENV testUsdImagingGLInstancing ) +pxr_register_test(testUsdImagingGLInstancing_pi_ni_xform + COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdImagingGLBasicDrawing -offscreen -camera /main_cam -lighting -stage pi_ni_xform.usda -write testUsdImagingGLInstancing_pi_ni_xform.png" + IMAGE_DIFF_COMPARE + testUsdImagingGLInstancing_pi_ni_xform.png + FAIL 0.01 + FAIL_PERCENT 0.005 + WARN 0.02 + WARN_PERCENT 0.0025 + EXPECTED_RETURN_CODE 0 + TESTENV testUsdImagingGLInstancing +) + pxr_register_test(testUsdImagingGLInstancing_SceneIndex_instancedCubes COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdImagingGLBasicDrawing -offscreen -lighting -shading smooth -frameAll -stage instancedCubes.usda -write testUsdImagingGLInstancing_instancedCubes.png" IMAGE_DIFF_COMPARE @@ -1425,6 +1437,8 @@ pxr_register_test(testUsdImagingGLInstancing_SceneIndex_instancedCubes WARN_PERCENT 0.0025 EXPECTED_RETURN_CODE 0 TESTENV testUsdImagingGLInstancing_SceneIndex + ENV + USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX=true ) pxr_register_test(testUsdImagingGLInstancing_SceneIndex_instancedCubes2 @@ -1437,6 +1451,8 @@ pxr_register_test(testUsdImagingGLInstancing_SceneIndex_instancedCubes2 WARN_PERCENT 0.0025 EXPECTED_RETURN_CODE 0 TESTENV testUsdImagingGLInstancing_SceneIndex + ENV + USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX=true ) pxr_register_test(testUsdImagingGLInstancing_SceneIndex_instancedCubes2NoInstancing @@ -1449,6 +1465,8 @@ pxr_register_test(testUsdImagingGLInstancing_SceneIndex_instancedCubes2NoInstanc WARN_PERCENT 0.0025 EXPECTED_RETURN_CODE 0 TESTENV testUsdImagingGLInstancing_SceneIndex + ENV + USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX=true ) pxr_register_test(testUsdImagingGLInstancing_SceneIndex_nestedInstancedCubes @@ -1461,6 +1479,8 @@ pxr_register_test(testUsdImagingGLInstancing_SceneIndex_nestedInstancedCubes WARN_PERCENT 0.0025 EXPECTED_RETURN_CODE 0 TESTENV testUsdImagingGLInstancing_SceneIndex + ENV + USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX=true ) pxr_register_test(testUsdImagingGLInstancing_SceneIndex_nestedInstance @@ -1473,6 +1493,8 @@ pxr_register_test(testUsdImagingGLInstancing_SceneIndex_nestedInstance WARN_PERCENT 0.0025 EXPECTED_RETURN_CODE 0 TESTENV testUsdImagingGLInstancing_SceneIndex + ENV + USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX=true ) pxr_register_test(testUsdImagingGLInstancing_SceneIndex_ni_pi @@ -1485,6 +1507,8 @@ pxr_register_test(testUsdImagingGLInstancing_SceneIndex_ni_pi WARN_PERCENT 0.0025 EXPECTED_RETURN_CODE 0 TESTENV testUsdImagingGLInstancing_SceneIndex + ENV + USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX=true ) pxr_register_test(testUsdImagingGLInstancing_SceneIndex_internal_ni @@ -1497,6 +1521,22 @@ pxr_register_test(testUsdImagingGLInstancing_SceneIndex_internal_ni WARN_PERCENT 0.0025 EXPECTED_RETURN_CODE 0 TESTENV testUsdImagingGLInstancing_SceneIndex + ENV + USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX=true +) + +pxr_register_test(testUsdImagingGLInstancing_SceneIndex_pi_ni_xform + COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdImagingGLBasicDrawing -offscreen -camera /main_cam -lighting -stage pi_ni_xform.usda -write testUsdImagingGLInstancing_pi_ni_xform.png" + IMAGE_DIFF_COMPARE + testUsdImagingGLInstancing_pi_ni_xform.png + FAIL 0.01 + FAIL_PERCENT 0.005 + WARN 0.02 + WARN_PERCENT 0.0025 + EXPECTED_RETURN_CODE 0 + TESTENV testUsdImagingGLInstancing_SceneIndex + ENV + USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX=true ) pxr_register_test(testUsdImagingGLPickAndHighlight diff --git a/pxr/usdImaging/usdImagingGL/testenv/testUsdImagingGLInstancing/baseline/testUsdImagingGLInstancing_pi_ni_xform.png b/pxr/usdImaging/usdImagingGL/testenv/testUsdImagingGLInstancing/baseline/testUsdImagingGLInstancing_pi_ni_xform.png new file mode 100644 index 0000000000000000000000000000000000000000..45e7efbbc758c0f92162c42e0f92e646a93da312 GIT binary patch literal 15322 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 literal 0 HcmV?d00001 diff --git a/pxr/usdImaging/usdImagingGL/testenv/testUsdImagingGLInstancing/pi_ni_xform.usda b/pxr/usdImaging/usdImagingGL/testenv/testUsdImagingGLInstancing/pi_ni_xform.usda new file mode 100644 index 0000000000..e9822436f2 --- /dev/null +++ b/pxr/usdImaging/usdImagingGL/testenv/testUsdImagingGLInstancing/pi_ni_xform.usda @@ -0,0 +1,60 @@ +#usda 1.0 +( + upAxis = "Z" +) + +def Camera "main_cam" +{ + double3 xformOp:translate = (5, 8, 60) + uniform token[] xformOpOrder = ["xformOp:translate"] +} + +def PointInstancer "Instancer" +{ + point3f[] positions = [(0, 0, 0), (10, 0, 0)] + int[] protoIndices = [0, 0] + rel prototypes = [ + + ] + double3 xformOp:translate = (0, 10, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + + def Xform "PiPrototype" ( + doc = "Test that xform on point instancing prototype root is making it through, including to native instances." + ) + { + def Xform "NiInstance" ( + active = true + references = + ) + { + float3 xformOp:rotateZYX = (0, 20, 0) + double3 xformOp:translate = (0, 0, 10) + uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateZYX"] + } + + def Xform "NiInstance2" ( + active = true + references = + ) + { + float3 xformOp:rotateZYX = (0, 20, 0) + double3 xformOp:translate = (0, 5, 10) + uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateZYX"] + } + + float3 xformOp:rotateZYX = (20, 0, 0) + double3 xformOp:translate = (0, 0, 10) + uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:rotateZYX"] + } +} + +def Xform "NiPrototype" ( + active = false + instanceable = true +) +{ + def Cube "Cube" + { + } +} From eb95dc49e34cc63d988109c6cea25ff9b1b439d6 Mon Sep 17 00:00:00 2001 From: shahbazk8194 Date: Tue, 25 Jul 2023 15:30:31 -0700 Subject: [PATCH 071/352] [GCC9] [VFX2022] Remove unused private tokens (Internal change: 2284056) --- .../plugin/hdPrman/matfiltSceneIndexPlugins.cpp | 6 ------ third_party/renderman-25/plugin/hdPrman/mesh.cpp | 5 ----- 2 files changed, 11 deletions(-) diff --git a/third_party/renderman-25/plugin/hdPrman/matfiltSceneIndexPlugins.cpp b/third_party/renderman-25/plugin/hdPrman/matfiltSceneIndexPlugins.cpp index 5bc6de0f92..9453717aac 100644 --- a/third_party/renderman-25/plugin/hdPrman/matfiltSceneIndexPlugins.cpp +++ b/third_party/renderman-25/plugin/hdPrman/matfiltSceneIndexPlugins.cpp @@ -52,12 +52,6 @@ TF_DEFINE_PRIVATE_TOKENS( ((vstructPluginName, "HdPrman_VirtualStructResolvingSceneIndexPlugin")) ); -TF_DEFINE_PRIVATE_TOKENS( - _materialContextTokens, - (ri) - (mtlx) -); - /// Ordering of the matfilt operations. This is necessary when using scene /// index plugins instead of a filter chain which is populated in the required /// order. diff --git a/third_party/renderman-25/plugin/hdPrman/mesh.cpp b/third_party/renderman-25/plugin/hdPrman/mesh.cpp index e5d9d77f67..491f392a47 100644 --- a/third_party/renderman-25/plugin/hdPrman/mesh.cpp +++ b/third_party/renderman-25/plugin/hdPrman/mesh.cpp @@ -49,11 +49,6 @@ PXR_NAMESPACE_OPEN_SCOPE -TF_DEFINE_PRIVATE_TOKENS( - _tokens, - ((displacementBoundSphere, "displacementbound:sphere")) -); - HdPrman_Mesh::HdPrman_Mesh(SdfPath const& id, const bool isMeshLight) : BASE(id) , _isMeshLight(isMeshLight) From a107a68d5f5d35945774ea0c9da5195f22745575 Mon Sep 17 00:00:00 2001 From: unhyperbolic Date: Tue, 25 Jul 2023 15:30:45 -0700 Subject: [PATCH 072/352] UsdImaging: Adding UsdImagingInstantiateSceneIndices. (Internal change: 2284101) (Internal change: 2284176) --- pxr/usdImaging/usdImaging/CMakeLists.txt | 1 + pxr/usdImaging/usdImaging/sceneIndices.cpp | 124 +++++++++++++++++++ pxr/usdImaging/usdImaging/sceneIndices.h | 83 +++++++++++++ pxr/usdImaging/usdImagingGL/engine.cpp | 136 ++++++++------------- pxr/usdImaging/usdImagingGL/engine.h | 4 + 5 files changed, 265 insertions(+), 83 deletions(-) create mode 100644 pxr/usdImaging/usdImaging/sceneIndices.cpp create mode 100644 pxr/usdImaging/usdImaging/sceneIndices.h diff --git a/pxr/usdImaging/usdImaging/CMakeLists.txt b/pxr/usdImaging/usdImaging/CMakeLists.txt index 060e20a1d7..c8f369bc9c 100644 --- a/pxr/usdImaging/usdImaging/CMakeLists.txt +++ b/pxr/usdImaging/usdImaging/CMakeLists.txt @@ -114,6 +114,7 @@ pxr_library(usdImaging renderVarAdapter representedByAncestorPrimAdapter rerootingSceneIndex + sceneIndices sphereAdapter sphereLightAdapter textureUtils diff --git a/pxr/usdImaging/usdImaging/sceneIndices.cpp b/pxr/usdImaging/usdImaging/sceneIndices.cpp new file mode 100644 index 0000000000..14200d2367 --- /dev/null +++ b/pxr/usdImaging/usdImaging/sceneIndices.cpp @@ -0,0 +1,124 @@ +// +// Copyright 2023 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +#include "pxr/usdImaging/usdImaging/sceneIndices.h" + +#include "pxr/usdImaging/usdImaging/drawModeSceneIndex.h" +#include "pxr/usdImaging/usdImaging/extentResolvingSceneIndex.h" +#include "pxr/usdImaging/usdImaging/flattenedDataSourceProviders.h" +#include "pxr/usdImaging/usdImaging/niPrototypePropagatingSceneIndex.h" +#include "pxr/usdImaging/usdImaging/piPrototypePropagatingSceneIndex.h" +#include "pxr/usdImaging/usdImaging/renderSettingsFlatteningSceneIndex.h" +#include "pxr/usdImaging/usdImaging/selectionSceneIndex.h" +#include "pxr/usdImaging/usdImaging/stageSceneIndex.h" +#include "pxr/usdImaging/usdImaging/unloadedDrawModeSceneIndex.h" + +#include "pxr/imaging/hd/flatteningSceneIndex.h" +#include "pxr/imaging/hd/overlayContainerDataSource.h" +#include "pxr/imaging/hd/retainedDataSource.h" + +#include "pxr/usd/usdGeom/tokens.h" + +PXR_NAMESPACE_OPEN_SCOPE + +static +HdContainerDataSourceHandle +_AdditionalStageSceneIndexInputArgs( + const bool displayUnloadedPrimsWithBounds) +{ + if (!displayUnloadedPrimsWithBounds) { + return nullptr; + } + static HdContainerDataSourceHandle const ds = + HdRetainedContainerDataSource::New( + UsdImagingStageSceneIndexTokens->includeUnloadedPrims, + HdRetainedTypedSampledDataSource::New(true)); + return ds; +} + +UsdImagingSceneIndices +UsdImagingInstantiateSceneIndices( + const UsdImagingSceneIndicesCreateInfo &createInfo) +{ + UsdImagingSceneIndices result; + + HdSceneIndexBaseRefPtr sceneIndex; + + sceneIndex = result.stageSceneIndex = + UsdImagingStageSceneIndex::New( + HdOverlayContainerDataSource::OverlayedContainerDataSources( + _AdditionalStageSceneIndexInputArgs( + createInfo.displayUnloadedPrimsWithBounds), + createInfo.stageSceneIndexInputArgs)); + + result.stageSceneIndex->SetStage(createInfo.stage); + + if (createInfo.overridesSceneIndexCallback) { + sceneIndex = + createInfo.overridesSceneIndexCallback(sceneIndex); + } + + if (createInfo.displayUnloadedPrimsWithBounds) { + sceneIndex = + UsdImagingUnloadedDrawModeSceneIndex::New(sceneIndex); + } + + // Use extentsHint for default_/geometry purpose + HdContainerDataSourceHandle const extentInputArgs = + HdRetainedContainerDataSource::New( + UsdGeomTokens->purpose, + HdRetainedTypedSampledDataSource::New( + UsdGeomTokens->default_)); + + sceneIndex = + UsdImagingExtentResolvingSceneIndex::New( + sceneIndex, extentInputArgs); + + sceneIndex = + UsdImagingPiPrototypePropagatingSceneIndex::New(sceneIndex); + + sceneIndex = + UsdImagingNiPrototypePropagatingSceneIndex::New(sceneIndex); + + sceneIndex = result.selectionSceneIndex = + UsdImagingSelectionSceneIndex::New(sceneIndex); + + sceneIndex = + UsdImagingRenderSettingsFlatteningSceneIndex::New(sceneIndex); + + sceneIndex = + HdFlatteningSceneIndex::New( + sceneIndex, UsdImagingFlattenedDataSourceProviders()); + + if (createInfo.addDrawModeSceneIndex) { + sceneIndex = + UsdImagingDrawModeSceneIndex::New(sceneIndex, + /* inputArgs = */ nullptr); + } + + result.finalSceneIndex = sceneIndex; + + return result; +} + +PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/usdImaging/usdImaging/sceneIndices.h b/pxr/usdImaging/usdImaging/sceneIndices.h new file mode 100644 index 0000000000..c6f12edc02 --- /dev/null +++ b/pxr/usdImaging/usdImaging/sceneIndices.h @@ -0,0 +1,83 @@ +// +// Copyright 2023 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +#ifndef PXR_USD_IMAGING_USD_IMAGING_SCENE_INDICES_H +#define PXR_USD_IMAGING_USD_IMAGING_SCENE_INDICES_H + +#include "pxr/pxr.h" + +#include "pxr/usdImaging/usdImaging/api.h" + +#include "pxr/imaging/hd/dataSource.h" +#include "pxr/imaging/hd/sceneIndex.h" +#include "pxr/base/tf/declarePtrs.h" + +PXR_NAMESPACE_OPEN_SCOPE + +TF_DECLARE_REF_PTRS(UsdStage); +TF_DECLARE_REF_PTRS(UsdImagingStageSceneIndex); +TF_DECLARE_REF_PTRS(UsdImagingSelectionSceneIndex); + +/// Info needed to create a chain of filtering scene indices (resolving +/// e.g. USD native instancing) for clients to consume a UsdStage. +struct UsdImagingSceneIndicesCreateInfo +{ + using SceneIndexAppendCallback = + std::function< + HdSceneIndexBaseRefPtr(HdSceneIndexBaseRefPtr const &)>; + + /// Stage. Note that it can be set after the scene indices have been + /// created later by UsdImagingStageSceneIndex::SetStage. + UsdStageRefPtr stage; + /// Inputs to UsdImagingStageSceneIndex (note that + /// includeUnloadedPrims is set automatically when + ///displayUnloadedPrimsWithBounds is enabled). + HdContainerDataSourceHandle stageSceneIndexInputArgs; + /// Add scene index resolving usd draw mode. + bool addDrawModeSceneIndex = true; + /// Should we switch the draw mode for unloaded prims to + /// bounds. + bool displayUnloadedPrimsWithBounds = false; + /// A client can insert scene indices after stage scene index. + SceneIndexAppendCallback overridesSceneIndexCallback; +}; + +/// Some scene indices in the chain of filtering scene indices created +/// by UsdImagingInstantiateSceneIndices. +struct UsdImagingSceneIndices +{ + UsdImagingStageSceneIndexRefPtr stageSceneIndex; + UsdImagingSelectionSceneIndexRefPtr selectionSceneIndex; + HdSceneIndexBaseRefPtr finalSceneIndex; +}; + +/// Creates a chain of filtering scene indices for clients to consume +/// a UsdStage. +USDIMAGING_API +UsdImagingSceneIndices +UsdImagingInstantiateSceneIndices( + const UsdImagingSceneIndicesCreateInfo &createInfo); + +PXR_NAMESPACE_CLOSE_SCOPE + +#endif diff --git a/pxr/usdImaging/usdImagingGL/engine.cpp b/pxr/usdImaging/usdImagingGL/engine.cpp index 38f6a39bfa..a3f59deaec 100644 --- a/pxr/usdImaging/usdImagingGL/engine.cpp +++ b/pxr/usdImaging/usdImagingGL/engine.cpp @@ -25,23 +25,16 @@ #include "pxr/usdImaging/usdImagingGL/engine.h" #include "pxr/usdImaging/usdImaging/delegate.h" -#include "pxr/usdImaging/usdImaging/drawModeSceneIndex.h" -#include "pxr/usdImaging/usdImaging/extentResolvingSceneIndex.h" #include "pxr/usdImaging/usdImaging/selectionSceneIndex.h" #include "pxr/usdImaging/usdImaging/stageSceneIndex.h" -#include "pxr/usdImaging/usdImaging/niPrototypePropagatingSceneIndex.h" -#include "pxr/usdImaging/usdImaging/piPrototypePropagatingSceneIndex.h" -#include "pxr/usdImaging/usdImaging/unloadedDrawModeSceneIndex.h" -#include "pxr/usdImaging/usdImaging/renderSettingsFlatteningSceneIndex.h" #include "pxr/usdImaging/usdImaging/rootOverridesSceneIndex.h" -#include "pxr/usdImaging/usdImaging/flattenedDataSourceProviders.h" +#include "pxr/usdImaging/usdImaging/sceneIndices.h" #include "pxr/usd/usdGeom/tokens.h" #include "pxr/usd/usdGeom/camera.h" #include "pxr/usd/usdRender/tokens.h" #include "pxr/usd/usdRender/settings.h" -#include "pxr/imaging/hd/flatteningSceneIndex.h" #include "pxr/imaging/hd/materialBindingsSchema.h" #include "pxr/imaging/hd/light.h" #include "pxr/imaging/hd/rendererPlugin.h" @@ -1089,6 +1082,46 @@ UsdImagingGLEngine::_AppendSceneGlobalsSceneIndexCallback( return inputScene; } +HdSceneIndexBaseRefPtr +UsdImagingGLEngine::_AppendOverridesSceneIndices( + HdSceneIndexBaseRefPtr const &inputScene) +{ + HdSceneIndexBaseRefPtr sceneIndex = inputScene; + + static HdContainerDataSourceHandle const materialPruningInputArgs = + HdRetainedContainerDataSource::New( + HdsiPrimTypePruningSceneIndexTokens->primTypes, + HdRetainedTypedSampledDataSource::New( + { HdPrimTypeTokens->material }), + HdsiPrimTypePruningSceneIndexTokens->bindingToken, + HdRetainedTypedSampledDataSource::New( + HdMaterialBindingsSchema::GetSchemaToken())); + + // Prune scene materials prior to flattening inherited + // materials bindings and resolving material bindings + sceneIndex = _materialPruningSceneIndex = + HdsiPrimTypePruningSceneIndex::New( + sceneIndex, materialPruningInputArgs); + + static HdContainerDataSourceHandle const lightPruningInputArgs = + HdRetainedContainerDataSource::New( + HdsiPrimTypePruningSceneIndexTokens->primTypes, + HdRetainedTypedSampledDataSource::New( + HdLightPrimTypeTokens()), + HdsiPrimTypePruningSceneIndexTokens->doNotPruneNonPrimPaths, + HdRetainedTypedSampledDataSource::New( + false)); + + sceneIndex = _lightPruningSceneIndex = + HdsiPrimTypePruningSceneIndex::New( + sceneIndex, lightPruningInputArgs); + + sceneIndex = _rootOverridesSceneIndex = + UsdImagingRootOverridesSceneIndex::New(sceneIndex); + + return inputScene; +} + void UsdImagingGLEngine::_SetRenderDelegate( HdPluginRenderDelegateUniqueHandle &&renderDelegate) @@ -1134,82 +1167,19 @@ UsdImagingGLEngine::_SetRenderDelegate( _renderDelegate.Get(), {&_hgiDriver}, renderInstanceId)); if (_GetUseSceneIndices()) { - HdContainerDataSourceHandle const stageInputArgs = - HdRetainedContainerDataSource::New( - UsdImagingStageSceneIndexTokens->includeUnloadedPrims, - HdRetainedTypedSampledDataSource::New( - _displayUnloadedPrimsWithBounds)); - - // Create the scene index graph. - _sceneIndex = _stageSceneIndex = - UsdImagingStageSceneIndex::New(stageInputArgs); - - static HdContainerDataSourceHandle const materialPruningInputArgs = - HdRetainedContainerDataSource::New( - HdsiPrimTypePruningSceneIndexTokens->primTypes, - HdRetainedTypedSampledDataSource::New( - { HdPrimTypeTokens->material }), - HdsiPrimTypePruningSceneIndexTokens->bindingToken, - HdRetainedTypedSampledDataSource::New( - HdMaterialBindingsSchema::GetSchemaToken())); - - // Prune scene materials prior to flattening inherited - // materials bindings and resolving material bindings - _sceneIndex = _materialPruningSceneIndex = - HdsiPrimTypePruningSceneIndex::New( - _sceneIndex, materialPruningInputArgs); - - static HdContainerDataSourceHandle const lightPruningInputArgs = - HdRetainedContainerDataSource::New( - HdsiPrimTypePruningSceneIndexTokens->primTypes, - HdRetainedTypedSampledDataSource::New( - HdLightPrimTypeTokens()), - HdsiPrimTypePruningSceneIndexTokens->doNotPruneNonPrimPaths, - HdRetainedTypedSampledDataSource::New( - false)); - - _sceneIndex = _lightPruningSceneIndex = - HdsiPrimTypePruningSceneIndex::New( - _sceneIndex, lightPruningInputArgs); - - // Use extentsHint for default_/geometry purpose - HdContainerDataSourceHandle const extentInputArgs = - HdRetainedContainerDataSource::New( - UsdGeomTokens->purpose, - HdRetainedTypedSampledDataSource::New( - UsdGeomTokens->default_)); - - _sceneIndex = - UsdImagingExtentResolvingSceneIndex::New( - _sceneIndex, extentInputArgs); - - if (_displayUnloadedPrimsWithBounds) { - _sceneIndex = - UsdImagingUnloadedDrawModeSceneIndex::New(_sceneIndex); - } - - _sceneIndex = _rootOverridesSceneIndex = - UsdImagingRootOverridesSceneIndex::New(_sceneIndex); - - _sceneIndex = - UsdImagingPiPrototypePropagatingSceneIndex::New(_sceneIndex); + UsdImagingSceneIndicesCreateInfo info; + info.displayUnloadedPrimsWithBounds = _displayUnloadedPrimsWithBounds; + info.overridesSceneIndexCallback = + std::bind( + &UsdImagingGLEngine::_AppendOverridesSceneIndices, + this, std::placeholders::_1); + + const UsdImagingSceneIndices sceneIndices = + UsdImagingInstantiateSceneIndices(info); - _sceneIndex = - UsdImagingNiPrototypePropagatingSceneIndex::New(_sceneIndex); - - _sceneIndex = _selectionSceneIndex = - UsdImagingSelectionSceneIndex::New(_sceneIndex); - - _sceneIndex = - UsdImagingRenderSettingsFlatteningSceneIndex::New(_sceneIndex); - - _sceneIndex = - HdFlatteningSceneIndex::New( - _sceneIndex, UsdImagingFlattenedDataSourceProviders()); - - _sceneIndex = - UsdImagingDrawModeSceneIndex::New(_sceneIndex, - /* inputArgs = */ nullptr); + _stageSceneIndex = sceneIndices.stageSceneIndex; + _selectionSceneIndex = sceneIndices.selectionSceneIndex; + _sceneIndex = sceneIndices.finalSceneIndex; _sceneIndex = _displayStyleSceneIndex = HdsiLegacyDisplayStyleOverrideSceneIndex::New(_sceneIndex); diff --git a/pxr/usdImaging/usdImagingGL/engine.h b/pxr/usdImaging/usdImagingGL/engine.h index 9ea2e84232..5d9165c081 100644 --- a/pxr/usdImaging/usdImagingGL/engine.h +++ b/pxr/usdImaging/usdImagingGL/engine.h @@ -716,6 +716,10 @@ class UsdImagingGLEngine const std::string &renderInstanceId, const HdSceneIndexBaseRefPtr &inputScene, const HdContainerDataSourceHandle &inputArgs); + + HdSceneIndexBaseRefPtr + _AppendOverridesSceneIndices( + const HdSceneIndexBaseRefPtr &inputScene); UsdImagingGLEngine_Impl::_AppSceneIndicesSharedPtr _appSceneIndices; From 7369a8162be01e73575d0b0cb757ee6516b8babb Mon Sep 17 00:00:00 2001 From: matthewcpp Date: Tue, 25 Jul 2023 15:31:10 -0700 Subject: [PATCH 073/352] Split UsdUtils dependencies header / implementation file up into multiple files for easier maintencne. This chage does not have any effect on existing functionality. (Internal change: 2284136) --- pxr/usd/usdUtils/CMakeLists.txt | 4 + pxr/usd/usdUtils/assetLocalization.cpp | 971 ++++++++++++++++ pxr/usd/usdUtils/assetLocalization.h | 300 +++++ pxr/usd/usdUtils/dependencies.cpp | 1450 +----------------------- pxr/usd/usdUtils/dependencies.h | 83 +- pxr/usd/usdUtils/usdzPackage.cpp | 336 ++++++ pxr/usd/usdUtils/usdzPackage.h | 123 ++ 7 files changed, 1741 insertions(+), 1526 deletions(-) create mode 100644 pxr/usd/usdUtils/assetLocalization.cpp create mode 100644 pxr/usd/usdUtils/assetLocalization.h create mode 100644 pxr/usd/usdUtils/usdzPackage.cpp create mode 100644 pxr/usd/usdUtils/usdzPackage.h diff --git a/pxr/usd/usdUtils/CMakeLists.txt b/pxr/usd/usdUtils/CMakeLists.txt index 1c207f78e3..06648a7f6b 100644 --- a/pxr/usd/usdUtils/CMakeLists.txt +++ b/pxr/usd/usdUtils/CMakeLists.txt @@ -30,6 +30,10 @@ pxr_library(usdUtils stitch stitchClips timeCodeRange + usdzPackage + + PRIVATE_CLASSES + assetLocalization PUBLIC_HEADERS api.h diff --git a/pxr/usd/usdUtils/assetLocalization.cpp b/pxr/usd/usdUtils/assetLocalization.cpp new file mode 100644 index 0000000000..c2a2493499 --- /dev/null +++ b/pxr/usd/usdUtils/assetLocalization.cpp @@ -0,0 +1,971 @@ +// +// Copyright 2023 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +/// +/// \file usdUtils/assetLocalization.cpp +#include "pxr/pxr.h" +#include "pxr/usd/usdUtils/assetLocalization.h" +#include "pxr/usd/usdUtils/debugCodes.h" + +#include "pxr/usd/ar/packageUtils.h" +#include "pxr/usd/ar/resolver.h" +#include "pxr/usd/sdf/assetPath.h" +#include "pxr/usd/sdf/fileFormat.h" +#include "pxr/usd/sdf/layerUtils.h" +#include "pxr/usd/sdf/primSpec.h" +#include "pxr/usd/sdf/reference.h" +#include "pxr/usd/sdf/types.h" +#include "pxr/usd/sdf/variantSetSpec.h" +#include "pxr/usd/sdf/variantSpec.h" +#include "pxr/usd/usd/clipsAPI.h" +#include "pxr/usd/usd/stage.h" +#include "pxr/usd/usd/tokens.h" +#include "pxr/usd/usdShade/udimUtils.h" + +#include "pxr/base/tf/fileUtils.h" +#include "pxr/base/tf/pathUtils.h" +#include "pxr/base/tf/stringUtils.h" +#include "pxr/base/trace/trace.h" + +#include +#include + +PXR_NAMESPACE_OPEN_SCOPE + +UsdUtils_FileAnalyzer::UsdUtils_FileAnalyzer(const std::string &referencePath, + const std::string &resolvedPath, + UsdUtils_FileAnalyzer::ReferenceType refTypesToInclude, + bool enableMetadataFiltering, + const RemapAssetPathFunc &remapPathFunc, + const ProcessAssetPathFunc &processPathFunc) : + _filePath(resolvedPath), + _refTypesToInclude(refTypesToInclude), + _metadataFilteringEnabled(enableMetadataFiltering), + _remapPathFunc(remapPathFunc), + _processPathFunc(processPathFunc) + { + // If this file can be opened on a USD stage or referenced into a USD + // stage via composition, then analyze the file, collect & update all + // references. If not, return early. + if (!UsdStage::IsSupportedFile(referencePath)) { + return; + } + + TRACE_FUNCTION(); + + _layer = SdfLayer::FindOrOpen(referencePath); + if (!_layer) { + TF_WARN("Unable to open layer at path @%s@.", + referencePath.c_str()); + return; + } + + // If the newly opened layer is a package, it we do not need to traverse + // into it as the entire package will be included as a dependency. + if (_layer->GetFileFormat()->IsPackage()) { + return; + } + + _AnalyzeDependencies(); + } + + // overload version of the above constructor that takes a \c layer instead + // of a filePath. + UsdUtils_FileAnalyzer::UsdUtils_FileAnalyzer(const SdfLayerHandle& layer, + UsdUtils_FileAnalyzer::ReferenceType refTypesToInclude, + bool enableMetadataFiltering, + const RemapAssetPathFunc &remapPathFunc, + const ProcessAssetPathFunc &processPathFunc) : + _layer(layer), + _refTypesToInclude(refTypesToInclude), + _metadataFilteringEnabled(enableMetadataFiltering), + _remapPathFunc(remapPathFunc), + _processPathFunc(processPathFunc) + { + // In the case we have come across a package layer, traversal can be + // halted as the entire package will be included as a dependency. + if (!_layer || _layer->GetFileFormat()->IsPackage()) { + return; + } + + _filePath = _layer->GetRealPath(); + + _AnalyzeDependencies(); + } + +std::string +UsdUtils_FileAnalyzer::_ProcessDependency(const std::string &rawRefPath, + const DependencyType &DependencyType) +{ + if (_processPathFunc) { + _processPathFunc(rawRefPath, GetLayer(), DependencyType); + } + + return _RemapDependency(rawRefPath); +} + +std::string +UsdUtils_FileAnalyzer::_RemapDependency(const std::string &rawRefPath) { + if (_remapPathFunc) { + return _remapPathFunc(rawRefPath, GetLayer()); + } + + // Return the raw reference path if there's no asset path remapping + // function. + return rawRefPath; +} + +VtValue +UsdUtils_FileAnalyzer::_UpdateAssetValue(const VtValue &val) +{ + return _UpdateAssetValue( + std::string(), + val, + [](const std::string &) { return true; } + ); +} + +VtValue +UsdUtils_FileAnalyzer::_UpdateAssetValue(const std::string &key, + const VtValue &val, + const ShouldProcessAssetValueFunc shouldProcessFunc) +{ + if (val.IsHolding()) { + auto assetPath = val.UncheckedGet(); + const std::string& rawAssetPath = assetPath.GetAssetPath(); + if (!rawAssetPath.empty()) { + const std::string remappedPath = shouldProcessFunc(key) + ? _ProcessDependency(rawAssetPath, DependencyType::Reference) + : _RemapDependency(rawAssetPath); + + return remappedPath.empty() ? + VtValue() : VtValue(SdfAssetPath(remappedPath)); + } + } else if (val.IsHolding>()) { + VtArray updatedArray; + const VtArray& originalArray = + val.UncheckedGet< VtArray >(); + + // ensure explicit empty array value is preserved + if (originalArray.empty()) { + return VtValue::Take(updatedArray); + } + + for (const SdfAssetPath& assetPath : originalArray) { + const std::string& rawAssetPath = assetPath.GetAssetPath(); + if (!rawAssetPath.empty()) { + const std::string remappedPath = shouldProcessFunc(key) + ? _ProcessDependency(rawAssetPath, DependencyType::Reference) + : _RemapDependency(rawAssetPath); + + if (!remappedPath.empty()) { + updatedArray.push_back(SdfAssetPath(remappedPath)); + } + } + } + return updatedArray.empty() ? VtValue() : VtValue::Take(updatedArray); + } + else if (val.IsHolding()) { + VtDictionary updatedDict; + const VtDictionary& originalDict = val.UncheckedGet(); + + // ensure explicit empty dict value is preserved + if (originalDict.empty()) { + return VtValue::Take(updatedDict); + } + + for (const auto& p : originalDict) { + const std::string dictKey = key.empty() ? key : key + ':' + p.first; + VtValue updatedVal = + _UpdateAssetValue(dictKey, p.second, shouldProcessFunc); + if (!updatedVal.IsEmpty()) { + updatedDict[p.first] = std::move(updatedVal); + } + } + return updatedDict.empty() ? VtValue() : VtValue::Take(updatedDict); + } + + return val; +} + +void +UsdUtils_FileAnalyzer::_ProcessSublayers() +{ + if (_remapPathFunc) { + _layer->GetSubLayerPaths().ModifyItemEdits( + [this](const std::string& path) { + std::string remappedPath = + _ProcessDependency(path, DependencyType::Sublayer); + return remappedPath.empty() ? + boost::optional() : + boost::optional(std::move(remappedPath)); + }); + } else { + for (const auto &subLayer: _layer->GetSubLayerPaths()) { + _ProcessDependency(subLayer, DependencyType::Sublayer); + } + } +} + +template +boost::optional +UsdUtils_FileAnalyzer::_RemapRefOrPayload(const RefOrPayloadType &refOrPayload) +{ + // If this is a local (or self) reference or payload, there's no asset path + // to update. + if (refOrPayload.GetAssetPath().empty()) { + return refOrPayload; + } + + std::string remappedPath = + _ProcessDependency(refOrPayload.GetAssetPath(), DEP_TYPE); + + // If the remapped path was empty, return none to indicate this reference + // or payload should be removed. + if (remappedPath.empty()) { + return boost::none; + } + + // If the path was not remapped to a different path, then return the + // incoming payload unmodified. + if (remappedPath == refOrPayload.GetAssetPath()) { + return refOrPayload; + } + + // The payload or reference path was remapped, hence construct a new + // SdfPayload or SdfReference object with the remapped path. + RefOrPayloadType remappedRefOrPayload = refOrPayload; + remappedRefOrPayload.SetAssetPath(remappedPath); + return remappedRefOrPayload; +} + +void +UsdUtils_FileAnalyzer::_ProcessPayloads(const SdfPrimSpecHandle &primSpec) +{ + if (_remapPathFunc) { + primSpec->GetPayloadList().ModifyItemEdits( + [this](const SdfPayload& payload) { + return _RemapRefOrPayload( + payload); + }); + } else { + for (SdfPayload const& payload: + primSpec->GetPayloadList().GetAddedOrExplicitItems()) { + + // If the asset path is empty this is a local payload. We can ignore + // these since they refer to the same layer where the payload was + // authored. + if (!payload.GetAssetPath().empty()) { + _ProcessDependency(payload.GetAssetPath(), + DependencyType::Payload); + } + } + } +} + +void +UsdUtils_FileAnalyzer::_ProcessProperties(const SdfPrimSpecHandle &primSpec) +{ + // Include external references in property values and metadata only if + // the client is interested in all reference types. i.e. return early if + // _refTypesToInclude is CompositionOnly. + if (_refTypesToInclude == + UsdUtils_FileAnalyzer::ReferenceType::CompositionOnly) + return; + + // XXX:2016-04-14 Note that we use the field access API + // here rather than calling GetAttributes, as creating specs for + // large numbers of attributes, most of which are *not* asset + // path-valued and therefore not useful here, is expensive. + // + const VtValue propertyNames = + primSpec->GetField(SdfChildrenKeys->PropertyChildren); + + if (!propertyNames.IsHolding>()) { + return; + } + + for (const auto& name : propertyNames.UncheckedGet>()) { + // For every property + // Build an SdfPath to the property + const SdfPath path = primSpec->GetPath().AppendProperty(name); + + // Check property metadata + for (const TfToken& infoKey : _layer->ListFields(path)) { + if (infoKey != SdfFieldKeys->Default && + infoKey != SdfFieldKeys->TimeSamples) { + + VtValue value = _layer->GetField(path, infoKey); + VtValue updatedValue = _UpdateAssetValue(value); + if (_remapPathFunc && value != updatedValue) { + _layer->SetField(path, infoKey, updatedValue); + } + } + } + + // Check property existence + const VtValue vtTypeName = + _layer->GetField(path, SdfFieldKeys->TypeName); + if (!vtTypeName.IsHolding()) { + continue; + } + + const TfToken typeName = vtTypeName.UncheckedGet(); + if (typeName == SdfValueTypeNames->Asset || + typeName == SdfValueTypeNames->AssetArray) { + + // Check default value + VtValue defValue = _layer->GetField(path, SdfFieldKeys->Default); + VtValue updatedDefValue = _UpdateAssetValue(defValue); + if (_remapPathFunc && defValue != updatedDefValue) { + _layer->SetField(path, SdfFieldKeys->Default, updatedDefValue); + } + + // Check timeSample values + for (double t : _layer->ListTimeSamplesForPath(path)) { + VtValue timeSampleVal; + if (_layer->QueryTimeSample(path, t, &timeSampleVal)) { + VtValue updatedVal = _UpdateAssetValue(timeSampleVal); + if (_remapPathFunc && timeSampleVal != updatedVal) { + + if (updatedVal.IsEmpty()) { + _layer->EraseTimeSample(path, t); + } + else { + _layer->SetTimeSample(path, t, updatedVal); + } + } + } + } + } + } +} + +// Determines if a metadata key should be processed. +// XXX: Currently operates on a single hardcoded value, but in the future we +// would like to give users the ability to specify keys to filter. +static +bool _IgnoreAssetInfoIdentifier(const std::string &key) { + return !TfStringEndsWith(key, "assetInfo:identifier"); +} + +void +UsdUtils_FileAnalyzer::_ProcessMetadata(const SdfPrimSpecHandle &primSpec) +{ + if (_refTypesToInclude == UsdUtils_FileAnalyzer::ReferenceType::All) { + for (const TfToken& infoKey : primSpec->GetMetaDataInfoKeys()) { + VtValue value = primSpec->GetInfo(infoKey); + VtValue updatedValue = _metadataFilteringEnabled + ? _UpdateAssetValue(infoKey, value, _IgnoreAssetInfoIdentifier) + : _UpdateAssetValue(value); + if (_remapPathFunc && value != updatedValue) { + if (updatedValue.IsEmpty()) { + primSpec->ClearInfo(infoKey); + } + else { + primSpec->SetInfo(infoKey, updatedValue); + } + } + } + } + + // Process clips["templateAssetPath"], which is a string value + // containing one or more #'s. See + // UsdClipsAPI::GetClipTemplateAssetPath for details. + VtValue clipsValue = primSpec->GetInfo(UsdTokens->clips); + if (!clipsValue.IsEmpty() && clipsValue.IsHolding()) { + const VtDictionary origClipsDict = + clipsValue.UncheckedGet(); + + // Create a copy of the clips dictionary, as we may have to modify it. + VtDictionary clipsDict = origClipsDict; + for (auto &clipSetNameAndDict : clipsDict) { + if (clipSetNameAndDict.second.IsHolding()) { + VtDictionary clipDict = + clipSetNameAndDict.second.UncheckedGet(); + + if (VtDictionaryIsHolding(clipDict, + UsdClipsAPIInfoKeys->templateAssetPath + .GetString())) { + const std::string &templateAssetPath = + VtDictionaryGet(clipDict, + UsdClipsAPIInfoKeys->templateAssetPath + .GetString()); + + if (templateAssetPath.empty()) { + continue; + } + + // Remap templateAssetPath if there's a remap function and + // update the clip dictionary. + // This retains the #s in the templateAssetPath? + if (_remapPathFunc) { + // Not adding a dependency on the templated asset path + // since it can't be resolved by the resolver. + clipDict[UsdClipsAPIInfoKeys->templateAssetPath] = + VtValue(_remapPathFunc(templateAssetPath, + GetLayer())); + clipsDict[clipSetNameAndDict.first] = VtValue(clipDict); + } + + // Compute the resolved location of the clips + // directory, so we can do a TfGlob for the pattern. + // This contains a '/' in the end. + const std::string clipsDir = TfGetPathName( + templateAssetPath); + // Resolve clipsDir relative to this layer. + if (clipsDir.empty()) { + TF_WARN("Invalid template asset path '%s'.", + templateAssetPath.c_str()); + continue; + } + const std::string clipsDirAssetPath = + SdfComputeAssetPathRelativeToLayer(_layer, clipsDir); + + // We don't attempt to resolve the clips directory asset + // path, since Ar does not support directory-path + // resolution. + if (!TfIsDir(clipsDirAssetPath)) { + TF_WARN("Clips directory '%s' is not a valid directory " + "on the filesystem.", clipsDirAssetPath.c_str()); + continue; + } + + std::string clipsBaseName = TfGetBaseName( + templateAssetPath); + std::string globPattern = TfStringCatPaths( + clipsDirAssetPath, + TfStringReplace(clipsBaseName, "#", "*")); + const std::vector clipAssetRefs = + TfGlob(globPattern); + for (auto &clipAsset : clipAssetRefs) { + // Reconstruct the raw, unresolved clip reference, for + // which the dependency must be processed. + // + // clipsDir contains a '/' in the end, but + // clipsDirAssetPath does not. Hence, add a '/' to + // clipsDirAssetPath before doing the replace. + std::string rawClipRef = TfStringReplace( + clipAsset, clipsDirAssetPath + '/', clipsDir); + _ProcessDependency(rawClipRef, + DependencyType::Reference); + } + } + } + } + + // Update the clips dictionary only if it has been modified. + if (_remapPathFunc && clipsDict != origClipsDict) { + primSpec->SetInfo(UsdTokens->clips, VtValue(clipsDict)); + } + } +} + +void +UsdUtils_FileAnalyzer::_ProcessReferences(const SdfPrimSpecHandle &primSpec) +{ + if (_remapPathFunc) { + primSpec->GetReferenceList().ModifyItemEdits( + [this](const SdfReference& ref) { + return _RemapRefOrPayload(ref); + }); + } else { + for (SdfReference const& ref: + primSpec->GetReferenceList().GetAddedOrExplicitItems()) { + + // If the asset path is empty this is a local reference. We can + // ignore these since they refer to the same layer where the + // reference was authored. + if (!ref.GetAssetPath().empty()) { + _ProcessDependency(ref.GetAssetPath(), + DependencyType::Reference); + } + } + } +} + +void +UsdUtils_FileAnalyzer::_AnalyzeDependencies() +{ + TRACE_FUNCTION(); + + _ProcessSublayers(); + + std::stack dfs; + dfs.push(_layer->GetPseudoRoot()); + + while (!dfs.empty()) { + SdfPrimSpecHandle curr = dfs.top(); + dfs.pop(); + + // Metadata is processed even on the pseudoroot, which ensures + // we process layer metadata properly. + _ProcessMetadata(curr); + if (curr != _layer->GetPseudoRoot()) { + _ProcessPayloads(curr); + _ProcessProperties(curr); + _ProcessReferences(curr); + } + + // variants "children" + for (const SdfVariantSetsProxy::value_type& p : + curr->GetVariantSets()) { + for (const SdfVariantSpecHandle& variantSpec : + p.second->GetVariantList()) { + dfs.push(variantSpec->GetPrimSpec()); + } + } + + // children + for (const SdfPrimSpecHandle& child : curr->GetNameChildren()) { + dfs.push(child); + } + } +} + +class UsdUtils_AssetLocalizer::_DirectoryRemapper { +public: + _DirectoryRemapper() : _nextDirectoryNum(0) { } + + // Remap the given file path by replacing the directory with a + // unique, artifically generated name. The generated directory name + // will be reused if the original directory is seen again on a + // subsequent call to Remap. + std::string Remap(const std::string& filePath) + { + if (ArIsPackageRelativePath(filePath)) { + std::pair packagePath = + ArSplitPackageRelativePathOuter(filePath); + return ArJoinPackageRelativePath( + Remap(packagePath.first), packagePath.second); + } + + const std::string pathName = TfGetPathName(filePath); + if (pathName.empty()) { + return filePath; + } + + const std::string baseName = TfGetBaseName(filePath); + + auto insertStatus = _oldToNewDirectory.insert({pathName, ""}); + if (insertStatus.second) { + insertStatus.first->second = + TfStringPrintf("%zu", _nextDirectoryNum++); + } + + return TfStringCatPaths(insertStatus.first->second, baseName); + } + +private: + size_t _nextDirectoryNum; + std::unordered_map _oldToNewDirectory; +}; + +UsdUtils_AssetLocalizer::UsdUtils_AssetLocalizer(const SdfAssetPath &assetPath, + const std::string &destDir, + bool enableMetadataFiltering, + const std::string &firstLayerName, + const std::string &origRootFilePath, + const std::vector &dependenciesToSkip) +{ + _DirectoryRemapper dirRemapper; + + auto &layerDependenciesMap = _layerDependenciesMap; + + auto &resolver = ArGetResolver(); + + const std::string assetPathStr = assetPath.GetAssetPath(); + const bool isAnonymousLayer = + SdfLayer::IsAnonymousLayerIdentifier(assetPathStr); + std::string rootFilePath; + + if (!isAnonymousLayer) { + rootFilePath = resolver.Resolve(assetPathStr); + + // Ensure that the resolved path is not empty. + if (rootFilePath.empty()) { + return; + } + } + + // Record all dependencies in layerDependenciesMap so we can recurse + // on them. + const auto processPathFunc = + [&layerDependenciesMap]( + const std::string &ap, const SdfLayerRefPtr &layer, + UsdUtils_FileAnalyzer::DependencyType DependencyType) { + layerDependenciesMap[layer].push_back(ap); + }; + + // If destination directory is an empty string, skip any remapping + // of asset paths. + const auto remapAssetPathFunc = destDir.empty() ? + UsdUtils_FileAnalyzer::RemapAssetPathFunc() : + [&layerDependenciesMap, &dirRemapper, &destDir, &rootFilePath, + &origRootFilePath, &firstLayerName]( + const std::string &ap, + const SdfLayerRefPtr &layer) { + + return _RemapAssetPath(ap, layer, + origRootFilePath, rootFilePath, firstLayerName, + &dirRemapper, /* isRelativePath */ nullptr); + }; + + // Set of all seen files. We maintain this set to avoid redundant + // dependency analysis of already seen files. + std::unordered_set seenFiles; + + std::stack filesToLocalize; + + if (isAnonymousLayer) + { + SdfLayerRefPtr layer = SdfLayer::Find(assetPathStr); + if (!layer) { + return; + } + + rootFilePath = "anon_layer." + layer->GetFileExtension(); + + seenFiles.insert(assetPathStr); + std::string destFilePath = TfStringCatPaths(destDir, + TfGetBaseName(rootFilePath)); + filesToLocalize.emplace(destFilePath, UsdUtils_FileAnalyzer( + layer, + /*refTypesToInclude*/ UsdUtils_FileAnalyzer::ReferenceType::All, + /*enableMetadataFiltering*/ enableMetadataFiltering, + remapAssetPathFunc, processPathFunc)); + } + else + { + seenFiles.insert(rootFilePath); + std::string destFilePath = TfStringCatPaths(destDir, + TfGetBaseName(rootFilePath)); + filesToLocalize.emplace(destFilePath, UsdUtils_FileAnalyzer( + assetPathStr, rootFilePath, + /*refTypesToInclude*/ UsdUtils_FileAnalyzer::ReferenceType::All, + /*enableMetadataFiltering*/ enableMetadataFiltering, + remapAssetPathFunc, processPathFunc)); + } + + while (!filesToLocalize.empty()) { + // Copying data here since we're about to pop. + const DestFilePathAndAnalyzer destFilePathAndAnalyzer = + filesToLocalize.top(); + filesToLocalize.pop(); + + auto &destFilePath = destFilePathAndAnalyzer.first; + auto &fileAnalyzer = destFilePathAndAnalyzer.second; + + if (!fileAnalyzer.GetLayer()) { + const std::string &srcFilePath = fileAnalyzer.GetFilePath(); + if (UsdShadeUdimUtils::IsUdimIdentifier(srcFilePath)) { + _ResolveUdimPaths(srcFilePath, destFilePath); + } else { + _fileCopyMap.emplace_back(srcFilePath, destFilePath); + } + + continue; + } + + _layerExportMap.emplace_back(fileAnalyzer.GetLayer(), + destFilePath); + + const auto &layerDepIt = layerDependenciesMap.find( + fileAnalyzer.GetLayer()); + + if (layerDepIt == _layerDependenciesMap.end()) { + // The layer has no external dependencies. + continue; + } + + for (std::string ref : layerDepIt->second) { + // If this is a package-relative path, then simply copy the + // package over. + // Note: recursive search for dependencies ends here. + // This is because we don't want to be modifying packaged + // assets during asset isolation or archival. + // XXX: We may want to reconsider this approach in the future. + if (ArIsPackageRelativePath(ref)) { + ref = ArSplitPackageRelativePathOuter(ref).first; + } + + const std::string refAssetPath = + SdfComputeAssetPathRelativeToLayer( + fileAnalyzer.GetLayer(), ref); + std::string resolvedRefFilePath; + + // Specially handle UDIM paths + if (UsdShadeUdimUtils::IsUdimIdentifier(ref)) { + resolvedRefFilePath = UsdShadeUdimUtils::ResolveUdimPath( + ref, fileAnalyzer.GetLayer()); + } else { + resolvedRefFilePath = resolver.Resolve(refAssetPath); + } + + if (resolvedRefFilePath.empty()) { + TF_WARN("Failed to resolve reference @%s@ with computed " + "asset path @%s@ found in layer @%s@.", + ref.c_str(), + refAssetPath.c_str(), + fileAnalyzer.GetFilePath().c_str()); + + _unresolvedAssetPaths.push_back(refAssetPath); + continue; + } + + // Check if this dependency must skipped. + if (std::find(dependenciesToSkip.begin(), + dependenciesToSkip.end(), resolvedRefFilePath) != + dependenciesToSkip.end()) { + continue; + } + + // Given the way our remap function (_RemapAssetPath) works, we + // should only have to copy every resolved file once during + // localization. + if (!seenFiles.insert(resolvedRefFilePath).second) { + continue; + } + + // XXX: We don't localize directory references. Should we copy + // the entire directory over? + if (TfIsDir(resolvedRefFilePath)) { + continue; + } + + bool isRelativePath = false; + std::string remappedRef = _RemapAssetPath(ref, + fileAnalyzer.GetLayer(), + origRootFilePath, rootFilePath, firstLayerName, + &dirRemapper, &isRelativePath); + + // If it's a relative path, construct the full path relative to + // the final (destination) location of the reference-containing + // file. + const std::string destDirForRef = + isRelativePath ? TfGetPathName(destFilePath) : destDir; + const std::string destFilePathForRef = TfStringCatPaths( + destDirForRef, remappedRef); + + filesToLocalize.emplace(destFilePathForRef, UsdUtils_FileAnalyzer( + refAssetPath, resolvedRefFilePath, + /* refTypesToInclude */ UsdUtils_FileAnalyzer::ReferenceType::All, + /*enableMetadataFiltering*/ enableMetadataFiltering, + remapAssetPathFunc, processPathFunc)); + } + } +} + +void UsdUtils_AssetLocalizer::_ResolveUdimPaths( + const std::string &srcFilePath, + const std::string &destFilePath) +{ + // Since the source path should already be pre-resolved, + // a proper layer doesn't have to be provided + const std::vector resolvedPaths = + UsdShadeUdimUtils::ResolveUdimTilePaths(srcFilePath, SdfLayerHandle()); + + for (const auto & resolvedPath : resolvedPaths) { + const std::string destUdimPath = + UsdShadeUdimUtils::ReplaceUdimPattern( + destFilePath, resolvedPath.second); + + _fileCopyMap.emplace_back(resolvedPath.first, destUdimPath); + } +} + +std::string +UsdUtils_AssetLocalizer::_RemapAssetPath(const std::string &refPath, + const SdfLayerRefPtr &layer, + std::string origRootFilePath, + std::string rootFilePath, + const std::string &firstLayerName, + _DirectoryRemapper *dirRemapper, + bool *isRelativePathOut) +{ + auto &resolver = ArGetResolver(); + + const bool isContextDependentPath = + resolver.IsContextDependentPath(refPath); + + // We want to maintain relative paths where possible to keep localized + // assets as close as possible to their original layout. However, we + // skip this for context-dependent paths because those must be resolved + // to determine what asset is being referred to. + if (!isContextDependentPath) { + // We determine if refPath is relative by creating identifiers with + // and without the anchoring layer and seeing if they're the same. + // If they aren't, then refPath depends on the anchor, so we assume + // it's relative. + const std::string anchored = + resolver.CreateIdentifier(refPath, layer->GetResolvedPath()); + const std::string unanchored = + resolver.CreateIdentifier(refPath); + const bool isRelativePath = (anchored != unanchored); + + if (isRelativePath) { + // Asset localization is rooted at the location of the root layer. + // If this relative path points somewhere outside that location + // (e.g., a relative path like "../foo.jpg"). there will be nowhere + // to put this asset in the localized asset structure. In that case, + // we need to remap this path. Otherwise, we can keep the relative + // asset path as-is. + const ArResolvedPath resolvedRefPath = resolver.Resolve(anchored); + const bool refPathIsOutsideAssetLocation = + !TfStringStartsWith( + TfNormPath(TfGetPathName(resolvedRefPath)), + TfNormPath(TfGetPathName(rootFilePath))); + + if (!refPathIsOutsideAssetLocation) { + if (isRelativePathOut) { + *isRelativePathOut = true; + } + + // Return relative paths unmodified. + return refPath; + } + } + } + + if (isRelativePathOut) { + *isRelativePathOut = false; + } + + std::string result = refPath; + if (isContextDependentPath) { + // Absolutize the search path, to avoid collisions resulting from the + // same search path resolving to different paths in different resolver + // contexts. + const std::string refAssetPath = + SdfComputeAssetPathRelativeToLayer(layer, refPath); + const std::string refFilePath = resolver.Resolve(refAssetPath); + + const bool resolveOk = !refFilePath.empty(); + + if (resolveOk) { + result = refFilePath; + } else { + // Failed to resolve, hence retain the reference as is. + result = refAssetPath; + } + } + + // Normalize paths compared below to account for path format differences. + const std::string layerPath = + TfNormPath(layer->GetRealPath()); + result = TfNormPath(result); + rootFilePath = TfNormPath(rootFilePath); + origRootFilePath = TfNormPath(origRootFilePath); + + bool resultPointsToRoot = ((result == rootFilePath) || + (result == origRootFilePath)); + // If this is a self-reference, then remap to a relative path that points + // to the file itself. + if (result == layerPath) { + // If this is a self-reference in the root layer and we're renaming the + // root layer, simply set the reference path to point to the renamed + // root layer. + return resultPointsToRoot && !firstLayerName.empty() ? + firstLayerName : TfGetBaseName(result); + } + + // References to the original (unflattened) root file need to be remapped + // to point to the new root file. + if (resultPointsToRoot && layerPath == rootFilePath) { + return !firstLayerName.empty() ? firstLayerName : TfGetBaseName(result); + } + + // Result is now an absolute or a repository path. Simply strip off the + // leading slashes to make it relative. + // Strip off any drive letters. + if (result.size() >= 2 && result[1] == ':') { + result.erase(0, 2); + } + + // Strip off any initial slashes. + result = TfStringTrimLeft(result, "/"); + + // Remap the path to an artifically-constructed one so that the source + // directory structure isn't embedded in the final .usdz file. Otherwise, + // sensitive information (e.g. usernames, movie titles...) in directory + // names may be inadvertently leaked in the .usdz file. + return dirRemapper->Remap(result); +} + +void +UsdUtils_ExtractExternalReferences( + const std::string& filePath, + const UsdUtils_FileAnalyzer::ReferenceType &refTypesToInclude, + std::vector* subLayers, + std::vector* references, + std::vector* payloads) +{ + auto &resolver = ArGetResolver(); + + const auto processPathFunc = [&subLayers, &references, &payloads]( + const std::string &assetPath, const SdfLayerRefPtr &layer, + const UsdUtils_FileAnalyzer::DependencyType &dependencyType) + { + switch(dependencyType) { + case UsdUtils_FileAnalyzer::DependencyType::Reference: + references->push_back(assetPath); + break; + + case UsdUtils_FileAnalyzer::DependencyType::Sublayer: + subLayers->push_back(assetPath); + break; + + case UsdUtils_FileAnalyzer::DependencyType::Payload: + payloads->push_back(assetPath); + break; + } + }; + + // We only care about knowing what the dependencies are. Hence, set + // remapPathFunc to empty. + if (SdfLayer::IsAnonymousLayerIdentifier(filePath)) { + UsdUtils_FileAnalyzer(SdfLayer::Find(filePath), refTypesToInclude, + /*enableMetadataFiltering*/ false, + /*remapPathFunc*/ {}, + processPathFunc); + } + else { + UsdUtils_FileAnalyzer(filePath, resolver.Resolve(filePath), + refTypesToInclude, + /*enableMetadataFiltering*/ false, + /*remapPathFunc*/ {}, + processPathFunc); + } + + + // Sort and remove duplicates + std::sort(references->begin(), references->end()); + references->erase(std::unique(references->begin(), references->end()), + references->end()); + std::sort(payloads->begin(), payloads->end()); + payloads->erase(std::unique(payloads->begin(), payloads->end()), + payloads->end()); +} + +PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/usd/usdUtils/assetLocalization.h b/pxr/usd/usdUtils/assetLocalization.h new file mode 100644 index 0000000000..9ab65ffb0d --- /dev/null +++ b/pxr/usd/usdUtils/assetLocalization.h @@ -0,0 +1,300 @@ +// +// Copyright 2023 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +#ifndef PXR_USD_USD_UTILS_ASSET_LOCALIZATION_H +#define PXR_USD_USD_UTILS_ASSET_LOCALIZATION_H + +/// \file usdUtils/assetLocalization.h + + +#include "pxr/pxr.h" +#include "pxr/usd/sdf/layer.h" +#include "pxr/usd/usdUtils/api.h" + +#include +#include +#include + +PXR_NAMESPACE_OPEN_SCOPE + +class UsdUtils_FileAnalyzer { +public: + // Enum class representing the type of dependency. + enum class DependencyType { + Reference, + Sublayer, + Payload + }; + + // Enum class representing the external reference types that must be included + // in the search for external dependencies. + enum class ReferenceType { + // Include only references that affect composition. + CompositionOnly, + + // Include all external references including asset-valued attributes + // and non-composition metadata containing SdfAssetPath values. + All + }; + + // The asset remapping function's signature. + // It takes a given asset path and the layer it was found in and returns + // the corresponding remapped path. + // + // The layer is used to resolve the asset path in cases where the given + // asset path is a search path or a relative path. + using RemapAssetPathFunc = std::function; + + // Takes the asset path and the type of dependency it is and does some + // arbitrary processing (like enumerating dependencies). + using ProcessAssetPathFunc = std::function; + + // Attempts to open the file at \p referencePath and analyzes its external + // dependencies. Opening the layer using this non-resolved path ensures + // that layer metadata is correctly set. If the file cannot be opened then + // the analyzer simply retains the \p resolvedPath for later use. + // + // For each dependency that is detected, the provided (optional) callback + // functions are invoked. + // + // \p processPathFunc is invoked first with the raw (un-remapped) path. + // Then \p remapPathFunc is invoked. + UsdUtils_FileAnalyzer(const std::string &referencePath, + const std::string &resolvedPath, + UsdUtils_FileAnalyzer::ReferenceType refTypesToInclude= + UsdUtils_FileAnalyzer::ReferenceType::All, + bool enableMetadataFiltering = false, + const RemapAssetPathFunc &remapPathFunc={}, + const ProcessAssetPathFunc &processPathFunc={}); + + // overload version of the above constructor that takes a \c layer instead + // of a filePath. + UsdUtils_FileAnalyzer(const SdfLayerHandle& layer, + UsdUtils_FileAnalyzer::ReferenceType refTypesToInclude= + UsdUtils_FileAnalyzer::ReferenceType::All, + bool enableMetadataFiltering = false, + const RemapAssetPathFunc &remapPathFunc={}, + const ProcessAssetPathFunc &processPathFunc={}); + + // Returns the path to the file on disk that is being analyzed. + inline const std::string &GetFilePath() const { + return _filePath; + } + + // Returns the SdfLayer associated with the file being analyzed. + inline const SdfLayerRefPtr &GetLayer() const { + return _layer; + } + +private: + // This function returns a boolean value indicating whether an asset path + // should be processed. Currently this is used when processing metadata + // to filter out specific keys + using ShouldProcessAssetValueFunc = std::function; + + // Open the layer, updates references to point to relative or search paths + // and accumulates all references. + void _AnalyzeDependencies(); + + // This adds the given raw reference path to the list of all referenced + // paths. It also returns the remapped reference path, so client code + // can update the source reference to point to the remapped path. + std::string _ProcessDependency(const std::string &rawRefPath, + const DependencyType &DependencyType); + + // Invokes the path remapping function if one has been supplied, otherwise + // returns the passed in raw reference path + std::string _RemapDependency(const std::string &rawRefPath); + + // Processes any sublayers in the SdfLayer associated with the file. + void _ProcessSublayers(); + + // Processes all payloads on the given primSpec. + void _ProcessPayloads(const SdfPrimSpecHandle &primSpec); + + // Processes prim metadata. + void _ProcessMetadata(const SdfPrimSpecHandle &primSpec); + + // Processes metadata on properties. + void _ProcessProperties(const SdfPrimSpecHandle &primSpec); + + // Processes all references on the given primSpec. + void _ProcessReferences(const SdfPrimSpecHandle &primSpec); + + // Returns the given VtValue with any asset paths remapped to point to + // destination-relative path. + VtValue _UpdateAssetValue(const VtValue &val); + + // Returns the given VtValue with any asset paths remapped to point to + // destination-relative path. + // This overload supports filtering asset path processing based on their + // key. The processing callback is not invoked for filtered keys, however + // the remapping callback is invoked in all cases. + VtValue _UpdateAssetValue(const std::string &key, + const VtValue &val, + const ShouldProcessAssetValueFunc shouldProcessFunc); + + // Callback function that's passed into SdfPayloadsProxy::ModifyItemEdits() + // or SdfReferencesProxy::ModifyItemEdits() to update all payloads or + // references. + template + boost::optional _RemapRefOrPayload( + const RefOrPayloadType &refOrPayload); + + // Resolved path to the file. + std::string _filePath; + + // SdfLayer corresponding to the file. This will be null for non-layer + // files. + SdfLayerRefPtr _layer; + + // The types of references to include in the processing. + // If set to UsdUtils_FileAnalyzer::ReferenceType::CompositionOnly, + // non-composition related asset references (eg. property values, property + // metadata and non-composition prim metadata) are ignored. + UsdUtils_FileAnalyzer::ReferenceType _refTypesToInclude; + + // if true, will filter ignore path processing for specified metadata keys. + bool _metadataFilteringEnabled; + + // Remap and process path callback functions. + RemapAssetPathFunc _remapPathFunc; + ProcessAssetPathFunc _processPathFunc; +}; + +class UsdUtils_AssetLocalizer { +public: + using LayerAndDestPath = std::pair; + using SrcPathAndDestPath = std::pair; + using DestFilePathAndAnalyzer = std::pair; + using LayerDependenciesMap = std::unordered_map, TfHash>; + + // Computes the given asset's dependencies recursively and determines + // the information needed to localize the asset. + // If \p destDir is empty, none of the asset layers are modified, allowing + // this class to be used purely as a recursive dependency finder. + // \p enableMetadataFiltering if true, will instruct FileAnalyzer to skip + // processing asset paths that match a list of predefined names + // \p firstLayerName if non-empty, holds desired the name of the root layer + // in the localized asset. + // + // If \p origRootFilePath is non-empty, it points to the original root layer + // of which \p assetPath is a flattened representation. This is by + // UsdUtilsCreateNewARKitUsdzPackage(), to point to the original + // (unflattened) asset with external dependencies. + // + // \p dependenciesToSkip lists an optional set of dependencies that must be + // skipped in the created package. This list must contain fully resolved + // asset paths that must be skipped in the created package. It cannot + // contain the resolved root \p assetPath value itself. If a dependency + // is skipped because it exists in the \p dependenciesToSkip list, none of + // the transitive dependencies referenced by the skipped dependency are + // processed and may be missing in the created package. + UsdUtils_AssetLocalizer(const SdfAssetPath &assetPath, + const std::string &destDir, + bool enableMetadataFiltering, + const std::string &firstLayerName=std::string(), + const std::string &origRootFilePath=std::string(), + const std::vector + &dependenciesToSkip=std::vector()); + + // Get the list of layers to be localized along with their corresponding + // destination paths. + inline const std::vector &GetLayerExportMap() const { + return _layerExportMap; + } + + // Get the list of source files to be copied along with their corresponding + // destination paths. + inline const std::vector &GetFileCopyMap() const { + return _fileCopyMap; + } + + // Returns ths list of all unresolved references. + inline const std::vector GetUnresolvedAssetPaths() const { + return _unresolvedAssetPaths; + } + +private: + // This function will ensure that all tiles that match the UDIM identifier + // contained in src path are correctly added to the file copy map + void _ResolveUdimPaths( + const std::string &srcFilePath, + const std::string &destFilePath); + + // This will contain a mapping of SdfLayerRefPtr's mapped to their + // desination path inside the destination directory. + std::vector _layerExportMap; + + // This will contain a mapping of source file path to the corresponding + // desination file path. + std::vector _fileCopyMap; + + // A map of layers and their corresponding vector of raw external reference + // paths. + LayerDependenciesMap _layerDependenciesMap; + + // List of all the unresolvable asset paths. + std::vector _unresolvedAssetPaths; + + // Helper object for remapping paths to an artifically-generated path. + class _DirectoryRemapper; + + // Remaps a given asset path (\p refPath) to be relative to the layer + // containing it (\p layer) for the purpose of localization. + // \p dirRemapper should not be empty. + // \p pathType is allowed to be a nullptr. + // \p origRootFilePath should contain to the path to the original + // root file from which the asset at \p rootFilePath was created (possibly + // by flattening), + // \p rootFilePath should contain a path to the resolved and localized root + // asset layer on disk. + // \p firstLayerName if non-empty contains the final name of the asset's + // root layer. + static std::string _RemapAssetPath( + const std::string &refPath, + const SdfLayerRefPtr &layer, + const std::string origRootFilePath, + const std::string rootFilePath, + const std::string &firstLayerName, + _DirectoryRemapper *dirRemapper, + bool *isRelativePath); +}; + +void UsdUtils_ExtractExternalReferences( + const std::string& filePath, + const UsdUtils_FileAnalyzer::ReferenceType &refTypesToInclude, + std::vector* subLayers, + std::vector* references, + std::vector* payloads); + +PXR_NAMESPACE_CLOSE_SCOPE + +#endif // PXR_USD_USD_UTILS_ASSET_LOCALIZATION_H diff --git a/pxr/usd/usdUtils/dependencies.cpp b/pxr/usd/usdUtils/dependencies.cpp index 93c4b479d1..142236dc7c 100644 --- a/pxr/usd/usdUtils/dependencies.cpp +++ b/pxr/usd/usdUtils/dependencies.cpp @@ -24,1188 +24,17 @@ /// /// \file usdUtils/dependencies.cpp #include "pxr/pxr.h" +#include "pxr/usd/usdUtils/assetLocalization.h" #include "pxr/usd/usdUtils/dependencies.h" #include "pxr/usd/usdUtils/debugCodes.h" - -#include "pxr/usd/ar/packageUtils.h" -#include "pxr/usd/ar/resolver.h" #include "pxr/usd/sdf/assetPath.h" -#include "pxr/usd/sdf/fileFormat.h" -#include "pxr/usd/sdf/layerUtils.h" -#include "pxr/usd/sdf/primSpec.h" -#include "pxr/usd/sdf/reference.h" -#include "pxr/usd/sdf/types.h" -#include "pxr/usd/sdf/variantSetSpec.h" -#include "pxr/usd/sdf/variantSpec.h" -#include "pxr/usd/usd/clipsAPI.h" -#include "pxr/usd/usd/stage.h" -#include "pxr/usd/usd/tokens.h" -#include "pxr/usd/usd/usdFileFormat.h" -#include "pxr/usd/usd/usdcFileFormat.h" -#include "pxr/usd/usd/zipFile.h" -#include "pxr/usd/usdShade/udimUtils.h" -#include "pxr/base/arch/fileSystem.h" -#include "pxr/base/tf/fileUtils.h" -#include "pxr/base/tf/pathUtils.h" -#include "pxr/base/tf/stringUtils.h" #include "pxr/base/trace/trace.h" #include -#include PXR_NAMESPACE_OPEN_SCOPE -using std::vector; -using std::string; - -namespace { - -// Enum class representing the type of dependency. -enum class _DepType { - Reference, - Sublayer, - Payload -}; - -// Enum class representing the external reference types that must be included -// in the search for external dependencies. -enum class _ReferenceTypesToInclude { - // Include only references that affect composition. - CompositionOnly, - - // Include all external references including asset-valued attributes - // and non-composition metadata containing SdfAssetPath values. - All -}; - -class _FileAnalyzer { -public: - // The asset remapping function's signature. - // It takes a given asset path and the layer it was found in and returns - // the corresponding remapped path. - // - // The layer is used to resolve the asset path in cases where the given - // asset path is a search path or a relative path. - using RemapAssetPathFunc = std::function; - - // Takes the asset path and the type of dependency it is and does some - // arbitrary processing (like enumerating dependencies). - using ProcessAssetPathFunc = std::function; - - // Attempts to open the file at \p referencePath and analyzes its external - // dependencies. Opening the layer using this non-resolved path ensures - // that layer metadata is correctly set. If the file cannot be opened then - // the analyzer simply retains the \p resolvedPath for later use. - // - // For each dependency that is detected, the provided (optional) callback - // functions are invoked. - // - // \p processPathFunc is invoked first with the raw (un-remapped) path. - // Then \p remapPathFunc is invoked. - _FileAnalyzer(const std::string &referencePath, - const std::string &resolvedPath, - _ReferenceTypesToInclude refTypesToInclude= - _ReferenceTypesToInclude::All, - bool enableMetadataFiltering = false, - const RemapAssetPathFunc &remapPathFunc={}, - const ProcessAssetPathFunc &processPathFunc={}) : - _filePath(resolvedPath), - _refTypesToInclude(refTypesToInclude), - _metadataFilteringEnabled(enableMetadataFiltering), - _remapPathFunc(remapPathFunc), - _processPathFunc(processPathFunc) - { - // If this file can be opened on a USD stage or referenced into a USD - // stage via composition, then analyze the file, collect & update all - // references. If not, return early. - if (!UsdStage::IsSupportedFile(referencePath)) { - return; - } - - TRACE_FUNCTION(); - - _layer = SdfLayer::FindOrOpen(referencePath); - if (!_layer) { - TF_WARN("Unable to open layer at path @%s@.", - referencePath.c_str()); - return; - } - - // If the newly opened layer is a package, it we do not need to traverse - // into it as the entire package will be included as a dependency. - if (_layer->GetFileFormat()->IsPackage()) { - return; - } - - _AnalyzeDependencies(); - } - - // overload version of the above constructor that takes a \c layer instead - // of a filePath. - _FileAnalyzer(const SdfLayerHandle& layer, - _ReferenceTypesToInclude refTypesToInclude= - _ReferenceTypesToInclude::All, - bool enableMetadataFiltering = false, - const RemapAssetPathFunc &remapPathFunc={}, - const ProcessAssetPathFunc &processPathFunc={}) : - _layer(layer), - _refTypesToInclude(refTypesToInclude), - _metadataFilteringEnabled(enableMetadataFiltering), - _remapPathFunc(remapPathFunc), - _processPathFunc(processPathFunc) - { - // In the case we have come across a package layer, traversal can be - // halted as the entire package will be included as a dependency. - if (!_layer || _layer->GetFileFormat()->IsPackage()) { - return; - } - - _filePath = _layer->GetRealPath(); - - _AnalyzeDependencies(); - } - - // Returns the path to the file on disk that is being analyzed. - const std::string &GetFilePath() const { - return _filePath; - } - - // Returns the SdfLayer associated with the file being analyzed. - const SdfLayerRefPtr &GetLayer() const { - return _layer; - } - -private: - // This function returns a boolean value indicating whether an asset path - // should be processed. Currently this is used when processing metadata - // to filter out specific keys - using ShouldProcessAssetValueFunc = std::function; - - // Open the layer, updates references to point to relative or search paths - // and accumulates all references. - void _AnalyzeDependencies(); - - // This adds the given raw reference path to the list of all referenced - // paths. It also returns the remapped reference path, so client code - // can update the source reference to point to the remapped path. - std::string _ProcessDependency(const std::string &rawRefPath, - const _DepType &depType); - - // Invokes the path remapping function if one has been supplied, otherwise - // returns the passed in raw reference path - std::string _RemapDependency(const std::string &rawRefPath); - - // Processes any sublayers in the SdfLayer associated with the file. - void _ProcessSublayers(); - - // Processes all payloads on the given primSpec. - void _ProcessPayloads(const SdfPrimSpecHandle &primSpec); - - // Processes prim metadata. - void _ProcessMetadata(const SdfPrimSpecHandle &primSpec); - - // Processes metadata on properties. - void _ProcessProperties(const SdfPrimSpecHandle &primSpec); - - // Processes all references on the given primSpec. - void _ProcessReferences(const SdfPrimSpecHandle &primSpec); - - // Returns the given VtValue with any asset paths remapped to point to - // destination-relative path. - VtValue _UpdateAssetValue(const VtValue &val); - - // Returns the given VtValue with any asset paths remapped to point to - // destination-relative path. - // This overload supports filtering asset path processing based on their - // key. The processing callback is not invoked for filtered keys, however - // the remapping callback is invoked in all cases. - VtValue _UpdateAssetValue(const std::string &key, - const VtValue &val, - const ShouldProcessAssetValueFunc shouldProcessFunc); - - // Callback function that's passed into SdfPayloadsProxy::ModifyItemEdits() - // or SdfReferencesProxy::ModifyItemEdits() to update all payloads or - // references. - template - boost::optional _RemapRefOrPayload( - const RefOrPayloadType &refOrPayload); - - // Resolved path to the file. - std::string _filePath; - - // SdfLayer corresponding to the file. This will be null for non-layer - // files. - SdfLayerRefPtr _layer; - - // The types of references to include in the processing. - // If set to _ReferenceTypesToInclude::CompositionOnly, - // non-composition related asset references (eg. property values, property - // metadata and non-composition prim metadata) are ignored. - _ReferenceTypesToInclude _refTypesToInclude; - - // if true, will filter ignore path processing for specified metadata keys. - bool _metadataFilteringEnabled; - - // Remap and process path callback functions. - RemapAssetPathFunc _remapPathFunc; - ProcessAssetPathFunc _processPathFunc; -}; - -std::string -_FileAnalyzer::_ProcessDependency(const std::string &rawRefPath, - const _DepType &depType) -{ - if (_processPathFunc) { - _processPathFunc(rawRefPath, GetLayer(), depType); - } - - return _RemapDependency(rawRefPath); -} - -std::string -_FileAnalyzer::_RemapDependency(const std::string &rawRefPath) { - if (_remapPathFunc) { - return _remapPathFunc(rawRefPath, GetLayer()); - } - - // Return the raw reference path if there's no asset path remapping - // function. - return rawRefPath; -} - -VtValue -_FileAnalyzer::_UpdateAssetValue(const VtValue &val) -{ - return _UpdateAssetValue( - std::string(), - val, - [](const std::string &) { return true; } - ); -} - -VtValue -_FileAnalyzer::_UpdateAssetValue(const std::string &key, - const VtValue &val, - const ShouldProcessAssetValueFunc shouldProcessFunc) -{ - if (val.IsHolding()) { - auto assetPath = val.UncheckedGet(); - const std::string& rawAssetPath = assetPath.GetAssetPath(); - if (!rawAssetPath.empty()) { - const std::string remappedPath = shouldProcessFunc(key) - ? _ProcessDependency(rawAssetPath, _DepType::Reference) - : _RemapDependency(rawAssetPath); - - return remappedPath.empty() ? - VtValue() : VtValue(SdfAssetPath(remappedPath)); - } - } else if (val.IsHolding>()) { - VtArray updatedArray; - const VtArray& originalArray = - val.UncheckedGet< VtArray >(); - - // ensure explicit empty array value is preserved - if (originalArray.empty()) { - return VtValue::Take(updatedArray); - } - - for (const SdfAssetPath& assetPath : originalArray) { - const std::string& rawAssetPath = assetPath.GetAssetPath(); - if (!rawAssetPath.empty()) { - const std::string remappedPath = shouldProcessFunc(key) - ? _ProcessDependency(rawAssetPath, _DepType::Reference) - : _RemapDependency(rawAssetPath); - - if (!remappedPath.empty()) { - updatedArray.push_back(SdfAssetPath(remappedPath)); - } - } - } - return updatedArray.empty() ? VtValue() : VtValue::Take(updatedArray); - } - else if (val.IsHolding()) { - VtDictionary updatedDict; - const VtDictionary& originalDict = val.UncheckedGet(); - - // ensure explicit empty dict value is preserved - if (originalDict.empty()) { - return VtValue::Take(updatedDict); - } - - for (const auto& p : originalDict) { - const std::string dictKey = key.empty() ? key : key + ':' + p.first; - VtValue updatedVal = - _UpdateAssetValue(dictKey, p.second, shouldProcessFunc); - if (!updatedVal.IsEmpty()) { - updatedDict[p.first] = std::move(updatedVal); - } - } - return updatedDict.empty() ? VtValue() : VtValue::Take(updatedDict); - } - - return val; -} - -void -_FileAnalyzer::_ProcessSublayers() -{ - if (_remapPathFunc) { - _layer->GetSubLayerPaths().ModifyItemEdits( - [this](const std::string& path) { - std::string remappedPath = - _ProcessDependency(path, _DepType::Sublayer); - return remappedPath.empty() ? - boost::optional() : - boost::optional(std::move(remappedPath)); - }); - } else { - for (const auto &subLayer: _layer->GetSubLayerPaths()) { - _ProcessDependency(subLayer, _DepType::Sublayer); - } - } -} - -template -boost::optional -_FileAnalyzer::_RemapRefOrPayload(const RefOrPayloadType &refOrPayload) -{ - // If this is a local (or self) reference or payload, there's no asset path - // to update. - if (refOrPayload.GetAssetPath().empty()) { - return refOrPayload; - } - - std::string remappedPath = - _ProcessDependency(refOrPayload.GetAssetPath(), DEP_TYPE); - - // If the remapped path was empty, return none to indicate this reference - // or payload should be removed. - if (remappedPath.empty()) { - return boost::none; - } - - // If the path was not remapped to a different path, then return the - // incoming payload unmodified. - if (remappedPath == refOrPayload.GetAssetPath()) { - return refOrPayload; - } - - // The payload or reference path was remapped, hence construct a new - // SdfPayload or SdfReference object with the remapped path. - RefOrPayloadType remappedRefOrPayload = refOrPayload; - remappedRefOrPayload.SetAssetPath(remappedPath); - return remappedRefOrPayload; -} - -void -_FileAnalyzer::_ProcessPayloads(const SdfPrimSpecHandle &primSpec) -{ - if (_remapPathFunc) { - primSpec->GetPayloadList().ModifyItemEdits( - [this](const SdfPayload& payload) { - return _RemapRefOrPayload( - payload); - }); - } else { - for (SdfPayload const& payload: - primSpec->GetPayloadList().GetAddedOrExplicitItems()) { - - // If the asset path is empty this is a local payload. We can ignore - // these since they refer to the same layer where the payload was - // authored. - if (!payload.GetAssetPath().empty()) { - _ProcessDependency(payload.GetAssetPath(), _DepType::Payload); - } - } - } -} - -void -_FileAnalyzer::_ProcessProperties(const SdfPrimSpecHandle &primSpec) -{ - // Include external references in property values and metadata only if - // the client is interested in all reference types. i.e. return early if - // _refTypesToInclude is CompositionOnly. - if (_refTypesToInclude == _ReferenceTypesToInclude::CompositionOnly) - return; - - // XXX:2016-04-14 Note that we use the field access API - // here rather than calling GetAttributes, as creating specs for - // large numbers of attributes, most of which are *not* asset - // path-valued and therefore not useful here, is expensive. - // - const VtValue propertyNames = - primSpec->GetField(SdfChildrenKeys->PropertyChildren); - - if (!propertyNames.IsHolding>()) { - return; - } - - for (const auto& name : propertyNames.UncheckedGet>()) { - // For every property - // Build an SdfPath to the property - const SdfPath path = primSpec->GetPath().AppendProperty(name); - - // Check property metadata - for (const TfToken& infoKey : _layer->ListFields(path)) { - if (infoKey != SdfFieldKeys->Default && - infoKey != SdfFieldKeys->TimeSamples) { - - VtValue value = _layer->GetField(path, infoKey); - VtValue updatedValue = _UpdateAssetValue(value); - if (_remapPathFunc && value != updatedValue) { - _layer->SetField(path, infoKey, updatedValue); - } - } - } - - // Check property existence - const VtValue vtTypeName = - _layer->GetField(path, SdfFieldKeys->TypeName); - if (!vtTypeName.IsHolding()) { - continue; - } - - const TfToken typeName = vtTypeName.UncheckedGet(); - if (typeName == SdfValueTypeNames->Asset || - typeName == SdfValueTypeNames->AssetArray) { - - // Check default value - VtValue defValue = _layer->GetField(path, SdfFieldKeys->Default); - VtValue updatedDefValue = _UpdateAssetValue(defValue); - if (_remapPathFunc && defValue != updatedDefValue) { - _layer->SetField(path, SdfFieldKeys->Default, updatedDefValue); - } - - // Check timeSample values - for (double t : _layer->ListTimeSamplesForPath(path)) { - VtValue timeSampleVal; - if (_layer->QueryTimeSample(path, t, &timeSampleVal)) { - VtValue updatedVal = _UpdateAssetValue(timeSampleVal); - if (_remapPathFunc && timeSampleVal != updatedVal) { - - if (updatedVal.IsEmpty()) { - _layer->EraseTimeSample(path, t); - } - else { - _layer->SetTimeSample(path, t, updatedVal); - } - } - } - } - } - } -} - -// Determines if a metadata key should be processed. -// XXX: Currently operates on a single hardcoded value, but in the future we -// would like to give users the ability to specify keys to filter. -static -bool _IgnoreAssetInfoIdentifier(const std::string &key) { - return !TfStringEndsWith(key, "assetInfo:identifier"); -} - -void -_FileAnalyzer::_ProcessMetadata(const SdfPrimSpecHandle &primSpec) -{ - if (_refTypesToInclude == _ReferenceTypesToInclude::All) { - for (const TfToken& infoKey : primSpec->GetMetaDataInfoKeys()) { - VtValue value = primSpec->GetInfo(infoKey); - VtValue updatedValue = _metadataFilteringEnabled - ? _UpdateAssetValue(infoKey, value, _IgnoreAssetInfoIdentifier) - : _UpdateAssetValue(value); - if (_remapPathFunc && value != updatedValue) { - if (updatedValue.IsEmpty()) { - primSpec->ClearInfo(infoKey); - } - else { - primSpec->SetInfo(infoKey, updatedValue); - } - } - } - } - - // Process clips["templateAssetPath"], which is a string value - // containing one or more #'s. See - // UsdClipsAPI::GetClipTemplateAssetPath for details. - VtValue clipsValue = primSpec->GetInfo(UsdTokens->clips); - if (!clipsValue.IsEmpty() && clipsValue.IsHolding()) { - const VtDictionary origClipsDict = - clipsValue.UncheckedGet(); - - // Create a copy of the clips dictionary, as we may have to modify it. - VtDictionary clipsDict = origClipsDict; - for (auto &clipSetNameAndDict : clipsDict) { - if (clipSetNameAndDict.second.IsHolding()) { - VtDictionary clipDict = - clipSetNameAndDict.second.UncheckedGet(); - - if (VtDictionaryIsHolding(clipDict, - UsdClipsAPIInfoKeys->templateAssetPath - .GetString())) { - const std::string &templateAssetPath = - VtDictionaryGet(clipDict, - UsdClipsAPIInfoKeys->templateAssetPath - .GetString()); - - if (templateAssetPath.empty()) { - continue; - } - - // Remap templateAssetPath if there's a remap function and - // update the clip dictionary. - // This retains the #s in the templateAssetPath? - if (_remapPathFunc) { - // Not adding a dependency on the templated asset path - // since it can't be resolved by the resolver. - clipDict[UsdClipsAPIInfoKeys->templateAssetPath] = - VtValue(_remapPathFunc(templateAssetPath, - GetLayer())); - clipsDict[clipSetNameAndDict.first] = VtValue(clipDict); - } - - // Compute the resolved location of the clips - // directory, so we can do a TfGlob for the pattern. - // This contains a '/' in the end. - const std::string clipsDir = TfGetPathName( - templateAssetPath); - // Resolve clipsDir relative to this layer. - if (clipsDir.empty()) { - TF_WARN("Invalid template asset path '%s'.", - templateAssetPath.c_str()); - continue; - } - const std::string clipsDirAssetPath = - SdfComputeAssetPathRelativeToLayer(_layer, clipsDir); - - // We don't attempt to resolve the clips directory asset - // path, since Ar does not support directory-path - // resolution. - if (!TfIsDir(clipsDirAssetPath)) { - TF_WARN("Clips directory '%s' is not a valid directory " - "on the filesystem.", clipsDirAssetPath.c_str()); - continue; - } - - std::string clipsBaseName = TfGetBaseName( - templateAssetPath); - std::string globPattern = TfStringCatPaths( - clipsDirAssetPath, - TfStringReplace(clipsBaseName, "#", "*")); - const std::vector clipAssetRefs = - TfGlob(globPattern); - for (auto &clipAsset : clipAssetRefs) { - // Reconstruct the raw, unresolved clip reference, for - // which the dependency must be processed. - // - // clipsDir contains a '/' in the end, but - // clipsDirAssetPath does not. Hence, add a '/' to - // clipsDirAssetPath before doing the replace. - std::string rawClipRef = TfStringReplace( - clipAsset, clipsDirAssetPath + '/', clipsDir); - _ProcessDependency(rawClipRef, _DepType::Reference); - } - } - } - } - - // Update the clips dictionary only if it has been modified. - if (_remapPathFunc && clipsDict != origClipsDict) { - primSpec->SetInfo(UsdTokens->clips, VtValue(clipsDict)); - } - } -} - -void -_FileAnalyzer::_ProcessReferences(const SdfPrimSpecHandle &primSpec) -{ - if (_remapPathFunc) { - primSpec->GetReferenceList().ModifyItemEdits( - [this](const SdfReference& ref) { - return _RemapRefOrPayload( - ref); - }); - } else { - for (SdfReference const& ref: - primSpec->GetReferenceList().GetAddedOrExplicitItems()) { - - // If the asset path is empty this is a local reference. We can - // ignore these since they refer to the same layer where the - // reference was authored. - if (!ref.GetAssetPath().empty()) { - _ProcessDependency(ref.GetAssetPath(), _DepType::Reference); - } - } - } -} - -void -_FileAnalyzer::_AnalyzeDependencies() -{ - TRACE_FUNCTION(); - - _ProcessSublayers(); - - std::stack dfs; - dfs.push(_layer->GetPseudoRoot()); - - while (!dfs.empty()) { - SdfPrimSpecHandle curr = dfs.top(); - dfs.pop(); - - // Metadata is processed even on the pseudoroot, which ensures - // we process layer metadata properly. - _ProcessMetadata(curr); - if (curr != _layer->GetPseudoRoot()) { - _ProcessPayloads(curr); - _ProcessProperties(curr); - _ProcessReferences(curr); - } - - // variants "children" - for (const SdfVariantSetsProxy::value_type& p : - curr->GetVariantSets()) { - for (const SdfVariantSpecHandle& variantSpec : - p.second->GetVariantList()) { - dfs.push(variantSpec->GetPrimSpec()); - } - } - - // children - for (const SdfPrimSpecHandle& child : curr->GetNameChildren()) { - dfs.push(child); - } - } -} - -class _AssetLocalizer { -public: - using LayerAndDestPath = std::pair; - using SrcPathAndDestPath = std::pair; - using DestFilePathAndAnalyzer = std::pair; - using LayerDependenciesMap = std::unordered_map, TfHash>; - - // Computes the given asset's dependencies recursively and determines - // the information needed to localize the asset. - // If \p destDir is empty, none of the asset layers are modified, allowing - // this class to be used purely as a recursive dependency finder. - // \p enableMetadataFiltering if true, will instruct FileAnalyzer to skip - // processing asset paths that match a list of predefined names - // \p firstLayerName if non-empty, holds desired the name of the root layer - // in the localized asset. - // - // If \p origRootFilePath is non-empty, it points to the original root layer - // of which \p assetPath is a flattened representation. This is by - // UsdUtilsCreateNewARKitUsdzPackage(), to point to the original - // (unflattened) asset with external dependencies. - // - // \p dependenciesToSkip lists an optional set of dependencies that must be - // skipped in the created package. This list must contain fully resolved - // asset paths that must be skipped in the created package. It cannot - // contain the resolved root \p assetPath value itself. If a dependency - // is skipped because it exists in the \p dependenciesToSkip list, none of - // the transitive dependencies referenced by the skipped dependency are - // processed and may be missing in the created package. - _AssetLocalizer(const SdfAssetPath &assetPath, const std::string &destDir, - bool enableMetadataFiltering, - const std::string &firstLayerName=std::string(), - const std::string &origRootFilePath=std::string(), - const std::vector - &dependenciesToSkip=std::vector()) - { - _DirectoryRemapper dirRemapper; - - auto &layerDependenciesMap = _layerDependenciesMap; - - auto &resolver = ArGetResolver(); - - const std::string assetPathStr = assetPath.GetAssetPath(); - const bool isAnonymousLayer = - SdfLayer::IsAnonymousLayerIdentifier(assetPathStr); - std::string rootFilePath; - - if (!isAnonymousLayer) { - rootFilePath = resolver.Resolve(assetPathStr); - - // Ensure that the resolved path is not empty. - if (rootFilePath.empty()) { - return; - } - } - - // Record all dependencies in layerDependenciesMap so we can recurse - // on them. - const auto processPathFunc = - [&layerDependenciesMap]( - const std::string &ap, const SdfLayerRefPtr &layer, - _DepType depType) { - layerDependenciesMap[layer].push_back(ap); - }; - - // If destination directory is an empty string, skip any remapping - // of asset paths. - const auto remapAssetPathFunc = destDir.empty() ? - _FileAnalyzer::RemapAssetPathFunc() : - [&layerDependenciesMap, &dirRemapper, &destDir, &rootFilePath, - &origRootFilePath, &firstLayerName]( - const std::string &ap, - const SdfLayerRefPtr &layer) { - - return _RemapAssetPath(ap, layer, - origRootFilePath, rootFilePath, firstLayerName, - &dirRemapper, /* isRelativePath */ nullptr); - }; - - // Set of all seen files. We maintain this set to avoid redundant - // dependency analysis of already seen files. - std::unordered_set seenFiles; - - std::stack filesToLocalize; - - if (isAnonymousLayer) - { - SdfLayerRefPtr layer = SdfLayer::Find(assetPathStr); - if (!layer) { - return; - } - - rootFilePath = "anon_layer." + layer->GetFileExtension(); - - seenFiles.insert(assetPathStr); - std::string destFilePath = TfStringCatPaths(destDir, - TfGetBaseName(rootFilePath)); - filesToLocalize.emplace(destFilePath, _FileAnalyzer( - layer, - /*refTypesToInclude*/ _ReferenceTypesToInclude::All, - /*enableMetadataFiltering*/ enableMetadataFiltering, - remapAssetPathFunc, processPathFunc)); - } - else - { - seenFiles.insert(rootFilePath); - std::string destFilePath = TfStringCatPaths(destDir, - TfGetBaseName(rootFilePath)); - filesToLocalize.emplace(destFilePath, _FileAnalyzer( - assetPathStr, rootFilePath, - /*refTypesToInclude*/ _ReferenceTypesToInclude::All, - /*enableMetadataFiltering*/ enableMetadataFiltering, - remapAssetPathFunc, processPathFunc)); - } - - while (!filesToLocalize.empty()) { - // Copying data here since we're about to pop. - const DestFilePathAndAnalyzer destFilePathAndAnalyzer = - filesToLocalize.top(); - filesToLocalize.pop(); - - auto &destFilePath = destFilePathAndAnalyzer.first; - auto &fileAnalyzer = destFilePathAndAnalyzer.second; - - if (!fileAnalyzer.GetLayer()) { - const std::string &srcFilePath = fileAnalyzer.GetFilePath(); - if (UsdShadeUdimUtils::IsUdimIdentifier(srcFilePath)) { - _ResolveUdimPaths(srcFilePath, destFilePath); - } else { - _fileCopyMap.emplace_back(srcFilePath, destFilePath); - } - - continue; - } - - _layerExportMap.emplace_back(fileAnalyzer.GetLayer(), - destFilePath); - - const auto &layerDepIt = layerDependenciesMap.find( - fileAnalyzer.GetLayer()); - - if (layerDepIt == _layerDependenciesMap.end()) { - // The layer has no external dependencies. - continue; - } - - for (std::string ref : layerDepIt->second) { - // If this is a package-relative path, then simply copy the - // package over. - // Note: recursive search for dependencies ends here. - // This is because we don't want to be modifying packaged - // assets during asset isolation or archival. - // XXX: We may want to reconsider this approach in the future. - if (ArIsPackageRelativePath(ref)) { - ref = ArSplitPackageRelativePathOuter(ref).first; - } - - const std::string refAssetPath = - SdfComputeAssetPathRelativeToLayer( - fileAnalyzer.GetLayer(), ref); - std::string resolvedRefFilePath; - - // Specially handle UDIM paths - if (UsdShadeUdimUtils::IsUdimIdentifier(ref)) { - resolvedRefFilePath = UsdShadeUdimUtils::ResolveUdimPath( - ref, fileAnalyzer.GetLayer()); - } else { - resolvedRefFilePath = resolver.Resolve(refAssetPath); - } - - if (resolvedRefFilePath.empty()) { - TF_WARN("Failed to resolve reference @%s@ with computed " - "asset path @%s@ found in layer @%s@.", - ref.c_str(), - refAssetPath.c_str(), - fileAnalyzer.GetFilePath().c_str()); - - _unresolvedAssetPaths.push_back(refAssetPath); - continue; - } - - // Check if this dependency must skipped. - if (std::find(dependenciesToSkip.begin(), - dependenciesToSkip.end(), resolvedRefFilePath) != - dependenciesToSkip.end()) { - continue; - } - - // Given the way our remap function (_RemapAssetPath) works, we - // should only have to copy every resolved file once during - // localization. - if (!seenFiles.insert(resolvedRefFilePath).second) { - continue; - } - - // XXX: We don't localize directory references. Should we copy - // the entire directory over? - if (TfIsDir(resolvedRefFilePath)) { - continue; - } - - bool isRelativePath = false; - std::string remappedRef = _RemapAssetPath(ref, - fileAnalyzer.GetLayer(), - origRootFilePath, rootFilePath, firstLayerName, - &dirRemapper, &isRelativePath); - - // If it's a relative path, construct the full path relative to - // the final (destination) location of the reference-containing - // file. - const std::string destDirForRef = - isRelativePath ? TfGetPathName(destFilePath) : destDir; - const std::string destFilePathForRef = TfStringCatPaths( - destDirForRef, remappedRef); - - filesToLocalize.emplace(destFilePathForRef, _FileAnalyzer( - refAssetPath, resolvedRefFilePath, - /* refTypesToInclude */ _ReferenceTypesToInclude::All, - /*enableMetadataFiltering*/ enableMetadataFiltering, - remapAssetPathFunc, processPathFunc)); - } - } - } - - // Get the list of layers to be localized along with their corresponding - // destination paths. - const std::vector &GetLayerExportMap() const { - return _layerExportMap; - } - - // Get the list of source files to be copied along with their corresponding - // destination paths. - const std::vector &GetFileCopyMap() const { - return _fileCopyMap; - } - - // Returns ths list of all unresolved references. - const std::vector GetUnresolvedAssetPaths() const { - return _unresolvedAssetPaths; - } - -private: - // This function will ensure that all tiles that match the UDIM identifier - // contained in src path are correctly added to the file copy map - void _ResolveUdimPaths( - const std::string &srcFilePath, - const std::string &destFilePath) - { - // Since the source path should already be pre-resolved, - // a proper layer doesn't have to be provided - const std::vector resolvedPaths = - UsdShadeUdimUtils::ResolveUdimTilePaths(srcFilePath, SdfLayerHandle()); - - for (const auto & resolvedPath : resolvedPaths) { - const std::string destUdimPath = - UsdShadeUdimUtils::ReplaceUdimPattern( - destFilePath, resolvedPath.second); - - _fileCopyMap.emplace_back(resolvedPath.first, destUdimPath); - } - } - - // This will contain a mapping of SdfLayerRefPtr's mapped to their - // desination path inside the destination directory. - std::vector _layerExportMap; - - // This will contain a mapping of source file path to the corresponding - // desination file path. - std::vector _fileCopyMap; - - // A map of layers and their corresponding vector of raw external reference - // paths. - LayerDependenciesMap _layerDependenciesMap; - - // List of all the unresolvable asset paths. - std::vector _unresolvedAssetPaths; - - // Helper object for remapping paths to an artifically-generated path. - class _DirectoryRemapper { - public: - _DirectoryRemapper() : _nextDirectoryNum(0) { } - - // Remap the given file path by replacing the directory with a - // unique, artifically generated name. The generated directory name - // will be reused if the original directory is seen again on a - // subsequent call to Remap. - std::string Remap(const std::string& filePath) - { - if (ArIsPackageRelativePath(filePath)) { - std::pair packagePath = - ArSplitPackageRelativePathOuter(filePath); - return ArJoinPackageRelativePath( - Remap(packagePath.first), packagePath.second); - } - - const std::string pathName = TfGetPathName(filePath); - if (pathName.empty()) { - return filePath; - } - - const std::string baseName = TfGetBaseName(filePath); - - auto insertStatus = _oldToNewDirectory.insert({pathName, ""}); - if (insertStatus.second) { - insertStatus.first->second = - TfStringPrintf("%zu", _nextDirectoryNum++); - } - - return TfStringCatPaths(insertStatus.first->second, baseName); - } - - private: - size_t _nextDirectoryNum; - std::unordered_map _oldToNewDirectory; - }; - - // Remaps a given asset path (\p refPath) to be relative to the layer - // containing it (\p layer) for the purpose of localization. - // \p dirRemapper should not be empty. - // \p pathType is allowed to be a nullptr. - // \p origRootFilePath should contain to the path to the original - // root file from which the asset at \p rootFilePath was created (possibly - // by flattening), - // \p rootFilePath should contain a path to the resolved and localized root - // asset layer on disk. - // \p firstLayerName if non-empty contains the final name of the asset's - // root layer. - static std::string _RemapAssetPath( - const std::string &refPath, - const SdfLayerRefPtr &layer, - const std::string origRootFilePath, - const std::string rootFilePath, - const std::string &firstLayerName, - _DirectoryRemapper *dirRemapper, - bool *isRelativePath); -}; - -std::string -_AssetLocalizer::_RemapAssetPath(const std::string &refPath, - const SdfLayerRefPtr &layer, - std::string origRootFilePath, - std::string rootFilePath, - const std::string &firstLayerName, - _DirectoryRemapper *dirRemapper, - bool *isRelativePathOut) -{ - auto &resolver = ArGetResolver(); - - const bool isContextDependentPath = - resolver.IsContextDependentPath(refPath); - - // We want to maintain relative paths where possible to keep localized - // assets as close as possible to their original layout. However, we - // skip this for context-dependent paths because those must be resolved - // to determine what asset is being referred to. - if (!isContextDependentPath) { - // We determine if refPath is relative by creating identifiers with - // and without the anchoring layer and seeing if they're the same. - // If they aren't, then refPath depends on the anchor, so we assume - // it's relative. - const std::string anchored = - resolver.CreateIdentifier(refPath, layer->GetResolvedPath()); - const std::string unanchored = - resolver.CreateIdentifier(refPath); - const bool isRelativePath = (anchored != unanchored); - - if (isRelativePath) { - // Asset localization is rooted at the location of the root layer. - // If this relative path points somewhere outside that location - // (e.g., a relative path like "../foo.jpg"). there will be nowhere - // to put this asset in the localized asset structure. In that case, - // we need to remap this path. Otherwise, we can keep the relative - // asset path as-is. - const ArResolvedPath resolvedRefPath = resolver.Resolve(anchored); - const bool refPathIsOutsideAssetLocation = - !TfStringStartsWith( - TfNormPath(TfGetPathName(resolvedRefPath)), - TfNormPath(TfGetPathName(rootFilePath))); - - if (!refPathIsOutsideAssetLocation) { - if (isRelativePathOut) { - *isRelativePathOut = true; - } - - // Return relative paths unmodified. - return refPath; - } - } - } - - if (isRelativePathOut) { - *isRelativePathOut = false; - } - - std::string result = refPath; - if (isContextDependentPath) { - // Absolutize the search path, to avoid collisions resulting from the - // same search path resolving to different paths in different resolver - // contexts. - const std::string refAssetPath = - SdfComputeAssetPathRelativeToLayer(layer, refPath); - const std::string refFilePath = resolver.Resolve(refAssetPath); - - const bool resolveOk = !refFilePath.empty(); - - if (resolveOk) { - result = refFilePath; - } else { - // Failed to resolve, hence retain the reference as is. - result = refAssetPath; - } - } - - // Normalize paths compared below to account for path format differences. - const std::string layerPath = - TfNormPath(layer->GetRealPath()); - result = TfNormPath(result); - rootFilePath = TfNormPath(rootFilePath); - origRootFilePath = TfNormPath(origRootFilePath); - - bool resultPointsToRoot = ((result == rootFilePath) || - (result == origRootFilePath)); - // If this is a self-reference, then remap to a relative path that points - // to the file itself. - if (result == layerPath) { - // If this is a self-reference in the root layer and we're renaming the - // root layer, simply set the reference path to point to the renamed - // root layer. - return resultPointsToRoot && !firstLayerName.empty() ? - firstLayerName : TfGetBaseName(result); - } - - // References to the original (unflattened) root file need to be remapped - // to point to the new root file. - if (resultPointsToRoot && layerPath == rootFilePath) { - return !firstLayerName.empty() ? firstLayerName : TfGetBaseName(result); - } - - // Result is now an absolute or a repository path. Simply strip off the - // leading slashes to make it relative. - // Strip off any drive letters. - if (result.size() >= 2 && result[1] == ':') { - result.erase(0, 2); - } - - // Strip off any initial slashes. - result = TfStringTrimLeft(result, "/"); - - // Remap the path to an artifically-constructed one so that the source - // directory structure isn't embedded in the final .usdz file. Otherwise, - // sensitive information (e.g. usernames, movie titles...) in directory - // names may be inadvertently leaked in the .usdz file. - return dirRemapper->Remap(result); -} - -// Returns a relative path for fullDestPath, relative to the given destination -// directory (destDir). -static -std::string -_GetDestRelativePath(const std::string &fullDestPath, - const std::string &destDir) -{ - std::string destPath = fullDestPath; - // fullDestPath won't start with destDir if destDir is a relative path, - // relative to CWD. - if (TfStringStartsWith(destPath, destDir)) { - destPath = destPath.substr(destDir.length()); - } - return destPath; -} - -} // end of anonymous namespace - - -static void -_ExtractExternalReferences( - const std::string& filePath, - const _ReferenceTypesToInclude &refTypesToInclude, - std::vector* subLayers, - std::vector* references, - std::vector* payloads) -{ - auto &resolver = ArGetResolver(); - - const auto processPathFunc = [&subLayers, &references, &payloads]( - const std::string &assetPath, const SdfLayerRefPtr &layer, - const _DepType &depType) - { - if (depType == _DepType::Reference) { - references->push_back(assetPath); - } else if (depType == _DepType::Sublayer) { - subLayers->push_back(assetPath); - } else if (depType == _DepType::Payload) { - payloads->push_back(assetPath); - } - }; - - // We only care about knowing what the dependencies are. Hence, set - // remapPathFunc to empty. - if (SdfLayer::IsAnonymousLayerIdentifier(filePath)) { - _FileAnalyzer(SdfLayer::Find(filePath), refTypesToInclude, - /*enableMetadataFiltering*/ false, - /*remapPathFunc*/ {}, - processPathFunc); - } - else { - _FileAnalyzer(filePath, resolver.Resolve(filePath), refTypesToInclude, - /*enableMetadataFiltering*/ false, - /*remapPathFunc*/ {}, - processPathFunc); - } - - - // Sort and remove duplicates - std::sort(references->begin(), references->end()); - references->erase(std::unique(references->begin(), references->end()), - references->end()); - std::sort(payloads->begin(), payloads->end()); - payloads->erase(std::unique(payloads->begin(), payloads->end()), - payloads->end()); -} // XXX: don't even know if it's important to distinguish where // these asset paths are coming from.. if it's not important, maybe this @@ -1219,279 +48,12 @@ UsdUtilsExtractExternalReferences( std::vector* payloads) { TRACE_FUNCTION(); - _ExtractExternalReferences(filePath, _ReferenceTypesToInclude::All, + UsdUtils_ExtractExternalReferences(filePath, + UsdUtils_FileAnalyzer::ReferenceType::All, subLayers, references, payloads); } -static -bool -_CreateNewUsdzPackage(const SdfAssetPath &assetPath, - const std::string &usdzFilePath, - const std::string &firstLayerName, - const std::string &origRootFilePath=std::string(), - const std::vector &dependenciesToSkip - =std::vector()) -{ - TF_DEBUG(USDUTILS_CREATE_USDZ_PACKAGE).Msg("Creating USDZ package at '%s' " - "containing asset @%s@.\n", usdzFilePath.c_str(), - assetPath.GetAssetPath().c_str()); - - std::string destDir = TfGetPathName(usdzFilePath); - destDir = destDir.empty() ? "./" : destDir; - _AssetLocalizer localizer(assetPath, destDir, - /* enableMetadataFiltering */ true, - firstLayerName, - origRootFilePath, - dependenciesToSkip); - - auto &layerExportMap = localizer.GetLayerExportMap(); - auto &fileCopyMap = localizer.GetFileCopyMap(); - - if (layerExportMap.empty() && fileCopyMap.empty()) { - return false; - } - - // Set of all the packaged files. - std::unordered_set packagedFiles; - - const std::string tmpDirPath = ArchGetTmpDir(); - - UsdZipFileWriter writer = UsdZipFileWriter::CreateNew(usdzFilePath); - - auto &resolver = ArGetResolver(); - // This returns true of src and dest have the same file extension. - const auto extensionsMatch = [&resolver](const std::string &src, - const std::string &dest) { - return resolver.GetExtension(src) == resolver.GetExtension(dest); - }; - - bool firstLayer = true; - bool success = true; - for (auto &layerAndDestPath : layerExportMap) { - const auto &layer = layerAndDestPath.first; - std::string destPath = _GetDestRelativePath( - layerAndDestPath.second, destDir); - - // Change the first layer's name if requested. - if (firstLayer && !firstLayerName.empty()) { - const std::string pathName = TfGetPathName(destPath); - destPath = TfStringCatPaths(pathName, firstLayerName); - firstLayer = false; - } - - if (!packagedFiles.insert(destPath).second) { - TF_WARN("A file already exists at path \"%s\" in the package. " - "Skipping export of layer @%s@.", destPath.c_str(), - layer->GetIdentifier().c_str()); - continue; - } - - TF_DEBUG(USDUTILS_CREATE_USDZ_PACKAGE).Msg( - ".. adding layer @%s@ to package at path '%s'.\n", - layer->GetIdentifier().c_str(), destPath.c_str()); - - // If the layer is a package or if it's inside a package, copy the - // entire package. We could extract the package and copy only the - // dependencies, but this could get very complicated. - if (layer->GetFileFormat()->IsPackage() || - ArIsPackageRelativePath(layer->GetIdentifier())) { - std::string packagePath = ArSplitPackageRelativePathOuter( - layer->GetRealPath()).first; - std::string destPackagePath = ArSplitPackageRelativePathOuter( - destPath).first; - if (!packagePath.empty()) { - std::string inArchivePath = writer.AddFile(packagePath, - destPackagePath); - if (inArchivePath.empty()) { - success = false; - } - } - } else if (!layer->IsDirty() && - extensionsMatch(layer->GetRealPath(), destPath)) { - // If the layer hasn't been modified from its persistent - // representation and if its extension isn't changing in the - // package, then simply copy it over from its real-path (i.e. - // location on disk). This preserves any existing comments in the - // file (which will be lost if we were to export all layers before - // adding them to to the package). - std::string inArchivePath = writer.AddFile(layer->GetRealPath(), - destPath); - if (inArchivePath.empty()) { - success = false; - } - } else { - // If the layer has been modified or needs to be modified, then we - // need to export it to a temporary file before adding it to the - // package. - SdfFileFormat::FileFormatArguments args; - - const SdfFileFormatConstPtr fileFormat = - SdfFileFormat::FindByExtension( - SdfFileFormat::GetFileExtension(destPath)); - - if (TfDynamic_cast(fileFormat)) { - args[UsdUsdFileFormatTokens->FormatArg] = - UsdUsdFileFormat::GetUnderlyingFormatForLayer( - *get_pointer(layer)); - } - - std::string tmpLayerExportPath = TfStringCatPaths(tmpDirPath, - TfGetBaseName(destPath)); - layer->Export(tmpLayerExportPath, /*comment*/ "", args); - - std::string inArchivePath = writer.AddFile(tmpLayerExportPath, - destPath); - - if (inArchivePath.empty()) { - // XXX: Should we discard the usdz file and return early here? - TF_WARN("Failed to add temporary layer at '%s' to the package " - "at path '%s'.", tmpLayerExportPath.c_str(), - usdzFilePath.c_str()); - success = false; - } else { - // The file has been added to the package successfully. We can - // delete it now. - TfDeleteFile(tmpLayerExportPath); - } - } - } - - for (auto &fileSrcAndDestPath : fileCopyMap) { - const std::string &srcPath = fileSrcAndDestPath.first; - const std::string destPath = _GetDestRelativePath( - fileSrcAndDestPath.second, destDir); - TF_DEBUG(USDUTILS_CREATE_USDZ_PACKAGE).Msg( - ".. adding file '%s' to package at path '%s'.\n", - srcPath.c_str(), destPath.c_str()); - - if (!packagedFiles.insert(destPath).second) { - TF_WARN("A file already exists at path \"%s\" in the package. " - "Skipping copy of file \"%s\".", destPath.c_str(), - srcPath.c_str()); - continue; - } - - // If the file is a package or inside a package, copy the - // entire package. We could extract the package and copy only the - // dependencies, but this could get very complicated. - if (ArIsPackageRelativePath(destPath)) { - std::string packagePath = ArSplitPackageRelativePathOuter( - srcPath).first; - std::string destPackagePath = ArSplitPackageRelativePathOuter( - destPath).first; - if (!packagePath.empty()) { - std::string inArchivePath = writer.AddFile(packagePath, - destPackagePath); - if (inArchivePath.empty()) { - success = false; - } - } - } - else { - std::string inArchivePath = writer.AddFile(srcPath, destPath); - if (inArchivePath.empty()) { - // XXX: Should we discard the usdz file and return early here? - TF_WARN("Failed to add file '%s' to the package at path '%s'.", - srcPath.c_str(), usdzFilePath.c_str()); - success = false; - } - } - } - - return writer.Save() && success; -} - -bool -UsdUtilsCreateNewUsdzPackage(const SdfAssetPath &assetPath, - const std::string &usdzFilePath, - const std::string &firstLayerName) -{ - return _CreateNewUsdzPackage(assetPath, usdzFilePath, firstLayerName); -} -bool -UsdUtilsCreateNewARKitUsdzPackage( - const SdfAssetPath &assetPath, - const std::string &inUsdzFilePath, - const std::string &firstLayerName) -{ - auto &resolver = ArGetResolver(); - - std::string usdzFilePath = ArchNormPath(inUsdzFilePath); - - const std::string resolvedPath = resolver.Resolve(assetPath.GetAssetPath()); - if (resolvedPath.empty()) { - return false; - } - - // Check if the given asset has external dependencies that participate in - // the composition of the stage. - std::vector sublayers, references, payloads; - _ExtractExternalReferences(resolvedPath, - _ReferenceTypesToInclude::CompositionOnly, - &sublayers, &references, &payloads); - - // Ensure that the root layer has the ".usdc" extension. - std::string targetBaseName = firstLayerName.empty() ? - TfGetBaseName(assetPath.GetAssetPath()) : firstLayerName; - const std::string &fileExt = resolver.GetExtension(targetBaseName); - bool renamingRootLayer = false; - if (fileExt != UsdUsdcFileFormatTokens->Id) { - renamingRootLayer = true; - targetBaseName = targetBaseName.substr(0, targetBaseName.rfind(".")+1) + - UsdUsdcFileFormatTokens->Id.GetString(); - } - - // If there are no external dependencies needed for composition, we can - // invoke the regular packaging function. - if (sublayers.empty() && references.empty() && payloads.empty()) { - if (renamingRootLayer) { - return _CreateNewUsdzPackage(assetPath, usdzFilePath, - /*firstLayerName*/ targetBaseName, - /* origRootFilePath*/ resolvedPath, - /* dependenciesToSkip */ {resolvedPath}); - } else { - return _CreateNewUsdzPackage(assetPath, usdzFilePath, - /*firstLayerName*/ targetBaseName, - /* origRootFilePath*/ resolvedPath); - } - } - - TF_WARN("The given asset '%s' contains one or more composition arcs " - "referencing external USD files. Flattening it to a single .usdc file " - "before packaging. This will result in loss of features such as " - "variantSets and all asset references to be absolutized.", - assetPath.GetAssetPath().c_str()); - - const auto &usdStage = UsdStage::Open(resolvedPath); - const std::string tmpFileName = - ArchMakeTmpFileName(targetBaseName, ".usdc"); - - TF_DEBUG(USDUTILS_CREATE_USDZ_PACKAGE).Msg( - "Flattening asset @%s@ located at '%s' to temporary layer at " - "path '%s'.\n", assetPath.GetAssetPath().c_str(), resolvedPath.c_str(), - tmpFileName.c_str()); - - if (!usdStage->Export(tmpFileName, /*addSourceFileComment*/ false)) { - TF_WARN("Failed to flatten and export the USD stage '%s'.", - UsdDescribe(usdStage).c_str()); - return false; - } - - bool success = _CreateNewUsdzPackage(SdfAssetPath(tmpFileName), - usdzFilePath, /* firstLayerName */ targetBaseName, - /* origRootFilePath*/ resolvedPath, - /*dependenciesToSkip*/ {resolvedPath}); - - if (success) { - TfDeleteFile(tmpFileName); - } else { - TF_WARN("Failed to create a .usdz package from temporary, flattened " - "layer '%s'.", tmpFileName.c_str());; - } - - return success; -} bool UsdUtilsComputeAllDependencies(const SdfAssetPath &assetPath, @@ -1501,7 +63,7 @@ UsdUtilsComputeAllDependencies(const SdfAssetPath &assetPath, { // We are not interested in localizing here, hence pass in the empty string // for destination directory. - _AssetLocalizer localizer(assetPath, + UsdUtils_AssetLocalizer localizer(assetPath, /* destDir */ std::string(), /* enableMetadataFiltering */ true); @@ -1532,8 +94,8 @@ UsdUtilsModifyAssetPaths( const SdfLayerHandle& layer, const UsdUtilsModifyAssetPathFn& modifyFn) { - _FileAnalyzer(layer, - _ReferenceTypesToInclude::All, + UsdUtils_FileAnalyzer(layer, + UsdUtils_FileAnalyzer::ReferenceType::All, /* enableMetadataFiltering*/ false, [&modifyFn](const std::string& assetPath, const SdfLayerRefPtr& layer) { diff --git a/pxr/usd/usdUtils/dependencies.h b/pxr/usd/usdUtils/dependencies.h index b221edf6d7..99961d6c8e 100644 --- a/pxr/usd/usdUtils/dependencies.h +++ b/pxr/usd/usdUtils/dependencies.h @@ -36,8 +36,8 @@ /// #include "pxr/pxr.h" -#include "pxr/usd/sdf/layer.h" #include "pxr/usd/usdUtils/api.h" +#include "pxr/usd/usdUtils/usdzPackage.h" #include #include @@ -65,87 +65,6 @@ void UsdUtilsExtractExternalReferences( std::vector* references, std::vector* payloads); -/// Creates a USDZ package containing the specified asset, identified by its -/// \p assetPath. The created package will include a localized version of the -/// asset itself and all of its external dependencies. Any anonymous layers that -/// are encountered during dependency discovery will be serialized into the -/// resulting package. Due to localization, the packaged layers might be -/// modified to have different asset paths. -/// -/// You can optionally specify a different package-internal name for the first -/// layer of the asset by specifying \p firstLayerName. By default, -/// \p firstLayerName is empty, meaning that the original name is preserved. -/// -/// Returns true if the package was created successfully. -/// -/// \note Clients of this function must take care of configuring the asset -/// resolver context before invoking the function. To create a default -/// resolver context, use \ref CreateDefaultContextForAsset() with the -/// asset path. -/// -/// \note If the given asset has a dependency on a directory (i.e. an external -/// reference to a directory path), the dependency is ignored and the contents -/// of the directory are not included in the created package. -/// -/// \note This function modifies the layers referenced by \p assetPath -/// (including the root layer and all transitive layer dependencies) in-place. -/// However, it does not save the layers before copying them into the package -/// that is created. It also does not revert the changes it makes to the -/// layers. Therefore, it is strongly recommended that you run this function in -/// isolation after any source UsdStages have been closed. If you have UsdStages -/// open during the function call that reference the layers being modified, you -/// may receive warnings or composition errors which may not affect the -/// resulting package adversely. -/// -/// \sa UsdUtilsCreateNewARKitUsdzPackage() -USDUTILS_API -bool -UsdUtilsCreateNewUsdzPackage( - const SdfAssetPath& assetPath, - const std::string& usdzFilePath, - const std::string& firstLayerName=std::string()); - -/// Similar to UsdUtilsCreateNewUsdzPackage, this function packages all of the -/// dependencies of the given asset. Assets targeted at the initial usdz -/// implementation in ARKit operate under greater constraints than usdz files -/// for more general 'in house' uses, and this option attempts to ensure that -/// these constraints are honored; this may involve more transformations to the -/// data, which may cause loss of features such as VariantSets. Any anonymous -/// layers that are encountered during dependency discovery will be serialized -/// into the resulting package. -/// -/// If \p firstLayerName is specified, it is modified to have the ".usdc" -/// extension, as required by the initial usdz implementation in ARKit. -/// -/// Returns true if the package was created successfully. -/// -/// \note Clients of this function must take care of configuring the asset -/// resolver context before invoking the function. To create a default -/// resolver context, use \ref CreateDefaultContextForAsset() with the -/// asset path. -/// -/// \note If the given asset has a dependency on a directory (i.e. an external -/// reference to a directory path), the dependency is ignored and the contents -/// of the directory are not included in the created package. -/// -/// \note This function modifies the layers referenced by \p assetPath -/// (including the root layer and all transitive layer dependencies) in-place. -/// However, it does not save the layers before copying them into the package -/// that is created. It also does not revert the changes it makes to the -/// layers. Therefore, it is strongly recommended that you run this function in -/// isolation after any source UsdStages have been closed. If you have UsdStages -/// open during the function call that reference the layers being modified, you -/// may receive warnings or composition errors which may not affect the -/// resulting package adversely. -/// -/// \sa UsdUtilsCreateNewUsdzPackage() -USDUTILS_API -bool -UsdUtilsCreateNewARKitUsdzPackage( - const SdfAssetPath &assetPath, - const std::string &usdzFilePath, - const std::string &firstLayerName=std::string()); - /// Recursively computes all the dependencies of the given asset and populates /// \p layers with all the dependencies that can be opened as an SdfLayer. /// All of the resolved non-layer dependencies are populated in \p assets. diff --git a/pxr/usd/usdUtils/usdzPackage.cpp b/pxr/usd/usdUtils/usdzPackage.cpp new file mode 100644 index 0000000000..8e4cf7bf38 --- /dev/null +++ b/pxr/usd/usdUtils/usdzPackage.cpp @@ -0,0 +1,336 @@ +// +// Copyright 2023 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +/// +/// \file usdUtils/usdzPackage.cpp +#include "pxr/pxr.h" +#include "pxr/usd/usdUtils/assetLocalization.h" +#include "pxr/usd/usdUtils/dependencies.h" +#include "pxr/usd/usdUtils/debugCodes.h" + +#include "pxr/usd/ar/packageUtils.h" +#include "pxr/usd/ar/resolver.h" +#include "pxr/usd/sdf/assetPath.h" +#include "pxr/usd/sdf/layerUtils.h" +#include "pxr/usd/sdf/types.h" +#include "pxr/usd/usd/stage.h" +#include "pxr/usd/usd/usdFileFormat.h" +#include "pxr/usd/usd/usdcFileFormat.h" +#include "pxr/usd/usd/zipFile.h" + +#include "pxr/base/tf/fileUtils.h" +#include "pxr/base/tf/pathUtils.h" +#include "pxr/base/trace/trace.h" + +#include +#include + +PXR_NAMESPACE_OPEN_SCOPE + +// Returns a relative path for fullDestPath, relative to the given destination +// directory (destDir). +static +std::string +_GetDestRelativePath(const std::string &fullDestPath, + const std::string &destDir) +{ + std::string destPath = fullDestPath; + // fullDestPath won't start with destDir if destDir is a relative path, + // relative to CWD. + if (TfStringStartsWith(destPath, destDir)) { + destPath = destPath.substr(destDir.length()); + } + return destPath; +} + +static +bool +_CreateNewUsdzPackage(const SdfAssetPath &assetPath, + const std::string &usdzFilePath, + const std::string &firstLayerName, + const std::string &origRootFilePath=std::string(), + const std::vector &dependenciesToSkip + =std::vector()) +{ + TF_DEBUG(USDUTILS_CREATE_USDZ_PACKAGE).Msg("Creating USDZ package at '%s' " + "containing asset @%s@.\n", usdzFilePath.c_str(), + assetPath.GetAssetPath().c_str()); + + std::string destDir = TfGetPathName(usdzFilePath); + destDir = destDir.empty() ? "./" : destDir; + UsdUtils_AssetLocalizer localizer(assetPath, destDir, + /* enableMetadataFiltering */ true, + firstLayerName, + origRootFilePath, + dependenciesToSkip); + + auto &layerExportMap = localizer.GetLayerExportMap(); + auto &fileCopyMap = localizer.GetFileCopyMap(); + + if (layerExportMap.empty() && fileCopyMap.empty()) { + return false; + } + + // Set of all the packaged files. + std::unordered_set packagedFiles; + + const std::string tmpDirPath = ArchGetTmpDir(); + + UsdZipFileWriter writer = UsdZipFileWriter::CreateNew(usdzFilePath); + + auto &resolver = ArGetResolver(); + // This returns true of src and dest have the same file extension. + const auto extensionsMatch = [&resolver](const std::string &src, + const std::string &dest) { + return resolver.GetExtension(src) == resolver.GetExtension(dest); + }; + + bool firstLayer = true; + bool success = true; + for (auto &layerAndDestPath : layerExportMap) { + const auto &layer = layerAndDestPath.first; + std::string destPath = _GetDestRelativePath( + layerAndDestPath.second, destDir); + + // Change the first layer's name if requested. + if (firstLayer && !firstLayerName.empty()) { + const std::string pathName = TfGetPathName(destPath); + destPath = TfStringCatPaths(pathName, firstLayerName); + firstLayer = false; + } + + if (!packagedFiles.insert(destPath).second) { + TF_WARN("A file already exists at path \"%s\" in the package. " + "Skipping export of layer @%s@.", destPath.c_str(), + layer->GetIdentifier().c_str()); + continue; + } + + TF_DEBUG(USDUTILS_CREATE_USDZ_PACKAGE).Msg( + ".. adding layer @%s@ to package at path '%s'.\n", + layer->GetIdentifier().c_str(), destPath.c_str()); + + // If the layer is a package or if it's inside a package, copy the + // entire package. We could extract the package and copy only the + // dependencies, but this could get very complicated. + if (layer->GetFileFormat()->IsPackage() || + ArIsPackageRelativePath(layer->GetIdentifier())) { + std::string packagePath = ArSplitPackageRelativePathOuter( + layer->GetRealPath()).first; + std::string destPackagePath = ArSplitPackageRelativePathOuter( + destPath).first; + if (!packagePath.empty()) { + std::string inArchivePath = writer.AddFile(packagePath, + destPackagePath); + if (inArchivePath.empty()) { + success = false; + } + } + } else if (!layer->IsDirty() && + extensionsMatch(layer->GetRealPath(), destPath)) { + // If the layer hasn't been modified from its persistent + // representation and if its extension isn't changing in the + // package, then simply copy it over from its real-path (i.e. + // location on disk). This preserves any existing comments in the + // file (which will be lost if we were to export all layers before + // adding them to to the package). + std::string inArchivePath = writer.AddFile(layer->GetRealPath(), + destPath); + if (inArchivePath.empty()) { + success = false; + } + } else { + // If the layer has been modified or needs to be modified, then we + // need to export it to a temporary file before adding it to the + // package. + SdfFileFormat::FileFormatArguments args; + + const SdfFileFormatConstPtr fileFormat = + SdfFileFormat::FindByExtension( + SdfFileFormat::GetFileExtension(destPath)); + + if (TfDynamic_cast(fileFormat)) { + args[UsdUsdFileFormatTokens->FormatArg] = + UsdUsdFileFormat::GetUnderlyingFormatForLayer( + *get_pointer(layer)); + } + + std::string tmpLayerExportPath = TfStringCatPaths(tmpDirPath, + TfGetBaseName(destPath)); + layer->Export(tmpLayerExportPath, /*comment*/ "", args); + + std::string inArchivePath = writer.AddFile(tmpLayerExportPath, + destPath); + + if (inArchivePath.empty()) { + // XXX: Should we discard the usdz file and return early here? + TF_WARN("Failed to add temporary layer at '%s' to the package " + "at path '%s'.", tmpLayerExportPath.c_str(), + usdzFilePath.c_str()); + success = false; + } else { + // The file has been added to the package successfully. We can + // delete it now. + TfDeleteFile(tmpLayerExportPath); + } + } + } + + for (auto &fileSrcAndDestPath : fileCopyMap) { + const std::string &srcPath = fileSrcAndDestPath.first; + const std::string destPath = _GetDestRelativePath( + fileSrcAndDestPath.second, destDir); + TF_DEBUG(USDUTILS_CREATE_USDZ_PACKAGE).Msg( + ".. adding file '%s' to package at path '%s'.\n", + srcPath.c_str(), destPath.c_str()); + + if (!packagedFiles.insert(destPath).second) { + TF_WARN("A file already exists at path \"%s\" in the package. " + "Skipping copy of file \"%s\".", destPath.c_str(), + srcPath.c_str()); + continue; + } + + // If the file is a package or inside a package, copy the + // entire package. We could extract the package and copy only the + // dependencies, but this could get very complicated. + if (ArIsPackageRelativePath(destPath)) { + std::string packagePath = ArSplitPackageRelativePathOuter( + srcPath).first; + std::string destPackagePath = ArSplitPackageRelativePathOuter( + destPath).first; + if (!packagePath.empty()) { + std::string inArchivePath = writer.AddFile(packagePath, + destPackagePath); + if (inArchivePath.empty()) { + success = false; + } + } + } + else { + std::string inArchivePath = writer.AddFile(srcPath, destPath); + if (inArchivePath.empty()) { + // XXX: Should we discard the usdz file and return early here? + TF_WARN("Failed to add file '%s' to the package at path '%s'.", + srcPath.c_str(), usdzFilePath.c_str()); + success = false; + } + } + } + + return writer.Save() && success; +} + +bool +UsdUtilsCreateNewUsdzPackage(const SdfAssetPath &assetPath, + const std::string &usdzFilePath, + const std::string &firstLayerName) +{ + return _CreateNewUsdzPackage(assetPath, usdzFilePath, firstLayerName); +} + +bool +UsdUtilsCreateNewARKitUsdzPackage( + const SdfAssetPath &assetPath, + const std::string &inUsdzFilePath, + const std::string &firstLayerName) +{ + auto &resolver = ArGetResolver(); + + std::string usdzFilePath = ArchNormPath(inUsdzFilePath); + + const std::string resolvedPath = resolver.Resolve(assetPath.GetAssetPath()); + if (resolvedPath.empty()) { + return false; + } + + // Check if the given asset has external dependencies that participate in + // the composition of the stage. + std::vector sublayers, references, payloads; + UsdUtils_ExtractExternalReferences(resolvedPath, + UsdUtils_FileAnalyzer::ReferenceType::CompositionOnly, + &sublayers, &references, &payloads); + + // Ensure that the root layer has the ".usdc" extension. + std::string targetBaseName = firstLayerName.empty() ? + TfGetBaseName(assetPath.GetAssetPath()) : firstLayerName; + const std::string &fileExt = resolver.GetExtension(targetBaseName); + bool renamingRootLayer = false; + if (fileExt != UsdUsdcFileFormatTokens->Id) { + renamingRootLayer = true; + targetBaseName = targetBaseName.substr(0, targetBaseName.rfind(".")+1) + + UsdUsdcFileFormatTokens->Id.GetString(); + } + + // If there are no external dependencies needed for composition, we can + // invoke the regular packaging function. + if (sublayers.empty() && references.empty() && payloads.empty()) { + if (renamingRootLayer) { + return _CreateNewUsdzPackage(assetPath, usdzFilePath, + /*firstLayerName*/ targetBaseName, + /* origRootFilePath*/ resolvedPath, + /* dependenciesToSkip */ {resolvedPath}); + } else { + return _CreateNewUsdzPackage(assetPath, usdzFilePath, + /*firstLayerName*/ targetBaseName, + /* origRootFilePath*/ resolvedPath); + } + } + + TF_WARN("The given asset '%s' contains one or more composition arcs " + "referencing external USD files. Flattening it to a single .usdc file " + "before packaging. This will result in loss of features such as " + "variantSets and all asset references to be absolutized.", + assetPath.GetAssetPath().c_str()); + + const auto &usdStage = UsdStage::Open(resolvedPath); + const std::string tmpFileName = + ArchMakeTmpFileName(targetBaseName, ".usdc"); + + TF_DEBUG(USDUTILS_CREATE_USDZ_PACKAGE).Msg( + "Flattening asset @%s@ located at '%s' to temporary layer at " + "path '%s'.\n", assetPath.GetAssetPath().c_str(), resolvedPath.c_str(), + tmpFileName.c_str()); + + if (!usdStage->Export(tmpFileName, /*addSourceFileComment*/ false)) { + TF_WARN("Failed to flatten and export the USD stage '%s'.", + UsdDescribe(usdStage).c_str()); + return false; + } + + bool success = _CreateNewUsdzPackage(SdfAssetPath(tmpFileName), + usdzFilePath, /* firstLayerName */ targetBaseName, + /* origRootFilePath*/ resolvedPath, + /*dependenciesToSkip*/ {resolvedPath}); + + if (success) { + TfDeleteFile(tmpFileName); + } else { + TF_WARN("Failed to create a .usdz package from temporary, flattened " + "layer '%s'.", tmpFileName.c_str());; + } + + return success; +} + +PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/usd/usdUtils/usdzPackage.h b/pxr/usd/usdUtils/usdzPackage.h new file mode 100644 index 0000000000..792ba8c129 --- /dev/null +++ b/pxr/usd/usdUtils/usdzPackage.h @@ -0,0 +1,123 @@ +// +// Copyright 2023 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +#ifndef PXR_USD_USD_UTILS_USDZ_PACKAGE_H +#define PXR_USD_USD_UTILS_USDZ_PACKAGE_H + +/// \file usdUtils/usdzPackage.h + +#include "pxr/pxr.h" +#include "pxr/usd/sdf/layer.h" +#include "pxr/usd/usdUtils/api.h" + +#include +#include + +PXR_NAMESPACE_OPEN_SCOPE + +class SdfAssetPath; + +/// Creates a USDZ package containing the specified asset, identified by its +/// \p assetPath. The created package will include a localized version of the +/// asset itself and all of its external dependencies. Any anonymous layers that +/// are encountered during dependency discovery will be serialized into the +/// resulting package. Due to localization, the packaged layers might be +/// modified to have different asset paths. +/// +/// You can optionally specify a different package-internal name for the first +/// layer of the asset by specifying \p firstLayerName. By default, +/// \p firstLayerName is empty, meaning that the original name is preserved. +/// +/// Returns true if the package was created successfully. +/// +/// \note Clients of this function must take care of configuring the asset +/// resolver context before invoking the function. To create a default +/// resolver context, use \ref CreateDefaultContextForAsset() with the +/// asset path. +/// +/// \note If the given asset has a dependency on a directory (i.e. an external +/// reference to a directory path), the dependency is ignored and the contents +/// of the directory are not included in the created package. +/// +/// \note This function modifies the layers referenced by \p assetPath +/// (including the root layer and all transitive layer dependencies) in-place. +/// However, it does not save the layers before copying them into the package +/// that is created. It also does not revert the changes it makes to the +/// layers. Therefore, it is strongly recommended that you run this function in +/// isolation after any source UsdStages have been closed. If you have UsdStages +/// open during the function call that reference the layers being modified, you +/// may receive warnings or composition errors which may not affect the +/// resulting package adversely. +/// +/// \sa UsdUtilsCreateNewARKitUsdzPackage() +USDUTILS_API +bool +UsdUtilsCreateNewUsdzPackage( + const SdfAssetPath& assetPath, + const std::string& usdzFilePath, + const std::string& firstLayerName=std::string()); + +/// Similar to UsdUtilsCreateNewUsdzPackage, this function packages all of the +/// dependencies of the given asset. Assets targeted at the initial usdz +/// implementation in ARKit operate under greater constraints than usdz files +/// for more general 'in house' uses, and this option attempts to ensure that +/// these constraints are honored; this may involve more transformations to the +/// data, which may cause loss of features such as VariantSets. Any anonymous +/// layers that are encountered during dependency discovery will be serialized +/// into the resulting package. +/// +/// If \p firstLayerName is specified, it is modified to have the ".usdc" +/// extension, as required by the initial usdz implementation in ARKit. +/// +/// Returns true if the package was created successfully. +/// +/// \note Clients of this function must take care of configuring the asset +/// resolver context before invoking the function. To create a default +/// resolver context, use \ref CreateDefaultContextForAsset() with the +/// asset path. +/// +/// \note If the given asset has a dependency on a directory (i.e. an external +/// reference to a directory path), the dependency is ignored and the contents +/// of the directory are not included in the created package. +/// +/// \note This function modifies the layers referenced by \p assetPath +/// (including the root layer and all transitive layer dependencies) in-place. +/// However, it does not save the layers before copying them into the package +/// that is created. It also does not revert the changes it makes to the +/// layers. Therefore, it is strongly recommended that you run this function in +/// isolation after any source UsdStages have been closed. If you have UsdStages +/// open during the function call that reference the layers being modified, you +/// may receive warnings or composition errors which may not affect the +/// resulting package adversely. +/// +/// \sa UsdUtilsCreateNewUsdzPackage() +USDUTILS_API +bool +UsdUtilsCreateNewARKitUsdzPackage( + const SdfAssetPath &assetPath, + const std::string &usdzFilePath, + const std::string &firstLayerName=std::string()); + +PXR_NAMESPACE_CLOSE_SCOPE + +#endif // PXR_USD_USD_UTILS_USDZ_PACKAGE_H From 7c084d1e3dc2ec4744313607ab9112d955090845 Mon Sep 17 00:00:00 2001 From: mrawde Date: Tue, 25 Jul 2023 15:32:30 -0700 Subject: [PATCH 074/352] [hdGp] Fix race condition by grabbing the mutex if we're going to be modifying the _dependencies map. (Internal change: 2284208) --- ...generativeProceduralResolvingSceneIndex.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pxr/imaging/hdGp/generativeProceduralResolvingSceneIndex.cpp b/pxr/imaging/hdGp/generativeProceduralResolvingSceneIndex.cpp index baca01e9e2..118c9403c9 100644 --- a/pxr/imaging/hdGp/generativeProceduralResolvingSceneIndex.cpp +++ b/pxr/imaging/hdGp/generativeProceduralResolvingSceneIndex.cpp @@ -604,16 +604,16 @@ HdGpGenerativeProceduralResolvingSceneIndex::_UpdateProceduralDependencies( } } - for (const auto& pathLocatorsPair : newDependencies) { - const SdfPath &dependencyPath = pathLocatorsPair.first; - if (procEntry.dependencies.find(dependencyPath) - == procEntry.dependencies.end()) { - _dependencies[dependencyPath].insert(proceduralPrimPath); - } - } - - if (!dependencesToRemove.empty()) { + if (!newDependencies.empty() || !dependencesToRemove.empty()) { _MapLock depsLock(_dependenciesMutex); + + for (const auto& pathLocatorsPair : newDependencies) { + const SdfPath &dependencyPath = pathLocatorsPair.first; + if (procEntry.dependencies.find(dependencyPath) + == procEntry.dependencies.end()) { + _dependencies[dependencyPath].insert(proceduralPrimPath); + } + } for (const SdfPath &dependencyPath : dependencesToRemove) { _DependencyMap::iterator it = _dependencies.find(dependencyPath); From b5738a1f5240623da3f73c6e116a5b205c4beb18 Mon Sep 17 00:00:00 2001 From: clach Date: Tue, 25 Jul 2023 15:32:45 -0700 Subject: [PATCH 075/352] [hd, usdImaging, hdPrman] Rollback changes in 2274970 and 2275014, moving HdModelSchema back to UsdImagingModelSchema. (Internal change: 2284285) --- pxr/imaging/hd/CMakeLists.txt | 1 - pxr/usdImaging/usdImaging/CMakeLists.txt | 1 + pxr/usdImaging/usdImaging/dataSourcePrim.cpp | 126 +++++++------- .../usdImaging/drawModeSceneIndex.cpp | 14 +- pxr/usdImaging/usdImaging/drawModeStandin.cpp | 58 +++---- .../usdImaging/extentResolvingSceneIndex.cpp | 1 - .../flattenedDataSourceProviders.cpp | 4 +- .../flattenedModelDataSourceProvider.cpp | 14 +- .../usdImaging}/modelSchema.cpp | 162 +++++++++--------- .../usdImaging}/modelSchema.h | 74 ++++---- .../usdImaging/unloadedDrawModeSceneIndex.cpp | 8 +- .../hdPrman/meshLightResolvingSceneIndex.cpp | 5 +- 12 files changed, 234 insertions(+), 234 deletions(-) rename pxr/{imaging/hd => usdImaging/usdImaging}/modelSchema.cpp (58%) rename pxr/{imaging/hd => usdImaging/usdImaging}/modelSchema.h (86%) diff --git a/pxr/imaging/hd/CMakeLists.txt b/pxr/imaging/hd/CMakeLists.txt index 0187604aa8..bd05947c4a 100644 --- a/pxr/imaging/hd/CMakeLists.txt +++ b/pxr/imaging/hd/CMakeLists.txt @@ -113,7 +113,6 @@ pxr_library(hd meshTopology meshTopologySchema meshUtil - modelSchema noticeBatchingSceneIndex nurbsCurvesSchema nurbsPatchSchema diff --git a/pxr/usdImaging/usdImaging/CMakeLists.txt b/pxr/usdImaging/usdImaging/CMakeLists.txt index c8f369bc9c..9504f3ad94 100644 --- a/pxr/usdImaging/usdImaging/CMakeLists.txt +++ b/pxr/usdImaging/usdImaging/CMakeLists.txt @@ -55,6 +55,7 @@ pxr_library(usdImaging extentResolvingSceneIndex indexProxy materialParamUtils + modelSchema primvarUtils resolvedAttributeCache instancerContext diff --git a/pxr/usdImaging/usdImaging/dataSourcePrim.cpp b/pxr/usdImaging/usdImaging/dataSourcePrim.cpp index 2285bde0ff..00e445815d 100644 --- a/pxr/usdImaging/usdImaging/dataSourcePrim.cpp +++ b/pxr/usdImaging/usdImaging/dataSourcePrim.cpp @@ -25,12 +25,12 @@ #include "pxr/usdImaging/usdImaging/dataSourceAttribute.h" #include "pxr/usdImaging/usdImaging/dataSourcePrimvars.h" #include "pxr/usdImaging/usdImaging/dataSourceUsdPrimInfo.h" +#include "pxr/usdImaging/usdImaging/modelSchema.h" #include "pxr/usdImaging/usdImaging/tokens.h" #include "pxr/usdImaging/usdImaging/usdPrimInfoSchema.h" #include "pxr/imaging/hd/retainedDataSource.h" #include "pxr/imaging/hd/extentSchema.h" -#include "pxr/imaging/hd/modelSchema.h" #include "pxr/imaging/hd/purposeSchema.h" #include "pxr/imaging/hd/primOriginSchema.h" #include "pxr/imaging/hd/visibilitySchema.h" @@ -433,33 +433,33 @@ TfTokenVector UsdImagingDataSourceModel::GetNames() { return { - HdModelSchemaTokens->drawMode, - HdModelSchemaTokens->applyDrawMode, - HdModelSchemaTokens->drawModeColor, - HdModelSchemaTokens->cardGeometry, - HdModelSchemaTokens->cardTextureXPos, - HdModelSchemaTokens->cardTextureYPos, - HdModelSchemaTokens->cardTextureZPos, - HdModelSchemaTokens->cardTextureXNeg, - HdModelSchemaTokens->cardTextureYNeg, - HdModelSchemaTokens->cardTextureZNeg + UsdImagingModelSchemaTokens->drawMode, + UsdImagingModelSchemaTokens->applyDrawMode, + UsdImagingModelSchemaTokens->drawModeColor, + UsdImagingModelSchemaTokens->cardGeometry, + UsdImagingModelSchemaTokens->cardTextureXPos, + UsdImagingModelSchemaTokens->cardTextureYPos, + UsdImagingModelSchemaTokens->cardTextureZPos, + UsdImagingModelSchemaTokens->cardTextureXNeg, + UsdImagingModelSchemaTokens->cardTextureYNeg, + UsdImagingModelSchemaTokens->cardTextureZNeg }; } HdDataSourceBaseHandle UsdImagingDataSourceModel::Get(const TfToken &name) { - if (name == HdModelSchemaTokens->drawMode) { + if (name == UsdImagingModelSchemaTokens->drawMode) { static const HdDataSourceLocator locator = - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->drawMode); + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->drawMode); return UsdImagingDataSourceAttribute::New( _model.GetModelDrawModeAttr(), _stageGlobals, _sceneIndexPath, locator); } - if (name == HdModelSchemaTokens->applyDrawMode) { + if (name == UsdImagingModelSchemaTokens->applyDrawMode) { UsdPrim prim = _model.GetPrim(); if (prim.IsModel()) { if (UsdModelAPI(prim).IsKind(KindTokens->component)) { @@ -468,88 +468,88 @@ UsdImagingDataSourceModel::Get(const TfToken &name) } static const HdDataSourceLocator locator = - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->applyDrawMode); + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->applyDrawMode); return UsdImagingDataSourceAttribute::New( _model.GetModelApplyDrawModeAttr(), _stageGlobals, _sceneIndexPath, locator); } - if (name == HdModelSchemaTokens->drawModeColor) { + if (name == UsdImagingModelSchemaTokens->drawModeColor) { static const HdDataSourceLocator locator = - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->drawModeColor); + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->drawModeColor); return UsdImagingDataSourceAttribute::New( _model.GetModelDrawModeColorAttr(), _stageGlobals, _sceneIndexPath, locator); } - if (name == HdModelSchemaTokens->cardGeometry) { + if (name == UsdImagingModelSchemaTokens->cardGeometry) { static const HdDataSourceLocator locator = - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->cardGeometry); + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->cardGeometry); return UsdImagingDataSourceAttribute::New( _model.GetModelCardGeometryAttr(), _stageGlobals, _sceneIndexPath, locator); } - if (name == HdModelSchemaTokens->cardTextureXPos) { + if (name == UsdImagingModelSchemaTokens->cardTextureXPos) { static const HdDataSourceLocator locator = - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->cardTextureXPos); + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->cardTextureXPos); return UsdImagingDataSourceAttribute::New( _model.GetModelCardTextureXPosAttr(), _stageGlobals, _sceneIndexPath, locator); } - if (name == HdModelSchemaTokens->cardTextureYPos) { + if (name == UsdImagingModelSchemaTokens->cardTextureYPos) { static const HdDataSourceLocator locator = - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->cardTextureYPos); + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->cardTextureYPos); return UsdImagingDataSourceAttribute::New( _model.GetModelCardTextureYPosAttr(), _stageGlobals, _sceneIndexPath, locator); } - if (name == HdModelSchemaTokens->cardTextureZPos) { + if (name == UsdImagingModelSchemaTokens->cardTextureZPos) { static const HdDataSourceLocator locator = - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->cardTextureZPos); + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->cardTextureZPos); return UsdImagingDataSourceAttribute::New( _model.GetModelCardTextureZPosAttr(), _stageGlobals, _sceneIndexPath, locator); } - if (name == HdModelSchemaTokens->cardTextureXNeg) { + if (name == UsdImagingModelSchemaTokens->cardTextureXNeg) { static const HdDataSourceLocator locator = - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->cardTextureXNeg); + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->cardTextureXNeg); return UsdImagingDataSourceAttribute::New( _model.GetModelCardTextureXNegAttr(), _stageGlobals, _sceneIndexPath, locator); } - if (name == HdModelSchemaTokens->cardTextureYNeg) { + if (name == UsdImagingModelSchemaTokens->cardTextureYNeg) { static const HdDataSourceLocator locator = - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->cardTextureYNeg); + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->cardTextureYNeg); return UsdImagingDataSourceAttribute::New( _model.GetModelCardTextureYNegAttr(), _stageGlobals, _sceneIndexPath, locator); } - if (name == HdModelSchemaTokens->cardTextureZNeg) { + if (name == UsdImagingModelSchemaTokens->cardTextureZNeg) { static const HdDataSourceLocator locator = - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->cardTextureZNeg); + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->cardTextureZNeg); return UsdImagingDataSourceAttribute::New( _model.GetModelCardTextureZNegAttr(), _stageGlobals, @@ -660,7 +660,7 @@ UsdImagingDataSourcePrim::GetNames() } if (_GetUsdPrim().HasAPI()) { - vec.push_back(HdModelSchemaTokens->model); + vec.push_back(UsdImagingModelSchemaTokens->model); } if (_GetUsdPrim().IsModel()) { @@ -743,7 +743,7 @@ UsdImagingDataSourcePrim::Get(const TfToken &name) } else { return nullptr; } - } else if (name == HdModelSchemaTokens->model) { + } else if (name == UsdImagingModelSchemaTokens->model) { UsdGeomModelAPI model(_GetUsdPrim()); if (!model) { return nullptr; @@ -811,71 +811,71 @@ UsdImagingDataSourcePrim::Invalidate( if (propertyName == UsdGeomTokens->modelDrawMode) { static const HdDataSourceLocator locator( - HdModelSchemaTokens->model, - HdModelSchemaTokens->drawMode); + UsdImagingModelSchemaTokens->model, + UsdImagingModelSchemaTokens->drawMode); locators.insert(locator); } if (propertyName == UsdGeomTokens->modelApplyDrawMode) { static const HdDataSourceLocator locator( - HdModelSchemaTokens->model, - HdModelSchemaTokens->applyDrawMode); + UsdImagingModelSchemaTokens->model, + UsdImagingModelSchemaTokens->applyDrawMode); locators.insert(locator); } if (propertyName == UsdGeomTokens->modelDrawModeColor) { static const HdDataSourceLocator locator( - HdModelSchemaTokens->model, - HdModelSchemaTokens->drawModeColor); + UsdImagingModelSchemaTokens->model, + UsdImagingModelSchemaTokens->drawModeColor); locators.insert(locator); } if (propertyName == UsdGeomTokens->modelCardGeometry) { static const HdDataSourceLocator locator( - HdModelSchemaTokens->model, - HdModelSchemaTokens->cardGeometry); + UsdImagingModelSchemaTokens->model, + UsdImagingModelSchemaTokens->cardGeometry); locators.insert(locator); } if (propertyName == UsdGeomTokens->modelCardTextureXPos) { static const HdDataSourceLocator locator( - HdModelSchemaTokens->model, - HdModelSchemaTokens->cardTextureXPos); + UsdImagingModelSchemaTokens->model, + UsdImagingModelSchemaTokens->cardTextureXPos); locators.insert(locator); } if (propertyName == UsdGeomTokens->modelCardTextureXNeg) { static const HdDataSourceLocator locator( - HdModelSchemaTokens->model, - HdModelSchemaTokens->cardTextureXNeg); + UsdImagingModelSchemaTokens->model, + UsdImagingModelSchemaTokens->cardTextureXNeg); locators.insert(locator); } if (propertyName == UsdGeomTokens->modelCardTextureYPos) { static const HdDataSourceLocator locator( - HdModelSchemaTokens->model, - HdModelSchemaTokens->cardTextureYPos); + UsdImagingModelSchemaTokens->model, + UsdImagingModelSchemaTokens->cardTextureYPos); locators.insert(locator); } if (propertyName == UsdGeomTokens->modelCardTextureYNeg) { static const HdDataSourceLocator locator( - HdModelSchemaTokens->model, - HdModelSchemaTokens->cardTextureYNeg); + UsdImagingModelSchemaTokens->model, + UsdImagingModelSchemaTokens->cardTextureYNeg); locators.insert(locator); } if (propertyName == UsdGeomTokens->modelCardTextureZPos) { static const HdDataSourceLocator locator( - HdModelSchemaTokens->model, - HdModelSchemaTokens->cardTextureZPos); + UsdImagingModelSchemaTokens->model, + UsdImagingModelSchemaTokens->cardTextureZPos); locators.insert(locator); } if (propertyName == UsdGeomTokens->modelCardTextureZNeg) { static const HdDataSourceLocator locator( - HdModelSchemaTokens->model, - HdModelSchemaTokens->cardTextureZNeg); + UsdImagingModelSchemaTokens->model, + UsdImagingModelSchemaTokens->cardTextureZNeg); locators.insert(locator); } diff --git a/pxr/usdImaging/usdImaging/drawModeSceneIndex.cpp b/pxr/usdImaging/usdImaging/drawModeSceneIndex.cpp index c82da598b3..a9c03e7f2d 100644 --- a/pxr/usdImaging/usdImaging/drawModeSceneIndex.cpp +++ b/pxr/usdImaging/usdImaging/drawModeSceneIndex.cpp @@ -24,7 +24,7 @@ #include "pxr/usdImaging/usdImaging/drawModeSceneIndex.h" #include "pxr/usdImaging/usdImaging/drawModeStandin.h" -#include "pxr/imaging/hd/modelSchema.h" +#include "pxr/usdImaging/usdImaging/modelSchema.h" #include "pxr/base/trace/trace.h" @@ -41,8 +41,8 @@ _GetDrawMode(const HdSceneIndexPrim &prim) { static const TfToken empty; - HdModelSchema modelSchema = - HdModelSchema::GetFromParent(prim.dataSource); + UsdImagingModelSchema modelSchema = + UsdImagingModelSchema::GetFromParent(prim.dataSource); HdBoolDataSourceHandle const applySrc = modelSchema.GetApplyDrawMode(); if (!applySrc) { @@ -319,10 +319,10 @@ UsdImagingDrawModeSceneIndex::_PrimsDirtied( std::set paths; static const HdDataSourceLocatorSet drawModeLocators{ - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->drawMode), - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->applyDrawMode)}; + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->drawMode), + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->applyDrawMode)}; for (const HdSceneIndexObserver::DirtiedPrimEntry &entry : entries) { if (drawModeLocators.Intersects(entry.dirtyLocators)) { diff --git a/pxr/usdImaging/usdImaging/drawModeStandin.cpp b/pxr/usdImaging/usdImaging/drawModeStandin.cpp index b0596c377c..0b70f6bde2 100644 --- a/pxr/usdImaging/usdImaging/drawModeStandin.cpp +++ b/pxr/usdImaging/usdImaging/drawModeStandin.cpp @@ -23,6 +23,7 @@ #include "pxr/usdImaging/usdImaging/drawModeStandin.h" +#include "pxr/usdImaging/usdImaging/modelSchema.h" #include "pxr/usdImaging/usdImaging/tokens.h" #include "pxr/imaging/hd/basisCurvesSchema.h" @@ -37,7 +38,6 @@ #include "pxr/imaging/hd/materialSchema.h" #include "pxr/imaging/hd/meshTopologySchema.h" #include "pxr/imaging/hd/meshSchema.h" -#include "pxr/imaging/hd/modelSchema.h" #include "pxr/imaging/hd/overlayContainerDataSource.h" #include "pxr/imaging/hd/primvarSchema.h" #include "pxr/imaging/hd/primvarsSchema.h" @@ -192,12 +192,12 @@ class _DisplayColorVec3fDataSource final : public HdVec3fDataSource } private: - _DisplayColorVec3fDataSource(const HdModelSchema schema) + _DisplayColorVec3fDataSource(const UsdImagingModelSchema schema) : _schema(schema) { } - HdModelSchema _schema; + UsdImagingModelSchema _schema; }; /// A vec4f wrapper around a HdVec3fDataSource, for use when a vec4f @@ -331,7 +331,7 @@ class _PrimvarsDataSource : public HdContainerDataSource /// return _PrimvarDataSource::New( _DisplayColorVec3fDataSource::New( - HdModelSchema::GetFromParent(_primSource)), + UsdImagingModelSchema::GetFromParent(_primSource)), HdPrimvarSchemaTokens->constant, HdPrimvarSchemaTokens->color); } @@ -655,8 +655,8 @@ class _BoundsStandin : public UsdImaging_DrawModeStandin // Check whether model:drawModeColor is dirty. static const HdDataSourceLocator colorLocator = - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->drawModeColor); + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->drawModeColor); const bool dirtyColor = dirtyLocators.Intersects(colorLocator); @@ -867,8 +867,8 @@ class _OriginStandin : public UsdImaging_DrawModeStandin // Check whether model:drawModeColor is dirty. static const HdDataSourceLocator colorLocator = - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->drawModeColor); + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->drawModeColor); const bool dirtyColor = dirtyLocators.Intersects(colorLocator); @@ -948,7 +948,7 @@ using _MaterialsDict = std::unordered_map< /// It is providing a mesh with a material. The mesh consists of up to 6 quads. /// Besides points, it has the vertex-varying cardsUv and face-varying /// cardsTexAssgin - determining where to sample which of the up to 6 textures -/// that can be specified by the HdModelSchema. +/// that can be specified by the UsdImagingModelSchema. /// /// Details vary based on the card geometry which is box, cross, or fromTexture. /// @@ -1005,7 +1005,7 @@ class _CardsDataCache } private: - /// A helper extracing values from HdModelSchema. + /// A helper extracing values from UsdImagingModelSchema. /// /// Note that the order of the six given textures is assumed to be: /// XPos, YPos, ZPos, XNeg, YNeg, ZNeg. @@ -1016,7 +1016,7 @@ class _CardsDataCache /// So we do not support motion-blur for these attributes. struct _SchemaValues { - _SchemaValues(HdModelSchema schema); + _SchemaValues(UsdImagingModelSchema schema); /// Card geometry, that is box, cross, or fromTexture. TfToken cardGeometry; @@ -1079,7 +1079,7 @@ class _CardsDataCache return cached; } auto data = std::make_shared<_CardsData>( - _SchemaValues(HdModelSchema::GetFromParent(_primSource)), + _SchemaValues(UsdImagingModelSchema::GetFromParent(_primSource)), _primPath ); @@ -1173,7 +1173,7 @@ GetWorldToScreenFromImageMetadata( return false; } -_CardsDataCache::_SchemaValues::_SchemaValues(HdModelSchema schema) +_CardsDataCache::_SchemaValues::_SchemaValues(UsdImagingModelSchema schema) { if (HdTokenDataSourceHandle src = schema.GetCardGeometry()) { cardGeometry = src->GetTypedValue(0.0f); @@ -1995,20 +1995,20 @@ class _CardsStandin : public UsdImaging_DrawModeStandin // we send to the observer. static const HdDataSourceLocatorSet cardLocators{ - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->cardGeometry), - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->cardTextureXPos), - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->cardTextureYPos), - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->cardTextureZPos), - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->cardTextureXNeg), - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->cardTextureYNeg), - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->cardTextureZNeg) }; + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->cardGeometry), + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->cardTextureXPos), + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->cardTextureYPos), + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->cardTextureZPos), + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->cardTextureXNeg), + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->cardTextureYNeg), + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->cardTextureZNeg) }; // Blast the entire thing. if (dirtyLocators.Intersects(cardLocators)) { @@ -2022,8 +2022,8 @@ class _CardsStandin : public UsdImaging_DrawModeStandin } static const HdDataSourceLocator colorLocator = - HdModelSchema::GetDefaultLocator().Append( - HdModelSchemaTokens->drawModeColor); + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->drawModeColor); if (dirtyLocators.Intersects(colorLocator)) { HdDataSourceLocatorSet primDirtyLocators = dirtyLocators; static const HdDataSourceLocator displayColorValue = diff --git a/pxr/usdImaging/usdImaging/extentResolvingSceneIndex.cpp b/pxr/usdImaging/usdImaging/extentResolvingSceneIndex.cpp index e9ba83d756..0ae649a7eb 100644 --- a/pxr/usdImaging/usdImaging/extentResolvingSceneIndex.cpp +++ b/pxr/usdImaging/usdImaging/extentResolvingSceneIndex.cpp @@ -26,7 +26,6 @@ #include "pxr/usdImaging/usdImaging/tokens.h" #include "pxr/usd/usdGeom/imageable.h" #include "pxr/imaging/hd/extentSchema.h" -#include "pxr/imaging/hd/modelSchema.h" PXR_NAMESPACE_OPEN_SCOPE diff --git a/pxr/usdImaging/usdImaging/flattenedDataSourceProviders.cpp b/pxr/usdImaging/usdImaging/flattenedDataSourceProviders.cpp index ec52ed61f4..7d76bb259a 100644 --- a/pxr/usdImaging/usdImaging/flattenedDataSourceProviders.cpp +++ b/pxr/usdImaging/usdImaging/flattenedDataSourceProviders.cpp @@ -24,9 +24,9 @@ #include "pxr/usdImaging/usdImaging/flattenedDataSourceProviders.h" #include "pxr/usdImaging/usdImaging/flattenedModelDataSourceProvider.h" +#include "pxr/usdImaging/usdImaging/modelSchema.h" #include "pxr/imaging/hd/flattenedDataSourceProviders.h" -#include "pxr/imaging/hd/modelSchema.h" #include "pxr/imaging/hd/overlayContainerDataSource.h" #include "pxr/imaging/hd/retainedDataSource.h" @@ -40,7 +40,7 @@ UsdImagingFlattenedDataSourceProviders() static HdContainerDataSourceHandle const result = HdOverlayContainerDataSource::New( HdRetainedContainerDataSource::New( - HdModelSchema::GetSchemaToken(), + UsdImagingModelSchema::GetSchemaToken(), Make()), HdFlattenedDataSourceProviders()); return result; diff --git a/pxr/usdImaging/usdImaging/flattenedModelDataSourceProvider.cpp b/pxr/usdImaging/usdImaging/flattenedModelDataSourceProvider.cpp index f83e5a9c82..08186bd06f 100644 --- a/pxr/usdImaging/usdImaging/flattenedModelDataSourceProvider.cpp +++ b/pxr/usdImaging/usdImaging/flattenedModelDataSourceProvider.cpp @@ -23,7 +23,7 @@ #include "pxr/usdImaging/usdImaging/flattenedModelDataSourceProvider.h" -#include "pxr/imaging/hd/modelSchema.h" +#include "pxr/usdImaging/usdImaging/modelSchema.h" #include "pxr/usd/usdGeom/tokens.h" @@ -35,7 +35,7 @@ bool _ContainsDrawMode(const TfTokenVector &vec) { for (const TfToken &token : vec) { - if (token == HdModelSchemaTokens->drawMode) { + if (token == UsdImagingModelSchemaTokens->drawMode) { return true; } } @@ -51,24 +51,24 @@ class _ModelDataSource : public HdContainerDataSource TfTokenVector result = _primModel->GetNames(); if (!_ContainsDrawMode(result) && _ContainsDrawMode(_parentModel->GetNames())) { - result.push_back(HdModelSchemaTokens->drawMode); + result.push_back(UsdImagingModelSchemaTokens->drawMode); } return result; } HdDataSourceBaseHandle Get(const TfToken &name) override { - if (name != HdModelSchemaTokens->drawMode) { + if (name != UsdImagingModelSchemaTokens->drawMode) { return _primModel->Get(name); } if (HdTokenDataSourceHandle ds = - HdModelSchema(_primModel).GetDrawMode()) { + UsdImagingModelSchema(_primModel).GetDrawMode()) { const TfToken drawMode = ds->GetTypedValue(0.0f); if (!drawMode.IsEmpty() && drawMode != UsdGeomTokens->inherited) { return ds; } } - return HdModelSchema(_parentModel).GetDrawMode(); + return UsdImagingModelSchema(_parentModel).GetDrawMode(); } static @@ -116,7 +116,7 @@ UsdImagingFlattenedModelDataSourceProvider::ComputeDirtyLocatorsForDescendants( HdDataSourceLocatorSet * const locators) const { static const HdDataSourceLocator drawModeLocator( - HdModelSchemaTokens->drawMode); + UsdImagingModelSchemaTokens->drawMode); static const HdDataSourceLocatorSet drawModeLocatorSet{ drawModeLocator}; diff --git a/pxr/imaging/hd/modelSchema.cpp b/pxr/usdImaging/usdImaging/modelSchema.cpp similarity index 58% rename from pxr/imaging/hd/modelSchema.cpp rename to pxr/usdImaging/usdImaging/modelSchema.cpp index ef7941e4af..e8fd20a755 100644 --- a/pxr/imaging/hd/modelSchema.cpp +++ b/pxr/usdImaging/usdImaging/modelSchema.cpp @@ -28,7 +28,7 @@ /* ** defs.py or the (*)Schema.template.cpp files to make changes. ** */ /* ************************************************************************** */ -#include "pxr/imaging/hd/modelSchema.h" +#include "pxr/usdImaging/usdImaging/modelSchema.h" #include "pxr/imaging/hd/retainedDataSource.h" #include "pxr/base/trace/trace.h" @@ -36,84 +36,84 @@ PXR_NAMESPACE_OPEN_SCOPE -TF_DEFINE_PUBLIC_TOKENS(HdModelSchemaTokens, - HDMODEL_SCHEMA_TOKENS); +TF_DEFINE_PUBLIC_TOKENS(UsdImagingModelSchemaTokens, + USDIMAGINGMODEL_SCHEMA_TOKENS); HdTokenDataSourceHandle -HdModelSchema::GetDrawMode() +UsdImagingModelSchema::GetDrawMode() { return _GetTypedDataSource( - HdModelSchemaTokens->drawMode); + UsdImagingModelSchemaTokens->drawMode); } HdBoolDataSourceHandle -HdModelSchema::GetApplyDrawMode() +UsdImagingModelSchema::GetApplyDrawMode() { return _GetTypedDataSource( - HdModelSchemaTokens->applyDrawMode); + UsdImagingModelSchemaTokens->applyDrawMode); } HdVec3fDataSourceHandle -HdModelSchema::GetDrawModeColor() +UsdImagingModelSchema::GetDrawModeColor() { return _GetTypedDataSource( - HdModelSchemaTokens->drawModeColor); + UsdImagingModelSchemaTokens->drawModeColor); } HdTokenDataSourceHandle -HdModelSchema::GetCardGeometry() +UsdImagingModelSchema::GetCardGeometry() { return _GetTypedDataSource( - HdModelSchemaTokens->cardGeometry); + UsdImagingModelSchemaTokens->cardGeometry); } HdAssetPathDataSourceHandle -HdModelSchema::GetCardTextureXPos() +UsdImagingModelSchema::GetCardTextureXPos() { return _GetTypedDataSource( - HdModelSchemaTokens->cardTextureXPos); + UsdImagingModelSchemaTokens->cardTextureXPos); } HdAssetPathDataSourceHandle -HdModelSchema::GetCardTextureYPos() +UsdImagingModelSchema::GetCardTextureYPos() { return _GetTypedDataSource( - HdModelSchemaTokens->cardTextureYPos); + UsdImagingModelSchemaTokens->cardTextureYPos); } HdAssetPathDataSourceHandle -HdModelSchema::GetCardTextureZPos() +UsdImagingModelSchema::GetCardTextureZPos() { return _GetTypedDataSource( - HdModelSchemaTokens->cardTextureZPos); + UsdImagingModelSchemaTokens->cardTextureZPos); } HdAssetPathDataSourceHandle -HdModelSchema::GetCardTextureXNeg() +UsdImagingModelSchema::GetCardTextureXNeg() { return _GetTypedDataSource( - HdModelSchemaTokens->cardTextureXNeg); + UsdImagingModelSchemaTokens->cardTextureXNeg); } HdAssetPathDataSourceHandle -HdModelSchema::GetCardTextureYNeg() +UsdImagingModelSchema::GetCardTextureYNeg() { return _GetTypedDataSource( - HdModelSchemaTokens->cardTextureYNeg); + UsdImagingModelSchemaTokens->cardTextureYNeg); } HdAssetPathDataSourceHandle -HdModelSchema::GetCardTextureZNeg() +UsdImagingModelSchema::GetCardTextureZNeg() { return _GetTypedDataSource( - HdModelSchemaTokens->cardTextureZNeg); + UsdImagingModelSchemaTokens->cardTextureZNeg); } /*static*/ HdContainerDataSourceHandle -HdModelSchema::BuildRetained( +UsdImagingModelSchema::BuildRetained( const HdTokenDataSourceHandle &drawMode, const HdBoolDataSourceHandle &applyDrawMode, const HdVec3fDataSourceHandle &drawModeColor, @@ -126,177 +126,177 @@ HdModelSchema::BuildRetained( const HdAssetPathDataSourceHandle &cardTextureZNeg ) { - TfToken names[10]; - HdDataSourceBaseHandle values[10]; + TfToken _names[10]; + HdDataSourceBaseHandle _values[10]; - size_t count = 0; + size_t _count = 0; if (drawMode) { - names[count] = HdModelSchemaTokens->drawMode; - values[count++] = drawMode; + _names[_count] = UsdImagingModelSchemaTokens->drawMode; + _values[_count++] = drawMode; } if (applyDrawMode) { - names[count] = HdModelSchemaTokens->applyDrawMode; - values[count++] = applyDrawMode; + _names[_count] = UsdImagingModelSchemaTokens->applyDrawMode; + _values[_count++] = applyDrawMode; } if (drawModeColor) { - names[count] = HdModelSchemaTokens->drawModeColor; - values[count++] = drawModeColor; + _names[_count] = UsdImagingModelSchemaTokens->drawModeColor; + _values[_count++] = drawModeColor; } if (cardGeometry) { - names[count] = HdModelSchemaTokens->cardGeometry; - values[count++] = cardGeometry; + _names[_count] = UsdImagingModelSchemaTokens->cardGeometry; + _values[_count++] = cardGeometry; } if (cardTextureXPos) { - names[count] = HdModelSchemaTokens->cardTextureXPos; - values[count++] = cardTextureXPos; + _names[_count] = UsdImagingModelSchemaTokens->cardTextureXPos; + _values[_count++] = cardTextureXPos; } if (cardTextureYPos) { - names[count] = HdModelSchemaTokens->cardTextureYPos; - values[count++] = cardTextureYPos; + _names[_count] = UsdImagingModelSchemaTokens->cardTextureYPos; + _values[_count++] = cardTextureYPos; } if (cardTextureZPos) { - names[count] = HdModelSchemaTokens->cardTextureZPos; - values[count++] = cardTextureZPos; + _names[_count] = UsdImagingModelSchemaTokens->cardTextureZPos; + _values[_count++] = cardTextureZPos; } if (cardTextureXNeg) { - names[count] = HdModelSchemaTokens->cardTextureXNeg; - values[count++] = cardTextureXNeg; + _names[_count] = UsdImagingModelSchemaTokens->cardTextureXNeg; + _values[_count++] = cardTextureXNeg; } if (cardTextureYNeg) { - names[count] = HdModelSchemaTokens->cardTextureYNeg; - values[count++] = cardTextureYNeg; + _names[_count] = UsdImagingModelSchemaTokens->cardTextureYNeg; + _values[_count++] = cardTextureYNeg; } if (cardTextureZNeg) { - names[count] = HdModelSchemaTokens->cardTextureZNeg; - values[count++] = cardTextureZNeg; + _names[_count] = UsdImagingModelSchemaTokens->cardTextureZNeg; + _values[_count++] = cardTextureZNeg; } - return HdRetainedContainerDataSource::New(count, names, values); + return HdRetainedContainerDataSource::New(_count, _names, _values); } /*static*/ -HdModelSchema -HdModelSchema::GetFromParent( +UsdImagingModelSchema +UsdImagingModelSchema::GetFromParent( const HdContainerDataSourceHandle &fromParentContainer) { - return HdModelSchema( + return UsdImagingModelSchema( fromParentContainer ? HdContainerDataSource::Cast(fromParentContainer->Get( - HdModelSchemaTokens->model)) + UsdImagingModelSchemaTokens->model)) : nullptr); } /*static*/ const TfToken & -HdModelSchema::GetSchemaToken() +UsdImagingModelSchema::GetSchemaToken() { - return HdModelSchemaTokens->model; + return UsdImagingModelSchemaTokens->model; } /*static*/ const HdDataSourceLocator & -HdModelSchema::GetDefaultLocator() +UsdImagingModelSchema::GetDefaultLocator() { static const HdDataSourceLocator locator( - HdModelSchemaTokens->model + UsdImagingModelSchemaTokens->model ); return locator; } /*static*/ const HdDataSourceLocator & -HdModelSchema::GetDrawModeLocator() +UsdImagingModelSchema::GetDrawModeLocator() { static const HdDataSourceLocator locator( - HdModelSchemaTokens->model, - HdModelSchemaTokens->drawMode + UsdImagingModelSchemaTokens->model, + UsdImagingModelSchemaTokens->drawMode ); return locator; } -HdModelSchema::Builder & -HdModelSchema::Builder::SetDrawMode( +UsdImagingModelSchema::Builder & +UsdImagingModelSchema::Builder::SetDrawMode( const HdTokenDataSourceHandle &drawMode) { _drawMode = drawMode; return *this; } -HdModelSchema::Builder & -HdModelSchema::Builder::SetApplyDrawMode( +UsdImagingModelSchema::Builder & +UsdImagingModelSchema::Builder::SetApplyDrawMode( const HdBoolDataSourceHandle &applyDrawMode) { _applyDrawMode = applyDrawMode; return *this; } -HdModelSchema::Builder & -HdModelSchema::Builder::SetDrawModeColor( +UsdImagingModelSchema::Builder & +UsdImagingModelSchema::Builder::SetDrawModeColor( const HdVec3fDataSourceHandle &drawModeColor) { _drawModeColor = drawModeColor; return *this; } -HdModelSchema::Builder & -HdModelSchema::Builder::SetCardGeometry( +UsdImagingModelSchema::Builder & +UsdImagingModelSchema::Builder::SetCardGeometry( const HdTokenDataSourceHandle &cardGeometry) { _cardGeometry = cardGeometry; return *this; } -HdModelSchema::Builder & -HdModelSchema::Builder::SetCardTextureXPos( +UsdImagingModelSchema::Builder & +UsdImagingModelSchema::Builder::SetCardTextureXPos( const HdAssetPathDataSourceHandle &cardTextureXPos) { _cardTextureXPos = cardTextureXPos; return *this; } -HdModelSchema::Builder & -HdModelSchema::Builder::SetCardTextureYPos( +UsdImagingModelSchema::Builder & +UsdImagingModelSchema::Builder::SetCardTextureYPos( const HdAssetPathDataSourceHandle &cardTextureYPos) { _cardTextureYPos = cardTextureYPos; return *this; } -HdModelSchema::Builder & -HdModelSchema::Builder::SetCardTextureZPos( +UsdImagingModelSchema::Builder & +UsdImagingModelSchema::Builder::SetCardTextureZPos( const HdAssetPathDataSourceHandle &cardTextureZPos) { _cardTextureZPos = cardTextureZPos; return *this; } -HdModelSchema::Builder & -HdModelSchema::Builder::SetCardTextureXNeg( +UsdImagingModelSchema::Builder & +UsdImagingModelSchema::Builder::SetCardTextureXNeg( const HdAssetPathDataSourceHandle &cardTextureXNeg) { _cardTextureXNeg = cardTextureXNeg; return *this; } -HdModelSchema::Builder & -HdModelSchema::Builder::SetCardTextureYNeg( +UsdImagingModelSchema::Builder & +UsdImagingModelSchema::Builder::SetCardTextureYNeg( const HdAssetPathDataSourceHandle &cardTextureYNeg) { _cardTextureYNeg = cardTextureYNeg; return *this; } -HdModelSchema::Builder & -HdModelSchema::Builder::SetCardTextureZNeg( +UsdImagingModelSchema::Builder & +UsdImagingModelSchema::Builder::SetCardTextureZNeg( const HdAssetPathDataSourceHandle &cardTextureZNeg) { _cardTextureZNeg = cardTextureZNeg; @@ -304,9 +304,9 @@ HdModelSchema::Builder::SetCardTextureZNeg( } HdContainerDataSourceHandle -HdModelSchema::Builder::Build() +UsdImagingModelSchema::Builder::Build() { - return HdModelSchema::BuildRetained( + return UsdImagingModelSchema::BuildRetained( _drawMode, _applyDrawMode, _drawModeColor, diff --git a/pxr/imaging/hd/modelSchema.h b/pxr/usdImaging/usdImaging/modelSchema.h similarity index 86% rename from pxr/imaging/hd/modelSchema.h rename to pxr/usdImaging/usdImaging/modelSchema.h index 12d41cac42..4a53772e7b 100644 --- a/pxr/imaging/hd/modelSchema.h +++ b/pxr/usdImaging/usdImaging/modelSchema.h @@ -28,10 +28,10 @@ /* ** defs.py or the (*)Schema.template.h files to make changes. ** */ /* ************************************************************************** */ -#ifndef PXR_IMAGING_HD_MODEL_SCHEMA_H -#define PXR_IMAGING_HD_MODEL_SCHEMA_H +#ifndef PXR_USD_IMAGING_USD_IMAGING_MODEL_SCHEMA_H +#define PXR_USD_IMAGING_USD_IMAGING_MODEL_SCHEMA_H -#include "pxr/imaging/hd/api.h" +#include "pxr/usdImaging/usdImaging/api.h" #include "pxr/imaging/hd/schema.h" @@ -39,7 +39,7 @@ PXR_NAMESPACE_OPEN_SCOPE //----------------------------------------------------------------------------- -#define HDMODEL_SCHEMA_TOKENS \ +#define USDIMAGINGMODEL_SCHEMA_TOKENS \ (model) \ (drawMode) \ (applyDrawMode) \ @@ -60,38 +60,38 @@ PXR_NAMESPACE_OPEN_SCOPE (box) \ (fromTexture) \ -TF_DECLARE_PUBLIC_TOKENS(HdModelSchemaTokens, HD_API, - HDMODEL_SCHEMA_TOKENS); +TF_DECLARE_PUBLIC_TOKENS(UsdImagingModelSchemaTokens, USDIMAGING_API, + USDIMAGINGMODEL_SCHEMA_TOKENS); //----------------------------------------------------------------------------- -class HdModelSchema : public HdSchema +class UsdImagingModelSchema : public HdSchema { public: - HdModelSchema(HdContainerDataSourceHandle container) + UsdImagingModelSchema(HdContainerDataSourceHandle container) : HdSchema(container) {} //ACCESSORS - HD_API + USDIMAGING_API HdTokenDataSourceHandle GetDrawMode(); - HD_API + USDIMAGING_API HdBoolDataSourceHandle GetApplyDrawMode(); - HD_API + USDIMAGING_API HdVec3fDataSourceHandle GetDrawModeColor(); - HD_API + USDIMAGING_API HdTokenDataSourceHandle GetCardGeometry(); - HD_API + USDIMAGING_API HdAssetPathDataSourceHandle GetCardTextureXPos(); - HD_API + USDIMAGING_API HdAssetPathDataSourceHandle GetCardTextureYPos(); - HD_API + USDIMAGING_API HdAssetPathDataSourceHandle GetCardTextureZPos(); - HD_API + USDIMAGING_API HdAssetPathDataSourceHandle GetCardTextureXNeg(); - HD_API + USDIMAGING_API HdAssetPathDataSourceHandle GetCardTextureYNeg(); - HD_API + USDIMAGING_API HdAssetPathDataSourceHandle GetCardTextureZNeg(); // RETRIEVING AND CONSTRUCTING @@ -101,7 +101,7 @@ class HdModelSchema : public HdSchema /// low-level interface. For cases in which it's desired to define /// the container with a sparse set of child fields, the Builder class /// is often more convenient and readable. - HD_API + USDIMAGING_API static HdContainerDataSourceHandle BuildRetained( const HdTokenDataSourceHandle &drawMode, @@ -116,7 +116,7 @@ class HdModelSchema : public HdSchema const HdAssetPathDataSourceHandle &cardTextureZNeg ); - /// \class HdModelSchema::Builder + /// \class UsdImagingModelSchema::Builder /// /// Utility class for setting sparse sets of child data source fields to be /// filled as arguments into BuildRetained. Because all setter methods @@ -125,39 +125,39 @@ class HdModelSchema : public HdSchema class Builder { public: - HD_API + USDIMAGING_API Builder &SetDrawMode( const HdTokenDataSourceHandle &drawMode); - HD_API + USDIMAGING_API Builder &SetApplyDrawMode( const HdBoolDataSourceHandle &applyDrawMode); - HD_API + USDIMAGING_API Builder &SetDrawModeColor( const HdVec3fDataSourceHandle &drawModeColor); - HD_API + USDIMAGING_API Builder &SetCardGeometry( const HdTokenDataSourceHandle &cardGeometry); - HD_API + USDIMAGING_API Builder &SetCardTextureXPos( const HdAssetPathDataSourceHandle &cardTextureXPos); - HD_API + USDIMAGING_API Builder &SetCardTextureYPos( const HdAssetPathDataSourceHandle &cardTextureYPos); - HD_API + USDIMAGING_API Builder &SetCardTextureZPos( const HdAssetPathDataSourceHandle &cardTextureZPos); - HD_API + USDIMAGING_API Builder &SetCardTextureXNeg( const HdAssetPathDataSourceHandle &cardTextureXNeg); - HD_API + USDIMAGING_API Builder &SetCardTextureYNeg( const HdAssetPathDataSourceHandle &cardTextureYNeg); - HD_API + USDIMAGING_API Builder &SetCardTextureZNeg( const HdAssetPathDataSourceHandle &cardTextureZNeg); /// Returns a container data source containing the members set thus far. - HD_API + USDIMAGING_API HdContainerDataSourceHandle Build(); private: @@ -175,21 +175,21 @@ class HdModelSchema : public HdSchema /// Retrieves a container data source with the schema's default name token /// "model" from the parent container and constructs a - /// HdModelSchema instance. + /// UsdImagingModelSchema instance. /// Because the requested container data source may not exist, the result /// should be checked with IsDefined() or a bool comparison before use. - HD_API - static HdModelSchema GetFromParent( + USDIMAGING_API + static UsdImagingModelSchema GetFromParent( const HdContainerDataSourceHandle &fromParentContainer); /// Returns a token where the container representing this schema is found in /// a container by default. - HD_API + USDIMAGING_API static const TfToken &GetSchemaToken(); /// Returns an HdDataSourceLocator (relative to the prim-level data source) /// where the container representing this schema is found by default. - HD_API + USDIMAGING_API static const HdDataSourceLocator &GetDefaultLocator(); @@ -197,7 +197,7 @@ class HdModelSchema : public HdSchema /// where the drawmode data source can be found. /// This is often useful for checking intersection against the /// HdDataSourceLocatorSet sent with HdDataSourceObserver::PrimsDirtied. - HD_API + USDIMAGING_API static const HdDataSourceLocator &GetDrawModeLocator(); }; diff --git a/pxr/usdImaging/usdImaging/unloadedDrawModeSceneIndex.cpp b/pxr/usdImaging/usdImaging/unloadedDrawModeSceneIndex.cpp index 18761936e1..c0df554b92 100644 --- a/pxr/usdImaging/usdImaging/unloadedDrawModeSceneIndex.cpp +++ b/pxr/usdImaging/usdImaging/unloadedDrawModeSceneIndex.cpp @@ -23,7 +23,7 @@ #include "pxr/usdImaging/usdImaging/unloadedDrawModeSceneIndex.h" -#include "pxr/imaging/hd/modelSchema.h" +#include "pxr/usdImaging/usdImaging/modelSchema.h" #include "pxr/usdImaging/usdImaging/usdPrimInfoSchema.h" #include "pxr/imaging/hd/overlayContainerDataSource.h" #include "pxr/imaging/hd/retainedDataSource.h" @@ -65,13 +65,13 @@ _DataSourceForcingBoundsDrawMode() { static HdContainerDataSourceHandle result = HdRetainedContainerDataSource::New( - HdModelSchema::GetSchemaToken(), - HdModelSchema::Builder() + UsdImagingModelSchema::GetSchemaToken(), + UsdImagingModelSchema::Builder() .SetApplyDrawMode( HdRetainedTypedSampledDataSource::New(true)) .SetDrawMode( HdRetainedTypedSampledDataSource::New( - HdModelSchemaTokens->bounds)) + UsdImagingModelSchemaTokens->bounds)) .Build()); return result; } diff --git a/third_party/renderman-25/plugin/hdPrman/meshLightResolvingSceneIndex.cpp b/third_party/renderman-25/plugin/hdPrman/meshLightResolvingSceneIndex.cpp index b19e5e5dc5..cf05993838 100644 --- a/third_party/renderman-25/plugin/hdPrman/meshLightResolvingSceneIndex.cpp +++ b/third_party/renderman-25/plugin/hdPrman/meshLightResolvingSceneIndex.cpp @@ -44,7 +44,6 @@ #include "pxr/imaging/hd/materialNetworkSchema.h" #include "pxr/imaging/hd/materialSchema.h" #include "pxr/imaging/hd/meshSchema.h" -#include "pxr/imaging/hd/modelSchema.h" #include "pxr/imaging/hd/overlayContainerDataSource.h" #include "pxr/imaging/hd/primvarsSchema.h" #include "pxr/imaging/hd/retainedDataSource.h" @@ -54,6 +53,8 @@ #include "pxr/imaging/hd/volumeFieldBindingSchema.h" #include "pxr/imaging/hd/xformSchema.h" +#include "pxr/usdImaging/usdImaging/modelSchema.h" + #include "pxr/usd/usdLux/tokens.h" #include "pxr/base/tf/debug.h" @@ -619,7 +620,7 @@ _BuildLightDataSource( sources.push_back(HdBlockDataSource::New()); // Knock out model - names.push_back(HdModelSchemaTokens->model); + names.push_back(UsdImagingModelSchemaTokens->model); sources.push_back(HdBlockDataSource::New()); // Knock out mesh From 63d9fe7f30b95b6c433324005ae6edbd7e7cf3be Mon Sep 17 00:00:00 2001 From: pixar-oss Date: Tue, 25 Jul 2023 15:33:19 -0700 Subject: [PATCH 076/352] Update baseline image due to prman update (Internal change: 2284294) --- .../baseline/bothLightsPrman.png | Bin 174231 -> 168996 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewLightsPrman/baseline/bothLightsPrman.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewLightsPrman/baseline/bothLightsPrman.png index 2273ef404c747f00d299bec3b013fb4a6d78ba14..fe9b61d3288f554bbf4624267455b1c281a6015c 100644 GIT binary patch literal 168996 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 i8gBvQF+Brk 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ΜUJoU))l^-^mU)4hIknzONHZePA8wAowiDgj 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%0AQb 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 Ef>BR$i2wiq literal 174231 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 z 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 z zdt0s8xCokTy!q^BVs)ly?9YLvIst$>1*$w#Od|kimX_x1AQ>{;q@kuqwWgl63kb9L zXfQ#*SpCd;l?|L2`w>&aQEk(fMQx+?eo-w|u%v+8&DgT2dQoWyEda7qURlGZL-Ef5 z{GT&4%rYIP8}a~v2=zRoFR(|>w*w-#&GHH3kMp-XDtb0sbgzH!?~lg|=N$P1x&@ou zr+`t`2|&R^DDjfvv6Q7lD*)QAGPGhBo5i$NKeP6rLmVt8$MS6Mrp_Qun2J1MP2_YR0hnRu`b?OTttYHh} zoCxXF@ZK+e@xrpM>*BqL5Mlyxgn*J_;*>-rN^s=J`4EB{mjZ&)$yCUhN+&H#nY_I<$jph#2{QY1JjzoclW&P9)d|S^|mvR(DKm4Me}l`(_&*4a`)fOg2l9w zT@k437G{OUhLN+1cOZPKTubG9;H;U*7&iwbG|$s=Zp9?H100G;Q!_d9Fx0jeVkgB} z2(;3kg~JM&Mo@qcui&NoV{Qk6%al0r&CLxUgb)tPkr|ky>Kh+Cco0I=>%?wuuKjXY zZ?2UmBXlA`@AF#@i%1lZux+Yo*+TH%t5v4}5>VnG0?s>5g1TJ?l9-W@BO@WRsP}hH zYSNZjJ?5l0`6W)E9?lRUA8MDBK>eKQ3HOxPsdhzAKj_g1X6>+>>#P6vU;giQUp#W| zK%ULN6TH-)!!rt#uI*QD`-ONL1okAwGVxUR^{{Q*5t4Tf06db4fMV8dM?HH|YMy2r ztkP9;2H@ow4M3A#yBeGPj9lLmkar&R>Ir!C(#vK0SOC<{Ra|kdN7+9of`O1*p>_^7 z{gyPG$Yl8Pg_pkd;^Q~G_ltAlE-1@N)!aq@zvqIo6xemWNm!sV$Je1ZgHouUF~`Zp zN&bgwtbm~G>Rwx(FLtp?QOFxoP3*%4y|<8zhEh|_XQy8tq01(-xn-bjyzMzq8Op4Q zaThbq#Fjt7r@mIOOJ(9K0%qib08?31c5jUg(M>(9660S z)<3OpXJCa$Rn>WMQS09X|8k8jkWn5sAQ02V6=>@}TB@1D<*yl)J5YH5I9xpV#QvP(sE&DC?^~M)X%lBfZC%%HGScvc9n<_ zV|eFh|MJFb-zmPcC8ne^-xWvp>vp3LVG9ZYAw=EN5@C(uqNqf~b`~A%2!VEyMyc)< z018ZZ!N5%0Iy1vvj>$WpsR1?pXT=p&9cw0Bga%H#`~Qr5;+)w?EVYO!`=zm;a5=T0 zvUrX(7q8bt_-On9*y9rwEJeULN;RFIRBcf!$1E}VnIk5r0LHfi>CTlvZ2sT`-SVXhR^wp30mg5kQg>+;F zx`7^MU@@~Az>d4wHOw^tTcP28_#Rd4tL`L)2^Q*le`_7s)|Mll8|a}f7Sg5wRuiB3 zCI21gyoaEBJdbT$lS7Z@l``pZ_|<7`AI9^4>8s zE{Bw2O6t`!0U!|}`Vdy{m#_urJjjNquDJ+^mc^&UVY?wBA_oZ9H`j!u!bwU@4jmAu z#3>1gUiB=1+qMGWwsGdmK=i63W`!swBIRzg@)JSK0W=l$5Fn+L#T5|%Q6N<7PZa#k zzrS;J`Dwin8$c-Af13GiA7nQKe-2-Z@GQrq?*Fw_a$3`B8OvLVjQLEgaF*H?kx*~% zYcsDSd1g;IhV0(cc@I#X1}){Qrj3B?iDakAl>Q%6+e$Y8#FCgvTR^48F6BPF`o>@0 zf9^#`&N(M^j|y~EZKZ-(eys3^dqrf&Cbeql{{Q4vkth4J>iPI%>0@Z;7HWMuD^ROS zH#laco${@8)vndGlXTdis<{?KFQA24KVZ?ebweo}@gzv>VQk+;Q-IVMGA$gS?$jst z*_OV?yi-b#Qv%{X)=Iif>%aS|ra^$LZZcL4m)CIIX+a-6c<%c83Ooa%FcVSOw!}gN zY1zl*z7(*aLAxtTWAWIUC&N;pReOY{rQG{dQW%10& zob(L4b8g!L>WO!d5F!+#HeLAMp$MeJ75|)b-g#D4odTVxFSD}GC!!iqbyA}ZPaJ>p zzyAAd1fDh+wzX_Sbj(}P!co1bp(&Xx85EP7E;*^%4=jV2V>bSW!xOX0hfb@F-0T))q|!jMDtb4%*cN!<;yLl+(Qfq#s(Gy zxYIg8;qPpI<*#*BVsxHJSU>^MJ7?Bss~F3tooLR+B9N5aF$;CKg$W+g>2@W)$mnyOpYgCHZw8HuN(HQpx`m*394-Tir=p z1wigU|LDb6zT=$p-jP3|+L+g=UKEaXY8EAE1;GrIohks^tV0{w$C%&P{i^M2xL1ib zl_^#6EdSf|lXYR%r6eUYBxu*+=KdYzu(2VfT3FK8x}d27$n3+qh)X?Xh~M`_308(X zHQ(!7yBzn4_aiT-KQY)nFKaIa4&UZy^P>${9XjI(CR0x+3DETI%ogTbufF)BpL`T! zQU}%|;=Lo3Z4E@YZQ*b{ge^KpoD!n?m*VAkI3nHLTzkI=LJZM+55OWM#A-o$JRX_# zXr5k#yNQ7Jo}5pd)^!C01jmUJC#@k7r5FM0k#i)%lo9}lNQ@CAkaL+lC~sXIUVwl| zD*J!B`G*L{(GhLAdtDF0Jt)TbTaSlR3S^L1uDMbKakr2Z0p?8@y zRsCU1F~&_>5yGa)4u@kI+-ALm%F+K-u=onAdIUVEzA~`K+*2 zCbwm1nufBZEc=O2z^7HY+r}$7mDgAS2#ajha1OwhTXMxB&sDLlp_Yv8$^}gH1*T71 z5mgV1nQN+&r<9$>rYzlI&R%-!yYyrv&XQT&nxfY!F|=|PL;iQ1d9uq*%nPiJu!j_7 z5V}eh%!4}20s`=d6<+Mspg;Wnci;Z`ueWU_LPUpz;pRrIBt$?M)xTzp;dneUb4rO) z5&`Fy5X0gQF-8$dDKhinaKRD*aa~tJVrFt~+X4}$7@2TgBXjb85#|^pX0He&!Z8LS zQtc%oGA9vNyHrVVN)f7Xr$b)^zH;c0iwiVPDgEpx|Fh1#%m+pTnPO z@OcN>4D-m1cKbai()5u#0@R2*5*Z%W>>eA%mpS!PE_sy3qbao152t=R&D&WR2$iX` zoOnCUeHvbS^RL}XfN>;3RZHV&5m&XJzAu=N=Q!g#j$5SSWq`fNJ}N zAg1V3bH=`!%-T~}+m|YZns;@mLxKR+P5}X`P>uisDZ@C{{FzZ@Z%I(O^2$m;Uzx{0&Ej<75r59d)4Urs? z^9#_@_)P>*ZJ}*IvjEjqfyPD#D*G|jAJ!ud4Q8NOaE?$RhU3k&Sx_$pEP$uiyo}1x zvNp}nI=6@U2W4X-*Lg4Y4KZSram{f84!#J2Wuob7-J%w-fz6{XCm>ub2*YeB#L+T(xy(WlOX zh!bHVe{t{L<&!7QIRRjfh>KoM8@3IRQi|%#I@34=hlq$b>&@YC0zow{UA)s{@R=BjBuT2_R5wZ~C6)C6Aj^I!)w6#9!kpgu z#ZUad9;kZr8(iA zskJ0-`+t=n)&*77lG#A1uO3S(Tk+(mh!(D0USG{eLyY+f1re?~RqyLDN^|1g*tZ%N z-cA2$APt&PsBpu-*0(Xm+CX2-Uje{7GHI%ftAx0g{xbj}4Hs?U0C{I^=N$KsD}3qN zi8J7bgm1j{w*W|l&N-o@Rdp)7brh;j^$y?i-_B~ek^JVnO*zNjq8h=nBPueqeLJ+| zQU%AB2paAc2r1_;3J+ECgtDDmw=@L{bXDAKLVT;t2#1!p(r-@zjOm!1xQmrB{g4%w zn9|G+CcDhfh5;jMR??R~K$_eZzb~cMd0IUyt`A>gNnlxufyvNk5cvJ&SoCYJz0OHO z2q`A#{KtRzNF=2cg>_FYibx27oFj6e@B`u(pHd>C7~-~W2)M2{dg+lP4+1GgMD*Ur zm;@LBQi@q1j47s+Qi>@`?ng-}-&h+$WZ@7(j4_+e>D_^eRdJeio}3TOs}45C$jrhC zMBe@NJ9_4?Ew|Q-!`l0@!Yx$m>1(vh@R_#ie04uB3H}QD--NFP{(bf?_|iM?%xJ&< zogcd8p6ZCuE$9{iXuL=f)(Ta^Mmqs|%4AdO|C>E~6PiWL@+}gYKh9pL_J*Gt1)z%0u1I7$8S;eI(W>_)Hg6jw>aMv)! zC!A%tkAyo%?nPB79k}ntChnVDtaxo>w8!*bf)9HLeDV1MbGmo$UgETFH}&wA9=i3; zD>8vdh#|&^NX%)ySz`>_76c&1NX|1$j48#mg;hj2aoD!Y%c~e;O6;5i0p{c!sV)?< zA!ok5HYU9mL1jNZ?~6A#Yf6cQQ%b^|QqnVd)y^fxz|1j5=A_c(&Gpr<-}&jTv%idR zZaU$~A9n~d3iLV1;Fn23`?93_bLa4EMIPTA*3E*|H5QIZ9|u0Y%9yv7c$fN5(@X_} zG)Xx9_*RYxhrh$;`)YvgjeGYVy!4IlD8X^$(BGqmePshM@A+jdBmxgwepEszb#Heb5}6m9mx47N;;RhioW%qK~aC(qiUm z4KiW-T@OnPy3jT!&K~|d1AA}+kj{r%dOeT6pR%}%ybB{eRdu#P3z%o&z1|2>an7^^ zv3u2FVNrx8hE?EbzWUq0{{BDz%fE#!_{A^Ff{4s&UTG zThXSYJQT;RU=EW2G(XP(a4;?Fl$+BrH3 z?|m8Jsq~+xYWW|1Twi|WwFfUe*1OZ3BXk$_B!WH6XHhT{bc2Iai%kH?ipQQoZ0~l= z-RKpv@S#P4W^7k-$u)N@n}VmS)Zw?7m}$k!d!v7=S=(yv`Q%oy`r%ILmocDcwfD%e z$D94n&&=5&0PS)Zuy9)XfOAhmRv}_kVT;UZTeld34qu2H0Hl<*Z6!zf zNFNL6mN|JO3L%7;m_-jiAm$roLkQctrWln)OPo^Tlv0dQcl%O`%!xUvUNptWh`Bs3e;NopeV9>pIdUhOZG+0 zmIF7!Z>uK&K;+)|?q6l|HbS67J@5{VBX6Qmr-@bMDcZ)G7ERrZ@~}Z=%MI*zru~M# zmK%<2s%}iNtApv?mZ<1Y%f})@(|!i~72pm4s%X-Bu}^FTS=r^bmr7yx(}rP+?5nh| z;b#cgPe)byIeuKu$GzFO1ToXicedn(jt+Q**6zgf2! zB$$6z4_Xf&R@W8=N(>PbGnXm{*x{pzoveoXfOu+ZnUt^p#rF>v&s|LOl zt!%M+*HfWu&KNnMg_YY*gk5rX$i$`>T5 zpFd17iZB8)u$unIl=PUqhyV+7N-;4rf?PiN^u6Ew>O`-9$>FZ@Kt2B~Fh5~chwt-O zMQV1_*IL?1MDL@d{gNTc93UrAZG|FKAOD>yYM#wWmD!9Ez_jze7WSXdINW)T+;wiA z4u`|VH(!5i-8MobLUczgp7jPozuyC^hw-2R4%FHgOHS;*-C4az7n>(zF^_=E2vi(5 zQ%%vVaGRB%$SZL8U*UOGk=ybRQ*Nu&eq~KN+VWjHV%-uzMrWJS%0RPRM_lRH-adSO z@SA2b2yOdhvYUQWfFB;FL8R|D&8^J3K`0yxRn0sRi@f*IYF|Bi>5)oe*H_m!H#Z^1 zEkpoVw^i@kBcj9MfP~&T$v)0N&$+Mbno_#Dx>lJ?SVCB1jELx*+qRoE-=IWlg`%3w zZQBTuS+;G9G2N`&&AKu3wyvC=d5WHt&>JFBQf;T``H7U0aEdYf{AWMjPXy_sKL6VP zGQ%@atNl65g6F_~QUCxT07*naRG)UOk;z5QkQq&La&!y@m{Y)0qgoh>j*o4b8L`pA z!(P^#uX}0iv~)Bkv&mzv5W7fA+P?GFUorX+t`Ca}e@6ts>=jc*K?uMsFm z#%}69%~V92b~2f%t}UoWei1z2RQ?n5YMLI*SGKAXP~W)@(1x&0RP*V5m=~MiV!{i6 z1nQ;i$p+6AA@Hp?-}vx@-{0I^J@@&^9o$Rda35Mp#h+qTA(h&*#5q8O71JMTo~ z;^N-At}#Z3pce`{0_VI4q!gcf{sl+j`uYht2f~En2!$ww?XVnFjj2Yb2tcT32Wi_@ z?>&ejAFI+t@014+J^Y|&C*JwR&z^kx>C*w6(ZB8A?Ve;3SGiY|-K#c`r}y}0CE`rz zGxF9gVWu73OLa0$IS@e^bz!5Z*X56Uf(g4H)3Z`gIu}pLk6r4rH;0u-&GPG>#}wZ5 z@Z@{JT}`3A(J)an&&r!tZ4zzWn|4JvcxzLvSRO(r4V)G?N)9!m8&er7SYDhEZyr4N z@X_PfZ`Rcj5)ryXcCXO(+6K!4Hiayz{O!2SFD&# zaDjPK3SF}AujS&z6ImddfgD@ecln7Ce`Xx?!>|K#^+cseqkUxC*!EfJx zch`kqWvCtAnU>Yp6TGy;Qz_MirtPq7_)$=;=3|c{G|X$qE!e_ir!8m3KI6iMs=&2)Bs99-=_%I z)!>BiH((o@BKHe_&m6XX?HKYYz|5-o48kY~m}l%ObEfn?Lfe>OpfjGCe_`6CrCX{- z)aG2rA4#vnliz*ZY(c;G<{Lx~Kw=D>VoGxF{(aqb^WHCqV+b*EiZM`Tn*{RB-jZ*M zz~jS5j}M0fr+7FVhRp%y4@*{t<@T&i{?X^%;a)2tg;O z$v(3CvSV28UfOu@wf}T3bPh2OA3c8I(JMFW=AFw9U&v({uhAT-&OWU?)2jx@F0Mim zf|Z;0QVl>=h}zazA+O47MG9=PlxdI@b!;o9Dq6MjXmhgdIX5{v1eytgR(IEhzJ?Pq zu2-lVJG|EVY2~J3^HXzE^^~DsIg+x$|R+w1?Fogrc>h68~$wx%qIlrzq z0ICRO^@%JZvG{+9>g|Qd5pCO6JYtKAeMw!Ki2#UVAv1$;iW0U>K!Ew}pZ;4c7Y5bY zZ>8L^k1boMFB-imG3HaV4{>UU23D>cxbu^(E@LtE*bnb0mgS*rc~|q9TMS%`lqucw zK3IOh$W^m!C$@Sg!tD-8M#<`b-`&Du_gS{rEZB&;8Ke%Dp$6V zw}iV?cud)&RQK-NZ+<^Aq!bT_10t&MmnE!<89hT^81Niv8F9PY*IT<(@EU&3MSrtt zSMG2qh&Q5Woy_)MP*PaUXU&yD02Q!o@dCz7*V0yNLVjYZPxd3BVs0+zPyf&R>Vr&JmctTbKtkODT>PRCyRIuCsvS*Yh}(MfhmSUYZ@Ebu#N`l~ z34jm62Z@?ebHL1$#2t67>9n zNqL8bHyr62ix_^~8G3Cn`cE9l^*%fm{&sA^`J~UB27S@t(Mzwq@aWZTU7aID1SBM{ za*2+&`L_TZ8l1xp9?eWCkCva)cY{82(q)a;w}O(Lv(Wh2l2(Q(G;A>D=mv-R8_WOX z3@bWIX@^ci4t~!}ke>O!i-$ zDY27)&o9#+Z?VLP0HTL7^dCMcuJ-{RJ$?xhm^p^PDS7V@VB1!86RK`JndN5PLWt@n z`>-tjc<&)?3&r~v+q$mXx(P_JM@C^$r`QT+jz~ZVF)qbM2G;QZvL57WK`#$ zSrMuT`rG$@^U+5iWSc7-1{U+YuK(p_`bS4~{v7TYPA-5pK}z`I?!P@Ty>3+mJYD!) zBJpRah<@^&@BSbpW?@eYBBDE3hN(C|LxA~GYbZD2S$gEDX9J7qRsCGULne2q~wOnkN7hn?X}*@k=IiZHBGoaIis&n9_umfq|3u?_P8p9$ITm z(!E?|v$sI_Y{LnmEB`Ayk#1 z4>ZkNfBD1z@}K^}yTvbFQ742zL|2!W&MyGK%#LWeIEE039Ed#G!a;7xK_scBj+rE{; zEf$8yW?9sq0??hO#-h>bdAM6vOf{`P&$oTS;VG7N#lJhMS4Y8oEZK0O0|7emqeRR~ z#}hwf@^~6SpH77|yAXjBT;JmiFDgxB?Xc2r*tZOxF4F=7tZ7K9( zpN%;&3u=ejB+n51PA&)Yc9^NPX*f$LLt0(Vdo0rcVW-R%w zY{=&g6DSnvrhuH7t5vNuTSu0u9pZK@UtLROM?vh@7E`C8y>HA^HQ7V5y|zN0_#*O`tjv`^t`hF#N*YhL)G?6L!KD?7Q!a31`;OnRwjA*l_CYnPj%C294#X z{XhT^Gh>E`A%>f>!T!A;{8dbx5@(r=BO)>j3zN%kuTxARMACb4onw!y;N=ZIcR>jF z*^MxiH)e!rphLK=1DDL@4@CL`_dvg#u{+lJ%Hb z4z(wqOHsAVrc||cEZWa1=!sFN6q%t!ovE^w3n#(qNk*fZQ9LpAgH&Qz{eRSb>rw8g_)a^u?Y_(20eFz}bFF z@WT%;Uwixj0A7B0v4yZWpHgBL1X`Bm`s&I#w}th1agS4q6214?J&TB3eY$ve9bvm# z5#)G0uImj8SKdi=n=0@j5rC-oGM4NnP1M~e>xB<`-Fe2ulv3E%w}0|)oRZ=E(YB^^ z5cY3cyRAaL|H_=fHPRRq_HHtSJ7K8K$(|Ri6TD>GE{;cAkN$68`SPiGdw1ZI$>Wq5 z?bhEs;JlV!V0bnq=3J)u_u1J9YbbK4dHkU0_I_0<)CES?m- z7Qe)l4QH5{2vcInwlI#Fg+YL`druG+K!O+&qNEsO*xvrhkJ8z@OTP}Gf-rP^;A9Nt zgmP{Ee$M5g{QF7R%2n2Gw0Z%>QAgKDysudcufJhBH94al-~z4$b~Wb8mX@*;xXs z6|ZC$^R>2Efd>W*)0q0R9uO2Ao3UoNdnipDt8T}6sO@;Fp{AK(UI!%Dr#BDSS4qPu z@SC#r(`2V2XDyh2IEArk&e*S<0RpiTPmEPdCPgM&F&wGMqS{=T3g|TpfJiCH2Ooa& z;F~W1z*}#9`=>wt*L7ubiwHPGLL`Eyicw}FC&D2L0;Ci}V(&c)BcgXMq#Ng)x`T1f zt=sCI)3Omk^!gOU7$Xa0IaY*4Jx~dY2s0vt5aYJ~?Cqb#5bBB52}iWEIo`tomfkdf zOHc2{@(jOnK77g2(U%@9vu6m{*!}(AuD82jj(pn{NvBuL4$)El_4i8xfT10nt5oAp zQ2%-Nu%ia`XJK>d349a)_~vWhO$;d|=bT;&>in^s_A^+7XuvGz2~Z%VA!Ht+daghO zsAxtT1y^CP6R;Y`CC$#Jekj#yR6UGJS>n~>cK+L0h&4>LsM2Ad!Rp*mBANYbAX=pJ z9__|{H@KuUtkkS~SqnrnSlYps*6)Syx-x1vLV1{~J>{GmzmuT@nB8+tGen+($-Ac< z6YV2P&7=TZk@PbsQAtbvS%(Z-_lgeXM^E_CbL0RXJooVG@(BU}iuWYKi3I_e+4}DHBq!gU~bXs)WclNifG0!?wQt zlOO5TNKl$^4rPj}-b9o&P1P?vccj!1=T2nX@$hI3Fm}VyX{1MpJz3Rm%uh=KT}*Ek zI!$si>M6pXAe292{1eNl*V)u9;?{{B<8BXIIS?iQj_mWNG> zf=I7^^Ytwx(0dXP5Ru%$=r#)wnpzqXrf*9LI24iJw)EvGgJzZ1Y~?GNQ<*O3QIM}8 zSJ$|<adDyk$XwnLOd+h^duF|RJ;s<~Vn>uUuYv#^A|sMOiZKF6 zN}Maj0Ojx>CkD*ASp)!K)~h9$V+=PpH$Q*-$7(_IIl~<`LHaO*pcW_Nq}x-YlTIu8 zgdGjo!Rs7o>rbmPoZD@l!0DkfQkdV`E`SJ?cc_ZcU7PxP_GEFArmO9##qk-y zc#@l!oyT|!Jeic9tw`_GW#$>?1hJF-uYu2+1!X_GZ%QR$jO~AZKKA96Z@j)74(oNO zw>Kank^?a^#YpLURbjUc*w-)v5Z391okedWX<~U&84PK#%do?*jBeJeSwrCpR2q#1 zL7^lQFsjetsDV~}GMxvoH$~;o8X6j{uH^uvmkXiQZXPU5TApXRC~I+N=EeD$U%Poa z<%b72ozEU|&!=y7u0tq&`rRt5l^ltkfkSn=QeOyXt^g4~_$0ji!t%yzFaOtn42Q#U z+cv%MM6Wj@BqR)BBO*bkS2rBI)02D*f&{|CEJ)y-iyzh>ridHLj*KYyF~=>+vM4caU~+ZR@oaN_f}fIc4q`6CXd=Ss)~x3lFQS>4HF z`#EJWCp|naj{dO3EOa*TCEZwuTvw{c9%M!fWLDc}7oL^}`|5(gE8ln{v8b&YAtEA? zFSq>-s=@Lj$Jzli*flGr*(UTOz1wsH$cIh)*`Q-@=1eO`YLa0%1-iWJ_N(<^X1~Eb zS86uKJI;5cxxJeb1I>ld^vqZ5yF#O@h%;@3t>zR|s+?Cuj~v4$v6%mC4%4+TteWW} z+K2tTKLyf5nhNT+>xNE)eNUEG+JU(n%d=)D43Z+~)j|MSUnxLHi1_J~>{{#_-+EoI z_q$oQbzNf&h%Rwj*Db~vV+tWKCjoWu0x3m=e3Ls73X2-8U^%a@<}e_@%zz-GUR?wU zML<}6pT&2D$aE9r)F_t+>2oc-mdFVs)IWz4Vct~&AkRSm`FTLhm6Y%dID z7IKG^vUEexbl*@x%Nz>;n*GR5BinNBx@xMK+||96FgWxsRo4{Fprceae_1h7S{m#+ z4ThOC_MGXvJ*4%u7=z57D-@mi5KbpPm7#6I`8we6?SAs_+1`?@s!4N%k9h=3SVbj~GCdR{2|Zb?bc zGU%Y|4j%&Kdvuv0|41>$-~INz-@gCe>E8VU!ujDmm%1{7ZF$|zwT6AWr;5`rM;uk} zazh2Q!-ouSWwvTCJf-1dI{>z{NQS7dIZ7M+lksVs1DRBtJ~kiVE`8VMoe}N+5%wK7 zhT6A`le!L%P}t`Rx0dk*g{LgECU18Ib~K~DFB>zK_IIW2pk)_1 zPm3M5TS?f!GgO=!7w*6*`tn_WT&N{)X|Xt{n}+?`?h1VdGvuoah%Y_HuF5=upjW+jAcy_8!!QE?NZDI#88v7vK}moyYsp8M2SkPbivnwK8x5&1 zYqbzs%4`B^PE?#?ouw{@eG#>$1rhgCCTDJU_z#`ADY!x@Yow8Z*U&Z&Ib#S zr=Y7w;w=50im>osvg>ND{aIKSi->4SuTWC+ov@XNzyEl9{P6It*S`JhcYaPpF-AhT zx_rXSjxeR<{j#n%j+{tBL~lw|Vs6cJCy8dg^N%r%qrJt<4 zmd7+qxx1$eUpVeQ>)a9AfXEOzB!tQ(*{Hl0bgUUS}KG}`H)&*iqYxdQ)gQR>g>(g4k$#U57vnQ+#S;!dEFF5IQgaP(s_@f<|KL_ zE~gm7hrj>b&))v&wr%kB4QD1Jw*UIscpH-KpD`nB#roZUH9#>&K(qv{1>vOs)tmqX zgm?eRKKH)4xDOgVHstO+<5Pxbf;(0Jd57H0Aq6a7?AEr47?osWf=+zu1kDyV#kyXn z(YRO`o`$NyB*|Sm@s)4Bj)19XW}xk`Tc*z(Qs@~oDlA~N)f6)|M3;z^*=>X%$?jQ| zS#FYD?KmqD<(Z7dB@BX%gCY(}-eZ$0P-&E=ujdKNYpYE&g;lKT4m}#hXsKE2i&~FD zf=iA~L0Tm|s480{tmroaMi<(L;S@yeXZvrLewMN?_D&4;6i)WQHqAu(;-)ds*MG!9 zbEvnH+Sa$0%iHCjyE+eYmdv>?98uj(0|GMelPBTf^9SeLx~?KzXs%wID*&jzu!Wh( zBf`3F&gF?OqQ?P+h(ZVmAi{{mdWcX&-)`&r?r(nmW?qm@s^7W_s96zIEDGy~I}%VB3;g(#C(l3k=$qgA_OIUg83H0v*}qHP zd)>a%^LgufqkHA*qEiG!7(@s`I3Y+(i4a4Gd7g7(=1)HU!+Y=kI>lJIA~P5DA9FZ; z=-Jldv;2zWNz^Tj+)V5vT9?>$WSo5Bn0z11movkb$|a6I&brAgHR9}XjjvxACawKd z8#vv2>l4f539Pdi&>iJr;vymz9VZeH<>zV=CJ3bBc4CbqE28ATo$r(6EkOy}XZ^34xiF|4uP(+xp&n zzxnjzkMGb)w}iWqvZo!%eYgYo^{*#np(yzOHjkH=;!WpYr`I|sGp zyUZJ$W5)^<8q!QkTm5G({<;R!ucalY{9k`D?do&w=E8idT6zbEnh<-otBy&}J`G=) zlzq94@154*@vGlN#F$cMCRE)+gygJYCFU8tCtS8rDNDd2WtY(CIqMghRu$~Y6teT% zl6PycF0p!cq2z^F3^zr@qL|dYOj%v^s?fTVUaLKh(PEw^2lhCH6%%*gSXk~Ly2A2E z(N7jS$V2-APa)hsL+KyRK-BQ9M($VC6sV>Z9@?@8!qHslRKDeT-YwQR4nc}uOdwlu zF$f4;U0uHX(hCT{!XYvda$-jUdXob{OeutTJS?o2)y9N~q|U-boTC^bfco^5B)}!#>x3khy zmgkG%E3YKoP8idmS%U*AWpKEpdzYFiXAt}pg~=6S$1Zc?OrtJ zXLWO|w|Oex&D<~by>EF0kdkFNZix+XTiGr546T-J+&5nO=aC<={aM7p8r7kT`GKty zv@-#~XhhA_9bj(?U|`}0MBE4LznW$Rr)TjVm22tKd|>yiznkh(3Hv@H>FZMfc}7$O zO9CV4k)!|sAOJ~3K~&T&T`A5$3;(}vK>!}T{L1ft`#y6@Nr*7T1R#kygoKEPgHN15 zga~6|7D4aSTykAk%~xH*TwPth_wH}5uC9izr~_Nud7>Lntd%;CZI(Se8kV}2L1R>( zU+%_HODFm8VyX7DCYo?4+T^^i>+>;NXi0!vfQ|W;SA1{G8026n4ZVq5g^)A=M#;#y$bZty9d}Ekf;+GjZ(B}N6&)sB%fX6na?XZ!V!1Qh3SN}Lf)+( z>W>LAG<3n9{FA=YeJ|zh+iXwMjsh420oAa{_0{(Hm2dv`y?;jly}C$=3@3IDkB0-N zB*H|LQdHSA#iX@C08u-aZGHd!_x|wFN2eS5WrU|9Ww;x6Xfu6WZu@i%2->_X4?J)w zfaQkKz6NcpO29#R+P9|NCf{~*aUzo-QoD%57FVlbr_E=RBkmebXMG32x8&KZ`pT^g zbW;b&o3C#vU|6M}xf{%fEgKou^dxzsD&1z~ZtQ!0%cPuQcbRgy`$Pa|}KU9d6O4s7->7L;;H2Ji%>Id(bAqJq)B z?w}`|l43D3HOcl>wHvCVv4MqRL##^=^tC%R)hrvi)BNn^?8=}t6VuzcqS^vHJsdWZ zyD;T8AIy^2814wwEelOn&cciIoij-bP)M7Inyo0ElloastW~K8;}L*m+qTEAeiHzg z698V^yLWYY$$B~#B*l==5oNQD>=Fh=eO^lp;e!u;|KSI}=LsX#SGXAsKV7fX2ABPf z9eu+FJ!azFfzCeT@N^|kDdP!~vo>=L*C@j$x|?&NV!6x;q*Xy~4Mh7>0X3LBN3#a7 z6{+9tInI;6o?R&T*JEa8^-970%5Tk(TSjm8vX^7)7FAorr}Ek}$+v|QsqTv1j{FM` zA0c9lu`(5i`F<9VSf@}$tdZrzaou8}zm+NJ5vHV`)v?8y{Gb}9*hHe#tQut2E8y+L zkgboTRIF8^&#PIu)YI;|7dSXSJB{3v2Gz1Gv6kIH_sC;Q9CtfvK57?h_8P}DGc+3_ z?6{P^?y7T_X>_U|Y%Qkg&rI<7E6H=AJ9C17l98(`+b&=LNzmC!B8^?w@&v+ry?2v21+Ly^%dZAFJR0HpH&tokbGvj zAi#U9Hd z%xL>~TyEGetFUL)2_`R*2E9GxRnF)XeX=BasM(0YQ>fd)Vc%`7F`B~;r28CfKbJE1 z{WUyGpZ-)h1(~=@(>M1{WUh>W@@2aZ4QJCeZ0MW-B1vCzhl5fMM+}8#4-qkjS6}_s zZ~pz4v0TEgd?5=HQqnUI%mAQHUbe7(_`wGsee_YiR^lrTcV&Z5htrf83Z_AxfVNby zq@t=EvC~cFCobbbRIY8FS*c@LX);8%s#HP4LdxB4HXo+cml?X1*?yRv5tG7Pv-kgV z_pZH`-AI<$3hr|=rIb`sbx#jG55o`m|Nj&N0|O1r00ulBPfxqMT2*?cl=p0gKg4SV z_dfS6b&px4y!-4286<;uobZq@E0corsc-C${&=Zm<1Q z_Hw5bCdYt(^vA#Y8!?9tpwPjyw`#=KD$v{YXit1zuy8jdl#dsa|IH~BXoQB9i`eEB z5OJ41M`)iE>@n6HDq#?Kb3tEPv1M0uF>iND1QX&><*gW|r@k#0L?;WKC<5MAi3H$A zS2r<^FsyWOgey+L8|$4@XuqW|9&2|C{7$}oU~J~d?ewJsAU_wEi&{~nG!|-eAAu;w z7z&+p-rryUhkyI;{{HX&^KLFw$fxUd2msk}wT10=df!h!{`l>;-+ur7cOk}z3yC-V zW{(hI@pi29iRyQ=F`D52|6yWP_Qo?&nf(NGf6zum^ie;E9sI+4?uqUAFS@y(d;UW- za~;8O4owe!U+IWcvNZR3CZ{6%X+ZsC$o=B0uSFn3wlS{z3>P7wT1(qSR(M$RukBdC zN|`@Va+8G1(lLScgOKpCBULN}tdkvX)ixz+gmX#&8|qMq!vVH9Xea6NOkZzcAMA+v zmIVRM!Y7#raGF1T&KLcK<-@FJ78BmuY6A^rjvc=s1?nJh`K|L7=BEs_=s%Bqx!k-3 znGb)p>ZT_afLjY`C9jC6uqA%pgrbtOc1y7$Hv2QD*%1nn&p&(>2i`(;irv>~Bly#& zkKcdy-Jk#b=U;#Q^>&>es_fyXD^yE>t1;vHT@KYs8c&+O)L&ba8OGgn4)IqHKz=+S zA&I?_Y?|VUQtV~vsd;yG@F0&@HsxwQBwcT}04ZG2lyep*&N)jNm9zNvGqRqN2>*`K z$Hcju_{q(yA3si1tF@*7B`X1fjQ9qe^v^$h`R?6&@f1c(`$%mt0*QqLG?jHSKecIH zoB;XSRQ#y~o$7sa_Jw^wGmEsEFe_pLaS$ZL0)L0Y+lm6AW(X$XCw$pgU35*MFsGQi zzsDTiG@Zr%JFKsFm{9<;2^%gUQq5g&-#`)jKN7=# z^T&VnkN@v~l_9G0`|rO0@rUof`~G`F#~Cnd14;xV7R=J98jT=STb#5;^fHqNTX35? zT@DZij$_+)L3=FfY3cVCdzQ-9e5`yuye7v56{PmrD}GI34*4R1#4Ofec^hl(9--_B z=~<2Y@VLvYYB!a*^}_RSPcg4_>SaJ54OTgf{PuFt-5yjr8670W2#iwD9|(9Xef5Vw z`fg>uqFtD{z=Ihwx#XyrYxD#T1F7gnsy+QwS_SuL!HH^<*f(laICONzmh@(`&uUbm zEWWR36cJj0->31XU}TJzfM%=qRjBdv0n_cWnL{Fjqj zSWYpO+B#8M1ZChV^^X-k1KB2W+y?B8(gh3rFn`&~{Zp1^NE0TH>`96| zrk76`>cDjWY$r+*m&Th73RkNzFG|ZTf)DEf zcpYF}o9oKI&s)r|$Dhls1GNc<3=Qm$R9|pi4m{I^;EWk4_|&gwu?A!i+NGqv>^$SWpt_xBshjsldHR2JxJLmI2jh2 zg<&@o5E!0GcTt{nQw@N?gcf4TTZ!gN*HTB*o$2(G=9B5o0EjQ%=pj`AR&K-YBzgUtW7Um_o9|TUD>|8z< z%xRG<&dmXOwA?S_Oacz=oo$SLs)*>E3jM2p^*0OcwWPB)hu``;Aaz**j`^(3O2U5- zTMi<0&zV%uIVa#}Pymo2L)IQ%f1HTX(_jCLsrT55r>9)0D9!bRWe6$H^3jv4BqKGM zMxr|q&;&&*^37KcJe0btOO{8Ty2Wo~pZGuJ*{txaFIEQhj|sF+!y02gp;fhc4J(J! zmLMYe?-}7={o${|dFb%xz_)}7yQ*772*g%OS0+FEd%WRg~AvZ*n8C$8s@kxuIJD@p<9m z0<;SvVdVu`?w|MAO+d0u;2?k`_p($rabxkpM=tS9gJThu36#y`e zk;QiBQm72s?EDacsC@b5A3l8e>gS(-cyi?)Op8ylm}9NF|50VsW?x)y0D#2w(ML;t zeiI(bAdavMk(^E|s`D(pI4Ap*98oUwCR;5uKKjm^rxdvYm{Hp<+p0LOI>$K>UXD-Tcbo$B4D_Tv$To;~ z&RwjeZB%XJ1?la|A7Z_CpsH%q%BoV%zT(dr`5sA2c7d^a>xC#|ze4xP<-|lAW+}wI;N)WO-}_V|oXd zh>d`ej2ALC2)!nXm;p9K!`ayVXF6Rvt&wcK4oGm5KpV}kShvt7+r3YTfTGpfOR zp7E{$D3QhLojp}yR3sX8CAhx54S~{M!`b!med({=0557Nef<4OAzJ3uf%X&UsQV;@ype!E2cpYyWo;IWjA*0kq(lfrnM9}mNcV1Q2Q|A@o5q~H ze3YJtQIF*LoFk+dNix)yfloeIqcLnIyW=?|cvoH>184|B0Fjdse2OI;uYvfmk(pgb z;;j|k0dFaSS!{7cuP;+&j@WkW_ot}f`40cf^q-E#H8_h}K_x^^Nm~I`k++WI*>Kb@%~h^ZIGL|NNj&IZB?@ z#6eBZhDEG9I5EGpwz$-4gSCAYYs(wC2Z4sn&0CK2{z-+>D9L+?EdZ33V7RdCsOk?| z6>?0R4VZHlU7Q?&z9&^&f%{-J^5f;HDMhXP&`64T4@|m1coMn1p#6SRf^LugTbx~a z_S_rbY2yg9-R#l4cknaIt`@y>iRtn(HTHeCm9>H)5m_|Cxdb#G_&wTD1a-jDNg}2y zkC_mM_L!P_y&{-o)7n!#|K#|L9B)zZv~;;ncY7*g!Y@@p#aHj-E+S8N#b_fTX&`Y# zrqyAZS>m7HiO*M_JpL>LrXHBz2zg_Ia_mea$SUCbAbAk`YbT6BhCenXQj(v;ZXafwLbommuL zBjk8f%{#);v1&CssA?DllbS=21k@pXz1NKhBTjiFF}+pL;m)nEj`xwMmhZ7_y^(af z<>#Zk%6#yc`w}3EinF@$}`Q=wZUv)aT{o{}H8vr${ku=6JqGV|^ zSz|nn^yC=f8lASL^nY3$5PmQGcp#C(G55cobH-wSj5?!t12w$YJO%)7PTZ$k?VpoM z)*yH^c=M6R&qzx~&83;YNO0*z#IsSAmimnllFPRr_mj^eeYo3RVNQ*nq?VkYg?r^5?wWMKW7Y1(eiYw z&%>j-K3fRiWNp_9{4dR{uFCcUQts?Qsd~r77&pEVwR_)#lS&nIi{wOfJo#Z8t!}k5E z1s{jr@>Nf3m%N-W9`kKxac8vnt=|jXP9cdZ(3QFvm+2>1TwV`Li`S*VKVMg;sxsiQ zN($K+T}5?Q-31pwSItz=#lH;?f(s-TSyenH1|%p?1fPSMqhL5G6Z9m9A${3q?NICP zBLhP|;e7Im-z%tP22R+^^WV!_3%9DCVFqQw8MX;R#zh)?h4S?H#P7SnB#ErdWPS5S zqq~ohM(Q$=nVB4a9?|!KizS_A$mFfEBk1=MC*~D8-QgK@b40p-W0QFb=+sb_6~#9Y z#kLJ7#6ADUt^h<;{`J54cmLP_`5(PyPNW;P8VF{%!=5C|{<%_`lZwtr{rH){1p&xR zspy`FpT~(2%QI&Z+rsJQ_KnJRi5`Ub`jd0Q0h;XT<)#8@b!UV5 zpKM~C^}K6dFRsZ+dIbM=#qOG*?h~V2xl$)r(fcIeN()_7;D&%NCj1pin24fL0gUbP z?%ijp1ja66*oJJ|m=jQyEjBGwh3dS18et^6dYAp#m*O+GCKwPxv0ml#ZA<$U&pX5r z5cyqmi5i%ekaoei6k7TEhlP91gBnSLuKbk&5*mlXvw;}MaZ+f&VWCkpOBK-`cz;rmW(yI#^kp4?1a!chq~W^2*q4Q-%T=P;21fmyY5vYL}q=jF25YPWh(OS*sa&A$@)k50j%ZfmCrOV0oXTO*$wt+JSON1o+n zWd$C|?bK^4GjLQDp4=I~SK@J>p3ZR@OKqTt9a1!d%aPH8@ia#VbBa(KEE4&5PgJQc zis#fi{!ntyYfN)y2n4cSE~~cX?;SAamj5$Hdb=H;f7)xG)9X~$TDn8>Sgoh9)lmvP z?ZrZglh2#fh!$j*#gJUg5bP8h-iI%~s=?us9jcIl_jh-{e7Z*$xB~3=zl^b6-hHOF z^1bO~E~7earyQq&LcH?dW?Smr?#Ki|s(&u|xNn4JKB97rTGIt+jW##g7PKc0wjR)E z`hzoP-AX1IysvY}NWH9A_2n7NtV|6Qk)5OkC#pBvfR8WE)>N>adSbRNdJNX|C{I68 z-fC~yHBoFX4lZX^U{+LPO#3ah(E3sM=&u9VwjqG-bBv8cEfgl01W*wfLwvpL@1Hz~ zLVMs2$N>!0O{+Fd^=hv$s^>=JK+D(*Mi)EwG)WY7bOOCidR&bPoh=~-h+b-`AW8+|$HONFtZ|U%2SK^Yz zzX};0&?1E>z7NZJ3)6-%L{Yu1h$ZmlpE;=NV3ucUK=&kzUo_^RDMCl{lbuUX!!a~_YxiAoOpTn`BZGJaYg6E zkRjW)ZFAq@%7m%ZDiGcGdHrPghoxh584`s@H;h+*thMglg>-_S5X?k=xjfxNW0Vy? zX&w^$cU3h?Y_)^q&jne*r?O$)VX?RM4W!AZ_3;639~}~UYcOah`B*5Who7#wCip2J z=iK`gPChLpy6B)`^!M3FErJD5U+vITWD1E?au_BGsRj>;T((UF0-3(%Rn<5AL||Zk zqyRqq>~pHA1Qnzpw3-px6>J<8uceU)R}(oUbvr^20Oh~%eO3B+DUP+=^7Cx%-%Sd2 z`6&DY&;-JL_bA0}+s26f#$=0&{O%NY&dWWY!}|@B;dhrfepN~{%IAqw!*uu=rRcpH zH5ce}knzHU?F`fN~${cP$n zWXLcMpSwa;Z0(5G&9DS^Pfeq^15e+JLGOGY3r#`rUQoDuL?YyrnZ< zM0Ls1;Rq1#>FEZ{gH?NZDxHGzjv-FiUyXEd|E{D-d)!z$JP*&O{e?OPBPh@B>~jw) zCD%oSgY2YqiyFR6pC%;;q^8L|;@>#k?(8m9&thzDv>Lm1>-*}u3X*;xz5DF*ktUc( zX)Fqb4jJ$7?yhs*UAC#V1AdH$d7an$?e2Z5zijZxQR~DaiD_!@9QjUcizvfj%h3&8 z=&v6&KPvgkCBNf^197v%9l?9%_CS&SPN_|Y5zrSuut4fVj_w=>5s&dhkIM}dJRgii zIvWQjA8XPHMd!mf{gmO(uPyIqD=WR(R0N5bPd}N`kfDXh1ZsuIQUKGMa~ng%^lPL` z+|@jVr)Hvu5q-DMj@t4%5CS5L&Ap59iUBX-&KGj9vO6FEYj!)avT{>6~ z!k$r0O0)0v=gKjKhh=#@jpuhx**vE7Z}FQo2sx2!>dRT1h-4a{$iEL@-f21&7)H{5 z1=RNQ^zC0XA9BEegf#GNM1}}1my5mVyDdu{x)P#8N(yVLet7@>ea#}D)y~PTE-_Nu;iq}P!&g;D1k9WBxHXq9eXWXzUx%ktT zTK$Jhr4GR*Z7R-7qiD;-0nP1TLUkjFv0##%l%&beF=Mol$B=~O>qIV%nD+nxAOJ~3 zK~x2e?cA!gl&cG~kk-3AS`q6Ez;yk_alPHnRUA>qnP53-h3eY_hqJ6Yg{z+TBZ;+; zTLM}H`xX1WO6^ia`xV(dhx(Z``N_5oGx&yBw*;=4$tSGUC*rB(j?5OsCGy3WU;p^S zUmmN+Z~ z`_F8{y_hxZ!d4ZcqB<3#x{18IySux)`*eT5?|Qj=w_mUKzy36~v2AxzD6M7)V0K9x zs|3Qv3qS}eV=dhc$tfp4R_=|N#i)y}?{q#1I;-xC1q<4FNIl7U)vP9}qDMUAP|q5g z{6!ITAo3x$Vr6k@9Y%TOS{>gw%0H=B)_hN|`@Pd#UzWJJnLxjo*zdh3T)SS}oTX+f zfNjV&wu~mQ|J0MKQ*|g$k0tezMWMcx=!Y-9H2g~g^T8?~>XAbGzmIh6hc$I6l9yD|6>#CO$NewT4pJek{kFZW8nAN|Aj&H zRtr!g@!j*=ze)P+v(K{}?|L@IQd3!hw@mSw5x<{oja5l%)afup3>`BIgdvj8cTnS_rjF{7LK%(=0!!2CG*g z(T;6zQa!wIX0T@zs4g`0S66hzinu4Uj8aYCZXPcW66O&UJlxj9#VgZM698a9pT9_w zuJ^I3i#~sX7Fr#swCjr~p2E_=5da#qD$}m7FZ{ zG#c*DD{?gdwKU+Tw;jGI7WHEq_G03I`@4W z+t|is8)Mw<_n$;C_xt_+S6tqy?lQJ9HnRd{+kEyc;4oIU$AWPQd`Pn&^w;o!OgiKi zJGuP1eJ9HeZU6*SWxd?IqY5Lb>PDxF$>X!!M` z^QWCGe{#Ee&#(B?g<|RlxrPv=*vQJijh<6m>8LxuG@Wb?bYl=Lu-NH3|K>!8ega9c ztsFt~&WeV;=xufNXgCsiHWoeUAk7-L-Swrv~RU2Tuj>>2`&idcE5Rp^}* zcv6|hvn5ofs&hIumw31kkfesqsj0j-zbM#HB{W~Fxa4|L!QR6+U+Ya^FEl2V zFvv-}qE}XS!2{_j@{02l>P0=gaJ*<`DfWAfA)N8(q4TQ(*lf~z+pG&_PH~rTQB-&f zB9=un@<3uc+%N&bv|R2kXM7NQ#~v!~B_58X{>{=&$#tV-=Gt3NIpEPRX~`Ok8GlCK zr#4sREKK(dS$pKRCx5)ig!5M_ScQ1g=2T*NoO5P`gq^N)@4FDaGTp?ur1N1EwEGv< z0_o!I`B928=N`~P>+->sh6%w*Gaf>VI_)o~4r99;L0a&qB6qqY>X4-f$5a8^o6A=8i2~O6~wy02>+T z6v5;vKysF5S$1>V?gH>yr3F|#mV_BKh{~NnjbN`Z$Pl6E;a(;0tiUxqko60u?e|DW zMkq$Fnu_MQsGA4<{uEfU@+=OOw_x_0=UXzpIHiUa6viG2(92~bxpRg=EeKfB zi7%}kGGxdU5!uG{4ODIaR-M;-ox5J%jcps-C1>WWFb62lw?hxIy;4RTfYTpji?)Fm zq}J9LHv8y+#2aoW&K`hjYc5KnGGjecM z%eS`(%&UlK!^Ip3UVYWO3VS}b&D*AjQ6seG^q9xIqu@6+yxYiipOuPBjfi-ElQWlRKDp9tJSk50$atOQ*z*66IHe4@}vy6 zfo-ezl2BhQWZ%}=j8BH)=cW`O|evd`%rS;rZj*I#uXbBwWF#&+4Zi~7DkosmO|_XX*RQ(S)o$i@i~T%(6s zI#8b7b_#npCp%G*DE2tB<))>Tj)zJElfAXBQI{)YQ1{?bKs!uuQr_awy7ar z?c4}x@KdsMtu#X;QKEY{5LebuVpJuL<@8{z3@rJ>t6vcDSbRig05F;(w&g62C zo<}D`YZ3xE;EcQ*jDKr9JUmWVz};fnTREs=zhb|JRwJg83V;FB3aH~u&OsC-xly$f zg;+tM<@=CO!dp0ip`@x}#4%+`9hF-`zWeQd`s0dKRBI5OEvDmG#xu{An6NIlN?1z5E=To(kM!Wsa{-$ zkA2 z?Lt7GT-2Va95#+w?kp^LORk)jzI^q-zmKMU;(8A#?(T4RfdE&<+%YF4`;l@>%^gWt zfL5u|1%W_pnvFoUN?P_{Iivg|0dyxP&=b=ei07OWd*)~MPvKHvb1B(T*@0C~>FJN& zg`q0{MyWz@{r4H?@%|)*N>c+n6*=ffjKCAk;FW}y{!^tAjqyk8{jMa{n>iRc0PEH1 z#Q&MUL{xR3x?4T2yL`GIHgNv@mmdJkIaT#O55*IF{k1RszHD3K-y1gQvyv&uVN%q_ zU8T9inkbNoy+jbYb?anz}zZTK`{?~cE zmu+m@WsGfXm(+CwklhTUb@5g=J;tvb@7S%Jx{D~7d_?+PLR6Q}3p7gomq8D04lbdt zH?`L&fIX>Of8q?5>ebK%n5Kl)M8Y?}r> zr((BLD4sQjh)tH=SeAmBmsYX=4C-Ws4W2ck<9=$HfR`A$QgNQXnzvMzb$Kc>1V_yw!K7Ky(DHj-9LWDGz;8PVUd#X}>`_V%V*eT~p&Q zS3r0cQ)e92RI)Bl-|dSROQxLb4$nz9YruW!3V>8c9WOQY?P92+J+qPY-hSMTttg!uR+M@0P5g7xJVJAqAA;T7Q zi9tl*V4~e3vGZBY(@T68|H2IoHzu`rTvbhLbs`Vs%GBN>hXprsU8D+gqDKjd3?#=K z48+!b>rg(h+(EH9qy;aJ$af11m%>kZ^+svShP?KuDUriq&P*aZsa@Av zw4%-ztASCzoW?}}AS$vA)i{g0?`dK&F>d&UOVe_S6J|YM@x{I&ylE4aw4y{rHre-y zIj2sHO#{}p?ZVp-$0VT$pmT~~?o$NVAtKW^Zx5J5WPsk5fDD182) zIiE5t+=kVy?)HKYYK_N(yp?diEnphvg^W1S$ z@9%X^sD3s6T0ZkBy|2Id5-TRs(zM)FEKM&rFbGSDOoE02T8d-z(P%{qiv(d8)g-WyommyH06;MW7=_S$eHx)4Y^ICG(oSMAVb|t)*Hw~@qlUJCRkA8VB$q$O4l89Ip zo6G&Tf4_WxRZZ{I^?KEP#~URdm<|iY5H2&EdSTt@s94>QS5Hr8Od^nB3l(bMB|vnu zAtw7YmbsY^G}_pa(cz&9&Fi-373B#%L9y%ZcGE`u?$ec1{jBQv*jOC}(W(?<~ z1KuRWn?NyjpSy_o`a;|PLqw8L@ilI-98v8~&5~EpO|}An9*kR4FWw?`p&GwpGbA8h zsd+U9wi67auJ?*-f0}){$bD3Dx|9=HMDgw9JB!3sh+x~iM&=5+bn`AT zFYgF25;$jrPlVnQowGg#>=OkbBdDcNlt~a+@+(=V)ir+PVSW-d6{t_?M3AWFZreI_ zUia(TpucJAvWyY^@LGFG`Qij4>GMP!{~2t1E_Gj;7JaZMl8IUN$@7+3YBb!tC#0WB z&PD5cJS}s+q^dsVPC6;nGF&yz*C##nZzB3D_J7ei=hS_E{P`zU-S_K$y?(m?WT+<4 zyIeVk0#q9~b~&|TreDfYHydgh3nIh~tjv6z#I@vnX0@vYTL{i4dO(X_60N2s2x>|SwvugVe425#+>wjtFb*9 zgs&FW;`JpNmCdJN5mvKsOC0=fTm zZ_{VB>C@5*R4-CKj)Rw2;Sr(mDk1r#?7{QcT{A)xF%+M2#3bTZ&0AE;i8Oj?daym@ zeD<%O&({Vun_ao5)WUV;NM8GBG@iNE+#i|5gk4ef&cb@|K}0D z!hibHpHixR{>2xW$=!I{CR=BD6x5y6nzODsu$To!E2;7 z4e6F6WY%tB0*Fq8)|l7_kJ4^P=@)9S9iPWP7mcngQBF~X-~jgAPpG9 ze_AA^D(2qs+Es+4vm`>%%&eWsr{SXOQqfHP1uGE7cK|#zPesH54^R$H&Iv`Ozp56r z_36{6({_k%ZWzoD8wpM11#Cpq=;?=OIP_?G9QIz9NOg&hOpZ_P6sm!q%XwXYCWHJ| z3!-mj8~$q+Ej-}6hD*7tKsGSnD)AyLHxK}^1IQP@P*3P zjYbh^js^*WM`M)pYWb^Azk7o+^;PUg8=iqSWOaBS!)w@pS!0blk6==BRQ-TJQwm+~ zxE+Q#m~HA*Rl!sYs7wJwhKR}z9Wq3xiip{DMx<@}mvdn4tY=S*}=0B+-% zU|Z6c+@Vx;;XA*X&h9b?tMS5xp@bZ&syYOde5X>pfvIU*Mw_SiQx!Vz?>qh-M&3&W z;&Z=CAaxa>wNGZ*{sPL1LjDb~aT1Y_Ex0PDy%kI_|oaWY=<4)URAJ95=<4Sn#7<0vrY$}6>`uX+TRxwR3n@< zC;l76sP^R+J~3vbEp(XsNaH2Lv&bwb{?cnex^1e0F*}@#*IoW;?t(2MGd|K?AixwA z6@kdKh3pU+GBn~`6j$s9qK1UAphKtXG$K`Pf9^8uAP@}S_*mvtaSCZ)^QLm~IAWVb zLqW>%>(x@4zKSJFwpm*U=>jYjk-J!bx@~g3pWq&lW^YmT-lLmsj zmyZ$GgXcQ|o5-3}+k4at`PvBBLpSxr!dnKlgyl0aDXIlgsHp@JxX8TLhQwjDgAya9 zlre$>tQ54z7{8{9eV^9v)nR3eI0RN%I_s{+0;TvfRqsE2iq0nLDYsMC8&##(nc7Zs zoIWlMUXM_j!*FVrUT^QDr{zY$CHp({JgF|vN-4z-%@<=b-y@op^v-kKjqYArclikV8A z`Duq81e_YNIYL9JkTKYjwAzl4goEZ&EvCnj-S$r~f;D!23{;M|S6l|hXYXu+EeD6t zfOY`)mgbJD7bFCZeRYunt(4da5p$LUc8CuTjT~Zz4l`CMWX@Ul0AtwE=!to$l3EoO zC+CW7q?R2elEyidIsJw(1yd)F`c~ICK#I6m6FLxmmy>^nn&LHp*V-p{kwzm?V!3_# z^_P{(Xx`L2S1mFdp1gbckd9rlhH}YBx?;Ra5r`=%X^cNAaGofUUW!_!M`Rd;&{D%U zl!wnqVHqeu5u9gmkuDo;=PAj_t2at|Hfgu+lhjHw+Nf)pbZzWLy8Pj*FYYee-Nn*& z@x^4aZQC}+FTecy>E0u|bl#`&JvrQ~qNU#?rTNsQLSvXx!Kj9*UStfzGpL$#A460z zv2C)~=ViHw1R6CbVuVm?93SKK^E6?l_?Zh3QUaL#8mOBljA_%E2)+qfZ!N!1vqmw- zE+Vo?6)Xx3Pph4W(;F+a|EVe}bCND-ouTeoA86sFI&LXgXCo572B-4aUkxfQHTGpXMxId^} zK@}*kCy}QgKhk2~SEpyo%u<36mfCG2ZQ8;i_IpLBgZuXu1P6Y68o0R?@w7c_} zz|wrGLmwpgOgcT~viUC zEDt#?UYLZ~DAn$hQhoy_OTCeVeKha^s$Qo5e{R6!~!^{$k5R1RMt4S z%qe84$m034_Z7Co=YT+J{wBZ()odKFZ!kP}5m8KtU~GYImUgHPm%gR9ae#; zHdHZzT`QDvDlkJ~PM%GY`albRq%#+(6UW!uPp@zEXWm~-z<6^pc{FD10z_kldnj!N zXXPF7-a*D|Sp{<&ruawce}2on5L(ut>W@EuZ*Y=>s!nqam8Uwc90oyq2>}|LF955`pVAMO&{*H6nt8C=I!*HKxWyjVfObzQ?8c30TDUnxz~0r@YUiPaLVV|+UNT|W5T;kJ`n4=b(mt* z8$u%#CR#?Z&-v@epBGx&0$5T77&Q}f96J$yc9GmFI_=t}l~S0S2i7D&c!OQQlPXdl z;anEHE**`Ib1U9=pm?nK96^PvN9*?4H1dku{0Fo}T#70s&6CGos%7$OFkckM6_^fc z<@zGsm9y40L}7kn@&T%W z3w0AqOEz2MIVH@A&5#4x?KbR24od*FaD0mS&fNHRt{C}Q(-fVJGXTV@gQ*IUAu*{V zzAPSyh3URg-=OuB&9{;6HgOZy?Mh?!xi>4xfKSZ0v;v0$qBHO>1yBK|iS+Da1xC2n z41z85VObfq&LOm8c!^f1&S0S!)&UHupr)l2f4vfg4N*-_j2sHG@M1vcO`+RBETSmM zOhG%IGgl;x7Gk{!GgYp5+L}##tF7s%67q#s!RqYN#@J;UC}?fbq}Z$}rg%N@uUX@P zbO>0p7&f8XPToZ1Fe@*pLhnEQir1tU2rq@Jj)2-eO7IAyCFhw8*G*fXK$Kh&@y{$F z)3sZXItTMDK=dfrmHN`V)(_=yk_*R+rl?QBWJVa&YcC>j+xU_I03ZNKL_t)Id7M;L zQkq(umo|1bsGmu}(YZ)(z04vcS^7#O$a1Z zLn-pIvNL2AsTEdJC{D72^;d_Km^Dmz(>4w4;Ah4Ap>Dx%IcgHxtexkabDGU(ozeH= zmuw7U>uG-yawQ=zhzK;CAAkN?2FG%@zu9p?OQ-_W(y>G|c z`U8yW7#AZTH6~@j{|0})Tzr|ryIO;Z14Mf6$YUqUm;!y-E-pc6#w*9iGw9OOmy6>T z!ki&(qoN!yTxwu?N|iTBD=$Kb`4qs#j*x#FKw-lR)GJE}Y=7&GQ{zn%lP#U=4Rh{* z4*irK&4L4zI96LoK)6)36977WznE5-iH`(Dm$+&`S7$mJ5DpL0^G&QBDtvN2ZW@UB zqQ$&x=vmE{nKqVLu_zHLez^H`8m`>Z(TN>fV z3PaDp&(?J%c3Dr9d!RflR=b?Ym}EIpte5iC8e7`7M~2#jYHpg~WDe zCJG{NDj@r=X>&>xmHvS8y<4@Ww*4VhXKwNWhrr<|CF}@w_BN9IuUdxOdfL@dHYh*- z!p_e_3Mm_?%=s{TFzx2jBnhukqNxHTIp;L@sUY2USUaE@F|XUrguhHguk)Fr@5xkP zuBiGhqb7gT%l7e0NL{!#cJPsuOCwLhj$O{JQ2rl~K<;-Oyk6=13=Jw+g888-8AME} z$U%Y}2JthAP~egIKgswA5drQl$ettT81H%Aol$S2!F3_jYfQHGS!0kX`Gl;m*Q-D_ zGXCsC^9O6-fy?6@&#Jk2-^O18l8Z(F@SU%HxQMX#5b1-FJdy^BiWQ8gz%U8OXEnv~ zN}lloJ*_c_)#8sxZrd#qk$%-Y5?5=Gf_kPF!=nL|On|?#+(DAp2=#h8c6K2pse!Z! z9{Ps#3@kVrue11$+K5Agx)_TF0GOMz-|~moHS-?JZbw~0RN)$pS-*!ylRDgZ5X7$uQgOFtSRLF|LEIw!mybLWv>h{CMToy&7)eXQ_ zrEM41{_qTVd%RCNY#!iF0DS^`yr5uC`}LY`rTWxS!GR(z3-cq1Yn?uvQa48_?eObD zy3pZ0(-5dK1S+FJmV=d!?EGrd7+s@ zS#Q1=MuLN-*2U+h%HBL{H@Qh1%cPV_l{OV>x3y|fEt~CaFBK+s8{NS>2GdNxbr+qC zs?-${jseOpRAYZf!+qS4GkdN4$KmGLM5is)atfhQ20e5ND!#I7iYPC#){7Ay*1w@aOvX<)o%R-w4T-d+BYWxx*AzLt@_}N#6!}EnY?q0U~J_ zHGEk6mXUarZ6$5Myfh`}+A6WSP24*pt|FBMc1m4N4z7Gd-Xpm|`A5&NnWZN$zCQKL z641^lRQ>enS26$KIMZ54*2em_5bRW7YIRx~YKZ*!eErVyngOtq_!A>C;?zAWGR11= z(Xs>*a}wuRs8&_XdQXB_fn$JljD^;<{~4tuWF|edEvo6ZmDMh$07Nl|uWWbGQkqq? zb{0nRS;aOol~f-Tm2Wg%piC&)iNJ24BZO6GI6NQ5nZWi2XRA8@K-0aiYO*HsFto7N zuk#<2+~baX_L`)k9p0)i>;M7weYav4{Va{OEK9?|eKi+iG6(#CWmhGf^J1lh{VG0l z-E11k!3=?yvDdolochD}-{G;8ILr5v6H8sGQKt20$;$rSJ)~t$t+NKR^RgqeiytNN znMvtCq*zJ%<@gSBmsd4B(ilQh+zYh6I0dhcHan{TuGch`bxt>bx3M8i%nD$8PHE>a zhr6KTL07P9(iEu;D{msnReEMhKL+8pkFpo6e@G!0nhvw|xyNy7mbH~utNKYa^owPa zpTmn!F~hId`^uq<@etufuOlT8ZYI&P7h>glI7?Hc5P^gh(lomo9HF*UsU~ejN5zPy zDd4DQZmTgy&~sGsSoNcI2}`pP+PUuLrcbu1jI*ZY$%CanS#%caVFIZ*I1qcQu|~HL znKlwiCn%W{V3w*ul};m3V_jw0&5TRUq8&#D<67QRK0 zbxeYQnk5j}jbN!&4NeRj)M)@0)cJ;;Gbf>`h0R(`F_9LbtM?9b?aYUGu8R5758vZ= zPYSR8)Wp9t4@O*M`=m;dm^fn_czHa0{dF`42?g*m%b9yJb>ORRj8tw1jg5bYsZcL9 z=3GK4rp#2bMGv_t^KCZmv39SZA>^lL7uXVG1Whg%MwbfxTzq_Z{!ggj+{+54s}|+Y zsrQO3hay`&NJ%(1)!$U9`}FBkGGE{dh4ThQHIo#^lll~(ul0t#2y^%hsILY9A_p>7 zG_p*#PgoO;5nb*`e`8`orOqof^b9#plNc4w5y2&a%2mN61F3_RmDwh~{Y`0ORQo`n zDG4jawq{FhDO|u3r%BlB)BU;xCQT1mIVZU!5CBUYm#=OozEMT)70xN}FM5)Y21tW6 zGbwQKpA+T!)`B{t&Jbh7E^+qpyzYp3Wmr%Ta#?z}G^;vHLP6<)s=Pstsq%0-TgIGX zp5^B+h+y}H4({=Ds6!R#pchkaP<;DO|3EF2P~@CB=Pl!_hDzyFafhn%#>4z5t-=z* zsE4Z(EyhqCnn>jZI++WC-A<*)-L7Tp>I$q$v%Hs_>{GKXiKDN9sGA%c)#21RsiRm z)3(!#LMAjMrpV>8S#dd~XPHG1jn48o8bD6BH`9+;kX=d?iIKl zk`fI4hLWVw-!IzJkf>v%RvGF?sT^Gl$U^9|sV+SSnqfYTJ2>lT{L;>~kL%Z=zyTfG z+{lu9$!8|<!lX8%2@)U~hd7K@*57bLizV$Y2-PFB$M^eDSL$2R@t z=byaW!$v!kpUyR971>&U8%s$8;}I0y!oLEvo@U zsR=9dSi~Vpo|m>Y0vnot+-;ab zt(wl_+!7AcdP9soDIEZDUunGSzPtNw3;{M(wF#}%A0)mCm3uX6ZK+0Dg@zI7nuCNnw2kne zm(^hZBp1ClNsQMjM2hk%Fh@kEHJwl~P^BKe4yA}7m|YLlM7&ejePDU_4fP7@LF%3} z?VuXxRRHOqp5Y(oYqCrDlO>04RLkk*3lrHXIBjb^E%~Jd|N84Ma7#;L!2pU6 zOR2g5@EIx@d3=!Mn*eM!Em>=->hv8Nb9@*~v>{&hYTQezNoi);xeB1?rh_RLTj@6+i|a;R z&ZPi*ap6?5{hzaC2$$~eO@q{?C^-|GR*3Cw@!m!jR}hj0=7M#ZB`crHip z??2tWdtXY~;-}<&?_#zp7FYG?L0(ZFJ~6R)cV1$FY-bm9{4)BWQVUG=*PSEPj?xtj zi=K~6-3~yhnmToiCB%_fl@_;2B5?d>y;wo@B7V6sMY|xKNSQnOXChVg01gSuXpW0?3d6pBXz6z=A|U@5P0R zA_HOEagZKbP5aNam%!NX{_-szNIWKL;0N)E>%OJhw2Ns6G@*=uA+l^KKSrJ+B-q^F zFk2JR2!BBKKa4!bmrKnc=!&tN;q+(XDpvg}9q%Om&%-11d-P_)9=yEqtCDn`kO<>0~cec^yG@Rc!bif8;aM zDa}z{DVy}B9_s$IK3k}eZ&kod zy>zw|3cA<`QBY=?YVJ5?0T`w)CtJrnq8ND9L&QI^+K)o4On4gPixLTsZ9lCDc zAWRQP&I4LTbLto~*~J82NM~~yxk4_vhQ%&pCe+$_jIr-K9FfhPYGBDu0{=XsOS~Ow zLtbzjrwf?-q<&22x6l<3K`-zX@dBBCe3VK=kmkgp_|711>$y;w)61XUc7Oi%AMrqX z7P>qoNu6}#y)lLfcvT&Jju3Tj2c^KOGhy`h;;GA3Qi$w|_&uKyVLoE9?5==L=@Z2@ zeInx0Z9qz^u1ys{CmzS(Vjbpfyq|@OM+&)j1W&HxjU)h#pj2C5u>QeiaZ!|qW&tVI zLC$&l>}AP>V1tv?Vt5*rihgEFp?H7)3-C=@L#eE|7;_sA8BkOe7qbPswYQppDC;7m zu)xm}S0P_sAf7>$#9Rf%9c!9RvIJ|aBd+0=3(m}jnl5hUoUu?2ho(v+LqomP;4wEi zBz%rxDl;qsFu!7a83Rhy-MR|s)Tt9YAhN~jg5+zmP6?@Q*}4RDFtqp5V9Cz~*fq~J z44_K0Cn{);CXX}9woO}kY5*?jR4R(tqhLWC)vFsrTnD(97!1Evf{_kR8I{;j- z>lVQ!%V~j71I9qBFh?IwZv;_IBThTw_1!)W61}Leo?Y4fBxy`KmN5AIYColn7u3X!YJf5`@l`W zsR$>zv1RVaVfUh3QJurK{IrmnmEQD-*e|O<6*&SxGX2B35g7kSp9NipFnQ zudtyC!nBP)ezr3b8XSwRkbR+O!avQcBO8LF9R@nh(gUmP?0! z{l#13v(Mk>COd>($jg)^uOQZ$ArE{r!`z6OX&4rI#Esp)GHdWD7CK} z(GW)GTlG$6m2`zoEAE6oTKH>KFSKvrpLnKTv8vONr$z zITNWqqIH3*D0 zaUhh0BRIsXnrB!d(zf+XdNPM_1$wxRkH9zzhq6f1LoyI4C0(|$cvy|NvK=&MsHBI9 z!Zo8N{L42mBd{g0QzTb)r6Fk70QTJEx!5KmQ;pwwklPG75hbt53ci zT58_uxtdDC&hRa@-M9>!#)~9Zd(8-fWG$IoWzIl^R@nzqht3|Z5)z9VhE<_jigeFp zWWYgSXc$g0QUlneoPZH+QE2J5LIP+Opb7P1T7m#OBteBu+~OD_*oL=H z_IxRpHLyfNMM$2BX7nOB<^|O_;w4pUK~>dn|MZWfz{NNAyC#r) zfRx3WL}&ZCninpMw-fZ7Qs~zW@21*>3|JtsK-SyATmY^gYAU`*TjSZO4G$L&^-Nr; zq-IQLml|nrlf)fQKrXXqv0Xx3eESBx4L~;)B`MI@>t}_I7gst)*aP_IdcL+BTr?}- zC;7iHv9V6Mw0loP&?mm8#oWLA^6~!ue!E;SVhIAgv9w%jtR}KF_pRmA`eFBALLiE( zRbxrJ(oV;2WW*+-5WW*|k^tK(;szG4T2lAIsm9`Z!m|Rx+y^G$E&ZYb@tL8(*)Z#Z zgxVNL3#u1!!0n(k(j_He0EThEgeGa;m(lXc?`eu!#iTZXacuE&>cBfM$>trW`v9$K z0brqCkWkLH&87{h9#)_a*Ek5$6zWmS%=yGZgN9nKV&4vtsRAiY#oyG-xx17Cj23f7 zvLn)>g{n;}!bMsbaPa!Wf3vOz@MdS4l}*IgIaTMM{^9TNNDBOoZ>a_a&MDCsr-Eh^ z)NFUldQn9y-4Mp9A3P&D3UImM77ofU7Z;@O-my~aUpJ`{|-J!W~4$EIH|EVpahAgYFq;^Ygt;8=8`w-3zLpv zYXt$hwVYr}Z*8D(s4qcf^kJSh9&eX(HM-bu`)S62s!s;nYX8`jCv|&8oCq;7Q^A@I zDl}&S#pVdpz6@K;6)%V91ZN~|68#ZE8y+*fXP+j@sD?K^rH!ikMrmmXsw#B9UjOuu ze~;fQc?a>LkkGdfa*J3*;2V}*;H=WDTb6UA6TTJ|EWdC;1m+|bHnE%?rGVI6>?w{% zgZwA&iqlgx2BE8Cl{u$6 z(Z3Gk3bd&MiHB14s9Zx?DIGE1 zb5mQPzUaGbDKlp^XPT^N^(jaangVDBcWUj}f~_3KzLAf}K==dc1orE=RSM{o%??-A8#DE6_2LgU~n$iolK@{>Tiz}ZAXHw?e~%eNxf zE|=hK=RC`NpUziv->rVN{IP8?k~knt-b+#&ukFH>%M2tt$OHSiZGL-<&9y&2vmD|Z zh^MMnI>xgE*^QL;ar_5ZvSFd_h5EMho>Vg6K@EIhKTPph9%`y6*62g@C%oo zi9|xsjo4^oxQozVa3NYd*tpzOH5Z4ka#JObXpz_avT1HEca}DHm0Tqa!nH^HSEU3T zkeHmY*>0t3m8b~COug)U4LgAJ1*vB)Qie5PaZ7@i z@mk>Aton=DKqa62+gQCIg(7N#%!GwVVGW%ZnY{~;sZ=R!(D8vUUa9w059)QpHkCLT@EryiaJKx8-u)JxfG zx#Q0mHSX+!jtw|XFNaQTwK5v*g!dXkq4snE`V#Tz%DttqR+qFp5p7hyNvgW?C~cDD zMBtwMUed$(xAfa$hQ27BG|QsXRMQ*5rmRH z(s>3CGx6mL8e31e#eeVW%(PJTu!LGxG2R^9jg2vId^UYOj1RV23>2`pM7s!gi-Q_4Lpol{6>9G<@K z+Q?$97yglk^_nJlEcHpTy8k+O({@Q^h%C>U=~HPGYLkyY|G4khv0WCaNaUvIb16pb zCMk*1XQjTP*|!N1fnxg7wgiP*8W5_wrVdg_5VlIpq<8h;JzZgx3xt))YDM7_tqa4^+V+Wg%@gRHNR3B~!D~WklPn zxtEh^CqViJHAkm4x^4V5Rc%SWo3s&IU{0T7YT-oFDdhJ5wam$tLoW!uKsveeEOkERlS zS#F~T#5-kh(fE$(6qiFU1B!%2__l0gt1SgWS3rmt8wKf`zg@HQ+ljt>1|8HFzrJSu zgEy4YFVdmk8bkHab4mba!mLqd-KcOcB!YtzU_i^IK&EA0Blf*c^AxEwrtm~sPpzWW zDyg9pnyJeP9&%y*RX0hJPs(69)XPQaN>1SOK(kh|mxaM$bBgBmil~ zaI`iV&{*?;z|L^B*^Ep=t$55*RzO58?AZVS03ZNKL_t(yn@u4=jDNz%C!vI35`Kme z@3EKS8`^osO3|m;g7#W?V`*D<`x!E9=G(7Z(=1)2-?8);=Gq7T*LQF^&$ z<+qTpAquu$;Bq&vQ~Za>3m> z=dO`=?eUt?;rjCWJ&u2R_@OB>g5?q$W#Ax33U49FAZFt*UvvRCV`Ydha*$fOkZQs7jYtK8O~&*g zZS!k0R2+-934O&OITk{NHnm4+r~_Bnx56c;GoZ3aUq)Tv;A$KXriS;(E49RXmMJxkx`9-Z?7!QGMw?P?{= zAMLGJh!iB=uGNJFA5|zg16Xo;U0S-edVtJ3V4>(0#dZB{)g`6Gb1Uk{@4q{kEn(aE zAwq{XjT<5NYlg7oQHI^SCn3dsMTl4f+2)Y!3nJfM=OlF-6182Lz3H|BlNw(`ZR6<- zC{&0+h-#hYHx1%ca4!R0a}4p(UK)^I(CR?R*dSaWb*)gK!d-v z9?8DU@j!x1;Q@PX6=r1`dV;2`Bt1a0M#LUzj6+k0N#|xGFOFG&LNM)cz8NhIgqv|d zloaPZj4ct_E<=L;piqcvF>mdD-EF3Ds%~2xU>IJbU`mY}B?rYo*vawz&F2iXGuatW zo$B~{&Z*G<`d|L@K4;ru4@eW%j3by~bP0~K!xuBdLs|gj4O1eds^kgvspMT_`XtrIuMAaNsQM<77 z%swN;M*63tis8wO;?ua#{Q;yX$yCjkYaapCICaPlT+O4G!W*su%qI8{;T+CI39Ato zqf_lXWIwuZao1P(`9E{ceNHGYmw}9tDK)zC)HGQ0xFc0ZK2_EE>n|Udm4A(?xG6+z zuP;@Ms^H|WilJyrGdN2|;{{gPzP2EaCSmz9K)RKPl~akZtJ?9z|3^-skV%D?iqvtQ zlSCv8GSNA07rZfK59IJO_#hvD`9)Q2MmIc^pxGLJW8dH(hS zTxx5yfC2$|D_)z3XcMKp08ndN7Kt+#rv8%XDIu#k#S=k#mDVS3c-*I#slICZOcprs-`iH-N2smD!#JMR9f^0b{y_)o)?Dy2a!rToT_cjJS zS#F%vw@>f7Y)Dy*A03!I~H($|<&bKCm z%+Y<&RUS=^zOoN<^VK0uW?PxQD;A0M=O$ewbfq~XxT+iO4_L-aBK#}ZA=gr)gH`PL zYW8pPr+&1X_4}63X)*!uZNSuB9>{_^J!U;Y6R!#-pyQP>zq*@6js zCTy3PQJ_VGSXiA*hdn#rTn^k%`n>tpRbhA(=0fJzi9tFGJ4PYZszQ!H8)fFsfCU7u zQg}k0gboG;N2MP)15= zXibfdSKG;yPPMY>tFh0g=Q34&!Gq5T+Rdptq55}!_y1TaweBr6 zgC`gq&ETe9eeAm>mj|8+ zwcv_cAnkt#CzZy3UUO0H0##kI z_N$1^`PElmMOh?8UIf7#S!(h&u5~{HcWOe3pp+FemVRBLw$j)0<5h(x(zajk51k8c z*<$(X(2>Yz4#ukB@)Q`jHKzy`YA2ci$hLw?*Tu{WHG!taZJ$-7C@C=bwFQ`#!dV z?=2*S8PnmnZrayFy*T%jHfvb^2*q+=#M4%R4P}g=0DAWRkK>1{-KJksnidsA)e&_RY>4v`(3}-)dN=YBjV+QnB zg$~4jug|v(b5cPJs>*AQka(o}foZBnN=HnGAQe5x+6${9`?Yi~L z@^)HS>1}|RLuymq8(2CGRvq6BE@A9>^A%$ z>);A1GC`VnS~bmGRHv}Cl>F!foY0uZ)KLp?6GU`hR!gsr58gbQv*qxyH`pYJp|muO z9clSzPB8n~su_#Xu<*G>eFb(8z{%)IWaz-M0ogv@L;yA}of}jxgbo z7Q+rspw;mgbtSz-%|}AOWerjS5G_|kO)ajtoJ?Z@){LcXTo+vFBNI6Rq)peh9Zvcz zx$eLrrXO_8y=pSVo2|uY9Q$w>2pzbjp*nZ^wYq3NO=K!k`4`(@Z(~vy=*!QZh@WfD z7uCq^!lhp+${p7^|8rc}I={aBzK-4XMIG@~BZuL*E^XdM>Zu$G-t}rA-C_bx{tHd@M;jX z_>fayd*vSTcFC2NqxMPfVI2bzp^PrXbw%5k5nS=|lTVZzT|5o9h=|O6p2#==WQ)0} zWM)}ZwcRJH%69rtB=hC7sLfUiS zx?RLA@4o`xoi$RsS>#G=fzu^bk&3G*(A(drI-c)9#5;fg$p^rH)sU8`k}}g#DF}sJ zv7LX2>LC0{YU}6T!G)^JXCYgpat(#khiIANf;UknD5_4vETz+nBcVezf(S!?6A?^P z<@Aue3>i4_Y<3$VVq4IEKaPo8B@I}T&ZLMT#kYjATD95;v1HP13*O=eElQ24KvYo~ zRk6Y^cV-N#odDig#{q(kz8=v#9U_@mB~2_sM3FCx`<(}KN`oWNw62LmNCweQC3i$X znH9IAeh}Ip_oJ#Fw$X@fh5QGt8v`xIKZdzV1lgr+442n74Y4J8WC*OzN(`*CD2^Ml zz`F#jfk1EwIV&n6!!spm zZqJiRyQYsg|GS|dSr?@EhfoAha#rW!s+X@upfU!d1o4!9!d1$#xi(OCt-z&P+=0&y zR`S!93;PiqnB6CfSm8h(2RG9DXM+qGR}MtifJw*A*V_NimiJ`MA1ygIzDcWtgn)tC z>u0^V{?h)sWj-WnH$+5^$K&UpfA-C9eLJ5C-J@CQph+704FEJzlg1HYK)DE!dZG?y z3UVEtI$;tGRS|5;7=!9Qcj0qgN|eYcN?pVAbjK-EQEMkcrw@*v;)rqLRVh4?m*vsr zT&2f~FHX3|Wb`!g8%TPUB1lZVFDP1uYldJ0;>CS(p{J_^-JygQ&71+oP{hz(QRk}( zvM7H^s+ZhNG#Q~#G20LTxgAslb7G(Kux-9H&6=V_J9@V9AyIBU*1LVXID(2h-OWJ0 z`8h8cgKtz-SNH%B$)bSOu7ifq4nP^eAVj?c5D;kM1XVSgVMJ^l%bhF~QhodV?v2;Y ztnW4-WXqgMYwKDHBd0~$ioN)YlN&3f0jD|xAZTp%v-bGX+S!^u=F%c9Yy}z7)^vkK zN2IcA;iMCnUkM7-maXNlJsdVyk^#U#s#qE&d0Kmo^XI6)~2v(Hq;dB;@R z407y6(^Nb=o0o6{WV)~$yfQ?x_BUfrf=3JGjE;{zD~ip1nqeD}>aZk}=s+o->O*ds zoGvbta5o2!nbTBza<#PfmSMU7pw{p)#F)eF2-)_w)_14MfDIH_^w0#NRjJF^Bt7ui?(W>o! zs*Oa?nj9}x)gj@??F)_i@=?UHutDtRX}Qn&(%_;PI$TMfU2JNI%dgN;`7T*gx}Wu~ zqKVtOT*hFy%mrt&{S6y;wyToj^gV74(K{AQr0u=CyL#w{Ia+uT&O6fPYK6z0aNpat zxZ{o+cqm$9iE(b1LN6Usn~RS>eDAOR=5IAz@4RfRbh4iFo>?*PI`GxJb2w>Ol`PQQ zsUeSel%!F>A_0qr?acrURao-3F*H+5#a^xMDJi|wap5`_cQP*v-lRq0AQQ19tr%2kiG4!P;@Or|_9D1uoy>em#9Q0|4X+DupFsB{&{mEgIEosc6P?46WtV{W0 zi0Yv84YV;Amu@oD1${&WOyNjRW~I#J8^hI-D`m6(QY8yQ>xV2shQiWzix z(v+gkBE|fiaSC(RlT630fdt*_GQ@%D<#?#S331Qmi5PTnWp7A1j$(mXsW*C(tTCS8 z7Xcl5in45zdy0YMCL$A-9L@~x!s4H#?v8D?g`)7M!a#-KOB#G!hr}PToDjJ=?jkZ? zq6Ct#U)iUc%#sO;7M^afx}3or_bHMd2N2OYO}rRW6IiKZ40STaeWkCfYD6)p*__jw z)kGi|Lv4@WW0pt=<_uow5$?W5WPWZIG|c(N>%R)fL#gPv@2jVaI(61Y=$j|gEi>@k z*KMsK;f|VwS3dik;xYqCTN4XdIsNF)>zwd+T}2bn8{Oh`q$Q%!in~VjKp)C-!FTu% z#=0!z8Yv?6Z1)epgts(=i<6&hf9acCG?RB-z3H-RYI&|ch9e;O-$nQGAI@pd$o3rE zD7Brae`~NqM=FdSGk;iCT*&CMGF$qX|4JoRHld6m&NiEh>L`1f23{T(^8LLGZAH7Jv34dJS%%J#qb+A4Y z;L}fk|H;Q6)XwGPL8=stO1T{Kj>Qh{uZoDwV)?pofaL0U4~r*f(sptNx$^Szd;pE^T>bKDrhHf@_=@zis2}K$UNQHn8Yv(sZR=-w z$bg%dHyyr102ulz68fJ+yNl}czBRgq|1FSc>D2>Wyk{+Xf7&@N3Q-?k+T_`lEvVdb zPL=^(v5fD&^X6au&3{rECUmIt|8RomP(CAM*^TERvU5oa4SDigL#jj7%=TRlPY(2W z6HyNn6u{kKwyjKtIU*`5DH$ZQ7S@Lgy-g8fN%2BR1NoIo-%I|n@;#Dv!IUu*U1qGe zpI~Xs5hCHoC<2?o8C7*KKehKZz2iE`7xvz{?C@`4&X&zwq=P{=4>wk2+Rw^Bom2xY z&?8x+@3-;zph z$(z&meZKVMV4;;LDxL!IPzE-z-D#GPIV(RD01bU7lLRIIb4k$btvhnQJpL-)E&aD; zW+=&xF&duBZy^FT3^ft4G1M$z88VZ@i|eh3sK6@gTdvrG3(p4ef_mU>!6sGE$pi_g z6_G|tWCi~hHeC;4`M42{Zc}))NJr=s+|cz~fXq3YSC_-rYxJNE(d5dotA!Y9yY={o z=YcWB25y~ly=DyO7fyfZ*@0PnW~kPSy0D7VL$xNE?&}S%)XV8Uyf{m{J3pm}l>TVBdGI_iBlpB@N^YV-u+sKt@+T zp(33cYR2`2^3Xjm8-PN~E!+7)@Hva8f`E!h>PR`-S-JB=|D>Kv8nT7HE?hm-10|Ek zG`Ee^Pp10DqHuu;#B?5B`nt$Y_8$IpCrT1h362p8DUVA3@THeFPHx=2ZkaZ>oZt=! zT*-)*uSKK@OnsvQAP@#5b2D=8i?=CMfG3BoO={DyMhF9TPkK-Y0s@(y0y`yY_@*`h zU_wYQ_-d>`Bm zH<&CY134T#iRy+L$Q8Xk*;cW!YI#yqn0c`C9a_4l0%!U28vYecQVk-N-+FfH_{eL; z9MW|gsT$EVg=T*)?Rm%mX>9}Wg=92gho0_7`SAUB|MrO|5Ttz|D6Z7tGzrUUe0y8Ej5_@7=fe z{igB%Tm@~Lz3uP12f2H*!?EF2J)%^L>m=Ec=r5#2P&4VDyP~O?;DjQP2y9NbYT3B%Mm#^xEn$V^3;trRV2n!hmWAjQYU*wMEcfnJ2@*c-zm2Ira#<@?%cm>Cd<-CJkF?T~9y9Bq~ zf>%-I+;|P30f6n^k{82r(~L9bYqfbiDxK8GoU>W$`gO}Zoo(>7Z3s|#x@k{IduF_Y zfOcu=Ku5R6n-*o_U4yz}3IIHI51zMG5q47OOjeO=aW=WI*#&7z?C8u>|Ivr<|LD(t z96BtUx*Yge;PHiiXVjgjAUhKo5F0XFhi1U=l{IE@ zb|pl{iAxAZWV$9ywH2Rdw{z@CGiW!{R-a4$~K03T{+43-=Y$p7mU%dOt8>!NkSDeH`zZWjx-qr56k0vxMkP$06in3=&y1-XG-Vs@4-W@ETjBe53Q0G#%iTUGFCuMV1ObW&Av6>zekt zKz(w%{=XrX>-$emQZZh)En(X$cSD5phgKDEkyLN0IrnAz@4o%!kN)h(8WeiK^+-vN z8eY?e^iL#<4&wMbs1DWGQ&Ih9001BWNkl_Oe(|#BXUxkdq^r9bOjM5 zyyPo=Ac%4{*hYB4doPk&l|a)X1R}*|S8yt`T%U5BU~ukIFM^?iM+N(YaBYKmrB{vW z&|wrtT$dRMy*2w+}N7m`s5u?x;?7f1RdGuNhU*+vfA{jr z%dcE}wn^K4HCkltL4fh}>6f4V+o#|B_ID%@wYm4@Vkh#};2DPo;68YydanFrnbz#s zNL22BTP>(AQ|&UAw`_tT3?+cOhnk4WHo{+nwl0=I2(6_O5vxHMK`%l|8bD}>`BK1iXl1x3^O$PhxT-E0_>j9-Rdss47WRg{ZW*6F3rvZv4SAOOJbwD? zyouzIu_B>xHlriN7`km+EP^kYnf7JKP18+k(bHUbpR5RmaPd8{mUCR^eEYtG`p3wG z&K`F2jX7=S5pMCJ| zTW1I2IWO%XQK-|FibCPMEi-+`DUF-8eQ;G*&OT8hK4!}kk!`ccvDxtR;zoN*!&g$s zWESXuu2=GyTl#(J3kll;j7F3Z36D!$U<#@+P{{)?zw*#_SV`pUv|#y1?_S?q`k&`M z|4Prpcu$OF$=i6#bzA*+Aw=(8zj86#%}wX33#(bd<8}NE>mMjWCo65JnR+z4c8dA# zJ8%7$Z-1w=V^sRCGi1Y*o+%y_D|5G(G@E59g-H6>?Pj$G1zug$P1!Dd1zB8|JED}A z>b4*E;FrNF>CWpC%bJ_O`utgZ*f^hvsCt1z!<0Ej<9DhOJ)zvzC(s*g z=8Q3h4xRfH6*Fvu;zRODpi3e^9NGA92s8xYzgAHS!&2A(ah9f_;`wQ|BBKz$|UtIx^g|N{u-5 z`_I0=^Xaq2^0$>lQ0W>U&6Mx&LQH+~%&s?3k&i$8;P@Y(9iF@#B_L`#lCw#$vnI6H zv7~Sn1XQW9i&u#-ki9{8WOHWNw&#xu@{s)CZ}d`0O(0;RvZ<%)rp4CV^~05V(v$?ESF-POpHm>? zNrl`|yU1zws5TBvDMUhG>*h$u5{SH&$jE2Hh-kUKrZPiKiz4@rzDl)dgG$;!q zegRh_EV(pB`HA&`D;MsxfagA}=jGzj2Tk~u_P>@u-`^~WGmGpr6V}D=5=wHN{e><> z#gz)R`_8WWNIW~}++`G@EKo~qS}k2Mg+*<%-Qp^K!gGA}%Y`jRJ9X3}=;fOF4@G{; z2?c8r!beJ3wMV6NgAjdEC4dS<-#61j^hl5 zA|MHPvS>nh?&~^Ev=^qpj!d35T1KA+&o%UQ#$vP7pn7n(_b2DaGc}9QR0IqMYksGh z3>AiHhX$}jH4(*NC$ro{?wr98pGd;X?G6ZrEuvx1vfbq;0#<9!iQ5?ElW>1$3fJ zwklZ(FEB@E#Cf>=aEM4{jxL@8eGCcIc5|AL;1QG2L;PuAvdbTN@K*Fsq&#$vv+{;m{k2r4ebT!%NgEzZ|MMhV!T*3a#_bk(6Gz$vlx~ z1DH%mrmW+LmXlgowg!y;1mL2%$FzCQm*j56?MP8F!?pi!(^%?#e)aUr*I)hRoT*7I zomj6-$zM8oxbC`2%tD%W7D|#ll0=s+Yp$k}KNX0I1|HSxnvDQd)ftf`zn5gUigRB7 zHtsWmF?8;j8W5_U9woYV0+|H`v%eZ~$qx#Nx3w&>htr4HQ}&R0)P0ZKLMmH2j%vLT zG<4S&>viD0HTZ7ESn@es*0mz7n%r|C{*UHEM2o$>#&7DQM>KrGnB${NweIlLrhW9m zdw=qy{}6kbI>rzLG*yKfXN-cZXnReQOO(b@GYn6>9E>k0V|K}Z^IY;C0HpLq^hu7d zL?yyPx10+zD3iGaMr!^CO4V6TL5wTpoHar*Q^W9_x$p)GEtpR?QO5A8z9uCAF=Ho_!t(BrW)Jhh`idu1$R_ku23@$J zPy!3JFjw3eyixdC_&1pxgpR&oes2+=66FLRO#x0Q5JM+p)iu`5Tq>o|#$}~exSerd z6eA~%Jf9x!Cjy)Ex39h8OqBh1%`HS^+cNu1gRQl_{S`|%3M5ZKm1fQD&1rohA@0?m z-kR2b3Ff?0%9LR;w&?C^D0&pdBF{)J>3&7Ny0LI!u=ZKf$^&pE7f3`y4(MY@VWnu> zoDBX^xtvL+FG<+QDa$3u$Q!TC&Juk|DWwU84TWAkDQV&XkokEbV8K*x6C$*2-rcs| z^<7iNwvL_w!%O;o#?e}n1WY)2;QA{kv~6c2G(;-o3db&Qi9g$iXMqd!YSQadFH zaT>}b%cGVsyzGSuPLedVZQ~K{dUED+FRPB!D>n5H6TZaO9LN+CO2o!Nxpk0ASQS=` ziy86qOjJAy1Bu88lca)@t%^ihMCZ#+#0p|AJ}+;QJ>-$F>b&E^ld| z#IKMek)PAUq2HfV5KNkVO=1nY_E@}WHrFAuwlJcI zM8F6m?+0LWQZp@c&ZkemeB(dX~{|ZKFXLQRL9yCSX$wc#pZVxV$+Iw;R zlB?U99fJ=R0TJ2v6zwl>G&tGu=GiA7efYf}{7Gyl@T7`>?(9Axg=v~tM7STvY zGm)A_wlOq}sYdAlqR!53k8H16qF3z(j06^>$*Pp+$!EM9szVUPBRggZdtVYbmkF#m zQ*0{>Cn9HcUboa8REDbSsr)6=Y(MTUTj$O;tDO(PlfroDp@y0Zkw*%cbDB+<{r0t2 z!0?z@hmLMvkdP*vq6fdRq+I-`OE9&^gRUz@{5zoR!;$W{P#g_;Z6I|4c`K_EPtq1k z8MpTB_1Bp-t69P%!QKh9yqrG-F(Oe)p$_q(%A)Jmgrt{WjdSDySwxK0o#T?;-?IAv zai=QZ72LNEPkQmcB(Sdj%({6#6)BsR7aoc68=>zD#j(H3ICT8-CSK6E}YKghPY3@g5iUwlR!ufvk-ut zVS*Vl_Zhrr8^g@ni3y8XF~1b5BBQhzu%Uyxm|8Q0iq%)hY|=pJYG4HQ4~+{=5OIEn z>e$Ad<~hR-+r|x`gfLBfbH`48Oi?B}6hZ!Eh-7%Km@(&CL$r$zh|gl5SH8m@rCZ9SU0~LAy=wrT|}j@!4CyeO3D2%k&J@sa#@5U2*mN z{l1b_xPenVR_{l-8{a-2>HE~AaMixaw{O&z7bkNPC2|#q&$a4u09gomF+`f;9axG+ ztyfOQg`;mkK@7l?v zAL0y+_O?6M{!Zqs%P%%MVKOr<}|=Nq$%blx}b5j@}YFW@-{4J6U?JZ3$XS zUw!rT;}75e{ty1d*}0-*6Eea@*r8HXXnqrk)RzKaBqtdGv8Hn!k=zXAD-!&f-mu=< z#B4U#OxdjJsgD+TNaYcPIjtr7hGJb{q`U`O6t$|81wqTO6k9eJk%p@d#C`pNY{a{5 z5w8}d3=iAbr^R?lwK%s*G)H}G@I)l4cAy#xKuP;f=fqBiQsPBd`J+aZXC-1e+=r;R z6p=Bpj&a+B1cnsn1LFvQIRoH=;q7}w??oVlS?Wd2lij z7>@g{ikA)tr$@vbw&-2M=!H2=SxPk2VhA;)nZ5SvFVWo})?;z+bt0^Y7JE@njy6xF zxIZfbPQQb~`1uN4DmB>9l z()Rj%-Gxk_Q%2p@oIGySG?XqyIyk+&(>&-&oO>fh!X9oe!7JKr(fRg)h&~nIX6g_AtM#+jYAh|y`bf{-hBQ0KlqbQSwM%x98hbFyBT4j z<|7cdx2^u5VSbYmmBc+t4}9D?Fuw#fR^-UxO)z(Eyrx?4CzY3ezN1tcN^f@z7$raHFGHJsidGwl03FyxDQ91)j5BgL#QML55F z`uk7b{oNb6RFZ-G3r^2Xy!^NaB42UA@fZTPWW#ZQ8!KX^dbEL&ehnHS@l2|ZhP%ty~ge+-5 z5g8-TIkb{zx}MHi>Q>HZS*+M`X5Lq&loS47w(D{lDy@y5+Vm~V5X-l=K}V% zoJ~Z;1kRtPMUJ#eM4szUv(I!*Zu=@hgLjUrDE+u7U1|K}Z!+dIQD_zfwkU5qR6Y5a zH(l&XRW;a{Hxk)91E6?ld6joC!?q1D0E_G)g9(FoqL|>EbARPmKh1UYRm++iZOKjq zI6WM=zbugJai=U7Ir$n!X?Uz(k0Rx33q=5`%%l|Z%eT8FFJ1`d(@7cqF&31d>*4iU z)KZHG_&UM>+2f{oOd7?!2F`+IcnrJKk$oC~!(nS+ z8UdY}+~I#V@s1~2R5Arj&PDX(Eeg{n9S2j`h3IkLrD3Kq6lVV3St-z9FauO5@_8myvpMa<58nIz#~(cM zj4Bgn`Fi*$d*Es85{di_EgeUCJT>{6+aRz{VvHAZ#Zhw#H(61=Vot{9t9v-8tlHQZ z-XjPj^}0|D3qQ$;c(q#$qC;KTqd6lNjVsPYbD{FG(g7(;)36+t3mO*J*~CyxvqRK* zCrPkkSE95}sMq(jbeS+%7ne`mLsPvmq`@0jA- z#&(P3CXPOGy5)hBaQl>j9=XLZMw{Jk>$_w}+}zxJ@ZLK=`m-OCC7f>4noVSqYtl;- zHz^%=bK97~wlU}{8UX}S(S&T-X}51LrhRehn4R_(NG+mcX6B9-gA9J3CL-H5hK|Ew zySdrTuz87l>W=6)AA;sGxgH=flnfi}1BCvfLO*i1n5Zjz8;ui$AT=G2heK%yyD?QQ zEA*g}Rv5fR2V8%bcC5`Pk;L8(Y=PEbjwpBx!M}eJLa+)TyG8ZE2mwZsDW!2Y=y(w? zr)lDTG${;3d%X%7=ws~8}Z6_inFjdNL5aOQql+)wIJ*r@yhA%=U4H;CEW<$Vi))J zoE0E+=`m*puR79IV`2EXY)(J{ARf*4^~3_#F7LTyb5Z^?AB3hw^Mpk_YLgLzaCes? zv}WkqhLb}Y?wRAqpxdTbkxX^*)*G+=;D>*@Z3jpE45O{RK~^M`8G>HAgfxcgVG|x} z9{^>jaB*=_d}wnw>F}^nGPO75j0#9(GfA(LZ5u|fiftRuo*kdv9NojyV7uwq=eBJg zLE%YP66snMHV~me)>lxHEkQ<@{DPl(IxVMM8B?J}+k&xMu^s^;qY>p;5z)yggm)z^FGB-;L8t#7GT@wV{`R#mzWCfjhT<*x zBqxVcaobRrdBGWpOi{Oe*vIs!i*H%w8&qt&hT~PHT`id>4`d(XH5d1igpOB4Dj`?k zDq)q8&^Na)xqa>#TOTHs*IDPXCk||nkdj=?YU(YiY)Bs^$adJ05zz#5y0&+ZfC?=U z5m6l*aV=jc0WK~QI_mP{*;78%8nz(d2b(?Pf39sC>~CilOH-Fl!D$crs`Tw}$7}9x zRwOJFR2ozXob+clcZTYHP!UU^r@*=Y?-s{7EyE%mJ$b*V2vrGdR_1=IMa=_d!6E8f ztvPaWAedc9gl5xh3{BHZuoDyH?>u;6!Xs{o3^*ZKizg5OMA6T@q|ayVET~CVW2l)I z=lW#K4&TiHF;7$D_C?UtE3t?UC|Ii~B*KtoQ{(E(qN?e@>DLHrXi1Hk=Tmr_3w&PP z7J%6lz-)f;#b>X*`iqMW$h{ZZ4~Qrvs|G3YU!F=oELBI6m-g1YDb4iokG*J)Ys8Y- zuEVh1k9qc>ckJr7J2jQ^8IFSzi7U(WAF2c4hKRS_O$$$WTTxOTyJTP;@KZ~5arRB_ zItP^*$zln=LVW>|@>zPg)jVl2mKsL4Yh27@xU&48(xET8o!;241Ci56Sz zx3vQ?geH_&&(%zxnf{1w7K#m+=aY4F0A%?}%6~#i9K=1CDAgv@tL7dyvH9e%9kv0H z2=mim&&znW3y`s?Ih99v{hgaPgc^nk5^jNmjn*>%wY?^ljl< zxNGP}eU(M=qX_031TG@6Y91Qw;-(TW`Sd3K2oa1vJ%X)YDBkIk&ZFdICXH7WyVmuFH})>%4mofsFKg&TUOVeU*8yGc$rGn; zNX>1Yf=g#m#HT6oMIDbTdvkX;xhMdD-@Nk6zyF7SDmg|^Zq?*-{z($|-1!UK6i+hE z-znj_rcs%Ht7+_lFL-y{qoln)Q__T7Wxzhoj_#A9hs}%iwUKFrw<9XtCTI+MB%*3w zX-fc6#Tdi6;uyM5>^AkuCZ1o$*Px`;JmEP*C7)@h{Vt6{GAEi@BoWs;Gs90;(B2B5fFIi^G<4&OQ5HR zr)b2lM9^`L6c*~!$Yn#&?6G|yg4v?n?o^e10+F&jY<}#f&3%9W-M2sa==~H9$VQ0p zW3EKkOe48rYaVhdYlQJMFn%XXx|)G3`@YGI{PD*he)oGn(Awr9fNAYoCACdLUjyxsF7s!#X?H2m zL(O8C;YS)qtlAL%yQheZJqK+wjpK11_vv(S8$;!=ZSF&>Dq>=;2NPr-BBY-{_3HD8s%Qg1E{ZlwqNX&5#_mf zN((C)Phk7DrrPrQrtdcZnVj2+va79PXmL$v#TM+TlA2P+uK)KvmeM0Zl}S6bhGcW1 zt+=a~E1JTcFG3gU(`FD+b5WQ9+bUuQ%jxmb%(D~T zmAMMals77wT!J&adre>^KPP4>Ax~_3*@%kh+!o%pm(ua@|IF+MA0Qx1SH+ zY@>F0>TJRXc$lDrk86hOjcWmb<+8~L)G;oc&;-5O)GrcRin>RxV7F{9;8fsFZz5|= zTs3sGWVXe@MaN)HrCxRCj;r%O&5j1oZzomc!sX6;3ueh!pz$qO=%H2V;L)Vz@XZ@k zw{i7h>12rDcjZQT=e+}e?bToY)BpN^O=R2DnHc(`O9CFyLgX**cp5M-C>nhNGoBPL z1q=N(#fj7W&N9n^h`ExLI4mO#I7Eq*o@CEcphGjIOcXTmKZb~jjDWooxzK7dmEr2! z7+$c+ad+Is001BWNklLP)~ZTyn~!Uw+^# zTCRl;_BACJm9rfRzD~?wz+q#aRPjUW9gDQrxx{8um2Rjbx+DO z)GD?w3nmB-;EU-Ru3vDBKZ&MBa6HAmdRRER2a@vSt}u<#olUiS4lo|L@_{+MriZBN!Q(kp$5z79HFUkx-1ui>Q6x5X zxrb*yLweN=8KIY=mHz%_Z#%!yY^};|Quu)%l~Siis$O+Lgyx~nkgwSn>lsw71?n|+ zuUao}fe_4pU)qvucR)QDE$%lrzkBobzxtcMg+YcXlb}PWOO)V=xki$|l+sD1ggpNn z(+ioBXgV>|bhefu8nu&>tvT@}O@~Ap&wzB>Vf@i};uvSR$mckRsu&`X06{}0 zn%K5Y+;b#2poZ*L+B@d~HdH~r=Agho%o|iyMNP_8Fmt3eF)^0~Fo|ODYoeW1_lQj6 z4G0}CLl72eHzsQhEpBioXJw;_lOc!MLW3G3^R zDpK_Ygdn$zts^swpcoqvAr9%GFy~aEBq)GKwu~|71Tgn~n%T5ZK6>wi_uuwOA!yEt z%}|ptYcK&r6mM&%6}4k1J)Q8X=ez=&FX%M>F?jtfF<4fDJRG*Xt;9KQ6-e7aR~~+! z5^+FjY5mO!iIYa9V&s=y8Pt>~? zvI++v{${zZK90NIP!pvp^ukuziv5|*#sNSGbx9v<5davbh^G8^vO*VJMS&jDZr|Fl zYJE|Av8%xz#f9l<#mBp>@u&;yZ=L%#LFS#e-~7Q3|MctM{8n?w@l@v#671(sPswje zF-aDk!8yxGo1%8xh9EhF=f|Q|EId#Eoj_v0Mld2uUK)jJZQDj-$_P7GI-sIeTBpu~ z1?~%@%{jMildyaseA^`T8o?Q%3X2-Nb4H#o|C2TQG*oiSF|NrizQ^wpjq~pmf#YAa zBN2Zd~=)CMl(;Q0|R_ z4C=Hr{3=3#W|+j%?_js;eAzoUH1+_)PAocZo&p2=zPsAf%*5vL=BrnKeVOKSy+9$j zwsxM5nE9%JLEl;)ZosC)uR+ANG#xX0`o`<1K_chw{_3BXha{nAD)jr~k5NTJ5Pl_2 zx0h!95O6T0{*S=j$)bvy$LPiw+u;xrG05sJmp+n3wBFa#NJGITEfSC`sk)L=sEDVV zD4Mpu{k|4kYXVPp2KXR6>l5F(OuvZPQjrg9#kN>DO0HOK^vmxboDF*NBKq}o}XHk|Bn(K zv<~uFQt2kzBFR*&N<6z%vIsGPG{u+5S{Q~m;N@}Gsn@J$H~urHNKryt}77Y$>E8`Mo9-cG^%jLmFUxRSDtsF z_4uK=X)2DLh3r+mOikmxXB|BM4C{vg5Q*a3Gk07E-azts*7T)UiNJJ;Z8Px*tFD|t z`h1V}eR^Gc{?Gcj_AeiMK}5d%^7G%l^~PWPa{#2DcaU_md&`tOYv>ARVse*BS!M675%-u|N+akZHYjIUmi>$#F$dS^o#3-k_1Mo8aeG#?V1S~KkP9hlq$wn>ObcUwrn)YrndD?{in=d5U=$n|HpZnqo%?aFU`@#w0XSom=bfcV5js zO6lT~Kse}*!{HzzLnRIBX*LV7TT1S@mhhZ$zp8^6;F4^T1-E_uXlBkxr#V_9#OFKjz+TPO6?=7wV`WHX_pa1;7 z{o7)*sveRol7v@P1O~4^uBju7UjpcOE`pOcf>x;3Jtad;a*9I98c2Q4P<_PiWc>{! zlU`C_cojMtBT2-SOgSY@1>>Nc?`AljsA_mmC|RzX8gL{cbF-6Ts@ z*l0mj&1@Px79iD8#$Bh>igVKAEg4V@0KTA!^N=?L{MhG?h#bX)&E13DZ+`uYf1Ue& zzI*>&E|M1;o^_q1{k|GOo}-(w{*l8z96ZsB+Lx4UiyF1E_JKV$3NUxtn$ z@IKDok$WEf@B1&m^@}e)f8)2m`J4avpOZZV!wdd2asv_MM+%rRMiTLqr7Xok3CSQb z?@FB^7_cRMB$CargJcqMg$fOHUi0!sG%rP<+GORqQL%>W95`8}OGsp!LwjK!ykt{vx5dOMybr1Cb|BUY>K#d8~~@L4`}))ma*n3)82iJu&@a zd;pLPb;zZ5IWK;h)7&>$maCJsDqbw)%YdvR{Cvz?`9zdG92lW*%cocw)T z{9oO7;gu^Vq|C&w?WRk)dtr7dAx5O7o?CnRP|p&n6rm7f27xiQn%?`nb#l-{-pX(5 z7^v#oZ@ux|@BQG9|M+`C#U|)E;z^z}=%KG$ZphlK8lqv@k(wn9Sxy}$RcG5pE^Gk= zgNsC8H4d7G(+gF0V^DvhxkX~WyugA}*O3207937=-A5G62ntxH8CJ%ha-dX82lmE< zsj{krz&U8lZJu@s956=kV?yH;n*}WThg8q8-hzQ}sZ$Z3W-OGX|63rrE9g28tlgBW zNbO)MfDI7&qi=lcTi^Wl=b!!I*)yH<=&Z{au{Vag+lpjE%2u*t29$YKKiIZBW%eI(@i`xbndH7LGsCg-y6kY#4V18-I9M zO?AdchKv)27#sYo&v!N7_CwPUW=^%+5`^A09kKb*_T!1B{CZeZG*)5)4!1GIhb}!~ z$Nkr<_EU|ZcuC`w*9>rBw&!51@)lonr5mueS<*Z}cX#ktKmXT%{9pgiOE10bib1Uk zc120GsBaMw5@%wW7*KVcRKIj!XQ43l*WNPypE}L8^L)nN5mqL!W`^T@f~Whm-#^(7I#g}! z`%#h#lbsfBMdd*jb^6VBF*TZR8i?3*7X!>0_c@PrF1YV=sLVN4W#4xI`+j`(^vl;S zO!e}77tRO@P{d*Ip3-5Ioucpi<&<4d?w0FRDj@felTZAYVDNsb^w!s3+MnbE^^4me zfyhVUoC}w`c1X-+0FzCs>cr9(Qh>ayAq1`3C%t3PZfhGg1>DXerL#t#F4y%HJ50I*M9{Qm+`Dh~ zI0Pa2aY~Z?Lbf5UoXiM{( z!4oL$93V2Mh=ixBh7)Gh;LQR|oUHJ>ai+8SLxOX#Y%@+s0f@Hc01=oBn9c#%5ufj0 z$rC$_ZQJJr1+pk@(JWp@@69Gjwzq2ZJn~y3E+LGtkoF(~GaEzZobZI&z})x!c=PJ7 zf94FB!!1EKe`p_%Pby9YHdSfQ{kvR!$F<%CCXL@&$Z)0aDJ?yse`pPhNa?y85l@YN zo;-+U;8h_PN9AlQ*)_OPdOWOlqT3 zqNA05`@+`zAd*~07tPc6(3EhC`G!~Vzb>TLZ>O(%=<4UGFs?2|C@$kqX#a~y#SmZI zLcdhXTDlYqs2duqySx3{PL-}(Bf!lkAAj)n+i(4cAOGdhdSPy5M>1YEjLOEYktj7< zQY5MlBb|&0IcoB5ik0vr&E;|`Qt7q2I?&BaF$)Is+f)@^v)4+0D?IqQ!VHt^FUKk= z#XO%!{SEZNm#0?3kl614NI!lb-rZMVbDz_FvR6N)_m` z;)J#CJi_BlvEOoIAa@W7Y@#{w3O_oCeM9F{J=_cxv#&if)m>l45r=&@7|d*Jig+HqA`#|9sBYeJ~o;CI|L&v}ta(0kUK9Aj*H5YeF+8xdrk?+!p8=*2nN z)Z81YV;QW7#A3yHO69<%-j4mfDt$6<=je4dFK#usIkazkobbU*nrs41ouu&d>K5|L zuPzISYoC%Awi;#^U2%}iaC6+f(QRyp!xsFSGkb7t1Qw!y2M4&9G4$8w?I*w7{>b{| zvYe+U=K3pnN|CY0SRWdTIc;2)9k6uux4-$-x4!kQ?|kRGAp;?-bWZyXHq1Qo%&miE zk4j{eAr$peAt#Jb^n`n=VK-Cym`qerK!HTO)}kQ|=Im0LTat8$3Itxg!3cO&gs$8< zEii$oZd#qAd`exrX&S_+V-+=6pa#m={tCiU-G#CG%A4lb0t!B0fyoM!W#w}1Qb zNAI6+>=$@-RH5zUr595DTc@(8k3Bs;esR3FA|g%zpa1vEFMo})XM!6Y;>Bn(=XGZNkDezdqo~te3EbF2dv$3%L=a&W z*=cXeAgWLu67o~9&)lEtfY~kTBDU|_wxx#66QKZ5U4q$nGXoCWRsvic(?&z!s#OSU zNQkJb{r#A^x1P&_A|iku4&fW($HoJFT=>x8LQk3v$`6pe5=gij(Z5s*jF(_6A(w>6 z7h)Y%M8(8|=Z1LdTGdlR0C5kKA^OsjgUC4SPrrfr4Dyxe{Bk?oynNL0?C|oCr!S3N zM0OS#ETsv^(j|19BC=15>}WKgMo*IGlIi9tC-d`P=Eom>@Vhr&%gw<4E&vr+3x!H@ zqvTA2KAq2hsbjLDDkZRYBA>{pdYum`JTy8y{4XZZ4`1LhR8GXAA@VLg&eqZ&;)#wO zph;>Lesp=$MF*2DtQp{#z~SCW@}6kI_|~dl~mio_jfOAtN2PscQZlgUER9% zQ?y)5Dl$eIK{E@-!#%o{|8;<0tz5)sZ|!Eob-hQ|pp_Im7FqpqaHquVW}05#Rh#ni z4z7zA=yKnWzx?^X{`a5!)3$A7s3c;d4%LNOivYlEj19aGYfPRGSt&XpQmBLxPE}y8 zHX!emkoH(l0K*f6CL!@>d~Y)wiQS4@)3ZER|NF=aYs-0s+FP{`RWMISJfu8asJs) z6UVD9CTzi#FhkAi7>wsrN;96u+iV)P!%&r{Hg=Ui*wIW5FPpqPO`h)d^4Rw$dIV%z z96U;V7Hz4d4Ny=7nP z$3fG4H22+q-42@%ecLk4bdpFO2h>6ckLp4}p5yTLr6&A|x$+@IQLhrYR>j4mu3~?& zk2C{aTJM+|qD-V0k8@#$kg}|)sA;r*wHHRWeq~pfJV=CD_oPw5`(B`;ssq|qHmtBB zQHT)eN}30HCux%5|9J*+FPpxzld2=~T0<2tNu&w9m496)|J{G#ZGYm{ z?=HIvSc)=f#UuJ9>!{cxbYVDwEU(W$`@?Im{_1c4%ipP3WPb^hO-OrQ+s$jKgSFQw z3KVvuIWPqml`N#7NwO8K=&J~Gr4VG90csnoJ$QJ7S47odgQa1+1uc!t&M|BeX93+qM?#`CDGO(4hMaMw z?m0y$t{=sUnW~5p9CyX(p+5~O@_#ylS7 zAOjFHE#pui1PtcjmQpwo9czT;FZ_J^k{_U;W~zbKkQb z!uf{2Yo}j#ooxF^G8&*k0-=|$hu>Z5F!W}gn^R>QS~x4yGBni8xAApps;`}K$pxW3 zK6$ZjTk?m&y;F4>uDnqH^*m-deKborwCm&V>(o1+lbOo`wWq1_)+{1wXp$=adp<6rH}q^*-$%wx$1D%wB6F5 ztAJR4C^|)dg!a12ao7j%zw`BPeB;ml{4d53(Sao{kS|~vf%M}=oz{}fLJARbf~*Xn z)LM}C3loT#U?XqYR1KJBEPI=r)mK$LwyTmyzza$k_%4LqjEPN?a;XT!nAOuPAb5#*fF z=dN&y@I*;x&lWu&(Hs_{usGuba(JR%ep+=X_PLuKb?9OHrs~+`$y0mw<;{(Gr6dz^ z)?R9(lJfIkgQte6lNN$9h`1?I0S3cyKhAw_o-k-moAY?Q`OPao+xKVNwouI&F6Zt1 zY$)IRqL||YSKCI}xxz5)Q|O=@Rai#SuIq_WJTWNF<|-@`(EmEK!`=C2jRe0C$!a8N zJ~CX}VVvI{xrZWmL5QTIO8n8Q`XYi=^DR7$aw!u$Ym53)j`9S0T+wK*MLD0w9$EcZ@l*E z*S_{g-~HYXhAX+S_;*s(smuxzWpoNwhk`47XB_zZ=N_FlCxW>;%cFORhAOQ5vbHhc z>Aq4-16e_dv?0tHM8#|C2%C^}@)FPL1ePgqHqL7A5uZjChs0pjeL&R{kVbHxiLa_*#zLj}Te9XZ(Ncz;)7cvC9M?9Nu*)x9pBWy$Lz$F@b;CSu_7ciGBmZhsBwsv*Aqg}cuk=m$ z&<0%jUv#5d>CavT0r~<+)#A7knx$HJO~%$hM6s%edbiwyv!4y>U4xSR>9a%PWbNdc zSAO}^zyHZUee+x2(MTVcY}w`Nob6v2s`H{ETCPui769imeI&2qb_8LQm)N)q9E*SH84jmt9L(w z3w2XPy2-R4fWu+voHzSd`q|B~kJ(j;dldfBX6?zyIVT9S?2hOAmEoHIU@Ar_ql9Kj5G$|3Dhs>){tFU?$Ki zG~174b~SFdFc!+=-0$kOTJ-58RCE=({9s)=W-401KC6g~LwZ~Lo+U20xYg`HlCW*l z>xkdNlSl3`0P=*C-zIfMHtnI_l}sgRLupCTat1CMV-gk-88Qw}M)WAQ;&RpxluVb# zuiXqF1ne5_W>&=|O$L!JU76}=kKH@=)8#vR8$_1O;dk72OUp6uL$okhJl(X(mt1D{ zi=Y0VfB2vO*Vq2&>tunAatAY@T};A~7xfKd&r)tt1?ZYjL9rmX`t-SWx&+EG)C~JH zGaL@CT=aT@gBaGG`4Nn8gn`XT9#BTU0kpyxAAP`l{5)o-x6LAaTsiUdWFja$*Wd@t{(QkvPJK@<$#x^v|l+P)LZFneT zHs!J@L~f2dm~m7D4mtOI_W}{5@(wmL>GaQdM)HHgsCRH8j1AJd2 zs+;N<0tCWfMPA9mDK#(mwo}~)o`E^#A*L3L_cHF`6L6pXZ;_IeB%@lmSB-HwF6SwxN^vwCsI`!l(cdtk5TKV2*xr22PmPVd^_4MaI{r~>qfBci^ zlQE(iVB8nHBs6nlP)RC5|H|~yM}RUPYJMABL@X3h5y!J_qPiV-n_j8`tlhBboZ%Fc zLjxkQw4cb3M=9139ft*JjA1;t6rse-wlOpklg8-i#u6F8eEN?2JRH&q6%0EQ=eg2~#uZce!U9 zDZu5}FvUGceRi0zA?MAgFdjou_O~N?zllS_sC{xgb)thtR5) z2-_)+2%>thr|?Hc?>Z;gcXPbr=?he3&dB*PrzcH|x!7@p5!qYFBBLq~ZhMi)WeZ2y zrrYqUwXmgJw*?wEsocIfqyu0GlTUTxk_~^WfU^Rf#|dXE;=bllg8!34b?^Omb;6%d z-kak>|9SN;PQLYTpZ@-rKl|z5{r8`2+aUy)Mg=6dBsDxvFNG1`sZ5Jhn7;XP?~2E0 z2Se<7nK`FxE)d1uB4;L*U@9uYnnwb-Y0z1qt2N=dMOok>XuU8eXOFM*&s~qmWR+4$ z&P3_|Ih{9zmqg?N*r&lT#&~wKQv!)u@*1?R^HOJ75 z(VRA2xac~E~!{zQsDrNM%g}q;QUA@A$w$b)KRW+?s5AMo!`cJq1`pYF3 zx~VUJX8BO+zv2LY`sv5N_}Rbwx4-|%*bXVTAq{*%a2@%&)Ft6KxsX*blscG~s2Cs< zu8<7pQ166_!b#`cw&AHh1!7_fg43`ax+;L;nkwk0vEVN(h>@~a=x{Q5S!A4nD|q8c zLr-1`Kn$3<-H5sA* z-S$NBj+NVWEV49{J2uRRLS?Q`Y`DDm$DwBO$%^DAk>@(xJ_XRBHtoH4fA_mLUmx44 z%kdRg?p!ddY>tq6xS_*URmbBokhC5A*=^g%Dn~q#;4$paNZR)zF6|_^c}n`L6ssStfy=gChOAein$ujyR~D; z@&%xA5b|V*TE-}n^NqPlKZnCXAylWh>fbcNp9$&g{r8T)aTA62@Pqg;qn(HQ9s-J8 zT<+@}wyY4j&3Bei1ld>O5db7JahMq2AYN^sfA-10{PGun`*(jo9S)+wk>`aGV1jn# zYN&l_EYW58%1ms5CNReb0Mt^%ctS~{Kx_5X+lc@wrIu1sQYSUDs0ix$BUAXQ@h~p$qUGp$J_TAm{v zN|(2hio40xMDY8`cHgvD(*Xh<=UKLOF2!qJZnpq4`5C6BP2PFE*sMNLGE0Hu?A;0u z|C43O06Z>iP+K%R2q&kNY5;QqcJan}D5E|Y7-?_!JKuEpHf{>Sp)Sv4d18s;Nj??i zmXmBhh(?2L&i2>mg4x^pn3RVwve2^IJ3`k`vHOBU$zuXO|LoIW{_lVKyPy5T;cx|| z%W6y%)qvG$sFqPVktQA~r8m(_SpxYj!j{0(Vi!&FtE|E9WSM1h!aS>XV(*6Xr!8nv zy^tbI8#f|5=bDsSxU2p_!ulBi=bR;lG_w>pn3-)XiTN?5kL(r%082X2$&|giWx6Ui z4h>m4&$?m?mftf>L@Xt9lx7`>9PEK=_ z{GA83Y#gJVb#WQp2s`c2;aH?izgwH?w^q+t6^Z)A~{-49uH2^}$1ry|wU}+cCONzre zX6fTeDj<_yWOvMPex{aBsPTu)?h2x5N~VM;3nZJE@CePCrj%1sx9GL+q|pkLfXW&a zo^;Sk7BW*UF`Cr0b2F6n+5%aP>~hYTB&A{UU{YlQM07YDINYv<`4nYu{P-I+S1k>| z;gF-}Kxzz%Av7gA&IPp+(bZw1#wvvM*tu)sv5Mnn7!GQu))sCWqO695v=C8Xg;K(= z)>@DA4Dd7^97z&2K3z-s?Qj0|^Uprn#LcY-?$w+b$%SqaXaMAtUU}saz$wvW5_Td_ zL##imNmKrfckKO-AICBL~eEV0CiC|fGql$BZzr3vd@&$NyZ}k0iI@IP)-ABC$jn!PT9;=xlAxrrAGzu4flomca9V z#9w_rsjXliv5|*el6e07tAGB*&;RD{{@W|BzN&u}USI>O$qRZ#EP;@u@)4;<;_4rW zT2&o*Wgp?GL|Qk?EO3pEvsqD~#Z?KY%C=NfRAMb^iJ5?zn4s1BbV6!Pv?MjmT9H7u zK@E|nut7sQon~1E7G=tbfs}H}SseGUG`J!n$OU=xiUE4HfLvsCPAT2WcR45KdUG=y zM+8x=k|ThqmcqB6c?)Nf0d||2<_2ek)4`Glk(1Z)@P%ee@nV|x@$dio?5i(T>`I!a#xlZ0@mNjQ^Q={{<&TLdr3os?FVXgH zZm`itVL

h!B7%ff8*c*@BNbh~>P(5=0zkC3g4z(lND{l>TQI3EF|B*Mz*kjn5W zktA!dteY+>Rl^9aJ*F>h_Rb8CkZSyl#+glQD(5As{?d=lQlT1z0nO8>KrQpJrDTy9 z>y$E0nL4HIFPp} zDTKxfC6qB~p+2RdBEQIfD1QxAlI7r#nJ<`?K>Ou%&tQ@WNJ&_YQeQF-tOen^3VAlN zb5<356CqQo%sFvp;+kf=lK^`qrId1-=b8wKCJ!dk^DXqha4qH76foZ-vW+5_5qz;~ zmC#caoh>!Kz6I9%g)$9I;a#hX1L6g}Jm@!l@EGh}#UCO>I$r)_?&+s+4y=H<)IBjOei=_(q90fY+nEdMYWi}7P2ymf0a>hfg zAAM}IyW{Qgm%sS=PyhDszxgL`HVd!Hle!8@6D8P^h@@no)X0PQ2~|ZQ zNx6E672R6yKizl_6K%fuQPXc?xGuaYu^Tgu$j8xA`d1AdpnGC1A!}E9aaJ zQ&cZfitk@l+7F3L+1w*>nEPEdSOoxNpF1?5IB)VaGD7I>pK*hhY>G+FG81Vmf z@&w=M#2F`Wa&CRx73uHr-a;r;OK;$g!IijqAeQ5|AY}gsJJ4cr2umry`sF|U=*K_( z-Vc6g@aX1})!Aewu9cFdD1gBQbqQ zG$GQYHEmADNq|xsjI-lPOC~4W>>1U z7QLN+1=5Hyoa~hf=aB{ z3hhdJB_Zp=QuHBxSknWglzp>ON+Nahoe0P2X%sO6j8bML<~kNcP2a`9q zfe}4^okeB`{+(lEm%BK}`y5y82lf4Xul(EJ{Oj}Q&;RnT{+iUJtX?ZMoe1gBny7mA z#AyU|Wyy(VapH;1LV1trbH*YQNdP1o+p5et+_GRxfu^4cum~L@stj^-D|O^af=Pr0 z%GD?f#%q+t_%g`r6e5ny0E#-mVgd_RMCVGH#mWLL?HYm1Mge9bwH52Rt)*7xY05bf zGfENNRP>ulj8xE!P->T{Lq2TULrKhit9I zOms2ju`B=UBcFV;P0iR9c2+7s<%Dd5HTkFOteGOtAI{Z*4Jn#`@#gkc5w8H8KzQx( ztB%*^w)NoFx?0M~LseKaZvwd}`ot@{0%Q=1PyHsjNfU!kGX$#@B=hdKZ zqONqsCy^rOfP|{TM$pgS^0?GZ+NwaMGH4Kb7U}7ngc~H|H*?aQ)qqaq@9I} zmgqM$^w_rra)9H747-xRfVgw!Qku;d42CcyC=r2_ClsCFFlBepu%_a4mdEC`WnT~i z-2Nn8&U3M-B_g8ZJm;KhDWz~u2?X`&GRwg~9&dj8@BjMMS6`+}$aC*@!ok=CXqV$_ z(d(0wWqa{+F-?>F`pq|9H;1cIXS>ozs0reEytn#ED$tQpFFh40>Q}5@Lq#nq8A&Op z?Ro{v#+dSSm?oL&G-W{Yd1~SaDX3CPou;YPY8>iWPggB^B|X)wmUp6qCPrC`l`HTm z!n1E=G0&pJosk)!#l^6xl9*xBvJV4P>wJ5ZKbe5NjgUl%EGgSWN<*}E`GqrS)2<6uFfQoTV1CBJKj29X-ACN8!wUs5mj-V2{Xo?za>lG!? zRBD16R9$~c$*j=EM2c1HBP6NdH{~SvsVV4%4CY#h=*y>{{q{G%J|2(4Wo3oD&W6z0 z77&P~yl+y4*{cVz@SeP>WoTBJ%<7L=k_1MAXM`c;h-#B1``;9RaVNqWDDZV><|+}e zmadcAWm5rz8AvI+P&GCL)U`#(cU#E0+JL}GSmBJ>K-DZOk8R>^4$Iu`NKIVysPjH_urg6 zasmVr(HZ}r$$i}pE^T!yoo++CTa)Uz3IL2}O^xGoT;&jQd581Wmcfp3h?lzy^=M`+ zg^J^>U%q_tPyh3O{P-t-^PTT~zpVp%qQK^}GRC71y}Y?Cl^pDRx69PSgo{# z=hqO`g;*`6g~6pxIhz{dYGq@DaH`50iUPkO&tT?K`8XF*`zTSn0@qDmlgn6+QzA%Dj04rV>IPwEX2Za_N0p#Hp& zMGHN8bgd6o8^YeHSaf1|Xf#ps0X4nbcj4ih+pENYmXf+MlchEn<8eIsLUB*X!@0J4 zFgZ+>2)Me^+m?^6ABl=`D|b|DC9U9EcFfy(oyjZi*DghbJWEnI)~T#fGXt1mrX}E0 zQE-HlLGsYm)U3EU8@^~58a62{>wOHMTJ~B!TqF!OCAq;ex@ygWidqff$H}UmGY`1} z+0S(Vl>eFh3P6%W28KMyB2Z0E39Noif)i0CDq^OCavZr-w=lv9CAX^a(p8-cALqig=0w+rDd$uw z-`pMrl>_Z$WqhO}KQ!>f6)UsKw<=Jk7P6`b%q@__xVmbH1f-M?hXaY#5mnbpchKy# zq)8Q}x9S=g1Hd$;>%+mI@#HVY_`@Djvr_58CMyW6EG#8Wx+B!E))cBrsc20|z|HaY zKYsJ;r(b+=8Mk(~buO^}H%D}u)FoAlI&Wsm)= zE*)|$1Y@sUDk@jP6(yb+K+di7o-|MK!w%EfC@R4)1F*|Jtm{SK!j-EQX}NG=!Ot$b zglc|zTG}Qt6c53t4~5Wfy0W}crBKPaFmoSGdfIJm*^L0Ao7-E-l5=%9v{dz*&FCf( z2swJC2P1x%0cxqxwf+=4^#FjWnSwdIHrzPsLl?Gc?N7Y&=|V5-Ph)il)*oDZ#Gg4i zCfs=Dp62~Db<^S8cm4xwWCA^T@9n2weD*hg_xG>7@@lKV!+N<-G+e8iOLFJ$)mN@7 z^Udw?_Vx&(oapK>Nx>kAC{bz^RzWYOSI$Z6ymLcDs)fPnsUxbi`tvF((Gm}^RLk#D+$D0gv%xuHo(em8NhLt z%k>m9NfJxhKmPdRkADB#f1l^sceuwd!z)wZ!};1mFt>+ZLc5K>uXpSp%nnvWc&|8W zxNJ&SA%bP`o`i-njfNhaYkK-rWw7KXNR$p&*G}635FsJM5Ng*+Co8hfO(R#kqTCB= zbK801RV}k*1>(FUO4nBhQFpt-geM@cBML|^;DZ?_BEmqEktq=+x{^^|-rPu{M5U2i z)2vl%MWw75nDfCUiA_b*I4J<)+Q@RSk&h|RWMP07;5qHwA>CZ=z8Y<7Xx8)IOYg>~ z9K#wd7{cE;+Sxdtl?knEaR<=-4y|;d1{>k5b@B4q+ zpf$?NA)F*>ig$kX(RHHR+heKBrSOY#`{L&4!tB*yIvg_0>}h;KXa_?~qAJB3!DW_6 zjlz6$d#r_7tLPCkXQC-5$)-KmLX}dYQhA?IG4jR|H-&^8z;(P7FG2@-4t?74cH(Pc!R++<>uvShNiq!|s>z*SbD|ylG z7VA1(ZbWFI3jy*~P4ygkH;oWPtVK2&b_}h@+4vWa=cNAIUCn@L(GAN%w%%_)xjVpT z9z5H+O}zuR+9@Hfg3$M8aS%SoYH0*6?i(}z=HGtx$;Ti5_;_ke9{>O#07*naRKNb+ z)%A5?=$t~3STzli!H=#Fhr@Jxoab5fpfZ;Nq(m>7Z;x|MDdm)t9aK+0W-(eM#r#w? zlIlFnaI>M`dDBeXH#bLSPD;h-_E?sa^5ZI3>4ONTl9}=%zWT97I`c zo2{&F!`{8dje&Mb^+;`N3`n6~04=Oq8I6&gI|0-T4sJm((!sUu+A4IX;IDim2rZ$c z+9@-$B-z;qYa74Q@#&|Z{QQ6Xzd!lu&%XVg?|`ggpFg0f zU%XBpPl@vNp&a;lERxQO<&Mr=Dq*(3Xo}gBG|L1zL%GDR%p? zSNp^S;YqG5k%X=X8P)?V%_JuO)EaO@`K0FGWhAB~CL*r0oB-x3;i)W%@ENrfE1V`! znBA3-Q#wqOsdtfrh9|+bXs)|(ZQV>nejA3!m>2NsMo|r79 zH-q-1*6y@Ux41Oc*z6?cuO8hMGF_@bT=v2B!a^2F@jEN%PV@JH}|*oBp3+0 zG|%&|e)&(|`R@0B^yB|3ieS}SIZn{Yq#3RGFlD4P9SRq&rLg3>tnTAuP41F&68qsH zCu%gy0!vu35`zN|)9D(cyS|!oPPezSM^Z^;-7+_Kzy7P*8o1OpKwApg}g49bw0m}^QP=*4qs5=Q8TNO^zCX_|6s0krHN>;U6H9KQmC>lA>+j=Bz{{4!|X zdJ|uMtu+zlLl$3@hS=091A_6{XP>b2j{g_F3`GCy?|cXTQ!Q6_-?$n1tW*TrsRKIg=4*+lQ-CZZ|l3&PG}CHL zK79YvPe1D0 zxH>~8IQ@*3?;Aa0S=o*EPW~LWFTizPjyvtg?A}ca3wOLmI)NDhl%h7X0cjtt>wPk= zBm8`vfAufFeDdVUkAL#hS06t%5n3sNd)JII66qBp-5Umo>DpAfd9KHK=E_%xY04QE zL{}@b)xu?^!hT zH<9L^<|9G~x^)}0xu2xK0I7zM(5$vQm$C%~u_q`{kDx7ubY1NR{oW1BS?`uyrzB^r z7D>#dQajre`4Op=3u3Wre?00ItEI!sppl~QhwGnliR2TcYt^P$cUAO^p@IZBWx zg{$T8ves=r9R3I3v8OOa3v9ujLTkKkk&M<{0nYH?7~aHSAByc3e9n2wDOp)y`D;qV zfkK#U(sn~JvTC%qD4UXVTIjjBx6IE$UZw{c0?Ik1d_|>J8U3?QKYi=>|MB9*^R^_) zwu4}Fg2vR)Qo~Q|NTUfmw&*TFhiJIi_oCykhrx>2OPa%k84_w!Yn@90)MhOZc*S`( z++cPe?U{BSYDb04EcIwb9D$C~WEq1rEth+HcG|7!j=CdO*^g`0(pqw zL(n1Q)nfDVY`m-_v|X;z{1^Zmq1+*knFrH&{T`vp1hG{(hdNOCTO_lViE(%W<~!9f zPhT78s3{t{mF{T^lE#Lh zAa4eMV#VJL29@=gIV;+7DSUGyRY21;CBFwu0drWROBxe0M-Ke(s5OEJz%*qdn&)CW zX+~Q=`5+>>s~(Hlk&0)^{ud&L{6iEZMIySolFVgj;vY#0GgC^8v3K^W@@Z3^aB^7+6Ih6N%z0M7L#<`j+V zwH8Dq27rpf9*odBwr`AAD6{Y@G1QC&_r0KZt{Fd3`p$lDL?)(HWC5){DI#yB{ygs( z&XI~j&Ji*Pbj)LSiD)evyHS~>{09K$N|N}Lk`HuN8tGu{rlsej*}rM`q+N_=q-+_> z4Dkj#W7Z2fu5V1!!7L?8UN%^QP?%EG^jUc>b21InD}F5ASp_f_Q(JlyHz3e5;urmY zZV3jMahNhSM8N>ZGHR&h!9^loo!-SRfMA71%PcV10sA~oM2;aqnv!AUP>-DFK}ac$ zbk!}It->j)>{y)@b3nSix&7B){ql|X-ucVF`s+8o@l8!DCM>El^(@~gs#^!mW==}% z0LmFTALRApTyE7HSb}*!7k+73 z(^^W+MDu+7-CJ*c_`&;MhqAQ?VOE=~LDHM+AE9@_EgQ<{c$>><@V*C;>@_;B0~qvQ z0W&AdifM;C)W}sKuM#KTYikXxk!Tj}ho$y~ev9Pl_2M*L8tBv)#Xu`LO{qe#s8`u9 zwWbLLYl@2EDW!N-{Cp!9JBpe##NVl@P`3@1CS_+zRv3g!u^iVUO~X4%sU#OwiJ;DT z#N&Ih4<+z`Bq3_V_LB0w!vEyZLZ$E__;nJ16Zs$}Uw(!9UzPSM6*|F~HqHeYILQBv zftn|0h+g<3o&?fkH^x>(_pMWunsI(7&1(9T{Hn7Ivd>9>Uw-k$|NdV;|JJv^{pWx2 zqt{-0-KknNorO%(N=fr=I-yf3fh~8Joq$AiHDw}VMya*b%0;y?i6wdE`cNvDQjfFN zOn2~srp76rmR5V+C*qQ5)1qy@VseopYFY}8d7dkgX8N2wn#Cru^PRsNR7 zez&p)$dy@=Wr@?u7*In5S&`nZov{hbgR zm$Xcz#`2lbz>O2YA$R`?YGqNLUW;81+{MBP03Kayu9l)1OzWT^B2Q&^hfS0ub#HJR zY(kI{2wA5@rlu2%yM1$&M4YKeMh)8h$!$ufK*!%2VtNmB3jU-_J^<92V$K5Cm{TMc zG?j2gsHEYfE}k^MAjiHh{lS+?4!6hIB?@DCxnDNnWFj{ziYnPUAzGv{ zes*6ZRAr}tAeGJTuD@0-tY|S2D)fontjPH-AAa!Uy?5WKwSZk?ke*e>i?*U>hVEsz z@IB)9{w||>;HNy`cD8IePAn9SC3}d(<~XW`S0AdKBb2hY6jGo|jLcOlj+BD9Vrdi{VO`c0hNvjx1T&y32-=(-Pntb0@YD91#wN6pa8O(Dl ziZoM|L$^_|!A1Bc&@*zV0l+Jw??c08tT@|?E_%1$*)nP8R^7T;ZT|NLjN1kScIYWGbkJ}yDHH_qJyfp zw*_W<$GLR9IaLvI2L|E8_uu>I{rA5Ar+@at|MF+AzWTT$JoZa93g8wC*1EdDQj-gO z%zgz!GTVxhq|qUIxsbS4fZRa{K)IcnPvuLm4&MwJ#>q&-O(_!{a?8;ad5Cr0meOwK zsT^ob3b9yIC<7~Mt_k^;;MgV3klUVFRlr!m#q8|hTILTwc>l?J?-mQ98*k$za-;>M zGzMvzHfs~E^r5z>y&!lRwdF-tn?0k)ya$+qYP5<9RJB}=6KqP9NJ;_eMkPbc-4SpI z5}D3N|Cb~5w}$qEt+K)O_$mtgQWjbtF=YUJkLdzG+tRg*T|UR`TS=h z*BYZBP_$=`Y#C|%MH8rZwx~Ho&2p$Kv%GX&^glP7V-f}Hf#>xg8jhi|7jXK*UCyfX zXM5u=y{0~_Vcz>s-g*DYyWjoZ_kZ}qKY#q%YYi-RtC2q&UQ1^F=e8bZ%GCG~wk2h| zN>6}XFqqoWP+rE3uLOsv#oYvH#OM+0TVyx?1ia;a5_S>+NgZ>fv<_V(t3_n&<5{*#e-rT;{2abm12jf>O4xLxG| z6H2VumWmpt`8LWjMoiAZMFc{sRy<22o}4+C1fbRyN8>DeRNB^wH`T|Lf2)p+yVyGc zBlRJq04C)@oFrtZING7vW|LezV1U_6{qeY1CDeo~A2s#1hplbD?=t|vT4}*BfGcqs2}V2%>Z0s{Lt?p76#gW${tT7?mg6lKm6dy2k$?5^V{F~;eYw_ zZ+_#O4keQnnhlKww!Vnznutck}gLDH+Ucq3-IkrFjLYzsWaXZ#JYEaVj>u`TC>iy`euJDR)~YkWIvSpGJDJdlHW#}*Kg}_i95m%s7Nw&?;BXi6j_H+7^>#>0 z-V?bxoi2{gs~_RANqd>spBrm>R6}of(VOkG5rB3LHQF9O{p90MKl%8z*WdWz5C81V zZ+|u}D zF`o~DgsFvu3^74kVr#SLx}bMclCG`}QYl)jv*EmL^}{;7oRdqnXgc0y7&Oeg=x;JX zDy4|7wlQ}9cOsBkr?vw%-Gvj#AQ4T2h@)rQ%mIkzor@hXV=iT$=TgdC=Ig8L!$FnK z9B#v0>cdq82vRnFGsN`BDTVUc8lrLskFEyd#w7?`Z|~`7B)*694sA_m6$#P@LibN- z&%XNd-+uishuObh%l1N*G_wy`pl>x}gX5}c@jGA$R2?oKyGM&Od>TSoFg&TIFSTRT-Zn?) zpf#AehQe3?B&A=LqFsWd8{sid7u`l!YQ-+QJ^2#oj=Q`fQ(PrGCo|!Bu7IXQu+&0h zT*-z`#F*M;n2~qo$yNWKsff*XYSSC)x0X`pGT+`F=Q5YM#J8>vSMk~NB%vt^@!O#$ z!AYG%X_sOaLDGjOuU9e-N6-QE3s-N>J%4`F^|+yn^II~%b{KaM!Q=7x_FKPu>-WF? z#y7wDgCG2tZ@u|u&Qmk8k*Yv;ru56k^hhhpIuC2pRPLt{Vyc~pq)(Pa2C6>Wu{XOY z05B1Wu#!`%21C={Nao=}tsw=1qVInGz9+HFT~OA;PO_J$MEqC91W2 z{`sdLefYuWpMBaiq=gkCC=U9;(XhwE_>1kV6TqgywHL6)_VC&XvBsg{cE{ouIi8l05BX` zq8zvnUT3<6iw0Ni+>u(D;I|aP^(gE~Za<8w^qXJ@SCjco~`)R^{iUzgn2Go zZ?=()7=m|j80o^4f=(k__P^1|{^Qpn!s15CQt(;!z9FRt!Wc|b9T(k#sT+a&XBt@6 zrI4!6Kl|*9&p*#OfA4!g`1W_c`^FpJkVq;KBUI!j4fW^_u5k-?TVYcWi9AuGr~(Xt z#bP5xscX1?-}p#Bg<31*I(cO>b)4;5-hwq~grkxayJ1IQwp@rru13gf1S<0^2VFXc z2RfPQ>C3O4e*E!AAAj^gDNR`fBonsGPGx5e(O&M24CTAaCx4Hae8N+G!`NJgCMXcd zN>C+vxax%ns-_~OsSCX#qG_6XDRU{`ax-@iDkY;WP-307&>R<6onE=0sNP+(^-+nM zFb|*^ep?z5V?0*p@eZTNKSB30ZBOTYUH}fQSz#P_{h5H81|6ar5>aclj4jhNDUltX zn=+&ZcKmm{sd`38Kq8Xjmz8TNr3J!WcwNtf`BZGPmZtwz$N@Bs6oo6-N=dTJsJV4= zGPQ5Bo7UUnLYW&0I5Qa}3(6rNTw~bVoGql&FSlPd;O}s%so`>@Oo7=9%xU$JfM5&e zhe7GQDMAY^e*N{=PlIo1xp_@+i_(_V$xY40 zq*i2MpcU0H%IK#mJ&mgU1p`4?Z!hqc1 zkOQMksMasPeER99pM3Puhx73kWBYrTb`Sb~7b@Li8VzAg9dp573RVE^o{xvqY07`* zVt4veGEVi->(e-Zxs64LDW>`p5m6ms$~$c8ULQyS3#Rc{+kkk|;}ZN#@km7v0;}S#|1s3#Xw|s`jz^FghXN z*#028aBq=Mfm!wz(4hyo!(Q!9q2ooLcWlhKy}kXz+i$)7_V2H*uD|o0?|$oBZ@%%3 zZ-_Zbc#WMpFx)`u-ncfoX3mq2tD8NELJBKQYsc!==H|?45t4FU(97JDDN`0u1=wW< zKaCdsg+$qX15&|BdX-fB1ol+2iBM|!{IkzL`Q+nIKl#|Ty$5NH-CTI)0mu7#T4N4? z%*DK+QWr@|TR&0r#qh2+xp2_T7Kp_uzWQKY%SX^rt=N6!{J&i$U1ItBbur*(qntHZL z5ygNC0@AWe5$~=ym;~D)2C0Le)0KdpB#_JzN_wM&|}Z-%Ds1dUvKRJ z3%YZcpdBNdyT!emJl#rCH*^=}-fhkWO^=rU=Te1-^{BmO!n>oAg#{xrBq27Fq&kj) z)VR<2b-C~-(t=)sUuIIVJ+?ANfcdh=_Exc(IkTq-Z_yhzsZpNpw!TDZ@%RQG=%2J& zE-hrVlsWjqJGbb$MlL!4iBh26+v+OoTa>b=dV%IPjll$GTC92S^2JNJeUVZoEL>nc zzyODLncEFuM|$)B?LE3=Vk`X2Z8xbQsbyB=UgWMZ?ME9?lZA8q`+AG))qd<(aT`5A zkdW?T$yvb|pVs)YG$zsgbonuG;}sC%r!!Lse+f@8ZeG6l;K{omJb4$u_4V~P|K!cb zk6(ZM+T+KMU&}drz_6$xWJli@oK@~7w7r0c)G%w3_25HmHHlW6hLxPK)t>c5tz4r9 zE}ul6eEIU``SWK_pFaKS%P&9u-y9>dx2t7XvQmJQ zr4tylQimb4FEiJ9E;B&LlK9s`T1JL;Rw2)OSpV4<9g95M+F%p4T?*y2RGG1dEvn(K z5Md8jKp?Z;R~veC4t!2&-rvl0HRk$QBd7}wr|>-L<9+}DAOJ~3K~(9_1^*ugI!F|e z7dfR054Ao|(De4^_QUs|08fOlz543o*Is}9)mLA8{P^*sM~|)_z2X$huRRdlG^+D8 zkBHxc3jY}MRQsnXZ$z5J&la_5f61&sbD3Yhc=`PK^XJc=J%9e}t1qA4+`OFUD!CIE z^;t}MXtF;!_ar;tZmKm)kpGNEDh^vBJe>ili3ERLpHsa|alK^$cd<3V*R8$FbS((l zo^&`A_p4V}{2ChpeX?{_8rsYNsT^F*Y11e#05e}fGA7*3`ay(5WDKTR5=$wNI)cfl z%HWjRZ_-s*Ta6fM_S@xA+yd1JlNSdGeyh=Q?4!BhXd4h6vg^(N$jq~qx|K5~yzuI9 zfCo3Nz3!)m9a-6~5iTxloq^sg-FjxF+i`J}Yc0X##{eg6+e!gA|64xU%q9p+wB4W7 zrqN1Z__z5lAV$`s(Ayj~~DC=#{JM>+9?5tE;Q4tLwwz z&=Tj07UxN1l;6S212to2u)gkOcMft&W~ciaI42RYI_2DX!FE}Yg-2@H zTek-+C9$1N_NlU2Cfh1m^7rWa=$2`40M~50SVp$g>w8<1LTfEpEJGZ3<-5k?>zZOo zmPFz#RGP)UUR@pZPP*DZncID*tx35k>l#Rt5d!olO?IQPK#P)tBF_13VSwDMidt*2 zWT2{L_at@FxytEs?tOVy3s}_xO8~B}t}Z{kc(a-3q8zfPi@T^j`f3QaX`&0p5tY5z zq_euS#Zu0I(0^d3fIIqF2dvobV;8?Xr|X?NZ^9kv4S^8K+r&mJ)`a=lv#*{%`^rXl zg$h@P!}X(A#5r*|96VAuX&t|$u`{ey;wx8erOfkuJRVD#Z*FdHZ*EE{&79t=SYZNf z@=X{pO0hBb2VnvyXMg9*Uq@>*YwCz@kjB@0V&PJYNW{gcn8Orm5j-Sl=79rIb6^L5 znyb!DM7T)Q&;HFMZtW+vF(AhET8i4{hwn`Vf}+dl_6Et4LnMK!+r24OR|!g=pHgPw zt|#zp_Ly=`$dEH7y=>B5mCTfzG^+~_T}F(E1|a82Z8>%O9$*L&#jB4WGjpv)iX&Fj zS^oO3!%2Y_-;lSD2N<-wEb^mLDEdR3EsYmH;keokyrGOP|ZQ_$P6dr((8LMe5&l64}Vr9>%bW+rB68uZPk?A+r} zQciaB)#5mYciSvFO?wc#0npqDmnS9$nryK(rQVvTBS9k@%S6!Z67s$>_>Q=p?Z8GS zWXZ0j>Sh(c@ygTP#5K_yfWYB|l3ZYiEIGJKnUC|$%?(|se-vieWaM2sQcs0l@LoIR z9U}@s64b(ehQkx6c?#L}A3?8Cq;D|pR0_jzP0?T@?=dCrU0V#ZjH|n^TU%gL_}k{h z4=b|Ccyoi&LgaBy=Ctq32&a7Fo~=`K8eerO7WRSL7p__~t-?-Qt<|Vl65>^>-eE{B z(%;cnxk3<{Z9w!7wsGQ{LFijMLLLCJw42+rO;c~Ii(_A=x66q?yNGvd)aae44jO3c zxuRJsoC*N9UGhxn-x&rI<#D}N`bjDJiY(LUJVm1 z9E=IcQuiU`3mR>TuVU{eP&HUL-;C0hrTwK^s`BUcgBrSJw!65Nr3C~+LK+a3H8Qdt zn;NM1Dkk`w+7dK6m4y>m=F4Ts7^nCDnsthxNgn;_tr_&WZo>(t@XXpgIvNnBy*}yX zmnX)UJvLOM!pZWk-kIVOfj9*@-j3Yp`{Dlu(T&t^4?M7N3U~e?i0Zsjj$=^6=o^n}EHCvNU=oS) zEIN^!hnqOW)&3UqpCwInuf?391C4WBKWe2`%sQ6)?bJ>)(4Da&vLn=`x`uZ)FjL8D z8@g5_=GdHsm5UP1#f*^R2;AIC^|;#Ywxk|qQ(MnBGR;z2>2jWJN-30xkdc8YrzvN> z`p8Hr#VWQ?|DO>pAAI;A2Y)euVJa8n;M;d&Zw6JO)nGa!gziI%Og|nViR3T{_>@Jp6vTY;6^gP ziJ3~RYdlzW;+_Co{EG3wsq0N>BE=R6a^jV5^mqxL! z4K<9Xr&~nso$mtwMw`ZQ%Fl2m6r;i%PM3_smz}wq&b)BfMie!~&@5|Iqtb4~H@1#b zN$WwNTM~;PT^sN8au#7d8WHpGMF))xWK~x5PbW-1R{!} zt)D9s`r|eYwv*3JwH5(N)y$p)q;E%)9s_YF08%4TPmP7@oQ}FhN!8WnCUU9zloB1% zm0|2gI7ZhW;657DZ~#PVe1V;X@8u#9bJWN*v*3uXX;CeQY2pcBuC?ZrBxTGvy<=v- z(4vcbiMr|3DEJHXdTI0zTzESO0wAPjx4)=a5>0ucNgZkf_y6q24(mAjg=d_b4te?6ZW;mLnob|u15R6pibcTW z>U4+qfm>9VnHAv{cxtNXsy=pCx*ec9MSihhiBX#TcN>73FdZccO9N`(sqF>JBtvkg z+6u6dk)DSfaASX`soURFduh36?NL>E&17kw$doKMnj4Q!9N4|Jvj?%6f;)tGNbc0P zMkLyRdPMEqShTRS~J9;nN->0LW8D;Qi@bhDUKXn^F#sJ5Kc^8fZu$baqG{+fyw(LS&u2YZHjO ze^=GDzcpV!0o1ImUFnal!AYFKp4N7Afx{wkDJ(g-bFOx^N%E=-683n-|aK<87_= zaCIf6I8&aS|6Lw7a_c*(r@gv?HMocS756gPh2`ke-sSXKj%?v9=*~t9Ei~NQMc*!S z|6Z&VwFl%0T0G&_y}YFNXaV}=z`moWH)7l++bFiFdnPClX8;m;VaO$Mf9J^4YL=)6 z7S%SJie}BgYY=D>QLqQ}yS1>^V#ikGC+0oDCCk>mW^~yx)5lg(eBr?uB~!lk?90yR zaN$lTt%-4W;DiQQC_JaP2`&A|084}wC-5{5n!ApfF>;l|7egc-z;gevg%qyCtr~sJ zYA7Zm$>ceR!=PSQ-2A28mbTe=)?WlvmCf=Bl37%}#Dq3x822i=M6{$Z7vsCW{ zw>Mh(G3c?>4=z&(HL9!`TZ|YP>vRXU>E9`5D|60vCBtXoWR?(#gw4+3J(0^ExUnHH z2lSIE$%Q(FHd3L8n5)jZ0eC$VuGJJ_H!>y7;XGc}U@;{~-hKv3nPrXhNtXG`t=ogs zztVzpp993MD=??5n(H*>CS_s!B$IMP!TD5GQ`#7vf;>Q0J6hE#;)cyzO@)*uTa3IC zB@uG$juOSG&@IzsrUJ&g{j(cHEU%TBb4uekgSt@FfYt+1KJ9pr`;ip#(dIJQX#O}_2cwL$PO^e%co^!%7v zAdb=7EAQKk_y;}7|HP^!wX}s@Ktcbs{rzM~*5Ks(*5r7Ic7A+zt9P5XE&7tmvY0laCSH|=S|sFRVVt?lm3xeaVNiYTFTOlk2?z>zKRmRHbHar><$| zr(E|=6swDE0TA;Fnv`;34|b9#9Z2eUfjmYOQM0j!4GDVI#f-7MO#31G|GAw%POJF% za1c9dB;!jdyU%sG3(*AWu-vn$FzwyRd8y1rQV%Gv-^9jCL#T@HQD(wtr7WviU}_6d z9_^Kgi0$J4?zp-WJ(v+s--=shwU6e&b4F;{$A;$OqH`@(gUdk9q|Xm4c8F#x2Q&@q zrqR*WJH3q$q-4eJH=41Qi&FQbNbLy+>7d(`=u*+ZT$82cmi``;q5&C9&bz_sPQNw!+bX)|@ zP{BRtLq3JeeRe;jQ$&TMsU|v>+)P6F+ueBg*fSC|NlQ#`x|A)wn>NfP$=SA&0iamC zS}C)|+07^7XIvitd(skH|g=ai4t(UyWkuyI(HHHeoaDxyPespc*Q zUhD0W*2G9DsV3ej&l|ZITbw+>jFzjDqbtRsFTFT{R zlY5b+l$>g!BUmFyAaQ##j-aiMW%61Reo9D^f!IunYq$>_ysnH&Wo5Qpgu=2-H zqB^N;5e&->4^5U)?K>sitzyZ$+c{i+~Y23DfmX zLD62u)?0!lqVnEID`9X|mthMRGDASEMHo-9F0Ec#^JWU7GPB<%?7;atnhI{B9>7yU zyARECM!Sa6-MHM_nt@Ay6&NbBJ8E_v1tJpZ->){RpF*Q6cZrNq;6AB z8I)a~0%8uqv)}{~-{XEqZ~y7RV-J4gDIfOS9BdPIR2hncq6DIOo<)*7e({wo?DeBZ z*Vo(rzo^uA4vRIwE<&%i77i&G6#rLclZ`FrMx_;?Nau#ZS_c&nHEuB;g<~Kb4LIU}^n@N5T*j7b(xnpC86@rB(YRhZ#W16y?A7B_Ot(wQ> zq1T5k$f$}$GUYra<@&mj6hbrahHf?!_d!JKt?c~1c_~G&rUv^sd;0Nd5pqhLltfzn z=dn(D0w{GSAS`h^cS`F;Ml7YOeVE3|Gm?;MAIa7cG58u*8)%} z<@WZt9AK-h>dbr3f4h<0;{04N9eEv&Gz3A*mEQM}1@1-<5eSP>A6ji}M%Om}qPWVM zJhM5)ePrh@%@s2H$-yJT@KANVbk)Sw=w|OvT>GXszy`hSJ~rW#wjoa0Gu>~^!dA^E zvDhH83bgE;#3_=LxTU+#z}d6;zkFdtAd4%>zW75u`zKZwnC$NMGDdZvOFsFmXrQye zI)1K5dQA%?R})2oA8sa3a5%)5q}2{DqNaw1k%K!}xms8p*)c?5nDpOaK*Em=F|kbwg}sJVkjjF?n<=C*$zasWH9jJ#S6B&$$7f8g{&q3rDTl& zjMFvJg2E}K{PxfbI6tlvB-(b0OXrN{gZQ1*`U-} zp1kFwJRk`(Q^;x7mfu;U4CJ@F46v)K1Avs$VUnzy>WB(qDS0Wj+D}h}G?%L8Mq|LW zB~l(Z_IKDBjvtsk$kM^q+t8GA$~h6Jxi&8~v%IV!oiml-XEk4``UjiqZr8M^dsxyD zqE@$K?>K^NlDoY}fF(BFlIOcW#_NQ#t7}5^>NF$Hac!nUW;?H!fM5%`YgB0g-cn>T zO0^J}lozTi_UQ6T?W2kTiL^MXJEOi6_e17V8+_X=b(pQmjFK0DB4$ zK+4n+Q9D@-jNd7cX0eFO>~-HunT@Pfmkq|PgQ^Dr0K9lz$O_&583oW-fM3EWwT^^% zwoc-G9v^@6_Kpp~ytG)Dyti@Rr5zSCq4%fe%*$+wWug=R?&iWdVi${{*$Si~ka_XX z-v2YUoX9OMO@G`3=7d=IF*~;gy7XL8d2U}e6UWf7{wS@%u-2qNSk8|gzb>^X4_7J^ zc)|3G1G51R4q4cNO-9*65%nSy{es3h*vZLrLF1(G-44jkkC6%7TdLQL61&H8`4z4a znv~hgPCE3dSGqCdW=|aj;~ajjd^w;s3`r>ed73i?x0-mQk7IpKNw&-gC=Uha4-CzI z#X|m7+~&%)XyW838g6#jHB(J>2)}P58C94=71TXVu~$At%k|)Tv=CXx_QXsKCgz+o zGqWX)-iE}~E*Dt`2#YUDtK!sVvMqXWXY`UPL?No@+>n5QX#%T$a|U4c9Rw2-1)@N7 z$?o0rKbQ9WR!_I>7gozqb6gk`{W__1S3?l(fR5#N5Snr|I&7__nje{oNej5-9VHa1 zY@LMEVE|xl1h;co$Q#xSuw$K(8Uqs1%Hh0|j-|(q%%-P!?sI%#mB(WsmA%=%x-rnd zX~gdyAdIZYIehBv8S;SSiDGvMdH$E2lh}`rv&L$Q&Rv1yQ4OKte9FH@je@Dc9#FxP z!mkD-FMvHqV970Q``d|vz45f`(h)==OenSXmEPR&RvLw6XjM)g(rYb9D15L;$Uo52mNkNh*Re5A!9hx(7_*exm zxJvbuC>Uxkb>h-L(0o(?XtM^S`fItA*|Uh3A%O`^`a+B<@u=2Od?7pJoyTa;Dd%8F z@E3D#*dHXN!5$5?_ya9f+g%)RUH1m9_r7vIT#Cdl*zeqE@mtWjYxO)?28-LEYyxET z&zZEluay5~UA~lvJ6nKtY!!cqG%AF`F*>)4jiwu&TBx@xQ*1vSTata41a~!2HCm<~ z@1(GFu~U5_$x^ym=W;Dmf3#h%M|A+EWbhJv(%hmEo*_ znOfnnOYh3Sr83Fd^S0O5O6ArY2CT>$PAuYP zo`u=OAMkUvao zUD+3{hN!{xb?9Mx+hW!ITed$^EBo#OK3vhEZo}^6il$})Vi&?(%A&=y=l64EHAzHR zol#J`BjXt~cb)PiLe2!edZ&;RMk2!4f0{%Gk{o8t!$)kPLl9g|-Bj}I=vfA$1W-zO znzF>}UU-v;vOQ3xqHdMa0+(8#D-2IBu;qgd1~$QlFt0OH?D$_WLN^|88PFxC-NQMY zy#lQ$^C=Er>V(~5u}%I|uoZL`Ki6UM2@I6{;Ql9%TT22E%HldrX;%l(xi*818)th7 zrEBLV*Vu1c!gwAV#&yK`?u}!AChO@hOzuq)04^9q_JFc-!k3bg@2#oHRFzJ_%Db3M z=0R%B)?`v=Z#i5Wxt>`A5nN2da5THb)Y_eKadfA}?p>HhATKM2 zyxaD`jrB^2S#+RWYa3!^FpWAof{n8)U(qJ&1oBR5% zshoXRCQ{0LygkZ@)078pwpynI2}N~&e*)Cvr$b6YF~Qu;l>RC@RYr;0Q*h>Q-mppZAKx|WaYI=jBv`Q=lNum=63)r zp@Io&LqRdtarbF-GOia14zZePQ>`1GJiwf{BJg*d={x`g(n^rY`lxObxHy!O-eTK;LfnKs{j)6|p|VAnf=h0`)O-T)^77fJruX;2l8&*S|{KLe~L%-8m;g$}78 zYT3&h3i(^xpg#!dUF-MchJq#(qrd zj;b}P<$|>-d1h=2wj;xw-Ar@a`83qa3Pm<4O!J>rAqe5QaOmy^g}uU!PNoWgDP^gi z5yVi9Bi%bp^8+q+fPoFwD0WhrJziA4N-3p8Dd#5PjdW#Ykt--2%#yRgCRVzxwb^>< zaseagrlpjo=^$T}dc%VrBW}u-IJ``IyF6iA>Gp5v(>|;V5mw@qB+<*oLt*@{<8kSX zVs#!;!~eRBrM}cO9UL=*o1VNqqD`oqT6^u>y2@RCCa`&52Sk~!1DKX)zm8HH(~eqw zO+S}I+Hlxv=L1!_ANa1MzG0HDecN^#-;b4cvMp@GG(Hdr{Jqu1v8D-$JzArQ3!Yyv zPm{^rNd(^(^r)dL>cevzZ%#>!D2(N*iAu^0J`u_UhFUoZ$(BSX9MH;W61RX7lNSu1 z%t)oZO;gq?7A`m#JT0GZZ{Q_T*I4Kyf`r%Sbsklzs!{O@CY*gpP0bYF8 z|9xo}N9!UCb{?x=-Y^w=^E`Us22mi;#T*FlbB9|tu zP3F1`RCp5jengBXNGtuG$SgW9KumX&0P~6xIJ*}wFsd^&*01F->owvLrV}#3ghSE1 z{ade#^aB$R&%d?Ci%oRuc*=@r<+8$0NLrcK9bbKp#1eh~|#fnjN-0in?^^KN~ z3?(Lwx%HrQVBke%X=u96#W$V2T)6)y@H8qru34j>$+@HKYhtLS+a7B#ZEP>Ea)E)x zR&-|*|7nEBHfSOGzCj#y%k!g$`BK;dr?9T3kHK*&R)*h4E>5m><_eRxaBJS5;O#K+ zivu|`lS3(v5CH}w`P>BRVi8CV&ki|%OL0B>mVR(7w+}JILp})osmxNDopVmL0+=R? zrcP2eS#$I-LrZ!!)k>(G6hj-b`8Ru&&Cg(Z?hzx2KEt|B@|J=7t?f3d7AoXPI3HVpYUjomM)9}^i6%< z2Cu0(M+rS8FjJDKk7PD@@9B)x>nnMCoXMh0MdBTlJ{ep~6+u}hxUF*8WaaZ~k6$UZ z&U2B>tCz)k4);p@zTyCFx6@+2o&|`jim572hTMsW`I2{Y$^RNzvg2_dVt1|ylnt!y za3*rth|r9$!_=-&x>kKd_D zEwgZA%=c=97Kuk7b+rn`ucdU7PfE6y525k6wAn-vmE(n(`D2}^LdJ6aa>K&n2Xnhw z>_hV&bC4YzKjMavE3J0P{lbQ=;}v!M%^OC<8yNcCDmPyl^R{N+hC26GU`L`96a?fpJ9&F!E_JaKlQ9X8(-Q&KgB8 zF$U+lIf0)Ur4+l(Nn9(Dvcti78CeMVH;5=vBFcH%JjJY0IqKogDXZ4CRZx%;9rAQI zOaPLW*^>*EBdf^pjB$eoBPUhjtyCbl-ZhFNzonGYGAkh_lf=0P{8GoZ@p|wjglTgM zGBTsxA{y3Fn7Q4L2c@;$iL^5yn#pFqGuwyATo6RNwW!s;)z-YfF@uX1RM}CF_!Jb~ zFh;-6et_@9cl_i79QRV>rl2M7?s=t=F(QIll?-wx7R94l%*fLy-C`e4-0cr9;@!2K z-;0OlJu4&oekqyIET+a4-CWT}(-2zq8G+w7|NgBv1O)J!B6+9NMJ|OB{7O*0y_K%? zqQ_n#6>Kr#$a#|UMMSmK%3QrR(uE#07{`EYVvP!jLp>C>04ec-|fz zfr(oB-D*ILy;@@)hrxH^FGI2gBqfnzSaNB4Y{dVsy6f7KBt^2(Zy74oRUs{W5C0Rl(xesb`_dNocAIP9H zVnCwDHUe`kwblyeLWMMZe(Cc2hg_9PlFc01TaS6Kio1poREnpGQ8Bk`1Yc>n9~zpofJswna+&Xm#$V=;J{$+s_L6gPM~Tf)w;M3-Ld_ylK@fV z;t@Kxwo<;a|1l>??*!C~UiMECG#0MPq7MDMvrfEvw60m!kU1d5s7yPk7dwA9Zg zGKw4Au8gROMk0$gjL0znbk;w0XrOK@noEVC>0~{u!hN1yd(G7W03ckKL8Bktb0D6Q z<1IC8iM~VuRmw@-P>j8;InN^5BVh&-d+l>m#G^)ry9@C~8&m;q#m-!;R2K`D?Ci$% zegujr0E;MfU6*Lc>=vV5z25x$)|$ajY=P~ipp+}3nDh{G$!mStaDV?D5@#=~`X&;o z!mwtg>cn-G!ln02bgi>JzAy%W_D)L3a?1>`&Bkc0_s-IV<(r!W&Sv8taHO+1#W8A@ z1@@ZZ({`}`38P?A+BJvgKn30 z@qEO!!OzZL%K1yPDs0TGK?o9Cxqhx20tsF z9AQeX+xkWDN(a;z(U>zbIV^!>s-}G6Purgozn-+=6kvzM5P3r75{NgA=iic^>DuZq zh;YjOUClbQtKCs{Fp1WBBMDS!AMx@*BW1q$9E#Nt9TQNPd+#RhzU9kb|N0UXte*DE zVrOst&2Ip`^7h&&Q2D~T#!t#~zSfMKtw%+@V(uz5eeaG?C6s<(Uaz56gwXJQcQ6a5 zvemkadb#Kd0Nb{)-jhk@a3TUq3V3C)u;z(23sURI()ff3!3ZTYKxOTa56sC4@xuZ6 z8$nLLTScHJ!>n~n2N_J#O4orpT92q0l9_|M@zPa3ez(rv8KWD{M@hRA90gH<%yH5CnGxj@cIk(7^>&7px!Jj3t`t_ydO;z6; zQo;-z*Sm3n*Z3s;%WQovaPJnEfWN(ALWnf~YO05UyPaiIvpUTcoHuvC>D;(^xD#rv zw&ZIFi2$lZ!0Q!)@1z$1=JvKo|Dx`)n~}%K0Lfu}CISVZ`qe$fu|J#3$z;OLJycYS zvyDoVm3=Y(U%A5MMm+0l8kNirpMr7Gef%~E=OHxbLaOwyx&(q*tJ!J=92@`_S~_7z z0;-M&Kv9?A>DwBBCkNN2L?|0FTD9A-!kSNKeXtEDcR&%M$qy9ZGc-<|7;LK0ZX{cjV1OrgUAepIxfyjP4-^|!AM?RR5QSydF?wsls@7Uk@{|dLcXRIe zRYoByTa`%@*uO_I%kF|QkFszq)Wvug5Q_S+h(e1|w+eumhuWy!f{c-p1C!!29quEso)Pu#*+SvRI}D5i>jaA7{ZB zh%M1Wp7Q{R^@8%=`s2c>+R-E{RvPiDyCHcF%{$K*r4nUSD2*BJH=BXI*9ddxW`8{r zzw43YN~nh;9Resf?pMd6)MjW{C(+u$z-O_K(myJC)Rw&$bG< z>~xaA)1)G22(Di5Zz45EscyaT$;7F5EGQnl*uTIW-RP^Y@eT1vk00~o!um#Cs>A^-*Jr07L_14|(UdJjk1N9A{ z`Cl_LvIhEa^&~7F3^2<>@nbD+sIq`wb-|yac|@z)Dak1M0nbC0Tyt%B|JSrDu?ebI zu-`amYv-`leU8n5+3=c4UwYqrhbTY`?GI~#1^XFBL9tq+Z+=4<6eE&khCqKnsT|Lu z&*QF{RA|`g{oSA_3#Cvkb*qJ>0Qu?!YA2JOEnBIz0t_l3;?C~|P&3`h%`;OLzDJ45 z%q)66pu5HV1UbgW?YR^t`aVjp7H)0BOET zD6W4bcJ5lY6=?@T&gTeG%BF+seP9UpcMMo*B7aZ#W|bxDToTyT2MixNxYc3w}nu48lI`jFG+%N zjoJ!DMDloex3??!VL7007er)*=}BlJryIVo5t8|gC6@m^dBNPdp|yrmR01P_N}=o0 z7(3`|Em-pNJa{e+Cw$UQ=wG2Yn2f}(TAbT5#U`RcR8)U4n6)NTVOR@e(Yb5byj89u zF=y>qy68+?_G4pX#(igiV74fF-)aVoOe)N~E)P(GGR5*kN*|Xr&_BfUyQ>uE9890n z(Q$YvJIX*cy^13czk6{B1(qoNMD)vq_MX-M4>beoQ{apy0y_e%MAW?i?Fnec*tkDG za(&XQ=GQt%aud%U-T}hjKx8FnrqFShsYlLS~zx=Z!!b_nA zhVfJ0jg<$o(^`cmz_IhGuE2D#n6AxweUSm42qP+Ck0TD$F|XRf^^eD3%t9x!VF~YS`aHrgozyt2xLM#vU%HaX>*`%(xW4 zkuKt9pMH^y9N@STE5I$aJxK4TUttW>qu*@r@+Uno%FI1s<9zH_=j&f;U~y?ZMzgxyj2-#o}2(J zS1CJN%=PMt$do?{oSmEJa(G+#UG5~KN+ofIM(TRNs6mZ55!v)gg9SFO(*F>hG|fKqYes8ySmi_$UoD_j}{P5EC`oi>F#PNXm=u@L%RT4Dww%wM$^EA*JEeU2{13sSv8P60&{E3{MIx* zwY)ZG0q2`T%Dlb+Fu1+nmjdp7TDVfSvnm6KxdhcYosKG1ltHgMCsEF1C{L4->ot7B z6f=`cr3)$A!sL=;B)_1FYHq^frQ-QPy(M0IGUb z6v!Oh&HMt9b&nqnmer{fUJ^XC+}YeC{9Cd$KX4L)&Z&3AP=d)+8RxDrMCZfr5UEob z@j~-Q7c2RRHYPoY@8sKVo2PMC#S&D!H4w^gLJSfHofQu3547dI8gOdbZ2<1xOjL>% zps6A|B~k?^$-8AIl>H;knLr!e-GZRF(nMinh#nKL=x*=VS(I9PNWfz5{Q~rCX*{(slgFMklf~MtQ0KKVW81q{`^S`xRRDH}+8t?!3BP}!< z@>9BuI}sP5*4E$HTha)uPaOjm^G0E6Hp!yNWJXfu2slP^9QeYusBlq0oeL_ z>k`jiN~tJwMVFb>0MzX*p%%>CC5iLduI<(tpKx!0g`jIW&2AUflmYjh{1WKrs>Np9 z^C!&QBL@>mOTpa37_aX8{SF#5Lp7|zHTlZ|u=!v#Q*5}-jEH(!iiMCf-cV_)Zk1Y? zrWn%A7w&$#(E4W6`oyhNA0Nq0lTO`&F>jmJO_r1bW*|VhwQi5F4A?$};!72wvf?c{bVn9VJ8n@?l50{|f*d8OR?zv-O z^O5aslxRuuIO2fp@f>v{&PUrXoa>6@ggr9w0)7KQVe%v=7}8tlAAwZcmRGtbgsvnI z;1i4K5?iDTDEX#k_TeLXbl!X@=aaefTQi1ecHh^wy|xXApbV(`{q#)NpcAg5mcJ}r zZD3-*f7+?#juD4KDmwbp7Cyt8eubp}9oL_AY^FaQ4gACV@isi!6a zrY7VR2~YBp^J$NOhyBS&PJ?$To;&&ocjk_Vd=!#-gj7f2-yHqI zT~kMP?%&_v^6OHUV)!)bNLZCX^(n=}WB^f#28sY#$8`qRSZ1iYL*^|p)LyW?ThE9P zf}8MPIr}_}`*UW$1BkL2LfbS6xYMab_QL6sM%R^ny|AB!^uM4Pl{Mpv-@}lcM*N5H z>CY*KWh8aby>3tTFZ&T&e4b^h^FOic10S|fRT=$rZ1#b1SNf`NJwdi)@cW*<=b*>z zfq2&6TpK1ZbZ)&hK*IW=+}mCga5^;{4H7Dnm&;^I?u|P-4C|Ic+YI{=QLVKCTiwJD zKm~`BWKQG|GBbCWY~aQ+Tv2&uwANeeMDKsTziTPA)Vh^g@6w5!&_7pg0^uQYobIF> z9uTl32@4NQakz9T#U)HtgL3FK0DElVs3E{Rxdc&r*hnvta;B zzeHyIM^*(d!Lpk<`jA?`GcIzJawCl`!M>lF8S)wqitH>h3=@2|Y5$+wudVh*c(6k? zgyrcjA$h9_R`DYFrrU9d3gK5zf|cF#tewn-i}PF=%m;%4$mCD+Kd^e^i^O&~6V*{m;08@iUh@o>;X3r(Xh< zh@Fq>`+dC-wpfT^fLROu7S<7A!k;&S{aHuob7$g$E>^&07bMEYRMV{ZGM0u&bV6jy z@a`hNoe#0Y@$()Lt0(?Q=-xHT$D-nEk!&SOqX__7H|?eRqy8y^#(N$lzwspX0%1}= z5dSb$`#8eq5z&F)V^d>maUiRa4##6=MBE#*<3KX&WnljV8?c6Y$L7h|L@`j9UN2&x zHKC#m*AV3;xe|e3J$V;~luHvrZ&Uz@Ns$kRmF-hK8)03^0 zM5p%s-L!=IT;~&x2;tQ^lS+M7c52+rnJ-OvaUtUVbF<9dw`&y9&?K8dTDgQYQWK)J zcNqUp#|Hpzom=mvlue4dqz`P0b1{!SG`gVt#qveiD{xQxjoayDhL>Q zr0AgsgToTf!^KQo(Ktaev?NhnM<->6X!qd(bW;|@RKpA(3RcHPh+7YftSg>G#8n?! zppLs>`p;=(Twf10)uH1w=J%U2SIi-+aL|(_7J*E_Gt-G|Mj@hF$|5jo@9Ok#{39t% z>(+_tL=%>77<7lHQz6z2guUBzXg33}new2e#VDWq#Y}|c)3nmUqS5*N{Z>zc5|@2X zL|w)t`g(1hd0XNKOx?SX4c^8`pb;kE;yU&I^x$ufnhBP%w zHSH6swkn>G@b2BLYz61H$is2V>ryRUI$~#p-9g2VGY`7hJ`skl+k_$i&^dB8%gLbR z)RVK=1E4h)o?AsABiLm7MzW*7#3?yk_CQol)?$afM=clCNPcJsbY|DFxePPg>BF%z zVv9to7sb!cOn(nb@7=1z4@RyPzLS|7GkX8$pYo&YsOMZwmkg{>Bk z{lC{S2sIN0XDKB`7~ioq&Y(z>^yncgoWjP;jXOFK)onvi+{;#oCh_k?SPFR6sfPL1 zq?mieLxE%E(*RP0<}}gV4h%{{0M-dd+JqH6DTXmIydkqZ$?JVK0u&d}ui+JnJlmX7 z!NIlh4L02N?)fB{94#xLe)46%VYTryl-akp7&ZyIe zgVW(({0PbT6K%AtCO22f)yGB*k+RFWR^t=l?XWBI1WAe=nHQxDTqLcsBOrRbtF8}7 zT&c!CkXfFVpw{3if~0JA$k(@k(K(k65KGFEh-sE08D<=Gif|yD_%qBvgyOC@vRkZn z)62Q-hob%^IP^GaigN&nU2}HCZZj!}D#52M(Z3y`m^A|;s(Q@3zzuT)2X@^e{S2G% zNlX0AK}WRmDAH^I2xmsTvtNjfwUkmzr6C>5^-Kr3Ji(V3vq$aZ>YqWpHkLVylOrDm zu%}11uCBBXl7||2F&I;&u<;7aU38<{R@3YHEzJiWm0D>^6L)q_q=eYo6fkO-M3<;@ z6wjYP!#ClFnnY7hhMU}_kAZ-W88i9_CLo5F?}mGzNB0B7_hty)ih*_lrO?;cE9>K2 z@*H^QW!SiLBQ3!yJ5x%jwVM09+@I?UbUK&IgT-?2B~=^4@ceBH4!{mB1~26VMV)}g z%#tZk8O&`Xp#i=3MW&J&K!3_>IdBnxf7|p*x*JqyP5*fdp%4+FQz1ELSw%@V|L#Rw;Tr~*1Gy5dFL(wSp-m(elyT12) zzv!w&fl96a^OyM87RTU$x+asdRn*EU#~xkJ6kb0}N%4u5W_VH}APlJFyub$!+b8ms zvd};&lBk9BK}!^rd}hl2{aW*(iIUq1Ge8o-iJZ^YwL+tg)Wyn#_RLT>J-3A&TUfsv zUra^j>XsmxJ6vur4vEs*kDeCYlnv~I8OTAMrQ_K;9#c^h+KD1NMK*!U|A|XD6=@b4 zi#^nrXHFJueq4{>cC=Zl%440mS?Nm8-M%!Gn8IBv!z7QGlO6QBFKsVD+C+sU9IH@S zxMR$G#(vGjTP5|(0AAb15wU*PkqA_&fE2Z^yl_FIPn?XxnZJ<5R@`X>{eBS?6>L-D z$NnYLmD^4f`aAh7pL&HP@}upM9Y&_|u~v3iFr0sMa@WqDcCB^Wo)&;j26Gjv@?U4q zkTW362L!kNjLr8#|2yh|*Z9d1HsSLKqTfd;Y)Nv54nL&mbN>hjyc^Lz6w9StAJ)D) zqWu|omfA~(U_gSV!oI{RA7Yy=S(RPCi$-!4@lC^ z@c~1ziPH|6W0;wja-liaOA^Vt;7a88eTf&r`Q^Jfv*UolwQ`ay7u^{cAFu+a1F=K0 z@-{AKWUyp^4E+OoSK-NPYSTQ4&=Sm~b-IOZhx4ES>b3>e;>^taNrJZAPBv5t#mVtH z2^o1L!=r?mDgJj+^^q-7CQ9nD?J|!sx%fyHk(~tUHIi@zgfRLF0d?l$-n>S+&AP(i zi$u=nGOVp4v;fAvuUr45pOO{wfM$CzYwwu{S;<&Qg<&Qe%0Fo>{@eVC%dUbg2sFZa z1-JTYR#xzxlM;g8O%lfD zDJl1H$UD3jgf;;^$I7e;66BrzH`D9qlEr~9oV9pByE->ZeeJ7fSjt^*U`P^{OLEGf zXZ76!&YWy1Y#m#BOAgMol|O-F37{xVsh72@YLtl7d%%`+*?xsbNYXG8))0R7-Marm zULu)GV%73Jdu}E_{}VZX_)I(pzUne|rleMpq>yCxMOVr8u0=N9Zx7ni|IHmE5=Q(W zvAj8i^!`W>7cSQf+ckUF_lQV8qN?@Y+FSi0w{05^>JxEMk;xz?Eh-FU?O>qH`H*#!d!!-s7G?YOQ!dOIg`w%F{OD0Gm&JG nxmE*k=!bgmb%Q%f$>0AE$k?-zH{WtX00000NkvXXu0mjf0B7o+ From c44313961d5143c28e90870bc8830ef9657b3be6 Mon Sep 17 00:00:00 2001 From: clach Date: Tue, 25 Jul 2023 15:33:37 -0700 Subject: [PATCH 077/352] [usdImaging] Cleanup in usdImaging/drawModelStandin (Internal change: 2284330) --- pxr/usdImaging/usdImaging/drawModeStandin.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pxr/usdImaging/usdImaging/drawModeStandin.cpp b/pxr/usdImaging/usdImaging/drawModeStandin.cpp index 0b70f6bde2..72e1e1f026 100644 --- a/pxr/usdImaging/usdImaging/drawModeStandin.cpp +++ b/pxr/usdImaging/usdImaging/drawModeStandin.cpp @@ -902,7 +902,7 @@ namespace _CardsDrawMode { TF_DEFINE_PRIVATE_TOKENS( _primNameTokens, - (mesh) + (cardsMesh) ); TF_DEFINE_PRIVATE_TOKENS( @@ -1958,7 +1958,7 @@ class _CardsStandin : public UsdImaging_DrawModeStandin const TfTokenVector _GetChildNames() const override { - TfTokenVector names = { _primNameTokens->mesh }; + TfTokenVector names = { _primNameTokens->cardsMesh }; const _MaterialsDict mats = _dataCache->GetMaterials(); for (const auto &kv : mats) { names.push_back(kv.first); @@ -1968,7 +1968,7 @@ class _CardsStandin : public UsdImaging_DrawModeStandin TfToken _GetChildPrimType(const TfToken &name) const override { - if (name == _primNameTokens->mesh) { + if (name == _primNameTokens->cardsMesh) { return HdPrimTypeTokens->mesh; } return HdPrimTypeTokens->material; @@ -2032,7 +2032,8 @@ class _CardsStandin : public UsdImaging_DrawModeStandin .Append(HdPrimvarSchemaTokens->primvarValue); primDirtyLocators.insert(displayColorValue); entries->push_back( - {_path.AppendChild(_primNameTokens->mesh), primDirtyLocators}); + {_path.AppendChild(_primNameTokens->cardsMesh), + primDirtyLocators}); static const HdDataSourceLocatorSet materialColorInputs = _ComputeMaterialColorInputLocators(); for (const auto &kv : _dataCache->GetMaterials()) { @@ -2043,7 +2044,7 @@ class _CardsStandin : public UsdImaging_DrawModeStandin } entries->push_back( - {_path.AppendChild(_primNameTokens->mesh), dirtyLocators}); + {_path.AppendChild(_primNameTokens->cardsMesh), dirtyLocators}); } TfToken GetDrawMode() const override { From fc56f736dd81d773dbd88b36eba467e0d6b54dfa Mon Sep 17 00:00:00 2001 From: unhyperbolic Date: Tue, 25 Jul 2023 15:34:20 -0700 Subject: [PATCH 078/352] UsdImaging: moving some invalidation to UsdImagingDataSourceModel::Invalidate. (Internal change: 2284337) --- pxr/usdImaging/usdImaging/dataSourcePrim.cpp | 164 ++++++++++--------- pxr/usdImaging/usdImaging/dataSourcePrim.h | 7 + 2 files changed, 97 insertions(+), 74 deletions(-) diff --git a/pxr/usdImaging/usdImaging/dataSourcePrim.cpp b/pxr/usdImaging/usdImaging/dataSourcePrim.cpp index 00e445815d..efbe2a36c0 100644 --- a/pxr/usdImaging/usdImaging/dataSourcePrim.cpp +++ b/pxr/usdImaging/usdImaging/dataSourcePrim.cpp @@ -560,6 +560,90 @@ UsdImagingDataSourceModel::Get(const TfToken &name) return nullptr; } +/* static */ HdDataSourceLocatorSet +UsdImagingDataSourceModel::Invalidate( + UsdPrim const& prim, + const TfToken &subprim, + const TfTokenVector &properties, + const UsdImagingPropertyInvalidationType invalidationType) +{ + HdDataSourceLocatorSet locators; + + for (const TfToken &propertyName : properties) { + if (propertyName == UsdGeomTokens->modelDrawMode) { + static const HdDataSourceLocator locator = + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->drawMode); + locators.insert(locator); + } + + if (propertyName == UsdGeomTokens->modelApplyDrawMode) { + static const HdDataSourceLocator locator = + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->applyDrawMode); + locators.insert(locator); + } + + if (propertyName == UsdGeomTokens->modelDrawModeColor) { + static const HdDataSourceLocator locator = + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->drawModeColor); + locators.insert(locator); + } + + if (propertyName == UsdGeomTokens->modelCardGeometry) { + static const HdDataSourceLocator locator = + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->cardGeometry); + locators.insert(locator); + } + + if (propertyName == UsdGeomTokens->modelCardTextureXPos) { + static const HdDataSourceLocator locator = + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->cardTextureXPos); + locators.insert(locator); + } + + if (propertyName == UsdGeomTokens->modelCardTextureXNeg) { + static const HdDataSourceLocator locator = + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->cardTextureXNeg); + locators.insert(locator); + } + + if (propertyName == UsdGeomTokens->modelCardTextureYPos) { + static const HdDataSourceLocator locator = + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->cardTextureYPos); + locators.insert(locator); + } + + if (propertyName == UsdGeomTokens->modelCardTextureYNeg) { + static const HdDataSourceLocator locator = + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->cardTextureYNeg); + locators.insert(locator); + } + + if (propertyName == UsdGeomTokens->modelCardTextureZPos) { + static const HdDataSourceLocator locator = + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->cardTextureZPos); + locators.insert(locator); + } + + if (propertyName == UsdGeomTokens->modelCardTextureZNeg) { + static const HdDataSourceLocator locator = + UsdImagingModelSchema::GetDefaultLocator().Append( + UsdImagingModelSchemaTokens->cardTextureZNeg); + locators.insert(locator); + } + } + + return locators; +} + // ---------------------------------------------------------------------------- UsdImagingDataSourcePrimOrigin::UsdImagingDataSourcePrimOrigin( @@ -660,7 +744,7 @@ UsdImagingDataSourcePrim::GetNames() } if (_GetUsdPrim().HasAPI()) { - vec.push_back(UsdImagingModelSchemaTokens->model); + vec.push_back(UsdImagingModelSchema::GetSchemaToken()); } if (_GetUsdPrim().IsModel()) { @@ -743,7 +827,7 @@ UsdImagingDataSourcePrim::Get(const TfToken &name) } else { return nullptr; } - } else if (name == UsdImagingModelSchemaTokens->model) { + } else if (name == UsdImagingModelSchema::GetSchemaToken()) { UsdGeomModelAPI model(_GetUsdPrim()); if (!model) { return nullptr; @@ -807,78 +891,6 @@ UsdImagingDataSourcePrim::Invalidate( locators.insert(locator); } - // TODO: Move these into UsdImagingDataSourceModel::Invalidate. - - if (propertyName == UsdGeomTokens->modelDrawMode) { - static const HdDataSourceLocator locator( - UsdImagingModelSchemaTokens->model, - UsdImagingModelSchemaTokens->drawMode); - locators.insert(locator); - } - - if (propertyName == UsdGeomTokens->modelApplyDrawMode) { - static const HdDataSourceLocator locator( - UsdImagingModelSchemaTokens->model, - UsdImagingModelSchemaTokens->applyDrawMode); - locators.insert(locator); - } - - if (propertyName == UsdGeomTokens->modelDrawModeColor) { - static const HdDataSourceLocator locator( - UsdImagingModelSchemaTokens->model, - UsdImagingModelSchemaTokens->drawModeColor); - locators.insert(locator); - } - - if (propertyName == UsdGeomTokens->modelCardGeometry) { - static const HdDataSourceLocator locator( - UsdImagingModelSchemaTokens->model, - UsdImagingModelSchemaTokens->cardGeometry); - locators.insert(locator); - } - - if (propertyName == UsdGeomTokens->modelCardTextureXPos) { - static const HdDataSourceLocator locator( - UsdImagingModelSchemaTokens->model, - UsdImagingModelSchemaTokens->cardTextureXPos); - locators.insert(locator); - } - - if (propertyName == UsdGeomTokens->modelCardTextureXNeg) { - static const HdDataSourceLocator locator( - UsdImagingModelSchemaTokens->model, - UsdImagingModelSchemaTokens->cardTextureXNeg); - locators.insert(locator); - } - - if (propertyName == UsdGeomTokens->modelCardTextureYPos) { - static const HdDataSourceLocator locator( - UsdImagingModelSchemaTokens->model, - UsdImagingModelSchemaTokens->cardTextureYPos); - locators.insert(locator); - } - - if (propertyName == UsdGeomTokens->modelCardTextureYNeg) { - static const HdDataSourceLocator locator( - UsdImagingModelSchemaTokens->model, - UsdImagingModelSchemaTokens->cardTextureYNeg); - locators.insert(locator); - } - - if (propertyName == UsdGeomTokens->modelCardTextureZPos) { - static const HdDataSourceLocator locator( - UsdImagingModelSchemaTokens->model, - UsdImagingModelSchemaTokens->cardTextureZPos); - locators.insert(locator); - } - - if (propertyName == UsdGeomTokens->modelCardTextureZNeg) { - static const HdDataSourceLocator locator( - UsdImagingModelSchemaTokens->model, - UsdImagingModelSchemaTokens->cardTextureZNeg); - locators.insert(locator); - } - if (UsdGeomPrimvarsAPI::CanContainPropertyName(propertyName)) { if (invalidationType == UsdImagingPropertyInvalidationType::Resync) { locators.insert( @@ -892,6 +904,10 @@ UsdImagingDataSourcePrim::Invalidate( } } + locators.insert( + UsdImagingDataSourceModel::Invalidate( + prim, subprim, properties, invalidationType)); + return locators; } diff --git a/pxr/usdImaging/usdImaging/dataSourcePrim.h b/pxr/usdImaging/usdImaging/dataSourcePrim.h index 3082a6c24c..5f37e236c0 100644 --- a/pxr/usdImaging/usdImaging/dataSourcePrim.h +++ b/pxr/usdImaging/usdImaging/dataSourcePrim.h @@ -415,6 +415,13 @@ class UsdImagingDataSourceModel : public HdContainerDataSource /// HdDataSourceBaseHandle Get(const TfToken &name) override; + USDIMAGING_API + static HdDataSourceLocatorSet Invalidate( + UsdPrim const& prim, + const TfToken &subprim, + const TfTokenVector &properties, + UsdImagingPropertyInvalidationType invalidationType); + private: /// C'tor. /// From c133d1b33bf8c28f6e00e9be6b1a8e4167bc2973 Mon Sep 17 00:00:00 2001 From: rajabala Date: Tue, 25 Jul 2023 15:34:32 -0700 Subject: [PATCH 079/352] [sdf] Fix typo. (Internal change: 2284345) --- pxr/usd/sdf/path.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pxr/usd/sdf/path.h b/pxr/usd/sdf/path.h index 57693ed098..5efa7105da 100644 --- a/pxr/usd/sdf/path.h +++ b/pxr/usd/sdf/path.h @@ -641,7 +641,7 @@ class SdfPath /// grandparent path ('../..'). Use caution writing loops that walk to /// parent paths since relative paths have infinitely many ancestors. To /// more safely traverse ancestor paths, consider iterating over an - /// SdfPathAncestorsRange instead, as returend by GetAncestorsRange(). + /// SdfPathAncestorsRange instead, as returned by GetAncestorsRange(). SDF_API SdfPath GetParentPath() const; /// Creates a path by stripping all relational attributes, targets, From 6867deb1f7fb43266f950c777871752ebcf3b6b7 Mon Sep 17 00:00:00 2001 From: tgvarik Date: Tue, 25 Jul 2023 15:34:44 -0700 Subject: [PATCH 080/352] [hdPrman] PbsPathTracer should render volume aggregates by default We will enable volume aggregate rendering when there is no authored integrator node in the scene and the legacy render settings map (or HD_PRMAN_INTEGRATOR) directs us to use PbsPathTracer. This behavior is different from the normal behavior of PbsPathTracer in Renderman, which is to disable volume aggregate rendering by default. Therefore, we limit our override of this default to situations where there is no authored integrator node in the scene. This change also reverts 2279759. If there is a valid, active PbsPathTracer node, we make no changes to it, even when it is silent on the subject of volume aggregate rendering. If the scene uses an authored PbsPathTracer node and volume aggregates should be rendered, the PbsPathTracer node must say so. (Internal change: 2284355) --- third_party/renderman-25/plugin/hdPrman/renderParam.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/third_party/renderman-25/plugin/hdPrman/renderParam.cpp b/third_party/renderman-25/plugin/hdPrman/renderParam.cpp index 5ef601e2aa..9f7b78f108 100644 --- a/third_party/renderman-25/plugin/hdPrman/renderParam.cpp +++ b/third_party/renderman-25/plugin/hdPrman/renderParam.cpp @@ -1833,6 +1833,13 @@ HdPrman_RenderParam::_ComputeIntegratorNode( const RtUString rtIntegratorName(integratorName.c_str()); + // If the settings map / env var say to use PbsPathTracer, + // we'll turn on volume aggregate rendering. + if (integratorName == HdPrmanIntegratorTokens->PbsPathTracer.GetString()) { + _SetParamValue(RtUString("volumeAggregate"), VtValue(4), + TfToken(), _integratorParams); + } + SetIntegratorParamsFromRenderSettingsMap( static_cast(renderDelegate), integratorName, From 253889640cae2638a62f3fec5bc6c1337f55feba Mon Sep 17 00:00:00 2001 From: sunyab Date: Tue, 25 Jul 2023 15:36:00 -0700 Subject: [PATCH 081/352] usd: Fix (maybe) intermittent failures in testUsdInstancingCpp I believe the problem is that the test cases would store pointers to prototype source prim indexes before and after a scene description change and check if they differed to indicate whether that prim index had been recomputed by Pcp. This worked most of the time but could fail if the recomputed prim index happened to be placed at the same memory address as the old one. I was unable to confirm this theory locally but I'm modifying the test defensively to avoid this issue. Rather than checking whether a prototype's prim index has been recomputed, the test now checks whether a prototype's source prim index path has changed. This is more pertinent to what this test is trying to verify anyway. (Internal change: 2284399) --- pxr/usd/usd/testenv/testUsdInstancingCpp.cpp | 117 ++++++++++--------- 1 file changed, 64 insertions(+), 53 deletions(-) diff --git a/pxr/usd/usd/testenv/testUsdInstancingCpp.cpp b/pxr/usd/usd/testenv/testUsdInstancingCpp.cpp index e789f101a3..1f270ce0b7 100644 --- a/pxr/usd/usd/testenv/testUsdInstancingCpp.cpp +++ b/pxr/usd/usd/testenv/testUsdInstancingCpp.cpp @@ -34,10 +34,6 @@ PXR_NAMESPACE_USING_DIRECTIVE -// Apply changes such that an instance not represening the sourcePrimIndex for a -// prototype is changed, and significant change is pseudoRoot (by adding a dummy -// sublayer to it) - PXR_NAMESPACE_OPEN_SCOPE const PcpPrimIndex & Usd_PrimGetSourcePrimIndex(const UsdPrim& prim) @@ -46,8 +42,9 @@ Usd_PrimGetSourcePrimIndex(const UsdPrim& prim) } PXR_NAMESPACE_CLOSE_SCOPE - -/// Test to verify prototypes are appropriately changed when "/" is changed +// Verify that an instancing prototype is not replaced with a new prototype +// when one of its non-source instances is deinstanced at the same time that +// entire stage is recomposed. void TestInstancing_1() { @@ -55,7 +52,8 @@ TestInstancing_1() // determine what instance to unset UsdStageRefPtr stage = UsdStage::Open(rootLayer); - const UsdPrim& prototypePrim = + + const UsdPrim prototypePrim = stage->GetPrimAtPath(SdfPath("/instancer1/Instance0")).GetPrototype(); const SdfPath sourcePrimIndexPath = @@ -73,12 +71,8 @@ TestInstancing_1() SdfPrimSpecHandle instancePrimToUnset = subLayerPtr->GetPrimAtPath(instancePathToUnset); - const PcpPrimIndex* origPrimIndexForSource = - &(stage->GetPrimAtPath(sourcePrimIndexPath).GetPrimIndex()); - SdfLayerRefPtr anonymousLayer = SdfLayer::CreateAnonymous(".usda"); - SdfPrimSpecHandle dummpPrim = - SdfCreatePrimInLayer(anonymousLayer, SdfPath("/dummy")); + SdfCreatePrimInLayer(anonymousLayer, SdfPath("/dummy")); { SdfChangeBlock block; @@ -94,19 +88,26 @@ TestInstancing_1() const UsdPrim& newPrototypePrim = stage->GetPrimAtPath(sourcePrimIndexPath).GetPrototype(); - const PcpPrimIndex* newPrimIndexForSource = - &(stage->GetPrimAtPath(sourcePrimIndexPath).GetPrimIndex()); - - // Prototype's sourcePrimIndexPath is unchanged, and primIndex for this - // prototype's source index should have been recomputed, since "/" change - // would have triggered a pcpIndexRecompute for everything - TF_VERIFY((prototypePrim.GetPath() == newPrototypePrim.GetPath()) && - origPrimIndexForSource != newPrimIndexForSource); + const SdfPath newSourcePrimIndexPath = + Usd_PrimGetSourcePrimIndex(newPrototypePrim).GetRootNode().GetPath(); + + // Verify that the prototype UsdPrim's path and the path of its underlying + // source prim index have not changed. + TF_VERIFY( + prototypePrim.GetPath() == newPrototypePrim.GetPath(), + "prototypePrim.GetPath() = <%s>, newPrototypePrim.GetPath() = <%s>", + prototypePrim.GetPath().GetText(), + newPrototypePrim.GetPath().GetText()); + + TF_VERIFY( + sourcePrimIndexPath == newSourcePrimIndexPath, + "sourcePrimIndexPath = <%s>, newSourcePrimIndexPath = <%s>", + sourcePrimIndexPath.GetText(), newSourcePrimIndexPath.GetText()); } - -/// Test to verify prototype for an instance is updated if its correspoding -/// sourcePrim is updated because of parent being recomposed. +// Verify that an instancing prototype is not replaced with a new prototype +// when one of its non-source instances is deinstanced at the same time +// that a parent prim of all of the instances is recomposed. void TestInstancing_2() { @@ -114,7 +115,8 @@ TestInstancing_2() // determine which instance to update UsdStageRefPtr stage = UsdStage::Open(rootLayer); - const UsdPrim& prototypePrim = + + const UsdPrim prototypePrim = stage->GetPrimAtPath(SdfPath("/Ref1/instance1")).GetPrototype(); const SdfPath sourcePrimIndexPath = @@ -125,9 +127,6 @@ TestInstancing_2() SdfPath("/Ref1/instance2") : SdfPath("/Ref1/instance1"); - const PcpPrimIndex* origPrimIndexForSource = - &(stage->GetPrimAtPath(sourcePrimIndexPath).GetPrimIndex()); - SdfPrimSpecHandle ref1PrimSpec = stage->GetRootLayer()->GetPrimAtPath(SdfPath("/Ref1")); SdfPrimSpecHandle instancePrimToUnset = @@ -149,22 +148,29 @@ TestInstancing_2() ref1PrimSpec->GetReferenceList().Add(dummyReference); } - const UsdPrim& newPrototypePrim = + const UsdPrim newPrototypePrim = stage->GetPrimAtPath(sourcePrimIndexPath).GetPrototype(); - const PcpPrimIndex* newPrimIndexForSource = - &(stage->GetPrimAtPath(sourcePrimIndexPath).GetPrimIndex()); - - // Prototype's sourcePrimIndexPath is unchanged, and primIndex for this - // prototype's source index should have been recomputed, since "/Ref1" - // change would have triggered a pcpIndexRecompute because of the added - // reference - TF_VERIFY((prototypePrim.GetPath() == newPrototypePrim.GetPath()) && - origPrimIndexForSource != newPrimIndexForSource); + const SdfPath newSourcePrimIndexPath = + Usd_PrimGetSourcePrimIndex(newPrototypePrim).GetRootNode().GetPath(); + + // Verify that the prototype UsdPrim's path and the path of its underlying + // source prim index have not changed. + TF_VERIFY( + prototypePrim.GetPath() == newPrototypePrim.GetPath(), + "prototypePrim.GetPath() = <%s>, newPrototypePrim.GetPath() = <%s>", + prototypePrim.GetPath().GetText(), + newPrototypePrim.GetPath().GetText()); + + TF_VERIFY( + sourcePrimIndexPath == newSourcePrimIndexPath, + "sourcePrimIndexPath = <%s>, newSourcePrimIndexPath = <%s>", + sourcePrimIndexPath.GetText(), newSourcePrimIndexPath.GetText()); } -/// Test to verify prototype is not updated when sourcePrim is corresponding to -/// this is not updated, but parent of other instances is changed. +// Verify that an instancing prototype is not replaced with a new prototype +// when one of its non-source instances is deinstanced at the same time +// that a parent prim of other instances is recomposed. void TestInstancing_3() { @@ -172,10 +178,11 @@ TestInstancing_3() // determine which instance to update UsdStageRefPtr stage = UsdStage::Open(rootLayer); - const UsdPrim& prototypePrim = + + const UsdPrim prototypePrim = stage->GetPrimAtPath(SdfPath("/Ref1/instance1")).GetPrototype(); - const SdfPath& sourcePrimIndexPath = + const SdfPath sourcePrimIndexPath = Usd_PrimGetSourcePrimIndex(prototypePrim).GetRootNode().GetPath(); SdfPath parentPathToRecompose = SdfPath("/Ref2"); @@ -183,9 +190,6 @@ TestInstancing_3() parentPathToRecompose = SdfPath("/Ref1"); } - const PcpPrimIndex* origPrimIndexForSource = - &(stage->GetPrimAtPath(sourcePrimIndexPath).GetPrimIndex()); - SdfPrimSpecHandle refPrimSpec = stage->GetRootLayer()->GetPrimAtPath(parentPathToRecompose); @@ -201,17 +205,24 @@ TestInstancing_3() refPrimSpec->GetReferenceList().Add(dummyReference); } - const UsdPrim& newPrototypePrim = + const UsdPrim newPrototypePrim = stage->GetPrimAtPath(sourcePrimIndexPath).GetPrototype(); - const PcpPrimIndex* newPrimIndexForSource = - &(stage->GetPrimAtPath(sourcePrimIndexPath).GetPrimIndex()); - - // Prototype's sourcePrimIndexPath is unchanged, and primIndex for this - // prototype's source index should be same since we triggered a change - // to the prim not containing our prototype's sourcePrim - TF_VERIFY((prototypePrim.GetPath() == newPrototypePrim.GetPath()) && - origPrimIndexForSource == newPrimIndexForSource); + const SdfPath newSourcePrimIndexPath = + Usd_PrimGetSourcePrimIndex(newPrototypePrim).GetRootNode().GetPath(); + + // Verify that the prototype UsdPrim's path and the path of its underlying + // source prim index have not changed. + TF_VERIFY( + prototypePrim.GetPath() == newPrototypePrim.GetPath(), + "prototypePrim.GetPath() = <%s>, newPrototypePrim.GetPath() = <%s>", + prototypePrim.GetPath().GetText(), + newPrototypePrim.GetPath().GetText()); + + TF_VERIFY( + sourcePrimIndexPath == newSourcePrimIndexPath, + "sourcePrimIndexPath = <%s>, newSourcePrimIndexPath = <%s>", + sourcePrimIndexPath.GetText(), newSourcePrimIndexPath.GetText()); } int main() From 862f703f69c7679648b05d1e5bc6e527c9c11d2d Mon Sep 17 00:00:00 2001 From: sunyab Date: Tue, 25 Jul 2023 15:36:09 -0700 Subject: [PATCH 082/352] usd: Fix null-pointer dereference in UsdObject::GetDescription This caused crashes when calling this function on a UsdPrim representing an expired instance, instance proxy, prototype, or prim in prototype. Fixes #1872 (Internal change: 2284402) --- pxr/usd/usd/primData.cpp | 54 +++++++++++++++++++---------- pxr/usd/usd/testenv/testUsdPrims.py | 49 ++++++++++++++++++++++++++ 2 files changed, 84 insertions(+), 19 deletions(-) diff --git a/pxr/usd/usd/primData.cpp b/pxr/usd/usd/primData.cpp index 7f1fba5adc..5a099c08be 100644 --- a/pxr/usd/usd/primData.cpp +++ b/pxr/usd/usd/primData.cpp @@ -218,35 +218,51 @@ Usd_DescribePrimData(const Usd_PrimData *p, SdfPath const &proxyPrimPath) if (!p) return "null prim"; - bool isInstance = p->IsInstance(); - bool isInstanceProxy = Usd_IsInstanceProxy(p, proxyPrimPath); - bool isInPrototype = isInstanceProxy ? + const bool isDead = p->_IsDead(); + const bool isInstance = p->IsInstance(); + const bool isInstanceProxy = Usd_IsInstanceProxy(p, proxyPrimPath); + const bool isInPrototype = isInstanceProxy ? Usd_InstanceCache::IsPathInPrototype(proxyPrimPath) : p->IsInPrototype(); - bool isPrototype = p->IsPrototype(); - Usd_PrimDataConstPtr prototypeForInstance = + const bool isPrototype = p->IsPrototype(); + const Usd_PrimDataConstPtr prototypeForInstance = isInstance && p->_stage ? p->GetPrototype() : nullptr; - return TfStringPrintf( - "%s%s%sprim %s<%s> %s%s%s", - Usd_IsDead(p) ? "expired " : (p->_flags[Usd_PrimActiveFlag] ? + std::string desc = TfStringPrintf( + "%s%s%sprim %s<%s> ", + isDead ? "expired " : (p->_flags[Usd_PrimActiveFlag] ? "" : "inactive "), p->GetTypeName().IsEmpty() ? "" : TfStringPrintf("'%s' ", p->GetTypeName().GetText()).c_str(), // XXX: Add applied schemas to this descriptor isInstance ? "instance " : isInstanceProxy ? "instance proxy " : "", isInPrototype ? "in prototype " : "", - isInstanceProxy ? proxyPrimPath.GetText() : p->_path.GetText(), - (isInstanceProxy || isInstance) ? TfStringPrintf( - "with prototype <%s> ", isInstance ? - prototypeForInstance->GetPath().GetText() : - p->_path.GetText()).c_str() : "", - (isInstanceProxy || isPrototype || isInPrototype) ? TfStringPrintf( - "using prim index <%s> ", - p->GetSourcePrimIndex().GetPath().GetText()).c_str() : "", - p->_stage ? TfStringPrintf( - "on %s", UsdDescribe(p->_stage).c_str()).c_str() : "" - ); + isInstanceProxy ? proxyPrimPath.GetText() : p->_path.GetText()); + + if (!isDead) { + if (isInstanceProxy || isInstance) { + if (isInstance && !prototypeForInstance) { + desc += "with expired prototype"; + } + else { + desc += TfStringPrintf( + "with prototype <%s> ", isInstance ? + prototypeForInstance->GetPath().GetText() : + p->_path.GetText()); + } + } + + if (isInstanceProxy || isPrototype || isInPrototype) { + desc += TfStringPrintf( + "using prim index <%s> ", + p->GetSourcePrimIndex().GetPath().GetText()); + } + + desc += TfStringPrintf( + "on %s", UsdDescribe(p->_stage).c_str()).c_str(); + } + + return desc; } void diff --git a/pxr/usd/usd/testenv/testUsdPrims.py b/pxr/usd/usd/testenv/testUsdPrims.py index 7a64d675d5..4fb1415395 100644 --- a/pxr/usd/usd/testenv/testUsdPrims.py +++ b/pxr/usd/usd/testenv/testUsdPrims.py @@ -1152,5 +1152,54 @@ def test_GetAtPath(self): isinstance(child.GetPropertyAtPath("Grandchild.y"), Usd.Relationship)) + def test_GetDescription(self): + rootLayer = Sdf.Layer.CreateAnonymous(".usda") + rootLayer.ImportFromString(""" + #usda 1.0 + + def Scope "Ref" + { + def Scope "Child" + { + } + } + + def Scope "Instance" ( + instanceable = True + references = + ) + { + } + """.strip()) + + s = Usd.Stage.Open(rootLayer) + + basic = s.GetPrimAtPath("/Ref") + basicChild = basic.GetChild("Child") + + instance = s.GetPrimAtPath("/Instance") + instanceProxyChild = instance.GetChild("Child") + + prototype = instance.GetPrototype() + prototypeChild = prototype.GetChild("Child") + + print(basic.GetDescription()) + print(basicChild.GetDescription()) + print(instance.GetDescription()) + print(instanceProxyChild.GetDescription()) + print(prototype.GetDescription()) + print(prototypeChild.GetDescription()) + + # Drop the Usd.Stage and ensure GetDescription on the now-expired + # Usd.Prims does not crash. + del s + + print(basic.GetDescription()) + print(basicChild.GetDescription()) + print(instance.GetDescription()) + print(instanceProxyChild.GetDescription()) + print(prototype.GetDescription()) + print(prototypeChild.GetDescription()) + if __name__ == "__main__": unittest.main() From 7c495cbd4c0e7764fc7dab1ffffc18390b455318 Mon Sep 17 00:00:00 2001 From: sunyab Date: Tue, 25 Jul 2023 15:36:16 -0700 Subject: [PATCH 083/352] usd: Fix notification when prototypes are affected by load/unload UsdStage was failing to send notices when instancing prototypes were added/removed/updated in response to instances being loaded or unloaded. Besides fixing this issue, this change modifies the _Recompose function to avoid unnecessarily creating a container when one is explicitly passed in. (Internal change: 2284534) --- pxr/usd/usd/stage.cpp | 13 ++--- pxr/usd/usd/testenv/testUsdInstancing.py | 60 +++++++++++++++++++----- 2 files changed, 52 insertions(+), 21 deletions(-) diff --git a/pxr/usd/usd/stage.cpp b/pxr/usd/usd/stage.cpp index 9af401fc6d..c20db3c93b 100644 --- a/pxr/usd/usd/stage.cpp +++ b/pxr/usd/usd/stage.cpp @@ -2337,11 +2337,11 @@ UsdStage::LoadAndUnload(const SdfPathSet &loadSet, // resulting from this request, this will trigger recomposition of UsdPrims // that potentially didn't change; it seems like we could do better. TF_DEBUG(USD_CHANGES).Msg("\nProcessing Load/Unload changes\n"); - _Recompose(changes); + UsdNotice::ObjectsChanged::_PathsToChangesMap resyncChanges, infoChanges; + _Recompose(changes, &resyncChanges); UsdStageWeakPtr self(this); - UsdNotice::ObjectsChanged::_PathsToChangesMap resyncChanges, infoChanges; for (SdfPath const &p: recomposePaths) { resyncChanges[p]; } @@ -4480,18 +4480,15 @@ void UsdStage::_Recompose(const PcpChanges &changes) { using _PathsToChangesMap = UsdNotice::ObjectsChanged::_PathsToChangesMap; - _Recompose(changes, (_PathsToChangesMap*)nullptr); + _PathsToChangesMap dummy; + _Recompose(changes, &dummy); } template void UsdStage::_Recompose(const PcpChanges &changes, - T *initialPathsToRecompose) + T *pathsToRecompose) { - T newPathsToRecompose; - T *pathsToRecompose = initialPathsToRecompose ? - initialPathsToRecompose : &newPathsToRecompose; - // Note: Calling changes.Apply() will result in recomputation of // pcpPrimIndexes for changed prims, these get updated on the respective // prims during _ComposeSubtreeImpl call. Using these outdated primIndexes diff --git a/pxr/usd/usd/testenv/testUsdInstancing.py b/pxr/usd/usd/testenv/testUsdInstancing.py index c3752ef158..aee2344fd3 100644 --- a/pxr/usd/usd/testenv/testUsdInstancing.py +++ b/pxr/usd/usd/testenv/testUsdInstancing.py @@ -33,6 +33,10 @@ from pxr import Usd, Sdf, Tf import unittest +def GetSourcePrimIndexPath(stage, prototypePath): + prototype = stage.GetPrimAtPath(prototypePath) + return prototype._GetSourcePrimIndex().rootNode.path + def ValidateExpectedInstances(stage, expectedInstances): """ Validate the expected instances and prototypes on the given stage. @@ -54,10 +58,10 @@ def ValidateExpectedInstances(stage, expectedInstances): # Validate that the prototype prim's source prim index is one of # the instance's prim indexes. - prototypePrimIndexPath = prototype._GetSourcePrimIndex().rootNode.path + prototypePrimIndexPath = GetSourcePrimIndexPath(stage, prototypePath) instancePrimIndexPaths = [ - stage.GetPrimAtPath(p)._GetSourcePrimIndex().rootNode.path - for p in instancePaths] + GetSourcePrimIndexPath(stage, p) for p in instancePaths + ] assert prototypePrimIndexPath in instancePrimIndexPaths, \ "Prototype <%s> using unexpected prim index <%s>, expected " \ @@ -490,7 +494,7 @@ def test_Nested2(self): { '/__Prototype_2': instances, '/__Prototype_3': ['/__Prototype_2/B'] }) ValidateExpectedChanges(nl, - ['/A_1', '/A_2', '/A_3']) + ['/A_1', '/A_2', '/A_3', '/__Prototype_1', '/__Prototype_2', '/__Prototype_3']) print("-" * 60) print("Unloading instances") @@ -499,7 +503,7 @@ def test_Nested2(self): ValidateExpectedInstances(s, { '/__Prototype_4': instances }) ValidateExpectedChanges(nl, - ['/A_1', '/A_2', '/A_3']) + ['/A_1', '/A_2', '/A_3', '/__Prototype_2', '/__Prototype_3', '/__Prototype_4']) # Stress-test by repeatedly loading and unloading instances. # Don't want too much output, so we delete the notice listener. @@ -536,7 +540,7 @@ def test_Payloads(self): model_1.Load() ValidateExpectedInstances(s, { '/__Prototype_1': ['/Model_1'] }) - ValidateExpectedChanges(nl, ['/Model_1']) + ValidateExpectedChanges(nl, ['/Model_1', '/__Prototype_1']) print("-" * 60) print("Loading instance /Model_2") @@ -552,7 +556,7 @@ def test_Payloads(self): model_1.Unload() ValidateExpectedInstances(s, { '/__Prototype_1': ['/Model_2'] }) - ValidateExpectedChanges(nl, ['/Model_1']) + ValidateExpectedChanges(nl, ['/Model_1', '/__Prototype_1']) print("-" * 60) print("Loading instance /ModelGroup_1") @@ -562,7 +566,7 @@ def test_Payloads(self): ValidateExpectedInstances(s, { '/__Prototype_1': ['/Model_2', '/__Prototype_2/Model'], '/__Prototype_2': ['/ModelGroup_1'] }) - ValidateExpectedChanges(nl, ['/ModelGroup_1']) + ValidateExpectedChanges(nl, ['/ModelGroup_1', '/__Prototype_2']) print("-" * 60) print("Loading instance /ModelGroup_2") @@ -581,7 +585,7 @@ def test_Payloads(self): ValidateExpectedInstances(s, { '/__Prototype_1': ['/Model_2', '/__Prototype_2/Model'], '/__Prototype_2': ['/ModelGroup_2'] }) - ValidateExpectedChanges(nl, ['/ModelGroup_1']) + ValidateExpectedChanges(nl, ['/ModelGroup_1', '/__Prototype_2']) def test_Payloads2(self): """Test instancing and change processing when unloading the last @@ -600,12 +604,21 @@ def test_Payloads2(self): # Model_1 and one shared by all the unloaded instances. print("-" * 60) print("Loading instance /Model_1") + + # We expect resync notices for the newly-loaded /Model_1 and the + # corresponding new prototype /__Prototype_2. If /Model_1's prim + # index is the source for /__Prototype_1, we also expect a resync + # notice for that prototype since its source prim index will change. + expectedResyncs = ['/Model_1', '/__Prototype_2'] + if GetSourcePrimIndexPath(s, '/__Prototype_1') == '/Model_1': + expectedResyncs.append('/__Prototype_1') + s.Load('/Model_1') ValidateExpectedInstances(s, { '/__Prototype_1': ['/Model_2', '/Model_3', '/Model_4' ], '/__Prototype_2': ['/Model_1'] }) - ValidateExpectedChanges(nl, ['/Model_1']) + ValidateExpectedChanges(nl, expectedResyncs) # Now unload Model_1 and load Model_2 in the same call. Model_2 # should now be attached to the prototype previously used by Model_1, @@ -613,31 +626,52 @@ def test_Payloads2(self): # unloaded instances. print("-" * 60) print("Unload instance /Model_1, load instance /Model_2") + + # We expect resync notices for the newly-loaded /Model_2 and + # newly-unloaded /Model_1. We also expect a resync for /__Prototype_2 + # since its source prim index will change from /Model_1 to /Model_2. + # If /Model_2's prim index is the source for /__Prototype_1, we also + # expect a resync notice for that prototype since its source prim + # index will change. + expectedResyncs = ['/Model_1', '/Model_2', '/__Prototype_2'] + if GetSourcePrimIndexPath(s, '/__Prototype_1') == '/Model_2': + expectedResyncs.append('/__Prototype_1') + s.LoadAndUnload(['/Model_2'], ['/Model_1']) ValidateExpectedInstances(s, { '/__Prototype_1': ['/Model_1', '/Model_3', '/Model_4' ], '/__Prototype_2': ['/Model_2'] }) - ValidateExpectedChanges(nl, ['/Model_1', '/Model_2']) + ValidateExpectedChanges(nl, expectedResyncs) # Continue loading and unloading instances in the same way. print("-" * 60) print("Unload instance /Model_2, load instance /Model_3") + + expectedResyncs = ['/Model_2', '/Model_3', '/__Prototype_2'] + if GetSourcePrimIndexPath(s, '/__Prototype_1') == '/Model_3': + expectedResyncs.append('/__Prototype_1') + s.LoadAndUnload(['/Model_3'], ['/Model_2']) ValidateExpectedInstances(s, { '/__Prototype_1': ['/Model_1', '/Model_2', '/Model_4' ], '/__Prototype_2': ['/Model_3'] }) - ValidateExpectedChanges(nl, ['/Model_2', '/Model_3']) + ValidateExpectedChanges(nl, expectedResyncs) print("-" * 60) print("Unload instance /Model_3, load instance /Model_4") + + expectedResyncs = ['/Model_3', '/Model_4', '/__Prototype_2'] + if GetSourcePrimIndexPath(s, '/__Prototype_1') == '/Model_4': + expectedResyncs.append('/__Prototype_1') + s.LoadAndUnload(['/Model_4'], ['/Model_3']) ValidateExpectedInstances(s, { '/__Prototype_1': ['/Model_1', '/Model_2', '/Model_3' ], '/__Prototype_2': ['/Model_4'] }) - ValidateExpectedChanges(nl, ['/Model_3', '/Model_4']) + ValidateExpectedChanges(nl, expectedResyncs) def test_Deactivated(self): """Test instancing and change processing when activating and From d72fe2e35f3f1bbb1898814f65ec00e053cde114 Mon Sep 17 00:00:00 2001 From: gitamohr Date: Tue, 25 Jul 2023 15:36:30 -0700 Subject: [PATCH 084/352] vt: Add VtValue::(Unchecked)Mutate(), which takes a function that may mutate the held value of type T. This can simplify the existing pattern of Swap/modify/Swap. (Internal change: 2284546) --- pxr/base/vt/testenv/testVtCpp.cpp | 10 ++++++++++ pxr/base/vt/value.h | 30 ++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/pxr/base/vt/testenv/testVtCpp.cpp b/pxr/base/vt/testenv/testVtCpp.cpp index f1528b60bf..eaf084975f 100644 --- a/pxr/base/vt/testenv/testVtCpp.cpp +++ b/pxr/base/vt/testenv/testVtCpp.cpp @@ -1501,6 +1501,16 @@ static void testValue() { t = v.UncheckedRemove(); TF_AXIOM(t == "hello world!"); TF_AXIOM(v.IsEmpty()); + + // Held value mutation. + v = t; + TF_AXIOM(v.Mutate([](std::string &str) { str += "!"; })); + TF_AXIOM(v.Get() == "hello world!!"); + v.UncheckedMutate([](std::string &str) { str += "!"; }); + TF_AXIOM(v.Get() == "hello world!!!"); + + TF_AXIOM(!v.Mutate([](int &i) { ++i; })); + TF_AXIOM(v.Get() == "hello world!!!"); } // Test calling Get with incorrect type. Should issue an error and produce diff --git a/pxr/base/vt/value.h b/pxr/base/vt/value.h index f4c23d82a4..6bd621902d 100644 --- a/pxr/base/vt/value.h +++ b/pxr/base/vt/value.h @@ -1048,6 +1048,36 @@ class VtValue return result; } + /// If this value holds an object of type \p T, invoke \p mutateFn, passing + /// it a non-const reference to the held object and return true. Otherwise + /// do nothing and return false. + template + std::enable_if_t< + std::is_same::Type>::value, bool> + Mutate(Fn &&mutateFn) { + if (!IsHolding()) { + return false; + } + UncheckedMutate(std::forward(mutateFn)); + return true; + } + + /// Invoke \p mutateFn, it a non-const reference to the held object which + /// must be of type \p T. If the held object is not of type \p T, this + /// function invokes undefined behavior. + template + std::enable_if_t< + std::is_same::Type>::value> + UncheckedMutate(Fn &&mutateFn) { + // We move to a temporary, mutate the temporary, then move back. This + // prevents callers from escaping a mutable reference to the held object + // via a side-effect of mutateFn. + T &stored =_GetMutable(); + T tmp = std::move(stored); + std::forward(mutateFn)(tmp); + stored = std::move(tmp); + } + /// Return true if this value is holding an object of type \p T, false /// otherwise. template From d08e5a9c4b95f7106d2f92a9fde3c18ab5138686 Mon Sep 17 00:00:00 2001 From: gitamohr Date: Tue, 25 Jul 2023 15:36:40 -0700 Subject: [PATCH 085/352] arch: Make ArchRegex copyable. (Internal change: 2284595) --- pxr/base/arch/regex.cpp | 29 +++-------------------------- pxr/base/arch/regex.h | 17 +++++++++++------ 2 files changed, 14 insertions(+), 32 deletions(-) diff --git a/pxr/base/arch/regex.cpp b/pxr/base/arch/regex.cpp index db252bbb53..ee37af280b 100644 --- a/pxr/base/arch/regex.cpp +++ b/pxr/base/arch/regex.cpp @@ -151,11 +151,6 @@ ArchRegex::_Impl::Match(const char* query) const #endif // defined(ARCH_OS_WINDOWS) -ArchRegex::ArchRegex() -{ - // Do nothing. -} - ArchRegex::ArchRegex(const std::string& pattern, unsigned int flags) : _flags(flags) { @@ -163,11 +158,10 @@ ArchRegex::ArchRegex(const std::string& pattern, unsigned int flags) : if (pattern.empty()) { _error = "empty pattern"; } - else if (flags & GLOB) { - _impl.reset(new _Impl(_GlobToRegex(pattern), _flags, &_error)); - } else { - _impl.reset(new _Impl(pattern, _flags, &_error)); + _impl = std::make_shared<_Impl>( + (flags & GLOB) ? _GlobToRegex(pattern) : pattern, + _flags, &_error); } } catch (...) { @@ -177,23 +171,6 @@ ArchRegex::ArchRegex(const std::string& pattern, unsigned int flags) : } } -ArchRegex::ArchRegex(ArchRegex&& rhs) noexcept : - _flags(std::move(rhs._flags)), - _error(std::move(rhs._error)), - _impl (std::move(rhs._impl)) -{ - // Do nothing -} - -ArchRegex& -ArchRegex::operator=(ArchRegex&& rhs) noexcept -{ - _flags = std::move(rhs._flags); - _error = std::move(rhs._error); - _impl = std::move(rhs._impl); - return *this; -} - ArchRegex::~ArchRegex() { // Do nothing. diff --git a/pxr/base/arch/regex.h b/pxr/base/arch/regex.h index a43fb6c6df..2350bc9061 100644 --- a/pxr/base/arch/regex.h +++ b/pxr/base/arch/regex.h @@ -40,12 +40,17 @@ class ArchRegex { }; /// Create an empty regex. - ARCH_API ArchRegex(); + ArchRegex() = default; + + ArchRegex(ArchRegex &&) noexcept = default; + ArchRegex(ArchRegex const &) = default; + ArchRegex &operator=(ArchRegex &&) noexcept = default; + ArchRegex &operator=(ArchRegex const &) = default; + + /// Create with pattern and optional flags. ARCH_API ArchRegex(const std::string& pattern, unsigned int flags = 0); - ArchRegex(const ArchRegex&) = delete; - ARCH_API ArchRegex(ArchRegex&&) noexcept; - ArchRegex& operator=(const ArchRegex&) = delete; - ARCH_API ArchRegex& operator=(ArchRegex&&) noexcept; + + /// Destructor. ARCH_API ~ArchRegex(); /// Returns \c true if the regex is valid. @@ -66,7 +71,7 @@ class ArchRegex { class _Impl; unsigned int _flags = 0; std::string _error; - std::unique_ptr<_Impl> _impl; + std::shared_ptr _impl; }; PXR_NAMESPACE_CLOSE_SCOPE From 2a3cdbdc4248152361ed1f80afa8c37ec2ddbc58 Mon Sep 17 00:00:00 2001 From: gitamohr Date: Tue, 25 Jul 2023 15:38:09 -0700 Subject: [PATCH 086/352] sdf: Add hash, swap, (in)equality comparison, stream insertion to SdfPredicateExpression. Test updates coming in a future change, due to being tied to other future changes. (Internal change: 2284643) --- pxr/usd/sdf/predicateExpression.cpp | 18 +++++--- pxr/usd/sdf/predicateExpression.h | 57 ++++++++++++++++++++++++- pxr/usd/sdf/wrapPredicateExpression.cpp | 11 +++++ 3 files changed, 80 insertions(+), 6 deletions(-) diff --git a/pxr/usd/sdf/predicateExpression.cpp b/pxr/usd/sdf/predicateExpression.cpp index e79cc7de34..ab56183c95 100644 --- a/pxr/usd/sdf/predicateExpression.cpp +++ b/pxr/usd/sdf/predicateExpression.cpp @@ -166,10 +166,10 @@ SdfPredicateExpression::GetText() const auto opName = [](Op k) { switch (k) { - case Not: return "not"; + case Not: return "not "; case ImpliedAnd: return " "; - case And: return "and"; - case Or: return "or"; + case And: return " and "; + case Or: return " or "; default: break; }; return ""; @@ -232,9 +232,11 @@ SdfPredicateExpression::GetText() const Sdf_FileIOUtility ::StringFromVtValue(arg.value).c_str())); } + result += "("; if (!argStrs.empty()) { - result += "(" + TfStringJoin(argStrs, ", ") + ")"; + result += TfStringJoin(argStrs, ", "); } + result += ")"; } break; }; }; @@ -244,11 +246,17 @@ SdfPredicateExpression::GetText() const return result; } +std::ostream & +operator<<(std::ostream &out, SdfPredicateExpression const &expr) +{ + return out << expr.GetText(); +} + SdfPredicateExpression::SdfPredicateExpression( std::string const &input, std::string const &context) { using namespace tao::TAO_PEGTL_NAMESPACE; - + Analyze(); try { SdfPredicateExprBuilder builder; diff --git a/pxr/usd/sdf/predicateExpression.h b/pxr/usd/sdf/predicateExpression.h index 6be139f527..3d54df6b13 100644 --- a/pxr/usd/sdf/predicateExpression.h +++ b/pxr/usd/sdf/predicateExpression.h @@ -26,9 +26,13 @@ #include "pxr/pxr.h" #include "pxr/usd/sdf/api.h" +#include "pxr/base/tf/hash.h" #include "pxr/base/vt/value.h" +#include #include +#include +#include #include PXR_NAMESPACE_OPEN_SCOPE @@ -95,11 +99,22 @@ class SdfPredicateExpression std::string argName; VtValue value; + template + friend void TfHashAppend(HashState &h, FnArg const &arg) { + h.Append(arg.argName, arg.value); + } + friend bool operator==(FnArg const &l, FnArg const &r) { return std::tie(l.argName, l.value) == std::tie(r.argName, r.value); } friend bool operator!=(FnArg const &l, FnArg const &r) { - return std::tie(l.argName, l.value) != std::tie(r.argName, r.value); + return !(l == r); + } + + friend void swap(FnArg &l, FnArg &r) { + auto lt = std::tie(l.argName, l.value); + auto rt = std::tie(r.argName, r.value); + swap(lt, rt); } }; @@ -117,6 +132,24 @@ class SdfPredicateExpression Kind kind; std::string funcName; std::vector args; + + template + friend void TfHashAppend(HashState &h, FnCall const &c) { + h.Append(c.kind, c.funcName, c.args); + } + + friend bool operator==(FnCall const &l, FnCall const &r) { + return std::tie(l.kind, l.funcName, l.args) == + std::tie(r.kind, r.funcName, r.args); + } + friend bool operator!=(FnCall const &l, FnCall const &r) { + return !(l == r); + } + friend void swap(FnCall &l, FnCall &r) { + auto lt = std::tie(l.kind, l.funcName, l.args); + auto rt = std::tie(r.kind, r.funcName, r.args); + swap(lt, rt); + } }; /// Construct the empty expression whose bool-operator returns false. @@ -236,6 +269,28 @@ class SdfPredicateExpression } private: + template + friend void TfHashAppend(HashState &h, SdfPredicateExpression const &expr) { + h.Append(expr._ops, expr._calls, expr._parseError); + } + + friend bool + operator==(SdfPredicateExpression const &l, + SdfPredicateExpression const &r) { + return std::tie(l._ops, l._calls, l._parseError) == + std::tie(r._ops, r._calls, r._parseError); + } + + friend bool + operator!=(SdfPredicateExpression const &l, + SdfPredicateExpression const &r) { + return !(l == r); + } + + SDF_API + friend std::ostream & + operator<<(std::ostream &, SdfPredicateExpression const &); + // The expression is represented in function-call style, but *in reverse* to // facilitate efficient assembly. For example, an expression like "a and b" // would be represented as { Call(b), Call(a), And } rather than { And, diff --git a/pxr/usd/sdf/wrapPredicateExpression.cpp b/pxr/usd/sdf/wrapPredicateExpression.cpp index 3da01166af..c3e95e8515 100644 --- a/pxr/usd/sdf/wrapPredicateExpression.cpp +++ b/pxr/usd/sdf/wrapPredicateExpression.cpp @@ -91,6 +91,10 @@ void wrapPredicateExpression() .def("IsEmpty", &PredExpr::IsEmpty) .def("__bool__", &PredExpr::operator bool) .def("__repr__", &_Repr) + .def("__str__", &PredExpr::GetText) + .def("__hash__", +[](PredExpr const &e) { return TfHash{}(e); }) + .def(self == self) + .def(self != self) .def("GetParseError", static_cast( @@ -106,6 +110,10 @@ void wrapPredicateExpression() .def_readwrite("kind", &PredExpr::FnCall::kind) .def_readwrite("funcName", &PredExpr::FnCall::funcName) .def_readwrite("args", &PredExpr::FnCall::args) + .def("__hash__", + +[](PredExpr::FnCall const &c) { return TfHash{}(c); }) + .def(self == self) + .def(self != self) ; TfPyWrapEnum(); } @@ -125,6 +133,9 @@ void wrapPredicateExpression() arg.value = val; } ) + .def("__hash__", +[](PredExpr::FnArg const &a) { return TfHash{}(a); }) + .def(self == self) + .def(self != self) ; class_>("_PredicateExpressionFnArgVector") From 831e84611da8920490724963b33e3e744e1e4756 Mon Sep 17 00:00:00 2001 From: o2b3d Date: Tue, 25 Jul 2023 15:40:13 -0700 Subject: [PATCH 087/352] Update a comment in TfType to avoid implicating type_index and type_info in a crash that is likely due to other memory corruption. (Internal change: 2284863) --- pxr/base/tf/type.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/pxr/base/tf/type.cpp b/pxr/base/tf/type.cpp index ff890ac8d8..896193d972 100644 --- a/pxr/base/tf/type.cpp +++ b/pxr/base/tf/type.cpp @@ -1179,12 +1179,14 @@ TfType::GetCanonicalTypeName(const std::type_info &t) using LookupMap = TfHashMap>; - // A std::type_index contains a pointer to a std::type_info and type_info - // objects may be defined in plugin libraries. On program exit, the plugins - // get unloaded from memory, potentially leaving type_index objects with - // dangling pointers and causing crashes when attempting to destroy a - // LookupMap. To avoid this, we allocate the LookupMap on the heap and - // simply let it leak at program exit so its destructor is never called. + // XXX: Ugly hack alert. + // + // There has been one program that has been occasionally crashing when + // invoking the destructor of a static LookupMap. We've been unable to find + // the source of the crash but since the destructor was only run at program + // exit and failing to run it is harmless, we've chosen to avoid the + // destructor entirely and allow the cache of canonical type names to be a + // memory leak instead. static LookupMap * const lookupMap = new LookupMap; ScopedLock regLock(GetRegistryMutex(), /*write=*/false); From 283a6c5f4462fbd2aeae12e72e58a8f0cc7d6743 Mon Sep 17 00:00:00 2001 From: davidgyu Date: Tue, 25 Jul 2023 15:46:02 -0700 Subject: [PATCH 088/352] [usdviewq] Updated use of QFontMetrics Updated usdview's python interpreter since QFontMetrics.width() was deprecated in Qt5 and removed in Qt6. Instead we now use the width computed by the boundingRect() method. Tested with PySide2 and PySide6. (Internal change: 2284890) --- pxr/usdImaging/usdviewq/pythonInterpreter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pxr/usdImaging/usdviewq/pythonInterpreter.py b/pxr/usdImaging/usdviewq/pythonInterpreter.py index 21d74c691e..915ffa16c4 100644 --- a/pxr/usdImaging/usdviewq/pythonInterpreter.py +++ b/pxr/usdImaging/usdviewq/pythonInterpreter.py @@ -433,7 +433,7 @@ def write(self, text): def _GetStringLengthInPixels(cf, string): font = cf.font() fm = QtGui.QFontMetrics(font) - strlen = fm.width(string) + strlen = fm.boundingRect(string).width() return strlen def _CompleteSlot(self): From 1c88cb1f7ce4e72dda8b05dde898cc062dc72dd9 Mon Sep 17 00:00:00 2001 From: unhyperbolic Date: Tue, 25 Jul 2023 15:46:17 -0700 Subject: [PATCH 089/352] Re-enabling hdPrman's coord sys prim scene index plugin. (Internal change: 2284924) --- .../plugin/hdPrman/coordSysPrimSceneIndexPlugin.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/renderman-25/plugin/hdPrman/coordSysPrimSceneIndexPlugin.cpp b/third_party/renderman-25/plugin/hdPrman/coordSysPrimSceneIndexPlugin.cpp index 1b4694a8e9..56bdc4699a 100644 --- a/third_party/renderman-25/plugin/hdPrman/coordSysPrimSceneIndexPlugin.cpp +++ b/third_party/renderman-25/plugin/hdPrman/coordSysPrimSceneIndexPlugin.cpp @@ -31,7 +31,7 @@ PXR_NAMESPACE_OPEN_SCOPE TF_DEFINE_ENV_SETTING(HD_PRMAN_ENABLE_COORD_SYS_PRIM_SCENE_INDEX_PLUGIN, - false, + true, "If true, enables a plugin necessary for coord sys " "to work with hdPrman and the " "UsdImagingStageSceneIndex."); From 1a310c27437a2fde1833acc884d705af4817186f Mon Sep 17 00:00:00 2001 From: unhyperbolic Date: Tue, 25 Jul 2023 15:46:40 -0700 Subject: [PATCH 090/352] UsdImagingExtentResolvingSceneIndex: allow multiple purposes to be specified. (Internal change: 2284955) --- .../usdImaging/extentResolvingSceneIndex.cpp | 178 +++++++++++++----- .../usdImaging/extentResolvingSceneIndex.h | 18 +- pxr/usdImaging/usdImaging/sceneIndices.cpp | 31 +-- 3 files changed, 170 insertions(+), 57 deletions(-) diff --git a/pxr/usdImaging/usdImaging/extentResolvingSceneIndex.cpp b/pxr/usdImaging/usdImaging/extentResolvingSceneIndex.cpp index 0ae649a7eb..66f3fb86d1 100644 --- a/pxr/usdImaging/usdImaging/extentResolvingSceneIndex.cpp +++ b/pxr/usdImaging/usdImaging/extentResolvingSceneIndex.cpp @@ -26,10 +26,85 @@ #include "pxr/usdImaging/usdImaging/tokens.h" #include "pxr/usd/usdGeom/imageable.h" #include "pxr/imaging/hd/extentSchema.h" +#include "pxr/imaging/hd/retainedDataSource.h" +#include "pxr/imaging/hd/tokens.h" +#include "pxr/imaging/hd/vectorSchema.h" PXR_NAMESPACE_OPEN_SCOPE -namespace { +TF_DEFINE_PUBLIC_TOKENS(UsdImagingExtentResolvingSceneIndexTokens, + USDIMAGINGEXTENTRESOLVINGSCENEINDEX_TOKENS); + +namespace UsdImagingExtentResolvingSceneIndex_Impl +{ + +TfToken::HashSet +_GetPurposes(HdContainerDataSourceHandle const &inputArgs) +{ + static const TfToken defaultTokens[] = { HdTokens->geometry }; + static const TfToken::HashSet defaultSet{ std::begin(defaultTokens), + std::end(defaultTokens) }; + + if (!inputArgs) { + return defaultSet; + } + + HdTypedVectorSchema vecSchema( + HdVectorDataSource::Cast( + inputArgs->Get( + UsdImagingExtentResolvingSceneIndexTokens->purposes))); + if (!vecSchema) { + return defaultSet; + } + + TfToken::HashSet result; + + const size_t n = vecSchema.GetNumElements(); + for (size_t i = 0; i < n; i++) { + if (HdTokenDataSourceHandle const ds = vecSchema.GetElement(i)) { + result.insert(ds->GetTypedValue(0.0f)); + } + } + return result; +} + +std::vector +_GetExtentsHintIndices(const TfToken::HashSet &purposes) +{ + std::vector result; + + const TfTokenVector &orderedPurposes = + UsdGeomImageable::GetOrderedPurposeTokens(); + for (size_t i = 0; i < orderedPurposes.size(); ++i) { + const TfToken usdPurpose = orderedPurposes[i]; + const TfToken purpose = + usdPurpose == UsdGeomTokens->default_ + ? HdTokens->geometry + : usdPurpose; + if (purposes.find(purpose) != purposes.end()) { + result.push_back(i); + } + } + + return result; +} + +struct _Info +{ + _Info(HdContainerDataSourceHandle const &inputArgs) + : purposes(_GetPurposes(inputArgs)) + , extentsHintIndices(_GetExtentsHintIndices(purposes)) + { + } + + /// When computing the bounding box, we only consider geometry + /// with purposes being in this set. + const TfToken::HashSet purposes; + + /// Indices into UsdGeomModelAPI's extentsHint corresponding to + /// the above purposes. + const std::vector extentsHintIndices; +}; using _DirtyEntryPredicate = bool(*)(const HdSceneIndexObserver::DirtiedPrimEntry&); @@ -122,74 +197,87 @@ class _PrimSource : public HdContainerDataSource TfTokenVector GetNames() override { TfTokenVector result = _primSource->GetNames(); - if (HdVectorDataSource::Cast( - _primSource->Get(UsdImagingTokens->extentsHint))) { + if (_GetExtentsHints()) { if (!_Contains(result, HdExtentSchema::GetSchemaToken())) { result.push_back(HdExtentSchema::GetSchemaToken()); } } return result; } - + HdDataSourceBaseHandle Get(const TfToken &name) override { if (HdDataSourceBaseHandle const result = _primSource->Get(name)) { return result; } - if (name != HdExtentSchema::GetSchemaToken()) { - return nullptr; + // Use extentsHint if extent is not given. + if (name == HdExtentSchema::GetSchemaToken()) { + return _GetExtentFromExtentsHint(); } - HdVectorDataSourceHandle const extentsHintDs = - HdVectorDataSource::Cast( - _primSource->Get( - UsdImagingTokens->extentsHint)); - if (!extentsHintDs) { - return nullptr; - } - if (const HdDataSourceBaseHandle ds = - extentsHintDs->GetElement(_extentsHintIndex)) { - return ds; - } - return extentsHintDs->GetElement(0); + return nullptr; } - + private: _PrimSource(HdContainerDataSourceHandle const &primSource, - const size_t extentsHintIndex) + _InfoSharedPtr const &info) : _primSource(primSource) - , _extentsHintIndex(extentsHintIndex) + , _info(info) { } - HdContainerDataSourceHandle const _primSource; - const size_t _extentsHintIndex; -}; - -size_t -_GetExtentsHintIndex(HdContainerDataSourceHandle const &inputArgs) -{ - if (!inputArgs) { - return 0; + HdVectorDataSourceHandle _GetExtentsHints() const { + return HdVectorDataSource::Cast( + _primSource->Get(UsdImagingTokens->extentsHint)); } - HdTokenDataSourceHandle const ds = HdTokenDataSource::Cast( - inputArgs->Get(UsdGeomTokens->purpose)); - if (!ds) { - return 0; - } - const TfToken purpose = ds->GetTypedValue(0.0f); - const TfTokenVector &purposes = - UsdGeomImageable::GetOrderedPurposeTokens(); - for (size_t i = 0; i < purposes.size(); ++i) { - if (purpose == purposes[i]) { - return i; + + HdDataSourceBaseHandle _GetExtentFromExtentsHint() const { + if (_info->extentsHintIndices.empty()) { + return nullptr; + } + + HdSchemaBasedVectorSchema vecSchema(_GetExtentsHints()); + if (!vecSchema) { + return nullptr; } + + if (_info->extentsHintIndices.size() == 1) { + return vecSchema.GetElement( + _info->extentsHintIndices[0]).GetContainer(); + } + + GfRange3d bbox; + for (const size_t extentsHintIndex : _info->extentsHintIndices) { + HdExtentSchema schema = vecSchema.GetElement(extentsHintIndex); + HdVec3dDataSourceHandle const minDs = schema.GetMin(); + HdVec3dDataSourceHandle const maxDs = schema.GetMax(); + if (minDs && maxDs) { + bbox.UnionWith( + GfRange3d( + minDs->GetTypedValue(0.0f), + maxDs->GetTypedValue(0.0f))); + } + } + + return + HdExtentSchema::Builder() + .SetMin( + HdRetainedTypedSampledDataSource::New( + bbox.GetMin())) + .SetMax( + HdRetainedTypedSampledDataSource::New( + bbox.GetMax())) + .Build(); } - return 0; -} + + HdContainerDataSourceHandle const _primSource; + _InfoSharedPtr const _info; +}; } +using namespace UsdImagingExtentResolvingSceneIndex_Impl; + UsdImagingExtentResolvingSceneIndexRefPtr UsdImagingExtentResolvingSceneIndex::New( HdSceneIndexBaseRefPtr const &inputSceneIndex, @@ -204,7 +292,7 @@ UsdImagingExtentResolvingSceneIndex::UsdImagingExtentResolvingSceneIndex( const HdSceneIndexBaseRefPtr &inputSceneIndex, HdContainerDataSourceHandle const &inputArgs) : HdSingleInputFilteringSceneIndexBase(inputSceneIndex) - , _extentsHintIndex(_GetExtentsHintIndex(inputArgs)) + , _info(std::make_shared<_Info>(inputArgs)) { } @@ -218,7 +306,7 @@ UsdImagingExtentResolvingSceneIndex::GetPrim( HdSceneIndexPrim prim = _GetInputSceneIndex()->GetPrim(primPath); if (prim.dataSource) { - prim.dataSource = _PrimSource::New(prim.dataSource, _extentsHintIndex); + prim.dataSource = _PrimSource::New(prim.dataSource, _info); } return prim; diff --git a/pxr/usdImaging/usdImaging/extentResolvingSceneIndex.h b/pxr/usdImaging/usdImaging/extentResolvingSceneIndex.h index d987d7a5eb..75b0fe2e27 100644 --- a/pxr/usdImaging/usdImaging/extentResolvingSceneIndex.h +++ b/pxr/usdImaging/usdImaging/extentResolvingSceneIndex.h @@ -29,6 +29,18 @@ PXR_NAMESPACE_OPEN_SCOPE +namespace UsdImagingExtentResolvingSceneIndex_Impl +{ +using _InfoSharedPtr = std::shared_ptr; +} + +#define USDIMAGINGEXTENTRESOLVINGSCENEINDEX_TOKENS \ + (purposes) + +TF_DECLARE_PUBLIC_TOKENS(UsdImagingExtentResolvingSceneIndexTokens, + USDIMAGING_API, + USDIMAGINGEXTENTRESOLVINGSCENEINDEX_TOKENS); + TF_DECLARE_REF_PTRS(UsdImagingExtentResolvingSceneIndex); /// \class UsdImagingExtentResolvingSceneIndex @@ -44,6 +56,10 @@ class UsdImagingExtentResolvingSceneIndex { public: + // Datasource purposes at inputArgs is supposed to be a vector data source + // of token data sources. These tokens are hydra purposes (in particular, + // use HdTokens->geometry rather than the corresponding + // UsdGeomTokens->default_). USDIMAGING_API static UsdImagingExtentResolvingSceneIndexRefPtr New(HdSceneIndexBaseRefPtr const &inputSceneIndex, @@ -75,7 +91,7 @@ class UsdImagingExtentResolvingSceneIndex const HdSceneIndexObserver::DirtiedPrimEntries &entries) override; private: - size_t _extentsHintIndex; + UsdImagingExtentResolvingSceneIndex_Impl::_InfoSharedPtr _info; }; PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/usdImaging/usdImaging/sceneIndices.cpp b/pxr/usdImaging/usdImaging/sceneIndices.cpp index 14200d2367..d37b719cb5 100644 --- a/pxr/usdImaging/usdImaging/sceneIndices.cpp +++ b/pxr/usdImaging/usdImaging/sceneIndices.cpp @@ -36,8 +36,7 @@ #include "pxr/imaging/hd/flatteningSceneIndex.h" #include "pxr/imaging/hd/overlayContainerDataSource.h" #include "pxr/imaging/hd/retainedDataSource.h" - -#include "pxr/usd/usdGeom/tokens.h" +#include "pxr/imaging/hd/tokens.h" PXR_NAMESPACE_OPEN_SCOPE @@ -56,6 +55,23 @@ _AdditionalStageSceneIndexInputArgs( return ds; } +// Use extentsHint (of models) for purpose geometry +static +HdContainerDataSourceHandle +_ExtentResolvingSceneIndexInputArgs() +{ + HdDataSourceBaseHandle const purposeDataSources[] = { + HdRetainedTypedSampledDataSource::New( + HdTokens->geometry) }; + + return + HdRetainedContainerDataSource::New( + UsdImagingExtentResolvingSceneIndexTokens->purposes, + HdRetainedSmallVectorDataSource::New( + TfArraySize(purposeDataSources), + purposeDataSources)); +} + UsdImagingSceneIndices UsdImagingInstantiateSceneIndices( const UsdImagingSceneIndicesCreateInfo &createInfo) @@ -82,17 +98,10 @@ UsdImagingInstantiateSceneIndices( sceneIndex = UsdImagingUnloadedDrawModeSceneIndex::New(sceneIndex); } - - // Use extentsHint for default_/geometry purpose - HdContainerDataSourceHandle const extentInputArgs = - HdRetainedContainerDataSource::New( - UsdGeomTokens->purpose, - HdRetainedTypedSampledDataSource::New( - UsdGeomTokens->default_)); - + sceneIndex = UsdImagingExtentResolvingSceneIndex::New( - sceneIndex, extentInputArgs); + sceneIndex, _ExtentResolvingSceneIndexInputArgs()); sceneIndex = UsdImagingPiPrototypePropagatingSceneIndex::New(sceneIndex); From 87f31ea8b6f4230fc89044136f56fe2cacb25956 Mon Sep 17 00:00:00 2001 From: cvj Date: Tue, 25 Jul 2023 15:46:52 -0700 Subject: [PATCH 091/352] Clean up intermediate depth texture when HdxAovInputTask is destroyed. (Internal change: 2285159) --- pxr/imaging/hdx/aovInputTask.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pxr/imaging/hdx/aovInputTask.cpp b/pxr/imaging/hdx/aovInputTask.cpp index 4697ffdf04..20bb5e5fb5 100644 --- a/pxr/imaging/hdx/aovInputTask.cpp +++ b/pxr/imaging/hdx/aovInputTask.cpp @@ -56,6 +56,9 @@ HdxAovInputTask::~HdxAovInputTask() if (_depthTexture) { _GetHgi()->DestroyTexture(&_depthTexture); } + if (_depthTextureIntermediate) { + _GetHgi()->DestroyTexture(&_depthTextureIntermediate); + } } bool From fb50cd7e56539864667dc16a5081f0787767458d Mon Sep 17 00:00:00 2001 From: tgvarik Date: Tue, 25 Jul 2023 15:47:10 -0700 Subject: [PATCH 092/352] [hd][hdSt] Hulls should respect hull opacity The goal was to achieve behavior similar to that of wireframe + surface mode while preserving the ability to control the hull color with a mesh's hullColor parameter. The hullColor parameter has long controlled the *color* of hull wires, but its *opacity* channel has been ignored in storm. This change makes storm respect the hullColor opacity channel. To achieve this without changing the appearance of hulls elsewhere, we add a parameter to HdMeshReprDesc by which applications may specify whether hulls and wireframes (collectively "edges") should always be fully opaque. With this added parameter, we are able to preserve existing hull and wireframe appearance in UsdView. Note that this parameter applies to hulls ("hull edges") and wireframes ("edges"), depending on the selected MeshGeomStyle. hull opacity is controlled by the alpha channel of the mesh's hullColor parameter. The default value for hullColor.a has not been changed, but since it is 0.7 users will likely see the change immediately. (Internal change: 2285298) --- pxr/imaging/hd/mesh.h | 6 +++++ pxr/imaging/hd/renderIndex.cpp | 6 +++-- pxr/imaging/hdSt/mesh.cpp | 3 ++- pxr/imaging/hdSt/meshShaderKey.cpp | 12 ++++++++- pxr/imaging/hdSt/meshShaderKey.h | 3 ++- pxr/imaging/hdSt/shaders/meshWire.glslfx | 31 +++++++++++++++++------- 6 files changed, 47 insertions(+), 14 deletions(-) diff --git a/pxr/imaging/hd/mesh.h b/pxr/imaging/hd/mesh.h index c9321a567a..f0d4d622a7 100644 --- a/pxr/imaging/hd/mesh.h +++ b/pxr/imaging/hd/mesh.h @@ -58,6 +58,7 @@ struct HdMeshReprDesc TfToken shadingTerminal = HdMeshReprDescTokens->surfaceShader, bool flatShadingEnabled = true, bool blendWireframeColor = true, + bool forceOpaqueEdges = true, bool doubleSided = false, float lineWidth = 0, bool useCustomDisplacement = true, @@ -67,6 +68,7 @@ struct HdMeshReprDesc , shadingTerminal(shadingTerminal) , flatShadingEnabled(flatShadingEnabled) , blendWireframeColor(blendWireframeColor) + , forceOpaqueEdges(forceOpaqueEdges) , doubleSided(doubleSided) , lineWidth(lineWidth) , useCustomDisplacement(useCustomDisplacement) @@ -88,6 +90,10 @@ struct HdMeshReprDesc bool flatShadingEnabled; /// Should the wireframe color be blended into the color primvar? bool blendWireframeColor; + /// If the geom style includes edges, should those edges be forced + /// to be fully opaque, ignoring any applicable opacity inputs. + /// Does not apply to patch edges. + bool forceOpaqueEdges; /// Should this mesh be treated as double-sided? The resolved value is /// (prim.doubleSided || repr.doubleSided). bool doubleSided; diff --git a/pxr/imaging/hd/renderIndex.cpp b/pxr/imaging/hd/renderIndex.cpp index 80c81f0a7c..64a098e0fb 100644 --- a/pxr/imaging/hd/renderIndex.cpp +++ b/pxr/imaging/hd/renderIndex.cpp @@ -841,7 +841,8 @@ HdRenderIndex::_ConfigureReprs() HdCullStyleDontCare, HdMeshReprDescTokens->surfaceShader, /*flatShadingEnabled=*/false, - /*blendWireframeColor=*/true)); + /*blendWireframeColor=*/true, + /*forceOpaqueEdges=*/false)); HdMesh::ConfigureRepr(HdReprTokens->refined, HdMeshReprDesc(HdMeshGeomStyleSurf, HdCullStyleDontCare, @@ -859,7 +860,8 @@ HdRenderIndex::_ConfigureReprs() HdCullStyleDontCare, HdMeshReprDescTokens->surfaceShader, /*flatShadingEnabled=*/false, - /*blendWireframeColor=*/true)); + /*blendWireframeColor=*/true, + /*forceOpaqueEdges=*/false)); HdMesh::ConfigureRepr(HdReprTokens->points, HdMeshReprDesc(HdMeshGeomStylePoints, HdCullStyleNothing, diff --git a/pxr/imaging/hdSt/mesh.cpp b/pxr/imaging/hdSt/mesh.cpp index b92b67434e..997b120426 100644 --- a/pxr/imaging/hdSt/mesh.cpp +++ b/pxr/imaging/hdSt/mesh.cpp @@ -2629,7 +2629,8 @@ HdStMesh::_UpdateDrawItemGeometricShader(HdSceneDelegate *sceneDelegate, _hasMirroredTransform, hasInstancer, desc.enableScalarOverride, - _pointsShadingEnabled); + _pointsShadingEnabled, + desc.forceOpaqueEdges); HdSt_GeometricShaderSharedPtr geomShader = HdSt_GeometricShader::Create(shaderKey, resourceRegistry); diff --git a/pxr/imaging/hdSt/meshShaderKey.cpp b/pxr/imaging/hdSt/meshShaderKey.cpp index 23c5340d0c..65e972a8bc 100644 --- a/pxr/imaging/hdSt/meshShaderKey.cpp +++ b/pxr/imaging/hdSt/meshShaderKey.cpp @@ -55,6 +55,9 @@ TF_DEFINE_PRIVATE_TOKENS( // wireframe mixins ((edgeNoneFS, "MeshWire.Fragment.NoEdge")) + ((edgeOpacityNoForceFS, "MeshWire.Fragment.FinalEdgeOpacityNoForce")) + ((edgeOpacityForceFS, "MeshWire.Fragment.FinalEdgeOpacityForce")) + ((edgeMaskTriangleFS, "MeshWire.Fragment.EdgeMaskTriangle")) ((edgeMaskQuadFS, "MeshWire.Fragment.EdgeMaskQuad")) ((edgeMaskRefinedQuadFS, "MeshWire.Fragment.EdgeMaskRefinedQuad")) @@ -171,7 +174,8 @@ HdSt_MeshShaderKey::HdSt_MeshShaderKey( bool hasMirroredTransform, bool hasInstancer, bool enableScalarOverride, - bool pointsShadingEnabled) + bool pointsShadingEnabled, + bool forceOpaqueEdges) : primType(primitiveType) , cullStyle(cullStyle) , hasMirroredTransform(hasMirroredTransform) @@ -505,6 +509,12 @@ HdSt_MeshShaderKey::HdSt_MeshShaderKey( } FS[fsIndex++] = _tokens->edgeParamFS; + if (forceOpaqueEdges) { + FS[fsIndex++] = _tokens->edgeOpacityForceFS; + } else { + FS[fsIndex++] = _tokens->edgeOpacityNoForceFS; + } + if (renderWireframe) { if (isPrimTypePatches) { FS[fsIndex++] = _tokens->patchEdgeOnlyFS; diff --git a/pxr/imaging/hdSt/meshShaderKey.h b/pxr/imaging/hdSt/meshShaderKey.h index 95a29458e3..7783212498 100644 --- a/pxr/imaging/hdSt/meshShaderKey.h +++ b/pxr/imaging/hdSt/meshShaderKey.h @@ -64,7 +64,8 @@ struct HdSt_MeshShaderKey : public HdSt_ShaderKey bool hasMirroredTransform, bool hasInstancer, bool enableScalarOverride, - bool pointsShadingEnabled); + bool pointsShadingEnabled, + bool forceOpaqueEdges); // Note: it looks like gcc 4.8 has a problem issuing // a wrong warning as "array subscript is above array bounds" diff --git a/pxr/imaging/hdSt/shaders/meshWire.glslfx b/pxr/imaging/hdSt/shaders/meshWire.glslfx index 981b3c5c97..2ed5b705ee 100644 --- a/pxr/imaging/hdSt/shaders/meshWire.glslfx +++ b/pxr/imaging/hdSt/shaders/meshWire.glslfx @@ -212,6 +212,23 @@ float GetEdgeOpacityForPatch() return GetEdgeFalloff(patchEdgeMinDistance); } +--- -------------------------------------------------------------------------- +-- glsl MeshWire.Fragment.FinalEdgeOpacityNoForce + +vec4 ApplyFinalEdgeOpacity(vec4 Cfill) +{ + return Cfill; +} + +--- -------------------------------------------------------------------------- +-- glsl MeshWire.Fragment.FinalEdgeOpacityForce + +vec4 ApplyFinalEdgeOpacity(vec4 Cfill) +{ + Cfill.a = 1.0; + return Cfill; +} + --- -------------------------------------------------------------------------- -- glsl MeshWire.Fragment.NoEdge @@ -241,7 +258,7 @@ vec4 ApplyEdgeColor(vec4 Cfill, vec4 patchCoord) vec4 Cedge = vec4(mix(Cfill.rgb, wireColor.rgb, wireColor.a), 1); Cfill.rgb = mix(Cfill.rgb, Cedge.rgb, p); - return Cfill; + return ApplyFinalEdgeOpacity(Cfill); } --- -------------------------------------------------------------------------- @@ -257,9 +274,8 @@ vec4 ApplyEdgeColor(vec4 Cfill, vec4 patchCoord) // If wireColor is unset (zero), ignore it altogether Cfill.rgb = mix(Cfill.rgb, wireColor.rgb, wireColor.a); - Cfill.a = 1.0; // edges ignore input opacity and are opaque. - return Cfill; + return ApplyFinalEdgeOpacity(Cfill); } --- -------------------------------------------------------------------------- @@ -270,8 +286,7 @@ vec4 ApplyEdgeColor(vec4 Cfill, vec4 patchCoord) float p = GetEdgeOpacity(); if (p < 0.5) discard; - Cfill.a = 1.0; // edges ignore input opacity and are opaque. - return Cfill; + return ApplyFinalEdgeOpacity(Cfill); } --- -------------------------------------------------------------------------- @@ -313,7 +328,7 @@ vec4 ApplyEdgeColor(vec4 Cfill, vec4 patchCoord) vec4 Cedge = vec4(mix(Cfill.rgb, wireColor.rgb, wireColor.a), 1); Cfill.rgb = mix(Cfill.rgb, Cedge.rgb, p); - return Cfill; + return ApplyFinalEdgeOpacity(Cfill); } --- -------------------------------------------------------------------------- @@ -324,7 +339,5 @@ vec4 ApplyEdgeColor(vec4 Cfill, vec4 patchCoord) float p = GetEdgeOpacity(); if (p < 0.5) discard; - Cfill.a = 1.0; // edges ignore input opacity and are opaque. - - return Cfill; + return ApplyFinalEdgeOpacity(Cfill); } From 3083225ae0885bf30c21056e439a533905bc38c8 Mon Sep 17 00:00:00 2001 From: mrawde Date: Tue, 25 Jul 2023 15:48:09 -0700 Subject: [PATCH 093/352] [pxOsd] Replace linear search with binary search. (Internal change: 2285306) --- pxr/imaging/pxOsd/meshTopologyValidation.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/pxr/imaging/pxOsd/meshTopologyValidation.cpp b/pxr/imaging/pxOsd/meshTopologyValidation.cpp index 992835edc9..b9ab958473 100644 --- a/pxr/imaging/pxOsd/meshTopologyValidation.cpp +++ b/pxr/imaging/pxOsd/meshTopologyValidation.cpp @@ -246,9 +246,10 @@ PxOsdMeshTopologyValidation::_ValidateCreasesAndCorners( if (std::any_of(cornerIndices.cbegin(), cornerIndices.cend(), [&sortedFaceIndices](int index) { - return std::find(sortedFaceIndices.begin(), - sortedFaceIndices.end(), - index) == sortedFaceIndices.end(); + return !std::binary_search( + sortedFaceIndices.begin(), + sortedFaceIndices.end(), + index); })) { _AppendInvalidation( {Code::InvalidCornerIndicesElement, @@ -256,9 +257,10 @@ PxOsdMeshTopologyValidation::_ValidateCreasesAndCorners( } if (std::any_of(creaseIndices.cbegin(), creaseIndices.cend(), [&sortedFaceIndices](int index) { - return std::find(sortedFaceIndices.begin(), - sortedFaceIndices.end(), - index) == sortedFaceIndices.end(); + return !std::binary_search( + sortedFaceIndices.begin(), + sortedFaceIndices.end(), + index); })) { _AppendInvalidation( {Code::InvalidCreaseIndicesElement, From 8e25183e48b2f5027d4cd8e34c0027d372e31d4a Mon Sep 17 00:00:00 2001 From: unhyperbolic Date: Tue, 25 Jul 2023 15:49:30 -0700 Subject: [PATCH 094/352] HdFlatteningSceneIndex: fixing a potential bug where we returned different flattened data source on subsequent calls and only invalidated the one winning the race. (Internal change: 2285542) --- pxr/imaging/hd/dataSource.h | 5 ++++ pxr/imaging/hd/flatteningSceneIndex.cpp | 32 ++++++++++++++++--------- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/pxr/imaging/hd/dataSource.h b/pxr/imaging/hd/dataSource.h index b51c1c9303..779cf1295e 100644 --- a/pxr/imaging/hd/dataSource.h +++ b/pxr/imaging/hd/dataSource.h @@ -51,6 +51,11 @@ PXR_NAMESPACE_OPEN_SCOPE static void AtomicStore(AtomicHandle &ptr, const Handle &v) { \ std::atomic_store(&ptr, v); \ } \ + static bool AtomicCompareExchange(AtomicHandle &ptr, \ + AtomicHandle &expected, \ + const Handle &desired) { \ + return std::atomic_compare_exchange_strong(&ptr, &expected, desired); \ + } \ static Handle Cast(const HdDataSourceBase::Handle &v) { \ return std::dynamic_pointer_cast(v); \ } diff --git a/pxr/imaging/hd/flatteningSceneIndex.cpp b/pxr/imaging/hd/flatteningSceneIndex.cpp index bf5bbc056b..171b667fc5 100644 --- a/pxr/imaging/hd/flatteningSceneIndex.cpp +++ b/pxr/imaging/hd/flatteningSceneIndex.cpp @@ -195,18 +195,28 @@ _PrimLevelWrappingDataSource::Get( _primPath, name, _inputDataSource); - if (HdDataSourceBaseHandle const flattenedDs = - providers[i]->GetFlattenedDataSource(ctx)) { - HdDataSourceBase::AtomicStore(dsAtomicHandle, flattenedDs); - return flattenedDs; + HdDataSourceBaseHandle flattenedDs = + providers[i]->GetFlattenedDataSource(ctx); + if (!flattenedDs) { + // A nullptr means cache miss. To distinguish a cache miss from + // the flattened data source being null, we store a bool + // data source. + flattenedDs = HdRetainedTypedSampledDataSource::New(false); + } + + HdDataSourceBaseAtomicHandle existingDs; + // Make sure that we only set the flattened data source only once. + // Flattened data source can cache state and need to be invalidated. + // + // It would be bad if we return different flattened data sources + // on different calls and only invalidate the last one that was + // returned. + if (HdDataSourceBase::AtomicCompareExchange( + dsAtomicHandle, existingDs, flattenedDs)) { + return HdContainerDataSource::Cast(flattenedDs); + } else { + return HdContainerDataSource::Cast(existingDs); } - // A nullptr means cache miss. To distinguish a cache miss from - // the flattened data source being null, we store a bool - // data source. - HdDataSourceBase::AtomicStore( - dsAtomicHandle, - HdRetainedTypedSampledDataSource::New(false)); - return nullptr; } if (_inputDataSource) { From 6bc29fdf800d01eeb897e5a6b118a30c9e98f092 Mon Sep 17 00:00:00 2001 From: rajabala Date: Tue, 25 Jul 2023 15:51:17 -0700 Subject: [PATCH 095/352] [hdPrman] Improve debug logging of empty param lists (Internal change: 2285569) --- third_party/renderman-25/plugin/hdPrman/debugUtil.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/third_party/renderman-25/plugin/hdPrman/debugUtil.cpp b/third_party/renderman-25/plugin/hdPrman/debugUtil.cpp index d2263be8a7..20bdfa41c3 100644 --- a/third_party/renderman-25/plugin/hdPrman/debugUtil.cpp +++ b/third_party/renderman-25/plugin/hdPrman/debugUtil.cpp @@ -594,8 +594,12 @@ _FormatParam( std::string RtParamListToString(const RtParamList& params, const int indent) { - std::string out; unsigned numParams = params.GetNumParams(); + if (numParams == 0) { + return ""; + } + + std::string out; RtParamList::ParamInfo info; for (unsigned pi = 0; pi < numParams; ++pi) { if (params.GetParamInfo(pi, info)) { From a36a636d97647460a2da518fc8a81405652c0e3f Mon Sep 17 00:00:00 2001 From: meshula Date: Tue, 25 Jul 2023 15:51:28 -0700 Subject: [PATCH 096/352] Don't open and close a namespace with nothing in it. files that only include arch/pragmas.h also need to include pxr/pxr.h (Internal change: 2285581) (Internal change: 2285754) --- pxr/base/arch/defines.h | 6 ------ pxr/imaging/plugin/hioOiio/metadata.cpp | 1 + 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/pxr/base/arch/defines.h b/pxr/base/arch/defines.h index b8efcd8244..cb6ad44c5b 100644 --- a/pxr/base/arch/defines.h +++ b/pxr/base/arch/defines.h @@ -24,10 +24,6 @@ #ifndef PXR_BASE_ARCH_DEFINES_H #define PXR_BASE_ARCH_DEFINES_H -#include "pxr/pxr.h" - -PXR_NAMESPACE_OPEN_SCOPE - // // OS // @@ -108,6 +104,4 @@ PXR_NAMESPACE_OPEN_SCOPE #define ARCH_HAS_MMAP_MAP_POPULATE #endif -PXR_NAMESPACE_CLOSE_SCOPE - #endif // PXR_BASE_ARCH_DEFINES_H diff --git a/pxr/imaging/plugin/hioOiio/metadata.cpp b/pxr/imaging/plugin/hioOiio/metadata.cpp index c23df0a50c..e59861c6fa 100644 --- a/pxr/imaging/plugin/hioOiio/metadata.cpp +++ b/pxr/imaging/plugin/hioOiio/metadata.cpp @@ -22,6 +22,7 @@ // language governing permissions and limitations under the Apache License. // +#include "pxr/pxr.h" #include "pxr/base/arch/pragmas.h" ARCH_PRAGMA_PUSH From 889a570d5d453e550c36e61d63ae25d40fd15b39 Mon Sep 17 00:00:00 2001 From: rajabala Date: Tue, 25 Jul 2023 15:51:35 -0700 Subject: [PATCH 097/352] [hdPrman] Fix fallback settings attribute types in the test harness. (Internal change: 2285591) --- .../plugin/hdPrman/testenv/testHdPrman.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/third_party/renderman-25/plugin/hdPrman/testenv/testHdPrman.cpp b/third_party/renderman-25/plugin/hdPrman/testenv/testHdPrman.cpp index d7e1d6b9b2..cf7e0f88ce 100644 --- a/third_party/renderman-25/plugin/hdPrman/testenv/testHdPrman.cpp +++ b/third_party/renderman-25/plugin/hdPrman/testenv/testHdPrman.cpp @@ -346,12 +346,11 @@ PopulateFallbackRenderSettings( // authored. This should match the list in AddNamespacedSettings. { UsdPrim prim = settings->GetPrim(); - _SetFallbackValueIfUnauthored(TfToken("ri:trace:maxdepth"), prim, 10); - _SetFallbackValueIfUnauthored(TfToken("ri:hider:jitter"), prim, 1); + _SetFallbackValueIfUnauthored(TfToken("ri:hider:jitter"), prim, true); _SetFallbackValueIfUnauthored(TfToken("ri:hider:minsamples"), prim, 32); _SetFallbackValueIfUnauthored(TfToken("ri:hider:maxsamples"), prim, 64); _SetFallbackValueIfUnauthored( - TfToken("ri:Ri:PixelVariance"), prim, 0.01); + TfToken("ri:Ri:PixelVariance"), prim, 0.01f); } @@ -539,12 +538,10 @@ AddNamespacedSettings( VtDictionary const &namespacedSettings, HdRenderSettingsMap *settingsMap) { // Add fallback settings specific to testHdPrman - // Note: 'ri:trace:maxdepth' cannot be found in the applied schemas - (*settingsMap)[TfToken("ri:trace:maxdepth")] = 10; - (*settingsMap)[TfToken("ri:hider:jitter")] = 1; + (*settingsMap)[TfToken("ri:hider:jitter")] = true; (*settingsMap)[TfToken("ri:hider:minsamples")] = 32; (*settingsMap)[TfToken("ri:hider:maxsamples")] = 64; - (*settingsMap)[TfToken("ri:Ri:PixelVariance")] = 0.01; + (*settingsMap)[TfToken("ri:Ri:PixelVariance")] = 0.01f; // Set namespaced settings for (const auto &item : namespacedSettings) { From 545ae0cb7048b4fc818c3d5c64092b882f60e4fe Mon Sep 17 00:00:00 2001 From: meshula Date: Tue, 25 Jul 2023 15:52:05 -0700 Subject: [PATCH 098/352] Introduce the OpenEXR image plugin for Hio. Fixes a regression in the dwa compressor code that erroneously rejected some files, fix is being upstreamed. This utilizes a "simple" reader/writer, in openexr-c.c, which is meant to serve in the upstream OpenEXR unity-build CI. There are small number of new things to do, based on matthias' review. - r/w int32 files - change handling of mip reading to prevent "double reads" - filling in all channels of an rgba texture has a fairly complex algorithm which needs to be incorporated. Noted in a comment as the "fill in" algorithm. additional pending change: - remove a test block that overwrites an image with a gradient (Internal change: 2285614) (Internal change: 2286037) --- pxr/imaging/hio/CMakeLists.txt | 6 +- .../OpenEXRCore/internal_dwa_compressor.h | 6 +- pxr/imaging/hio/OpenEXR/OpenEXRCoreUnity.h | 26 + pxr/imaging/hio/OpenEXR/openexr-c.c | 1111 ++++++++++++++++- pxr/imaging/hio/OpenEXR/openexr-c.h | 160 +++ pxr/imaging/hio/OpenEXRImage.cpp | 860 +++++++++++++ pxr/imaging/hio/plugInfo.json | 5 + pxr/imaging/plugin/hioOiio/plugInfo.json | 2 +- 8 files changed, 2146 insertions(+), 30 deletions(-) create mode 100644 pxr/imaging/hio/OpenEXR/openexr-c.h create mode 100644 pxr/imaging/hio/OpenEXRImage.cpp diff --git a/pxr/imaging/hio/CMakeLists.txt b/pxr/imaging/hio/CMakeLists.txt index 270f9ae4c6..1ef18d70fc 100644 --- a/pxr/imaging/hio/CMakeLists.txt +++ b/pxr/imaging/hio/CMakeLists.txt @@ -31,12 +31,14 @@ pxr_library(hio api.h PRIVATE_HEADERS + OpenEXR/openexr-c.h rankedTypeMap.h stb/stb_image.h stb/stb_image_resize.h stb/stb_image_write.h CPPFILES + OpenEXRImage.cpp stbImage.cpp OpenEXR/openexr-c.c @@ -47,7 +49,3 @@ pxr_library(hio overview.dox ) -target_compile_definitions(hio PRIVATE - ILMTHREAD_THREADING_ENABLED - OPENEXR_C_STANDALONE - OPENEXR_EXPORT=static) diff --git a/pxr/imaging/hio/OpenEXR/OpenEXRCore/internal_dwa_compressor.h b/pxr/imaging/hio/OpenEXR/OpenEXRCore/internal_dwa_compressor.h index a8e83f4a25..6bdcda052b 100644 --- a/pxr/imaging/hio/OpenEXR/OpenEXRCore/internal_dwa_compressor.h +++ b/pxr/imaging/hio/OpenEXR/OpenEXRCore/internal_dwa_compressor.h @@ -847,11 +847,11 @@ DwaCompressor_uncompress ( if (compressedUnknownBuf >= dataPtrEnd || dataPtr > compressedAcBuf || - compressedAcBuf >= dataPtrEnd || + compressedAcBuf > dataPtrEnd || dataPtr > compressedDcBuf || - compressedDcBuf >= dataPtrEnd || + compressedDcBuf > dataPtrEnd || dataPtr > compressedRleBuf || - compressedRleBuf >= dataPtrEnd || + compressedRleBuf > dataPtrEnd || (compressedRleBuf + rleCompressedSize) > dataPtrEnd) { return EXR_ERR_CORRUPT_CHUNK; diff --git a/pxr/imaging/hio/OpenEXR/OpenEXRCoreUnity.h b/pxr/imaging/hio/OpenEXR/OpenEXRCoreUnity.h index c669982e55..afa710131a 100644 --- a/pxr/imaging/hio/OpenEXR/OpenEXRCoreUnity.h +++ b/pxr/imaging/hio/OpenEXR/OpenEXRCoreUnity.h @@ -1,3 +1,27 @@ +// +// Copyright 2023 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +/// \file OpenEXRCoreUnity.h #include "OpenEXRCore/openexr_conf.h" @@ -13,6 +37,8 @@ #include "deflate/lib/zlib_compress.c" #include "deflate/lib/zlib_decompress.c" +#include "openexr-c.h" + #include "OpenEXRCore/attributes.c" #include "OpenEXRCore/base.c" #include "OpenEXRCore/channel_list.c" diff --git a/pxr/imaging/hio/OpenEXR/openexr-c.c b/pxr/imaging/hio/OpenEXR/openexr-c.c index 0bb36c9a53..1c9ff26de5 100644 --- a/pxr/imaging/hio/OpenEXR/openexr-c.c +++ b/pxr/imaging/hio/OpenEXR/openexr-c.c @@ -1,25 +1,1092 @@ +// +// Copyright 2023 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// -// The OpenEXR configuration may be set via an external build configuration -#ifdef IMATH_HALF_SAFE_FOR_C -#undef IMATH_HALF_SAFE_FOR_C -#endif -#ifndef EXR_INTERNAL -#define EXR_INTERNAL static -#endif -#ifndef ILMTHREAD_THREADING_ENABLED -#define ILMTHREAD_THREADING_ENABLED -#endif -#ifndef OPENEXR_C_STANDALONE -#define OPENEXR_C_STANDALONE -#endif -#ifndef OPENEXR_EXPORT -#define OPENEXR_EXPORT static -#endif - -#if defined(__clang__) -#pragma clang diagnostic ignored "-Wunused-function" -#elif defined(__GNUC__) -#pragma GCC diagnostic ignored "-Wunused-function" -#endif +#include "pxr/base/arch/pragmas.h" + +// Not all functions in the OpenEXR library are used by Hio, and the OpenEXR +// symbols themselves are declared static for inclusion within Hio. +// Therefore, the unused function warning is suppressed as the messages are +// not useful for development, as it is expected that many functions are +// defined but not referenced or exported. +ARCH_PRAGMA_UNUSED_FUNCTION #include "OpenEXRCoreUnity.h" + +#include +#include + +// re-export the statically hidden exr_ functions as required +// for visibility from C++ + +exr_result_t nanoexr_get_attribute_by_index( + exr_const_context_t ctxt, + int part_index, + int i, + const exr_attribute_t** outattr) +{ + return exr_get_attribute_by_index(ctxt, part_index, + EXR_ATTR_LIST_SORTED_ORDER, i, outattr); +} + +int nanoexr_get_attribute_count(exr_const_context_t ctxt, int part_index) { + int count = 0; + exr_get_attribute_count(ctxt, part_index, &count); + return count; +} + +void nanoexr_attr_set_string(exr_context_t ctxt, int part_index, + const char* name, const char* s) { + exr_attr_set_string(ctxt, part_index, name, s); +} + +void nanoexr_attr_set_int(exr_context_t ctxt, int part_index, + const char* name, int v) { + exr_attr_set_int(ctxt, part_index, name, v); +} + +void nanoexr_attr_set_float(exr_context_t ctxt, int part_index, + const char* name, float v) { + exr_attr_set_float(ctxt, part_index, name, v); +} + +void nanoexr_attr_set_double(exr_context_t ctxt, int part_index, + const char* name, double v) { + exr_attr_set_double(ctxt, part_index, name, v); +} + +void nanoexr_attr_set_m44f(exr_context_t ctxt, int part_index, + const char* name, const float* v) { + exr_attr_set_m44f(ctxt, part_index, name, (exr_attr_m44f_t*) v); +} + +void nanoexr_attr_set_m44d(exr_context_t ctxt, int part_index, + const char* name, const double* v) { + exr_attr_set_m44d(ctxt, part_index, name, (exr_attr_m44d_t*) v); +} + +const char* nanoexr_get_error_code_as_string (exr_result_t code) +{ + return exr_get_error_code_as_string(code); +} + +static float integrate_gaussian(float x, float sigma) +{ + float p1 = erf((x - 0.5f) / sigma * sqrtf(0.5f)); + float p2 = erf((x + 0.5f) / sigma * sqrtf(0.5f)); + return (p2-p1) * 0.5f; +} + +bool nanoexr_Gaussian_resample(const nanoexr_ImageData_t* src, + nanoexr_ImageData_t* dst) +{ + if (src->pixelType != EXR_PIXEL_FLOAT && dst->pixelType != EXR_PIXEL_FLOAT) + return false; + if (src->channelCount != dst->channelCount) + return false; + + const int srcWidth = src->width; + const int dstWidth = dst->width; + const int srcHeight = src->height; + const int dstHeight = dst->height; + if (srcWidth == dstWidth && srcHeight == dstHeight) { + memcpy(dst->data, src->data, + src->channelCount * srcWidth * srcHeight * sizeof(float)); + return true; + } + + float* srcData = (float*)src->data; + float* dstData = (float*)dst->data; + + // two pass image resize using a Gaussian filter per: + // https://bartwronski.com/2021/10/31/practical-gaussian-filter-binomial-filter-and-small-sigma-gaussians + // chose sigma to suppress high frequencies that can't be represented + // in the downsampled image + const float ratio = (float)dstWidth / (float)srcWidth; + const float sigma = 1.f / 2.f * ratio; + const float support = 0.995f; + float radius = ceilf(sqrtf(-2.0f * sigma * sigma * logf(1.0f - support))); + int filterSize = (int)radius; + if (!filterSize) + return false; + + float* filter = (float*) malloc(sizeof(float) * 1 + filterSize * 2); + float sum = 0.0f; + for (int i = 0; i <= filterSize; i++) { + int idx = i + filterSize; + filter[idx] = integrate_gaussian((float) i, sigma); + if (i > 0) + sum += 2 * filter[idx]; + else + sum = filter[idx]; + } + for (int i = 0; i <= filterSize; ++i) { + filter[i + filterSize] /= sum; + } + for (int i = 0; i < filterSize; ++i) { + filter[filterSize - i - 1] = filter[i + filterSize + 1]; + } + int fullFilterSize = filterSize * 2 + 1; + + // first pass: resize horizontally + int srcFloatsPerLine = src->channelCount * srcWidth; + int dstFloatsPerLine = src->channelCount * dstWidth; + float* firstPass = (float*)malloc(dstWidth * src->channelCount * srcHeight * sizeof(float)); + for (int y = 0; y < srcHeight; ++y) { + for (int x = 0; x < dstWidth; ++x) { + for (int c = 0; c < src->channelCount; ++c) { + float sum = 0.0f; + for (int i = 0; i < fullFilterSize; ++i) { + int srcX = (int)((x + 0.5f) / ratio - 0.5f) + i - filterSize; + if (srcX < 0 || srcX >= srcWidth) + continue; + int idx = y * srcFloatsPerLine + (srcX * src->channelCount) + c; + sum += srcData[idx] * filter[i]; + } + firstPass[y * dstFloatsPerLine + (x * src->channelCount) + c] = sum; + } + } + } + + // second pass: resize vertically + float* secondPass = dstData; + for (int y = 0; y < dstHeight; ++y) { + for (int x = 0; x < dstWidth; ++x) { + for (int c = 0; c < src->channelCount; ++c) { + float sum = 0.0f; + for (int i = 0; i < fullFilterSize; ++i) { + int srcY = (int)((y + 0.5f) / ratio - 0.5f) + i - filterSize; + if (srcY < 0 || srcY >= srcHeight) + continue; + int idx = src->channelCount * srcY * dstWidth + (x * src->channelCount) + c; + sum += firstPass[idx] * filter[i]; + } + secondPass[src->channelCount * y * dstWidth + (x * src->channelCount) + c] = sum; + } + } + } + free(filter); + free(firstPass); + return true; +} + +static void +err_cb (exr_const_context_t f, int code, const char* msg) +{ + fprintf(stderr, "err_cb ERROR %d: %s\n", code, msg); +} + +void nanoexr_set_defaults(const char* filename, nanoexr_Reader_t* reader) { + exr_get_library_version (&reader->exrSDKVersionMajor, + &reader->exrSDKVersionMinor, + &reader->exrSDKVersionPatch, + &reader->exrSDKExtraInfo); + + reader->filename = strdup(filename); + reader->width = 0; + reader->height = 0; + reader->channelCount = 0; + reader->pixelType = EXR_PIXEL_LAST_TYPE; + reader->partIndex = 0; + reader->numMipLevels = 0; + reader->isScanline = false; + reader->tileLevelCount = 0; + reader->wrapMode = nanoexr_WrapModeClampToEdge; +} + + +void nanoexr_free_storage(nanoexr_Reader_t* reader) { + if (!reader) + return; + free(reader->filename); +} + +int nanoexr_read_header(nanoexr_Reader_t* reader, exr_read_func_ptr_t readFn, + nanoexr_attrRead attrRead, void* callback_userData, + int partIndex) { + if (!reader) + return EXR_ERR_INVALID_ARGUMENT; + + exr_context_t exr; + exr_context_initializer_t init = EXR_DEFAULT_CONTEXT_INITIALIZER; + init.read_fn = readFn; + init.user_data = callback_userData; + int rv = exr_start_read(&exr, reader->filename, &init); + if (rv != EXR_ERR_SUCCESS) { + exr_finish(&exr); + return rv; + } + + exr_attr_box2i_t datawin; + rv = exr_get_data_window(exr, partIndex, &datawin); + if (rv != EXR_ERR_SUCCESS) { + exr_finish(&exr); + return rv; + } + reader->partIndex = partIndex; + reader->width = datawin.max.x - datawin.min.x + 1; + reader->height = datawin.max.y - datawin.min.y + 1; + + exr_storage_t storage; + rv = exr_get_storage(exr, partIndex, &storage); + if (rv != EXR_ERR_SUCCESS) { + exr_finish(&exr); + return rv; + } + reader->isScanline = (storage == EXR_STORAGE_SCANLINE); + + int numMipLevelsX = 1, numMipLevelsY = 1; + if (reader->isScanline) { + numMipLevelsX = 1; + numMipLevelsY = 1; + } else { + rv = exr_get_tile_levels(exr, partIndex, &numMipLevelsX, &numMipLevelsY); + if (rv != EXR_ERR_SUCCESS) { + exr_finish(&exr); + return rv; + } + } + if (numMipLevelsX != numMipLevelsY) { + // current only supporting mip levels uniformly in both directions + numMipLevelsX = 1; + numMipLevelsY = 1; + } + reader->numMipLevels = numMipLevelsX; + + const exr_attr_chlist_t* chlist = NULL; + rv = exr_get_channels(exr, partIndex, &chlist); + if (rv != EXR_ERR_SUCCESS) { + exr_finish(&exr); + return rv; + } + reader->channelCount = chlist->num_channels; + reader->pixelType = chlist->entries[0].pixel_type; + + const exr_attribute_t* attr = NULL; + exr_result_t wrap_rv = exr_get_attribute_by_name(exr, partIndex, + "wrapmodes", &attr); + if (wrap_rv == EXR_ERR_SUCCESS && attr != NULL) { + if (!strncmp("black", attr->string->str, 5)) + reader->wrapMode = nanoexr_WrapModeClampToBorderColor; + else if (!strncmp("clamp", attr->string->str, 5)) + reader->wrapMode = nanoexr_WrapModeClampToEdge; + else if (!strncmp("periodic", attr->string->str, 8)) + reader->wrapMode = nanoexr_WrapModeRepeat; + else if (!strncmp("mirror", attr->string->str, 6)) + reader->wrapMode = nanoexr_WrapModeMirrorRepeat; + } + + if (attrRead) + attrRead(callback_userData, exr); + + exr_finish(&exr); + return rv; +} + +exr_result_t nanoexr_write_f16_exr( + const char* filename, + nanoexr_attrsAdd attrsAdd, void* attrsAdd_userData, + int width, int height, + uint8_t* red, int32_t redPixelStride, int32_t redLineStride, + uint8_t* green, int32_t greenPixelStride, int32_t greenLineStride, + uint8_t* blue, int32_t bluePixelStride, int32_t blueLineStride) +{ + int partidx = 0; + exr_context_t exr; + exr_context_initializer_t init = EXR_DEFAULT_CONTEXT_INITIALIZER; + + // switch to write mode after everything is set up + /// XXX improvement: use EXR_INTERMEDIATE_TEMP_FILE + exr_result_t result = exr_start_write( + &exr, filename, EXR_WRITE_FILE_DIRECTLY, &init); + if (result != EXR_ERR_SUCCESS) { + return result; + } + + result = exr_add_part(exr, "beauty", EXR_STORAGE_SCANLINE, &partidx); + if (result != EXR_ERR_SUCCESS) { + return result; + } + + // modern exr should support long names + exr_set_longname_support(exr, 1); + + /// XXX In the future Hio may be able to specify compression levels + result = exr_set_zip_compression_level(exr, 0, 4); + if (result != EXR_ERR_SUCCESS) { + return result; + } + + exr_attr_box2i_t dataw = {0, 0, width - 1, height - 1}; + exr_attr_box2i_t dispw = dataw; + exr_attr_v2f_t swc = {0.5f, 0.5f}; // center of the screen window + result = exr_initialize_required_attr ( + exr, + partidx, + &dataw, + &dispw, + 1.f, // pixel aspect ratio + &swc, + 1.f, // screen window width corresponding to swc + EXR_LINEORDER_INCREASING_Y, + EXR_COMPRESSION_ZIPS); // one line per chunk, ZIP is 16 + if (result != EXR_ERR_SUCCESS) { + return result; + } + + result = exr_add_channel( + exr, + partidx, + "R", + EXR_PIXEL_HALF, + EXR_PERCEPTUALLY_LOGARITHMIC, // hint to compressor data is an image + 1, 1); // x & y sampling rate + if (result != EXR_ERR_SUCCESS) { + return result; + } + + result = exr_add_channel( + exr, + partidx, + "G", + EXR_PIXEL_HALF, + EXR_PERCEPTUALLY_LOGARITHMIC, + 1, 1); // x & y sampling rate + if (result != EXR_ERR_SUCCESS) { + return result; + } + + result = exr_add_channel( + exr, + partidx, + "B", + EXR_PIXEL_HALF, + EXR_PERCEPTUALLY_LOGARITHMIC, + 1, 1); // x & y sampling rate + if (result != EXR_ERR_SUCCESS) { + return result; + } + + result = exr_set_version(exr, partidx, 1); // 1 is the latest version + + // set chromaticities to Rec. ITU-R BT.709-3 + exr_attr_chromaticities_t chroma = { + 0.6400f, 0.3300f, // red + 0.3000f, 0.6000f, // green + 0.1500f, 0.0600f, // blue + 0.3127f, 0.3290f}; // white + result = exr_attr_set_chromaticities(exr, partidx, "chromaticities", &chroma); + if (result != EXR_ERR_SUCCESS) { + return result; + } + + if (attrsAdd) { + attrsAdd(attrsAdd_userData, exr); + } + + result = exr_write_header(exr); + if (result != EXR_ERR_SUCCESS) { + return result; + } + + exr_encode_pipeline_t encoder; + exr_chunk_info_t cinfo; + int32_t scansperchunk = 0; + exr_get_scanlines_per_chunk(exr, partidx, &scansperchunk); + bool first = true; + + uint8_t* pRed = red + (height - 1) * redLineStride; + uint8_t* pGreen = green + (height - 1) * greenLineStride; + uint8_t* pBlue = blue + (height - 1) * blueLineStride; + + int chunkInfoIndex = 0; + for (int y = dataw.min.y; y <= dataw.max.y; y += scansperchunk, ++chunkInfoIndex) { + result = exr_write_scanline_chunk_info(exr, partidx, y, &cinfo); + if (result != EXR_ERR_SUCCESS) { + return result; + } + + if (first) + { + result = exr_encoding_initialize(exr, partidx, &cinfo, &encoder); + if (result != EXR_ERR_SUCCESS) { + return result; + } + } + else + { + result = exr_encoding_update(exr, partidx, &cinfo, &encoder); + } + + encoder.channel_count = 3; + encoder.channels[0].user_pixel_stride = redPixelStride; + encoder.channels[0].user_line_stride = redLineStride; + encoder.channels[0].encode_from_ptr = pRed; + encoder.channels[0].height = scansperchunk; // chunk height + encoder.channels[0].width = dataw.max.x - dataw.min.y + 1; + encoder.channels[1].user_pixel_stride = greenPixelStride; + encoder.channels[1].user_line_stride = greenLineStride; + encoder.channels[1].height = scansperchunk; // chunk height + encoder.channels[1].width = dataw.max.x - dataw.min.y + 1; + encoder.channels[1].encode_from_ptr = pGreen; + encoder.channels[2].user_pixel_stride = bluePixelStride; + encoder.channels[2].user_line_stride = blueLineStride; + encoder.channels[2].height = scansperchunk; // chunk height + encoder.channels[2].width = dataw.max.x - dataw.min.y + 1; + encoder.channels[2].encode_from_ptr = pBlue; + + if (first) { + result = exr_encoding_choose_default_routines(exr, partidx, &encoder); + if (result != EXR_ERR_SUCCESS) { + return result; + } + } + + result = exr_encoding_run(exr, partidx, &encoder); + if (result != EXR_ERR_SUCCESS) { + return result; + } + + first = false; + pRed -= redLineStride; + pGreen -= greenLineStride; + pBlue -= blueLineStride; + } + + result = exr_encoding_destroy(exr, &encoder); + if (result != EXR_ERR_SUCCESS) { + return result; + } + + result = exr_finish(&exr); + return result; +} + +int nanoexr_getPixelTypeSize(exr_pixel_type_t t) +{ + switch (t) { + case EXR_PIXEL_HALF: return 2; + case EXR_PIXEL_UINT: return 4; + case EXR_PIXEL_FLOAT: return 4; + default: return 0; + } +} + +static bool strIsRed(const char* layerName, const char* str) { + if (layerName && (strncmp(layerName, str, strlen(layerName)) != 0)) + return false; + + // check if the case folded string is R or RED, or ends in .R or .RED + char* folded = strdup(str); + for (int i = 0; folded[i]; ++i) { + folded[i] = tolower(folded[i]); + } + if (strcmp(folded, "r") == 0 || strcmp(folded, "red") == 0) + return true; + size_t l = strlen(folded); + if ((l > 2) && (folded[l - 2] == '.') && (folded[l - 1] == 'r')) + return true; + if (l < 4) + return false; + return strcmp(folded + l - 4, ".red"); +} + +static bool strIsGreen(const char* layerName, const char* str) { + if (layerName && (strncmp(layerName, str, strlen(layerName)) != 0)) + return false; + + // check if the case folded string is G or GREEN, or ends in .G or .GREEN + char* folded = strdup(str); + for (int i = 0; folded[i]; ++i) { + folded[i] = tolower(folded[i]); + } + if (strcmp(folded, "g") == 0 || strcmp(folded, "green") == 0) + return true; + size_t l = strlen(folded); + if ((l > 2) && (folded[l - 2] == '.') && (folded[l - 1] == 'g')) + return true; + if (l < 6) + return false; + return strcmp(folded + l - 6, ".green"); +} + +static bool strIsBlue(const char* layerName, const char* str) { + if (layerName && (strncmp(layerName, str, strlen(layerName)) != 0)) + return false; + + // check if the case folded string is B or BLUE, or ends in .B or .BLUE + char* folded = strdup(str); + for (int i = 0; folded[i]; ++i) { + folded[i] = tolower(folded[i]); + } + if (strcmp(folded, "b") == 0 || strcmp(folded, "blue") == 0) + return true; + size_t l = strlen(folded); + if ((l > 2) && (folded[l - 2] == '.') && (folded[l - 1] == 'b')) + return true; + if (l < 5) + return false; + return strcmp(folded + l - 5, ".blue"); +} + +static bool strIsAlpha(const char* layerName, const char* str) { + if (layerName && (strncmp(layerName, str, strlen(layerName)) != 0)) + return false; + + // check if the case folded string is A or ALPHA, or ends in .A or .ALPHA + char* folded = strdup(str); + for (int i = 0; folded[i]; ++i) { + folded[i] = tolower(folded[i]); + } + if (strcmp(folded, "a") == 0 || strcmp(folded, "alpha") == 0) + return true; + size_t l = strlen(folded); + if ((l > 2) && (folded[l - 2] == '.') && (folded[l - 1] == 'a')) + return true; + if (l < 6) + return false; + return strcmp(folded + l - 6, ".alpha"); +} + +void nanoexr_release_image_data(nanoexr_ImageData_t* imageData) +{ + if (imageData->data) { + free(imageData->data); + imageData->data = NULL; + } +} + +static void nanoexr_cleanup(exr_context_t exr, + exr_decode_pipeline_t* decoder) +{ + if (exr && decoder) { + exr_decoding_destroy(exr, decoder); + } +} + +static void +tiled_exr_err_cb (exr_const_context_t f, int code, const char* msg) +{ + fprintf(stderr, "err_cb ERROR %d: %s\n", code, msg); +} + +static exr_result_t _nanoexr_rgba_decoding_initialize( + exr_context_t exr, + nanoexr_ImageData_t* img, + const char* layerName, + int partIndex, exr_chunk_info_t* cinfo, exr_decode_pipeline_t* decoder, + int* rgba) +{ + exr_result_t rv = EXR_ERR_SUCCESS; + rv = exr_decoding_initialize(exr, partIndex, cinfo, decoder); + if (rv != EXR_ERR_SUCCESS) { + fprintf(stderr, "exr_decoding_initialize failed: %s\n", + exr_get_default_error_message(rv)); + return rv; + } + int bytesPerChannel = nanoexr_getPixelTypeSize(img->pixelType); + for (int i = 0; i < img->channelCount; ++i) { + rgba[i] = -1; + } + for (int c = 0; c < decoder->channel_count; ++c) { + int channelIndex = -1; + if (strIsRed(layerName, decoder->channels[c].channel_name)) { + rgba[0] = c; + channelIndex = 0; + } + else if (strIsGreen(layerName, decoder->channels[c].channel_name)) { + rgba[1] = c; + channelIndex = 1; + } + else if (strIsBlue(layerName, decoder->channels[c].channel_name)) { + rgba[2] = c; + channelIndex = 2; + } + else if (strIsAlpha(layerName, decoder->channels[c].channel_name)) { + rgba[3] = c; + channelIndex = 3; + } + if (channelIndex == -1 || channelIndex >= img->channelCount) { + decoder->channels[c].decode_to_ptr = 0; + continue; + } + // precompute pixel channel byte offset + decoder->channels[c].decode_to_ptr = (uint8_t*) (ptrdiff_t) (channelIndex * bytesPerChannel); + } + return rv; +} + +exr_result_t nanoexr_read_tiled_exr(exr_context_t exr, + nanoexr_ImageData_t* img, + const char* layerName, + int partIndex, + int mipLevel, + int* rgbaIndex) +{ + exr_decode_pipeline_t decoder = EXR_DECODE_PIPELINE_INITIALIZER; + exr_result_t rv = EXR_ERR_SUCCESS; + do { + int bytesPerChannel = nanoexr_getPixelTypeSize(img->pixelType); + uint32_t tilew = 0, tileh = 0; + exr_tile_level_mode_t levelMode; + exr_tile_round_mode_t roundMode; + rv = exr_get_tile_descriptor(exr, partIndex, &tilew, &tileh, &levelMode, &roundMode); + if (rv != EXR_ERR_SUCCESS) + break; + + int mipLevelsX = 0, mipLvelsY = 0; + rv = exr_get_tile_levels(exr, partIndex, &mipLevelsX, &mipLvelsY); + if (rv != EXR_ERR_SUCCESS) + break; + + int levelWidth = 0, levelHeight = 0; + rv = exr_get_level_sizes(exr, partIndex, mipLevel, mipLevel, &levelWidth, &levelHeight); + if (rv != EXR_ERR_SUCCESS) + break; + + int32_t xTiles = (img->width + tilew - 1) / tilew; + int32_t yTiles = (img->height + tileh - 1) / tileh; + int pixelStride = img->channelCount * bytesPerChannel; + int imageYStride = img->width * pixelStride; + + memset(&decoder, 0, sizeof(decoder)); + for (int tileY = 0; tileY < yTiles; ++tileY) { + for (int tileX = 0; tileX < xTiles; ++tileX) { + exr_chunk_info_t cinfo; + rv = exr_read_tile_chunk_info(exr, partIndex, + tileX, tileY, mipLevel, mipLevel, &cinfo); + if (rv != EXR_ERR_SUCCESS) + break; + if (decoder.channels == NULL) { + rv = _nanoexr_rgba_decoding_initialize(exr, img, + layerName, partIndex, &cinfo, &decoder, rgbaIndex); + if (rv != EXR_ERR_SUCCESS) + break; + + rv = exr_decoding_choose_default_routines(exr, partIndex, &decoder); + if (rv != EXR_ERR_SUCCESS) + break; + } + else { + // Reuse existing pipeline + rv = exr_decoding_update(exr, partIndex, &cinfo, &decoder); + if (rv != EXR_ERR_SUCCESS) + break; + } + + int x = tileX * tilew; + int y = tileY * tileh; + uint8_t* curtilestart = img->data; + curtilestart += y * imageYStride; + curtilestart += x * pixelStride; + for (int c = 0; c < decoder.channel_count; ++c) { + if (rgbaIndex[c] >= 0) { + decoder.channels[c].decode_to_ptr = curtilestart + rgbaIndex[c] * bytesPerChannel; + } + else { + decoder.channels[c].decode_to_ptr = NULL; + } + decoder.channels[c].user_pixel_stride = pixelStride; + decoder.channels[c].user_line_stride = imageYStride; + decoder.channels[c].user_bytes_per_element = bytesPerChannel; + } + + rv = exr_decoding_run(exr, partIndex, &decoder); + if (rv != EXR_ERR_SUCCESS) + break; + } + } + } while(false); + + if (rv != EXR_ERR_SUCCESS) + fprintf(stderr, "nanoexr error: %s\n", exr_get_default_error_message(rv)); + + nanoexr_cleanup(exr, &decoder); + return rv; +} + +exr_result_t nanoexr_read_scanline_exr(exr_context_t exr, + nanoexr_ImageData_t* img, + const char* layerName, + int partIndex, + int* rgbaIndex) +{ + exr_decode_pipeline_t decoder = EXR_DECODE_PIPELINE_INITIALIZER; + exr_result_t rv = EXR_ERR_SUCCESS; + + // use a do/while(false) to allow error handling via a break and + // check at the end. + do { + int scanLinesPerChunk; + rv = exr_get_scanlines_per_chunk(exr, partIndex, &scanLinesPerChunk); + if (rv != EXR_ERR_SUCCESS) + break; + + int bytesPerChannel = nanoexr_getPixelTypeSize(img->pixelType); + int pixelbytes = bytesPerChannel * img->channelCount; + + for (int chunky = img->dataWindowMinY; chunky < img->dataWindowMaxY; chunky += scanLinesPerChunk) { + exr_chunk_info_t cinfo; + rv = exr_read_scanline_chunk_info(exr, partIndex, chunky, &cinfo); + if (rv != EXR_ERR_SUCCESS) + break; + + if (decoder.channels == NULL) { + rv = _nanoexr_rgba_decoding_initialize(exr, img, layerName, + partIndex, &cinfo, &decoder, rgbaIndex); + if (rv != EXR_ERR_SUCCESS) + break; + + if (decoder.channels == NULL) { + rv = EXR_ERR_INCORRECT_CHUNK; + break; + } + bytesPerChannel = decoder.channels[0].bytes_per_element; + pixelbytes = bytesPerChannel * img->channelCount; + + for (int c = 0; c < decoder.channel_count; ++c) { + decoder.channels[c].user_pixel_stride = img->channelCount * bytesPerChannel; + decoder.channels[c].user_line_stride = decoder.channels[c].user_pixel_stride * img->width; + decoder.channels[c].user_bytes_per_element = bytesPerChannel; + } + + rv = exr_decoding_choose_default_routines(exr, partIndex, &decoder); + if (rv != EXR_ERR_SUCCESS) + break; + } + else { + // Reuse existing pipeline + rv = exr_decoding_update(exr, partIndex, &cinfo, &decoder); + if (rv != EXR_ERR_SUCCESS) + break; + } + uint8_t* start = img->data + (chunky - img->dataWindowMinY) * img->width * pixelbytes; + for (int c = 0; c < decoder.channel_count; ++c) { + decoder.channels[c].decode_to_ptr = start + rgbaIndex[c] * bytesPerChannel; + } + + rv = exr_decoding_run(exr, partIndex, &decoder); + if (rv != EXR_ERR_SUCCESS) + break; + } + } + while (false); + + if (rv != EXR_ERR_SUCCESS) + fprintf(stderr, "nanoexr error: %s\n", exr_get_default_error_message(rv)); + + nanoexr_cleanup(exr, &decoder); + return rv; +} + +void fill_channel_u16(nanoexr_ImageData_t* img, int channel, uint16_t value) { + for (int y = 0; y < img->height; ++y) { + for (int x = 0; x < img->width; ++x) { + uint8_t* curpixel = img->data + + y * img->width * img->channelCount * 2 + + x * img->channelCount * 2 + channel * 2; + *(uint16_t*) curpixel = value; + } + } +} + +void fill_channel_u32(nanoexr_ImageData_t* img, int channel, uint32_t value) { + for (int y = 0; y < img->height; ++y) { + for (int x = 0; x < img->width; ++x) { + uint8_t* curpixel = img->data + + y * img->width * img->channelCount * 4 + + x * img->channelCount * 4 + channel * 4; + *(uint32_t*) curpixel = value; + } + } +} + +void fill_channel_float(nanoexr_ImageData_t* img, int channel, float value) { + for (int y = 0; y < img->height; ++y) { + for (int x = 0; x < img->width; ++x) { + uint8_t* curpixel = img->data + + y * img->width * img->channelCount * 4 + + x * img->channelCount * 4 + channel * 4; + *(float*) curpixel = value; + } + } +} + +void copy_channel_u16(nanoexr_ImageData_t* img, int from_channel, int to_channel) { + for (int y = 0; y < img->height; ++y) { + for (int x = 0; x < img->width; ++x) { + uint8_t* curpixel = img->data + + y * img->width * img->channelCount * 2 + + x * img->channelCount * 2 + from_channel * 2; + uint8_t* topixel = img->data + + y * img->width * img->channelCount * 2 + + x * img->channelCount * 2 + to_channel * 2; + *(uint16_t*) topixel = *(uint16_t*) curpixel; + } + } +} + +void copy_channel_u32(nanoexr_ImageData_t* img, int from_channel, int to_channel) { + for (int y = 0; y < img->height; ++y) { + for (int x = 0; x < img->width; ++x) { + uint8_t* curpixel = img->data + + y * img->width * img->channelCount * 4 + + x * img->channelCount * 4 + from_channel * 4; + uint8_t* topixel = img->data + + y * img->width * img->channelCount * 4 + + x * img->channelCount * 4 + to_channel * 4; + *(uint32_t*) topixel = *(uint32_t*) curpixel; + } + } +} + +void copy_channel_float(nanoexr_ImageData_t* img, int from_channel, int to_channel) { + for (int y = 0; y < img->height; ++y) { + for (int x = 0; x < img->width; ++x) { + uint8_t* curpixel = img->data + + y * img->width * img->channelCount * 4 + + x * img->channelCount * 4 + from_channel * 4; + uint8_t* topixel = img->data + + y * img->width * img->channelCount * 4 + + x * img->channelCount * 4 + to_channel * 4; + *(float*) topixel = *(float*) curpixel; + } + } +} + +exr_result_t nanoexr_read_exr(const char* filename, + exr_read_func_ptr_t readfn, + void* callback_userData, + nanoexr_ImageData_t* img, + const char* layerName, + int numChannelsToRead, + int partIndex, + int mipLevel) { + exr_context_t exr = NULL; + exr_result_t rv = EXR_ERR_SUCCESS; + exr_context_initializer_t cinit = EXR_DEFAULT_CONTEXT_INITIALIZER; + cinit.error_handler_fn = tiled_exr_err_cb; + cinit.read_fn = readfn; + cinit.user_data = callback_userData; + rv = exr_test_file_header(filename, &cinit); + if (rv != EXR_ERR_SUCCESS) { + fprintf(stderr, "nanoexr header error: %s\n", + exr_get_default_error_message(rv)); + return rv; + } + + rv = exr_start_read(&exr, filename, &cinit); + if (rv != EXR_ERR_SUCCESS) { + fprintf(stderr, "nanoexr start error: %s\n", + exr_get_default_error_message(rv)); + exr_finish(&exr); + return rv; + } + exr_storage_t storage; + rv = exr_get_storage(exr, partIndex, &storage); + if (rv != EXR_ERR_SUCCESS) { + fprintf(stderr, "nanoexr storage error: %s\n", + exr_get_default_error_message(rv)); + exr_finish(&exr); + return rv; + } + + int num_sub_images = 0; + rv = exr_get_count(exr, &num_sub_images); + if (rv != EXR_ERR_SUCCESS || partIndex >= num_sub_images) { + fprintf(stderr, "nanoexr error: part index %d out of range\n", partIndex); + exr_finish(&exr); + return rv; + } + + // check that compression type is understood + exr_compression_t compression; + rv = exr_get_compression(exr, partIndex, &compression); + if (rv != EXR_ERR_SUCCESS) { + fprintf(stderr, "nanoexr compression error: %s\n", + exr_get_default_error_message(rv)); + exr_finish(&exr); + return rv; + } + + exr_attr_box2i_t datawin; + exr_attr_box2i_t displaywin; + rv = exr_get_data_window(exr, partIndex, &datawin); + if (rv != EXR_ERR_SUCCESS) { + fprintf(stderr, "nanoexr data window error: %s\n", + exr_get_default_error_message(rv)); + exr_finish(&exr); + return rv; + } + rv = exr_get_display_window(exr, partIndex, &displaywin); + if (rv != EXR_ERR_SUCCESS) { + fprintf(stderr, "nanoexr display window error: %s\n", + exr_get_default_error_message(rv)); + exr_finish(&exr); + return rv; + } + + int width = datawin.max.x - datawin.min.x + 1; + int height = datawin.max.y - datawin.min.y + 1; + + const exr_attr_chlist_t* chlist = NULL; + rv = exr_get_channels(exr, partIndex, &chlist); + if (rv != EXR_ERR_SUCCESS) { + fprintf(stderr, "nanoexr channels error: %s\n", + exr_get_default_error_message(rv)); + exr_finish(&exr); + return rv; + } + + exr_pixel_type_t pixelType = chlist->entries[0].pixel_type; + int bytesPerChannel = nanoexr_getPixelTypeSize(pixelType); + if (bytesPerChannel == 0) { + fprintf(stderr, "nanoexr error: unsupported pixel type\n"); + exr_finish(&exr); + return rv; + } + + img->channelCount = numChannelsToRead; + img->width = width; + img->height = height; + img->dataSize = width * height * img->channelCount * bytesPerChannel; + img->pixelType = pixelType; + img->dataWindowMinY = datawin.min.y; + img->dataWindowMaxY = datawin.max.y; + img->data = (unsigned char*) malloc(img->dataSize); + if (img->data == NULL) { + fprintf(stderr, "nanoexr error: could not allocate memory for image data\n"); + exr_finish(&exr); + return rv; + } + + int rgbaIndex[4] = {-1, -1, -1, -1}; + + if (storage == EXR_STORAGE_TILED) { + rv = nanoexr_read_tiled_exr(exr, img, layerName, partIndex, mipLevel, rgbaIndex); + } + else { + // n ote - scanline images do not support mip levels + rv = nanoexr_read_scanline_exr(exr, img, layerName, partIndex, rgbaIndex); + } + + if (rv != EXR_ERR_SUCCESS) { + fprintf(stderr, "nanoexr: failed to read image\n"); + free(img->data); + img->data = NULL; + return rv; + } + + uint16_t oneValue = float_to_half(1.0f); + uint16_t zeroValue = float_to_half(0.0f); + + // if the image is rgba, and any of the channels are missing, fill them in + // by propagating the channel to the left if possible. If not, fill with + // zero or one. Alpha is always filled with one. + if (img->channelCount == 4) { + if (rgbaIndex[3] == -1) { + // fill the alpha channel with 1.0 + if (img->pixelType == EXR_PIXEL_HALF) { + fill_channel_u16(img, 3, oneValue); + } + else if (img->pixelType == EXR_PIXEL_FLOAT) { + fill_channel_float(img, 3, 1.0f); + } + else if (img->pixelType == EXR_PIXEL_UINT) { + // We're treating uint data as data, not rgba, so fill with zero + fill_channel_u32(img, 3, 0); + } + } + if (rgbaIndex[2] == -1) { + // if G exists, propagate it, else if R exists, propagate it, else fill with zero + int srcChannel = rgbaIndex[1] >= 0 ? 1 : (rgbaIndex[0] >= 0 ? 0 : -1); + if (srcChannel >= 0) { + if (img->pixelType == EXR_PIXEL_HALF) { + copy_channel_u16(img, srcChannel, 2); + } + else if (img->pixelType == EXR_PIXEL_FLOAT) { + copy_channel_float(img, srcChannel, 2); + } + else if (img->pixelType == EXR_PIXEL_UINT) { + copy_channel_u32(img, srcChannel, 2); + } + } + else { + if (img->pixelType == EXR_PIXEL_HALF) { + fill_channel_u16(img, 2, zeroValue); + } + else if (img->pixelType == EXR_PIXEL_FLOAT) { + fill_channel_float(img, 2, 0.0f); + } + else if (img->pixelType == EXR_PIXEL_UINT) { + fill_channel_u32(img, 2, 0); + } + } + } + if (rgbaIndex[1] == -1) { + // if R exists, propagate it, else fill with zero + int srcChannel = rgbaIndex[0] >= 0 ? 0 : -1; + if (srcChannel >= 0) { + if (img->pixelType == EXR_PIXEL_HALF) { + copy_channel_u16(img, srcChannel, 1); + } + else if (img->pixelType == EXR_PIXEL_FLOAT) { + copy_channel_float(img, srcChannel, 1); + } + else if (img->pixelType == EXR_PIXEL_UINT) { + copy_channel_u32(img, srcChannel, 1); + } + } + else { + if (img->pixelType == EXR_PIXEL_HALF) { + fill_channel_u16(img, 1, zeroValue); + } + else if (img->pixelType == EXR_PIXEL_FLOAT) { + fill_channel_float(img, 1, 0.0f); + } + else if (img->pixelType == EXR_PIXEL_UINT) { + fill_channel_u32(img, 1, 0); + } + } + } + if (rgbaIndex[0] == -1) { + // fill with zero + if (img->pixelType == EXR_PIXEL_HALF) { + fill_channel_u16(img, 0, zeroValue); + } + else if (img->pixelType == EXR_PIXEL_FLOAT) { + fill_channel_float(img, 0, 0.0f); + } + else if (img->pixelType == EXR_PIXEL_UINT) { + fill_channel_u32(img, 0, 0); + } + } + } + + rv = exr_finish(&exr); + if (rv != EXR_ERR_SUCCESS) { + fprintf(stderr, "nanoexr finish error: %s\n", + exr_get_default_error_message(rv)); + } + return rv; +} diff --git a/pxr/imaging/hio/OpenEXR/openexr-c.h b/pxr/imaging/hio/OpenEXR/openexr-c.h new file mode 100644 index 0000000000..b60828499d --- /dev/null +++ b/pxr/imaging/hio/OpenEXR/openexr-c.h @@ -0,0 +1,160 @@ +// +// Copyright 2023 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// + +// openexr_c.h and openexr_c.c +// are a "single file" standalone version of the OpenEXRCore library. +// It's not part of the regular OpenEXR build. These two files are meant +// to be added to your project, either as a library with just the single +// standalone files, or added directly to your project. +// note that the prefix "nanoexr" is a proposal and subject to change + +#ifndef openexr_c_h +#define openexr_c_h + +#include "OpenEXRCore/openexr.h" + +#include "OpenEXRCore/openexr_attr.h" +#include "OpenEXRCore/openexr_context.h" +#include "OpenEXRCore/openexr_part.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +int nanoexr_get_attribute_count(exr_const_context_t, int part_index); +void nanoexr_attr_set_string( + exr_context_t ctxt, int part_index, const char* name, const char* s); +void nanoexr_attr_set_int( + exr_context_t ctxt, int part_index, const char* name, int v); +void nanoexr_attr_set_float( + exr_context_t ctxt, int part_index, const char* name, float v); +void nanoexr_attr_set_double( + exr_context_t ctxt, int part_index, const char* name, double v); +void nanoexr_attr_set_m44f( + exr_context_t ctxt, int part_index, const char* name, const float* v); +void nanoexr_attr_set_m44d( + exr_context_t ctxt, int part_index, const char* name, const double* v); + +exr_result_t nanoexr_get_attribute_by_index( + exr_const_context_t ctxt, + int part_index, + int i, + const exr_attribute_t** outattr); + +// structure to hold image data that is read from an EXR file +typedef struct { + uint8_t* data; + size_t dataSize; + exr_pixel_type_t pixelType; + int channelCount; // 1 for luminance, 3 for RGB, 4 for RGBA + int width, height; + int dataWindowMinY, dataWindowMaxY; +} nanoexr_ImageData_t; + +typedef enum { + nanoexr_WrapModeClampToEdge = 0, + nanoexr_WrapModeMirrorClampToEdge, + nanoexr_WrapModeRepeat, + nanoexr_WrapModeMirrorRepeat, + nanoexr_WrapModeClampToBorderColor +} nanoexr_WrapMode; + +typedef struct { + char* filename; + bool isScanline; + int partIndex; + exr_pixel_type_t pixelType; + int channelCount; + int width, height; + int tileLevelCount; + nanoexr_WrapMode wrapMode; + int numMipLevels; + int exrSDKVersionMajor; + int exrSDKVersionMinor; + int exrSDKVersionPatch; + const char* exrSDKExtraInfo; +} nanoexr_Reader_t; + +// given a filename and a reader, set up defaults in the reader +void nanoexr_set_defaults(const char* filename, nanoexr_Reader_t* reader); + +// free any memory allocated by the reader, but not the reader itself +void nanoexr_free_storage(nanoexr_Reader_t* reader); + +const char* nanoexr_get_error_code_as_string(exr_result_t code); +int nanoexr_getPixelTypeSize(exr_pixel_type_t t); + +// reads an entire tiled image into memory +// returns any exr_result_t error code encountered upon reading +// if no error, returns EXR_ERR_SUCCESS +// +// imageData is a pointer to a nanoexr_ImageData_t struct supplied +// by the caller. The data pointer in this struct will be set to +// point to the image data, and the dataSize field will be set to +// the size of the data in bytes. The caller is responsible for +// freeing the data pointer when it is no longer needed. + +// callback to allow a user to process attributes as desired at a +// point when the context is available during header reading +typedef void (*nanoexr_attrRead)(void*, exr_context_t); + +exr_result_t nanoexr_read_header(nanoexr_Reader_t* reader, + exr_read_func_ptr_t, + nanoexr_attrRead, void* callback_userData, + int partIndex); + +exr_result_t nanoexr_read_exr(const char* filename, + exr_read_func_ptr_t readfn, + void* callback_userData, + nanoexr_ImageData_t* img, + const char* layerName, + int numChannelsToRead, + int partIndex, + int level); + +// callback to allow a user to add attributes to a context as desired +typedef void (*nanoexr_attrsAdd)(void*, exr_context_t); + +// simplified write for the most basic case of a single part file containing +// rgb data in half format. +exr_result_t nanoexr_write_f16_exr( + const char* filename, + nanoexr_attrsAdd, void* attrsAdd_userData, + int width, int height, + uint8_t* red, int32_t redPixelStride, int32_t redLineStride, + uint8_t* green, int32_t greenPixelStride, int32_t greenLineStride, + uint8_t* blue, int32_t bluePixelStride, int32_t blueLineStride); + +void nanoexr_release_image_data(nanoexr_ImageData_t* imageData); + +bool nanoexr_Gaussian_resample(const nanoexr_ImageData_t* src, + nanoexr_ImageData_t* dst); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/pxr/imaging/hio/OpenEXRImage.cpp b/pxr/imaging/hio/OpenEXRImage.cpp new file mode 100644 index 0000000000..98f1336433 --- /dev/null +++ b/pxr/imaging/hio/OpenEXRImage.cpp @@ -0,0 +1,860 @@ +// +// Copyright 2023 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// + +#include "pxr/base/arch/pragmas.h" + +// Not all functions in the OpenEXR library are used by Hio, and the OpenEXR +// symbols themselves are declared static for inclusion within Hio. +// Therefore, the unused function warning is suppressed as the messages are +// not useful for development, as it is expected that many functions are +// defined but not referenced or exported. +ARCH_PRAGMA_UNUSED_FUNCTION + +#include "pxr/imaging/hio/image.h" +#include "pxr/imaging/hio/types.h" + +#include "OpenEXR/openexr-c.h" +#include "OpenEXR/OpenEXRCore/internal_coding.h" + +#include "pxr/usd/ar/asset.h" +#include "pxr/usd/ar/resolvedPath.h" +#include "pxr/usd/ar/resolver.h" +#include "pxr/usd/ar/writableAsset.h" + +#include "pxr/base/gf/matrix3d.h" +#include "pxr/base/gf/matrix3f.h" +#include "pxr/base/gf/matrix4d.h" +#include "pxr/base/gf/matrix4f.h" +#include "pxr/base/gf/range2d.h" +#include "pxr/base/gf/vec2f.h" + +#include "pxr/base/arch/defines.h" +#include "pxr/base/arch/pragmas.h" +#include "pxr/base/tf/diagnostic.h" +#include "pxr/base/tf/stringUtils.h" +#include "pxr/base/tf/type.h" + +PXR_NAMESPACE_OPEN_SCOPE + +class Hio_OpenEXRImage final : public HioImage +{ + std::shared_ptr _asset; + std::string _filename; + nanoexr_Reader_t _exrReader = {}; + SourceColorSpace _sourceColorSpace = SourceColorSpace::Raw; + int _subimage = 0; + int _mip = 0; + + // mutable because GetMetadata is const, yet it doesn't make sense + // to cache the dictionary unless metadata is requested. + mutable VtDictionary _metadata; + + // The callback dictionary is a pointer to the dictionary that was + // passed to the Write method. It is valid only during the + // Write call. + VtDictionary const* _callbackDict = nullptr; + +public: + Hio_OpenEXRImage() = default; + ~Hio_OpenEXRImage() override { + nanoexr_free_storage(&_exrReader); + } + + const std::shared_ptr Asset() const { return _asset; } + + using Base = HioImage; + bool Read(StorageSpec const &storage) override { + return ReadCropped(0, 0, 0, 0, storage); + } + bool ReadCropped(int const cropTop, int const cropBottom, + int const cropLeft, int const cropRight, + StorageSpec const &storage) override; + bool Write(StorageSpec const &storage, + VtDictionary const &metadata) override; + + // IsColorSpaceSRGB asks if the color space is SRGB, but + // what Hydra really wants to know is whether the pixels are gamma pixels. + // OpenEXR images are always linear, so just return false. + bool IsColorSpaceSRGB() const override { return false; } + HioFormat GetFormat() const override; + int GetWidth() const override { return _exrReader.width; } + int GetHeight() const override { return _exrReader.height; } + int GetBytesPerPixel() const override; + int GetNumMipLevels() const override; + bool GetMetadata(TfToken const &key, VtValue *value) const override; + bool GetSamplerMetadata(HioAddressDimension dim, + HioAddressMode *param) const override; + std::string const &GetFilename() const override { return _filename; } + + const VtDictionary &GetMetadata() const { return _metadata; } + +protected: + bool _OpenForReading(std::string const &filename, int subimage, int mip, + SourceColorSpace sourceColorSpace, + bool suppressErrors) override; + bool _OpenForWriting(std::string const &filename) override; + static void _AttributeReadCallback(void* self_, exr_context_t exr); + static void _AttributeWriteCallback(void* self_, exr_context_t exr); +}; + +TF_REGISTRY_FUNCTION(TfType) +{ + using Image = Hio_OpenEXRImage; + TfType t = TfType::Define>(); + t.SetFactory>(); +} + +// There is a HioGetFormat function, but the twist here is that we are +// forcing translation of 3 channel float images to 4 channel images. +HioFormat Hio_OpenEXRImage::GetFormat() const +{ + switch (_exrReader.pixelType) + { + case EXR_PIXEL_UINT: + switch (_exrReader.channelCount) + { + case 1: return HioFormatInt32; + case 2: return HioFormatInt32Vec2; + case 3: return HioFormatInt32Vec3; + case 4: return HioFormatInt32Vec4; + default: return HioFormatInvalid; + } + + // float pixel formats promote 3 channel reads to 4, because general gpu + // support for three component floating point textures is not always + // supported, but 1, 2, and 4 components are. + case EXR_PIXEL_HALF: + switch (_exrReader.channelCount) + { + case 1: return HioFormatFloat16; + case 2: return HioFormatFloat16Vec2; + case 3: return HioFormatFloat16Vec4; // promote to 4 + case 4: return HioFormatFloat16Vec4; + default: return HioFormatInvalid; + } + + case EXR_PIXEL_FLOAT: + switch (_exrReader.channelCount) + { + case 1: return HioFormatFloat32; + case 2: return HioFormatFloat32Vec2; + case 3: return HioFormatFloat32Vec4; // promote to 4 + case 4: return HioFormatFloat32Vec4; + default: return HioFormatInvalid; + } + + default: + return HioFormatInvalid; + } +} + +int Hio_OpenEXRImage::GetBytesPerPixel() const +{ + return _exrReader.channelCount * + static_cast(HioGetDataSizeOfType(GetFormat())); +} + +int Hio_OpenEXRImage::GetNumMipLevels() const +{ + return _exrReader.numMipLevels; +} + +namespace { + // For consistency with other Hio plugins, reading is done through ArAsset, + // but writing is not. + int64_t exr_AssetRead_Func( + exr_const_context_t ctxt, + void* userdata, + void* buffer, + uint64_t sz, + uint64_t offset, + exr_stream_error_func_ptr_t error_cb) + { + Hio_OpenEXRImage* self = (Hio_OpenEXRImage*) userdata; + if (!self || !self->Asset() || !buffer || !sz) { + if (error_cb) + error_cb(ctxt, EXR_ERR_INVALID_ARGUMENT, + "%s", "Invalid arguments to read callback"); + return -1; + } + return self->Asset()->Read(buffer, sz, offset); + } + + template + class ImageProcessor + { + public: + // Flip the image in-place. + static void FlipImage(T* buffer, int width, int height, int channelCount) + { + // use std::swap_ranges to flip the image in-place + for (int y = 0; y < height / 2; ++y) { + std::swap_ranges( + buffer + y * width * channelCount, + buffer + (y + 1) * width * channelCount, + buffer + (height - y - 1) * width * channelCount); + } + } + + // Crop the image in-place. + static void CropImage(T* buffer, + int width, int height, int channelCount, + int cropTop, int cropBottom, + int cropLeft, int cropRight) + { + int newWidth = width - cropLeft - cropRight; + int newHeight = height - cropTop - cropBottom; + + if (newWidth <= 0 || newHeight <= 0 + || (newWidth == width && newHeight == height)) + return; + + for (int y = 0; y < newHeight; ++y) { + for (int x = 0; x < newWidth; ++x) { + for (int c = 0; c < channelCount; ++c) { + buffer[(y * newWidth + x) * channelCount + c] = + buffer[((y + cropTop) * width + x + cropLeft) + * channelCount + c]; + } + } + } + } + + static void HalfToFloat(GfHalf* buffer, float* outBuffer, + int width, int height, int channelCount) + { + if (!buffer || !outBuffer) + return; + + for (int i = 0; i < width * height * channelCount; ++i) { + outBuffer[i] = buffer[i]; + } + } + + static void FloatToHalf(float* buffer, GfHalf* outBuffer, + int width, int height, int channelCount) + { + if (!buffer || !outBuffer) + return; + + for (int i = 0; i < width * height * channelCount; ++i) { + outBuffer[i] = buffer[i]; + } + } + }; + +} // anon + +bool Hio_OpenEXRImage::ReadCropped( + int const cropTop, int const cropBottom, + int const cropLeft, int const cropRight, + StorageSpec const &storage) +{ + // not opened for read prior to calling ReadCropped. + if (!_asset) + return false; + + if (cropTop < 0 || cropBottom < 0 || cropLeft < 0 || cropRight < 0) + return false; + + // cache values for the read/crop/resize pipeline + + int fileWidth = _exrReader.width; + int fileHeight = _exrReader.height; + int fileChannelCount = _exrReader.channelCount; + exr_pixel_type_t filePixelType = _exrReader.pixelType; + + int outWidth = storage.width; + int outHeight = storage.height; + int outChannelCount = HioGetComponentCount(storage.format); + + bool inputIsHalf = filePixelType == EXR_PIXEL_HALF; + bool inputIsFloat = filePixelType == EXR_PIXEL_FLOAT; + bool inputIsUInt = filePixelType == EXR_PIXEL_UINT; + bool outputIsFloat = HioGetHioType(storage.format) == HioTypeFloat; + bool outputIsHalf = HioGetHioType(storage.format) == HioTypeHalfFloat; + bool outputIsUInt = HioGetHioType(storage.format) == HioTypeUnsignedInt; + + // no conversion between uint and a float type is provided. + if (outputIsUInt && !inputIsUInt) + return false; + if (outputIsFloat && !(inputIsFloat || inputIsHalf)) + return false; + + int outputBytesPerPixel = (int) HioGetDataSizeOfType(storage.format) * outChannelCount; + + int readWidth = fileWidth - cropLeft - cropRight; + int readHeight = fileHeight - cropTop - cropBottom; + if (readHeight <= 0 || readWidth <= 0) { + memset(storage.data, 0, outWidth * outHeight * outputBytesPerPixel); + return true; + } + bool resizing = (readWidth != outWidth) || (readHeight != outHeight); + if (outputIsUInt && resizing) { + // resizing is not supported for uint types. + return false; + } + + if (outputIsUInt) { + // no conversion to float; read the data, and crop it if necessary. + nanoexr_ImageData_t img; + const int partIndex = 0; + exr_result_t rv = nanoexr_read_exr(_exrReader.filename, + exr_AssetRead_Func, this, + &img, nullptr, + outChannelCount, + partIndex, _mip); + if (rv != EXR_ERR_SUCCESS) { + return false; + } + ImageProcessor::FlipImage(reinterpret_cast(img.data), + fileWidth, fileHeight, + img.channelCount); + ImageProcessor::CropImage(reinterpret_cast(img.data), + fileWidth, fileHeight, + img.channelCount, + cropTop, cropBottom, + cropLeft, cropRight); + + // copy the data to the output buffer. + memcpy(storage.data, img.data, outWidth * outHeight * outputBytesPerPixel); + nanoexr_release_image_data(&img); + return true; + } + + // ensure there's enough memory for the greater of input and output channel + // count, for in place conversions. + int maxChannelCount = std::max(fileChannelCount, outChannelCount); + std::vector halfInputBuffer; + if (inputIsHalf) { + halfInputBuffer.resize(fileWidth * fileHeight * maxChannelCount); + } + std::vector floatInputBuffer; + if (inputIsHalf && (resizing || outputIsFloat)) { + floatInputBuffer.resize(fileWidth * fileHeight * maxChannelCount); + } + + { + nanoexr_ImageData_t img; + const int partIndex = 0; + exr_result_t rv = nanoexr_read_exr(_exrReader.filename, + exr_AssetRead_Func, this, + &img, nullptr, + outChannelCount, partIndex, _mip); + if (rv != EXR_ERR_SUCCESS) { + return false; + } + + if (img.pixelType == EXR_PIXEL_HALF) { + memcpy(&halfInputBuffer[0], img.data, img.dataSize); + } + else { + memcpy(&floatInputBuffer[0], img.data, img.dataSize); + } + + nanoexr_release_image_data(&img); + + // flip and crop the image in place + if (inputIsHalf) { + ImageProcessor::FlipImage(&halfInputBuffer[0], + fileWidth, fileHeight, + img.channelCount); + ImageProcessor::CropImage(&halfInputBuffer[0], + fileWidth, fileHeight, + img.channelCount, + cropTop, cropBottom, + cropLeft, cropRight); + } + else { + ImageProcessor::FlipImage(&floatInputBuffer[0], + fileWidth, fileHeight, + fileChannelCount); + ImageProcessor::CropImage(&floatInputBuffer[0], + fileWidth, fileHeight, + fileChannelCount, + cropTop, cropBottom, + cropLeft, cropRight); + } + } + + if (!resizing) { + uint32_t outSize = outWidth * outHeight * outputBytesPerPixel; + uint32_t outCount = outWidth * outHeight * outChannelCount; + if (inputIsHalf && outputIsHalf) { + memcpy(reinterpret_cast(storage.data), + &halfInputBuffer[0], outSize); + } + else if (inputIsFloat && outputIsFloat) { + memcpy(reinterpret_cast(storage.data), + &floatInputBuffer[0], outSize); + } + else if (outputIsFloat) { + for (size_t i = 0; i < outCount; ++i) + reinterpret_cast(storage.data)[i] + = half_to_float(halfInputBuffer[i]); + } + else { + // output is half + for (size_t i = 0; i < outCount; ++i) + reinterpret_cast(storage.data)[i] + = float_to_half(floatInputBuffer[i]); + } + return true; + } + + // resize the image, so promote to float if necessary + if (inputIsHalf) { + ImageProcessor::HalfToFloat(&halfInputBuffer[0], + &floatInputBuffer[0], + fileWidth, fileHeight, + fileChannelCount); + inputIsFloat = true; + inputIsHalf = false; + } + + std::vector resizeOutputBuffer; + + nanoexr_ImageData_t src; + src.data = reinterpret_cast(&floatInputBuffer[0]); + src.channelCount = fileChannelCount; + src.dataSize = readWidth * readHeight * GetBytesPerPixel(); + src.pixelType = EXR_PIXEL_FLOAT; + src.width = readWidth; + src.height = readHeight; + + nanoexr_ImageData_t dst; + dst.channelCount = outChannelCount; + dst.dataSize = outWidth * outHeight * outChannelCount * sizeof(float); + dst.pixelType = EXR_PIXEL_FLOAT; + dst.width = outWidth; + dst.height = outHeight; + + if (outputIsFloat) { + dst.data = reinterpret_cast(storage.data); + } + else { + resizeOutputBuffer.resize(outWidth * outHeight * outChannelCount); + dst.data = reinterpret_cast(&resizeOutputBuffer[0]); + } + nanoexr_Gaussian_resample(&src, &dst); + if (outputIsFloat) + return true; + + ImageProcessor::FloatToHalf(&resizeOutputBuffer[0], + reinterpret_cast(dst.data), + outWidth, outHeight, outChannelCount); + return true; +} + +namespace { + // Note that the alternative names and casing are for historical + // compatibility. The OpenEXR standard attribute names are worldToNDC and + // and worldToCamera. + bool isWorldToNDC(const std::string& name) + { + return name == "NP" || name == "worldtoscreen" + || name == "worldToScreen" || name == "worldToNDC"; + } + + bool isWorldToCamera(const std::string& name) + { + return name == "Nl" || name == "worldtocamera" + || name == "worldToCamera"; + } +} + +bool Hio_OpenEXRImage::GetMetadata(TfToken const &key, VtValue *value) const +{ + if (!value) { + TF_CODING_ERROR("Invalid value pointer"); + return false; + } + + auto convertM4dIfNecessary = [](const VtValue& v) -> VtValue { + if (v.CanCastToTypeid(typeid(GfMatrix4d))) { + return v.CastToTypeid(v, typeid(GfMatrix4d())); + } + return v; + }; + + bool isW2N = isWorldToNDC(key); + bool isW2C = isWorldToCamera(key); + if (isW2N || isW2C) { + auto candidate = _metadata.find(key); + if (candidate != _metadata.end()) { + *value = convertM4dIfNecessary(candidate->second); + return true; + } + } + + // try translating common alternatives to a standard attribute + if (isW2N) { + auto candidate = _metadata.find("worldToNDC"); + if (candidate != _metadata.end()) { + *value = convertM4dIfNecessary(candidate->second); + return true; + } + } + if (isW2C) { + auto candidate = _metadata.find("worldToCamera"); + if (candidate != _metadata.end()) { + *value = convertM4dIfNecessary(candidate->second); + return true; + } + } + + // any other key is returned as it's found + auto candidate = _metadata.find(key); + if (candidate != _metadata.end()) { + *value = candidate->second; + return true; + } + + return false; +} + +bool Hio_OpenEXRImage::GetSamplerMetadata(HioAddressDimension dim, + HioAddressMode *param) const +{ + if (!param) + return false; + + switch (_exrReader.wrapMode) { + case nanoexr_WrapModeClampToEdge: + *param = HioAddressModeClampToEdge; break; + case nanoexr_WrapModeMirrorClampToEdge: + *param = HioAddressModeClampToEdge; break; + case nanoexr_WrapModeRepeat: + *param = HioAddressModeRepeat; break; + case nanoexr_WrapModeMirrorRepeat: + *param = HioAddressModeMirrorRepeat; break; + case nanoexr_WrapModeClampToBorderColor: + *param = HioAddressModeClampToBorderColor; + } + return true; +} + +//static +void Hio_OpenEXRImage::_AttributeReadCallback(void* self_, exr_context_t exr) { + Hio_OpenEXRImage* self = reinterpret_cast(self_); + if (!self->_metadata.empty()) + return; + + const int partIndex = self->_subimage; + int attrCount = nanoexr_get_attribute_count(exr, partIndex); + for (int i = 0; i < attrCount; ++i) { + const exr_attribute_t* attr; + nanoexr_get_attribute_by_index(exr, partIndex, i, &attr); + if (!attr) + continue; + + // this switch is an exhaustive alphabetical treatment of all the + // possible attribute types. + switch(attr->type) { + case EXR_ATTR_UNKNOWN: + continue; + case EXR_ATTR_BOX2I: { + // no GfVec2i, convert to float + GfVec2f box_min, box_max; + box_min.Set((float) attr->box2i->min.x, (float) attr->box2i->min.y); + box_max.Set((float) attr->box2i->max.x, (float) attr->box2i->max.x); + self->_metadata[attr->name] = VtValue(GfRange2f(box_min, box_max)); + break; + } + case EXR_ATTR_BOX2F: { + GfVec2f box_min, box_max; + box_min.Set(attr->box2f->min.x, attr->box2f->min.y); + box_max.Set(attr->box2f->max.x, attr->box2f->max.y); + self->_metadata[attr->name] = VtValue(GfRange2f(box_min, box_max)); + break; + } + case EXR_ATTR_CHLIST: + case EXR_ATTR_CHROMATICITIES: + case EXR_ATTR_COMPRESSION: + // these are explicitly handled elsewhere, they aren't + // metadata attributes for Hio's purposes. + continue; + case EXR_ATTR_DOUBLE: + self->_metadata[attr->name] = VtValue(attr->d); + break; + case EXR_ATTR_ENVMAP: + // Hio doesn't specifically treat cube and lot-lang maps. + // If it did, this case would be handled elsewhere. + break; + case EXR_ATTR_FLOAT: + self->_metadata[attr->name] = VtValue(attr->f); + break; + case EXR_ATTR_FLOAT_VECTOR: { + std::vector v; + v.resize(attr->floatvector->length); + memcpy(v.data(), attr->floatvector->arr, v.size() * sizeof(float)); + self->_metadata[attr->name] = VtValue(v); + } + case EXR_ATTR_INT: + self->_metadata[TfToken(attr->name)] = VtValue(attr->i); + break; + case EXR_ATTR_KEYCODE: + case EXR_ATTR_LINEORDER: + // these are explicitly handled elsewhere, they aren't + // metadata attributes for Hio's purposes. + continue; + case EXR_ATTR_M33F: { + GfMatrix3f m; + memcpy(m.GetArray(), attr->m33f, 9 * sizeof(float)); + self->_metadata[attr->name] = VtValue(m); + break; + } + case EXR_ATTR_M33D: { + GfMatrix3d m; + memcpy(m.GetArray(), attr->m33d, 9 * sizeof(double)); + self->_metadata[attr->name] = VtValue(m); + break; + } + case EXR_ATTR_M44F: { + GfMatrix4f m; + memcpy(m.GetArray(), attr->m44f, 16 * sizeof(float)); + self->_metadata[attr->name] = VtValue(m); + break; + } + case EXR_ATTR_M44D: { + GfMatrix4d m; + memcpy(m.GetArray(), attr->m44d, 16 * sizeof(double)); + self->_metadata[attr->name] = VtValue(m); + break; + } + case EXR_ATTR_PREVIEW: + // EXR images may have a poster image, but Hio doesn't + continue; + case EXR_ATTR_RATIONAL: { + // Gf doesn't have rational numbers, so degrade to a float. + float f = (float) attr->rational->num / (float) attr->rational->denom; + self->_metadata[attr->name] = VtValue(f); + break; + } + case EXR_ATTR_STRING: + self->_metadata[attr->name] = VtValue(attr->string); + break; + case EXR_ATTR_STRING_VECTOR: { + std::vector v; + v.resize(attr->stringvector->n_strings); + for (size_t i = 0; i < v.size(); ++i) { + v[i] = attr->stringvector->strings[i].str; + } + self->_metadata[attr->name] = VtValue(v); + break; + } + case EXR_ATTR_TILEDESC: + // this is explicitly handled elsewhere, it isn't + // metadata attributes for Hio's purposes. + continue; + case EXR_ATTR_TIMECODE: + // Is there a VtValue that can represent this? + continue; + case EXR_ATTR_V2I: { + // there's no GfVec2i, convert to double + GfVec2d v; + v.Set((double) attr->v2i->x, (double) attr->v2i->y); + self->_metadata[attr->name] = VtValue(v); + break; + } + case EXR_ATTR_V2F: { + GfVec2f v; + v.Set(attr->v2f->x, attr->v2f->y); + self->_metadata[attr->name] = VtValue(v); + break; + } + case EXR_ATTR_V2D: { + GfVec2d v; + v.Set(attr->v2d->x, attr->v2d->y); + self->_metadata[attr->name] = VtValue(v); + break; + } + case EXR_ATTR_V3I: { + // there's no GfVec3i, convert to double + GfVec3d v; + v.Set((double) attr->v3i->x, + (double) attr->v3i->y, + (double) attr->v3i->z); + self->_metadata[attr->name] = VtValue(v); + break; + } + case EXR_ATTR_V3F: { + GfVec3f v; + v.Set(attr->v3f->x, attr->v3f->y, attr->v3f->z); + self->_metadata[attr->name] = VtValue(v); + break; + } + case EXR_ATTR_V3D: { + GfVec3d v; + v.Set(attr->v3d->x, attr->v3d->y, attr->v3d->z); + self->_metadata[attr->name] = VtValue(v); + break; + } + case EXR_ATTR_LAST_KNOWN_TYPE: + case EXR_ATTR_OPAQUE: + // Not caching opaque data + continue; + } + } + if (self->_metadata.empty()) { + self->_metadata["placeholder"] = VtValue(true); + } +} + +bool Hio_OpenEXRImage::_OpenForReading(std::string const &filename, + int subimage, int mip, + SourceColorSpace sourceColorSpace, + bool /*suppressErrors*/) +{ + _asset = ArGetResolver().OpenAsset(ArResolvedPath(filename)); + if (!_asset) { + return false; + } + + _filename = filename; + _subimage = subimage; + _mip = mip; + _sourceColorSpace = sourceColorSpace; + + nanoexr_set_defaults(_filename.c_str(), &_exrReader); + + int rv = nanoexr_read_header(&_exrReader, exr_AssetRead_Func, + _AttributeReadCallback, this, + _subimage); + if (rv != 0) { + TF_DIAGNOSTIC_WARNING("Cannot open image \"%s\" for reading, %s", + filename.c_str(), nanoexr_get_error_code_as_string(rv)); + return false; + } + + if (_exrReader.numMipLevels <= mip) { + TF_DIAGNOSTIC_WARNING("In image \"%s\" mip level %d does not exist", + filename.c_str(), mip); + return false; + } + + return true; +} + +void Hio_OpenEXRImage::_AttributeWriteCallback(void* self_, exr_context_t exr) { + Hio_OpenEXRImage* self = reinterpret_cast(self_); + for (const std::pair m : *self->_callbackDict) { + const std::string& key = m.first; + const VtValue& value = m.second; + // note: OpenEXR can represent most values that can be found in a + // VtValue, however, for the moment, this code is matching the behavior + // of the OpenImageIO plugin. + if (value.IsHolding()) { + nanoexr_attr_set_string(exr, self->_subimage, key.c_str(), + value.Get().c_str()); + } + else if (value.IsHolding()) { + nanoexr_attr_set_int(exr, self->_subimage, key.c_str(), + value.Get()); + } + else if (value.IsHolding()) { + nanoexr_attr_set_int(exr, self->_subimage, key.c_str(), + value.Get()); + } + else if (value.IsHolding()) { + nanoexr_attr_set_int(exr, self->_subimage, key.c_str(), + value.Get()); + } + else if (value.IsHolding()) { + nanoexr_attr_set_int(exr, self->_subimage, key.c_str(), + value.Get()); + } + else if (value.IsHolding()) { + nanoexr_attr_set_float(exr, self->_subimage, key.c_str(), + value.Get()); + } + else if (value.IsHolding()) { + nanoexr_attr_set_double(exr, self->_subimage, key.c_str(), + value.Get()); + } + else if (value.IsHolding()) { + nanoexr_attr_set_m44f(exr, self->_subimage, key.c_str(), + value.Get().GetArray()); + } + else if (value.IsHolding()) { + // historic compatibility, downgread m44d matrices for these two + // attributes to float. + if (isWorldToNDC(key) || isWorldToCamera(key)) { + // for Ice/Imr, convert to m44f. + GfMatrix4f mf(value.Get()); + nanoexr_attr_set_m44f(exr, self->_subimage, key.c_str(), + mf.GetArray()); + } + else { + nanoexr_attr_set_m44d(exr, self->_subimage, key.c_str(), + value.Get().GetArray()); + } + } + } +} + +bool Hio_OpenEXRImage::Write(StorageSpec const &storage, + VtDictionary const &metadata) +{ + const HioType type = HioGetHioType(storage.format); + if (type != HioTypeFloat && type != HioTypeHalfFloat) { + TF_CODING_ERROR("Unsupported pixel type %d", type); + return false; + } + switch (storage.format) { + case HioFormatFloat16: + case HioFormatFloat16Vec2: + case HioFormatFloat16Vec3: + case HioFormatFloat16Vec4: + break; + default: + TF_CODING_ERROR("Unsupported pixel format %d", storage.format); + return false; + } + + _callbackDict = &metadata; + int32_t pxsize = type == HioTypeFloat ? sizeof(float) : sizeof(GfHalf); + int32_t ch = HioGetComponentCount(storage.format); + uint8_t* pixels = reinterpret_cast(storage.data); + int32_t lineStride = storage.width * pxsize * ch; + int32_t pixelStride = pxsize * ch; + exr_result_t rv = nanoexr_write_f16_exr( + _filename.c_str(), + _AttributeWriteCallback, this, + storage.width, storage.height, + pixels + (pxsize * 2), pixelStride, lineStride, // red + pixels + pxsize, pixelStride, lineStride, // green + pixels, pixelStride, lineStride); // blue + + _callbackDict = nullptr; + return rv == EXR_ERR_SUCCESS; +} + +bool Hio_OpenEXRImage::_OpenForWriting(std::string const &filename) +{ + _filename = filename; + return true; +} + +PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/imaging/hio/plugInfo.json b/pxr/imaging/hio/plugInfo.json index d27f2466d0..2612c4d5ba 100644 --- a/pxr/imaging/hio/plugInfo.json +++ b/pxr/imaging/hio/plugInfo.json @@ -7,6 +7,11 @@ "bases": ["HioImage"], "imageTypes": ["bmp", "jpg", "jpeg", "png", "tga", "hdr"], "precedence": 30 + }, + "Hio_OpenEXRImage" : { + "bases": ["HioImage"], + "imageTypes": ["exr"], + "precedence": 30 } } }, diff --git a/pxr/imaging/plugin/hioOiio/plugInfo.json b/pxr/imaging/plugin/hioOiio/plugInfo.json index f5a6c8950c..6a89df32d5 100644 --- a/pxr/imaging/plugin/hioOiio/plugInfo.json +++ b/pxr/imaging/plugin/hioOiio/plugInfo.json @@ -5,7 +5,7 @@ "Types": { "HioOIIO_Image" : { "bases": ["HioImage"], - "imageTypes": ["exr", "tif", "tiff", "zfile", "tx"], + "imageTypes": ["tif", "tiff", "zfile", "tx"], "precedence": 10 } } From 9f4d108238cebe42d02f0ac034ab66fcd2dcebf0 Mon Sep 17 00:00:00 2001 From: rajabala Date: Tue, 25 Jul 2023 15:52:27 -0700 Subject: [PATCH 099/352] [hdsi] Update render settings filtering scene index functionality.. .. to add a fallback render settings prim if a valid data source is provided as argument. (Internal change: 2285686) --- .../renderSettingsFilteringSceneIndex.cpp | 68 +++++++++++++++++-- .../hdsi/renderSettingsFilteringSceneIndex.h | 15 +++- 2 files changed, 77 insertions(+), 6 deletions(-) diff --git a/pxr/imaging/hdsi/renderSettingsFilteringSceneIndex.cpp b/pxr/imaging/hdsi/renderSettingsFilteringSceneIndex.cpp index 80526daec5..735de5dc07 100644 --- a/pxr/imaging/hdsi/renderSettingsFilteringSceneIndex.cpp +++ b/pxr/imaging/hdsi/renderSettingsFilteringSceneIndex.cpp @@ -44,6 +44,9 @@ TF_DEFINE_PRIVATE_TOKENS( namespace { +static const SdfPath s_renderScope("/Render"); +static const SdfPath s_fallbackPath("/Render/_FallbackSettings"); + // Builds and returns a data source to invalidate the 'active' locator on // the 'renderSettings' container when the 'activeRenderSettingsPrim' locator // on the 'sceneGlobals' container is dirtied. @@ -237,6 +240,17 @@ _GetNamespacePrefixes(const HdContainerDataSourceHandle &inputArgs) return {}; } +HdContainerDataSourceHandle +_GetFallbackPrimDataSource(const HdContainerDataSourceHandle &inputArgs) +{ + if (!inputArgs) { + return nullptr; + } + + return HdContainerDataSource::Cast(inputArgs->Get( + HdsiRenderSettingsFilteringSceneIndexTokens->fallbackPrimDs)); +} + } // namespace anonymous //////////////////////////////////////////////////////////////////////////////// @@ -257,6 +271,8 @@ HdsiRenderSettingsFilteringSceneIndex::HdsiRenderSettingsFilteringSceneIndex( const HdContainerDataSourceHandle &inputArgs) : HdSingleInputFilteringSceneIndexBase(inputSceneIndex) , _namespacePrefixes(_GetNamespacePrefixes(inputArgs)) +, _fallbackPrimDs(_GetFallbackPrimDataSource(inputArgs)) +, _addedFallbackPrim(false) { } @@ -266,9 +282,15 @@ HdsiRenderSettingsFilteringSceneIndex::GetPrim(const SdfPath &primPath) const HdSceneIndexPrim prim = _GetInputSceneIndex()->GetPrim(primPath); if (prim.primType == HdPrimTypeTokens->renderSettings && prim.dataSource) { + // existing render settings prim prim.dataSource = _RenderSettingsPrimDataSource::New( prim.dataSource, _GetInputSceneIndex(), primPath, _namespacePrefixes); + + } else if (_addedFallbackPrim && primPath == GetFallbackPrimPath()) { + + prim.primType = HdPrimTypeTokens->renderSettings; + prim.dataSource = _fallbackPrimDs; } return prim; @@ -277,12 +299,36 @@ HdsiRenderSettingsFilteringSceneIndex::GetPrim(const SdfPath &primPath) const SdfPathVector HdsiRenderSettingsFilteringSceneIndex::GetChildPrimPaths( const SdfPath &primPath) const -{ - if (auto input = _GetInputSceneIndex()) { - return input->GetChildPrimPaths(primPath); +{ + // Avoid a copy if possible. + if (ARCH_UNLIKELY( + (primPath == GetRenderScope() || primPath.IsAbsoluteRootPath()) && + _addedFallbackPrim)) { + + SdfPathVector paths = + _GetInputSceneIndex()->GetChildPrimPaths(primPath); + paths.push_back(primPath.IsAbsoluteRootPath() + ? GetRenderScope() + : GetFallbackPrimPath()); + + return paths; } - return {}; + return _GetInputSceneIndex()->GetChildPrimPaths(primPath); +} + +/* static */ +const SdfPath& +HdsiRenderSettingsFilteringSceneIndex::GetFallbackPrimPath() +{ + return s_fallbackPath; +} + +/* static */ +const SdfPath& +HdsiRenderSettingsFilteringSceneIndex::GetRenderScope() +{ + return s_renderScope; } void @@ -290,7 +336,19 @@ HdsiRenderSettingsFilteringSceneIndex::_PrimsAdded( const HdSceneIndexBase &sender, const HdSceneIndexObserver::AddedPrimEntries &entries) { - _SendPrimsAdded(entries); + if (ARCH_UNLIKELY(_fallbackPrimDs && !_addedFallbackPrim)) { + + HdSceneIndexObserver::AddedPrimEntries addedEntries = entries; + + addedEntries.emplace_back( + GetFallbackPrimPath(), HdPrimTypeTokens->renderSettings); + + _addedFallbackPrim = true; + _SendPrimsAdded(addedEntries); + + } else { + _SendPrimsAdded(entries); + } } void diff --git a/pxr/imaging/hdsi/renderSettingsFilteringSceneIndex.h b/pxr/imaging/hdsi/renderSettingsFilteringSceneIndex.h index 20cdd99264..843cb2765f 100644 --- a/pxr/imaging/hdsi/renderSettingsFilteringSceneIndex.h +++ b/pxr/imaging/hdsi/renderSettingsFilteringSceneIndex.h @@ -34,7 +34,8 @@ PXR_NAMESPACE_OPEN_SCOPE #define HDSI_RENDER_SETTINGS_FILTERING_SCENE_INDEX_TOKENS \ - (namespacePrefixes) + (namespacePrefixes) \ + (fallbackPrimDs) TF_DECLARE_PUBLIC_TOKENS(HdsiRenderSettingsFilteringSceneIndexTokens, HDSI_API, HDSI_RENDER_SETTINGS_FILTERING_SCENE_INDEX_TOKENS); @@ -49,6 +50,8 @@ TF_DECLARE_WEAK_AND_REF_PTRS(HdsiRenderSettingsFilteringSceneIndex); /// - Registers a dependency on the sceneGlobals.activeRenderSettings locator /// to invalidate the renderSetings.active locator. /// - Determines whether the render settings prim is active. +/// - Optionally adds a fallback render settings prim whose container data +/// source is provided via the \p inputArgs constructor argument. /// class HdsiRenderSettingsFilteringSceneIndex final : public HdSingleInputFilteringSceneIndexBase @@ -65,6 +68,13 @@ class HdsiRenderSettingsFilteringSceneIndex final : HDSI_API SdfPathVector GetChildPrimPaths(const SdfPath &primPath) const override; + // Public API + HDSI_API + static const SdfPath& GetFallbackPrimPath(); + + HDSI_API + static const SdfPath& GetRenderScope(); + protected: HDSI_API HdsiRenderSettingsFilteringSceneIndex( @@ -88,6 +98,9 @@ class HdsiRenderSettingsFilteringSceneIndex final : private: const VtArray _namespacePrefixes; + HdContainerDataSourceHandle _fallbackPrimDs; + + bool _addedFallbackPrim; }; PXR_NAMESPACE_CLOSE_SCOPE From a3c74663adf72d9d69833a48c513b382e25f0daf Mon Sep 17 00:00:00 2001 From: katpet Date: Tue, 25 Jul 2023 15:56:21 -0700 Subject: [PATCH 100/352] The MtlxStandardSurface shader had an incorrect default for fuzzGain, which led to a slightly odd looking default behavior. It should be 0 was 1. Changing the default in the osl StandardSurfaceParameters adaptor pattern that gets wired up to PxrSurface when MtlxStandardSurface is being translated. (Internal change: 2285878) --- third_party/renderman-24/shaders/StandardSurfaceParameters.osl | 2 +- third_party/renderman-25/shaders/StandardSurfaceParameters.osl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/third_party/renderman-24/shaders/StandardSurfaceParameters.osl b/third_party/renderman-24/shaders/StandardSurfaceParameters.osl index a979b3eccb..296b71eb5a 100644 --- a/third_party/renderman-24/shaders/StandardSurfaceParameters.osl +++ b/third_party/renderman-24/shaders/StandardSurfaceParameters.osl @@ -188,7 +188,7 @@ shader StandardSurfaceParameters [[ string widget = "null" ]], // Fuzz outputs - output float fuzzGainOut = 1.0 + output float fuzzGainOut = 0.0 [[ string widget = "null" ]], output color fuzzColorOut = color(1.0,1.0,1.0) [[ string widget = "null" ]], diff --git a/third_party/renderman-25/shaders/StandardSurfaceParameters.osl b/third_party/renderman-25/shaders/StandardSurfaceParameters.osl index a979b3eccb..296b71eb5a 100644 --- a/third_party/renderman-25/shaders/StandardSurfaceParameters.osl +++ b/third_party/renderman-25/shaders/StandardSurfaceParameters.osl @@ -188,7 +188,7 @@ shader StandardSurfaceParameters [[ string widget = "null" ]], // Fuzz outputs - output float fuzzGainOut = 1.0 + output float fuzzGainOut = 0.0 [[ string widget = "null" ]], output color fuzzColorOut = color(1.0,1.0,1.0) [[ string widget = "null" ]], From b84c225e541c08a4967de7e8fbc1fc3c54f885c3 Mon Sep 17 00:00:00 2001 From: tallytalwar Date: Tue, 25 Jul 2023 15:56:56 -0700 Subject: [PATCH 101/352] Fix compiler warnings in domeLightAdapter (Internal change: 2285935) --- pxr/usdImaging/usdImaging/domeLightAdapter.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pxr/usdImaging/usdImaging/domeLightAdapter.h b/pxr/usdImaging/usdImaging/domeLightAdapter.h index 08b761e30b..6ec3a852fd 100644 --- a/pxr/usdImaging/usdImaging/domeLightAdapter.h +++ b/pxr/usdImaging/usdImaging/domeLightAdapter.h @@ -64,17 +64,17 @@ class UsdImagingDomeLightAdapter : public UsdImagingLightAdapter { // ---------------------------------------------------------------------- // USDIMAGING_API - virtual SdfPath Populate(UsdPrim const& prim, - UsdImagingIndexProxy* index, - UsdImagingInstancerContext const* instancerContext = NULL); + SdfPath Populate(UsdPrim const& prim, + UsdImagingIndexProxy* index, + UsdImagingInstancerContext const* instancerContext = NULL) override; USDIMAGING_API - virtual bool IsSupported(UsdImagingIndexProxy const* index) const; + bool IsSupported(UsdImagingIndexProxy const* index) const override; protected: USDIMAGING_API - virtual void _RemovePrim(SdfPath const& cachePath, - UsdImagingIndexProxy* index) final; + void _RemovePrim(SdfPath const& cachePath, + UsdImagingIndexProxy* index) override final ; }; From 5d592d29686609e2257b396160c4a5433d72afdf Mon Sep 17 00:00:00 2001 From: tallytalwar Date: Tue, 25 Jul 2023 15:57:12 -0700 Subject: [PATCH 102/352] Fix compiler warning about un-used "one" variable in drawModeStandin.cpp (Internal change: 2285936) --- pxr/usdImaging/usdImaging/drawModeStandin.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pxr/usdImaging/usdImaging/drawModeStandin.cpp b/pxr/usdImaging/usdImaging/drawModeStandin.cpp index 72e1e1f026..66ff12e0d6 100644 --- a/pxr/usdImaging/usdImaging/drawModeStandin.cpp +++ b/pxr/usdImaging/usdImaging/drawModeStandin.cpp @@ -1362,7 +1362,7 @@ _CardsDataCache::_CardsData::_ComputePoints(const _SchemaValues &values) // symmetry about the center of the box. // We also reverse the order of the points. points.push_back( - GfVec3f(1.0f) - _Transform(pts[3 - k], i)); + one - _Transform(pts[3 - k], i)); } } } From d34c79f1b0bd01a3b876b9c5fc12ca93a200eb76 Mon Sep 17 00:00:00 2001 From: tallytalwar Date: Tue, 25 Jul 2023 15:57:22 -0700 Subject: [PATCH 103/352] Fix compiler warnings in flattenedModelDataSourceProvider about missing virtual destructor (Internal change: 2285937) --- .../usdImaging/flattenedModelDataSourceProvider.cpp | 2 ++ pxr/usdImaging/usdImaging/flattenedModelDataSourceProvider.h | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/pxr/usdImaging/usdImaging/flattenedModelDataSourceProvider.cpp b/pxr/usdImaging/usdImaging/flattenedModelDataSourceProvider.cpp index 08186bd06f..ba7668ad58 100644 --- a/pxr/usdImaging/usdImaging/flattenedModelDataSourceProvider.cpp +++ b/pxr/usdImaging/usdImaging/flattenedModelDataSourceProvider.cpp @@ -101,6 +101,8 @@ class _ModelDataSource : public HdContainerDataSource } +UsdImagingFlattenedModelDataSourceProvider::~UsdImagingFlattenedModelDataSourceProvider() = default; + HdContainerDataSourceHandle UsdImagingFlattenedModelDataSourceProvider::GetFlattenedDataSource( const Context &ctx) const diff --git a/pxr/usdImaging/usdImaging/flattenedModelDataSourceProvider.h b/pxr/usdImaging/usdImaging/flattenedModelDataSourceProvider.h index eafd017fdf..9702a64f1e 100644 --- a/pxr/usdImaging/usdImaging/flattenedModelDataSourceProvider.h +++ b/pxr/usdImaging/usdImaging/flattenedModelDataSourceProvider.h @@ -40,6 +40,11 @@ class UsdImagingFlattenedModelDataSourceProvider USDIMAGING_API void ComputeDirtyLocatorsForDescendants( HdDataSourceLocatorSet * locators) const override; + +public: + + USDIMAGING_API + virtual ~UsdImagingFlattenedModelDataSourceProvider(); }; PXR_NAMESPACE_CLOSE_SCOPE From a0e96de80c35812088c5836709caf63e1c991d40 Mon Sep 17 00:00:00 2001 From: tallytalwar Date: Tue, 25 Jul 2023 15:57:31 -0700 Subject: [PATCH 104/352] Fix compiler warnings in materialAdapter.h for missing override (Internal change: 2285938) --- pxr/usdImaging/usdImaging/materialAdapter.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pxr/usdImaging/usdImaging/materialAdapter.h b/pxr/usdImaging/usdImaging/materialAdapter.h index e9a7014518..b5e0e09ac6 100644 --- a/pxr/usdImaging/usdImaging/materialAdapter.h +++ b/pxr/usdImaging/usdImaging/materialAdapter.h @@ -87,7 +87,7 @@ class UsdImagingMaterialAdapter : public UsdImagingPrimAdapter UsdPrim const& descendentPrim, TfToken const& subprim, TfTokenVector const& properties, - UsdImagingPropertyInvalidationType invalidationType); + UsdImagingPropertyInvalidationType invalidationType) override; // ---------------------------------------------------------------------- // /// \name Initialization From 74423f67ac23d6a0a85171a2923fab6ac892ded5 Mon Sep 17 00:00:00 2001 From: tallytalwar Date: Tue, 25 Jul 2023 15:57:40 -0700 Subject: [PATCH 105/352] Fix compiler warnings in pluginLightAdapter for missing override (Internal change: 2285939) --- pxr/usdImaging/usdImaging/pluginLightAdapter.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pxr/usdImaging/usdImaging/pluginLightAdapter.h b/pxr/usdImaging/usdImaging/pluginLightAdapter.h index a4e53ef619..fa9cbe708d 100644 --- a/pxr/usdImaging/usdImaging/pluginLightAdapter.h +++ b/pxr/usdImaging/usdImaging/pluginLightAdapter.h @@ -64,15 +64,15 @@ class UsdImagingPluginLightAdapter : public UsdImagingLightAdapter { // ---------------------------------------------------------------------- // USDIMAGING_API - virtual SdfPath Populate(UsdPrim const& prim, - UsdImagingIndexProxy* index, - UsdImagingInstancerContext const* instancerContext = NULL); + SdfPath Populate(UsdPrim const& prim, + UsdImagingIndexProxy* index, + UsdImagingInstancerContext const* instancerContext = NULL) override; USDIMAGING_API - virtual bool IsSupported(UsdImagingIndexProxy const* index) const; + bool IsSupported(UsdImagingIndexProxy const* index) const override; protected: - virtual void _RemovePrim(SdfPath const& cachePath, + void _RemovePrim(SdfPath const& cachePath, UsdImagingIndexProxy* index) final; }; From be721e6590bed4c8bbb82626afc6d0ecbceb5f7b Mon Sep 17 00:00:00 2001 From: tallytalwar Date: Tue, 25 Jul 2023 15:57:46 -0700 Subject: [PATCH 106/352] Fix compiler warnings in rectLightAdapter.h for missing override (Internal change: 2285940) --- pxr/usdImaging/usdImaging/rectLightAdapter.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pxr/usdImaging/usdImaging/rectLightAdapter.h b/pxr/usdImaging/usdImaging/rectLightAdapter.h index ee8f4fccd7..e7740d35e5 100644 --- a/pxr/usdImaging/usdImaging/rectLightAdapter.h +++ b/pxr/usdImaging/usdImaging/rectLightAdapter.h @@ -65,16 +65,16 @@ class UsdImagingRectLightAdapter : public UsdImagingLightAdapter { // ---------------------------------------------------------------------- // USDIMAGING_API - virtual SdfPath Populate(UsdPrim const& prim, - UsdImagingIndexProxy* index, - UsdImagingInstancerContext const* instancerContext = NULL); + SdfPath Populate(UsdPrim const& prim, + UsdImagingIndexProxy* index, + UsdImagingInstancerContext const* instancerContext = NULL) override; USDIMAGING_API - virtual bool IsSupported(UsdImagingIndexProxy const* index) const; + bool IsSupported(UsdImagingIndexProxy const* index) const override; protected: - virtual void _RemovePrim(SdfPath const& cachePath, - UsdImagingIndexProxy* index) final; + void _RemovePrim(SdfPath const& cachePath, + UsdImagingIndexProxy* index) override final; }; From 4ab7e944793a5bd15057a4ddab56a58e1676a948 Mon Sep 17 00:00:00 2001 From: tallytalwar Date: Tue, 25 Jul 2023 15:57:58 -0700 Subject: [PATCH 107/352] Fix compiler warning about avoiding copy of token (Internal change: 2285943) --- pxr/usdImaging/usdImaging/renderSettingsAdapter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pxr/usdImaging/usdImaging/renderSettingsAdapter.cpp b/pxr/usdImaging/usdImaging/renderSettingsAdapter.cpp index e496b98c76..1efe14461b 100644 --- a/pxr/usdImaging/usdImaging/renderSettingsAdapter.cpp +++ b/pxr/usdImaging/usdImaging/renderSettingsAdapter.cpp @@ -176,7 +176,7 @@ UsdImagingRenderSettingsAdapter::Populate( _tokens->outputsRiDisplayFilters }; - for (const auto token : outputTokens) { + for (const auto &token : outputTokens) { SdfPathVector connections; prim.GetAttribute(token).GetConnections(&connections); for (auto const& connPath : connections) { From 9c8c0da77e9ebf0f987abb6627e96b195b07ae40 Mon Sep 17 00:00:00 2001 From: tallytalwar Date: Tue, 25 Jul 2023 15:58:04 -0700 Subject: [PATCH 108/352] Fix compiler warnings in sphereLightAdapter about missing override (Internal change: 2285945) --- pxr/usdImaging/usdImaging/sphereLightAdapter.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pxr/usdImaging/usdImaging/sphereLightAdapter.h b/pxr/usdImaging/usdImaging/sphereLightAdapter.h index ad84638c58..1489914b72 100644 --- a/pxr/usdImaging/usdImaging/sphereLightAdapter.h +++ b/pxr/usdImaging/usdImaging/sphereLightAdapter.h @@ -66,16 +66,16 @@ class UsdImagingSphereLightAdapter : public UsdImagingLightAdapter { USDIMAGING_API - virtual SdfPath Populate(UsdPrim const& prim, - UsdImagingIndexProxy* index, - UsdImagingInstancerContext const* instancerContext = NULL); + SdfPath Populate(UsdPrim const& prim, + UsdImagingIndexProxy* index, + UsdImagingInstancerContext const* instancerContext = NULL) override; USDIMAGING_API - virtual bool IsSupported(UsdImagingIndexProxy const* index) const; + bool IsSupported(UsdImagingIndexProxy const* index) const override; protected: - virtual void _RemovePrim(SdfPath const& cachePath, - UsdImagingIndexProxy* index) final; + void _RemovePrim(SdfPath const& cachePath, + UsdImagingIndexProxy* index) override final; }; From 647a63cc20804e5b1e22a5396371c1c86e966886 Mon Sep 17 00:00:00 2001 From: matthewcpp Date: Tue, 25 Jul 2023 15:58:16 -0700 Subject: [PATCH 109/352] The ArResolver will hand paths that contain URI schemes for which a resolver is not registered to the resolver for the anchor layer. This can result in the path being modified by a resolver that does not have knowledge of how to deal with the particular path such as a layer loaded from disk referencing an asset located on a web server. This change adds an additional check to the path anchoring code used during USD stage flattening. In the case where an asset path has the same identifier created in both the non-anchored and anchored case, we will assume that this is an 'absolute' path and return it as is to avoid modification by the layer's resolver. Fixes #2480 (Internal change: 2286000) --- pxr/usd/usd/flattenUtils.cpp | 21 +++- pxr/usd/usd/stage.cpp | 104 ++++++++++-------- pxr/usd/usd/testenv/testUsdFlatten.py | 62 +++++++++++ .../usd/testenv/testUsdFlattenLayerStack.py | 65 +++++++++++ 4 files changed, 204 insertions(+), 48 deletions(-) diff --git a/pxr/usd/usd/flattenUtils.cpp b/pxr/usd/usd/flattenUtils.cpp index 1648d6b474..f38b4eefaf 100644 --- a/pxr/usd/usd/flattenUtils.cpp +++ b/pxr/usd/usd/flattenUtils.cpp @@ -44,6 +44,7 @@ #include "pxr/usd/usd/stage.h" #include "pxr/usd/usd/tokens.h" #include "pxr/usd/usd/valueUtils.h" +#include "pxr/usd/ar/resolver.h" #include "pxr/usd/ar/resolverContextBinder.h" #include "pxr/base/tf/staticData.h" #include "pxr/base/tf/pathUtils.h" @@ -805,8 +806,24 @@ UsdFlattenLayerStackResolveAssetPath( { // Treat empty asset paths specially, since they cause coding errors in // SdfComputeAssetPathRelativeToLayer. - return assetPath.empty() ? - assetPath : SdfComputeAssetPathRelativeToLayer(sourceLayer, assetPath); + + if (assetPath.empty()) { + return assetPath; + } + + // If anchoring has no effect on asset path, return it as-is. For additional + // details, please see comments in _MakeResolvedAssetPathsImpl in stage.cpp. + const std::string anchoredPath = + SdfComputeAssetPathRelativeToLayer(sourceLayer, assetPath); + + const std::string unanchoredPath = ArGetResolver().CreateIdentifier( + assetPath); + + if (unanchoredPath == anchoredPath) { + return assetPath; + } + + return anchoredPath; } PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/usd/usd/stage.cpp b/pxr/usd/usd/stage.cpp index c20db3c93b..59a296e935 100644 --- a/pxr/usd/usd/stage.cpp +++ b/pxr/usd/usd/stage.cpp @@ -381,7 +381,7 @@ _ResolveAssetPathRelativeToLayer( return ArGetResolver().Resolve(computedAssetPath); } -// If anchorAssetPathsOnly is true, this function will only +// If forFlattening is true, this function will only // update the authored assetPaths by anchoring them to the // anchor layer; it will not fill in the resolved path field. static void @@ -389,7 +389,7 @@ _MakeResolvedAssetPathsImpl(const Usd_AssetPathContext &assetContext, const ArResolverContext &resolverContext, SdfAssetPath *assetPaths, size_t numAssetPaths, - bool anchorAssetPathsOnly) + bool forFlattening) { ArResolverContextBinder binder(resolverContext); for (size_t i = 0; i != numAssetPaths; ++i) { @@ -412,10 +412,22 @@ _MakeResolvedAssetPathsImpl(const Usd_AssetPathContext &assetContext, r.value.UncheckedGet() : std::string()); } - if (anchorAssetPathsOnly) { - assetPaths[i] = SdfAssetPath( - _AnchorAssetPathRelativeToLayer( - assetContext.layer, assetPaths[i].GetAssetPath())); + // When flattening, if the resolver can't handle this path + // (e.g., it's a URI and no associated URI resolver is registered), + // the result of anchoring may be non-sensical. We try to detect this + // by comparing the anchored result to the unanchored identifier. + // If they're the same, then we assume the path is absolute since the + // anchor had no effect, and we can just leave the path as-is. + if (forFlattening) { + const std::string anchoredPath = _AnchorAssetPathRelativeToLayer( + assetContext.layer, assetPaths[i].GetAssetPath()); + + const std::string unanchoredPath = ArGetResolver().CreateIdentifier( + assetPaths[i].GetAssetPath()); + + if (anchoredPath != unanchoredPath) { + assetPaths[i] = SdfAssetPath(anchoredPath); + } } else { assetPaths[i] = SdfAssetPath( @@ -431,7 +443,7 @@ UsdStage::_MakeResolvedAssetPaths(UsdTimeCode time, const UsdAttribute& attr, SdfAssetPath *assetPaths, size_t numAssetPaths, - bool anchorAssetPathsOnly) const + bool forFlattening) const { // Get the layer providing the strongest value and use that to anchor the // resolve. @@ -439,7 +451,7 @@ UsdStage::_MakeResolvedAssetPaths(UsdTimeCode time, if (context) { _MakeResolvedAssetPathsImpl( context, GetPathResolverContext(), assetPaths, numAssetPaths, - anchorAssetPathsOnly); + forFlattening); } } @@ -447,13 +459,13 @@ void UsdStage::_MakeResolvedAssetPathsValue(UsdTimeCode time, const UsdAttribute& attr, VtValue* value, - bool anchorAssetPathsOnly) const + bool forFlattening) const { if (value->IsHolding()) { SdfAssetPath assetPath; value->UncheckedSwap(assetPath); _MakeResolvedAssetPaths( - time, attr, &assetPath, 1, anchorAssetPathsOnly); + time, attr, &assetPath, 1, forFlattening); value->UncheckedSwap(assetPath); } @@ -462,7 +474,7 @@ UsdStage::_MakeResolvedAssetPathsValue(UsdTimeCode time, value->UncheckedSwap(assetPaths); _MakeResolvedAssetPaths( time, attr, assetPaths.data(), assetPaths.size(), - anchorAssetPathsOnly); + forFlattening); value->UncheckedSwap(assetPaths); } } @@ -4992,7 +5004,7 @@ class Usd_FlattenAccess // Get the resolved metadata with any asset paths anchored. obj.GetStage()->_GetAllMetadata( obj, /* useFallbacks = */ false, resultMap, - /* anchorAssetPathsOnly = */ true); + /* forFlattening = */ true); } static void ResolveValueForFlatten( @@ -5001,7 +5013,7 @@ class Usd_FlattenAccess { // Asset path values are anchored for flatten operations attr.GetStage()->_MakeResolvedAssetPathsValue( - time, attr, value, /* anchorAssetPathsOnly = */ true); + time, attr, value, /* forFlattening = */ true); // Time based values are adjusted by layer offset when flattened to a // layer affected by an offset. if (!timeOffset.IsIdentity()) { @@ -5623,21 +5635,21 @@ static void _ResolveAssetPath(SdfAssetPath *v, const ArResolverContext &resolverContext, const Usd_AssetPathContext &assetContext, - bool anchorAssetPathsOnly) + bool forFlattening) { _MakeResolvedAssetPathsImpl( - assetContext, resolverContext, v, 1, anchorAssetPathsOnly); + assetContext, resolverContext, v, 1, forFlattening); } static void _ResolveAssetPath(VtArray *v, const ArResolverContext &resolverContext, const Usd_AssetPathContext &assetContext, - bool anchorAssetPathsOnly) + bool forFlattening) { _MakeResolvedAssetPathsImpl( assetContext, resolverContext, v->data(), v->size(), - anchorAssetPathsOnly); + forFlattening); } template @@ -5645,11 +5657,11 @@ static void _UncheckedResolveAssetPath(Storage storage, const ArResolverContext &resolverContext, const Usd_AssetPathContext &assetContext, - bool anchorAssetPathsOnly) + bool forFlattening) { T v; _UncheckedSwap(storage, v); - _ResolveAssetPath(&v, resolverContext, assetContext, anchorAssetPathsOnly); + _ResolveAssetPath(&v, resolverContext, assetContext, forFlattening); _UncheckedSwap(storage, v); } @@ -5658,11 +5670,11 @@ static bool _TryResolveAssetPath(Storage storage, const ArResolverContext &resolverContext, const Usd_AssetPathContext &assetContext, - bool anchorAssetPathsOnly) + bool forFlattening) { if (_IsHolding(storage)) { _UncheckedResolveAssetPath( - storage, resolverContext, assetContext, anchorAssetPathsOnly); + storage, resolverContext, assetContext, forFlattening); return true; } return false; @@ -5675,13 +5687,13 @@ static bool _TryResolveAssetPaths(Storage storage, const ArResolverContext &resolverContext, const Usd_AssetPathContext &assetContext, - bool anchorAssetPathsOnly) + bool forFlattening) { return _TryResolveAssetPath( - storage, resolverContext, assetContext, anchorAssetPathsOnly) || + storage, resolverContext, assetContext, forFlattening) || _TryResolveAssetPath>( - storage, resolverContext, assetContext, anchorAssetPathsOnly); + storage, resolverContext, assetContext, forFlattening); } template @@ -5732,25 +5744,25 @@ _ResolveValuesInDictionary(const Usd_AssetPathContext &anchor, const ArResolverContext &context, const LayerOffsetAccess *offsetAccess, VtDictionary *dict, - bool anchorAssetPathsOnly) + bool forFlattening) { // If there is no layer offset, don't bother with resolving time codes and // just resolve asset paths. if (offsetAccess) { Usd_ResolveValuesInDictionary(dict, - [&anchor, &context, &offsetAccess, &anchorAssetPathsOnly] + [&anchor, &context, &offsetAccess, &forFlattening] (VtValue *value) { _TryResolveAssetPaths( - value, context, anchor, anchorAssetPathsOnly) || + value, context, anchor, forFlattening) || _TryResolveTimeCodes(value, *offsetAccess); }); } else { Usd_ResolveValuesInDictionary(dict, - [&anchor, &context, &anchorAssetPathsOnly](VtValue *value) + [&anchor, &context, &forFlattening](VtValue *value) { _TryResolveAssetPaths( - value, context, anchor, anchorAssetPathsOnly); + value, context, anchor, forFlattening); }); } } @@ -5763,13 +5775,13 @@ _TryResolveValuesInDictionary(Storage storage, const Usd_AssetPathContext &anchor, const ArResolverContext &context, const LayerOffsetAccess *offsetAccess, - bool anchorAssetPathsOnly) + bool forFlattening) { if (_IsHolding(storage)) { VtDictionary resolvedDict; _UncheckedSwap(storage, resolvedDict); _ResolveValuesInDictionary( - anchor, context, offsetAccess, &resolvedDict, anchorAssetPathsOnly); + anchor, context, offsetAccess, &resolvedDict, forFlattening); _UncheckedSwap(storage, resolvedDict); return true; } @@ -5780,7 +5792,7 @@ _TryResolveValuesInDictionary(Storage storage, namespace { // Non-virtual value composer base class. Helps provide shared functionality -// amongst the different derived value composer classed. The derived classes +// amongst the different derived value composer classes. The derived classes // must all implement a ConsumeAuthored and ConsumeUsdFallback function. template struct ValueComposerBase @@ -5799,8 +5811,8 @@ struct ValueComposerBase protected: // Protected constructor. - explicit ValueComposerBase(Storage s, bool anchorAssetPathsOnly = false) - : _value(s), _done(false), _anchorAssetPathsOnly(anchorAssetPathsOnly) + explicit ValueComposerBase(Storage s, bool forFlattening = false) + : _value(s), _done(false), _forFlattening(forFlattening) {} // Gets the value from the layer spec. @@ -5849,7 +5861,7 @@ struct ValueComposerBase // Try resolving the values in the dictionary. if (_TryResolveValuesInDictionary( _value, { &stage, layer, specPath, node }, - context, &layerOffsetAccess, _anchorAssetPathsOnly)) { + context, &layerOffsetAccess, _forFlattening)) { // Merge the resolved dictionary. VtDictionaryOverRecursive( &tmpDict, _UncheckedGet(_value)); @@ -5887,7 +5899,7 @@ struct ValueComposerBase Storage _value; bool _done; - bool _anchorAssetPathsOnly; + bool _forFlattening; }; // Value composer for a type erased VtValue. This will check the type @@ -5897,8 +5909,8 @@ struct UntypedValueComposer : public ValueComposerBase using Base = ValueComposerBase; explicit UntypedValueComposer( - VtValue *s, bool anchorAssetPathsOnly = false) - : Base(s, anchorAssetPathsOnly) {} + VtValue *s, bool forFlattening = false) + : Base(s, forFlattening) {} bool ConsumeAuthored(const UsdStage &stage, const PcpNodeRef &node, @@ -5972,7 +5984,7 @@ struct UntypedValueComposer : public ValueComposerBase // empty VtValue. if (_TryResolveValuesInDictionary( this->_value, { &stage, layer, specPath, node }, - context, &layerOffsetAccess, this->_anchorAssetPathsOnly)) { + context, &layerOffsetAccess, this->_forFlattening)) { } else { // Otherwise try resolving each of the the other resolvable // types. @@ -5981,7 +5993,7 @@ struct UntypedValueComposer : public ValueComposerBase _TryResolveAssetPaths( this->_value, context, { &stage, layer, specPath, node }, - this->_anchorAssetPathsOnly) || + this->_forFlattening) || _TryResolveTimeCodes(this->_value, layerOffsetAccess); } } @@ -5997,7 +6009,7 @@ struct StrongestValueComposer : public ValueComposerBase using Base = ValueComposerBase; explicit StrongestValueComposer(SdfAbstractDataValue *s) - : Base(s, /* anchorAssetPathsOnly = */ false) {} + : Base(s, /* forFlattening = */ false) {} bool ConsumeAuthored(const UsdStage &stage, @@ -6039,7 +6051,7 @@ struct TypeSpecificValueComposer : friend Base; explicit TypeSpecificValueComposer(SdfAbstractDataTypedValue *s) - : Base(s, /*anchorAssetPathsOnly = */ false) {} + : Base(s, /*forFlattening = */ false) {} bool ConsumeAuthored(const UsdStage &stage, const PcpNodeRef &node, @@ -6102,7 +6114,7 @@ TypeSpecificValueComposer::_ResolveValue( node.GetLayerStack()->GetIdentifier().pathResolverContext; _UncheckedResolveAssetPath( _value, context, { &stage, layer, specPath, node }, - /*anchorAssetPathsOnly = */ false); + /*forFlattening = */ false); } template <> @@ -6117,7 +6129,7 @@ TypeSpecificValueComposer>::_ResolveValue( node.GetLayerStack()->GetIdentifier().pathResolverContext; _UncheckedResolveAssetPath>( _value, context, { &stage, layer, specPath, node }, - /*anchorAssetPathsOnly = */ false); + /*forFlattening = */ false); } template <> @@ -7220,7 +7232,7 @@ void UsdStage::_GetAllMetadata(const UsdObject &obj, bool useFallbacks, UsdMetadataValueMap* resultMap, - bool anchorAssetPathsOnly) const + bool forFlattening) const { TRACE_FUNCTION(); @@ -7229,7 +7241,7 @@ UsdStage::_GetAllMetadata(const UsdObject &obj, TfTokenVector fieldNames = _ListMetadataFields(obj, useFallbacks); for (const auto& fieldName : fieldNames) { VtValue val; - UntypedValueComposer composer(&val, anchorAssetPathsOnly); + UntypedValueComposer composer(&val, forFlattening); _GetMetadataImpl(obj, fieldName, TfToken(), useFallbacks, &composer); result[fieldName] = val; } diff --git a/pxr/usd/usd/testenv/testUsdFlatten.py b/pxr/usd/usd/testenv/testUsdFlatten.py index 1b1086f470..9b86b93ebd 100644 --- a/pxr/usd/usd/testenv/testUsdFlatten.py +++ b/pxr/usd/usd/testenv/testUsdFlatten.py @@ -399,6 +399,68 @@ def test_FlattenStageMetadata(self): resultLayer.QueryTimeSample(resultSubAttrSpec.path, 12.0), 200.0) self.assertEqual( resultLayer.QueryTimeSample(resultSubAttrSpec.path, 24.0), 201.0) + + def test_FlattenPathsWithMissungUriResolvers(self): + """Tests that when flattening, asset paths that contain URI schemes + for which there is no registered resolver are left unmodified + """ + + rootLayer = Sdf.Layer.CreateAnonymous(".usda") + rootLayer.ImportFromString(""" + #usda 1.0 + + def "TestPrim"( + assetInfo = { + asset identifier = @test123://1.2.3.4/file3.txt@ + asset[] assetRefArr = [@test123://1.2.3.4/file6.txt@] + } + ) + { + asset uriAssetRef = @test123://1.2.3.4/file1.txt@ + asset[] uriAssetRefArray = [@test123://1.2.3.4/file2.txt@] + + asset uriAssetRef.timeSamples = { + 0: @test123://1.2.3.4/file4.txt@, + 1: @test123://1.2.3.4/file5.txt@, + } + + asset[] uriAssetRefArray.timeSamples = { + 0: [@test123://1.2.3.4/file6.txt@], + 1: [@test123://1.2.3.4/file7.txt@], + } + } + """.strip()) + + stage = Usd.Stage.Open(rootLayer) + flatStage = Usd.Stage.Open(stage.Flatten()) + + propPath = "/TestPrim.uriAssetRef" + stageProp = stage.GetPropertyAtPath(propPath) + flatStageProp = flatStage.GetPropertyAtPath(propPath) + self.assertEqual(stageProp.Get(), flatStageProp.Get()) + + self.assertEqual(stageProp.GetTimeSamples(), flatStageProp.GetTimeSamples()) + for timeSample in stageProp.GetTimeSamples(): + self.assertEqual(stageProp.Get(timeSample), flatStageProp.Get(timeSample)) + + arrayPath = "/TestPrim.uriAssetRefArray" + arrayProp = stage.GetPropertyAtPath(arrayPath) + flatArrayProp = flatStage.GetPropertyAtPath(arrayPath) + self.assertEqual(arrayProp.Get(), flatArrayProp.Get()) + + self.assertEqual(arrayProp.GetTimeSamples(), flatArrayProp.GetTimeSamples()) + + for timeSample in arrayProp.GetTimeSamples(): + self.assertEqual(arrayProp.Get(timeSample), flatArrayProp.Get(timeSample)) + + primPath = "/TestPrim" + self.assertEqual( + stage.GetPrimAtPath(primPath).GetMetadata("assetInfo").get("identifier"), + flatStage.GetPrimAtPath(primPath).GetMetadata("assetInfo").get("identifier")) + + self.assertEqual( + stage.GetPrimAtPath(primPath).GetMetadata("assetInfo").get("assetRefArr"), + flatStage.GetPrimAtPath(primPath).GetMetadata("assetInfo").get("assetRefArr")) if __name__ == "__main__": unittest.main() diff --git a/pxr/usd/usd/testenv/testUsdFlattenLayerStack.py b/pxr/usd/usd/testenv/testUsdFlattenLayerStack.py index 52cd1856c7..0a9b6dde12 100644 --- a/pxr/usd/usd/testenv/testUsdFlattenLayerStack.py +++ b/pxr/usd/usd/testenv/testUsdFlattenLayerStack.py @@ -427,6 +427,71 @@ def test_Tags(self): layer = Usd.FlattenLayerStack(src_layer_stack, tag=tag) self.assertTrue(layer.identifier.endswith(extension)) + def test_FlattenLayerStackPathsWithMissungUriResolvers(self): + """Tests that when flattening, asset paths that contain URI schemes + for which there is no registered resolver are left unmodified + """ + + rootLayer = Sdf.Layer.CreateAnonymous(".usda") + rootLayer.ImportFromString(""" + #usda 1.0 + + def "TestPrim"( + assetInfo = { + asset identifier = @test123://1.2.3.4/file3.txt@ + asset[] assetRefArr = [@test123://1.2.3.4/file6.txt@] + } + ) + { + asset uriAssetRef = @test123://1.2.3.4/file1.txt@ + asset[] uriAssetRefArray = [@test123://1.2.3.4/file2.txt@] + + asset uriAssetRef.timeSamples = { + 0: @test123://1.2.3.4/file4.txt@, + 1: @test123://1.2.3.4/file5.txt@, + } + + asset[] uriAssetRefArray.timeSamples = { + 0: [@test123://1.2.3.4/file6.txt@], + 1: [@test123://1.2.3.4/file7.txt@], + } + } + """.strip()) + + stage = Usd.Stage.Open(rootLayer) + flatStage = Usd.Stage.Open(stage.Flatten()) + + propPath = "/TestPrim.uriAssetRef" + stageProp = stage.GetPropertyAtPath(propPath) + flatStageProp = flatStage.GetPropertyAtPath(propPath) + self.assertEqual(stageProp.Get(), flatStageProp.Get()) + + self.assertEqual(stageProp.GetTimeSamples(), + flatStageProp.GetTimeSamples()) + + for timeSample in stageProp.GetTimeSamples(): + self.assertEqual(stageProp.Get(timeSample), flatStageProp.Get(timeSample)) + + arrayPath = "/TestPrim.uriAssetRefArray" + self.assertEqual(stage.GetPropertyAtPath(arrayPath).Get(), + flatStage.GetPropertyAtPath(arrayPath).Get()) + + self.assertEqual(stage.GetPropertyAtPath(arrayPath).GetTimeSamples(), + flatStage.GetPropertyAtPath(arrayPath).GetTimeSamples()) + + for timeSample in stage.GetPropertyAtPath(arrayPath).GetTimeSamples(): + self.assertEqual(stage.GetPropertyAtPath(arrayPath).Get(timeSample), + flatStage.GetPropertyAtPath(arrayPath).Get(timeSample)) + + primPath = "/TestPrim" + self.assertEqual( + stage.GetPrimAtPath(primPath).GetMetadata("assetInfo").get("identifier"), + flatStage.GetPrimAtPath(primPath).GetMetadata("assetInfo").get("identifier")) + + self.assertEqual( + stage.GetPrimAtPath(primPath).GetMetadata("assetInfo").get("assetRefArr"), + flatStage.GetPrimAtPath(primPath).GetMetadata("assetInfo").get("assetRefArr")) + if __name__=="__main__": # Register test plugin defining timecode metadata fields. testDir = os.path.abspath(os.getcwd()) From 6c2166ee5820a5b901c63d2a5b2af1407ae6451e Mon Sep 17 00:00:00 2001 From: unhyperbolic Date: Tue, 25 Jul 2023 15:59:08 -0700 Subject: [PATCH 110/352] Making testHdPrman.cpp use UsdImagingInstantiateSceneIndices. (Internal change: 2286012) --- .../plugin/hdPrman/testenv/testHdPrman.cpp | 34 ++++--------------- 1 file changed, 7 insertions(+), 27 deletions(-) diff --git a/third_party/renderman-25/plugin/hdPrman/testenv/testHdPrman.cpp b/third_party/renderman-25/plugin/hdPrman/testenv/testHdPrman.cpp index cf7e0f88ce..5b31258b99 100644 --- a/third_party/renderman-25/plugin/hdPrman/testenv/testHdPrman.cpp +++ b/third_party/renderman-25/plugin/hdPrman/testenv/testHdPrman.cpp @@ -49,14 +49,8 @@ #include "pxr/usd/usdRender/var.h" #include "pxr/usdImaging/usdImaging/delegate.h" -#include "pxr/usdImaging/usdImaging/drawModeSceneIndex.h" -#include "pxr/usdImaging/usdImaging/niPrototypePropagatingSceneIndex.h" -#include "pxr/usdImaging/usdImaging/piPrototypePropagatingSceneIndex.h" -#include "pxr/usdImaging/usdImaging/renderSettingsFlatteningSceneIndex.h" -#include "pxr/usdImaging/usdImaging/rootOverridesSceneIndex.h" -#include "pxr/usdImaging/usdImaging/selectionSceneIndex.h" +#include "pxr/usdImaging/usdImaging/sceneIndices.h" #include "pxr/usdImaging/usdImaging/stageSceneIndex.h" -#include "pxr/usdImaging/usdImaging/flattenedDataSourceProviders.h" #include "pxr/base/tf/envSetting.h" #include "pxr/base/tf/pathUtils.h" @@ -727,27 +721,13 @@ HydraSetupAndRender( std::unique_ptr hdUsdFrontend; if (TfGetEnvSetting(TEST_HD_PRMAN_ENABLE_SCENE_INDEX)) { - UsdImagingStageSceneIndexRefPtr usdStageSceneIndex; - usdStageSceneIndex = UsdImagingStageSceneIndex::New(); - usdStageSceneIndex->SetStage(stage); - usdStageSceneIndex->SetTime(frameNum); - - // Chain scene indices; Note that this mirrors UsdImagingGLEngine - HdSceneIndexBaseRefPtr siChainHead = usdStageSceneIndex; - siChainHead = UsdImagingRootOverridesSceneIndex::New(siChainHead); - siChainHead = UsdImagingPiPrototypePropagatingSceneIndex::New(siChainHead); - siChainHead = UsdImagingNiPrototypePropagatingSceneIndex::New(siChainHead); - siChainHead = UsdImagingSelectionSceneIndex::New(siChainHead); - siChainHead = UsdImagingRenderSettingsFlatteningSceneIndex::New(siChainHead); - siChainHead = HdFlatteningSceneIndex::New( - siChainHead, UsdImagingFlattenedDataSourceProviders()); - siChainHead = UsdImagingDrawModeSceneIndex::New(siChainHead, nullptr); - siChainHead = HdsiLegacyDisplayStyleOverrideSceneIndex::New(siChainHead); - - // Insert scene index chain into the render index. + UsdImagingSceneIndicesCreateInfo createInfo; + createInfo.stage = stage; + UsdImagingSceneIndices sceneIndices = + UsdImagingInstantiateSceneIndices(createInfo); + sceneIndices.stageSceneIndex->SetTime(frameNum); hdRenderIndex->InsertSceneIndex( - siChainHead, SdfPath::AbsoluteRootPath()); - + sceneIndices.finalSceneIndex, SdfPath::AbsoluteRootPath()); } else { hdUsdFrontend = std::make_unique( hdRenderIndex.get(), From 75e18d082c67fdcfc706970453126782998ae400 Mon Sep 17 00:00:00 2001 From: meshula Date: Tue, 25 Jul 2023 15:59:15 -0700 Subject: [PATCH 111/352] Re-activate the hioOIIO exr handling while tests are put into place specifically for the new exr plugin. (Internal change: 2286024) --- pxr/imaging/hio/plugInfo.json | 5 ----- pxr/imaging/plugin/hioOiio/plugInfo.json | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/pxr/imaging/hio/plugInfo.json b/pxr/imaging/hio/plugInfo.json index 2612c4d5ba..d27f2466d0 100644 --- a/pxr/imaging/hio/plugInfo.json +++ b/pxr/imaging/hio/plugInfo.json @@ -7,11 +7,6 @@ "bases": ["HioImage"], "imageTypes": ["bmp", "jpg", "jpeg", "png", "tga", "hdr"], "precedence": 30 - }, - "Hio_OpenEXRImage" : { - "bases": ["HioImage"], - "imageTypes": ["exr"], - "precedence": 30 } } }, diff --git a/pxr/imaging/plugin/hioOiio/plugInfo.json b/pxr/imaging/plugin/hioOiio/plugInfo.json index 6a89df32d5..f5a6c8950c 100644 --- a/pxr/imaging/plugin/hioOiio/plugInfo.json +++ b/pxr/imaging/plugin/hioOiio/plugInfo.json @@ -5,7 +5,7 @@ "Types": { "HioOIIO_Image" : { "bases": ["HioImage"], - "imageTypes": ["tif", "tiff", "zfile", "tx"], + "imageTypes": ["exr", "tif", "tiff", "zfile", "tx"], "precedence": 10 } } From bb5fbebbfd6fb5757f715654101b678d04bbf694 Mon Sep 17 00:00:00 2001 From: rajabala Date: Tue, 25 Jul 2023 16:08:02 -0700 Subject: [PATCH 112/352] [hdPrman] Refactor initialization of scene options - Add utility methods to compute fallback and environment based options and compose these opinions with those from the render settings map on initialization. Note: We don't maintain the precedence of opinions after initialization. On subsequent updates, the render settings map opinion wins. (Internal change: 2286060) --- .../plugin/hdPrman/renderParam.cpp | 265 ++++-------------- .../renderman-25/plugin/hdPrman/renderParam.h | 47 ++-- .../renderman-25/plugin/hdPrman/utils.cpp | 200 ++++++++++++- .../renderman-25/plugin/hdPrman/utils.h | 16 +- 4 files changed, 296 insertions(+), 232 deletions(-) diff --git a/third_party/renderman-25/plugin/hdPrman/renderParam.cpp b/third_party/renderman-25/plugin/hdPrman/renderParam.cpp index 9f7b78f108..f8b50f3c3d 100644 --- a/third_party/renderman-25/plugin/hdPrman/renderParam.cpp +++ b/third_party/renderman-25/plugin/hdPrman/renderParam.cpp @@ -37,19 +37,13 @@ #include "hdPrman/rixStrings.h" #include "hdPrman/utils.h" -#include "pxr/base/arch/fileSystem.h" #include "pxr/base/arch/library.h" -#include "pxr/base/work/threadLimits.h" - #include "pxr/base/plug/registry.h" #include "pxr/base/plug/plugin.h" #include "pxr/base/tf/debug.h" #include "pxr/base/tf/getenv.h" #include "pxr/base/tf/envSetting.h" -#include "pxr/base/tf/staticData.h" -#include "pxr/base/tf/stringUtils.h" #include "pxr/base/tf/pathUtils.h" // Extract extension from tf token -#include "pxr/usd/sdf/assetPath.h" #include "pxr/usd/sdf/path.h" #include "pxr/usd/sdr/registry.h" #include "pxr/imaging/hio/imageRegistry.h" @@ -91,8 +85,9 @@ TF_DEFINE_PRIVATE_TOKENS( ((riRiFormatResolution, "ri:Ri:FormatResolution")) ((riHiderMinSamples, "ri:hider:minsammples")) ((riHiderMaxSamples, "ri:hider:maxsamples")) - ((riRiPixelVarriance, "ri:Ri:PixelVariance")) + ((riRiPixelVariance, "ri:Ri:PixelVariance")) ((riRiFormatPixelAspectRatio, "ri:Ri:FormatPixelAspectRatio")) + ((riLimitsThreads, "ri:limits:threads")) ); @@ -102,18 +97,13 @@ TF_DEFINE_ENV_SETTING(HD_PRMAN_NTHREADS, 0, "Override number of threads used by HdPrman"); TF_DEFINE_ENV_SETTING(HD_PRMAN_OSL_VERBOSE, 0, "Override osl verbose in HdPrman"); +TF_DEFINE_ENV_SETTING(HD_PRMAN_DISABLE_HIDER_JITTER, false, + "Disable hider jitter"); extern TfEnvSetting HD_PRMAN_ENABLE_QUICKINTEGRATE; - static bool _enableQuickIntegrate = TfGetEnvSetting(HD_PRMAN_ENABLE_QUICKINTEGRATE); -TF_DEFINE_ENV_SETTING(HD_PRMAN_DISABLE_HIDER_JITTER, false, - "Disable hider jitter"); - -static bool _disableJitter = - TfGetEnvSetting(HD_PRMAN_DISABLE_HIDER_JITTER); - TF_MAKE_STATIC_DATA(std::vector, _integratorCameraCallbacks) { @@ -995,7 +985,7 @@ HdPrman_RenderParam::SetOptionsFromRenderSettingsMap( // present. if (token == HdRenderSettingsTokens->convergedSamplesPerPixel) { if (!_Contains(renderSettingsMap, - _riOptionsTokens->riRiFormatResolution)) { + _riOptionsTokens->riHiderMaxSamples)) { VtValue vtInt = val.Cast(); int maxSamples = TF_VERIFY(!vtInt.IsEmpty()) ? @@ -1005,7 +995,7 @@ HdPrman_RenderParam::SetOptionsFromRenderSettingsMap( } else if (token == HdRenderSettingsTokens->convergedVariance) { if (!_Contains(renderSettingsMap, - _riOptionsTokens->riRiPixelVarriance)) { + _riOptionsTokens->riRiPixelVariance)) { VtValue vtFloat = val.Cast(); float pixelVariance = TF_VERIFY(!vtFloat.IsEmpty()) ? vtFloat.UncheckedGet() : 0.001f; @@ -1026,6 +1016,15 @@ HdPrman_RenderParam::SetOptionsFromRenderSettingsMap( options.SetIntegerArray(RixStr.k_Ri_FormatResolution, res.data(), 2); } + } else if (token == HdRenderSettingsTokens->threadLimit) { + if (!_Contains(renderSettingsMap, + _riOptionsTokens->riLimitsThreads)) { + VtValue vtInt = val.Cast(); + if (!vtInt.IsEmpty()) { + options.SetInteger(RixStr.k_limits_threads, + vtInt.UncheckedGet()); + } + } } else if (token == HdPrmanRenderSettingsTokens->batchCommandLine) { batchCommandLine = val; @@ -1152,103 +1151,6 @@ HdPrman_RenderParam::SetBatchCommandLineArgs( } } -void -HdPrman_UpdateSearchPathsFromEnvironment(RtParamList& options) -{ - // searchpath:shader contains OSL (.oso) - std::string shaderpath = TfGetenv("RMAN_SHADERPATH"); - if (!shaderpath.empty()) { - // RenderMan expects ':' as path separator, regardless of platform - NdrStringVec paths = TfStringSplit(shaderpath, ARCH_PATH_LIST_SEP); - shaderpath = TfStringJoin(paths, ":"); - options.SetString( RixStr.k_searchpath_shader, - RtUString(shaderpath.c_str()) ); - } else { - NdrStringVec paths; - // Default RenderMan installation under '$RMANTREE/lib/shaders' - std::string rmantree = TfGetenv("RMANTREE"); - if (!rmantree.empty()) { - paths.push_back(TfStringCatPaths(rmantree, "lib/shaders")); - } - // Default hdPrman installation under 'plugins/usd/resources/shaders' - PlugPluginPtr plugin = - PlugRegistry::GetInstance().GetPluginWithName("hdPrmanLoader"); - if (plugin) - { - std::string path = TfGetPathName(plugin->GetPath()); - if (!path.empty()) { - paths.push_back(TfStringCatPaths(path, "resources/shaders")); - } - } - shaderpath = TfStringJoin(paths, ":"); - options.SetString( RixStr.k_searchpath_shader, - RtUString(shaderpath.c_str()) ); - } - - // searchpath:rixplugin contains C++ (.so) plugins - std::string rixpluginpath = TfGetenv("RMAN_RIXPLUGINPATH"); - if (!rixpluginpath.empty()) { - // RenderMan expects ':' as path separator, regardless of platform - NdrStringVec paths = TfStringSplit(rixpluginpath, ARCH_PATH_LIST_SEP); - rixpluginpath = TfStringJoin(paths, ":"); - options.SetString( RixStr.k_searchpath_rixplugin, - RtUString(rixpluginpath.c_str()) ); - } else { - NdrStringVec paths; - // Default RenderMan installation under '$RMANTREE/lib/plugins' - std::string rmantree = TfGetenv("RMANTREE"); - if (!rmantree.empty()) { - paths.push_back(TfStringCatPaths(rmantree, "lib/plugins")); - } - rixpluginpath = TfStringJoin(paths, ":"); - options.SetString( RixStr.k_searchpath_rixplugin, - RtUString(rixpluginpath.c_str()) ); - } - - // searchpath:texture contains textures (.tex) and Rtx plugins (.so) - std::string texturepath = TfGetenv("RMAN_TEXTUREPATH"); - if (!texturepath.empty()) { - // RenderMan expects ':' as path separator, regardless of platform - NdrStringVec paths = TfStringSplit(texturepath, ARCH_PATH_LIST_SEP); - texturepath = TfStringJoin(paths, ":"); - options.SetString( RixStr.k_searchpath_texture, - RtUString(texturepath.c_str()) ); - } else { - NdrStringVec paths; - // Default RenderMan installation under '$RMANTREE/lib/textures' - // and '$RMANTREE/lib/plugins' - std::string rmantree = TfGetenv("RMANTREE"); - if (!rmantree.empty()) { - paths.push_back(TfStringCatPaths(rmantree, "lib/textures")); - paths.push_back(TfStringCatPaths(rmantree, "lib/plugins")); - } - // Default hdPrman installation under 'plugins/usd' - // We need the path to RtxHioImage and we assume that it lives in the - // same directory as hdPrmanLoader - PlugPluginPtr plugin = - PlugRegistry::GetInstance().GetPluginWithName("hdPrmanLoader"); - if (plugin) - { - std::string path = TfGetPathName(plugin->GetPath()); - if (!path.empty()) { - paths.push_back(path); - } - } - texturepath = TfStringJoin(paths, ":"); - options.SetString( RixStr.k_searchpath_texture, - RtUString(texturepath.c_str()) ); - } - - std::string proceduralpath = TfGetenv("RMAN_PROCEDURALPATH"); - if (!proceduralpath.empty()) { - // RenderMan expects ':' as path separator, regardless of platform - NdrStringVec paths = TfStringSplit(proceduralpath, ARCH_PATH_LIST_SEP); - proceduralpath = TfStringJoin(paths, ":"); - options.SetString( RixStr.k_searchpath_procedural, - RtUString(proceduralpath.c_str()) ); - } -} - void HdPrman_RenderParam::SetIntegratorParamsFromCamera( HdPrmanRenderDelegate *renderDelegate, @@ -1863,7 +1765,7 @@ HdPrman_RenderParam::_ComputeIntegratorNode( void HdPrman_RenderParam::_CreateIntegrator(HdRenderDelegate * const renderDelegate) { - // Called when there isn't even a render index yet, so we ignore + // Called before we have access to the camera Sprim, so we ignore // integrator opinions coming from the camera here. They will be // consumed in UpdateIntegrator. static const HdPrmanCamera * const camera = nullptr; @@ -1874,11 +1776,19 @@ HdPrman_RenderParam::_CreateIntegrator(HdRenderDelegate * const renderDelegate) riley::UserId( stats::AddDataLocation(integratorNode.name.CStr()).GetValue()), integratorNode); + + TF_VERIFY(_integratorId != riley::IntegratorId::InvalidId()); + + _activeIntegratorId = _integratorId; } void HdPrman_RenderParam::UpdateIntegrator(const HdRenderIndex * const renderIndex) { + if (!TF_VERIFY(_integratorId != riley::IntegratorId::InvalidId())) { + return; + } + const riley::ShadingNode node = _ComputeIntegratorNode( renderIndex->GetRenderDelegate(), _cameraContext.GetCamera(renderIndex)); @@ -1943,109 +1853,31 @@ HdPrman_RenderParam::Begin(HdPrmanRenderDelegate *renderDelegate) // // Riley setup // - static const RtUString us_circle("circle"); - - // Set riley options from the render settings map or environment. - // Note: As we transition render settings to be scene description driven, - // we'll continue to leverage the render settings map for options that - // aren't specified by the usdRiPxr schema's that are applied to - // RenderSettings (PxrOptionsAPI) { + // Initialize scene options by composing opinions with the + // following precedence: + // fallback < legacy settings map < environment. RtParamList &options = GetOptions(); - // Set thread limit for Renderman. Leave a few threads for app. - // Note: This option is listed as ri:limits:threads under PxrOptionsAPI. - { - static const unsigned appThreads = 4; - unsigned nThreads = - std::max(WorkGetConcurrencyLimit()-appThreads, 1u); - // Check the environment - const unsigned nThreadsEnv = TfGetEnvSetting(HD_PRMAN_NTHREADS); - if (nThreadsEnv > 0) { - nThreads = nThreadsEnv; - } else { - // Otherwise check for a render setting - const VtValue vtThreads = renderDelegate->GetRenderSetting( - HdRenderSettingsTokens->threadLimit).Cast(); - if (!vtThreads.IsEmpty()) { - nThreads = vtThreads.UncheckedGet(); - } - } - options.SetInteger(RixStr.k_limits_threads, nThreads); - } - - HdPrman_UpdateSearchPathsFromEnvironment(options); - - // Path tracer default configuration. Values below may be overriden by - // those in the render settings map and/or prim. - // Note: Options below are listed under PxrOptionsAPI as - // ri:hider:minsamples - // ri:hider:maxsamples - // ri:hider:incremental - // ri:hider:jitter - // ri:Ri:FormatPixelAspectRatio - // ri:Ri:FormatPixelVariance - // ri:bucket:order - { - options.SetInteger(RixStr.k_hider_minsamples, 1); - options.SetInteger(RixStr.k_hider_maxsamples, 16); - options.SetInteger(RixStr.k_hider_incremental, 1); - options.SetInteger(RixStr.k_hider_jitter, !_disableJitter); - // XXX Unclear what this option is in the schema. - options.SetInteger(RixStr.k_trace_maxdepth, 10); - options.SetFloat(RixStr.k_Ri_FormatPixelAspectRatio, 1.0f); - options.SetFloat(RixStr.k_Ri_PixelVariance, 0.001f); - options.SetString(RixStr.k_bucket_order, us_circle); - } - - // Camera lens - // Note: This riley option is driven by the active camera's - // shutter open and close times. The values below serve as - // defaults. - { - // XXX Shutter settings from studio katana defaults: - // - /root.renderSettings.shutter{Open,Close} - float shutterInterval[2] = { 0.0f, 0.5f }; - if (!TfGetEnvSetting(HD_PRMAN_ENABLE_MOTIONBLUR)) { - shutterInterval[1] = 0.0; - } - options.SetFloatArray(RixStr.k_Ri_Shutter, shutterInterval, 2); - } - - // OSL verbose - { - const int oslVerbose = TfGetEnvSetting(HD_PRMAN_OSL_VERBOSE); - if (oslVerbose > 0) - options.SetInteger(RtUString("user:osl:verbose"), oslVerbose); - } - - // Searchpaths (TEXTUREPATH, etc) - HdPrman_UpdateSearchPathsFromEnvironment(options); - - // Set additional options from the render settings map (e.g, options - // using the ri namespace, i.e., ri:* excluding integrator) + options = HdPrman_Utils::GetDefaultRileyOptions(); SetOptionsFromRenderSettingsMap( static_cast(renderDelegate) ->GetRenderSettingsMap(), options); + options.Update(HdPrman_Utils::GetRileyOptionsFromEnvironment()); RtParamList prunedOptions = - HdPrman_Utils::PruneDeprecatedOptions(GetOptions()); + HdPrman_Utils::PruneDeprecatedOptions(options); _riley->SetOptions(prunedOptions); TF_DEBUG(HDPRMAN_RENDER_SETTINGS).Msg( "Setting options from legacy settings map on riley initialization:" "%s\n", HdPrmanDebugUtil::RtParamListToString(prunedOptions).c_str()); - } - - GetCameraContext().Begin(_riley); - - _CreateIntegrator(renderDelegate); - _CreateQuickIntegrator(renderDelegate); - _activeIntegratorId = GetIntegratorId(); - - _CreateFallbackMaterials(); + // Safe to create riley objects since SetOptions has been called. + _CreateInternalPrims(); + } + // Set the camera path before the first sync so that // HdPrmanCamera::Sync can detect whether it is syncing the // current camera and needs to set the riley shutter interval @@ -2071,6 +1903,19 @@ HdPrman_RenderParam::Begin(HdPrmanRenderDelegate *renderDelegate) GetCameraContext().SetCameraPath(cameraPath); } +void +HdPrman_RenderParam::_CreateInternalPrims() +{ + // See comment in SetRileyOptions on when this function needs to be called. + GetCameraContext().Begin(AcquireRiley()); + + _CreateFallbackMaterials(); + + _CreateIntegrator(_renderDelegate); + _CreateQuickIntegrator(_renderDelegate); + _activeIntegratorId = GetIntegratorId(); +} + void HdPrman_RenderParam::SetActiveIntegratorId( const riley::IntegratorId id) @@ -2949,12 +2794,14 @@ HdPrman_RenderParam::_CreateQuickIntegrator( static const HdPrmanCamera * const camera = nullptr; if (_enableQuickIntegrate) { - riley::ShadingNode integratorNode( + riley::ShadingNode integratorNode( _ComputeQuickIntegratorNode(renderDelegate, camera)); - _quickIntegratorId = _riley->CreateIntegrator( - riley::UserId( - stats::AddDataLocation(integratorNode.name.CStr()).GetValue()), - integratorNode); + _quickIntegratorId = _riley->CreateIntegrator( + riley::UserId( + stats::AddDataLocation(integratorNode.name.CStr()).GetValue()), + integratorNode); + + TF_VERIFY(_quickIntegratorId != riley::IntegratorId::InvalidId()); } } @@ -2963,6 +2810,10 @@ HdPrman_RenderParam::UpdateQuickIntegrator( const HdRenderIndex * const renderIndex) { if (_enableQuickIntegrate) { + if (!TF_VERIFY(_quickIntegratorId != riley::IntegratorId::InvalidId())) { + return; + } + const riley::ShadingNode node = _ComputeQuickIntegratorNode( renderIndex->GetRenderDelegate(), diff --git a/third_party/renderman-25/plugin/hdPrman/renderParam.h b/third_party/renderman-25/plugin/hdPrman/renderParam.h index 8b6e477d1e..14cec66f36 100644 --- a/third_party/renderman-25/plugin/hdPrman/renderParam.h +++ b/third_party/renderman-25/plugin/hdPrman/renderParam.h @@ -206,8 +206,10 @@ class HdPrman_RenderParam : public HdRenderParam void DecreaseSceneLightCount() { --_sceneLightCount; } // Provides external access to resources used to set parameters for - // options and the active integrator. - RtParamList &GetOptions() { return _options; } + // scene options and the active integrator from the render settings map + // (the latter is used by the ParamsSetter prim). + RtParamList &GetOptions() { return _legacyOptions; } + HdPrman_CameraContext &GetCameraContext() { return _cameraContext; } HdPrman_RenderViewContext &GetRenderViewContext() { @@ -333,9 +335,12 @@ class HdPrman_RenderParam : public HdRenderParam void _CreateRiley(const std::string &rileyVariant, const std::string &xpuVariant, const std::vector& extraArgs); + + // Creation of riley prims that are not backed by the scene. + void _CreateInternalPrims(); void _CreateFallbackMaterials(); - void _CreateFallbackLight(); void _CreateIntegrator(HdRenderDelegate * renderDelegate); + void _CreateQuickIntegrator(HdRenderDelegate * renderDelegate); void _DestroyRiley(); void _DestroyStatsSession(); @@ -373,8 +378,6 @@ class HdPrman_RenderParam : public HdRenderParam HdRenderDelegate * renderDelegate, const HdPrmanCamera * cam); - void _CreateQuickIntegrator(HdRenderDelegate * renderDelegate); - void _RenderThreadCallback(); void _CreateRileyDisplay( @@ -428,31 +431,41 @@ class HdPrman_RenderParam : public HdRenderParam _HdToRileyCoordSysMap _hdToRileyCoordSysMap; std::mutex _coordSysMutex; - RtParamList _options; HdPrman_CameraContext _cameraContext; HdPrman_RenderViewContext _renderViewContext; - // Integrator + /// ------------------------------------------------------------------------ + // Render settings prim driven state + // + + // Render terminals SdfPath _renderSettingsIntegratorPath; HdMaterialNode2 _renderSettingsIntegratorNode; riley::IntegratorId _integratorId; - RtParamList _integratorParams; // XXX: this is mainly here for ParamsSetter - // SampleFilter SdfPathVector _connectedSampleFilterPaths; std::map _sampleFilterNodes; riley::SampleFilterId _sampleFiltersId; - // DisplayFilter SdfPathVector _connectedDisplayFilterPaths; std::map _displayFilterNodes; riley::DisplayFilterId _displayFiltersId; + /// ------------------------------------------------------------------------ + + /// ------------------------------------------------------------------------ + // Legacy render settings driven state + // + // Params from the render settings map. + RtParamList _legacyOptions; + int _lastLegacySettingsVersion; + + RtParamList _integratorParams; // XXX: this is mainly here for ParamsSetter + /// ------------------------------------------------------------------------ // RIX or XPU bool _xpu; std::vector _xpuGpuConfig; - int _lastLegacySettingsVersion; std::vector _outputNames; @@ -490,18 +503,6 @@ HdPrman_ResolveMaterial(HdSceneDelegate *sceneDelegate, riley::MaterialId *materialId, riley::DisplacementId *dispId); -/// Update the supplied list of options using searchpaths -/// pulled from envrionment variables: -/// -/// - RMAN_SHADERPATH -/// - RMAN_TEXTUREPATH -/// - RMAN_RIXPLUGINPATH -/// - RMAN_PROCEDURALPATH -/// -HDPRMAN_API -void -HdPrman_UpdateSearchPathsFromEnvironment(RtParamList& options); - PXR_NAMESPACE_CLOSE_SCOPE #endif // EXT_RMANPKG_25_0_PLUGIN_RENDERMAN_PLUGIN_HD_PRMAN_RENDER_PARAM_H diff --git a/third_party/renderman-25/plugin/hdPrman/utils.cpp b/third_party/renderman-25/plugin/hdPrman/utils.cpp index 04e90cd43b..a87e46fdfb 100644 --- a/third_party/renderman-25/plugin/hdPrman/utils.cpp +++ b/third_party/renderman-25/plugin/hdPrman/utils.cpp @@ -25,6 +25,7 @@ #include "hdPrman/utils.h" #include "hdPrman/debugCodes.h" +#include "pxr/base/arch/env.h" #include "pxr/base/arch/library.h" #include "pxr/base/gf/matrix4f.h" #include "pxr/base/gf/vec2f.h" @@ -33,13 +34,20 @@ #include "pxr/base/gf/vec3d.h" #include "pxr/base/gf/vec4f.h" #include "pxr/base/gf/vec4d.h" +#include "pxr/base/plug/registry.h" +#include "pxr/base/plug/plugin.h" +#include "pxr/base/tf/envSetting.h" +#include "pxr/base/tf/getenv.h" +#include "pxr/base/tf/pathUtils.h" // Extract extension from tf token +#include "pxr/base/tf/stringUtils.h" #include "pxr/base/tf/token.h" -#include "pxr/base/tf/staticTokens.h" #include "pxr/base/vt/array.h" #include "pxr/base/vt/visitValue.h" #include "pxr/base/vt/value.h" +#include "pxr/base/work/threadLimits.h" #include "pxr/usd/ar/resolver.h" +#include "pxr/usd/ndr/declare.h" #include "pxr/usd/sdf/assetPath.h" #include "pxr/imaging/hd/tokens.h" @@ -54,6 +62,11 @@ TF_DEFINE_PRIVATE_TOKENS( (primvar) ); +extern TfEnvSetting HD_PRMAN_DISABLE_HIDER_JITTER; +extern TfEnvSetting HD_PRMAN_ENABLE_MOTIONBLUR; +extern TfEnvSetting HD_PRMAN_NTHREADS; +extern TfEnvSetting HD_PRMAN_OSL_VERBOSE; + namespace { // _VtValueToRtParamList is a helper used with VtVisitValue to handle @@ -463,6 +476,111 @@ _IsNativeRenderManFormat(std::string const &path) return (ext == "tex") || (ext == "bkm") || (ext == "ptc") || (ext == "ies"); } +/// Update the supplied list of options using searchpaths +/// pulled from envrionment variables: +/// +/// - RMAN_SHADERPATH +/// - RMAN_TEXTUREPATH +/// - RMAN_RIXPLUGINPATH +/// - RMAN_PROCEDURALPATH +/// +void +_UpdateSearchPathsFromEnvironment(RtParamList& options) +{ + // searchpath:shader contains OSL (.oso) + std::string shaderpath = TfGetenv("RMAN_SHADERPATH"); + if (!shaderpath.empty()) { + // RenderMan expects ':' as path separator, regardless of platform + NdrStringVec paths = TfStringSplit(shaderpath, ARCH_PATH_LIST_SEP); + shaderpath = TfStringJoin(paths, ":"); + options.SetString( RixStr.k_searchpath_shader, + RtUString(shaderpath.c_str()) ); + } else { + NdrStringVec paths; + // Default RenderMan installation under '$RMANTREE/lib/shaders' + std::string rmantree = TfGetenv("RMANTREE"); + if (!rmantree.empty()) { + paths.push_back(TfStringCatPaths(rmantree, "lib/shaders")); + } + // Default hdPrman installation under 'plugins/usd/resources/shaders' + PlugPluginPtr plugin = + PlugRegistry::GetInstance().GetPluginWithName("hdPrmanLoader"); + if (plugin) + { + std::string path = TfGetPathName(plugin->GetPath()); + if (!path.empty()) { + paths.push_back(TfStringCatPaths(path, "resources/shaders")); + } + } + shaderpath = TfStringJoin(paths, ":"); + options.SetString( RixStr.k_searchpath_shader, + RtUString(shaderpath.c_str()) ); + } + + // searchpath:rixplugin contains C++ (.so) plugins + std::string rixpluginpath = TfGetenv("RMAN_RIXPLUGINPATH"); + if (!rixpluginpath.empty()) { + // RenderMan expects ':' as path separator, regardless of platform + NdrStringVec paths = TfStringSplit(rixpluginpath, ARCH_PATH_LIST_SEP); + rixpluginpath = TfStringJoin(paths, ":"); + options.SetString( RixStr.k_searchpath_rixplugin, + RtUString(rixpluginpath.c_str()) ); + } else { + NdrStringVec paths; + // Default RenderMan installation under '$RMANTREE/lib/plugins' + std::string rmantree = TfGetenv("RMANTREE"); + if (!rmantree.empty()) { + paths.push_back(TfStringCatPaths(rmantree, "lib/plugins")); + } + rixpluginpath = TfStringJoin(paths, ":"); + options.SetString( RixStr.k_searchpath_rixplugin, + RtUString(rixpluginpath.c_str()) ); + } + + // searchpath:texture contains textures (.tex) and Rtx plugins (.so) + std::string texturepath = TfGetenv("RMAN_TEXTUREPATH"); + if (!texturepath.empty()) { + // RenderMan expects ':' as path separator, regardless of platform + NdrStringVec paths = TfStringSplit(texturepath, ARCH_PATH_LIST_SEP); + texturepath = TfStringJoin(paths, ":"); + options.SetString( RixStr.k_searchpath_texture, + RtUString(texturepath.c_str()) ); + } else { + NdrStringVec paths; + // Default RenderMan installation under '$RMANTREE/lib/textures' + // and '$RMANTREE/lib/plugins' + std::string rmantree = TfGetenv("RMANTREE"); + if (!rmantree.empty()) { + paths.push_back(TfStringCatPaths(rmantree, "lib/textures")); + paths.push_back(TfStringCatPaths(rmantree, "lib/plugins")); + } + // Default hdPrman installation under 'plugins/usd' + // We need the path to RtxHioImage and we assume that it lives in the + // same directory as hdPrmanLoader + PlugPluginPtr plugin = + PlugRegistry::GetInstance().GetPluginWithName("hdPrmanLoader"); + if (plugin) + { + std::string path = TfGetPathName(plugin->GetPath()); + if (!path.empty()) { + paths.push_back(path); + } + } + texturepath = TfStringJoin(paths, ":"); + options.SetString( RixStr.k_searchpath_texture, + RtUString(texturepath.c_str()) ); + } + + std::string proceduralpath = TfGetenv("RMAN_PROCEDURALPATH"); + if (!proceduralpath.empty()) { + // RenderMan expects ':' as path separator, regardless of platform + NdrStringVec paths = TfStringSplit(proceduralpath, ARCH_PATH_LIST_SEP); + proceduralpath = TfStringJoin(paths, ":"); + options.SetString( RixStr.k_searchpath_procedural, + RtUString(proceduralpath.c_str()) ); + } +} + } // ----------------------------------------------------------------------------- @@ -555,6 +673,86 @@ PruneDeprecatedOptions( return prunedOptions; } +RtParamList +GetDefaultRileyOptions() +{ + RtParamList options; + + // Set default thread limit for Renderman. Leave a few threads for app. + { + const unsigned appThreads = 4; + const unsigned nThreads = + std::max(WorkGetConcurrencyLimit()-appThreads, 1u); + options.SetInteger(RixStr.k_limits_threads, nThreads); + } + + // Path tracer default configuration. Values below may be overriden by + // those in the legacy render settings map and/or prim. + options.SetInteger(RixStr.k_hider_minsamples, 1); + options.SetInteger(RixStr.k_hider_maxsamples, 16); + options.SetInteger(RixStr.k_hider_incremental, 1); + options.SetInteger(RixStr.k_trace_maxdepth, 10); + options.SetFloat(RixStr.k_Ri_FormatPixelAspectRatio, 1.0f); + options.SetFloat(RixStr.k_Ri_PixelVariance, 0.001f); + options.SetString(RixStr.k_bucket_order, RtUString("circle")); + + // Default shutter settings from studio katana defaults: + // - /root.renderSettings.shutter{Open,Close} + float shutterInterval[2] = { 0.0f, 0.5f }; + options.SetFloatArray(RixStr.k_Ri_Shutter, shutterInterval, 2); + + return options; +} + +RtParamList +GetRileyOptionsFromEnvironment() +{ + RtParamList options; + + const unsigned nThreadsEnv = TfGetEnvSetting(HD_PRMAN_NTHREADS); + if (nThreadsEnv > 0) { + options.SetInteger(RixStr.k_limits_threads, nThreadsEnv); + } + + if (!TfGetEnvSetting(HD_PRMAN_ENABLE_MOTIONBLUR)) { + float shutterInterval[2] = { 0.0f, 0.0f }; + options.SetFloatArray(RixStr.k_Ri_Shutter, shutterInterval, 2); + } + + // OSL verbose + const int oslVerbose = TfGetEnvSetting(HD_PRMAN_OSL_VERBOSE); + if (oslVerbose > 0) { + options.SetInteger(RtUString("user:osl:verbose"), oslVerbose); + } + + const bool disableJitter = TfGetEnvSetting(HD_PRMAN_DISABLE_HIDER_JITTER); + options.SetInteger(RixStr.k_hider_jitter, !disableJitter); + + // XXX Missing HD_PRMAN_MAX_SAMPLES. + + // Searchpaths (TEXTUREPATH, etc) + _UpdateSearchPathsFromEnvironment(options); + + return options; +} + +RtParamList +Compose( + RtParamList const &a, + RtParamList const &b) +{ + if (b.GetNumParams() == 0) { + return a; + } + if (a.GetNumParams() == 0) { + return b; + } + + RtParamList result = b; + result.Update(a); + return result; +} + } PXR_NAMESPACE_CLOSE_SCOPE \ No newline at end of file diff --git a/third_party/renderman-25/plugin/hdPrman/utils.h b/third_party/renderman-25/plugin/hdPrman/utils.h index 4e7b304643..f6ca4432a7 100644 --- a/third_party/renderman-25/plugin/hdPrman/utils.h +++ b/third_party/renderman-25/plugin/hdPrman/utils.h @@ -79,7 +79,6 @@ RtMatrixToGfMatrix(const RtMatrix4x4 &m) m.m[3][0], m.m[3][1], m.m[3][2], m.m[3][3]); } - /// Attempt to extract a useful texture identifier from the given \p asset. /// If \p asset is determined to not be a .tex file, attempt to use the Hio /// based Rtx plugin to load the texture. If \p asset is non-empty, we will @@ -97,6 +96,21 @@ RtParamList PruneDeprecatedOptions( const RtParamList &options); +/// Returns a small set of options for default path tracer configuration. +RtParamList +GetDefaultRileyOptions(); + +/// Returns the options driven by environment variables. +RtParamList +GetRileyOptionsFromEnvironment(); + +/// Return a param list with params in \p a composed over \p b. This means that +/// for params in both lists, \p a's opinion would trump \p b. +RtParamList +Compose( + RtParamList const &a, + RtParamList const &b); + } PXR_NAMESPACE_CLOSE_SCOPE From 07a5345782b029c4c9ce8d82460fe517ed75e660 Mon Sep 17 00:00:00 2001 From: gitamohr Date: Tue, 25 Jul 2023 16:09:25 -0700 Subject: [PATCH 113/352] sdf: SdfPathExpression & PredicateLibrary work: hash, equality, stream insertion. Also add proper text serialization and remove debug string support. Also special-case expressions that match nothing and everything, and optimize for them when assembling operations with these operands. This will let us cleanly fold out subexpression that cannot map across references, for example. Also add support for trailing arbitrary args in predicate library functions, and add a way to register a "binder" that has the opportunity to parse arguments and build a function with cached/precomputed acceleration structures to speed matching and searching. Add incremental search support to SdfPathExpressionEval, and improve constancy propagation for Match() calls. More tests coming soon. (Internal change: 2286295) --- pxr/usd/sdf/pathExpression.cpp | 287 +++++++++---- pxr/usd/sdf/pathExpression.h | 164 +++++++- pxr/usd/sdf/pathExpressionEval.cpp | 382 +++++++++++++----- pxr/usd/sdf/pathExpressionEval.h | 295 ++++++++++---- pxr/usd/sdf/predicateLibrary.cpp | 11 + pxr/usd/sdf/predicateLibrary.h | 255 ++++++++++-- pxr/usd/sdf/predicateProgram.h | 33 +- pxr/usd/sdf/testenv/testSdfPathExpression.cpp | 212 +++++++--- .../testenv/testSdfPredicateExpression.cpp | 101 ++++- pxr/usd/sdf/wrapPathExpression.cpp | 87 +++- 10 files changed, 1445 insertions(+), 382 deletions(-) diff --git a/pxr/usd/sdf/pathExpression.cpp b/pxr/usd/sdf/pathExpression.cpp index d4cda62464..dbcbd56f30 100644 --- a/pxr/usd/sdf/pathExpression.cpp +++ b/pxr/usd/sdf/pathExpression.cpp @@ -27,6 +27,8 @@ #include "pxr/usd/sdf/pathExpression.h" #include "pxr/base/tf/diagnostic.h" +#include "pxr/base/tf/type.h" +#include "pxr/base/vt/array.h" #include "pxr/base/vt/value.h" #include "predicateExpressionParser.h" @@ -47,6 +49,20 @@ TF_REGISTRY_FUNCTION(TfEnum) TF_ADD_ENUM_NAME(SdfPathExpression::Pattern); } +TF_REGISTRY_FUNCTION(TfType) +{ + TfType::Define(); + TfType::Define>(); +} + +SdfPathExpression::ExpressionReference const & +SdfPathExpression::ExpressionReference::Weaker() +{ + static ExpressionReference *theWeaker = + new ExpressionReference { SdfPath(), "_" }; + return *theWeaker; +} + static bool ParsePathExpression(std::string const &inputStr, std::string const &parseContext, @@ -57,22 +73,65 @@ SdfPathExpression::SdfPathExpression(std::string const &inputStr, std::string const &parseContext) { std::string errMsg; - if (!ParsePathExpression(inputStr, parseContext, this, &errMsg)) { + if (!inputStr.empty() && + !ParsePathExpression(inputStr, parseContext, this, &errMsg)) { _parseError = errMsg; *this = {}; TF_RUNTIME_ERROR(errMsg); } } +SdfPathExpression const & +SdfPathExpression::Everything() +{ + static SdfPathExpression const *theEverything = new SdfPathExpression("//"); + return *theEverything; +} + +SdfPathExpression const & +SdfPathExpression::EveryDescendant() +{ + static SdfPathExpression const * + theEveryDescendant = new SdfPathExpression(".//"); + return *theEveryDescendant; +} + +SdfPathExpression const & +SdfPathExpression::Nothing() +{ + static SdfPathExpression const *theNothing = new SdfPathExpression {}; + return *theNothing; +} + +SdfPathExpression const & +SdfPathExpression::WeakerRef() +{ + static SdfPathExpression const *theWeaker = new SdfPathExpression { + SdfPathExpression::MakeAtom(ExpressionReference::Weaker()) + }; + return *theWeaker; +} + SdfPathExpression SdfPathExpression::MakeComplement(SdfPathExpression &&right) { - // Move over the state, then push back 'Complement'. SdfPathExpression ret; - ret._ops = std::move(right._ops); - ret._refs = std::move(right._refs); - ret._patterns = std::move(right._patterns); - ret._ops.push_back(Complement); + + // If right is either Everything or Nothing, its complement is just the + // other. + if (right == Everything()) { + ret = Nothing(); + } + else if (right == Nothing()) { + ret = Everything(); + } + else { + // Move over the state, then push back 'Complement'. + ret._ops = std::move(right._ops); + ret._refs = std::move(right._refs); + ret._patterns = std::move(right._patterns); + ret._ops.push_back(Complement); + } return ret; } @@ -81,23 +140,48 @@ SdfPathExpression::MakeOp( Op op, SdfPathExpression &&left, SdfPathExpression &&right) { SdfPathExpression ret; - // Move the right ops, ensure we have enough space, then insert left. - // Finally push back this new op. - ret._ops = std::move(right._ops); - ret._ops.reserve(ret._ops.size() + left._ops.size() + 1); - ret._ops.insert( - ret._ops.end(), left._ops.begin(), left._ops.end()); - ret._ops.push_back(op); - - // Move the left patterns & refs, then move-insert the same of the right. - ret._refs = std::move(left._refs); - ret._refs.insert(ret._refs.end(), - make_move_iterator(right._refs.begin()), - make_move_iterator(right._refs.end())); - ret._patterns = std::move(left._patterns); - ret._patterns.insert(ret._patterns.end(), - make_move_iterator(right._patterns.begin()), - make_move_iterator(right._patterns.end())); + + // If we have a Nothing or an Everything operand, then transform A - B into + // A & ~B. This makes all cases commutative, simplifying the code. + if (op == Difference && (left == Nothing() || right == Nothing() || + left == Everything() || right == Everything())) { + op = Intersection; + right = MakeComplement(std::move(right)); + } + + // Handle nothing and everything. + if (left == Nothing()) { + ret = (op == Intersection) ? Nothing() : std::move(right); + } + else if (right == Nothing()) { + ret = (op == Intersection) ? Nothing() : std::move(left); + } + else if (left == Everything()) { + ret = (op == Intersection) ? std::move(right) : Everything(); + } + else if (right == Everything()) { + ret = (op == Intersection) ? std::move(left) : Everything(); + } + else { + // Move the right ops, ensure we have enough space, then insert left. + // Finally push back this new op. + ret._ops = std::move(right._ops); + ret._ops.reserve(ret._ops.size() + left._ops.size() + 1); + ret._ops.insert( + ret._ops.end(), left._ops.begin(), left._ops.end()); + ret._ops.push_back(op); + + // Move the left patterns & refs, then move-insert the same of the + // right. + ret._refs = std::move(left._refs); + ret._refs.insert(ret._refs.end(), + make_move_iterator(right._refs.begin()), + make_move_iterator(right._refs.end())); + ret._patterns = std::move(left._patterns); + ret._patterns.insert(ret._patterns.end(), + make_move_iterator(right._patterns.begin()), + make_move_iterator(right._patterns.end())); + } return ret; } @@ -122,8 +206,8 @@ SdfPathExpression::MakeAtom(PathPattern &&pattern) } void -SdfPathExpression::Walk( - TfFunctionRef logic, +SdfPathExpression::WalkWithOpStack( + TfFunctionRef> const &)> logic, TfFunctionRef ref, TfFunctionRef pattern) const { @@ -149,23 +233,24 @@ SdfPathExpression::Walk( // // index -----> 0 1 2 // operation -> Union(, ) - std::vector> stack {1, {curOp, 0}}; + std::vector> stack {1, {*curOp, 0}}; while (!stack.empty()) { - OpIter const &stackOp = stack.back().first; + Op stackOp = stack.back().first; int &operandIndex = stack.back().second; int operandIndexEnd = 0; // Invoke 'ref' for ExpressionRef operations, 'pattern' for PathPattern // operation, otherwise 'logic'. - if (*stackOp == ExpressionRef) { + if (stackOp == ExpressionRef) { ref(*curRef++); - } else if (*stackOp == Pattern) { + } else if (stackOp == Pattern) { pattern(*curPattern++); } else { - logic(*stackOp, operandIndex++); + logic(stack); + operandIndex++; operandIndexEnd = - *stackOp == Complement ? 2 : 3; // Complement is a unary op. + (stackOp == Complement) ? 2 : 3; // Complement is a unary op. } // If we've reached the end of an operation, pop it from the stack, @@ -174,11 +259,23 @@ SdfPathExpression::Walk( stack.pop_back(); } else { - stack.emplace_back(++curOp, 0); + stack.emplace_back(*(++curOp), 0); } } } +void +SdfPathExpression::Walk( + TfFunctionRef logic, + TfFunctionRef ref, + TfFunctionRef pattern) const +{ + auto adaptLogic = [&logic](std::vector> const &stack) { + return logic(stack.back().first, stack.back().second); + }; + return WalkWithOpStack(adaptLogic, ref, pattern); +} + SdfPathExpression SdfPathExpression::ReplacePrefix(SdfPath const &oldPrefix, SdfPath const &newPrefix) && @@ -197,6 +294,11 @@ SdfPathExpression::ReplacePrefix(SdfPath const &oldPrefix, bool SdfPathExpression::IsAbsolute() const { + for (auto &ref: _refs) { + if (!ref.path.IsEmpty() && !ref.path.IsAbsolutePath()) { + return false; + } + } for (auto const &pat: _patterns) { if (!pat.GetPrefix().IsAbsolutePath()) { return false; @@ -243,13 +345,7 @@ SdfPathExpression::ResolveReferences( }; auto resolveRef = [&stack, &resolve](ExpressionReference const &ref) { - // Try to resolve \p ref. If the result is the empty expression, just - // preserve \p ref in the resulting expression. - SdfPathExpression resolved = resolve(ref); - if (!resolved) { - resolved = MakeAtom(ref); - } - stack.push_back(std::move(resolved)); + stack.push_back(resolve(ref)); }; auto patternIdent = [&stack](PathPattern const &pattern) { @@ -267,72 +363,79 @@ SdfPathExpression::ResolveReferences( SdfPathExpression SdfPathExpression::ComposeOver(SdfPathExpression const &weaker) && { + if (IsEmpty()) { + *this = weaker; + return std::move(*this); + } auto resolve = [&weaker](ExpressionReference const &ref) { - return ref.name == "_" ? weaker : SdfPathExpression(); + return ref.name == "_" ? weaker : SdfPathExpression::MakeAtom(ref); }; return std::move(*this).ResolveReferences(resolve); } std::string -SdfPathExpression::GetDebugString() const +SdfPathExpression::GetText() const { std::string result; if (IsEmpty()) { - result = ""; - if (!_parseError.empty()) { - result += " (err='" + _parseError + "')"; - } return result; } auto opName = [](Op k) { switch (k) { case Complement: return "~"; - case ImpliedUnion: return "[+]"; - case Union: return "+"; - case Intersection: return "&"; - case Difference: return "-"; - case ExpressionRef: return "expression-ref"; - case Pattern: return "path-pattern"; + case ImpliedUnion: return " "; + case Union: return " + "; + case Intersection: return " & "; + case Difference: return " - "; + default: break; }; return ""; }; - result = TfStringPrintf("PathExpr @ %p: << ", this); + std::vector opStack; - auto printLogic = [&opName, &result](Op op, int argIndex) { - if (op == Complement) { - switch (argIndex) { - case 0: result += "~("; break; - case 1: result += ")"; break; - }; + auto printLogic = [&opName, &opStack, &result]( + std::vector> const &stack) { + + const Op op = stack.back().first; + const int argIndex = stack.back().second; + + // Parenthesize this subexpression if we have a parent op, and either: + // - the parent op has a stronger precedence than this op + // - the parent op has the same precedence as this op, and this op is + // the right-hand-side of the parent op. + bool parenthesize = false; + if (stack.size() >= 2 /* has a parent op */) { + Op parentOp; + int parentIndex; + std::tie(parentOp, parentIndex) = stack[stack.size()-2]; + parenthesize = + parentOp < op || (parentOp == op && parentIndex == 2); } - else { - switch (argIndex) { - case 0: result += "("; break; - case 1: result += TfStringPrintf(" %s ", opName(op)); break; - case 2: result += ")"; break; - }; + + if (parenthesize && argIndex == 0) { + result += '('; + } + if (op == Complement ? argIndex == 0 : argIndex == 1) { + result += opName(op); } + if (parenthesize && + (op == Complement ? argIndex == 1 : argIndex == 2)) { + result += ')'; + } }; - auto printExpressionRef = [&result](ExpressionReference const &ref) { + auto printExprRef = [&result](ExpressionReference const &ref) { result += "%" + ref.path.GetAsString(); - if (ref.name == "_") { - result += "_"; - } - else { - result += ":" + ref.name; - } + result += (ref.name == "_") ? "_" : ":" + ref.name; }; - + auto printPathPattern = [&result](PathPattern const &pattern) { - result += "<" + pattern.GetDebugString() + ">"; + result += pattern.GetText(); }; - Walk(printLogic, printExpressionRef, printPathPattern); - - result += " >>"; + WalkWithOpStack(printLogic, printExprRef, printPathPattern); return result; } @@ -377,8 +480,8 @@ SdfPathExpression::PathPattern::AppendChild(std::string const &text, SdfPredicateExpression &&predExpr) { if (_isProperty) { - TF_WARN("Cannot append child '%s' to property path '%s'", - text.c_str(), GetDebugString().c_str()); + TF_WARN("Cannot append child '%s' to property path expression '%s'", + text.c_str(), GetText().c_str()); return; } @@ -455,14 +558,26 @@ SdfPathExpression::PathPattern::SetPrefix(SdfPath &&p) } std::string -SdfPathExpression::PathPattern::GetDebugString() const +SdfPathExpression::PathPattern::GetText() const { - std::string result = _prefix.GetAsString(); + std::string result; + + if (_prefix == SdfPath::ReflexiveRelativePath()) { + if (_components.empty() || _components.front().IsStretch()) { + // If components is empty, or first component is a stretch, then we + // emit a leading '.', otherwise nothing. + result = "."; + } + } + else { + result = _prefix.GetAsString(); + } + const bool prefixIsAbsRoot = _prefix == SdfPath::AbsoluteRootPath(); for (size_t i = 0, end = _components.size(); i != end; ++i) { - if (_components[i].text.empty()) { + if (_components[i].text.empty() && + _components[i].predicateIndex == -1) { result += (i == 0 && prefixIsAbsRoot) ? "/" : "//"; - TF_DEV_AXIOM(_components[i].predicateIndex == -1); continue; } if (!result.empty() && result.back() != '/') { @@ -481,6 +596,12 @@ SdfPathExpression::PathPattern::GetDebugString() const return result; } +std::ostream & +operator<<(std::ostream &out, SdfPathExpression const &expr) +{ + return out << expr.GetText(); +} + //////////////////////////////////////////////////////////////////////// // Parsing code. @@ -644,7 +765,7 @@ struct PathPattern : if_must, seq, success>>, PathPatternElems, - ReflexiveRelative + seq>> > {}; diff --git a/pxr/usd/sdf/pathExpression.h b/pxr/usd/sdf/pathExpression.h index d003c1e194..c3a26c397d 100644 --- a/pxr/usd/sdf/pathExpression.h +++ b/pxr/usd/sdf/pathExpression.h @@ -28,8 +28,12 @@ #include "pxr/usd/sdf/api.h" #include "pxr/usd/sdf/path.h" #include "pxr/usd/sdf/predicateExpression.h" +#include "pxr/base/tf/hash.h" +#include #include +#include +#include #include PXR_NAMESPACE_OPEN_SCOPE @@ -90,9 +94,30 @@ class SdfPathExpression bool IsStretch() const { return predicateIndex == -1 && text.empty(); } + std::string text; int predicateIndex = -1; bool isLiteral = false; + + friend bool operator==(Component const &l, Component const &r) { + return std::tie(l.text, l.predicateIndex, l.isLiteral) == + std::tie(r.text, r.predicateIndex, r.isLiteral); + } + + friend bool operator!=(Component const &l, Component const &r) { + return !(l == r); + } + + template + friend void TfHashAppend(HashState &h, Component const &c) { + h.Append(c.text, c.predicateIndex, c.isLiteral); + } + + friend void swap(Component &l, Component &r) { + auto lt = std::tie(l.text, l.predicateIndex, l.isLiteral); + auto rt = std::tie(r.text, r.predicateIndex, r.isLiteral); + swap(lt, rt); + } }; /// Append a prim child component to this pattern, with optional @@ -152,9 +177,9 @@ class SdfPathExpression SetPrefix(SdfPath(p)); } - /// Return a debugging-oriented string representation of this pattern. + /// Return the string representation of this pattern. SDF_API - std::string GetDebugString() const; + std::string GetText() const; std::vector const &GetComponents() const & { return _components; @@ -184,6 +209,33 @@ class SdfPathExpression } private: + template + friend void TfHashAppend(HashState &h, PathPattern const &pat) { + h.Append(pat._prefix, pat._components, + pat._predExprs, pat._isProperty); + } + + friend bool + operator==(PathPattern const &l, PathPattern const &r) { + return std::tie(l._prefix, l._components, + l._predExprs, l._isProperty) == + std::tie(r._prefix, r._components, + r._predExprs, r._isProperty); + } + + friend bool + operator!=(PathPattern const &l, PathPattern const &r) { + return !(l == r); + } + + friend void swap(PathPattern &l, PathPattern &r) { + auto lt = std::tie( + l._prefix, l._components, l._predExprs, l._isProperty); + auto rt = std::tie( + r._prefix, r._components, r._predExprs, r._isProperty); + swap(lt, rt); + } + SdfPath _prefix; std::vector _components; std::vector _predExprs; @@ -197,13 +249,40 @@ class SdfPathExpression /// ComposeOver(). class ExpressionReference { public: + /// Return the special "weaker" reference, whose syntax in an + /// SdfPathExpression is "%_". An ExpressionReference represents this + /// as the empty \p path, and the name "_". + SDF_API + static ExpressionReference const &Weaker(); + // Optional path reference, can be empty for "weaker" references (name - // is "_") or for references to local collections. + // is "_") or for references to local or otherwise "named" collections. SdfPath path; // Name is either a property name, or "_" (meaning the weaker // collection). If the name is "_", the path must be empty. std::string name; + + template + friend void TfHashAppend(HashState &h, ExpressionReference const &er) { + h.Append(er.path, er.name); + } + + friend bool + operator==(ExpressionReference const &l, ExpressionReference const &r) { + return std::tie(l.path, l.name) == std::tie(r.path, r.name); + } + + friend bool + operator!=(ExpressionReference const &l, ExpressionReference const &r) { + return !(l == r); + } + + friend void swap(ExpressionReference &l, ExpressionReference &r) { + auto lt = std::tie(l.path, l.name); + auto rt = std::tie(r.path, r.name); + swap(lt, rt); + } }; /// Enumerant describing a subexpression operation. @@ -221,7 +300,7 @@ class SdfPathExpression }; /// Default construction produces the "empty" expression. Conversion to - /// bool returns 'false'. + /// bool returns 'false'. The empty expression matches nothing. SdfPathExpression() = default; /// Construct an expression by parsing \p expr. If provided, \p @@ -232,6 +311,26 @@ class SdfPathExpression explicit SdfPathExpression(std::string const &expr, std::string const &parseContext = {}); + /// Return the expression "//" which matches all paths. + SDF_API + static SdfPathExpression const &Everything(); + + /// Return the relative expression ".//" which matches all paths descendant + /// to an anchor path. + SDF_API + static SdfPathExpression const &EveryDescendant(); + + /// Return the empty expression which matches no paths. This is the same as + /// a default-constructed SdfPathExpression. + SDF_API + static SdfPathExpression const &Nothing(); + + /// Return the expression "%_", consisting solely of a reference to the + /// "weaker" path expression, to be resolved by ComposeOver() or + /// ResolveReferences() + SDF_API + static SdfPathExpression const &WeakerRef(); + /// Produce a new expression representing the set-complement of \p right. SDF_API static SdfPathExpression @@ -318,6 +417,17 @@ class SdfPathExpression TfFunctionRef ref, TfFunctionRef pattern) const; + /// Equivalent to Walk(), except that the \p logic function is called with a + /// const reference to the current Op stack instead of just the top of it. + /// The top of the Op stack is the vector's back. This is useful in case + /// the processing code needs to understand the context in which an Op + /// appears. + SDF_API + void WalkWithOpStack( + TfFunctionRef> const &)> logic, + TfFunctionRef ref, + TfFunctionRef pattern) const; + /// Return a new expression created by replacing literal path prefixes that /// start with \p oldPrefix with \p newPrefix. SdfPathExpression @@ -359,11 +469,10 @@ class SdfPathExpression } /// Return a new expression created by resolving collection references in - /// this expression. Call \p resolve to produce an subexpression from a - /// %-referenced collection. By convention, the empty SdfPath represents - /// the "weaker" %_ reference. If \p resolve returns the empty - /// SdfPathExpression, the reference is not resolved and persists in the - /// output. + /// this expression. This function calls \p resolve to produce a + /// subexpression from a "%" ExpressionReference. To leave an expression + /// reference unchanged, return an expression containing the passed argument + /// by calling MakeAtom(). SdfPathExpression ResolveReferences( TfFunctionRef resolve) &&; /// Return a new expression created by replacing references to the "weaker - /// expression" (i.e. %_) in this expression with \p weaker. This is a + /// expression" (i.e. "%_") in this expression with \p weaker. This is a /// restricted form of ResolveReferences() that only resolves "weaker" /// references, replacing them by \p weaker, leaving other references - /// unmodified. + /// unmodified. As a special case, if this expression IsEmpty(), return \p + /// weaker. SdfPathExpression ComposeOver(SdfPathExpression const &weaker) const & { return SdfPathExpression(*this).ComposeOver(weaker); @@ -407,9 +517,10 @@ class SdfPathExpression return !ContainsExpressionReferences() && IsAbsolute(); } - /// Return a debugging-oriented string representation of this expression. + /// Return a text representation of this expression that parses to the same + /// expression. SDF_API - std::string GetDebugString() const; + std::string GetText() const; /// Return true if this is the empty expression; i.e. default-constructed or /// constructed from a string with invalid syntax. @@ -429,6 +540,31 @@ class SdfPathExpression } private: + template + friend void TfHashAppend(HashState &h, SdfPathExpression const &expr) { + h.Append(expr._ops, expr._refs, expr._patterns, expr._parseError); + } + + SDF_API + friend std::ostream & + operator<<(std::ostream &, SdfPathExpression const &); + + friend bool + operator==(SdfPathExpression const &l, SdfPathExpression const &r) { + return std::tie(l._ops, l._refs, l._patterns, l._parseError) == + std::tie(r._ops, r._refs, r._patterns, r._parseError); + } + + friend bool + operator!=(SdfPathExpression const &l, SdfPathExpression const &r) { + return !(l == r); + } + + friend void swap(SdfPathExpression &l, SdfPathExpression &r) { + auto lt = std::tie(l._ops, l._refs, l._patterns, l._parseError); + auto rt = std::tie(r._ops, r._refs, r._patterns, r._parseError); + swap(lt, rt); + } std::vector _ops; std::vector _refs; @@ -436,7 +572,7 @@ class SdfPathExpression // This member holds a parsing error string if this expression was // constructed by the parser and errors were encountered during the parsing. - std::string _parseError; + std::string _parseError; }; diff --git a/pxr/usd/sdf/pathExpressionEval.cpp b/pxr/usd/sdf/pathExpressionEval.cpp index 4382862b51..a716f7c0ed 100644 --- a/pxr/usd/sdf/pathExpressionEval.cpp +++ b/pxr/usd/sdf/pathExpressionEval.cpp @@ -29,22 +29,30 @@ PXR_NAMESPACE_OPEN_SCOPE -bool -Sdf_PathExpressionEvalBase::_Match( - TfFunctionRef patternMatch) const +SdfPredicateFunctionResult +Sdf_PathExpressionEvalBase::_EvalExpr( + TfFunctionRef< + SdfPredicateFunctionResult (bool /*skip*/)> evalPattern) const { - bool result = false; + SdfPredicateFunctionResult result = + SdfPredicateFunctionResult::MakeConstant(false); int nest = 0; auto opIter = _ops.cbegin(), opEnd = _ops.cend(); + // The current implementation favors short-circuiting over constance + // propagation. It might be beneficial to avoid short-circuiting when + // constancy isn't known, in hopes of establishing constancy. See similar + // comments in predicateProgram.h, for SdfPredicateProgram::operator() for + // more detail. + // Helper for short-circuiting. Advance, ignoring everything until we // reach the next Close that brings us to the starting nest level. auto shortCircuit = [&]() { const int origNest = nest; for (; opIter != opEnd; ++opIter) { switch(*opIter) { - case PatternMatch: - patternMatch(/*skip=*/true); break; // Skip matches. + case EvalPattern: + evalPattern(/*skip=*/true); break; // Skip matches. case Not: case And: case Or: break; // Skip operations. case Open: ++nest; break; case Close: @@ -60,8 +68,8 @@ Sdf_PathExpressionEvalBase::_Match( // predicate functions. for (; opIter != opEnd; ++opIter) { switch (*opIter) { - case PatternMatch: - result = patternMatch(/*skip=*/false); + case EvalPattern: + result.SetAndPropagateConstancy(evalPattern(/*skip=*/false)); break; case Not: result = !result; @@ -85,25 +93,44 @@ Sdf_PathExpressionEvalBase::_Match( void Sdf_PathExpressionEvalBase:: -_PatternMatchBase::_Init( +_PatternImplBase::_Init( SdfPathExpression::PathPattern const &pattern, TfFunctionRef linkPredicate) { // Build a matcher. _prefix = pattern.GetPrefix(); _isProperty = pattern.IsProperty(); + _stretchBegin = false; + _stretchEnd = false; auto const &predicateExprs = pattern.GetPredicateExprs(); - _numMatchingComponents = pattern.GetComponents().size(); - for (SdfPathExpression::PathPattern::Component const &component: - pattern.GetComponents()) { + + // This will technically over-reserve by the number of 'stretch' (//) + // components, but it's worth it to not thrash the heap. + _components.reserve(pattern.GetComponents().size()); + for (auto iter = std::cbegin(pattern.GetComponents()), + end = std::cend(pattern.GetComponents()); iter != end; ++iter) { + SdfPathExpression::PathPattern::Component const &component = *iter; // A 'stretch' (//) component. if (component.IsStretch()) { - // Stretches are non-matching components. - --_numMatchingComponents; - _components.push_back({ Stretch, -1, -1 }); + if (_components.empty()) { + _stretchBegin = true; + } + // If this is the end of the components, just mark that. + if (std::next(iter) == end) { + _stretchEnd = true; + } + // Otherwise finish any existing segment & start a new segment. + else { + if (_segments.empty()) { + _segments.push_back({ 0, 0 }); + } + _segments.back().end = _components.size(); + _segments.push_back({ _components.size(), _components.size() }); + } + continue; } // A literal text name (or empty name which must have a predicate). - else if (component.isLiteral || component.text.empty()) { + if (component.isLiteral || component.text.empty()) { _explicitNames.push_back(component.text); _components.push_back({ ExplicitName, static_cast(_explicitNames.size()-1), -1 }); @@ -120,39 +147,59 @@ _PatternMatchBase::_Init( linkPredicate(predicateExprs[component.predicateIndex]); } } + // Close the final segment. + if (!_components.empty()) { + if (_segments.empty()) { + _segments.push_back({ 0, 0 }); + } + _segments.back().end = _components.size(); + } } -bool +SdfPredicateFunctionResult Sdf_PathExpressionEvalBase:: -_PatternMatchBase::_Match(SdfPath const &path, - TfFunctionRef< - bool (int, SdfPath const &)> runNthPredicate) const +_PatternImplBase::_Match( + SdfPath const &path, + TfFunctionRef + runNthPredicate) const { using ComponentIter = typename std::vector<_Component>::const_iterator; + using Result = SdfPredicateFunctionResult; // Only support prim and prim property paths. if (!path.IsAbsoluteRootOrPrimPath() && !path.IsPrimPropertyPath()) { TF_WARN("Unsupported path <%s>; can only match prim or " "prim-property paths", path.GetAsString().c_str()); - return false; + return Result::MakeConstant(false); } - // If this pattern has no components, it matches if it is the same as the - // prefix. - if (_components.empty()) { - return path == _prefix; - } - // Check prefix & property-ness. If this pattern demands a property path // then we can early-out if the path in question is not a property path. // Otherwise this path may or may not match properties. - if (!path.HasPrefix(_prefix) || - (_isProperty && !path.IsPrimPropertyPath())) { - return false; + if (!path.HasPrefix(_prefix)) { + return Result::MakeConstant(false); + } + if (_isProperty && !path.IsPrimPropertyPath()) { + return Result::MakeVarying(false); + } + + // If this pattern has no components, it matches if it is the same as the + // prefix, or if it has the prefix if there's a stretch following. + if (_components.empty()) { + // Accepts all descendant paths. + if (_stretchBegin || _stretchEnd) { + return Result::MakeConstant(true); + } + // Accepts only the prefix exactly. + if (path == _prefix) { + return Result::MakeVarying(true); + } + return Result::MakeConstant(false); } // Split the path into prefixes but skip any covered by _prefix. + // XXX:TODO Plumb-in caller-supplied vector for reuse by GetPrefixes(). SdfPathVector prefixes; path.GetPrefixes( &prefixes, path.GetPathElementCount() - _prefix.GetPathElementCount()); @@ -168,45 +215,13 @@ _PatternMatchBase::_Match(SdfPath const &path, // sum of the number of components in the subsequent segments. The final // segment [qux] must match at the end. - const auto componentEnd = _components.cend(); - - struct Segment { - bool IsEmpty() const { - return begin == end; - } - bool StartsAt(ComponentIter iter) const { - return begin == iter; - } - bool EndsAt(ComponentIter iter) const { - return end == iter; - } - size_t GetSize() const { - return std::distance(begin, end); - } - ComponentIter begin; - ComponentIter end; - }; - - // Advance \p seg to the next segment. If \p priming is true, the begin - // iterator is not adjusted -- this is used to set up the first segment. - auto nextSegment = [componentEnd](Segment &seg, bool priming=false) { - if (!priming) { - seg.begin = seg.end; - while (seg.begin != componentEnd && seg.begin->type == Stretch) { - ++seg.begin; - } - seg.end = seg.begin; - } - while (seg.end != componentEnd && seg.end->type != Stretch) { - ++seg.end; - } - }; - // Check if \p segment matches at exactly \p pathIter. auto checkMatch = [this, &runNthPredicate]( - Segment const &seg, SdfPathVector::const_iterator pathIter) { + _Segment const &seg, SdfPathVector::const_iterator pathIter) { - for (auto iter = seg.begin; iter != seg.end; ++iter, ++pathIter) { + for (auto iter = _components.cbegin() + seg.begin, + end = _components.cbegin() + seg.end; + iter != end; ++iter, ++pathIter) { switch (iter->type) { case ExplicitName: { // ExplicitName entries with empty text are components with only @@ -214,90 +229,93 @@ _PatternMatchBase::_Match(SdfPath const &path, // all names. std::string const &name = _explicitNames[iter->patternIndex]; if (!name.empty() && name != pathIter->GetName()) { - return false; + return Result::MakeVarying(false); } } break; case Regex: if (!_regexes[iter->patternIndex].Match(pathIter->GetName())) { - return false; + return Result::MakeVarying(false); } break; - case Stretch: - TF_CODING_ERROR("invalid 'stretch' component in segment"); - break; }; // Evaluate a predicate if this component has one. - if (iter->predicateIndex != -1 && - !runNthPredicate(iter->predicateIndex, *pathIter)) { - return false; + if (iter->predicateIndex != -1) { + Result predResult = + runNthPredicate(iter->predicateIndex, *pathIter); + if (!predResult) { + // The predicate's result's constancy is valid to + // propagate here. + return predResult; + } } } - return true; + return Result::MakeVarying(true); }; // Note! In case of a match, this function updates 'matchLoc' to mark the // location of the match in [pathBegin, pathEnd). - auto searchMatch = [&](Segment const &seg, + auto searchMatch = [&](_Segment const &seg, SdfPathVector::const_iterator pathBegin, SdfPathVector::const_iterator pathEnd) { // Search the range [pathBegin, pathEnd) to match seg. // Naive search to start... TODO: improve! - size_t segSize = std::distance(seg.begin, seg.end); + size_t segSize = seg.GetSize(); size_t numPaths = std::distance(pathBegin, pathEnd); if (segSize > numPaths) { - return false; + return Result::MakeVarying(false); } SdfPathVector::const_iterator pathSearchEnd = pathBegin + (numPaths - segSize) + 1; + Result result; for (; pathBegin != pathSearchEnd; ++pathBegin) { - if (checkMatch(seg, pathBegin)) { + result = checkMatch(seg, pathBegin); + if (result) { matchLoc = pathBegin; - return true; + return result; } } - return false; + return result; }; // Track the number of matching components remaining. - int numMatchingComponentsLeft = _numMatchingComponents; + int numComponentsLeft = _components.size(); // For each segment: - Segment segment { _components.cbegin(), _components.cbegin() }; - nextSegment(segment, /*priming=*/true); - for (; !segment.StartsAt(componentEnd); nextSegment(segment)) { - // Skip empty segments. - if (segment.IsEmpty()) { - continue; - } - + const size_t componentsSize = _components.size(); + for (_Segment const &segment: _segments) { // If there are more matching components remaining than the number of // path elements, this cannot possibly match. - if (numMatchingComponentsLeft > std::distance(matchLoc, matchEnd)) { - return false; + if (numComponentsLeft > std::distance(matchLoc, matchEnd)) { + return Result::MakeVarying(false); } // Decrement number of matching components remaining by this segment's // size. - numMatchingComponentsLeft -= segment.GetSize(); + numComponentsLeft -= segment.GetSize(); // First segment must match at the beginning. - if (segment.StartsAt(_components.cbegin())) { - if (!checkMatch(segment, matchLoc)) { - return false; + if (!_stretchBegin && segment.StartsAt(0)) { + const Result result = checkMatch(segment, matchLoc); + if (!result) { + return result; } matchLoc += segment.GetSize(); // If there is only one segment, it needs to match the whole. - if (segment.EndsAt(_components.cend()) && matchLoc != matchEnd) { - return false; + if (!_stretchEnd && + segment.EndsAt(componentsSize) && + matchLoc != matchEnd) { + return Result::MakeVarying(false); } } // Final segment must match at the end. - else if (segment.EndsAt(_components.cend())) { - if (!checkMatch(segment, matchEnd - segment.GetSize())) { - return false; + else if (!_stretchEnd && segment.EndsAt(componentsSize)) { + const Result result = + checkMatch(segment, matchEnd - segment.GetSize()); + if (!result) { + return result; } matchLoc = matchEnd; } @@ -305,15 +323,160 @@ _PatternMatchBase::_Match(SdfPath const &path, else { // We can restrict the search range by considering how many // components we have remaining to match against. - if (!searchMatch(segment, matchLoc, - matchEnd - numMatchingComponentsLeft)) { - return false; + const Result result = + searchMatch(segment, matchLoc, matchEnd - numComponentsLeft); + if (!result) { + return result; } matchLoc += segment.GetSize(); } } - return true; + return Result::MakeVarying(true); +} + +SdfPredicateFunctionResult +Sdf_PathExpressionEvalBase +::_PatternImplBase::_Next( + _PatternIncrSearchState &search, + SdfPath const &path, + TfFunctionRef< + SdfPredicateFunctionResult (int, SdfPath const &)> runNthPredicate) const +{ + using Result = SdfPredicateFunctionResult; + + // If we're constant, return the constant value. + if (search._constantDepth != -1) { + return Result::MakeConstant(search._constantValue); + } + + // Only support prim and prim property paths. + if (!path.IsAbsoluteRootOrPrimPath() && + !path.IsPrimPropertyPath()) { + TF_WARN("Unsupported path <%s>; can only match prim or " + "prim-property paths", path.GetAsString().c_str()); + search._constantDepth = 0; + search._constantValue = false; + return Result::MakeConstant(false); + } + + // Check prefix. + if (!path.HasPrefix(_prefix)) { + search._constantDepth = 0; + search._constantValue = false; + return Result::MakeConstant(false); + } + + // If this pattern demands a property path then we can early-out if the path + // in question is not a property path. Otherwise this path may or may not + // match properties. + if (_isProperty && !path.IsPrimPropertyPath()) { + return Result::MakeVarying(false); + } + + const size_t pathElemCount = path.GetPathElementCount(); + const size_t prefixElemCount = _prefix.GetPathElementCount(); + + // If this pattern has no components, it matches if it is the same as the + // prefix, or if it has the prefix and there's a stretch following. + if (_components.empty()) { + if (_stretchBegin || _stretchEnd) { + search._constantDepth = 0; + search._constantValue = path.HasPrefix(_prefix); + return Result::MakeConstant(search._constantValue); + } + else if (pathElemCount > prefixElemCount) { + search._constantDepth = 0; + search._constantValue = false; + return Result::MakeConstant(search._constantValue); + } + return Result::MakeVarying(true); + } + + // We're not a constant value, the prefix matches, and we have components to + // match against -- we're looking to match those components. Get the + // segment we're trying to match -- it's the _matchDepths.size()th one. + using Segment = _PatternImplBase::_Segment; + Segment const &curSeg = _segments[search._segmentMatchDepths.size()]; + + // Do we have sufficent path components to match? + if (pathElemCount - prefixElemCount < curSeg.GetSize()) { + return Result::MakeVarying(false); + } + + // Check for a match here. Go from the end of the path back, and look for + // literal component matches first since those are the fastest to check. + + SdfPath workingPath = path; + auto compIter = make_reverse_iterator(_components.cbegin() + curSeg.end), + compEnd = make_reverse_iterator(_components.cbegin() + curSeg.begin); + + // First pass explicit names & their predicates. + for (; compIter != compEnd; + ++compIter, workingPath = workingPath.GetParentPath()) { + if (compIter->type == _PatternImplBase::ExplicitName) { + // ExplicitName entries with empty text are components with only + // predicates. (e.g. //{somePredicate}) They implicitly match all + // names. + std::string const &name = _explicitNames[compIter->patternIndex]; + if (!name.empty() && name != workingPath.GetName()) { + return Result::MakeVarying(false); + } + // Invoke predicate if this component has one. + if (compIter->predicateIndex != -1) { + SdfPredicateFunctionResult predResult = + runNthPredicate(compIter->predicateIndex, workingPath); + if (!predResult) { + if (predResult.IsConstant()) { + search._constantDepth = pathElemCount; + search._constantValue = false; + } + return predResult; + } + } + } + } + // Second pass, regexes & their predicates. + compIter = make_reverse_iterator(_components.cbegin() + curSeg.end); + workingPath = path; + for (; compIter != compEnd; + ++compIter, workingPath = workingPath.GetParentPath()) { + if (compIter->type == _PatternImplBase::Regex) { + if (!_regexes[compIter->patternIndex].Match( + workingPath.GetName())) { + return Result::MakeVarying(false); + } + // Invoke predicate if this component has one. + if (compIter->predicateIndex != -1) { + SdfPredicateFunctionResult predResult = + runNthPredicate(compIter->predicateIndex, workingPath); + if (!predResult) { + if (predResult.IsConstant()) { + search._constantDepth = pathElemCount; + search._constantValue = false; + } + return predResult; + } + } + } + } + + // We have matched this component here, so push on. + search._segmentMatchDepths.push_back(pathElemCount); + + // If we've completed matching, we can mark ourselves constant if we end + // with stretch. + if (search._segmentMatchDepths.size() == _segments.size()) { + if (_stretchEnd) { + search._constantDepth = pathElemCount; + search._constantValue = true; + return Result::MakeConstant(true); + } + return Result::MakeVarying(true); + } + + // We have taken the next step, but we have more matching to do. + return Result::MakeVarying(false); } bool @@ -330,7 +493,7 @@ Sdf_MakePathExpressionEvalImpl( TF_CODING_ERROR("Cannot build evaluator for incomplete " "SdfPathExpression; must contain only absolute " "paths and no expression references: <%s>", - expr.GetDebugString().c_str()); + expr.GetText().c_str()); return false; } @@ -343,7 +506,7 @@ Sdf_MakePathExpressionEvalImpl( case Expr::Union: case Expr::ImpliedUnion: return Eval::Or; case Expr::Intersection: case Expr::Difference: return Eval::And; // Note that Difference(A, B) is transformed to And(A, !B) below. - case Expr::Pattern: return Eval::PatternMatch; + case Expr::Pattern: return Eval::EvalPattern; case Expr::ExpressionRef: TF_CODING_ERROR("Building evaluator for incomplete " "SdfPathExpression"); @@ -354,7 +517,7 @@ Sdf_MakePathExpressionEvalImpl( auto translateLogic = [&](Expr::Op op, int argIndex) { switch (op) { - case Expr::Complement: // Not is postfix, RPN-style. + case Expr::Complement: // Complement (aka Not) is postfix, RPN-style. if (argIndex == 1) { eval._ops.push_back(Eval::Not); } @@ -391,7 +554,7 @@ Sdf_MakePathExpressionEvalImpl( // references. auto issueReferenceError = [&expr](Expr::ExpressionReference const &) { TF_CODING_ERROR("Unexpected reference in path expression: <%s>", - expr.GetDebugString().c_str()); + expr.GetText().c_str()); }; TfErrorMark m; @@ -403,4 +566,3 @@ Sdf_MakePathExpressionEvalImpl( } PXR_NAMESPACE_CLOSE_SCOPE - diff --git a/pxr/usd/sdf/pathExpressionEval.h b/pxr/usd/sdf/pathExpressionEval.h index b53b9bca03..d11806e2fc 100644 --- a/pxr/usd/sdf/pathExpressionEval.h +++ b/pxr/usd/sdf/pathExpressionEval.h @@ -29,6 +29,7 @@ #include "pxr/usd/sdf/path.h" #include "pxr/usd/sdf/pathExpression.h" #include "pxr/usd/sdf/predicateExpression.h" +#include "pxr/usd/sdf/predicateLibrary.h" #include "pxr/usd/sdf/predicateProgram.h" #include "pxr/base/arch/regex.h" @@ -87,7 +88,27 @@ class Sdf_PathExpressionEvalBase } protected: - class _PatternMatchBase { + class _PatternImplBase; + + class _PatternIncrSearchState { + friend class _PatternImplBase; + public: + void Pop(int newDepth) { + while (!_segmentMatchDepths.empty() && + _segmentMatchDepths.back() >= newDepth) { + _segmentMatchDepths.pop_back(); + } + if (newDepth <= _constantDepth) { + _constantDepth = -1; + } + } + private: + std::vector _segmentMatchDepths; + int _constantDepth = -1; // 0 means constant at the _prefix level. + bool _constantValue = false; + }; + + class _PatternImplBase { protected: // This is not a constructor because the subclass wants to invoke this // from its ctor, TfFunctionRef currently requires an lvalue, which is @@ -98,12 +119,20 @@ class Sdf_PathExpressionEvalBase int (SdfPredicateExpression const &)> linkPredicate); SDF_API - bool _Match(SdfPath const &path, - TfFunctionRef< - bool (int, SdfPath const &)> runNthPredicate) const; + SdfPredicateFunctionResult + _Match( + SdfPath const &path, + TfFunctionRef + runNthPredicate) const; + + SDF_API + SdfPredicateFunctionResult + _Next(_PatternIncrSearchState &searchState, + SdfPath const &path, + TfFunctionRef + runNthPredicate) const; enum _ComponentType { - Stretch, // the "//", arbitrary levels of hierarchy. ExplicitName, // an explicit name (not a glob pattern). Regex // a glob pattern (handled via regex). }; @@ -113,107 +142,60 @@ class Sdf_PathExpressionEvalBase int patternIndex; // into either _explicitNames or _regexes int predicateIndex; // into _predicates or -1 if no predicate. }; + + struct _Segment { + // A _Segment is a half-open interval [begin, end) in _components. + bool IsEmpty() const { return begin == end; } + bool StartsAt(size_t idx) const { return begin == idx; } + bool EndsAt(size_t idx) const { return end == idx; } + size_t GetSize() const { return end - begin; } + size_t begin, end; + }; SdfPath _prefix; std::vector<_Component> _components; + std::vector<_Segment> _segments; std::vector _explicitNames; std::vector _regexes; - size_t _numMatchingComponents; // of type ExplicitName or Regex. + + bool _stretchBegin; + bool _stretchEnd; bool _isProperty; // true if this pattern matches only properties. }; - // The passed \p patternMatch function must do two things: 1, if \p skip is + + // The passed \p invokePattern function must do two things: 1, if \p skip is // false, test the current pattern for a match (otherwise skip it) and 2, // advance to be ready to test the next pattern for a match on the next call - // to \p patternMatch. + // to \p invokePattern. SDF_API - bool _Match(TfFunctionRef patternMatch) const; + SdfPredicateFunctionResult + _EvalExpr(TfFunctionRef< + SdfPredicateFunctionResult (bool /*skip*/)> invokePattern) const; - enum _Op { PatternMatch, Not, Open, Close, Or, And }; + enum _Op { EvalPattern, Not, Open, Close, Or, And }; std::vector<_Op> _ops; }; - /// \class SdfPathExpressionEval /// -/// Objects of this class evaluate complete SdfPathExpressions on instances of -/// DomainType. See SdfMakePathExpressionEval() to create instances of this -/// class, passing the expression to evaluate and an -/// SdfPredicateLibrary to evaluate any embedded predicates. -/// -/// This class must be able to find the DomainType instance associated with an -/// SdfPath and vice-versa. There are two ways to do this; either explicitly by -/// passing function objects to Match(), or by providing ADL-found overloads of -/// the following two functions: +/// Objects of this class evaluate complete SdfPathExpressions. See +/// SdfMakePathExpressionEval() to create instances of this class, passing the +/// expression to evaluate and an SdfPredicateLibrary to evaluate any embedded +/// predicates. /// -/// \code -/// SdfPath SdfPathExpressionObjectToPath(DomainType); -/// DomainType SdfPathExpressionPathToObject(SdfPath const &, -/// DomainType const *); -/// \endcode -/// -/// The function SdfPathExpressionPathToObject()'s second argument is always -/// nullptr. It exists to disambiguate overloads, since functions cannot be -/// overloaded on return-type. It is also an argument rather than an explicit -/// template parameter since function calls with explicit template arguments are -/// not found via ADL. /// template class SdfPathExpressionEval : public Sdf_PathExpressionEvalBase { - struct _DefaultToPath { - auto operator()(DomainType obj) const { - return SdfPathExpressionObjectToPath(obj); - } - }; - - struct _DefaultToObj { - auto operator()(SdfPath const &path) const { - return SdfPathExpressionPathToObject( - path, static_cast const *>(nullptr)); - } - }; - -public: - /// Make an SdfPathExpressionEval object to evaluate \p expr using \p lib to - /// link any embedded predicate expressions. - friend SdfPathExpressionEval - SdfMakePathExpressionEval( - SdfPathExpression const &expr, - SdfPredicateLibrary const &lib); - - /// Test \p obj for a match with this expression. Overloads of - /// SdfPathExpressionPathToObject() and SdfPathExpressionObjectToPath() for - /// \a DomainType must be found by ADL. - bool Match(DomainType obj) { - return Match(obj, _DefaultToPath {}, _DefaultToObj {}); - } - - /// Test \p obj for a match with this expression. Use \p objToPath and \p - /// pathToObj to map between corresponding SdfPath and DomainType instances. - template - bool Match(DomainType obj, - ObjectToPath const &objToPath, - PathToObject const &pathToObj) const { - auto matchIter = _matches.cbegin(); - auto patternMatch = [&](bool skip) { - if (skip) { - ++matchIter; - return false; - } - return (*matchIter++)(obj, objToPath, pathToObj); - }; - return _Match(patternMatch); - } - -private: - // This object implements matching against a single path pattern. - class _PatternMatch : public _PatternMatchBase { + class _PatternImpl : public _PatternImplBase { public: - _PatternMatch(SdfPathExpression::PathPattern const &pattern, - SdfPredicateLibrary const &predLib) { + _PatternImpl() = default; + + _PatternImpl(SdfPathExpression::PathPattern const &pattern, + SdfPredicateLibrary const &predLib) { auto linkPredicate = [this, &predLib](SdfPredicateExpression const &predExpr) { _predicates.push_back( @@ -225,21 +207,156 @@ class SdfPathExpressionEval : public Sdf_PathExpressionEvalBase // Check obj for a match against this pattern. template - bool operator()(DomainType obj, - ObjectToPath const &objToPath, - PathToObject const &pathToObj) const { + SdfPredicateFunctionResult + Match(DomainType const &obj, + ObjectToPath const &objToPath, + PathToObject const &pathToObj) const { auto runNthPredicate = [this, &pathToObj](int i, SdfPath const &path) { return _predicates[i](pathToObj(path)); }; return _Match(objToPath(obj), runNthPredicate); } + + // Perform the next incremental search step against this pattern. + template + SdfPredicateFunctionResult + Next(DomainType const &obj, + _PatternIncrSearchState &search, + ObjectToPath const &objToPath, + PathToObject const &pathToObj) const { + auto runNthPredicate = + [this, &pathToObj](int i, SdfPath const &path) { + return _predicates[i](pathToObj(path)); + }; + return _Next(search, objToPath(obj), runNthPredicate); + } private: std::vector> _predicates; }; - - std::vector<_PatternMatch> _matches; + +public: + /// Make an SdfPathExpressionEval object to evaluate \p expr using \p lib to + /// link any embedded predicate expressions. + friend SdfPathExpressionEval + SdfMakePathExpressionEval( + SdfPathExpression const &expr, + SdfPredicateLibrary const &lib); + + bool IsEmpty() const { + return _patternImpls.empty(); + } + + /// Test \p obj for a match with this expression. + template + SdfPredicateFunctionResult + Match(DomainType const &obj, + ObjectToPath const &objToPath, + PathToObject const &pathToObj) const { + if (IsEmpty()) { + return SdfPredicateFunctionResult::MakeConstant(false); + } + auto patternImplIter = _patternImpls.cbegin(); + auto evalPattern = [&](bool skip) { + return skip ? (++patternImplIter, SdfPredicateFunctionResult()) : + (*patternImplIter++).Match(obj, objToPath, pathToObj); + }; + return _EvalExpr(evalPattern); + } + + /// \class IncrementalSearcher + /// + /// This class implements stateful incremental search over DomainType + /// objects in depth-first order. See Next() for more info. This class is + /// copyable, and may be copied to parallelize searches over domain + /// subtrees, where one copy is invoked with a child, and the other with the + /// next sibling. + template + class IncrementalSearcher { + public: + IncrementalSearcher() : _eval(nullptr), _lastPathDepth(0) {} + + IncrementalSearcher(SdfPathExpressionEval const *eval, + ObjectToPath const &o2p, + PathToObject const &p2o) + : _eval(eval) + , _incrSearchStates(_eval->_patternImpls.size()) + , _objToPath(o2p) + , _pathToObj(p2o) + , _lastPathDepth(0) {} + + IncrementalSearcher(SdfPathExpressionEval const *eval, + ObjectToPath &&o2p, + PathToObject &&p2o) + : _eval(eval) + , _incrSearchStates(_eval->_patternImpls.size()) + , _objToPath(std::move(o2p)) + , _pathToObj(std::move(p2o)) + , _lastPathDepth(0) {} + + /// Advance the search to the next \p object, and return the result of + /// evaluating the expression on it. + /// + /// The passed \p obj must have a path that could succeed the previous + /// object's path in a valid depth-first ordering. That is, it must be + /// a direct child, a sibling, or the sibling of an ancestor. For + /// example, the following paths are in a valid order: + /// + /// /foo, /foo/bar, /foo/bar/baz, /foo/bar/qux, /oof, /oof/zab /oof/xuq + /// + SdfPredicateFunctionResult + Next(DomainType const &obj) { + auto patternImplIter = _eval->_patternImpls.begin(); + auto stateIter = _incrSearchStates.begin(); + int newDepth = _objToPath(obj).GetPathElementCount(); + const int popLevel = (newDepth <= _lastPathDepth) ? newDepth : 0; + auto patternStateNext = [&](bool skip) { + if (popLevel) { + stateIter->Pop(popLevel); + } + return skip ? (++patternImplIter, SdfPredicateFunctionResult()) + : (*patternImplIter++).Next( + obj, *stateIter++, _objToPath, _pathToObj); + }; + _lastPathDepth = newDepth; + return _eval->_EvalExpr(patternStateNext); + } + + /// Reset this object's incremental search state so that a new round of + /// searching may begin. + void Reset() { + *this = IncrementalSearcher { + _eval, std::move(_objToPath), std::move(_pathToObj) + }; + } + + private: + SdfPathExpressionEval const *_eval; + std::vector<_PatternIncrSearchState> _incrSearchStates; + + ObjectToPath _objToPath; + PathToObject _pathToObj; + + int _lastPathDepth; + }; + + /// Create an IncrementalSearcher object, using \p objToPath and \p + /// pathToObject to map DomainType instances to their paths and vice-versa. + template + IncrementalSearcher, + std::decay_t> + MakeIncrementalSearcher(ObjectToPath &&objToPath, + PathToObject &&pathToObj) const { + return IncrementalSearcher< + std::decay_t, + std::decay_t>( + this, std::forward(objToPath), + std::forward(pathToObj)); + } + +private: + std::vector<_PatternImpl> _patternImpls; }; /// Create an SdfPathExpressionEval object that can evaluate the complete @@ -264,10 +381,10 @@ SdfMakePathExpressionEval(SdfPathExpression const &expr, Eval eval; auto translatePattern = [&](Expr::PathPattern const &pattern) { - // Add a _PatternMatch object that tests a DomainType object against + // Add a _PatternImpl object that tests a DomainType object against // pattern. - eval._matches.emplace_back(pattern, lib); - eval._ops.push_back(Eval::PatternMatch); + eval._patternImpls.emplace_back(pattern, lib); + eval._ops.push_back(Eval::EvalPattern); }; if (!Sdf_MakePathExpressionEvalImpl(eval, expr, translatePattern)) { diff --git a/pxr/usd/sdf/predicateLibrary.cpp b/pxr/usd/sdf/predicateLibrary.cpp index 9ae57368c0..588c27d729 100644 --- a/pxr/usd/sdf/predicateLibrary.cpp +++ b/pxr/usd/sdf/predicateLibrary.cpp @@ -30,6 +30,17 @@ PXR_NAMESPACE_OPEN_SCOPE +size_t +SdfPredicateParamNamesAndDefaults::_CountDefaults() const +{ + size_t count = 0; + for (Param const &p: _params) { + if (!p.val.IsEmpty()) { + ++count; + } + } + return count; +} bool SdfPredicateParamNamesAndDefaults::CheckValidity() const diff --git a/pxr/usd/sdf/predicateLibrary.h b/pxr/usd/sdf/predicateLibrary.h index 74039c1e9d..3fd21dad64 100644 --- a/pxr/usd/sdf/predicateLibrary.h +++ b/pxr/usd/sdf/predicateLibrary.h @@ -51,6 +51,7 @@ PXR_NAMESPACE_OPEN_SCOPE /// Valid parameter names and defaults have non-empty names, and all parameters /// following the first one with a default value must also have default values. struct SdfPredicateParamNamesAndDefaults { + /// \class Param represents a single named parameter with an optional /// default value. struct Param { @@ -66,10 +67,14 @@ struct SdfPredicateParamNamesAndDefaults { VtValue val; }; + /// Default constructor produces empty set of names & defaults. + SdfPredicateParamNamesAndDefaults() : _numDefaults(0) {} + /// Construct or implicitly convert from initializer_list. SdfPredicateParamNamesAndDefaults( - std::initializer_list const ¶ms) : - _params(params.begin(), params.end()) {} + std::initializer_list const ¶ms) + : _params(params.begin(), params.end()) + , _numDefaults(_CountDefaults()) {} /// Check that all parameters have non-empty names and that all paramters /// following the first with a default value also have default values. @@ -88,8 +93,17 @@ struct SdfPredicateParamNamesAndDefaults { return std::move(_params); } + /// Return the number of params with default values. + size_t GetNumDefaults() const { + return _numDefaults; + } + private: + SDF_API + size_t _CountDefaults() const; + std::vector _params; + size_t _numDefaults; }; @@ -101,17 +115,31 @@ struct SdfPredicateParamNamesAndDefaults { class SdfPredicateFunctionResult { public: - enum Constancy { IsConstant, MayVary }; + enum Constancy { ConstantOverDescendants, MayVaryOverDescendants }; - /// Default construction produces a 'false' result that 'MayVary'. + /// Default construction produces a 'false' result that + /// 'MayVaryOverDescendants'. constexpr SdfPredicateFunctionResult() - : _value(false), _constancy(MayVary) {} + : _value(false), _constancy(MayVaryOverDescendants) {} + + /// Construct with \p value and \p MayVaryOverDescendants constancy. + explicit SdfPredicateFunctionResult(bool value) + : SdfPredicateFunctionResult(value, MayVaryOverDescendants) {} /// Construct with \p value and \p constancy. - explicit SdfPredicateFunctionResult( - bool value, Constancy constancy=MayVary) + SdfPredicateFunctionResult(bool value, Constancy constancy) : _value(value), _constancy(constancy) {} + /// Create with \p value and 'ConstantOverDescendants' + static SdfPredicateFunctionResult MakeConstant(bool value) { + return { value, ConstantOverDescendants }; + } + + /// Create with \p value and 'MayVaryOverDescendants' + static SdfPredicateFunctionResult MakeVarying(bool value) { + return { value, MayVaryOverDescendants }; + } + /// Return the result value. bool GetValue() const { return _value; @@ -122,12 +150,57 @@ class SdfPredicateFunctionResult return _constancy; } + /// Return true if this result's constancy is ConstantOverDescendants. + bool IsConstant() const { + return GetConstancy() == ConstantOverDescendants; + } + /// Return GetValue(). explicit operator bool() const { return _value; } - + + /// Return a result with the opposite value but the same constancy. + SdfPredicateFunctionResult operator!() const { + return { !_value, _constancy }; + } + + /// Set this result's value to \p other's value, and propagate constancy; if + /// both this and \p other are ConstantOverDescendants, this object's + /// constancy remains ConstantOverDescendants. Otherwise set this object's + /// constancy to MayVaryOverDescendants. + void SetAndPropagateConstancy(SdfPredicateFunctionResult other) { + _value = other._value; + if (_constancy == ConstantOverDescendants && + other._constancy == MayVaryOverDescendants) { + _constancy = MayVaryOverDescendants; + } + } + private: + friend bool operator==(SdfPredicateFunctionResult lhs, + SdfPredicateFunctionResult rhs) { + return lhs._value == rhs._value && + lhs._constancy == rhs._constancy; + } + friend bool operator!=(SdfPredicateFunctionResult lhs, + SdfPredicateFunctionResult rhs) { + return !(lhs == rhs); + } + + friend bool operator==(SdfPredicateFunctionResult pfr, bool rhs) { + return pfr._value == rhs; + } + friend bool operator==(bool lhs, SdfPredicateFunctionResult pfr) { + return lhs == pfr._value; + } + friend bool operator!=(SdfPredicateFunctionResult pfr, bool rhs) { + return pfr._value != rhs; + } + friend bool operator!=(bool lhs, SdfPredicateFunctionResult pfr) { + return lhs != pfr._value; + } + bool _value; Constancy _constancy; }; @@ -160,7 +233,12 @@ class SdfPredicateLibrary SdfPredicateLibrary const &lib); using NamesAndDefaults = SdfPredicateParamNamesAndDefaults; + public: + /// The type of a bound function, the result of binding passed arguments. + using PredicateFunction = + std::function; + /// Default constructor produces an empty library. SdfPredicateLibrary() = default; @@ -218,12 +296,27 @@ class SdfPredicateLibrary return *this; } + /// Register a custom binding function for \p name in this library. The + /// function must take a single argument of type + /// std::vector. When invoked, it must + /// attempt to bind the arguments passed in the vector and return a bound + /// PredicateFunction object. If the arguments are invalid, return an empty + /// PredicateFunction. + template + SdfPredicateLibrary & + DefineBinder(std::string const &name, Fn &&fn) { + auto binder = _CustomBinder< + std::decay_t>::Create(std::forward(fn)); + _binders[name].push_back(std::move(binder)); + return *this; + } + private: - std::function + PredicateFunction _BindCall(std::string const &name, - std::vector const &args) const { - std::function ret; + std::vector const &args) const { + PredicateFunction ret; auto iter = _binders.find(name); if (iter == _binders.end()) { TF_RUNTIME_ERROR("No registered function '%s'", name.c_str()); @@ -304,8 +397,11 @@ class SdfPredicateLibrary using Traits = TfFunctionTraits; // Return type must convert to bool. - static_assert(std::is_convertible< - typename Traits::ReturnType, bool>::value, ""); + static_assert( + std::is_same::value || + std::is_convertible< + typename Traits::ReturnType, bool>::value, ""); // Fn must have at least one argument, and DomainType must be // convertible to the first arg. @@ -437,26 +533,71 @@ class SdfPredicateLibrary _TryBindArgs(ParamsTuple ¶ms, std::vector const &args, NamesAndDefaults const &namesAndDefaults, - std::index_sequence) { + std::index_sequence, + std::vector &boundArgs) { // A fold expression would let us just do &&, but that's '17, so we just // do all of them and set a bool. bool bound = true; - size_t N = std::tuple_size::value; - std::vector boundArgs(N); + boundArgs.assign(args.size(), false); // Need a unused array so we can use an initializer list to invoke // _TryBindOne N times. int unused[] = { 0, - (_TryBindOne(I, N, std::get(params), bound, + (_TryBindOne(I, std::tuple_size::value, + std::get(params), bound, args, boundArgs, namesAndDefaults), 0)... }; TF_UNUSED(unused); return bound; } + template + static void + _FillArbitraryArgs(std::true_type, + std::vector const &args, + std::vector const &boundArgs, + Tuple &typedArgs) { + std::vector &rest = + std::get::value-1>(typedArgs); + // 'boundArgs' and 'args' correspond. Fill 'rest' with the elements of + // 'args' for which the corresponding element of 'boundArgs' is false, + // in order. + rest.clear(); + for (size_t i = 0; i != args.size(); ++i) { + if (!boundArgs[i]) { + rest.push_back(args[i]); + } + } + } + + template + static void + _FillArbitraryArgs(std::false_type, + std::vector const &, + std::vector const &, + T const &) { + // Do nothing. + } + + template + static constexpr bool + _TakesArbitraryArgs(std::true_type) { // arity >= 2. + return std::is_same< + std::tuple_element_t::value-1, + ParamsTuple>, + std::vector + >::value; + } + + template + static constexpr bool + _TakesArbitraryArgs(std::false_type) { // arity < 2. + return false; + } + template - static std::function + static PredicateFunction _TryToBindCall(Fn const &fn, std::vector const &args, NamesAndDefaults const &namesAndDefaults) { @@ -471,17 +612,43 @@ class SdfPredicateLibrary TfMetaApply>; using ParamsTuple = TfMetaApply; - if (args.size() > Traits::Arity-1) { - TF_RUNTIME_ERROR("Function takes at most %zu argument%s, %zu given", - Traits::Arity-1, Traits::Arity-1 == 1 ? "" : "s", + // If there are at least two parameters to Fn (first has to be + // DomainType) and the last parameter type is vector, then + // namesAndDefaults does not apply to it, and any remaining unbound args + // after binding are passed through that parameter. + static const bool TakesArbitraryArgs = + _TakesArbitraryArgs( + std::integral_constant= 2> {}); + + size_t minArgs = Traits::Arity-1 - namesAndDefaults.GetNumDefaults(); + size_t maxArgs = TakesArbitraryArgs ? size_t(-1) : Traits::Arity-1; + + // Number of bindable args is arity-1 (for the domain arg) or -2 if the + // trailing parameter is the vector bag of extra arguments. + static const size_t NumBindableArgs = + Traits::Arity - (TakesArbitraryArgs ? 2 : 1); + + if (args.size() < minArgs) { + TF_RUNTIME_ERROR("Function requires at least %zu argument%s, " + "%zu given", minArgs, minArgs == 1 ? "" : "s", args.size()); return {}; } + if (args.size() > maxArgs) { + TF_RUNTIME_ERROR("Function takes at most %zu argument%s, %zu given", + maxArgs, maxArgs == 1 ? "" : "s", args.size()); + return {}; + } ParamsTuple typedArgs; + std::vector boundArgs; if (_TryBindArgs(typedArgs, args, namesAndDefaults, - std::make_index_sequence {})) { - return [typedArgs, fn](DomainType obj) { + std::make_index_sequence {}, + boundArgs)) { + _FillArbitraryArgs( + std::integral_constant {}, + args, boundArgs, typedArgs); + return [typedArgs, fn](DomainType const &obj) { // invoke fn with obj & typedArgs. (std::apply in '17). return SdfPredicateFunctionResult { invoke_hpp::apply(fn, std::tuple_cat( @@ -495,16 +662,18 @@ class SdfPredicateLibrary struct _OverloadBinderBase { virtual ~_OverloadBinderBase() = default; - std::function + PredicateFunction Bind(std::vector const &args) const { return _Bind(args); } virtual std::unique_ptr<_OverloadBinderBase> Clone() const = 0; protected: + _OverloadBinderBase() = default; + explicit _OverloadBinderBase(NamesAndDefaults const &namesAndDefaults) : _namesAndDefaults(namesAndDefaults) {} - virtual std::function + virtual PredicateFunction _Bind(std::vector< SdfPredicateExpression::FnArg> const &args) const = 0; @@ -519,7 +688,7 @@ class SdfPredicateLibrary static std::unique_ptr<_OverloadBinder> TryCreate(Fn &&fn, NamesAndDefaults const &nd) { auto ret = std::unique_ptr<_OverloadBinder>( - new _OverloadBinder(fn, nd)); + new _OverloadBinder(std::move(fn), nd)); if (!_CheckNamesAndDefaultsWithSignature(nd)) { ret.reset(); } @@ -543,7 +712,7 @@ class SdfPredicateLibrary NamesAndDefaults const &namesAndDefaults) : _OverloadBinder(Fn(fn), namesAndDefaults) {} - std::function + PredicateFunction _Bind(std::vector< SdfPredicateExpression::FnArg> const &args) const override { // Try to bind 'args' to _fn's parameters, taking _namesAndDefaults @@ -554,6 +723,38 @@ class SdfPredicateLibrary Fn _fn; }; + template + struct _CustomBinder : _OverloadBinderBase + { + ~_CustomBinder() override = default; + + static std::unique_ptr<_CustomBinder> + Create(Fn &&fn) { + return std::unique_ptr<_CustomBinder>( + new _CustomBinder(std::move(fn))); + } + + std::unique_ptr<_OverloadBinderBase> Clone() const override { + return std::unique_ptr<_CustomBinder>(new _CustomBinder(*this)); + } + + private: + _CustomBinder(_CustomBinder const &) = default; + explicit _CustomBinder(Fn &&fn) + : _OverloadBinderBase() + , _fn(std::move(fn)) {} + explicit _CustomBinder(Fn const &fn) : _CustomBinder(Fn(fn)) {} + + PredicateFunction + _Bind(std::vector< + SdfPredicateExpression::FnArg> const &args) const override { + // Call _fn to try to bind 'args', producing a callable. + return _fn(args); + } + + Fn _fn; + }; + using _OverloadBinderBasePtr = std::unique_ptr<_OverloadBinderBase>; pxr_tsl::robin_map< diff --git a/pxr/usd/sdf/predicateProgram.h b/pxr/usd/sdf/predicateProgram.h index dcd2b6a684..4fb8ee3881 100644 --- a/pxr/usd/sdf/predicateProgram.h +++ b/pxr/usd/sdf/predicateProgram.h @@ -68,6 +68,9 @@ template class SdfPredicateProgram { public: + using PredicateFunction = + typename SdfPredicateLibrary::PredicateFunction; + friend SdfPredicateProgram SdfLinkPredicateExpression( SdfPredicateExpression const &expr, @@ -79,13 +82,31 @@ class SdfPredicateProgram } /// Run the predicate program on \p obj, and return the result. - bool - operator()(DomainType obj) const { - bool result = false; + SdfPredicateFunctionResult + operator()(DomainType const &obj) const { + SdfPredicateFunctionResult result = + SdfPredicateFunctionResult::MakeConstant(false); int nest = 0; auto funcIter = _funcs.cbegin(); auto opIter = _ops.cbegin(), opEnd = _ops.cend(); + // The current implementation favors short-circuiting over constance + // propagation. It might be beneficial to avoid short-circuiting when + // constancy isn't known, in hopes of establishing constancy. For + // example, if we have 'A or B', and 'A' evaluates to 'true' with + // MayVaryOverDescendants, we will skip evaluating B + // (short-circuit). This means we would miss the possibility of + // upgrading the constancy in case B returned 'true' with + // ConstantOverDescendants. This isn't a simple switch to flip though; + // we'd have to do some code restructuring here. + // + // For posterity, the rules for propagating constancy are the following, + // where A and B are the truth-values, and c(A), c(B), are whether or + // not the constancy is ConstantOverDescendants for A, B, respectively: + // + // c(A or B) = (A and c(A)) or (B and c(B)) or (c(A) and c(B)) + // c(A and B) = (!A and c(A)) or (!B and c(B)) or (c(A) and c(B)) + // Helper for short-circuiting "and" and "or" operators. Advance, // ignoring everything until we reach the next Close that brings us to // the starting nest level. @@ -109,7 +130,9 @@ class SdfPredicateProgram // invoking predicate functions. for (; opIter != opEnd; ++opIter) { switch (*opIter) { - case Call: result = static_cast((*funcIter++)(obj)); break; + case Call: + result.SetAndPropagateConstancy((*funcIter++)(obj)); + break; case Not: result = !result; break; case And: case Or: { const bool decidingValue = *opIter != And; @@ -130,7 +153,7 @@ class SdfPredicateProgram private: enum _Op { Call, Not, Open, Close, And, Or }; std::vector<_Op> _ops; - std::vector> _funcs; + std::vector _funcs; }; diff --git a/pxr/usd/sdf/testenv/testSdfPathExpression.cpp b/pxr/usd/sdf/testenv/testSdfPathExpression.cpp index 53ddbc7f3c..05e4dbfb89 100644 --- a/pxr/usd/sdf/testenv/testSdfPathExpression.cpp +++ b/pxr/usd/sdf/testenv/testSdfPathExpression.cpp @@ -30,27 +30,16 @@ PXR_NAMESPACE_USING_DIRECTIVE -// For testing, provide overloads of SdfPathExpressionObjectToPath & -// PathToObject so that just return the path itself. -PXR_NAMESPACE_OPEN_SCOPE +namespace { -static SdfPath -SdfPathExpressionObjectToPath(SdfPath const &path) { - return path; -} - -static SdfPath -SdfPathExpressionPathToObject(SdfPath const &path, SdfPath const *) { - return path; -} +struct PathIdentity { + SdfPath operator()(SdfPath const &p) const { return p; } +}; -PXR_NAMESPACE_CLOSE_SCOPE - -static void -TestBasics() -{ +static SdfPredicateLibrary const & +GetBasicPredicateLib() { // Super simple predicate library for paths for testing. - auto predLib = SdfPredicateLibrary() + static auto theLib = SdfPredicateLibrary() .Define("isPrimPath", [](SdfPath const &p) { return p.IsPrimPath(); }) @@ -58,10 +47,28 @@ TestBasics() return p.IsPropertyPath(); }) ; + return theLib; +} +struct MatchEval { + explicit MatchEval(SdfPathExpression const &expr) + : _eval(SdfMakePathExpressionEval(expr, GetBasicPredicateLib())) {} + explicit MatchEval(std::string const &exprStr) : + MatchEval(SdfPathExpression(exprStr)) {} + bool Match(SdfPath const &p) { + return static_cast( + _eval.Match(p, PathIdentity {}, PathIdentity {})); + } + SdfPathExpressionEval _eval; +}; + +} // anon + +static void +TestBasics() +{ { - auto eval = SdfMakePathExpressionEval( - SdfPathExpression("/foo//bar"), predLib); + auto eval = MatchEval { SdfPathExpression("/foo//bar") }; TF_AXIOM(eval.Match(SdfPath("/foo/bar"))); TF_AXIOM(eval.Match(SdfPath("/foo/x/bar"))); @@ -71,9 +78,7 @@ TestBasics() } { - auto eval = SdfMakePathExpressionEval( - SdfPathExpression("//foo/bar/baz/qux/quux"), - predLib); + auto eval = MatchEval { SdfPathExpression("//foo/bar/baz/qux/quux") }; TF_AXIOM(!eval.Match(SdfPath("/foo"))); TF_AXIOM(!eval.Match(SdfPath("/foo/bar"))); @@ -88,8 +93,7 @@ TestBasics() } { - auto eval = SdfMakePathExpressionEval( - SdfPathExpression("/foo*//bar"), predLib); + auto eval = MatchEval { SdfPathExpression("/foo*//bar") }; TF_AXIOM(eval.Match(SdfPath("/foo/bar"))); TF_AXIOM(eval.Match(SdfPath("/foo/x/bar"))); @@ -105,9 +109,7 @@ TestBasics() } { - auto eval = SdfMakePathExpressionEval( - SdfPathExpression("/foo*//bar{isPrimPath}"), - predLib); + auto eval = MatchEval { SdfPathExpression("/foo*//bar{isPrimPath}") }; TF_AXIOM(eval.Match(SdfPath("/foo/bar"))); TF_AXIOM(eval.Match(SdfPath("/foo/x/bar"))); @@ -123,9 +125,8 @@ TestBasics() } { - auto eval = SdfMakePathExpressionEval( - SdfPathExpression("/foo*//bar//{isPrimPath}"), - predLib); + auto eval = MatchEval { + SdfPathExpression("/foo*//bar//{isPrimPath}") }; TF_AXIOM(eval.Match(SdfPath("/foo/bar/a"))); TF_AXIOM(eval.Match(SdfPath("/foo/x/bar/b"))); @@ -145,9 +146,8 @@ TestBasics() } { - auto eval = SdfMakePathExpressionEval( - SdfPathExpression("/a /b /c /d/e/f"), - predLib); + auto eval = MatchEval { + SdfPathExpression("/a /b /c /d/e/f") }; TF_AXIOM(eval.Match(SdfPath("/a"))); TF_AXIOM(eval.Match(SdfPath("/b"))); @@ -161,9 +161,8 @@ TestBasics() } { - auto eval = SdfMakePathExpressionEval( - SdfPathExpression("/a// - /a/b/c"), - predLib); + auto eval = MatchEval { + SdfPathExpression("/a// - /a/b/c") }; TF_AXIOM(eval.Match(SdfPath("/a"))); TF_AXIOM(eval.Match(SdfPath("/a/b"))); @@ -174,9 +173,8 @@ TestBasics() } { - auto eval = SdfMakePathExpressionEval( - SdfPathExpression("/a//{isPropertyPath} - /a/b.c"), - predLib); + auto eval = MatchEval { + SdfPathExpression("/a//{isPropertyPath} - /a/b.c") }; TF_AXIOM(!eval.Match(SdfPath("/a"))); TF_AXIOM(eval.Match(SdfPath("/a.b"))); @@ -204,8 +202,7 @@ TestBasics() TF_AXIOM(!composed.ContainsExpressionReferences()); TF_AXIOM(composed.IsComplete()); - auto eval = SdfMakePathExpressionEval( - composed, predLib); + auto eval = MatchEval { composed }; TF_AXIOM(eval.Match(SdfPath("/a"))); TF_AXIOM(eval.Match(SdfPath("/b"))); @@ -239,8 +236,7 @@ TestBasics() TF_AXIOM(resolved.IsComplete()); // Resolved should be "/a /weaker /foo// - /foo/bar//" - auto eval = SdfMakePathExpressionEval( - resolved, predLib); + auto eval = MatchEval { resolved }; TF_AXIOM(eval.Match(SdfPath("/a"))); TF_AXIOM(eval.Match(SdfPath("/weaker"))); @@ -262,7 +258,7 @@ TestBasics() TF_AXIOM(abs.IsAbsolute()); TF_AXIOM(abs.IsComplete()); - auto eval = SdfMakePathExpressionEval(abs, predLib); + auto eval = MatchEval { abs }; TF_AXIOM(eval.Match(SdfPath("/World/test/foo"))); TF_AXIOM(!eval.Match(SdfPath("/World/test/bar"))); @@ -275,8 +271,7 @@ TestBasics() SdfPathExpression home = abs.ReplacePrefix(SdfPath("/World"), SdfPath("/Home")); - auto eval = - SdfMakePathExpressionEval(home, predLib); + auto eval = MatchEval { home }; TF_AXIOM(eval.Match(SdfPath("/Home/test/foo"))); TF_AXIOM(!eval.Match(SdfPath("/Home/test/bar"))); @@ -287,10 +282,133 @@ TestBasics() } } + +static void +TestSearch() +{ + // Super simple predicate library for paths for testing. + auto predLib = SdfPredicateLibrary() + .Define("isPrimPath", [](SdfPath const &p) { + return p.IsPrimPath(); + }) + .Define("isPropertyPath", [](SdfPath const &p) { + return p.IsPropertyPath(); + }) + ; + + // Paths must follow a depth-first traversal order. + SdfPathVector paths; + for (char const *pathStr: { + "/", + "/World", + "/World/anim", + "/World/anim/chars", + "/World/anim/chars/Mike", + "/World/anim/chars/Mike/geom", + "/World/anim/chars/Mike/geom/body_sbdv", + "/World/anim/chars/Mike/geom/body_sbdv.points", + "/World/anim/chars/Sully", + "/World/anim/chars/Sully/geom", + "/World/anim/chars/Sully/geom/body_sbdv", + "/World/anim/chars/Sully/geom/body_sbdv.points", + "/World/anim/sets", + "/World/anim/sets/Bedroom", + "/World/anim/sets/Bedroom/Furniture", + "/World/anim/sets/Bedroom/Furniture/Bed", + "/World/anim/sets/Bedroom/Furniture/Desk", + "/World/anim/sets/Bedroom/Furniture/Chair" + }) { + paths.push_back(SdfPath(pathStr)); + } + + { + auto eval = SdfMakePathExpressionEval( + SdfPathExpression("//geom/body_sbdv"), predLib); + auto search = eval.MakeIncrementalSearcher( + PathIdentity {}, PathIdentity {}); + for (SdfPath const &p: paths) { + if (search.Next(p)) { + TF_AXIOM( + p == SdfPath("/World/anim/chars/Mike/geom/body_sbdv") || + p == SdfPath("/World/anim/chars/Sully/geom/body_sbdv")); + } + } + } + + { + auto eval = SdfMakePathExpressionEval( + SdfPathExpression("//chars//"), predLib); + auto search = eval.MakeIncrementalSearcher( + PathIdentity {}, PathIdentity {}); + int count = 0; + for (SdfPath const &p: paths) { + count += search.Next(p) ? 1 : 0; + } + TF_AXIOM(count == 9); + } + + { + auto eval = SdfMakePathExpressionEval( + SdfPathExpression("//{isPropertyPath}"), predLib); + auto search = eval.MakeIncrementalSearcher( + PathIdentity {}, PathIdentity {}); + int count = 0; + for (SdfPath const &p: paths) { + count += search.Next(p) ? 1 : 0; + } + TF_AXIOM(count == 2); + } + + { + auto eval = SdfMakePathExpressionEval( + SdfPathExpression("//chars/*/geom/body_sbdv " + "//Bed"), predLib); + auto search = eval.MakeIncrementalSearcher( + PathIdentity {}, PathIdentity {}); + for (SdfPath const &p: paths) { + if (search.Next(p)) { + TF_AXIOM( + p == SdfPath("/World/anim/chars/Mike/geom/body_sbdv") || + p == SdfPath("/World/anim/chars/Sully/geom/body_sbdv") || + p == SdfPath("/World/anim/sets/Bedroom/Furniture/Bed")); + } + } + } + + { + auto eval = SdfMakePathExpressionEval( + SdfPathExpression("//*sbdv"), predLib); + auto search = eval.MakeIncrementalSearcher( + PathIdentity {}, PathIdentity {}); + for (SdfPath const &p: paths) { + if (search.Next(p)) { + TF_AXIOM( + p == SdfPath("/World/anim/chars/Mike/geom/body_sbdv") || + p == SdfPath("/World/anim/chars/Sully/geom/body_sbdv")); + } + } + } + { + auto eval = SdfMakePathExpressionEval( + SdfPathExpression("/World//chars//geom/*sbdv"), predLib); + auto search = eval.MakeIncrementalSearcher( + PathIdentity {}, PathIdentity {}); + for (SdfPath const &p: paths) { + if (search.Next(p)) { + TF_AXIOM( + p == SdfPath("/World/anim/chars/Mike/geom/body_sbdv") || + p == SdfPath("/World/anim/chars/Sully/geom/body_sbdv")); + } + } + } +} + + int main(int argc, char **argv) { TestBasics(); + TestSearch(); printf(">>> Test SUCCEEDED\n"); return 0; diff --git a/pxr/usd/sdf/testenv/testSdfPredicateExpression.cpp b/pxr/usd/sdf/testenv/testSdfPredicateExpression.cpp index 4956710666..5dbe9b7c99 100644 --- a/pxr/usd/sdf/testenv/testSdfPredicateExpression.cpp +++ b/pxr/usd/sdf/testenv/testSdfPredicateExpression.cpp @@ -22,16 +22,37 @@ // language governing permissions and limitations under the Apache License. // #include "pxr/pxr.h" +#include "pxr/base/arch/regex.h" #include "pxr/base/tf/errorMark.h" #include "pxr/usd/sdf/predicateExpression.h" #include "pxr/usd/sdf/predicateLibrary.h" #include "pxr/usd/sdf/predicateProgram.h" +#include + PXR_NAMESPACE_USING_DIRECTIVE static void TestSimple() { + using FnArgs = std::vector; + + { + // Check simple GetText() cases. + TF_AXIOM(SdfPredicateExpression( + "a and b or c").GetText() == "a and b or c"); + TF_AXIOM(SdfPredicateExpression( + "a or b and c").GetText() == "a or b and c"); + TF_AXIOM(SdfPredicateExpression( + "(a or b) and c").GetText() == "(a or b) and c"); + TF_AXIOM(SdfPredicateExpression( + "a and (b or c)").GetText() == "a and (b or c)"); + TF_AXIOM(SdfPredicateExpression( + "(a and b) or c").GetText() == "a and b or c"); + TF_AXIOM(SdfPredicateExpression( + "a or (b and c)").GetText() == "a or b and c"); + } + auto predLib = SdfPredicateLibrary() .Define("allVowels", [](std::string const &str) { return str.find_first_not_of("aeiouAEIOU") == str.npos; @@ -54,13 +75,89 @@ TestSimple() return TfStringContains(str, subString); }, {{"subString"}} ) + .Define("arbArgs", + [](std::string const &str, int number, + std::vector const &arbArgs) { + printf("number = %d\n", number); + for (auto const &arg: arbArgs) { + printf("%s = %s\n", arg.argName.c_str(), + TfStringify(arg.value).c_str()); + } + return true; + }, {{"number"}}) + // A custom binder that caches a prebuilt regex. + .DefineBinder("matches", [](FnArgs const &args) { + // Accept a single argument, optionally named "pattern", must be a + // string. + typename SdfPredicateLibrary< + std::string const &>::PredicateFunction ret; + bool validArg = args.size() == 1 && + (args[0].argName.empty() || args[0].argName == "pattern") && + args[0].value.IsHolding(); + if (!validArg) { + return ret; + } + // Try to compile an ArchRegex for the pattern. + ArchRegex regex(args[0].value.UncheckedGet()); + if (!regex) { + // Failed to compile regex. XXX: issue error. + return ret; + } + // std::function requires the target be copyable, but alas ArchRegex + // is noncopyable. So we wrap it in a shared_ptr to get around the + // problem. + auto sharedRegex = std::make_shared(std::move(regex)); + ret = [sharedRegex](std::string const &str) { + return SdfPredicateFunctionResult(sharedRegex->Match(str)); + }; + return ret; + }) ; - + { // Ensure copyability. auto predLibCopy = predLib; } + { + auto test = SdfLinkPredicateExpression( + SdfPredicateExpression("matches(\"foo.*bar\")"), predLib); + TF_AXIOM(test("foobar")); + TF_AXIOM(test("fooXbar")); + TF_AXIOM(test("fooXYZbar")); + TF_AXIOM(test("foo...bar")); + TF_AXIOM(test("foo bar")); + TF_AXIOM(!test("fobar")); + TF_AXIOM(!test("foobaar")); + } + + { + auto test = SdfLinkPredicateExpression( + SdfPredicateExpression("matches:foo.bar"), predLib); + TF_AXIOM(test("foo_bar")); + TF_AXIOM(test("fooXbar")); + TF_AXIOM(!test("fooXYZbar")); + TF_AXIOM(test("foo.bar")); + TF_AXIOM(test("foo bar")); + TF_AXIOM(!test("fobar")); + TF_AXIOM(!test("foobaar")); + } + + { + auto test = SdfLinkPredicateExpression( + SdfPredicateExpression("arbArgs:2,extra,arguments"), + predLib); + TF_AXIOM(test("fooBar")); + } + + { + auto test = SdfLinkPredicateExpression( + SdfPredicateExpression( + "arbArgs(2, extra=123, named=\"foobar\", arguments=456)"), + predLib); + TF_AXIOM(test("fooBar")); + } + // Link some expressions with predLib to produce programs, and run some // simple tests. { @@ -183,7 +280,7 @@ TestSimple() { auto test = SdfLinkPredicateExpression( - SdfPredicateExpression("contains:\\\""), predLib); + SdfPredicateExpression("contains:'\"'"), predLib); TF_AXIOM(test("contains \"quotes\"")); TF_AXIOM(!test("no ''quotes'' here")); diff --git a/pxr/usd/sdf/wrapPathExpression.cpp b/pxr/usd/sdf/wrapPathExpression.cpp index 9317a81141..80066a382b 100644 --- a/pxr/usd/sdf/wrapPathExpression.cpp +++ b/pxr/usd/sdf/wrapPathExpression.cpp @@ -25,6 +25,8 @@ #include "pxr/pxr.h" #include "pxr/base/tf/pySignatureExt.h" // wrap lvalue-ref-qualified mem fns. + +#include "pxr/base/vt/valueFromPython.h" #include "pxr/base/tf/pyEnum.h" #include "pxr/base/tf/pyFunction.h" @@ -46,6 +48,28 @@ using PathExpr = SdfPathExpression; using ExpressionReference = PathExpr::ExpressionReference; using PathPattern = PathExpr::PathPattern; +static std::string +_Repr(SdfPathExpression const &self) { + if (!self) { + return TF_PY_REPR_PREFIX + "PathExpression()"; + } + else { + return std::string(TF_PY_REPR_PREFIX + "PathExpression(") + + TfPyRepr(self.GetText()) + ")"; + } +} + +static std::string +_PatternRepr(SdfPathExpression::PathPattern const &self) { + if (!self) { + return TF_PY_REPR_PREFIX + "PathExpression.PathPattern()"; + } + else { + return std::string(TF_PY_REPR_PREFIX + "PathExpression.PathPattern(") + + TfPyRepr(self.GetText()) + ")"; + } +} + void wrapPathExpression() { // For ResolveReferences. @@ -60,8 +84,40 @@ void wrapPathExpression() .def(init()) .def(init>( args("patternString", "parseContext"))) - - .def("GetDebugString", &PathExpr::GetDebugString) + + .def("Everything", &PathExpr::Everything, + return_value_policy()) + .staticmethod("Everything") + + .def("Nothing", &PathExpr::Nothing, + return_value_policy()) + .staticmethod("Nothing") + + .def("WeakerRef", &PathExpr::WeakerRef, + return_value_policy()) + .staticmethod("WeakerRef") + + .def("MakeComplement", + +[](PathExpr const &r) { + return PathExpr::MakeComplement(r); + }, arg("right")) + .staticmethod("MakeComplement") + + .def("MakeOp", + +[](PathExpr::Op op, PathExpr const &l, PathExpr const &r) { + return PathExpr::MakeOp(op, l, r); + }, (arg("op"), arg("left"), arg("right"))) + .staticmethod("MakeOp") + + .def("MakeAtom", + +[](PathExpr::ExpressionReference const &ref) { + return PathExpr::MakeAtom(ref); + }, (arg("ref"))) + .def("MakeAtom", + +[](PathExpr::PathPattern const &pat) { + return PathExpr::MakeAtom(pat); + }, (arg("pattern"))) + .staticmethod("MakeAtom") .def("ReplacePrefix", +[](PathExpr const &self, @@ -97,8 +153,17 @@ void wrapPathExpression() return self.Walk(logic, ref, pattern); }, (arg("logic"), arg("ref"), arg("pattern"))) - .def("__bool__", &SdfPathExpression::operator bool) + .def("GetText", &PathExpr::GetText) + + .def("IsEmpty", &PathExpr::IsEmpty) + + .def("__bool__", &PathExpr::operator bool) + .def("__repr__", _Repr) + .def("__hash__", +[](PathExpr const &e) { return TfHash{}(e); }) + .def(self == self) + .def(self != self) ; + VtValueFromPython(); TfPyWrapEnum(); @@ -121,13 +186,25 @@ void wrapPathExpression() +[](PathPattern &self, SdfPath const &prefix) { self.SetPrefix(prefix); }, (arg("prefix"))) - .def("GetDebugString", &PathPattern::GetDebugString) + .def("GetText", &PathPattern::GetText) .def("__bool__", &PathPattern::operator bool) + .def("__repr__", &_PatternRepr) + .def("__hash__", +[](PathPattern const &p) { return TfHash{}(p); }) + .def(self == self) + .def(self != self) ; + VtValueFromPython(); class_("ExpressionReference") .def_readwrite("path", &ExpressionReference::path) .def_readwrite("name", &ExpressionReference::name) + .def("__hash__", + +[](ExpressionReference const &r) { return TfHash{}(r); }) + .def(self == self) + .def(self != self) + .def("Weaker", &ExpressionReference::Weaker, + return_value_policy()) + .staticmethod("Weaker") ; - + VtValueFromPython(); } From 68dec0dff7791b74fbbc679bed3350e897c4bcb8 Mon Sep 17 00:00:00 2001 From: clach Date: Tue, 25 Jul 2023 16:10:10 -0700 Subject: [PATCH 114/352] [hdSt] Emit scalar accessor for primvar redirects even if primvar shares name with shader parameter. Adds usdImagingGL test for this. (Internal change: 2286347) --- pxr/imaging/hdSt/codeGen.cpp | 10 +- .../testPreviewSurfaceConnectedScalar.png | Bin 0 -> 21635 bytes .../testPreviewSurfaceConnectedScalar.usda | 102 ++++++++++++++++++ 3 files changed, 107 insertions(+), 5 deletions(-) create mode 100644 pxr/usdImaging/usdImagingGL/testenv/testUsdImagingGLPreviewSurface/baseline/testPreviewSurfaceConnectedScalar.png create mode 100644 pxr/usdImaging/usdImagingGL/testenv/testUsdImagingGLPreviewSurface/testPreviewSurfaceConnectedScalar.usda diff --git a/pxr/imaging/hdSt/codeGen.cpp b/pxr/imaging/hdSt/codeGen.cpp index 2735870c15..2dbbc86c60 100644 --- a/pxr/imaging/hdSt/codeGen.cpp +++ b/pxr/imaging/hdSt/codeGen.cpp @@ -6369,6 +6369,11 @@ HdSt_CodeGen::_GenerateShaderParameters(bool bindlessTextureEnabled) << "\n}\n" << "#define HD_HAS_" << it->second.name << " 1\n"; + if (it->second.name == it->second.inPrimvars[0]) { + accessors + << "#endif\n"; + } + // Emit scalar accessors to support shading languages like MSL which // do not support swizzle operators on scalar values. if (_GetNumComponents(it->second.dataType) <= 4) { @@ -6380,11 +6385,6 @@ HdSt_CodeGen::_GenerateShaderParameters(bool bindlessTextureEnabled) << "; }\n"; } - if (it->second.name == it->second.inPrimvars[0]) { - accessors - << "#endif\n"; - } - } else if (bindingType == HdStBinding::TRANSFORM_2D) { // Forward declare rotation, scale, and translation diff --git a/pxr/usdImaging/usdImagingGL/testenv/testUsdImagingGLPreviewSurface/baseline/testPreviewSurfaceConnectedScalar.png b/pxr/usdImaging/usdImagingGL/testenv/testUsdImagingGLPreviewSurface/baseline/testPreviewSurfaceConnectedScalar.png new file mode 100644 index 0000000000000000000000000000000000000000..753c7d7f60e385c20328ce3ac06d275c30db4d12 GIT binary patch literal 21635 zcmeHvdsLHGvv=+ZxpF5YK!Q;~0SWhuToS;5s2D3kREi0pf+Au{RVYd>Btaw)Dk3P_ zAP88|21+UTdIbnYFX_p8d?8 zncvKwImnEU!5|4p004kl5gYv#0080v0Kj1c%tZ0mJ<?5dZ$DHfIy0f9lNf82-OKDr`XY7^TiSf&i*_rvCQ_dX66bKS=*MqBM$~3(4`z zEB|6H1d6YN4QG5$`eLFvGU3blP0P9EObr1A9lIP8#rA_R{`;dyq|5;4_+9^Uo;fn+ z-?^My4f>@y-Vx}q`pJK;^}kqBMY7w0LC5r8&ND}b{g0XdwGi<)h|)4ZS>v03+cncG z$C>&N;IMk)%X#L=;4jGpkUAK`hylb5zW?$ADa`RZ0c9>9zMRKIZv6L;_IcEZ1E`+D zs~`RD-!{$k%0iR|0AdbLe>sndJovxJhgg||?bpA4Q9K|FBCmeMfiLGV zku(4On|&S?BvBd=!x>XfUxEs4x!|=8@@Vz&Z~V=AptoRG5bf^KrMi zIN1M9sK7!fN_!_W5X#8mY2jw{OJ23jlAO`*HR4&?yXA6xtbvq}oWz#`d*ZpnTP9J~ z;MSYGREqOLItQYXpR}?H$~xea3=-ciY<@{^ccOZb{gw%xWuL6vws}XY;MQn6-Utv$ zVUXcP^bzpNmE^qr&^0PAph4oGzSuH*`SY1s75u{X1Y`)mge zZ%gByK3#!lxbiX$mhB#(CTAud_@Pv5J|JndW8z0a>g@}~I(zm$Ufqy7;FG;tjc&{c7$n zpvJncSWHADCwf&7zmLKSl9nOM`c2_{@Zh>5d|FkwHrgi;2vUh=rwg|f&B4DhdQv{hxv3%6r(V`aHQkhtHnxbEe(8nQq zX3Cp(3zPGNDuhXf#N>?j9nIp~e(Xseqs#>ht?lhawPNjq$&x+# zveBF!RNw!%-XKnF{ zBm<_q&N{ySuh70oURO8&SB{^#q!7U)_N{HR;d5XfbC`Q9`XSn9;2N_n_(a+ zdZa_x*L6w53S+d}*Zlra)FTMsVV0lu1iodr@F$KibOQdSIdw(UST1yRIhvIr8(PUG zTmYacd%^MIZY<5QrAFIJI)5fbf6KNbS9mTzyRcia4fJ;)^S@KoEXU$PXvW*rtw6%Osr(noAMCu-30a!x)l3nCx{ zIte>15Xc|wS%kvQ5UfTTk{iICluJ;hng=Q-W=!-H{YkbU;@UScyM|4l$pa$QfVIg4!>FyaPDAeSlQ3s;GNT) zmCH&qMumJ@R1P%|L?7{W%&a%(Zgafkp|VfR7(F<|MTKqQt1_=$eS?;N+xLCFlqMcQ zni5HBzpXEU?paz5so9*qYkFi!EQikDxzR2u%KYd?*7CA=TrYziu6XKlXEJIjS%+F_ zq$;Z##za=JVIH-xw8>Qv$D6?9+r5}vw~h)#7KX6zD*CLfg5a%K%&E)~1Y~QM;S3zJ z?@3uwnzrWKgC;4;Fybzr#GKIy)@~5$WzXvhV0y9Bc`=$oxn+s64v;a1y~HFXW0)QC zou!FQzTd<(0mai@bIj(Lrf#HD3Qs6AH>a9J;76-0DIrT5!W`qA zZRc#~Olb1g@Nn^4)A4AV1gG|KNvI|N+^?APrP@Jc6_WVi3H7-~2I%x!RW4C?00prxbz)TTn`<|mw5gD{kF+aBJ1_}AB^RP0=3sB%~bnZLo)%BrO z6%l%c>LCCU;?Ut_+0|Nlkzx5Nu$>zD&Z~neFiArF^$7S1ius++nzFPg@S`{KFkFE{I{W(4YM z8+Ne+90Q^gmov&sIQTuhgB)x0Kg_G)VWoD*uPJQAETUVil*qhVn(|=ysqj_LJq>;D zjc7UXIPcQ$eDw4;+Q-KX*-BdmwUB@J>6uDSeUN5E=-{G(F69O}{{xu7Tx0TGihx*> z?06&iG4R-}o}{(YF{GXRalT(CUER~8gj_A95nROIej+h(=W~Ev@O$QfZ?j#nf-zth za6iGy_NZY7AaTA^=$46HnGZ_3r+KR3l-@+QN25!8ne~S_JYX|F)PAUwf7LO6h>fAh zPt68V!3ni|L|*zYXcoZWQq={n71Op1M`xH^4PtuXsgE_lH9;JAVXJ6y{yv{!z+2rT z4HYR~K9`G?Y>0%NXeckh*tNYM^A8_}!oE_M1CyW-|H|q}SfY}>BjIN6AoFxgyF9Q` z_eq$-7JL#USO^I|!(xoDFSwZ_JU1TWRw_fWb0gm4awd&Yw_Bs0>^+o{Nx3#&sP84U zjKI;Pt+uu>Dy*%BHUi!0AW)$j;lUTz_CvVrQFxvo=1y$*%&?uB29!N+a^m$qz~k|) zdb9Ms&M(7QAp(Cy_aBPq%UEgn6O1;L`i*uBzPhyy^i$QJq+uAg#Y(utXtu*Cs$>_e zJ?CoUN#M#M^`M(y=*+X&g>PY<9AEhL16kS8@4fsdJ5`5(D?8N_#MtcDWJ8WgS^xOi zm8f3S+@)lI>r}Q?I&Y*^#v;g%@(mA$@IgVr_B6ld-QYyj*a(OIur+uD2-AhiTjyn#1bVs@q*eb%VZX>1nsFV(}y#rsnM zM4r6YW{L|md5$;jVx<;}CtAWDMK3kzFS37w?vNXc&{I`jF=*}fx)IBE1>K>AkIOn? zAsubSLv14bx1D_?*<>xSFHN(B#GPttymH+i6?T(9@$ivutx5C2=9GXNgMNRp#m1NX zpJ}|rAh{S5=;b9m`fFfRR2oHC+TsEBRe-iB2PdN!%%7g^v;BiHXq!MIze4}1vcW>;}dpEKn zW%ZDO#C?WKS|ojnGZ<`93X6I)`uMT>82h$>ovG9Se`tBtg22l0^$7-!@FaScVwOAD zr40kETDgsf515iTFd*)3?F@33pS|B#eOL!is1%?g6gISYE-!c0S19=!m7HO7fjB0@ z#4Sf-C@pzrm%PzN2XBlM3r`MoqrC=S9nk{~(L93Y8V{2$o|RQoT(W4}hdH1-5*0k( zylX^|A|CM=)T(g71+uq89w9HijXt;sUl;W`>)VaEHB;o%ExmRTnh!hP8QjR~oVkn* z$MU$ZuJOS5mW(W@`>L>J?Y{AeMPT*lAUcLXz~8D3yD|3hHc4El1lez@JM>j69hDim zM~w`^hly_4-0^7MuR!u--&Lq#PB3K&!FnnB%@beh#RE5UUcUZXy!lF@@AOrRc+FOJ z8s#6ruoZg-gA4NI>#itt5wP|+SkgYu*`n?v0dA{!lW(pRqGxINKFR6D$(e{GsMsM~ z&cJ3=wjVCDnOw_$HW_4AUpTv>xnZ_j1@rX!r2hU_g$Tz@=IiMgnt9`1SI`gp6%#K> zwh=Sep5C5K{}KFW)Qxh(2XyZb%dd%V0@+hFf&^IiBc9g}BktQcBgHLZb7HWA_GWL@ z6;2+u^2t_d8OR51Hy5ykd7BZ=1*5_@iuk}TYImZXeYSxE^=KZSKn)FjH#zAYr8tC& z+Pem)-oysKy#M6Nm>AO$N!&D2bi*lG3eT5qItArl>NkOA9#FkHWs3C;mIF0+tZq>mX$e(^IDUFU%1 zc^^G#<7H=teyEB^^fG@iI-lR@h3yS>m7S_ z6(#;jIR+BljquxD@l16!>F|Vf51B^O)Kn(1sDA(>B&%$oY1@15B#`2g=R#!TR=t zo~!GcPN;K#Y^P(Cg_`G}GFbRMs^CSG;y^~dUDze(d9NwoUD^ZMwXgaQK;bvcsYaxJcD-=r`>b1Lw{%(IG*5^ItaA>#oRqNkRSWBiQx{Rbp(toncn{YB@Ho`Z!j2Z=G&&=}gpL-7n+!UFaTY<~KRZ z9o&*>>z)ngfXW~Oa$xXUN{tpgE zYm?#Xg?C+!A0YZR6Au*c>_Pp^f?eswXsIU(6{7S5iSI1gf zf#_8PXdFE7U2*)8b;N;(3$u2|yY;gVz$G|p7ESu}iME0^q#?D`P1|i!!&cTRmpB=b zh#DN%E=*-GfA|$D>&Oyr!OXRzy}X%O)asRPBQP7u>iXHJ?PDWx?n5d>@cEg+*4n7| zzC%0r5xBFufryY<(y`xXArq*MX^Gb(Hn+)XU}n_{rv0_j*9Y`%V967N*rJZQ@KmXD zz!l-6$Z|z09_oh!R_UltQ_j3|W7~?h?vuS?|5?xevr6U;u6D?W0)4F-NJOHGI0d-C zE`b`*0U~~l)t3pCeRt`6=~fHSk^=hj&}M*Gge%=D5Ze{wQiYEs4%vzvh-9!ZBZFQp z;vei*L2Rou1-Y}QBvz|DFON0sjr&wyC6+x#pl~@j%LF=D4Z7@t)4(@BgP!U(Gek_v z)Ax1K+;bIq%mDD6^RuzsPQq~w=b%Hcytl>?Gl=t;))5oQ;k|@tCV}sG4ssWPC1niB zB{melTJ{L?MdaU~B#nWcn=8~f+iWHwtbc~Gh@f%v!QDKpa~{s{M`8DRKUFwxN)bvd zm^g|bTJ{D8yH5Ft>v)D=^a@Y*rJyrjcUR5Mcx&P0-!NVh-b`BLvh64r_%}A))Ks2B zEEW|ATR2nb_A$cAOZC<@0n@fjcjNTB`W*m!F?bHK3R$6M{iXdGHKa;T1<_xjvb+S? z8r}B_osp#n0Z(AgmKJ9Mp8m0)a%hl32(l+1>5gbnL@qVbIY5*z4A%1(R$~(J1F=%O zuT+1KzF!v05fU`-{IZ96jc+DpkKl*wvN*h-B2#((Gm2=BpcXB`d)QcXnj>@yH((s} z#+Y)yqEJxrYun^^6p2+Qw|4+h)D$?h;jjtX!(h>r7ZFuCbKGNJxTF(aEX`j96b`tZ z5BeynY|^Srs(Ud(rP=`-%6TKyX13g64=teWH!U%U9L!YrmWuOUk=sWgKNGu3XC#$N z*`s{sWugB&g>JH+t+dM4Y_ad?jK;1LucbDaZYm=86}z&T&v2XS*0kXFA(0!YmIH6? zRzKdn;BSj(RZntD-~~slyk8f6sHx2P7{dwbUUEp7`^UGGz}E+{UJbqQI6S|nf||7f z$avVT+t+Qk$8bUh&SklpwSl*KNmSf2cLP7K$xA9&7)h z5`VCIe86}nxjH1Z&nDf!b7d11A`V(2OAZPz?5lj3w?q1KD zT+(m*R_u@8q%+O{U-Hx$|RpEG8VDUut7$U)1Y zauz|L$+W&4T*OrKc%d!T^?!%_24>wGnxRlUEq>F0YcMM}4fQSh>g_VHBOoBKu3=H= z2O#CmFygl>36?Q?-P@MM5P9e*r_y*JZrly>_*XM`2q%U9Lx3{ilHkT~vvrn388Uo8 z>FI7B&aw&Yrb$Q_K!5KCvL_ zlqPY(wPjpWU>mUzep~<=<)6EsO4|f}Pr6Q{5?MNDiDR2%j~K^=Zdob$yYM3)-&<%>TpEn%r|N0c zcCBC#H!!uqI1O8O$n&C-1N|F9ak_1a(io{zk{9vJykjxXXo4g6$?w%F7^N_35YwUH zi+~z0a$ag2E(>Y%;A*^Gc5mvD)^&7TJt&+!@M!m(h_*`Aj zBil8Q-xap!(0;1sY-hhvWh6@@i~`$x3R*UseCShCRHzc^lRmrPBRsKMWzxx1mEG3K zB@RYKWcDL-q^q8K>hGxtEzCjd9ZW{I*}ceyd1QhYN>VS5j^5*S?y!X$mKMn8y@L49u%(X10w9W{2vYdKccv&4H>4HW^A#$DuY)v#WfJ{t z*2NHQ-GEqR##KY~ds%7lS8(Pt(hvf2P_4rD!bU09i5d((mFTOuD6W0UBm~d`p9gFA z94-YbtdN97%dx2Hk2)fEY==>%GP7kEw%Bwq$ZcJQQFKx`ed#srTW9VDh&u_-=$4so zIKzg`*C?x$Aji{e(GvqgxEA*ErBr*fAY@oSd#j+`IZ&o^C+kZPy$l=?|3k`k>w8Rq&Lble z_`*vcN30)6rDdJukeyFBUjyeifx2`O_gd3w{B{bM2T#97H#EAl9#PZAUGrJqbYkeF z3Y8S{vD|%)WyW;33KJZkd7_Mc!kSeBxv_>yxR(QHa`uqYSkFvBra#IO^*-oJ95s(J z%~2`F)OTxmjxolg@il1EHg3=;dHa91k99aHmQ$W9zE%|x`ifK~6`HZgr9UW+Jgzcb z2SG(n08}*l>vG^qWLlT z*gZ%c740I=Qg$Yyivu3mwWbMamTs2?F%Li%o6I)D=b{Rhs2?5^ z#G45RP~K8|RvKW@emW7V$%OYZUgvbHknQ8Vlu@`ozWR~@L#y6Q%N7NK_<|n4>{v4| zJyrO8y}i2B(f`>xla3zm;AzF!irl1c?iVbI;=GcADI^&*or3i@9 zb8ErwxucHL3JZknl3^w)`wrQz){q4=Im9KCziOLE{@KxRrxPg6;h&!X z`RB-p-a`YR4kW_XuN1Pt_CY9X$XQ}mD*fHO$0ptw7o#z4a;LzQ+qqqLEs#6OSAn~n z5$BtA_hKz4z`c1qba9$gA+qu)H^qJn@dh02U40;cGYYaz9HR>24-0$Ns!D(#AMDXw zrpND?)m=PzGP{E4H>UoTpHF+*qMVd}8y@whf%obY>RaEAP+_tQe;TyIPd#Y)RhsPk zUXsUDQM2u*Vh_eFVl~@v7Axvc>I{PpQf9aj8OIi zuB(SM(#x}2mDShSu1M8gKr}8t-;Ya^K7SS~-I89|y@Z5cowcvKpVrhWvNN60Rp_wV z88q`D4VsF~Yw8;VU^L+??V)X{2!wBfX!HZaP{kH0l z6`9pR`Dry~wJh?|7&EUS!*F5oqr!GY(fBOo`7*tq$RS>F3)=!@y-}__Y7H%c4`rt@ z@pXZ#XxTCGF=Gtu!vxn0;jAEwxE-A;v{Qig%r|(_J!ZgZb+c`UU&%Qj;w^>Ca&B^# z1qBtz>-%QwMqy$7G>fv6B>UYBi>s*~)3O_jSWz~Kj18snvp#6}XO!BC=u;H7PJ$CH zyq&LmTaIqlM_O;ihDaZoNADU^E^#voz==HhGGPiOxk}kPVG)X<=_747jU05JM2PJ2 zC)v;HB{pp}M%EM91Tm`!l(2g?>a7PiU(iY)HS6h347Q5fu9;CEt&*9Xt6XSY3^{Pd zQ8|tJ2K>r=kFnQVb54`0=(Bebd+z7_79>2`L7QTa;7~;UwAdkq9B^rwr9z6O?iHxa z^m}DjIHS<2t%}o>p#)dTLxagYj=0}Yi0p%swS+=NDEyQ?Jjm1er8Db7uWh(yi*@ZM z68ASOrAkb0`!&|gSN52^S2)thacz!_kfD z-&EW+86d-U?M;FP5R*+aM|ves=*4y|)a8xiUBKYlSEB(?^oHNSJCZAoH?pU+L`u;B z?lLtJySMry+vXD3(Y*m?h$XZLqOtCgA7GnK(y{JYBhocE@66HLfTKALdP=1cxV?pb z-%$7Qus#P?BTTmq2((!?rd`xP$SLi4dg!~X=kED<-dloS{|sl`-Fr*O`OZj-+1bMO zyVO;m^RVaz12EQyBS4f5la5m>GD&#S=3bYMwwOTh2GUYr*g~w`7MGHSdmk1H)?e8!{2WCf_33%|oj`T8)GSm&$I&1fceR zO}sRK%ij$&C8ZyolECu|o}s*wxkWuXHNFOS;Ul4^X&d3kYXdUVsn0L4T)(uNuq##? z)WQ)oyv7}K%Kdvt)h~`eQJn99SFjxa_6auL}#_+DtmVsLf2?1Mswuf~TH8f;x~gOXK3Bntl- z@+3D8BeyWigSvT#vn$3-c|zcxCU?zOSt9_e7%ZHtMg@Clznjop;<84{oy^~YA$V&@ z^{8#Qyf>0E7j)eq_g^qMjX}A7rADQ@cx1Jnb~pM#SH_TkQS?GQXtdWm<%3fJvJ>Qw zcz!0LC@+S7g(Z za5(V+snD#*EIiMc`xbs^1G#l`2H%faU#Ph?DSB})f;DLvU%iUOxpA~pHR`o-TB*t; zo77yWw05)h6W=p}{E-xP!Z|Qb(W?7PFkbOCv>3DTcH-)nKE=!$iRU?UOSKKGNCjJp z+dk&ZG3J2AM;|k{nozB&%*sN^sZ`Sb>>z(dcG8?q18pn~e^gv$XJ!2{ z2K8>P8=(RQ&1U74ApJXetJF_v@;HL(Bo;oiUS+gX?=_fyd&OGXP&4Lo1vHu4$;i;& zt#6_jbLgZ?AIhy0jZUAUuq5MJhx9`J9S+K_I_N^^Wt~SBWwYT(h=)nmKY+h|^$FAp zT>Lyo%Ka3@#ay0_$!68PT&*{m-3nprw!yq2#~1qx>Uo+`F!8u7l>0Dh&88wf?T_8x z`n+3+@GTXXV%H|`MD5{!9}ojHT?0@!Ih4ZI6BH>_F1MX!f;?c@F8N2yrHiVo zG500mr=Z`%cglYz$^XvksobxTdS`LO9%9cYrUXzyp7laW@-F2cma=^q$D}~Ck5O-e)pt}qbd$@w%d)1te`Za3HTI5yq{=Hrf2@1yYUyiP z{QKcvyA;KkDF>!Wo%|Og0x3u}fSJ-@rVw^rqo}YJ_7Rgd!gTogo8(I|20VA8C!hq( zb=Ul53Uh@O$Ubxqm<*aY<%|gr$6|w9-r>fIF|GB*2_{24Y z2BS2@UeW%f&^cF4Ijr@cb66a~*63ru7uh&ypl0XAD6X?G z*^Sp@N{Y`M#+S)^pU|W;&Vf0!_ZPw^$BqIo@s{II1rwdfjV8pAsw(-Nn3l7g)RB3s zFt$Xe7FCTS_1=$ln#9_I z!Bb-Uu@WzwE=k)4`#TeJ>VABN$E&*H< zhM&7lB+vgR1E&P59NT<7E{>f5c0Hvn4Z1#RqcSR&Waw3rO11-98d3e76}r>368;c@ z+90;c58|s1RVoOpMucYtsw3xRR}W$WjlCpOj-2p-i(eSCmWK_8J@-$}19W){Zn?OU zR7jTmoN%2{-znUaT=HR8@hx zW$zTD999jqZJQ#O5%ZhL>6$COr6nVHjZIp27bbtq?#C0A0_!f>(!U46l|jq06NT)m>S4)g#!tXE=R$RvsoPp!;5qi>ueu8rS;sWf7H0O-t-4%!Ih*t>7>VPiF%AfXOMR*%8tC1#tSiBm3<`faSdrL>Kb zK_-HJP|m}m+Z zolePdOIW2ypqh{PRjRg;m$=1Fj`^TPIz)2)>-MEv7=v2vu4!k}b%h&ywcD}{YuE7y zbcXEBVhb>SHZXQ(8y-q=fza+J`8!Sa1OCxlQsqR7J7Sq1q@~n~=VAk>+^>_tR8QR! zj6ZE}2G*FpoBJv7n0QR$aH;Qn?R+Y)r8Ge{gAiF@#7K^F2BNYw|4M&Ig zTFmz>pz#qmwozI=20K(Aylp;h$Bh<6jg(E9ZRW)sQdf zrm|mk(C6al!}G<_y7}Vh`C9z>TKvy?XTJ5rmmMK6{Q1@oVhxyhICNnYLX~da2 z-`M7}yFK6fVZQal|IK=?`94bXZM){%c75(nH{T_0zDpd2Z!zB`?sKog`KE;PO$q-$ f^}s9=0RSV#i&AGFvTRJvMFA_8$48%!WDEWS*j`Ma literal 0 HcmV?d00001 diff --git a/pxr/usdImaging/usdImagingGL/testenv/testUsdImagingGLPreviewSurface/testPreviewSurfaceConnectedScalar.usda b/pxr/usdImaging/usdImagingGL/testenv/testUsdImagingGLPreviewSurface/testPreviewSurfaceConnectedScalar.usda new file mode 100644 index 0000000000..5bcb724244 --- /dev/null +++ b/pxr/usdImaging/usdImagingGL/testenv/testUsdImagingGLPreviewSurface/testPreviewSurfaceConnectedScalar.usda @@ -0,0 +1,102 @@ +#usda 1.0 +( + defaultPrim = "Scene" + endTimeCode = 1 + startTimeCode = 1 + upAxis = "Z" +) + +def Scope "Prototypes"( + active=false +) +{ + def Sphere "Sphere" ( + prepend apiSchemas = ["MaterialBindingAPI"] + ) + { + float3[] extent = [(-1, -1, -1), (1, 1, 1)] + color3f[] primvars:displayColor = [(0.0, 1.0, 0.0)] + uniform token[] xformOpOrder = [ "xformOp:translate" ] + rel material:binding = + } +} + +def Xform "Scene" +{ + def Scope "Looks" + { + def Material "Material" + { + token outputs:surface.connect = + + def Shader "PbrPreview" + { + uniform token info:id = "UsdPreviewSurface" + color3f inputs:diffuseColor = (1, 0, 0) + float inputs:roughness.connect = + token outputs:surface + } + + def Shader "PrimvarRoughness" + { + uniform token info:id = "UsdPrimvarReader_float" + token inputs:varname = "roughness" + float2 outputs:result + } + } + } + + + def Xform "Geom" + { + def "pSphere0" ( + references = + ) + { + double3 xformOp:translate = (0, 0, 0) + float primvars:roughness = 0 + } + + def "pSphere1" ( + references = + ) + { + double3 xformOp:translate = (3, 0, 0) + float primvars:roughness = 0.2 + } + + def "pSphere2" ( + references = + ) + { + double3 xformOp:translate = (6, 0, 0) + float primvars:roughness = 0.4 + } + + def "pSphere3" ( + references = + ) + { + double3 xformOp:translate = (9, 0, 0) + float primvars:roughness = 0.6 + } + + def "pSphere4" ( + references = + ) + { + double3 xformOp:translate = (12, 0, 0) + float primvars:roughness = 0.8 + + } + + def "pSphere5" ( + references = + ) + { + double3 xformOp:translate = (15, 0, 0) + float primvars:roughness = 1 + } + } +} + From af7fad6396027419ce63d73ef333e99bca552cc7 Mon Sep 17 00:00:00 2001 From: clach Date: Tue, 25 Jul 2023 16:10:18 -0700 Subject: [PATCH 115/352] [hd] Small cleanup of HdChangeTracker::TaskDirtyBits. Varying is actually 1 << 1, meaning the comment was incorrect, and DirtyType, also defined as 1 << 1, wasn't used anywhere. (Internal change: 2286349) --- pxr/imaging/hd/changeTracker.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/pxr/imaging/hd/changeTracker.h b/pxr/imaging/hd/changeTracker.h index 6902cfd94c..e74c60269a 100644 --- a/pxr/imaging/hd/changeTracker.h +++ b/pxr/imaging/hd/changeTracker.h @@ -95,8 +95,6 @@ class HdChangeTracker // Dirty bits for Tasks // XXX: Move this to HdTask enum TaskDirtyBits : HdDirtyBits { - //Varying = 1 << 0, - DirtyType = 1 << 1, DirtyParams = 1 << 2, DirtyCollection = 1 << 3, DirtyRenderTags = 1 << 4, From b1820aa41cb8840a1b8b060e02a64a85a28ecb6c Mon Sep 17 00:00:00 2001 From: gitamohr Date: Tue, 25 Jul 2023 16:10:48 -0700 Subject: [PATCH 116/352] sdf: Restrict unquoted strings in predicate calls to only identifier characters and certain symbols. Otherwise trailing unquoted strings can confuse "outer" syntaxes that embed predicates. For example, in an SdfPathExpression, the {} chars delimit embedded predicates. If we allow {} in unquoted string args, a path expression like "//foo{bar:arg}/baz" will parse the closing '}' as a character in the unquoted string 'arg}'. Test forthcoming. (Internal change: 2286366) --- pxr/usd/sdf/predicateExpressionParser.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pxr/usd/sdf/predicateExpressionParser.h b/pxr/usd/sdf/predicateExpressionParser.h index 111f0f88f0..4c532436bf 100644 --- a/pxr/usd/sdf/predicateExpressionParser.h +++ b/pxr/usd/sdf/predicateExpressionParser.h @@ -210,10 +210,12 @@ struct QuotedString : sor< if_must, until, StringChar>>> > {}; -struct UnquotedStringDelimiter : sor> {}; -struct UnquotedString - : until>, - StringChar> {}; +struct UnquotedStringChar + : sor> {}; + +struct UnquotedString : star {}; struct PredArgString : sor {}; From 93f0afafded36cc9faa967e3edcd90809b4d23f9 Mon Sep 17 00:00:00 2001 From: gitamohr Date: Tue, 25 Jul 2023 16:11:12 -0700 Subject: [PATCH 117/352] usd: Add support for SdfPathExpression values to crate files. This requires a version bump. (Internal change: 2286380) --- pxr/usd/usd/crateDataTypes.h | 96 ++++++++++++++++++++---------------- pxr/usd/usd/crateFile.cpp | 42 ++++++++++------ 2 files changed, 81 insertions(+), 57 deletions(-) diff --git a/pxr/usd/usd/crateDataTypes.h b/pxr/usd/usd/crateDataTypes.h index d66a0fe270..bbb67bb6e8 100644 --- a/pxr/usd/usd/crateDataTypes.h +++ b/pxr/usd/usd/crateDataTypes.h @@ -31,45 +31,50 @@ // xx(, , , ) // Array types. -xx(Bool, 1, bool, true) -xx(UChar, 2, uint8_t, true) -xx(Int, 3, int, true) -xx(UInt, 4, unsigned int, true) -xx(Int64, 5, int64_t, true) -xx(UInt64, 6, uint64_t, true) +xx(Bool, 1, bool, true) +xx(UChar, 2, uint8_t, true) +xx(Int, 3, int, true) +xx(UInt, 4, unsigned int, true) +xx(Int64, 5, int64_t, true) +xx(UInt64, 6, uint64_t, true) -xx(Half, 7, GfHalf, true) -xx(Float, 8, float, true) -xx(Double, 9, double, true) +xx(Half, 7, GfHalf, true) +xx(Float, 8, float, true) +xx(Double, 9, double, true) -xx(String, 10, std::string, true) +xx(String, 10, std::string, true) -xx(Token, 11, TfToken, true) +xx(Token, 11, TfToken, true) -xx(AssetPath, 12, SdfAssetPath, true) +xx(AssetPath, 12, SdfAssetPath, true) -xx(Quatd, 16, GfQuatd, true) -xx(Quatf, 17, GfQuatf, true) -xx(Quath, 18, GfQuath, true) +xx(Quatd, 16, GfQuatd, true) +xx(Quatf, 17, GfQuatf, true) +xx(Quath, 18, GfQuath, true) -xx(Vec2d, 19, GfVec2d, true) -xx(Vec2f, 20, GfVec2f, true) -xx(Vec2h, 21, GfVec2h, true) -xx(Vec2i, 22, GfVec2i, true) +xx(Vec2d, 19, GfVec2d, true) +xx(Vec2f, 20, GfVec2f, true) +xx(Vec2h, 21, GfVec2h, true) +xx(Vec2i, 22, GfVec2i, true) -xx(Vec3d, 23, GfVec3d, true) -xx(Vec3f, 24, GfVec3f, true) -xx(Vec3h, 25, GfVec3h, true) -xx(Vec3i, 26, GfVec3i, true) +xx(Vec3d, 23, GfVec3d, true) +xx(Vec3f, 24, GfVec3f, true) +xx(Vec3h, 25, GfVec3h, true) +xx(Vec3i, 26, GfVec3i, true) -xx(Vec4d, 27, GfVec4d, true) -xx(Vec4f, 28, GfVec4f, true) -xx(Vec4h, 29, GfVec4h, true) -xx(Vec4i, 30, GfVec4i, true) +xx(Vec4d, 27, GfVec4d, true) +xx(Vec4f, 28, GfVec4f, true) +xx(Vec4h, 29, GfVec4h, true) +xx(Vec4i, 30, GfVec4i, true) -xx(Matrix2d, 13, GfMatrix2d, true) -xx(Matrix3d, 14, GfMatrix3d, true) -xx(Matrix4d, 15, GfMatrix4d, true) +xx(Matrix2d, 13, GfMatrix2d, true) +xx(Matrix3d, 14, GfMatrix3d, true) +xx(Matrix4d, 15, GfMatrix4d, true) + +// These are array types, but are defined below, since the greatest enumerant +// value must be last. +// xx(TimeCode, 56, SdfTimeCode, true) +// xx(PathExpression, 57, SdfPathExpression, true) // Non-array types. @@ -92,19 +97,26 @@ xx(Permission, 43, SdfPermission, false) xx(Variability, 44, SdfVariability, false) -xx(VariantSelectionMap, 45, SdfVariantSelectionMap, false) -xx(TimeSamples, 46, TimeSamples, false) -xx(Payload, 47, SdfPayload, false) +xx(VariantSelectionMap, 45, SdfVariantSelectionMap, false) +xx(TimeSamples, 46, TimeSamples, false) +xx(Payload, 47, SdfPayload, false) + +xx(DoubleVector, 48, std::vector, false) +xx(LayerOffsetVector, 49, std::vector, false) +xx(StringVector, 50, std::vector, false) + +xx(ValueBlock, 51, SdfValueBlock, false) +xx(Value, 52, VtValue, false) + +xx(UnregisteredValue, 53, SdfUnregisteredValue, false) +xx(UnregisteredValueListOp, 54, SdfUnregisteredValueListOp, false) +xx(PayloadListOp, 55, SdfPayloadListOp, false) + +// These array types appear here since the greatest enumerant value must be +// last. +xx(TimeCode, 56, SdfTimeCode, true) +xx(PathExpression, 57, SdfPathExpression, true) -xx(DoubleVector, 48, std::vector, false) -xx(LayerOffsetVector, 49, std::vector, false) -xx(StringVector, 50, std::vector, false) -xx(ValueBlock, 51, SdfValueBlock, false) -xx(Value, 52, VtValue, false) -xx(UnregisteredValue, 53, SdfUnregisteredValue, false) -xx(UnregisteredValueListOp, 54, SdfUnregisteredValueListOp, false) -xx(PayloadListOp, 55, SdfPayloadListOp, false) -xx(TimeCode, 56, SdfTimeCode, true) diff --git a/pxr/usd/usd/crateFile.cpp b/pxr/usd/usd/crateFile.cpp index 1e20da47ae..fa3033dd3d 100644 --- a/pxr/usd/usd/crateFile.cpp +++ b/pxr/usd/usd/crateFile.cpp @@ -79,6 +79,7 @@ #include "pxr/usd/sdf/layerOffset.h" #include "pxr/usd/sdf/listOp.h" #include "pxr/usd/sdf/path.h" +#include "pxr/usd/sdf/pathExpression.h" #include "pxr/usd/sdf/pathTable.h" #include "pxr/usd/sdf/payload.h" #include "pxr/usd/sdf/reference.h" @@ -337,21 +338,22 @@ using std::unordered_map; using std::vector; // Version history: -// 0.9.0: Added support for the timecode and timecode[] value types. -// 0.8.0: Added support for SdfPayloadListOp values and SdfPayload values with -// layer offsets. -// 0.7.0: Array sizes written as 64 bit ints. -// 0.6.0: Compressed (scalar) floating point arrays that are either all ints or -// can be represented efficiently with a lookup table. -// 0.5.0: Compressed (u)int & (u)int64 arrays, arrays no longer store '1' rank. -// 0.4.0: Compressed structural sections. -// 0.3.0: (broken, unused) -// 0.2.0: Added support for prepend and append fields of SdfListOp. -// 0.1.0: Fixed structure layout issue encountered in Windows port. -// See _PathItemHeader_0_0_1. -// 0.0.1: Initial release. +// 0.10.0: Added support for the pathExpression value type. +// 0.9.0: Added support for the timecode and timecode[] value types. +// 0.8.0: Added support for SdfPayloadListOp values and SdfPayload values with +// layer offsets. +// 0.7.0: Array sizes written as 64 bit ints. +// 0.6.0: Compressed (scalar) floating point arrays that are either all ints or +// can be represented efficiently with a lookup table. +// 0.5.0: Compressed (u)int & (u)int64 arrays, arrays no longer store '1' rank. +// 0.4.0: Compressed structural sections. +// 0.3.0: (broken, unused) +// 0.2.0: Added support for prepend and append fields of SdfListOp. +// 0.1.0: Fixed structure layout issue encountered in Windows port. +// See _PathItemHeader_0_0_1. +// 0.0.1: Initial release. constexpr uint8_t USDC_MAJOR = 0; -constexpr uint8_t USDC_MINOR = 9; +constexpr uint8_t USDC_MINOR = 10; constexpr uint8_t USDC_PATCH = 0; CrateFile::Version @@ -1165,6 +1167,9 @@ class CrateFile::_Reader : public _ReaderBase return SdfAssetPath(Read()); } SdfTimeCode Read(SdfTimeCode *) { return SdfTimeCode(Read()); } + SdfPathExpression Read(SdfPathExpression *) { + return SdfPathExpression(Read()); + } SdfUnregisteredValue Read(SdfUnregisteredValue *) { VtValue val = Read(); if (val.IsHolding()) @@ -1422,10 +1427,17 @@ class CrateFile::_Writer void Write(SdfTimeCode const &tc) { crate->_packCtx->RequestWriteVersionUpgrade( Version(0, 9, 0), - "A timecode or timecode[] value type was detected, which requires " + "A timecode or timecode[] value type was detected which requires " "crate version 0.9.0."); Write(tc.GetValue()); } + void Write(SdfPathExpression const &pathExpr) { + crate->_packCtx->RequestWriteVersionUpgrade( + Version(0,10,0), + "A pathExpression value type was detected which requires crate " + "version 0.10.0."); + Write(pathExpr.GetText()); + } void Write(SdfUnregisteredValue const &urv) { Write(urv.GetValue()); } void Write(SdfVariantSelectionMap const &vsmap) { WriteMap(vsmap); } void Write(SdfLayerOffset const &layerOffset) { From b33fbfc4f42469ef9d7cf587f43055d48b7f2d15 Mon Sep 17 00:00:00 2001 From: rajabala Date: Tue, 25 Jul 2023 16:12:06 -0700 Subject: [PATCH 118/352] [hd, hdPrman] Improve handling of Riley scene options. - Update hdPrman scene index plugin to configure the render settings filtering scene index to always add a fallback render settings prim. - Cache scene options based on the source and compose them to clarify opinion precedence. Fix incorrect handling of env var HD_PRMAN_MAX_SAMPLES. - Defer the first SetOptions call to render settings prim sync to ensure that immutable scene options on the prim can be committed on the first call. This relies on scene index emulation (to ensure that a fallback render settings prim is added) and can be additionally controlled via the HDPRMAN_DEFER_SET_OPTIONS env setting (which defaults to true). - Add workarounds in render settings sync to guard against using the fallback prim's opinion when an authored one is present. - Rename GetOptions to GetLegacyOptions. - Remove settings version counter from HdRenderSettings. (Internal change: 2286428) --- pxr/imaging/hd/renderSettings.cpp | 8 - pxr/imaging/hd/renderSettings.h | 4 - .../plugin/hdPrman/cameraContext.cpp | 7 +- .../plugin/hdPrman/cameraContext.h | 2 +- .../plugin/hdPrman/paramsSetter.cpp | 10 +- .../plugin/hdPrman/renderDelegate.cpp | 8 +- .../plugin/hdPrman/renderParam.cpp | 143 +++++++++++++----- .../renderman-25/plugin/hdPrman/renderParam.h | 54 ++++--- .../plugin/hdPrman/renderPass.cpp | 100 ++++-------- .../renderman-25/plugin/hdPrman/renderPass.h | 1 - .../plugin/hdPrman/renderSettings.cpp | 96 +++++++++--- ...enderSettingsFilteringSceneIndexPlugin.cpp | 48 +++++- .../renderSettingsFilteringSceneIndexPlugin.h | 7 +- .../plugin/hdPrman/testenv/testHdPrman.cpp | 4 - .../renderman-25/plugin/hdPrman/utils.cpp | 5 +- 15 files changed, 317 insertions(+), 180 deletions(-) diff --git a/pxr/imaging/hd/renderSettings.cpp b/pxr/imaging/hd/renderSettings.cpp index 55330991ba..b3c66127c7 100644 --- a/pxr/imaging/hd/renderSettings.cpp +++ b/pxr/imaging/hd/renderSettings.cpp @@ -73,7 +73,6 @@ HdRenderSettings::HdRenderSettings( SdfPath const& id) : HdBprim(id) , _active(false) - , _settingsVersion(1) { } @@ -91,12 +90,6 @@ HdRenderSettings::GetNamespacedSettings() const return _namespacedSettings; } -unsigned int -HdRenderSettings::GetSettingsVersion() const - { - return _settingsVersion; -} - const HdRenderSettings::RenderProducts& HdRenderSettings::GetRenderProducts() const { @@ -142,7 +135,6 @@ HdRenderSettings::Sync( GetId(), HdRenderSettingsPrimTokens->namespacedSettings); if (vSettings.IsHolding()) { _namespacedSettings = vSettings.UncheckedGet(); - _settingsVersion++; } } diff --git a/pxr/imaging/hd/renderSettings.h b/pxr/imaging/hd/renderSettings.h index b4322fac84..0f20e0522c 100644 --- a/pxr/imaging/hd/renderSettings.h +++ b/pxr/imaging/hd/renderSettings.h @@ -148,9 +148,6 @@ class HdRenderSettings : public HdBprim HD_API const NamespacedSettings& GetNamespacedSettings() const; - HD_API - unsigned int GetSettingsVersion() const; - HD_API const RenderProducts& GetRenderProducts() const; @@ -201,7 +198,6 @@ class HdRenderSettings : public HdBprim bool _active; NamespacedSettings _namespacedSettings; - unsigned int _settingsVersion; RenderProducts _products; VtArray _includedPurposes; VtArray _materialBindingPurposes; diff --git a/third_party/renderman-25/plugin/hdPrman/cameraContext.cpp b/third_party/renderman-25/plugin/hdPrman/cameraContext.cpp index ac50a42247..1aaf5fc0a8 100644 --- a/third_party/renderman-25/plugin/hdPrman/cameraContext.cpp +++ b/third_party/renderman-25/plugin/hdPrman/cameraContext.cpp @@ -552,6 +552,11 @@ HdPrman_CameraContext::_UpdateRileyCamera( const GfRange2d &screenWindow, const HdPrmanCamera * const camera) { + // The riley camera should have been created before we get here. + if (!TF_VERIFY(_cameraId != riley::CameraId::InvalidId())) { + return; + } + const riley::ShadingNode node = riley::ShadingNode { riley::ShadingNode::Type::k_Projection, _ComputeProjectionShader(camera->GetProjection()), @@ -794,7 +799,7 @@ HdPrman_CameraContext::MarkValid() } void -HdPrman_CameraContext::Begin(riley::Riley * const riley) +HdPrman_CameraContext::CreateRileyCamera(riley::Riley * const riley) { // Create camera diff --git a/third_party/renderman-25/plugin/hdPrman/cameraContext.h b/third_party/renderman-25/plugin/hdPrman/cameraContext.h index f1775f4b25..3b615675b6 100644 --- a/third_party/renderman-25/plugin/hdPrman/cameraContext.h +++ b/third_party/renderman-25/plugin/hdPrman/cameraContext.h @@ -69,7 +69,7 @@ class HdPrman_CameraContext final bool IsInvalid() const; /// Create riley camera (with default settings). - void Begin(riley::Riley * riley); + void CreateRileyCamera(riley::Riley * riley); /// Get id of riley camera - valid only after Begin. const riley::CameraId &GetCameraId() const { return _cameraId; } diff --git a/third_party/renderman-25/plugin/hdPrman/paramsSetter.cpp b/third_party/renderman-25/plugin/hdPrman/paramsSetter.cpp index 283802fdd8..2aee270e30 100644 --- a/third_party/renderman-25/plugin/hdPrman/paramsSetter.cpp +++ b/third_party/renderman-25/plugin/hdPrman/paramsSetter.cpp @@ -58,8 +58,6 @@ HdPrmanParamsSetter::Sync(HdSceneDelegate *sceneDelegate, HdPrman_RenderParam * const param = static_cast(renderParam); - riley::Riley * const riley = param->AcquireRiley(); - const SdfPath id = GetId(); VtValue optionsValue = sceneDelegate->Get(id, _tokens->Options); @@ -68,14 +66,16 @@ HdPrmanParamsSetter::Sync(HdSceneDelegate *sceneDelegate, optionsValue.UncheckedGet>(); if (!valueDict.empty()) { - RtParamList &options = param->GetOptions(); + // Update the legacy options so it can be used to update the + // integrator below. + RtParamList &legacyOptions = param->GetLegacyOptions(); for (const auto &tokenvalpair : valueDict) { HdPrman_Utils::SetParamFromVtValue( RtUString(tokenvalpair.first.data()), tokenvalpair.second, - TfToken(), &options); + TfToken(), &legacyOptions); } - riley->SetOptions(options); + param->SetRileyOptions(); } } diff --git a/third_party/renderman-25/plugin/hdPrman/renderDelegate.cpp b/third_party/renderman-25/plugin/hdPrman/renderDelegate.cpp index 1eb008118c..486410ee09 100644 --- a/third_party/renderman-25/plugin/hdPrman/renderDelegate.cpp +++ b/third_party/renderman-25/plugin/hdPrman/renderDelegate.cpp @@ -204,11 +204,9 @@ HdPrmanRenderDelegate::_Initialize() if (!integratorEnv.empty()) { integrator = integratorEnv; } - - // 64 samples is RenderMan default - int maxSamples = TfGetenvInt("HD_PRMAN_MAX_SAMPLES", 64); - - float pixelVariance = 0.001f; + + const int maxSamples = 64; // 64 samples is RenderMan default + const float pixelVariance = 0.001f; // Prepare list of render settings descriptors _settingDescriptors.reserve(5); diff --git a/third_party/renderman-25/plugin/hdPrman/renderParam.cpp b/third_party/renderman-25/plugin/hdPrman/renderParam.cpp index f8b50f3c3d..ffa6cfd11d 100644 --- a/third_party/renderman-25/plugin/hdPrman/renderParam.cpp +++ b/third_party/renderman-25/plugin/hdPrman/renderParam.cpp @@ -99,6 +99,8 @@ TF_DEFINE_ENV_SETTING(HD_PRMAN_OSL_VERBOSE, 0, "Override osl verbose in HdPrman"); TF_DEFINE_ENV_SETTING(HD_PRMAN_DISABLE_HIDER_JITTER, false, "Disable hider jitter"); +TF_DEFINE_ENV_SETTING(HD_PRMAN_DEFER_SET_OPTIONS, true, + "Defer first SetOptions call to render settings prim sync."); extern TfEnvSetting HD_PRMAN_ENABLE_QUICKINTEGRATE; static bool _enableQuickIntegrate = @@ -122,6 +124,7 @@ HdPrman_RenderParam::HdPrman_RenderParam( _statsSession(nullptr), _riley(nullptr), _sceneLightCount(0), + _initRileyOptions(false), _sampleFiltersId(riley::SampleFilterId::InvalidId()), _displayFiltersId(riley::DisplayFilterId::InvalidId()), _lastLegacySettingsVersion(0), @@ -955,10 +958,12 @@ _Contains( } void -HdPrman_RenderParam::SetOptionsFromRenderSettingsMap( - HdRenderSettingsMap const &renderSettingsMap, - RtParamList& options) +HdPrman_RenderParam::UpdateLegacyOptions() { + const HdRenderSettingsMap renderSettingsMap = + _renderDelegate->GetRenderSettingsMap(); + RtParamList &options = GetLegacyOptions(); + VtValue batchCommandLine; for (auto const& entry : renderSettingsMap) { @@ -1594,6 +1599,14 @@ HdPrman_RenderParam::_DestroyRiley() { if (_mgr) { if(_riley) { + // Riley/RIS crashes if SetOptions hasn't been called prior to + // destroying the riley instance. + if (!_initRileyOptions) { + TF_DEBUG(HDPRMAN_RENDER_SETTINGS).Msg( + "[DestroyRiley] Calling SetOptions to workaround crash.\n"); + riley::Riley * const riley = AcquireRiley(); + riley->SetOptions(RtParamList()); + } _mgr->DestroyRiley(_riley); } _mgr = nullptr; @@ -1849,33 +1862,17 @@ HdPrman_RenderParam::IsValid() const void HdPrman_RenderParam::Begin(HdPrmanRenderDelegate *renderDelegate) { - //////////////////////////////////////////////////////////////////////// - // - // Riley setup - // + _envOptions = HdPrman_Utils::GetRileyOptionsFromEnvironment(); + _fallbackOptions = HdPrman_Utils::GetDefaultRileyOptions(); + // Initialize legacy options from the render settings map. + UpdateLegacyOptions(); + + // Force initialization of Riley scene options. + // (see related comments in SetRileyOptions) + if (!HdRenderIndex::IsSceneIndexEmulationEnabled() || + !TfGetEnvSetting(HD_PRMAN_DEFER_SET_OPTIONS)) { - // Initialize scene options by composing opinions with the - // following precedence: - // fallback < legacy settings map < environment. - RtParamList &options = GetOptions(); - - options = HdPrman_Utils::GetDefaultRileyOptions(); - SetOptionsFromRenderSettingsMap( - static_cast(renderDelegate) - ->GetRenderSettingsMap(), options); - options.Update(HdPrman_Utils::GetRileyOptionsFromEnvironment()); - - RtParamList prunedOptions = - HdPrman_Utils::PruneDeprecatedOptions(options); - _riley->SetOptions(prunedOptions); - - TF_DEBUG(HDPRMAN_RENDER_SETTINGS).Msg( - "Setting options from legacy settings map on riley initialization:" - "%s\n", - HdPrmanDebugUtil::RtParamListToString(prunedOptions).c_str()); - - // Safe to create riley objects since SetOptions has been called. - _CreateInternalPrims(); + SetRileyOptions(); } // Set the camera path before the first sync so that @@ -1907,7 +1904,7 @@ void HdPrman_RenderParam::_CreateInternalPrims() { // See comment in SetRileyOptions on when this function needs to be called. - GetCameraContext().Begin(AcquireRiley()); + GetCameraContext().CreateRileyCamera(AcquireRiley()); _CreateFallbackMaterials(); @@ -1916,6 +1913,82 @@ HdPrman_RenderParam::_CreateInternalPrims() _activeIntegratorId = GetIntegratorId(); } +static RtParamList +_Compose( + RtParamList const &a, + RtParamList const &b, + RtParamList const &c, + RtParamList const &d) +{ + return + HdPrman_Utils::Compose( + a, HdPrman_Utils::Compose(b, HdPrman_Utils::Compose(c,d))); +} + +void +HdPrman_RenderParam::SetRenderSettingsPrimOptions( + RtParamList const ¶ms) +{ + _renderSettingsPrimOptions = params; +} + +void +HdPrman_RenderParam::SetRileyOptions() +{ + // There are a couple of RIS/Riley limitations to call out: + // 1. Current Riley implementations require `SetOptions()` to be the first + // call made before any scene manipulation (which includes the creation + // of Riley scene objects). + // 2. Several riley settings are immutable and need to be set on the + // first SetOptions call. + // + // When scene index emulation is enabled, the first SetOptions call is + // deferred until HdPrman_RenderSettings::Sync. A fallback render settings + // prim is added via HdPrman_RenderSettingsFilteringSceneIndexPlugin to + // allow this strategy to work for scenes without one. + // + // When scene index emulation is disabled, we have no way to know or + // guarantee that a render settings prim is present. The first SetOptions + // call is called after constructing the Riley instance in + // HdPrman_RenderParam::Begin. + // + { + // Compose scene options with the precedence: + // env > render settings prim > legacy settings map > fallback + // + // XXX: Some riley clients require certain options to be present + // on every SetOptions call (e.g. XPU currently needs + // ri:searchpath:texture). As a conservative measure, compose + // all sources of options for initialization and subsequent updates. + // Ideally, the latter would require just the legacy and prim options. + + RtParamList composedParams = + _Compose(_envOptions, + _renderSettingsPrimOptions, + GetLegacyOptions(), + _fallbackOptions); + + RtParamList prunedOptions = HdPrman_Utils::PruneDeprecatedOptions( + composedParams); + + riley::Riley * const riley = AcquireRiley(); + riley->SetOptions(prunedOptions); + + TF_DEBUG(HDPRMAN_RENDER_SETTINGS).Msg( + "SetOptions called on the composed param list:\n %s\n", + HdPrmanDebugUtil::RtParamListToString( + prunedOptions, /*indent = */2).c_str()); + } + + if (!_initRileyOptions) { + _initRileyOptions = true; + + // Safe to create riley objects that aren't backed by the scene. + // See limitation (1) above. + _CreateInternalPrims(); + } +} + void HdPrman_RenderParam::SetActiveIntegratorId( const riley::IntegratorId id) @@ -2870,11 +2943,11 @@ HdPrman_RenderParam::UpdateRileyShutterInterval( shutterInterval[1] = 0.0f; } - RtParamList &options = GetOptions(); - options.SetFloatArray(RixStr.k_Ri_Shutter, shutterInterval, 2); - - riley::Riley * riley = AcquireRiley(); - riley->SetOptions(HdPrman_Utils::PruneDeprecatedOptions(options)); + // Update the shutter interval on the legacy options param list and + // commit the scene options. + RtParamList &options = GetLegacyOptions(); + options.SetFloatArray(RixStr.k_Ri_Shutter, shutterInterval, 2); + SetRileyOptions(); } void diff --git a/third_party/renderman-25/plugin/hdPrman/renderParam.h b/third_party/renderman-25/plugin/hdPrman/renderParam.h index 14cec66f36..1749a2db7e 100644 --- a/third_party/renderman-25/plugin/hdPrman/renderParam.h +++ b/third_party/renderman-25/plugin/hdPrman/renderParam.h @@ -129,9 +129,7 @@ class HdPrman_RenderParam : public HdRenderParam bool IsLightFilterUsed(TfToken const& name); HDPRMAN_API - void SetOptionsFromRenderSettingsMap( - HdRenderSettingsMap const &renderSettingsMap, - RtParamList& options); + void UpdateLegacyOptions(); // Set integrator params from the HdRenderSettingsMap HDPRMAN_API @@ -208,7 +206,7 @@ class HdPrman_RenderParam : public HdRenderParam // Provides external access to resources used to set parameters for // scene options and the active integrator from the render settings map // (the latter is used by the ParamsSetter prim). - RtParamList &GetOptions() { return _legacyOptions; } + RtParamList &GetLegacyOptions() { return _legacyOptions; } HdPrman_CameraContext &GetCameraContext() { return _cameraContext; } @@ -330,6 +328,12 @@ class HdPrman_RenderParam : public HdRenderParam // Instancer by id HdPrmanInstancer* GetInstancer(const SdfPath& id); + // Cache scene options from the render settings prim. + void SetRenderSettingsPrimOptions(RtParamList const ¶ms); + + // Set Riley scene options by composing opinion sources. + void SetRileyOptions(); + private: void _CreateStatsSession(); void _CreateRiley(const std::string &rileyVariant, @@ -351,6 +355,23 @@ class HdPrman_RenderParam : public HdRenderParam bool _UpdateFramebufferClearValues( const HdRenderPassAovBindingVector& aovBindings); + riley::ShadingNode _ComputeIntegratorNode( + HdRenderDelegate * renderDelegate, + const HdPrmanCamera * cam); + + riley::ShadingNode _ComputeQuickIntegratorNode( + HdRenderDelegate * renderDelegate, + const HdPrmanCamera * cam); + + void _RenderThreadCallback(); + + void _CreateRileyDisplay( + const RtUString& productName, const RtUString& productType, + HdPrman_RenderViewDesc& renderViewDesc, + const std::vector& renderOutputIndices, + RtParamList& displayParams, bool isXpu); + +private: // Top-level entrypoint to PRMan. // Singleton used to access RixInterfaces. RixContext *_rix; @@ -370,22 +391,6 @@ class HdPrman_RenderParam : public HdRenderParam // Riley instance. riley::Riley *_riley; - riley::ShadingNode _ComputeIntegratorNode( - HdRenderDelegate * renderDelegate, - const HdPrmanCamera * cam); - - riley::ShadingNode _ComputeQuickIntegratorNode( - HdRenderDelegate * renderDelegate, - const HdPrmanCamera * cam); - - void _RenderThreadCallback(); - - void _CreateRileyDisplay( - const RtUString& productName, const RtUString& productType, - HdPrman_RenderViewDesc& renderViewDesc, - const std::vector& renderOutputIndices, - RtParamList& displayParams, bool isXpu); - std::unique_ptr _renderThread; std::unique_ptr _framebuffer; @@ -434,10 +439,19 @@ class HdPrman_RenderParam : public HdRenderParam HdPrman_CameraContext _cameraContext; HdPrman_RenderViewContext _renderViewContext; + // Flag to indicate whether Riley scene options were set. + bool _initRileyOptions; + + // Environment and fallback scene options. + RtParamList _envOptions; + RtParamList _fallbackOptions; + /// ------------------------------------------------------------------------ // Render settings prim driven state // + RtParamList _renderSettingsPrimOptions; + // Render terminals SdfPath _renderSettingsIntegratorPath; HdMaterialNode2 _renderSettingsIntegratorNode; diff --git a/third_party/renderman-25/plugin/hdPrman/renderPass.cpp b/third_party/renderman-25/plugin/hdPrman/renderPass.cpp index d2d0937ddf..655dd83bd9 100644 --- a/third_party/renderman-25/plugin/hdPrman/renderPass.cpp +++ b/third_party/renderman-25/plugin/hdPrman/renderPass.cpp @@ -65,7 +65,6 @@ HdPrman_RenderPass::HdPrman_RenderPass( , _lastRenderedVersion(0) , _lastTaskRenderTagsVersion(0) , _lastRprimRenderTagVersion(0) -, _lastRenderSettingsPrimVersion(0) , _quickIntegrateTime(0.2f) { TF_VERIFY(_renderParam); @@ -217,6 +216,23 @@ _UpdateRprimVisibilityForPass(TfTokenVector const & renderTags, } } +const HdPrman_RenderSettings * +_GetActiveRenderSettingsPrim( + HdRenderIndex *renderIndex) +{ + SdfPath primPath; + const bool hasActiveRenderSettingsPrim = + HdUtils::HasActiveRenderSettingsPrim( + renderIndex->GetTerminalSceneIndex(), &primPath); + + if (hasActiveRenderSettingsPrim) { + return dynamic_cast( + renderIndex->GetBprim(HdPrimTypeTokens->renderSettings, primPath)); + } + + return nullptr; +} + } // end anonymous namespace void @@ -256,13 +272,13 @@ HdPrman_RenderPass::_Execute( // // Render settings can come from the legacy render settings map OR/AND - // the active render settings prim. We need to track and handle changes - // to either of them. + // the active render settings prim. We handle changes to the render settings + // prim during Sync. + const HdPrman_RenderSettings * const renderSettingsPrim + = _GetActiveRenderSettingsPrim(GetRenderIndex()); bool legacySettingsChanged = false; - bool primSettingsChanged = false; - const HdPrman_RenderSettings *renderSettingsPrim = nullptr; { - // Legacy settings. + // Legacy settings version tracking. const int currentLegacySettingsVersion = renderDelegate->GetRenderSettingsVersion(); legacySettingsChanged = _renderParam->GetLastLegacySettingsVersion() @@ -271,38 +287,8 @@ HdPrman_RenderPass::_Execute( _renderParam->SetLastLegacySettingsVersion( currentLegacySettingsVersion); } - - // Prim settings. - SdfPath curRsPrimPath; - const bool hasActiveRenderSettingsPrim = - HdUtils::HasActiveRenderSettingsPrim( - GetRenderIndex()->GetTerminalSceneIndex(), &curRsPrimPath); - - if (_lastRenderSettingsPrimPath != curRsPrimPath) { - _lastRenderSettingsPrimVersion = 0; - _lastRenderSettingsPrimPath = curRsPrimPath; - } - - if (hasActiveRenderSettingsPrim) { - renderSettingsPrim = dynamic_cast( - GetRenderIndex()->GetBprim( - HdPrimTypeTokens->renderSettings, curRsPrimPath)); - - if (TF_VERIFY(renderSettingsPrim)) { - const unsigned int curSettingsVersion = - renderSettingsPrim->GetSettingsVersion(); - - primSettingsChanged = - curSettingsVersion != _lastRenderSettingsPrimVersion; - - if (primSettingsChanged) { - _lastRenderSettingsPrimVersion = curSettingsVersion; - } - } - } - } - + HdPrman_CameraContext &cameraContext = _renderParam->GetCameraContext(); // Camera path can come from render pass state or // from render settings. The camera from the render pass state @@ -494,7 +480,7 @@ HdPrman_RenderPass::_Execute( if (resolutionChanged) { _renderParam->resolution = resolution; - _renderParam->GetOptions().SetIntegerArray( + _renderParam->GetLegacyOptions().SetIntegerArray( RixStr.k_Ri_FormatResolution, resolution.data(), 2); @@ -508,7 +494,7 @@ HdPrman_RenderPass::_Execute( // the resolution didn't. This will make sure the Ri:CropWindow // option gets updated. cameraContext.SetRileyOptionsInteractive( - &(_renderParam->GetOptions()), + &(_renderParam->GetLegacyOptions()), resolution); } @@ -528,45 +514,15 @@ HdPrman_RenderPass::_Execute( if (legacySettingsChanged) { // Update options from the legacy settings map. - _renderParam->SetOptionsFromRenderSettingsMap( - renderDelegate->GetRenderSettingsMap(), - _renderParam->GetOptions()); + _renderParam->UpdateLegacyOptions(); } - // Commit settings options to riley + // Commit updated scene options. { - // Legacy settings (i.e., _renderParam->GetOptions()) const bool updateLegacyOptions = legacySettingsChanged || camChanged || resolutionChanged; if (updateLegacyOptions) { - RtParamList prunedOptions = HdPrman_Utils::PruneDeprecatedOptions( - _renderParam->GetOptions()); - - riley::Riley * const riley = _renderParam->AcquireRiley(); - riley->SetOptions(prunedOptions); - - TF_DEBUG(HDPRMAN_RENDER_SETTINGS).Msg( - "Setting options from legacy data flow: \n%s", - HdPrmanDebugUtil::RtParamListToString(prunedOptions).c_str()); - } - - // XXX Until we get to a cleaner data flow, we have to handle settings - // opinions from legacy and (render settings) prim sources. - // Commit the prim's opinions last to override the legacy opinion. - // This needs to be done when either of the opinions are updated. - // - if (renderSettingsPrim && - (updateLegacyOptions || primSettingsChanged)) { - RtParamList prunedOptions = HdPrman_Utils::PruneDeprecatedOptions( - renderSettingsPrim->GetOptions()); - - riley::Riley * const riley = _renderParam->AcquireRiley(); - riley->SetOptions(prunedOptions); - - TF_DEBUG(HDPRMAN_RENDER_SETTINGS).Msg( - "Setting options from render settings prim %s:\n %s", - renderSettingsPrim->GetId().GetText(), - HdPrmanDebugUtil::RtParamListToString(prunedOptions).c_str()); + _renderParam->SetRileyOptions(); } } diff --git a/third_party/renderman-25/plugin/hdPrman/renderPass.h b/third_party/renderman-25/plugin/hdPrman/renderPass.h index a298a15d05..ba1c1b742e 100644 --- a/third_party/renderman-25/plugin/hdPrman/renderPass.h +++ b/third_party/renderman-25/plugin/hdPrman/renderPass.h @@ -59,7 +59,6 @@ class HdPrman_RenderPass final : public HdRenderPass int _lastTaskRenderTagsVersion; int _lastRprimRenderTagVersion; - unsigned int _lastRenderSettingsPrimVersion; SdfPath _lastRenderSettingsPrimPath; std::chrono::steady_clock::time_point _frameStart; diff --git a/third_party/renderman-25/plugin/hdPrman/renderSettings.cpp b/third_party/renderman-25/plugin/hdPrman/renderSettings.cpp index 6969b0f6bc..527e244687 100644 --- a/third_party/renderman-25/plugin/hdPrman/renderSettings.cpp +++ b/third_party/renderman-25/plugin/hdPrman/renderSettings.cpp @@ -32,10 +32,11 @@ #include "pxr/imaging/hd/dataSourceTypeDefs.h" #include "pxr/imaging/hd/sceneDelegate.h" #include "pxr/imaging/hd/sceneIndex.h" +#include "pxr/imaging/hd/sceneIndexPrimView.h" #include "pxr/imaging/hd/utils.h" +#include "pxr/imaging/hdsi/renderSettingsFilteringSceneIndex.h" #include -#include // XXX PXR_NAMESPACE_OPEN_SCOPE @@ -95,6 +96,27 @@ _GenerateParamList(VtDictionary const &settings) return options; } +bool +_HasNonFallbackRenderSettingsPrim(const HdSceneIndexBaseRefPtr &si) +{ + if (!si) { + return false; + } + + const SdfPath &renderScope = + HdsiRenderSettingsFilteringSceneIndex::GetRenderScope(); + const SdfPath &fallbackPrimPath = + HdsiRenderSettingsFilteringSceneIndex::GetFallbackPrimPath(); + + for (const SdfPath &path : HdSceneIndexPrimView(si, renderScope)) { + if (path != fallbackPrimPath && + si->GetPrim(path).primType == HdPrimTypeTokens->renderSettings) { + return true; + } + } + return false; +} + } @@ -114,37 +136,67 @@ void HdPrman_RenderSettings::_Sync( HdRenderParam *renderParam, const HdDirtyBits *dirtyBits) { + TF_DEBUG(HDPRMAN_RENDER_SETTINGS).Msg( + "Syncing render settings prim %s (dirty bits = %x)...\n{", + GetId().GetText(), *dirtyBits); + HdPrman_RenderParam *param = static_cast(renderParam); + HdSceneIndexBaseRefPtr terminalSi = + sceneDelegate->GetRenderIndex().GetTerminalSceneIndex(); + + // We defer the first SetOptions call to correctly handle immutable scene + // options authored on a render settings prim to below (SetRileyOptions). + // To accommodate scenes without a render settings prim, a fallback + // prim is always inserted via a scene index plugin. + // However, due to the non-deterministic nature of Sync, we need to guard + // against the fallback prim's opinion being committed on the first + // SetOptions when an authored prim is present. + // + if (GetId() == HdsiRenderSettingsFilteringSceneIndex::GetFallbackPrimPath() + && _HasNonFallbackRenderSettingsPrim(terminalSi)) { + + TF_DEBUG(HDPRMAN_RENDER_SETTINGS).Msg( + "Short-circuiting sync for fallback render settings prim %s because" + "an authored render setting prim is present.\n", GetId().GetText()); + + return; + } + + if (*dirtyBits & HdRenderSettings::DirtyNamespacedSettings) { + _settingsOptions = _GenerateParamList(GetNamespacedSettings()); + TF_DEBUG(HDPRMAN_RENDER_SETTINGS).Msg( + "Processed dirty namespaced settings for %s and generated the " + "param list \n %s\n", GetId().GetText(), + HdPrmanDebugUtil::RtParamListToString(_settingsOptions).c_str() + ); + } + // XXX Preserve existing data flow for clients that don't populate the // sceneGlobals.activeRenderSettingsPrim locator at the root prim of the - // scene index. In this scenario, integrator, sample and display - // filters connected to the render settings prim are used. This works - // only when a single render settings prim is present in the scene. + // scene index. In this scenario, scene options and render terminals + // connected to the render settings prim are used. This works + // only when a single render settings prim is present in the scene + // (not including the fallback prim inserted via the scene index). + // // When multiple render settings prims are present in the scene, because - // the Sync order is non-deterministic, the last sync'd prim's opinions - // would be used. + // the Sync order is non-deterministic, the last sync'd prim's mutable + // opinions and the first sync'd prim's immutable opinions would win. // - - const bool hasActiveRsp = HdUtils::HasActiveRenderSettingsPrim( - sceneDelegate->GetRenderIndex().GetTerminalSceneIndex()); - + const bool hasActiveRsp = HdUtils::HasActiveRenderSettingsPrim(terminalSi); + if (IsActive() || !hasActiveRsp) { - if (*dirtyBits & HdRenderSettings::DirtyNamespacedSettings) { - // NamespacedSettings contains all the Prman-specific render - // settings opinions. + + if (*dirtyBits & HdRenderSettings::DirtyNamespacedSettings || + *dirtyBits & HdRenderSettings::DirtyActive) { + const VtDictionary& namespacedSettings = GetNamespacedSettings(); // Handle attributes ... // Note: We don't get fine-grained invalidation per-setting, so we // recompute all settings. - _settingsOptions = _GenerateParamList(namespacedSettings); - - TF_DEBUG(HDPRMAN_RENDER_SETTINGS).Msg( - "Processed dirty namespaced settings for %s and generated the " - "param list %s", GetId().GetText(), - HdPrmanDebugUtil::RtParamListToString(_settingsOptions).c_str() - ); + param->SetRenderSettingsPrimOptions(_settingsOptions); + param->SetRileyOptions(); // ... and connections. // Set the integrator connected to this Render Settings prim @@ -180,6 +232,10 @@ void HdPrman_RenderSettings::_Sync( } } } + + TF_DEBUG(HDPRMAN_RENDER_SETTINGS).Msg( + "}\nDone syncing render settings prim %s.\n", GetId().GetText()); + } PXR_NAMESPACE_CLOSE_SCOPE diff --git a/third_party/renderman-25/plugin/hdPrman/renderSettingsFilteringSceneIndexPlugin.cpp b/third_party/renderman-25/plugin/hdPrman/renderSettingsFilteringSceneIndexPlugin.cpp index 14971c6742..b25d972e31 100644 --- a/third_party/renderman-25/plugin/hdPrman/renderSettingsFilteringSceneIndexPlugin.cpp +++ b/third_party/renderman-25/plugin/hdPrman/renderSettingsFilteringSceneIndexPlugin.cpp @@ -24,6 +24,7 @@ #include "hdPrman/renderSettingsFilteringSceneIndexPlugin.h" #include "pxr/imaging/hd/retainedDataSource.h" +#include "pxr/imaging/hd/renderSettingsSchema.h" #include "pxr/imaging/hd/sceneIndexPluginRegistry.h" #include "pxr/imaging/hdsi/renderSettingsFilteringSceneIndex.h" @@ -40,6 +41,41 @@ TF_DEFINE_PRIVATE_TOKENS( ((outputsRi, "outputs:ri")) ); +namespace { + +// Note: +// In hdPrman, for the first SetOptions call, we compose a small set of default +// options, settings from the legacy render settings map and those from the +// environment (see HdPrman_RenderParam::SetRileyOptions). +// The fallback scene index prim isn't editable and since its opinions compose +// over those from the legacy map, we return an empty data source for +// namespaced settings to allow it to be overriden by the legacy render settings +// map. We'll revisit this in the future as we transition away from the legacy +// data flow. +// +HdContainerDataSourceHandle +_BuildFallbackSettings() +{ + return nullptr; +} + +HdContainerDataSourceHandle +_BuildFallbackRenderSettingsPrimDataSource() +{ + // Return a valid data source to configure the scene index to add the + // fallback prim if necessary. + // For now, we populate the active field to do so. + return + HdRenderSettingsSchema::Builder() + .SetNamespacedSettings(_BuildFallbackSettings()) + .SetActive( + HdRetainedTypedSampledDataSource::New(false)) + // XXX Add fallback render products, color space, purposes, etc. + .Build(); +} + +} + //////////////////////////////////////////////////////////////////////////////// // Plugin registrations //////////////////////////////////////////////////////////////////////////////// @@ -56,11 +92,21 @@ TF_REGISTRY_FUNCTION(HdSceneIndexPlugin) { const HdSceneIndexPluginRegistry::InsertionPhase insertionPhase = 1; + // Configure the scene index to: + // 1. Filter in settings that have either the ri: or outputs:ri namespaces. + // 2. Insert a fallback render settings prim. + // + // (2) is a workaround to address Riley's requirements around scene options. + // See HdPrman_RenderParam::SetRileyOptions and + // HdPrman_RenderSettings::_Sync for further info. + // const HdContainerDataSourceHandle inputArgs = HdRetainedContainerDataSource::New( HdsiRenderSettingsFilteringSceneIndexTokens->namespacePrefixes, HdRetainedTypedSampledDataSource>::New( - {_namespaceTokens->ri, _namespaceTokens->outputsRi})); + {_namespaceTokens->ri, _namespaceTokens->outputsRi}), + HdsiRenderSettingsFilteringSceneIndexTokens->fallbackPrimDs, + _BuildFallbackRenderSettingsPrimDataSource() ); HdSceneIndexPluginRegistry::GetInstance().RegisterSceneIndexForRenderer( _rendererDisplayName, diff --git a/third_party/renderman-25/plugin/hdPrman/renderSettingsFilteringSceneIndexPlugin.h b/third_party/renderman-25/plugin/hdPrman/renderSettingsFilteringSceneIndexPlugin.h index ab6484f3fe..5f3090c1d9 100644 --- a/third_party/renderman-25/plugin/hdPrman/renderSettingsFilteringSceneIndexPlugin.h +++ b/third_party/renderman-25/plugin/hdPrman/renderSettingsFilteringSceneIndexPlugin.h @@ -32,8 +32,11 @@ PXR_NAMESPACE_OPEN_SCOPE /// \class HdPrman_RenderSettingsFilteringSceneIndexPlugin /// -/// Prman scene index plugin that configures the render settings filtering scene index to filter in -/// Prman settings based on conventions used in UsdRiPxr-schemas applied to RenderSettings prims. +/// Prman scene index plugin that +/// * filters in settings properties based on conventions used in +/// UsdRiPxr-schemas auto-applied to RenderSettings prims. +/// * adds a fallback render settings prim (which will be used for scenes +/// that don't have one). /// class HdPrman_RenderSettingsFilteringSceneIndexPlugin : public HdSceneIndexPlugin diff --git a/third_party/renderman-25/plugin/hdPrman/testenv/testHdPrman.cpp b/third_party/renderman-25/plugin/hdPrman/testenv/testHdPrman.cpp index 5b31258b99..67dd258c23 100644 --- a/third_party/renderman-25/plugin/hdPrman/testenv/testHdPrman.cpp +++ b/third_party/renderman-25/plugin/hdPrman/testenv/testHdPrman.cpp @@ -990,10 +990,6 @@ int main(int argc, char *argv[]) settingsMap[HdPrmanRenderSettingsTokens->experimentalSettingsCameraPath] = camInfo.cameraPath; - AddNamespacedSettings( - UsdRenderComputeNamespacedSettings( - settings.GetPrim(), prmanNamespaces), - &settingsMap); settingsMap[HdRenderSettingsTokens->enableInteractive] = false; HydraSetupAndRender( diff --git a/third_party/renderman-25/plugin/hdPrman/utils.cpp b/third_party/renderman-25/plugin/hdPrman/utils.cpp index a87e46fdfb..72ad7d1e2e 100644 --- a/third_party/renderman-25/plugin/hdPrman/utils.cpp +++ b/third_party/renderman-25/plugin/hdPrman/utils.cpp @@ -728,7 +728,10 @@ GetRileyOptionsFromEnvironment() const bool disableJitter = TfGetEnvSetting(HD_PRMAN_DISABLE_HIDER_JITTER); options.SetInteger(RixStr.k_hider_jitter, !disableJitter); - // XXX Missing HD_PRMAN_MAX_SAMPLES. + if (ArchHasEnv("HD_PRMAN_MAX_SAMPLES")) { + const int maxSamples = TfGetenvInt("HD_PRMAN_MAX_SAMPLES", 64); + options.SetInteger(RixStr.k_hider_maxsamples, maxSamples); + } // Searchpaths (TEXTUREPATH, etc) _UpdateSearchPathsFromEnvironment(options); From 85c6069ea3a0108940eaabc2592901470027f02e Mon Sep 17 00:00:00 2001 From: gitamohr Date: Tue, 25 Jul 2023 16:12:21 -0700 Subject: [PATCH 119/352] sdf: Fix a bug where we didn't properly handle rematching the last segment of a path pattern in incremental searches, which resulted in reading off-the-end of a vector. (Internal change: 2286557) --- pxr/usd/sdf/pathExpressionEval.cpp | 62 ++++++++++++--- pxr/usd/sdf/testenv/testSdfPathExpression.cpp | 78 ++++++++++++++++++- 2 files changed, 127 insertions(+), 13 deletions(-) diff --git a/pxr/usd/sdf/pathExpressionEval.cpp b/pxr/usd/sdf/pathExpressionEval.cpp index a716f7c0ed..9bce598c6e 100644 --- a/pxr/usd/sdf/pathExpressionEval.cpp +++ b/pxr/usd/sdf/pathExpressionEval.cpp @@ -360,8 +360,9 @@ ::_PatternImplBase::_Next( return Result::MakeConstant(false); } - // Check prefix. - if (!path.HasPrefix(_prefix)) { + // Check prefix if we aren't into matching segments yet. If we are into + // segments, we have already checked the prefix. + if (search._segmentMatchDepths.empty() && !path.HasPrefix(_prefix)) { search._constantDepth = 0; search._constantValue = false; return Result::MakeConstant(false); @@ -377,33 +378,70 @@ ::_PatternImplBase::_Next( const size_t pathElemCount = path.GetPathElementCount(); const size_t prefixElemCount = _prefix.GetPathElementCount(); - // If this pattern has no components, it matches if it is the same as the - // prefix, or if it has the prefix and there's a stretch following. + // If this pattern has no components, it matches if there's a stretch or if + // it is the same length as the prefix (which means it is identical to the + // prefix, since we've already done the has-prefix check above). if (_components.empty()) { if (_stretchBegin || _stretchEnd) { + // The pattern allows arbitrary elements following the prefix. search._constantDepth = 0; - search._constantValue = path.HasPrefix(_prefix); + search._constantValue = true; return Result::MakeConstant(search._constantValue); } else if (pathElemCount > prefixElemCount) { + // The given path is descendant to the prefix, but the pattern + // requires an exact match. search._constantDepth = 0; search._constantValue = false; return Result::MakeConstant(search._constantValue); } + // The path is exactly _prefix. return Result::MakeVarying(true); } // We're not a constant value, the prefix matches, and we have components to // match against -- we're looking to match those components. Get the - // segment we're trying to match -- it's the _matchDepths.size()th one. + // segment we're trying to match. If we've already matched all segments but + // we're still searching, it means we need to try to re-match the final + // segment. Consider a case like //Foo//foo/bar incrementally matching + // against the path /Foo/geom/foo/bar/foo/bar/foo/bar. We'll keep + // rematching the final foo/bar bit, to get /Foo/geom/foo/bar, + // /Foo/geom/foo/bar/foo/bar, and /Foo/geom/foo/bar/foo/bar/foo/bar. In + // this case we pop the final segment match depth to proceed with rematching + // that segment. using Segment = _PatternImplBase::_Segment; - Segment const &curSeg = _segments[search._segmentMatchDepths.size()]; - - // Do we have sufficent path components to match? - if (pathElemCount - prefixElemCount < curSeg.GetSize()) { - return Result::MakeVarying(false); + if (search._segmentMatchDepths.size() == _segments.size()) { + // We're looking for a rematch with the final segment. + search._segmentMatchDepths.pop_back(); } + const size_t curSegIdx = search._segmentMatchDepths.size(); + Segment const &curSeg = _segments[curSegIdx]; + Segment const *prevSegPtr = curSegIdx ? &_segments[curSegIdx-1] : nullptr; + + // If we are attempting to match the first segment, ensure we have enough + // components (or exactly the right number if there is no stretch begin). + const size_t numMatchComponents = pathElemCount - ( + prevSegPtr ? + search._segmentMatchDepths.back() + prevSegPtr->GetSize() : + prefixElemCount); + + if (numMatchComponents < curSeg.GetSize()) { + // Not enough path components yet, but we could match once we + // descend to a long enough path. + return Result::MakeVarying(false); + } + + // If we're matching the first segment and there's no stretch begin, the + // number of components must match exactly. + if (!prevSegPtr && + !_stretchBegin && numMatchComponents > curSeg.GetSize()) { + // Too many components; we cannot match this or any descendant path. + search._constantDepth = pathElemCount; + search._constantValue = false; + return Result::MakeConstant(false); + } + // Check for a match here. Go from the end of the path back, and look for // literal component matches first since those are the fastest to check. @@ -461,7 +499,7 @@ ::_PatternImplBase::_Next( } } - // We have matched this component here, so push on. + // We have matched this component here, so push its match depth. search._segmentMatchDepths.push_back(pathElemCount); // If we've completed matching, we can mark ourselves constant if we end diff --git a/pxr/usd/sdf/testenv/testSdfPathExpression.cpp b/pxr/usd/sdf/testenv/testSdfPathExpression.cpp index 05e4dbfb89..015019da65 100644 --- a/pxr/usd/sdf/testenv/testSdfPathExpression.cpp +++ b/pxr/usd/sdf/testenv/testSdfPathExpression.cpp @@ -316,11 +316,87 @@ TestSearch() "/World/anim/sets/Bedroom/Furniture", "/World/anim/sets/Bedroom/Furniture/Bed", "/World/anim/sets/Bedroom/Furniture/Desk", - "/World/anim/sets/Bedroom/Furniture/Chair" + "/World/anim/sets/Bedroom/Furniture/Chair", + "/Foo", + "/Foo/geom", + "/Foo/geom/foo", + "/Foo/geom/foo/bar", + "/Foo/geom/foo/bar/foo", + "/Foo/geom/foo/bar/foo/bar", + "/Foo/geom/foo/bar/foo/bar/foo", + "/Foo/geom/foo/bar/foo/bar/foo/bar" }) { paths.push_back(SdfPath(pathStr)); } + { + auto eval = SdfMakePathExpressionEval( + SdfPathExpression("/Foo/g*m/foo/bar"), predLib); + auto search = eval.MakeIncrementalSearcher( + PathIdentity {}, PathIdentity {}); + for (SdfPath const &p: paths) { + if (search.Next(p)) { + TF_AXIOM(p == SdfPath("/Foo/geom/foo/bar")); + } + } + } + + { + auto eval = SdfMakePathExpressionEval( + SdfPathExpression("/Foo/g*m//foo/bar/foo"), predLib); + auto search = eval.MakeIncrementalSearcher( + PathIdentity {}, PathIdentity {}); + for (SdfPath const &p: paths) { + if (search.Next(p)) { + TF_AXIOM( + p == SdfPath("/Foo/geom/foo/bar/foo") || + p == SdfPath("/Foo/geom/foo/bar/foo/bar/foo")); + } + } + } + + { + auto eval = SdfMakePathExpressionEval( + SdfPathExpression("/Foo/g*m//foo//foo/bar/foo"), predLib); + auto search = eval.MakeIncrementalSearcher( + PathIdentity {}, PathIdentity {}); + for (SdfPath const &p: paths) { + if (search.Next(p)) { + TF_AXIOM( + p == SdfPath("/Foo/geom/foo/bar/foo/bar/foo")); + } + } + } + + { + auto eval = SdfMakePathExpressionEval( + SdfPathExpression("/Foo/g*m/foo//foo/bar"), predLib); + auto search = eval.MakeIncrementalSearcher( + PathIdentity {}, PathIdentity {}); + for (SdfPath const &p: paths) { + if (search.Next(p)) { + TF_AXIOM( + p == SdfPath("/Foo/geom/foo/bar/foo/bar") || + p == SdfPath("/Foo/geom/foo/bar/foo/bar/foo/bar")); + } + } + } + + { + auto eval = SdfMakePathExpressionEval( + SdfPathExpression("//Foo//foo/bar"), predLib); + auto search = eval.MakeIncrementalSearcher( + PathIdentity {}, PathIdentity {}); + for (SdfPath const &p: paths) { + if (search.Next(p)) { + TF_AXIOM( + p == SdfPath("/Foo/geom/foo/bar") || + p == SdfPath("/Foo/geom/foo/bar/foo/bar") || + p == SdfPath("/Foo/geom/foo/bar/foo/bar/foo/bar")); + } + } + } + { auto eval = SdfMakePathExpressionEval( SdfPathExpression("//geom/body_sbdv"), predLib); From 8428ef40bdb8d809e20803d8ef4132a5f2409b5c Mon Sep 17 00:00:00 2001 From: gitamohr Date: Tue, 25 Jul 2023 16:12:40 -0700 Subject: [PATCH 120/352] sdf: Add support for writing SdfPathExpression via Sdf_FileIOUtility. (Internal change: 2286643) --- pxr/usd/sdf/fileIO_Common.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pxr/usd/sdf/fileIO_Common.cpp b/pxr/usd/sdf/fileIO_Common.cpp index a5cc7c16c7..0d93464761 100644 --- a/pxr/usd/sdf/fileIO_Common.cpp +++ b/pxr/usd/sdf/fileIO_Common.cpp @@ -27,6 +27,7 @@ #include "pxr/pxr.h" #include "pxr/usd/sdf/fileIO.h" #include "pxr/usd/sdf/fileIO_Common.h" +#include "pxr/usd/sdf/pathExpression.h" #include "pxr/base/tf/stringUtils.h" @@ -156,6 +157,12 @@ _StringFromValue(const SdfAssetPath& assetPath) return _StringFromAssetPath(assetPath.GetAssetPath()); } +static string +_StringFromValue(const SdfPathExpression& pathExpr) +{ + return Sdf_FileIOUtility::Quote(pathExpr.GetText()); +} + template static void _StringFromVtArray( @@ -846,7 +853,8 @@ Sdf_FileIOUtility::StringFromVtValue(const VtValue &value) string s; if (_StringFromVtValueHelper(&s, value) || _StringFromVtValueHelper(&s, value) || - _StringFromVtValueHelper(&s, value)) { + _StringFromVtValueHelper(&s, value) || + _StringFromVtValueHelper(&s, value)) { return s; } From e57a6d9d301c96afb95ced31ff1a22f5eef4f01e Mon Sep 17 00:00:00 2001 From: klucknav Date: Tue, 25 Jul 2023 16:17:41 -0700 Subject: [PATCH 121/352] [HdSt, HdPrman] Add some error catching for MaterialX to avoid crashes when the shader is unable to be created. The crux of this issue was that if there were validation warnings in the mtlxDoc, using that to create a shader would cause exceptions to be thrown from within the various MaterialX calls. Catching this case within the MaterialXFilter and matfiltMaterialX to avoid the crash. (Internal change: 2286650) --- pxr/imaging/hdMtlx/hdMtlx.cpp | 2 +- pxr/imaging/hdSt/materialXFilter.cpp | 56 +++++++++++-------- .../plugin/hdPrman/matfiltMaterialX.cpp | 18 ++++-- 3 files changed, 48 insertions(+), 28 deletions(-) diff --git a/pxr/imaging/hdMtlx/hdMtlx.cpp b/pxr/imaging/hdMtlx/hdMtlx.cpp index 972430db03..1637a662e2 100644 --- a/pxr/imaging/hdMtlx/hdMtlx.cpp +++ b/pxr/imaging/hdMtlx/hdMtlx.cpp @@ -552,7 +552,7 @@ HdMtlxCreateMtlxDocumentFromHdMaterialNetworkInterface( // Validate the MaterialX Document. std::string message; if (!mxDoc->validate(&message)) { - TF_WARN("Validation warnings for generated MaterialX file.\n%s\n", + TF_WARN("Validation warnings for generated MaterialX file.\n%s", message.c_str()); } diff --git a/pxr/imaging/hdSt/materialXFilter.cpp b/pxr/imaging/hdSt/materialXFilter.cpp index eea0996440..adc92d4262 100644 --- a/pxr/imaging/hdSt/materialXFilter.cpp +++ b/pxr/imaging/hdSt/materialXFilter.cpp @@ -121,11 +121,11 @@ _CreateHdStMaterialXContext( { #if MATERIALX_MAJOR_VERSION >= 1 && MATERIALX_MINOR_VERSION >= 38 && \ MATERIALX_BUILD_VERSION >= 7 - if(apiName == HgiTokens->Metal) { + if (apiName == HgiTokens->Metal) { return HdStMaterialXShaderGenMsl::create(mxHdInfo); } #endif - if(apiName == HgiTokens->OpenGL) { + if (apiName == HgiTokens->OpenGL) { return HdStMaterialXShaderGenGlsl::create(mxHdInfo); } else { @@ -978,9 +978,14 @@ HdSt_ApplyMaterialXFilter( if (glslfxInstance.IsFirstInstance()) { // Generate the MaterialX glslfx ShaderPtr - glslfxShader = _GenerateMaterialXShader( - hdNetwork, materialPath, terminalNode, terminalNodePath, - materialTagToken, apiName, bindlessTexturesEnabled); + try { + glslfxShader = _GenerateMaterialXShader( + hdNetwork, materialPath, terminalNode, terminalNodePath, + materialTagToken, apiName, bindlessTexturesEnabled); + } catch (mx::Exception& exception) { + TF_CODING_ERROR("Unable to create the Glslfx Shader.\n" + "MxException: %s", exception.what()); + } // Store the mx::ShaderPtr glslfxInstance.SetValue(glslfxShader); @@ -1002,28 +1007,35 @@ HdSt_ApplyMaterialXFilter( } else { // Process the network and generate the MaterialX glslfx ShaderPtr - glslfxShader = _GenerateMaterialXShader( - hdNetwork, materialPath, terminalNode, terminalNodePath, - materialTagToken, apiName, bindlessTexturesEnabled); + try { + glslfxShader = _GenerateMaterialXShader( + hdNetwork, materialPath, terminalNode, terminalNodePath, + materialTagToken, apiName, bindlessTexturesEnabled); + } catch (mx::Exception& exception) { + TF_CODING_ERROR("Unable to create the Glslfx Shader.\n" + "MxException: %s", exception.what()); + } // Add material parameters from the glslfxShader _AddMaterialXParams(glslfxShader, materialParams); } - // Create a new terminal node with the new glslfxSource - const std::string glslfxSourceCode = - glslfxShader->getSourceCode(mx::Stage::PIXEL); - SdrShaderNodeConstPtr sdrNode = - sdrRegistry.GetShaderNodeFromSourceCode(glslfxSourceCode, - HioGlslfxTokens->glslfx, - NdrTokenMap()); // metadata - HdMaterialNode2 newTerminalNode; - newTerminalNode.nodeTypeId = sdrNode->GetIdentifier(); - newTerminalNode.inputConnections = terminalNode.inputConnections; - newTerminalNode.parameters = terminalNode.parameters; - - // Replace the original terminalNode with this newTerminalNode - hdNetwork->nodes[terminalNodePath] = newTerminalNode; + // Create a new terminal node with the glslfxShader + if (glslfxShader) { + const std::string glslfxSourceCode = + glslfxShader->getSourceCode(mx::Stage::PIXEL); + SdrShaderNodeConstPtr sdrNode = + sdrRegistry.GetShaderNodeFromSourceCode(glslfxSourceCode, + HioGlslfxTokens->glslfx, + NdrTokenMap()); // metadata + HdMaterialNode2 newTerminalNode; + newTerminalNode.nodeTypeId = sdrNode->GetIdentifier(); + newTerminalNode.inputConnections = terminalNode.inputConnections; + newTerminalNode.parameters = terminalNode.parameters; + + // Replace the original terminalNode with this newTerminalNode + hdNetwork->nodes[terminalNodePath] = newTerminalNode; + } } } diff --git a/third_party/renderman-25/plugin/hdPrman/matfiltMaterialX.cpp b/third_party/renderman-25/plugin/hdPrman/matfiltMaterialX.cpp index fb482c731b..a3610ffbd5 100644 --- a/third_party/renderman-25/plugin/hdPrman/matfiltMaterialX.cpp +++ b/third_party/renderman-25/plugin/hdPrman/matfiltMaterialX.cpp @@ -214,12 +214,20 @@ _GenMaterialXShaderCode( TF_DEBUG(HDPRMAN_MATERIALS) .Msg("Generate a MaterialX Osl shader for '%s' node.\n", mxNodeName.c_str()); - mx::ShaderPtr mxShader = mx::createShader(shaderName, mxContext, mxNode); - if (mxShader) { - return mxShader->getSourceCode(); + mx::ShaderPtr mxShader; + try { + mxShader = mx::createShader(shaderName, mxContext, mxNode); + } catch (mx::Exception& exception) { + TF_WARN("Unable to create Osl Shader for node '%s'.\nMxException: %s", + mxNodeName.c_str(), exception.what()); + return mx::EMPTY_STRING; } - TF_WARN("Unable to create Shader for node '%s'.", mxNodeName.c_str()); - return mx::EMPTY_STRING; + if (!mxShader) { + TF_WARN("Unable to create Osl Shader for node '%s'.", + mxNodeName.c_str()); + return mx::EMPTY_STRING; + } + return mxShader->getSourceCode(); } //////////////////////////////////////////////////////////////////////////////// From a39c2099990182eab6ff27b1bda70669813e9474 Mon Sep 17 00:00:00 2001 From: tgvarik Date: Tue, 25 Jul 2023 16:18:11 -0700 Subject: [PATCH 122/352] [hdx] Fix stale rollover highlight during playback In [hdx], we remove "enableSelection" from HdxSelectionTask and HdxColorizeSelectionTask params. This single boolean previously controlled whether selection and locate highlighting were enabled. In its place, we add "enableSelectionHighlight" and "enableLocateHighlight". Each is a boolean that controls its respective highlight type only. This allows independent control of each type of highlighting, an improvement over the previous "both or neither" approach. HdxSelectionTracker::GetSelectionOffsetBuffer() now takes separate booleans for the two highlight types and will populate the selection buffer only with data for the enabled types. This change bumps HDX_VERSION_API to version 10. (Internal change: 2286655) --- pxr/imaging/hdx/colorizeSelectionTask.cpp | 23 ++++++---- pxr/imaging/hdx/colorizeSelectionTask.h | 6 ++- pxr/imaging/hdx/selectionTask.cpp | 15 ++++--- pxr/imaging/hdx/selectionTask.h | 3 +- pxr/imaging/hdx/selectionTracker.cpp | 43 +++++++++++++------ pxr/imaging/hdx/selectionTracker.h | 9 ++-- pxr/imaging/hdx/taskController.cpp | 18 +++++--- .../hdx/testenv/testHdxPickAndHighlight.cpp | 3 +- .../hdx/testenv/testHdxPickResolveMode.cpp | 2 +- pxr/imaging/hdx/testenv/testHdxPickTarget.cpp | 2 +- ...testHdxPickingWithReprAndRefineChanges.cpp | 2 +- .../testenv/testHdxUnpickablesAsOccluders.cpp | 2 +- pxr/imaging/hdx/version.h | 20 +++++---- 13 files changed, 94 insertions(+), 54 deletions(-) diff --git a/pxr/imaging/hdx/colorizeSelectionTask.cpp b/pxr/imaging/hdx/colorizeSelectionTask.cpp index b30999de70..61034696cc 100644 --- a/pxr/imaging/hdx/colorizeSelectionTask.cpp +++ b/pxr/imaging/hdx/colorizeSelectionTask.cpp @@ -122,8 +122,11 @@ HdxColorizeSelectionTask::Prepare(HdTaskContext* ctx, if (sel && sel->GetVersion() != _lastVersion) { _lastVersion = sel->GetVersion(); _hasSelection = - sel->GetSelectionOffsetBuffer(renderIndex, _params.enableSelection, - &_selectionOffsets); + sel->GetSelectionOffsetBuffer( + renderIndex, + _params.enableSelectionHighlight, + _params.enableLocateHighlight, + &_selectionOffsets); } } @@ -439,7 +442,8 @@ std::ostream& operator<<(std::ostream& out, const HdxColorizeSelectionTaskParams& pv) { out << "ColorizeSelectionTask Params: (...) " - << pv.enableSelection << " " + << pv.enableSelectionHighlight << " " + << pv.enableLocateHighlight << " " << pv.selectionColor << " " << pv.locateColor << " " << pv.primIdBufferPath << " " @@ -451,12 +455,13 @@ std::ostream& operator<<(std::ostream& out, bool operator==(const HdxColorizeSelectionTaskParams& lhs, const HdxColorizeSelectionTaskParams& rhs) { - return lhs.enableSelection == rhs.enableSelection && - lhs.selectionColor == rhs.selectionColor && - lhs.locateColor == rhs.locateColor && - lhs.primIdBufferPath == rhs.primIdBufferPath && - lhs.instanceIdBufferPath == rhs.instanceIdBufferPath && - lhs.elementIdBufferPath == rhs.elementIdBufferPath; + return lhs.enableSelectionHighlight == rhs.enableSelectionHighlight && + lhs.enableLocateHighlight == rhs.enableLocateHighlight && + lhs.selectionColor == rhs.selectionColor && + lhs.locateColor == rhs.locateColor && + lhs.primIdBufferPath == rhs.primIdBufferPath && + lhs.instanceIdBufferPath == rhs.instanceIdBufferPath && + lhs.elementIdBufferPath == rhs.elementIdBufferPath; } bool operator!=(const HdxColorizeSelectionTaskParams& lhs, diff --git a/pxr/imaging/hdx/colorizeSelectionTask.h b/pxr/imaging/hdx/colorizeSelectionTask.h index fe91c9272a..98c141b3e9 100644 --- a/pxr/imaging/hdx/colorizeSelectionTask.h +++ b/pxr/imaging/hdx/colorizeSelectionTask.h @@ -40,7 +40,8 @@ PXR_NAMESPACE_OPEN_SCOPE struct HdxColorizeSelectionTaskParams { HdxColorizeSelectionTaskParams() - : enableSelection(false) + : enableSelectionHighlight(false) + , enableLocateHighlight(false) , selectionColor(0) , locateColor(0) , enableOutline(false) @@ -50,7 +51,8 @@ struct HdxColorizeSelectionTaskParams , elementIdBufferPath() {} - bool enableSelection; + bool enableSelectionHighlight; + bool enableLocateHighlight; GfVec4f selectionColor; GfVec4f locateColor; bool enableOutline; diff --git a/pxr/imaging/hdx/selectionTask.cpp b/pxr/imaging/hdx/selectionTask.cpp index a5a8fc723f..29a0fbd1e2 100644 --- a/pxr/imaging/hdx/selectionTask.cpp +++ b/pxr/imaging/hdx/selectionTask.cpp @@ -44,7 +44,7 @@ HdxSelectionTask::HdxSelectionTask(HdSceneDelegate* delegate, : HdTask(id) , _lastVersion(-1) , _hasSelection(false) - , _params({false, 0.5, GfVec4f(), GfVec4f()}) + , _params({false, false, 0.5, GfVec4f(), GfVec4f()}) , _selOffsetBar(nullptr) , _selUniformBar(nullptr) , _selPointColorsBar(nullptr) @@ -161,8 +161,11 @@ HdxSelectionTask::Prepare(HdTaskContext* ctx, // Offsets // VtIntArray offsets; - _hasSelection = sel->GetSelectionOffsetBuffer(renderIndex, - _params.enableSelection, &offsets); + _hasSelection = sel->GetSelectionOffsetBuffer( + renderIndex, + _params.enableSelectionHighlight, + _params.enableLocateHighlight, + &offsets); hdStResourceRegistry->AddSource( _selOffsetBar, std::make_shared( @@ -202,7 +205,8 @@ HdxSelectionTask::Execute(HdTaskContext* ctx) std::ostream& operator<<(std::ostream& out, const HdxSelectionTaskParams& pv) { - out << pv.enableSelection << " "; + out << pv.enableSelectionHighlight << " "; + out << pv.enableLocateHighlight << " "; out << pv.selectionColor << " "; out << pv.locateColor; return out; @@ -210,7 +214,8 @@ std::ostream& operator<<(std::ostream& out, bool operator==(const HdxSelectionTaskParams& lhs, const HdxSelectionTaskParams& rhs) { - return lhs.enableSelection == rhs.enableSelection + return lhs.enableSelectionHighlight == rhs.enableSelectionHighlight + && lhs.enableLocateHighlight == rhs.enableLocateHighlight && lhs.selectionColor == rhs.selectionColor && lhs.locateColor == rhs.locateColor; } diff --git a/pxr/imaging/hdx/selectionTask.h b/pxr/imaging/hdx/selectionTask.h index 921ead05bf..b7c36579e8 100644 --- a/pxr/imaging/hdx/selectionTask.h +++ b/pxr/imaging/hdx/selectionTask.h @@ -41,7 +41,8 @@ class HdSceneDelegate; struct HdxSelectionTaskParams { - bool enableSelection; + bool enableSelectionHighlight; + bool enableLocateHighlight; float occludedSelectionOpacity; // lerp factor when blending // occluded selection GfVec4f selectionColor; // "active" selection color diff --git a/pxr/imaging/hdx/selectionTracker.cpp b/pxr/imaging/hdx/selectionTracker.cpp index c3fb08ca32..5575e9ba12 100644 --- a/pxr/imaging/hdx/selectionTracker.cpp +++ b/pxr/imaging/hdx/selectionTracker.cpp @@ -170,9 +170,11 @@ namespace { /*virtual*/ bool -HdxSelectionTracker::GetSelectionOffsetBuffer(const HdRenderIndex * const index, - const bool enableSelection, - VtIntArray* const offsets) const +HdxSelectionTracker::GetSelectionOffsetBuffer( + const HdRenderIndex * const index, + const bool enableSelectionHighlight, + const bool enableLocateHighlight, + VtIntArray* const offsets) const { TRACE_FUNCTION(); TfAutoMallocTag2 tag("Hdx", "GetSelectionOffsetBuffer"); @@ -216,15 +218,16 @@ HdxSelectionTracker::GetSelectionOffsetBuffer(const HdRenderIndex * const index, (*offsets)[0] = numHighlightModes; - HdSelectionSharedPtr const selection = - enableSelection + HdSelectionSharedPtr const highlights = + enableSelectionHighlight || enableLocateHighlight ? _mergedSelection->ComputeSelection(index) : nullptr; - // We expect the collection of selected items to be created externally and - // set via SetSelection. Exit early if the tracker doesn't have one set, - // or it's empty. Likewise if enableSelection is false. - if (!selection || selection->IsEmpty()) { + // We expect the collection of highlighted items to be created externally + // and set via SetSelection. Exit early if the tracker doesn't have one set, + // or it's empty. Likewise if both enableSelectionHighlight and + // enableLocateHighlight are false (in which case highlights is nullptr). + if (!highlights || highlights->IsEmpty()) { for (int mode = HdSelection::HighlightModeSelect; mode < HdSelection::HighlightModeCount; mode++) { @@ -235,17 +238,29 @@ HdxSelectionTracker::GetSelectionOffsetBuffer(const HdRenderIndex * const index, } size_t copyOffset = headerSize; + + // XXX: This must match the order of the HdSelection::HighlightMode enum. + // This is not very nice, unfortunately. Much of this code appears to have + // been concerned with making it easy to add additional highlighting modes, + // but the more recent need for fine-grained control over which modes are + // active means we're now starting to fight against that earlier approach. + const bool modeEnabled[] = { + enableSelectionHighlight, + enableLocateHighlight + }; + + TF_VERIFY(sizeof(modeEnabled) / sizeof(modeEnabled[0]) == HdSelection::HighlightModeCount); for (int mode = HdSelection::HighlightModeSelect; mode < HdSelection::HighlightModeCount; mode++) { std::vector output; - const bool modeHasSelection = - _GetSelectionOffsets( - selection, - static_cast(mode), - index, copyOffset, &output); + const bool modeHasSelection = modeEnabled[mode] && _GetSelectionOffsets( + highlights, + static_cast(mode), + index, copyOffset, &output); + hasSelection = hasSelection || modeHasSelection; (*offsets)[mode + 1] = modeHasSelection? copyOffset : SELECT_NONE; diff --git a/pxr/imaging/hdx/selectionTracker.h b/pxr/imaging/hdx/selectionTracker.h index ed320e8447..e3c5164355 100644 --- a/pxr/imaging/hdx/selectionTracker.h +++ b/pxr/imaging/hdx/selectionTracker.h @@ -123,11 +123,14 @@ class HdxSelectionTracker /// uploaded to the GPU and decoded in the fragment shader to provide /// selection highlighting behavior. See HdxSelectionTask. /// Returns true if offsets has anything selected. - /// \p enableSelection is a global on/off switch for selection; if it's - /// false, nothing will be encoded. + /// \p enableSelectionHighlight will populate selection buffer for any + /// active selection highlighting if true. + /// \p enableLocateHighlight will populate selection buffer for any active + /// locate (rollover) highlighting if true. HDX_API virtual bool GetSelectionOffsetBuffer(const HdRenderIndex *index, - bool enableSelection, + bool enableSelectionHighlight, + bool enableLocateHighlight, VtIntArray *offsets) const; HDX_API diff --git a/pxr/imaging/hdx/taskController.cpp b/pxr/imaging/hdx/taskController.cpp index a64cb5e449..06e6ab932c 100644 --- a/pxr/imaging/hdx/taskController.cpp +++ b/pxr/imaging/hdx/taskController.cpp @@ -448,7 +448,8 @@ HdxTaskController::_CreateSelectionTask() _selectionTaskId = GetControllerId().AppendChild(_tokens->selectionTask); HdxSelectionTaskParams selectionParams; - selectionParams.enableSelection = true; + selectionParams.enableSelectionHighlight = true; + selectionParams.enableLocateHighlight = true; selectionParams.selectionColor = GfVec4f(1,1,0,1); selectionParams.locateColor = GfVec4f(0,0,1,1); @@ -467,7 +468,8 @@ HdxTaskController::_CreateColorizeSelectionTask() _tokens->colorizeSelectionTask); HdxColorizeSelectionTaskParams selectionParams; - selectionParams.enableSelection = true; + selectionParams.enableSelectionHighlight = true; + selectionParams.enableLocateHighlight = true; selectionParams.selectionColor = GfVec4f(1,1,0,1); selectionParams.locateColor = GfVec4f(0,0,1,1); @@ -1564,8 +1566,10 @@ HdxTaskController::SetEnableSelection(bool enable) _delegate.GetParameter( _selectionTaskId, HdTokens->params); - if (params.enableSelection != enable) { - params.enableSelection = enable; + if (params.enableSelectionHighlight != enable || + params.enableLocateHighlight != enable) { + params.enableSelectionHighlight = enable; + params.enableLocateHighlight = enable; _delegate.SetParameter(_selectionTaskId, HdTokens->params, params); GetRenderIndex()->GetChangeTracker().MarkTaskDirty( @@ -1578,8 +1582,10 @@ HdxTaskController::SetEnableSelection(bool enable) _delegate.GetParameter( _colorizeSelectionTaskId, HdTokens->params); - if (params.enableSelection != enable) { - params.enableSelection = enable; + if (params.enableSelectionHighlight != enable || + params.enableLocateHighlight != enable) { + params.enableSelectionHighlight = enable; + params.enableLocateHighlight = enable; _delegate.SetParameter(_colorizeSelectionTaskId, HdTokens->params, params); GetRenderIndex()->GetChangeTracker().MarkTaskDirty( diff --git a/pxr/imaging/hdx/testenv/testHdxPickAndHighlight.cpp b/pxr/imaging/hdx/testenv/testHdxPickAndHighlight.cpp index da55ed6f79..cf654fb2b6 100644 --- a/pxr/imaging/hdx/testenv/testHdxPickAndHighlight.cpp +++ b/pxr/imaging/hdx/testenv/testHdxPickAndHighlight.cpp @@ -130,7 +130,8 @@ Hdx_TestDriver::_Init(HdReprSelector const &reprSelector) VtValue(HdRprimCollection(HdTokens->geometry, reprSelector))); HdxSelectionTaskParams selParam; - selParam.enableSelection = true; + selParam.enableSelectionHighlight = true; + selParam.enableLocateHighlight = true; selParam.selectionColor = GfVec4f(1, 1, 0, 1); selParam.locateColor = GfVec4f(1, 0, 1, 1); delegate.SetTaskParam(selectionTask, HdTokens->params, VtValue(selParam)); diff --git a/pxr/imaging/hdx/testenv/testHdxPickResolveMode.cpp b/pxr/imaging/hdx/testenv/testHdxPickResolveMode.cpp index 4388ec0f27..01b748ae8e 100644 --- a/pxr/imaging/hdx/testenv/testHdxPickResolveMode.cpp +++ b/pxr/imaging/hdx/testenv/testHdxPickResolveMode.cpp @@ -119,7 +119,7 @@ Hdx_TestDriver::_Init(HdReprSelector const &reprSelector) VtValue(HdRprimCollection(HdTokens->geometry, sceneReprSel))); HdxSelectionTaskParams selParam; - selParam.enableSelection = true; + selParam.enableSelectionHighlight = true; selParam.selectionColor = GfVec4f(1, 1, 0, 1); selParam.locateColor = GfVec4f(1, 0, 1, 1); delegate.SetTaskParam( diff --git a/pxr/imaging/hdx/testenv/testHdxPickTarget.cpp b/pxr/imaging/hdx/testenv/testHdxPickTarget.cpp index 66d942b631..ca75e29551 100644 --- a/pxr/imaging/hdx/testenv/testHdxPickTarget.cpp +++ b/pxr/imaging/hdx/testenv/testHdxPickTarget.cpp @@ -126,7 +126,7 @@ Hdx_TestDriver::_Init(HdReprSelector const &reprSelector) VtValue(_collection)); HdxSelectionTaskParams selParam; - selParam.enableSelection = true; + selParam.enableSelectionHighlight = true; selParam.selectionColor = GfVec4f(1, 1, 0, 1); selParam.locateColor = GfVec4f(1, 0, 1, 1); delegate.SetTaskParam(selectionTask, HdTokens->params, diff --git a/pxr/imaging/hdx/testenv/testHdxPickingWithReprAndRefineChanges.cpp b/pxr/imaging/hdx/testenv/testHdxPickingWithReprAndRefineChanges.cpp index f9fc943f67..403c826bad 100644 --- a/pxr/imaging/hdx/testenv/testHdxPickingWithReprAndRefineChanges.cpp +++ b/pxr/imaging/hdx/testenv/testHdxPickingWithReprAndRefineChanges.cpp @@ -98,7 +98,7 @@ Hdx_TestDriver::_Init(HdReprSelector const &reprSelector) VtValue(HdRprimCollection(HdTokens->geometry, reprSelector))); HdxSelectionTaskParams selParam; - selParam.enableSelection = true; + selParam.enableSelectionHighlight = true; selParam.selectionColor = GfVec4f(1, 1, 0, 1); selParam.locateColor = GfVec4f(1, 0, 1, 1); delegate.SetTaskParam(selectionTask, HdTokens->params, VtValue(selParam)); diff --git a/pxr/imaging/hdx/testenv/testHdxUnpickablesAsOccluders.cpp b/pxr/imaging/hdx/testenv/testHdxUnpickablesAsOccluders.cpp index 3f90e2b5f8..dd6277ac4a 100644 --- a/pxr/imaging/hdx/testenv/testHdxUnpickablesAsOccluders.cpp +++ b/pxr/imaging/hdx/testenv/testHdxUnpickablesAsOccluders.cpp @@ -100,7 +100,7 @@ Hdx_TestDriver::_Init(HdReprSelector const &reprSelector) VtValue(HdRprimCollection(HdTokens->geometry, reprSelector))); HdxSelectionTaskParams selParam; - selParam.enableSelection = true; + selParam.enableSelectionHighlight = true; selParam.selectionColor = GfVec4f(1, 1, 0, 1); selParam.locateColor = GfVec4f(1, 0, 1, 1); delegate.SetTaskParam(selectionTask, HdTokens->params, VtValue(selParam)); diff --git a/pxr/imaging/hdx/version.h b/pxr/imaging/hdx/version.h index e599a69fca..d47d2a6bad 100644 --- a/pxr/imaging/hdx/version.h +++ b/pxr/imaging/hdx/version.h @@ -24,14 +24,16 @@ #ifndef PXR_IMAGING_HDX_VERSION_H #define PXR_IMAGING_HDX_VERSION_H -// 1 -> 2 : split HdxRenderSetupTask out of HdxRenderTask -// 2 -> 3 : move simpleLightingShader to Hdx. -// 3 -> 4 : move camera and light to Hdx. -// 4 -> 5 : move drawTarget to Hdx. -// 5 -> 6 : change HdxShadowMatrixComputation signature. -// 6 -> 7 : make HdxShadowMatrixComputationSharedPtr std::shared_ptr instead of boost::shared_ptr -// 7 -> 8 : added another HdxShadowMatrixComputation signature. -// 8 -> 9 : added render index as argument to HdxSelectionTracker::GetSelectedPointColors. -#define HDX_API_VERSION 9 +// 1 -> 2 : split HdxRenderSetupTask out of HdxRenderTask +// 2 -> 3 : move simpleLightingShader to Hdx. +// 3 -> 4 : move camera and light to Hdx. +// 4 -> 5 : move drawTarget to Hdx. +// 5 -> 6 : change HdxShadowMatrixComputation signature. +// 6 -> 7 : make HdxShadowMatrixComputationSharedPtr std::shared_ptr instead of boost::shared_ptr +// 7 -> 8 : added another HdxShadowMatrixComputation signature. +// 8 -> 9 : added render index as argument to HdxSelectionTracker::GetSelectedPointColors. +// 9 -> 10 : replaced enableSelection with enableSelectionHighlight and +// enableLocateHighlight on HdxSelectionTask and HdxColorizeSelectionTask params. +#define HDX_API_VERSION 10 #endif // PXR_IMAGING_HDX_VERSION_H From bf9462a443545cf30f4cae2ff549eb5636c84ea8 Mon Sep 17 00:00:00 2001 From: gitamohr Date: Tue, 25 Jul 2023 16:49:17 -0700 Subject: [PATCH 123/352] pcp: Add support for mapping SdfPathExpressions via PcpMapFunctions. (Internal change: 2286677) --- pxr/usd/pcp/mapFunction.cpp | 107 ++++++++++++++++++++++++++++++++ pxr/usd/pcp/mapFunction.h | 58 ++++++++++++++++- pxr/usd/pcp/wrapMapFunction.cpp | 18 ++++-- 3 files changed, 178 insertions(+), 5 deletions(-) diff --git a/pxr/usd/pcp/mapFunction.cpp b/pxr/usd/pcp/mapFunction.cpp index 258742f922..0e3867ea30 100644 --- a/pxr/usd/pcp/mapFunction.cpp +++ b/pxr/usd/pcp/mapFunction.cpp @@ -391,6 +391,113 @@ PcpMapFunction::MapTargetToSource(const SdfPath & path) const /* invert */ true); } +SdfPathExpression +PcpMapFunction::MapSourceToTarget( + const SdfPathExpression &pathExpr, + std::vector *unmappedPatterns, + std::vector *unmappedRefs + ) const +{ + return _MapPathExpressionImpl(/* invert */ false, + pathExpr, unmappedPatterns, unmappedRefs); +} + +SdfPathExpression +PcpMapFunction::MapTargetToSource( + const SdfPathExpression &pathExpr, + std::vector *unmappedPatterns, + std::vector *unmappedRefs + ) const +{ + return _MapPathExpressionImpl(/* invert */ true, + pathExpr, unmappedPatterns, unmappedRefs); +} + +SdfPathExpression +PcpMapFunction::_MapPathExpressionImpl( + bool invert, + const SdfPathExpression &pathExpr, + std::vector *unmappedPatterns, + std::vector *unmappedRefs + ) const +{ + using PathExpr = SdfPathExpression; + using Op = PathExpr::Op; + using PathPattern = PathExpr::PathPattern; + using ExpressionReference = PathExpr::ExpressionReference; + std::vector stack; + + auto map = [&](SdfPath const &path) { + return _Map(path, _data.begin(), _data.numPairs, + _data.hasRootIdentity, invert); + }; + + auto logic = [&stack](Op op, int argIndex) { + if (op == PathExpr::Complement) { + if (argIndex == 1) { + stack.back() = + PathExpr::MakeComplement(std::move(stack.back())); + } + } + else { + if (argIndex == 2) { + PathExpr arg2 = std::move(stack.back()); + stack.pop_back(); + stack.back() = PathExpr::MakeOp( + op, std::move(stack.back()), std::move(arg2)); + } + } + }; + + auto mapRef = + [&stack, &map, &unmappedRefs](ExpressionReference const &ref) { + if (ref.path.IsEmpty()) { + // If empty path, retain the reference unchanged. + stack.push_back(PathExpr::MakeAtom(ref)); + } + else { + SdfPath mapped = map(ref.path); + // This reference is outside the domain, push the Nothing() + // subexpression. + if (mapped.IsEmpty()) { + if (unmappedRefs) { + unmappedRefs->push_back(ref); + } + stack.push_back(SdfPathExpression::Nothing()); + } + // Otherwise push the mapped reference. + else { + stack.push_back(PathExpr::MakeAtom( + PathExpr::ExpressionReference { + mapped, ref.name })); + } + } + }; + + auto mapPattern = + [&stack, &map, &unmappedPatterns](PathPattern const &pattern) { + SdfPath mapped = map(pattern.GetPrefix()); + // If the prefix path is outside the domain, push the Nothing() + // subexpression. + if (mapped.IsEmpty()) { + if (unmappedPatterns) { + unmappedPatterns->push_back(pattern); + } + stack.push_back(SdfPathExpression::Nothing()); + } + // Otherwise push the mapped pattern. + else { + PathPattern mappedPattern(pattern); + mappedPattern.SetPrefix(mapped); + stack.push_back(PathExpr::MakeAtom(mappedPattern)); + } + }; + + // Walk the expression to map. + pathExpr.Walk(logic, mapRef, mapPattern); + return stack.empty() ? SdfPathExpression {} : stack.back(); +} + PcpMapFunction PcpMapFunction::Compose(const PcpMapFunction &inner) const { diff --git a/pxr/usd/pcp/mapFunction.h b/pxr/usd/pcp/mapFunction.h index 29893d4af3..4b2f3034bb 100644 --- a/pxr/usd/pcp/mapFunction.h +++ b/pxr/usd/pcp/mapFunction.h @@ -28,6 +28,7 @@ #include "pxr/usd/pcp/api.h" #include "pxr/usd/sdf/path.h" #include "pxr/usd/sdf/layerOffset.h" +#include "pxr/usd/sdf/pathExpression.h" #include #include @@ -150,6 +151,52 @@ class PcpMapFunction PCP_API SdfPath MapTargetToSource(const SdfPath &path) const; + /// Map all path pattern prefix paths and expression reference paths in the + /// source namespace to the target. For any references or patterns with + /// prefix paths that are not in the domain, replace with an + /// SdfPathPattern::Nothing() subexpression, to be simplified. + /// + /// For example, if the mapping specifies /Foo -> /World/Foo_1, and the + /// expression is '/Foo/Bar//Baz + /Something/Else//Entirely', the resulting + /// expression will be '/World/Foo_1/Bar//Baz', since the + /// /Something/Else prefix is outside the domain. + /// + /// If \p excludedPatterns and/or \p excludedReferences are supplied, they + /// are populated with those patterns & references that could not be + /// translated and were replaced with SdfPathPattern::Nothing(). + PCP_API + SdfPathExpression + MapSourceToTarget( + const SdfPathExpression &pathExpr, + std::vector + *unmappedPatterns = nullptr, + std::vector + *unmappedRefs = nullptr + ) const; + + /// Map all path pattern prefix paths and expression reference paths in the + /// target namespace to the source. For any references or patterns with + /// prefix paths that are not in the co-domain, replace with an + /// SdfPathPattern::Nothing() subexpression, to be simplified. + /// + /// For example, if the mapping specifies /World/Foo_1 -> /Foo, and the + /// expression is '/World/Foo_1/Bar//Baz + /World/Bar//', the resulting + /// expression will be '/Foo/Bar//Baz', since the /World/Bar prefix is + /// outside the co-domain. + /// + /// If \p excludedPatterns and/or \p excludedReferences are supplied, they + /// are populated with those patterns & references that could not be + /// translated and were replaced with SdfPathPattern::Nothing(). + PCP_API + SdfPathExpression + MapTargetToSource( + const SdfPathExpression &pathExpr, + std::vector + *unmappedPatterns = nullptr, + std::vector + *unmappedRefs = nullptr + ) const; + /// Compose this map over the given map function. /// The result will represent the application of f followed by /// the application of this function. @@ -192,9 +239,18 @@ class PcpMapFunction SdfLayerOffset offset, bool hasRootIdentity); + PCP_API + SdfPathExpression + _MapPathExpressionImpl( + bool invert, + const SdfPathExpression &pathExpr, + std::vector *unmappedPatterns, + std::vector *unmappedRefs + ) const; + private: friend PcpMapFunction *Pcp_MakeIdentity(); - + static const int _MaxLocalPairs = 2; struct _Data final { _Data() {}; diff --git a/pxr/usd/pcp/wrapMapFunction.cpp b/pxr/usd/pcp/wrapMapFunction.cpp index a392b7a19e..f76326fdd4 100644 --- a/pxr/usd/pcp/wrapMapFunction.cpp +++ b/pxr/usd/pcp/wrapMapFunction.cpp @@ -123,10 +123,20 @@ void wrapMapFunction() .add_property("isIdentityPathMapping", &This::IsIdentityPathMapping) .add_property("isNull", &This::IsNull) - .def("MapSourceToTarget", &This::MapSourceToTarget, - (arg("path"))) - .def("MapTargetToSource", &This::MapTargetToSource, - (arg("path"))) + .def("MapSourceToTarget", + +[](This const &self, SdfPathExpression const &pathExpr) { + return self.MapSourceToTarget(pathExpr); + }, arg("pathExpr")) + .def("MapTargetToSource", + +[](This const &self, SdfPathExpression const &pathExpr) { + return self.MapTargetToSource(pathExpr); + }, arg("pathExpr")) + + .def("MapSourceToTarget", (SdfPath (This::*)(const SdfPath &) const) + &This::MapSourceToTarget, (arg("path"))) + .def("MapTargetToSource", (SdfPath (This::*)(const SdfPath &) const) + &This::MapTargetToSource, (arg("path"))) + .def("Compose", &This::Compose) .def("ComposeOffset", &This::ComposeOffset, arg("offset")) .def("GetInverse", &This::GetInverse) From a86e5673f68db20041830baeaad5c7df474ffea0 Mon Sep 17 00:00:00 2001 From: unhyperbolic Date: Tue, 25 Jul 2023 16:49:28 -0700 Subject: [PATCH 124/352] UsdImagingNiInstanceAggregationSceneIndex: adding missing invalidation of instance. (Internal change: 2286689) --- pxr/usdImaging/usdImaging/niInstanceAggregationSceneIndex.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/pxr/usdImaging/usdImaging/niInstanceAggregationSceneIndex.cpp b/pxr/usdImaging/usdImaging/niInstanceAggregationSceneIndex.cpp index 329f9e8287..687e5cf5bc 100644 --- a/pxr/usdImaging/usdImaging/niInstanceAggregationSceneIndex.cpp +++ b/pxr/usdImaging/usdImaging/niInstanceAggregationSceneIndex.cpp @@ -1194,6 +1194,7 @@ _InstanceObserver::PrimsDirtied(const HdSceneIndexBase &sender, HdInstancedBySchema::GetDefaultLocator().Append( HdInstancedBySchemaTokens->prototypeRoots), HdMaterialBindingsSchema::GetDefaultLocator(), + HdPurposeSchema::GetDefaultLocator(), UsdImagingUsdPrimInfoSchema::GetNiPrototypePathLocator()}; if (locators.Intersects(resyncLocators)) { From 604ae738fabc2d48cfbda7914249809ac959ffdb Mon Sep 17 00:00:00 2001 From: unhyperbolic Date: Tue, 25 Jul 2023 16:49:38 -0700 Subject: [PATCH 125/352] HdInstancerTopologySchema: add bounds checking to array access. (Internal change: 2286690) --- pxr/imaging/hd/instancerTopologySchema.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pxr/imaging/hd/instancerTopologySchema.cpp b/pxr/imaging/hd/instancerTopologySchema.cpp index 770ad21e1d..82e2b966ce 100644 --- a/pxr/imaging/hd/instancerTopologySchema.cpp +++ b/pxr/imaging/hd/instancerTopologySchema.cpp @@ -50,7 +50,7 @@ HdInstancerTopologySchema::ComputeInstanceIndicesForProto(SdfPath const &path) VtArray matchingPrototypes; // If we can't get the instance indices datasource, not much point... - HdTypedVectorSchema> indicesSchema = GetInstanceIndices(); + HdIntArrayVectorSchema indicesSchema = GetInstanceIndices(); if (!indicesSchema) { return result; } @@ -94,7 +94,8 @@ HdInstancerTopologySchema::ComputeInstanceIndicesForProto(SdfPath const &path) } } else { for (int instanceIndex : instanceIndices) { - if (mask[instanceIndex]) { + if (instanceIndex >= static_cast(mask.size()) || + mask[instanceIndex]) { result.push_back(instanceIndex); } } @@ -239,4 +240,4 @@ HdInstancerTopologySchema::Builder::Build() } -PXR_NAMESPACE_CLOSE_SCOPE \ No newline at end of file +PXR_NAMESPACE_CLOSE_SCOPE From e3ae8403f518c43ac7db2c72b9457ceb78efb356 Mon Sep 17 00:00:00 2001 From: gitamohr Date: Tue, 25 Jul 2023 16:50:01 -0700 Subject: [PATCH 126/352] Add SdfPathExpression as a scene description type. (Internal change: 2286752) --- pxr/usd/sdf/parserHelpers.cpp | 8 + pxr/usd/sdf/propertySpec.cpp | 30 +- pxr/usd/sdf/schema.cpp | 225 +++--- .../sdf/testenv/testSdfMetaDataPlugInfo.cpp | 11 + .../plugInfo.json | 18 + pxr/usd/sdf/textFileFormat.tab.cpp | 644 +++++++++--------- pxr/usd/sdf/textFileFormat.yy | 40 +- pxr/usd/sdf/types.h | 34 +- pxr/usd/sdf/wrapTypes.cpp | 209 +++--- .../testUsdAttributeInterpolationCpp.cpp | 39 +- 10 files changed, 717 insertions(+), 541 deletions(-) diff --git a/pxr/usd/sdf/parserHelpers.cpp b/pxr/usd/sdf/parserHelpers.cpp index 1380030678..fe8f593eb1 100644 --- a/pxr/usd/sdf/parserHelpers.cpp +++ b/pxr/usd/sdf/parserHelpers.cpp @@ -295,6 +295,13 @@ MakeScalarValueImpl( *out = vars[index++].Get(); } +inline void +MakeScalarValueImpl( + SdfPathExpression *out, vector const &vars, size_t &index) { + CHECK_BOUNDS(1, "pathExpression"); + *out = SdfPathExpression(vars[index++].Get()); +} + inline void MakeScalarValueImpl( SdfOpaqueValue *out, vector const &vars, size_t &index) { @@ -413,6 +420,7 @@ TF_MAKE_STATIC_DATA(_ValueFactoryMap, _valueFactories) { builder.add(SdfValueTypeNames->Asset); builder.add(SdfValueTypeNames->Opaque); builder.add(SdfValueTypeNames->Group); + builder.add(SdfValueTypeNames->PathExpression); builder.add(SdfValueTypeNames->Int2); builder.add(SdfValueTypeNames->Half2); diff --git a/pxr/usd/sdf/propertySpec.cpp b/pxr/usd/sdf/propertySpec.cpp index 83a1a75783..c6ee26f181 100644 --- a/pxr/usd/sdf/propertySpec.cpp +++ b/pxr/usd/sdf/propertySpec.cpp @@ -27,6 +27,7 @@ #include "pxr/usd/sdf/accessorHelpers.h" #include "pxr/usd/sdf/childrenUtils.h" #include "pxr/usd/sdf/layer.h" +#include "pxr/usd/sdf/pathExpression.h" #include "pxr/usd/sdf/primSpec.h" #include "pxr/usd/sdf/schema.h" @@ -197,13 +198,40 @@ SdfPropertySpec::SetDefaultValue(const VtValue &defaultValue) if (valueType == defaultValue.GetType()) { return SetField(SdfFieldKeys->Default, defaultValue); } - } else { // Otherwise check if defaultValue is castable to valueType VtValue value = VtValue::CastToTypeid(defaultValue, valueType.GetTypeid()); if (!value.IsEmpty()) { + // If this value is a pathExpression, make all embedded paths + // absolute using this property's prim path as the anchor. + if (value.IsHolding() && + !value.UncheckedGet().IsAbsolute()) { + value.UncheckedMutate( + [&](SdfPathExpression &expr) { + expr = expr.MakeAbsolute(GetPath().GetPrimPath()); + }); + } + else if (value.IsHolding>()) { + SdfPath const &anchor = GetPath().GetPrimPath(); + value.UncheckedMutate>( + [&](VtArray &exprArr) { + for (SdfPathExpression &expr: exprArr) { + expr = expr.MakeAbsolute(anchor); + } + }); + } + /* + // If this value is a path (relationship default-values are paths), + // make it absolute using this property's prim path as the anchor. + else if (value.IsHolding() && + !value.UncheckedGet().IsAbsolutePath()) { + value.UncheckedMutate([&](SdfPath &path) { + path = path.MakeAbsolutePath(GetPath().GetPrimPath()); + }); + } + */ return SetField(SdfFieldKeys->Default, value); } else if (defaultValue.IsHolding()) { diff --git a/pxr/usd/sdf/schema.cpp b/pxr/usd/sdf/schema.cpp index 0789e35095..145c170564 100644 --- a/pxr/usd/sdf/schema.cpp +++ b/pxr/usd/sdf/schema.cpp @@ -27,6 +27,7 @@ #include "pxr/usd/sdf/layer.h" #include "pxr/usd/sdf/layerOffset.h" #include "pxr/usd/sdf/parserValueContext.h" +#include "pxr/usd/sdf/pathExpression.h" #include "pxr/usd/sdf/payload.h" #include "pxr/usd/sdf/reference.h" #include "pxr/usd/sdf/schemaTypeRegistration.h" @@ -461,6 +462,7 @@ _AddStandardTypesToRegistry(Sdf_ValueTypeRegistry* r) r->AddType(T("opaque", SdfOpaqueValue()).NoArrays()); r->AddType(T("group", SdfOpaqueValue()) .NoArrays().Role(SdfValueRoleNames->Group)); + r->AddType(T("pathExpression", SdfPathExpression())); // Compound types. r->AddType(T("double2", GfVec2d(0.0)).Dimensions(2)); @@ -1194,6 +1196,17 @@ SdfSchemaBase::IsValidValue(const VtValue& value) const } } } + else if (value.IsHolding()) { + // Path expressions must be absolute, following requirements for other + // SdfPaths written to files (rel targets, attr connections, inherit + // paths, etc.) + SdfPathExpression const &pathExpr = + value.UncheckedGet(); + if (!pathExpr.IsAbsolute()) { + return SdfAllowed("pathExpression paths must be absolute paths " + "(\"" + pathExpr.GetText() + "\")"); + } + } else if (!FindType(value)) { return SdfAllowed( "Value does not have a valid scene description type " @@ -1340,7 +1353,7 @@ SdfSchemaBase::IsValidInheritPath(const SdfPath& path) "variant selections"); } if (!(path.IsAbsolutePath() && path.IsPrimPath())) { - return SdfAllowed("Inherit paths must be an absolute prim path"); + return SdfAllowed("Inherit paths must be absolute prim paths"); } return true; } @@ -1353,7 +1366,7 @@ SdfSchemaBase::IsValidSpecializesPath(const SdfPath& path) "variant selections"); } if (!(path.IsAbsolutePath() && path.IsPrimPath())) { - return SdfAllowed("Specializes paths must be absolute prim path"); + return SdfAllowed("Specializes paths must be absolute prim paths"); } return true; } @@ -1865,109 +1878,111 @@ Sdf_InitializeValueTypeNames() const Sdf_ValueTypeRegistry& r = registry.registry; Sdf_ValueTypeNamesType* n = new Sdf_ValueTypeNamesType; - n->Bool = r.FindType("bool"); - n->UChar = r.FindType("uchar"); - n->Int = r.FindType("int"); - n->UInt = r.FindType("uint"); - n->Int64 = r.FindType("int64"); - n->UInt64 = r.FindType("uint64"); - n->Half = r.FindType("half"); - n->Float = r.FindType("float"); - n->Double = r.FindType("double"); - n->TimeCode = r.FindType("timecode"); - n->String = r.FindType("string"); - n->Token = r.FindType("token"); - n->Asset = r.FindType("asset"); - n->Opaque = r.FindType("opaque"); - n->Group = r.FindType("group"); - n->Int2 = r.FindType("int2"); - n->Int3 = r.FindType("int3"); - n->Int4 = r.FindType("int4"); - n->Half2 = r.FindType("half2"); - n->Half3 = r.FindType("half3"); - n->Half4 = r.FindType("half4"); - n->Float2 = r.FindType("float2"); - n->Float3 = r.FindType("float3"); - n->Float4 = r.FindType("float4"); - n->Double2 = r.FindType("double2"); - n->Double3 = r.FindType("double3"); - n->Double4 = r.FindType("double4"); - n->Point3h = r.FindType("point3h"); - n->Point3f = r.FindType("point3f"); - n->Point3d = r.FindType("point3d"); - n->Vector3h = r.FindType("vector3h"); - n->Vector3f = r.FindType("vector3f"); - n->Vector3d = r.FindType("vector3d"); - n->Normal3h = r.FindType("normal3h"); - n->Normal3f = r.FindType("normal3f"); - n->Normal3d = r.FindType("normal3d"); - n->Color3h = r.FindType("color3h"); - n->Color3f = r.FindType("color3f"); - n->Color3d = r.FindType("color3d"); - n->Color4h = r.FindType("color4h"); - n->Color4f = r.FindType("color4f"); - n->Color4d = r.FindType("color4d"); - n->Quath = r.FindType("quath"); - n->Quatf = r.FindType("quatf"); - n->Quatd = r.FindType("quatd"); - n->Matrix2d = r.FindType("matrix2d"); - n->Matrix3d = r.FindType("matrix3d"); - n->Matrix4d = r.FindType("matrix4d"); - n->Frame4d = r.FindType("frame4d"); - n->TexCoord2f = r.FindType("texCoord2f"); - n->TexCoord2d = r.FindType("texCoord2d"); - n->TexCoord2h = r.FindType("texCoord2h"); - n->TexCoord3f = r.FindType("texCoord3f"); - n->TexCoord3d = r.FindType("texCoord3d"); - n->TexCoord3h = r.FindType("texCoord3h"); - - n->BoolArray = r.FindType("bool[]"); - n->UCharArray = r.FindType("uchar[]"); - n->IntArray = r.FindType("int[]"); - n->UIntArray = r.FindType("uint[]"); - n->Int64Array = r.FindType("int64[]"); - n->UInt64Array = r.FindType("uint64[]"); - n->HalfArray = r.FindType("half[]"); - n->FloatArray = r.FindType("float[]"); - n->DoubleArray = r.FindType("double[]"); - n->TimeCodeArray = r.FindType("timecode[]"); - n->StringArray = r.FindType("string[]"); - n->TokenArray = r.FindType("token[]"); - n->AssetArray = r.FindType("asset[]"); - n->Int2Array = r.FindType("int2[]"); - n->Int3Array = r.FindType("int3[]"); - n->Int4Array = r.FindType("int4[]"); - n->Half2Array = r.FindType("half2[]"); - n->Half3Array = r.FindType("half3[]"); - n->Half4Array = r.FindType("half4[]"); - n->Float2Array = r.FindType("float2[]"); - n->Float3Array = r.FindType("float3[]"); - n->Float4Array = r.FindType("float4[]"); - n->Double2Array = r.FindType("double2[]"); - n->Double3Array = r.FindType("double3[]"); - n->Double4Array = r.FindType("double4[]"); - n->Point3hArray = r.FindType("point3h[]"); - n->Point3fArray = r.FindType("point3f[]"); - n->Point3dArray = r.FindType("point3d[]"); - n->Vector3hArray = r.FindType("vector3h[]"); - n->Vector3fArray = r.FindType("vector3f[]"); - n->Vector3dArray = r.FindType("vector3d[]"); - n->Normal3hArray = r.FindType("normal3h[]"); - n->Normal3fArray = r.FindType("normal3f[]"); - n->Normal3dArray = r.FindType("normal3d[]"); - n->Color3hArray = r.FindType("color3h[]"); - n->Color3fArray = r.FindType("color3f[]"); - n->Color3dArray = r.FindType("color3d[]"); - n->Color4hArray = r.FindType("color4h[]"); - n->Color4fArray = r.FindType("color4f[]"); - n->Color4dArray = r.FindType("color4d[]"); - n->QuathArray = r.FindType("quath[]"); - n->QuatfArray = r.FindType("quatf[]"); - n->QuatdArray = r.FindType("quatd[]"); - n->Matrix2dArray = r.FindType("matrix2d[]"); - n->Matrix3dArray = r.FindType("matrix3d[]"); - n->Matrix4dArray = r.FindType("matrix4d[]"); - n->Frame4dArray = r.FindType("frame4d[]"); + n->Bool = r.FindType("bool"); + n->UChar = r.FindType("uchar"); + n->Int = r.FindType("int"); + n->UInt = r.FindType("uint"); + n->Int64 = r.FindType("int64"); + n->UInt64 = r.FindType("uint64"); + n->Half = r.FindType("half"); + n->Float = r.FindType("float"); + n->Double = r.FindType("double"); + n->TimeCode = r.FindType("timecode"); + n->String = r.FindType("string"); + n->Token = r.FindType("token"); + n->Asset = r.FindType("asset"); + n->Opaque = r.FindType("opaque"); + n->Group = r.FindType("group"); + n->PathExpression = r.FindType("pathExpression"); + n->Int2 = r.FindType("int2"); + n->Int3 = r.FindType("int3"); + n->Int4 = r.FindType("int4"); + n->Half2 = r.FindType("half2"); + n->Half3 = r.FindType("half3"); + n->Half4 = r.FindType("half4"); + n->Float2 = r.FindType("float2"); + n->Float3 = r.FindType("float3"); + n->Float4 = r.FindType("float4"); + n->Double2 = r.FindType("double2"); + n->Double3 = r.FindType("double3"); + n->Double4 = r.FindType("double4"); + n->Point3h = r.FindType("point3h"); + n->Point3f = r.FindType("point3f"); + n->Point3d = r.FindType("point3d"); + n->Vector3h = r.FindType("vector3h"); + n->Vector3f = r.FindType("vector3f"); + n->Vector3d = r.FindType("vector3d"); + n->Normal3h = r.FindType("normal3h"); + n->Normal3f = r.FindType("normal3f"); + n->Normal3d = r.FindType("normal3d"); + n->Color3h = r.FindType("color3h"); + n->Color3f = r.FindType("color3f"); + n->Color3d = r.FindType("color3d"); + n->Color4h = r.FindType("color4h"); + n->Color4f = r.FindType("color4f"); + n->Color4d = r.FindType("color4d"); + n->Quath = r.FindType("quath"); + n->Quatf = r.FindType("quatf"); + n->Quatd = r.FindType("quatd"); + n->Matrix2d = r.FindType("matrix2d"); + n->Matrix3d = r.FindType("matrix3d"); + n->Matrix4d = r.FindType("matrix4d"); + n->Frame4d = r.FindType("frame4d"); + n->TexCoord2f = r.FindType("texCoord2f"); + n->TexCoord2d = r.FindType("texCoord2d"); + n->TexCoord2h = r.FindType("texCoord2h"); + n->TexCoord3f = r.FindType("texCoord3f"); + n->TexCoord3d = r.FindType("texCoord3d"); + n->TexCoord3h = r.FindType("texCoord3h"); + + n->BoolArray = r.FindType("bool[]"); + n->UCharArray = r.FindType("uchar[]"); + n->IntArray = r.FindType("int[]"); + n->UIntArray = r.FindType("uint[]"); + n->Int64Array = r.FindType("int64[]"); + n->UInt64Array = r.FindType("uint64[]"); + n->HalfArray = r.FindType("half[]"); + n->FloatArray = r.FindType("float[]"); + n->DoubleArray = r.FindType("double[]"); + n->TimeCodeArray = r.FindType("timecode[]"); + n->StringArray = r.FindType("string[]"); + n->TokenArray = r.FindType("token[]"); + n->AssetArray = r.FindType("asset[]"); + n->PathExpressionArray = r.FindType("pathExpression[]"); + n->Int2Array = r.FindType("int2[]"); + n->Int3Array = r.FindType("int3[]"); + n->Int4Array = r.FindType("int4[]"); + n->Half2Array = r.FindType("half2[]"); + n->Half3Array = r.FindType("half3[]"); + n->Half4Array = r.FindType("half4[]"); + n->Float2Array = r.FindType("float2[]"); + n->Float3Array = r.FindType("float3[]"); + n->Float4Array = r.FindType("float4[]"); + n->Double2Array = r.FindType("double2[]"); + n->Double3Array = r.FindType("double3[]"); + n->Double4Array = r.FindType("double4[]"); + n->Point3hArray = r.FindType("point3h[]"); + n->Point3fArray = r.FindType("point3f[]"); + n->Point3dArray = r.FindType("point3d[]"); + n->Vector3hArray = r.FindType("vector3h[]"); + n->Vector3fArray = r.FindType("vector3f[]"); + n->Vector3dArray = r.FindType("vector3d[]"); + n->Normal3hArray = r.FindType("normal3h[]"); + n->Normal3fArray = r.FindType("normal3f[]"); + n->Normal3dArray = r.FindType("normal3d[]"); + n->Color3hArray = r.FindType("color3h[]"); + n->Color3fArray = r.FindType("color3f[]"); + n->Color3dArray = r.FindType("color3d[]"); + n->Color4hArray = r.FindType("color4h[]"); + n->Color4fArray = r.FindType("color4f[]"); + n->Color4dArray = r.FindType("color4d[]"); + n->QuathArray = r.FindType("quath[]"); + n->QuatfArray = r.FindType("quatf[]"); + n->QuatdArray = r.FindType("quatd[]"); + n->Matrix2dArray = r.FindType("matrix2d[]"); + n->Matrix3dArray = r.FindType("matrix3d[]"); + n->Matrix4dArray = r.FindType("matrix4d[]"); + n->Frame4dArray = r.FindType("frame4d[]"); n->TexCoord2fArray = r.FindType("texCoord2f[]"); n->TexCoord2dArray = r.FindType("texCoord2d[]"); n->TexCoord2hArray = r.FindType("texCoord2h[]"); diff --git a/pxr/usd/sdf/testenv/testSdfMetaDataPlugInfo.cpp b/pxr/usd/sdf/testenv/testSdfMetaDataPlugInfo.cpp index fd0e4f3cbc..d34868b0cd 100644 --- a/pxr/usd/sdf/testenv/testSdfMetaDataPlugInfo.cpp +++ b/pxr/usd/sdf/testenv/testSdfMetaDataPlugInfo.cpp @@ -631,3 +631,14 @@ void GetInfo(VtArray *array, string *name) // No initialization necessary; SdfOpaqueValue is an empty struct. *array = VtArray(3); } + +template <> +void +GetInfo(VtArray *array, string *name) +{ + *name = "pathExpression"; + *array = VtArray(3); + (*array)[0] = SdfPathExpression("/foo /bar"); + (*array)[1] = SdfPathExpression("/bar /baz"); + (*array)[2] = SdfPathExpression("/baz /qux"); +} diff --git a/pxr/usd/sdf/testenv/testSdfMetaDataPlugInfo.testenv/plugInfo.json b/pxr/usd/sdf/testenv/testSdfMetaDataPlugInfo.testenv/plugInfo.json index 8b8b73d0a7..a1a263507c 100644 --- a/pxr/usd/sdf/testenv/testSdfMetaDataPlugInfo.testenv/plugInfo.json +++ b/pxr/usd/sdf/testenv/testSdfMetaDataPlugInfo.testenv/plugInfo.json @@ -784,7 +784,25 @@ "timecode_single_default": { "default": 1, "type": "timecode" + }, + "pathExpression_shaped": { + "type": "pathExpression[]" + }, + "pathExpression_shaped_default": { + "default": [ + "/foo /bar", + "/bar /baz", + "/baz /qux" + ], + "type": "pathExpression[]" + }, + "pathExpression_single": { + "type": "pathExpression" }, + "pathExpression_single_default": { + "default": "/foo /bar", + "type": "pathExpression" + }, "uchar_shaped": { "type": "uchar[]" }, diff --git a/pxr/usd/sdf/textFileFormat.tab.cpp b/pxr/usd/sdf/textFileFormat.tab.cpp index 4aaffede3c..a148f92a13 100644 --- a/pxr/usd/sdf/textFileFormat.tab.cpp +++ b/pxr/usd/sdf/textFileFormat.tab.cpp @@ -308,6 +308,36 @@ _AppendVectorItem(const TfToken& key, const T& item, context->data->Set(context->path, key, VtValue(vec)); } +inline static void +_SetDefault(const SdfPath& path, VtValue val, + Sdf_TextParserContext *context) +{ + // If is holding SdfPathExpression (or array of same), make absolute with + // path.GetPrimPath() as anchor. + if (val.IsHolding()) { + val.UncheckedMutate([&](SdfPathExpression &pe) { + pe = pe.MakeAbsolute(path.GetPrimPath()); + }); + } + else if (val.IsHolding>()) { + val.UncheckedMutate>( + [&](VtArray &peArr) { + for (SdfPathExpression &pe: peArr) { + pe = pe.MakeAbsolute(path.GetPrimPath()); + } + }); + } + /* + else if (val.IsHolding()) { + SdfPath valPath; + val.UncheckedSwap(valPath); + expr.MakeAbsolutePath(path.GetPrimPath()); + val.UncheckedSwap(valPath); + } + */ + context->data->Set(path, SdfFieldKeys->Default, val); +} + template inline static void _SetField(const SdfPath& path, const TfToken& key, const T& item, @@ -1294,7 +1324,7 @@ _GenericMetadataEnd(SdfSpecType specType, Sdf_TextParserContext *context) /* Line 189 of yacc.c */ -#line 1275 "pxr/usd/sdf/textFileFormat.tab.cpp" +#line 1305 "pxr/usd/sdf/textFileFormat.tab.cpp" /* Enabling traces. */ #ifndef YYDEBUG @@ -1391,7 +1421,7 @@ typedef int YYSTYPE; /* Line 264 of yacc.c */ -#line 1372 "pxr/usd/sdf/textFileFormat.tab.cpp" +#line 1402 "pxr/usd/sdf/textFileFormat.tab.cpp" #ifdef short # undef short @@ -1867,53 +1897,53 @@ static const yytype_int16 yyrhs[] = /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 1292, 1292, 1295, 1296, 1297, 1298, 1299, 1300, 1301, - 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, - 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, - 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, - 1332, 1333, 1334, 1335, 1336, 1337, 1345, 1346, 1357, 1357, - 1369, 1375, 1387, 1388, 1392, 1393, 1397, 1401, 1406, 1406, - 1415, 1415, 1421, 1421, 1427, 1427, 1433, 1433, 1439, 1439, - 1447, 1454, 1458, 1459, 1473, 1474, 1478, 1486, 1493, 1495, - 1499, 1500, 1504, 1508, 1515, 1516, 1524, 1524, 1528, 1528, - 1532, 1532, 1536, 1536, 1540, 1540, 1544, 1544, 1548, 1558, - 1559, 1566, 1566, 1626, 1627, 1631, 1632, 1636, 1637, 1641, - 1642, 1643, 1647, 1652, 1652, 1661, 1661, 1667, 1667, 1673, - 1673, 1679, 1679, 1685, 1685, 1693, 1700, 1707, 1714, 1714, - 1721, 1721, 1728, 1728, 1735, 1735, 1742, 1742, 1749, 1749, - 1757, 1757, 1762, 1762, 1767, 1767, 1772, 1772, 1777, 1777, - 1782, 1782, 1788, 1788, 1793, 1793, 1798, 1798, 1803, 1803, - 1808, 1808, 1813, 1813, 1819, 1819, 1826, 1826, 1833, 1833, - 1840, 1840, 1847, 1847, 1854, 1854, 1863, 1871, 1875, 1879, - 1883, 1887, 1891, 1895, 1901, 1906, 1913, 1921, 1930, 1931, - 1932, 1933, 1937, 1938, 1942, 1954, 1954, 1977, 1979, 1980, - 1984, 1985, 1989, 1993, 1994, 1995, 1996, 2000, 2001, 2005, - 2018, 2018, 2042, 2044, 2045, 2049, 2050, 2054, 2055, 2059, - 2060, 2061, 2062, 2066, 2067, 2071, 2077, 2078, 2079, 2080, - 2084, 2085, 2089, 2095, 2098, 2100, 2104, 2105, 2109, 2115, - 2116, 2120, 2121, 2125, 2133, 2134, 2138, 2139, 2143, 2144, - 2145, 2146, 2147, 2151, 2151, 2185, 2186, 2190, 2190, 2233, - 2242, 2255, 2256, 2264, 2267, 2276, 2282, 2285, 2291, 2295, - 2301, 2308, 2301, 2319, 2327, 2319, 2338, 2338, 2346, 2346, - 2354, 2354, 2362, 2362, 2370, 2370, 2378, 2378, 2389, 2389, - 2401, 2402, 2403, 2404, 2412, 2413, 2414, 2415, 2419, 2420, - 2424, 2434, 2434, 2439, 2441, 2445, 2446, 2450, 2450, 2457, - 2469, 2471, 2472, 2476, 2477, 2481, 2482, 2483, 2487, 2492, - 2492, 2501, 2501, 2507, 2507, 2513, 2513, 2519, 2519, 2525, - 2525, 2533, 2540, 2547, 2555, 2560, 2567, 2569, 2573, 2578, - 2590, 2590, 2598, 2600, 2604, 2605, 2609, 2612, 2620, 2621, - 2625, 2626, 2630, 2636, 2646, 2646, 2654, 2656, 2660, 2661, - 2665, 2678, 2684, 2694, 2698, 2699, 2712, 2715, 2718, 2721, - 2732, 2738, 2741, 2744, 2749, 2762, 2762, 2771, 2775, 2776, - 2780, 2781, 2782, 2790, 2790, 2797, 2801, 2802, 2806, 2807, - 2815, 2819, 2823, 2827, 2834, 2834, 2846, 2861, 2861, 2871, - 2871, 2879, 2879, 2887, 2887, 2895, 2895, 2904, 2904, 2912, - 2919, 2920, 2923, 2925, 2926, 2930, 2931, 2935, 2936, 2937, - 2941, 2946, 2946, 2955, 2955, 2961, 2961, 2967, 2967, 2973, - 2973, 2979, 2979, 2987, 2994, 3002, 3007, 3014, 3016, 3020, - 3021, 3024, 3027, 3031, 3032, 3036, 3046, 3049, 3053, 3059, - 3070, 3071, 3077, 3078, 3079, 3084, 3085, 3090, 3091, 3094, - 3096, 3100, 3101, 3105, 3106, 3110, 3113, 3115, 3119, 3120 + 0, 1322, 1322, 1325, 1326, 1327, 1328, 1329, 1330, 1331, + 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, + 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, + 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, + 1362, 1363, 1364, 1365, 1366, 1367, 1375, 1376, 1387, 1387, + 1399, 1405, 1417, 1418, 1422, 1423, 1427, 1431, 1436, 1436, + 1445, 1445, 1451, 1451, 1457, 1457, 1463, 1463, 1469, 1469, + 1477, 1484, 1488, 1489, 1503, 1504, 1508, 1516, 1523, 1525, + 1529, 1530, 1534, 1538, 1545, 1546, 1554, 1554, 1558, 1558, + 1562, 1562, 1566, 1566, 1570, 1570, 1574, 1574, 1578, 1588, + 1589, 1596, 1596, 1656, 1657, 1661, 1662, 1666, 1667, 1671, + 1672, 1673, 1677, 1682, 1682, 1691, 1691, 1697, 1697, 1703, + 1703, 1709, 1709, 1715, 1715, 1723, 1730, 1737, 1744, 1744, + 1751, 1751, 1758, 1758, 1765, 1765, 1772, 1772, 1779, 1779, + 1787, 1787, 1792, 1792, 1797, 1797, 1802, 1802, 1807, 1807, + 1812, 1812, 1818, 1818, 1823, 1823, 1828, 1828, 1833, 1833, + 1838, 1838, 1843, 1843, 1849, 1849, 1856, 1856, 1863, 1863, + 1870, 1870, 1877, 1877, 1884, 1884, 1893, 1901, 1905, 1909, + 1913, 1917, 1921, 1925, 1931, 1936, 1943, 1951, 1960, 1961, + 1962, 1963, 1967, 1968, 1972, 1984, 1984, 2007, 2009, 2010, + 2014, 2015, 2019, 2023, 2024, 2025, 2026, 2030, 2031, 2035, + 2048, 2048, 2072, 2074, 2075, 2079, 2080, 2084, 2085, 2089, + 2090, 2091, 2092, 2096, 2097, 2101, 2107, 2108, 2109, 2110, + 2114, 2115, 2119, 2125, 2128, 2130, 2134, 2135, 2139, 2145, + 2146, 2150, 2151, 2155, 2163, 2164, 2168, 2169, 2173, 2174, + 2175, 2176, 2177, 2181, 2181, 2215, 2216, 2220, 2220, 2263, + 2272, 2285, 2286, 2294, 2297, 2306, 2312, 2315, 2321, 2325, + 2331, 2338, 2331, 2349, 2357, 2349, 2368, 2368, 2376, 2376, + 2384, 2384, 2392, 2392, 2400, 2400, 2408, 2408, 2419, 2419, + 2431, 2432, 2433, 2434, 2442, 2443, 2444, 2445, 2449, 2450, + 2454, 2464, 2464, 2469, 2471, 2475, 2476, 2480, 2480, 2487, + 2499, 2501, 2502, 2506, 2507, 2511, 2512, 2513, 2517, 2522, + 2522, 2531, 2531, 2537, 2537, 2543, 2543, 2549, 2549, 2555, + 2555, 2563, 2570, 2577, 2585, 2590, 2597, 2599, 2603, 2606, + 2616, 2616, 2624, 2626, 2630, 2631, 2635, 2638, 2646, 2647, + 2651, 2652, 2656, 2662, 2672, 2672, 2680, 2682, 2686, 2687, + 2691, 2704, 2710, 2720, 2724, 2725, 2738, 2741, 2744, 2747, + 2758, 2764, 2767, 2770, 2775, 2788, 2788, 2797, 2801, 2802, + 2806, 2807, 2808, 2816, 2816, 2823, 2827, 2828, 2832, 2833, + 2841, 2845, 2849, 2853, 2860, 2860, 2872, 2887, 2887, 2897, + 2897, 2905, 2905, 2913, 2913, 2921, 2921, 2930, 2930, 2938, + 2945, 2946, 2949, 2951, 2952, 2956, 2957, 2961, 2962, 2963, + 2967, 2972, 2972, 2981, 2981, 2987, 2987, 2993, 2993, 2999, + 2999, 3005, 3005, 3013, 3020, 3028, 3033, 3040, 3042, 3046, + 3047, 3050, 3053, 3057, 3058, 3062, 3072, 3075, 3079, 3085, + 3096, 3097, 3103, 3104, 3105, 3110, 3111, 3116, 3117, 3120, + 3122, 3126, 3127, 3131, 3132, 3136, 3139, 3141, 3145, 3146 }; #endif @@ -3472,7 +3502,7 @@ YYSTYPE yylval; case 47: /* Line 1455 of yacc.c */ -#line 1346 "pxr/usd/sdf/textFileFormat.yy" +#line 1376 "pxr/usd/sdf/textFileFormat.yy" { // Store the names of the root prims. @@ -3486,7 +3516,7 @@ YYSTYPE yylval; case 48: /* Line 1455 of yacc.c */ -#line 1357 "pxr/usd/sdf/textFileFormat.yy" +#line 1387 "pxr/usd/sdf/textFileFormat.yy" { _MatchMagicIdentifier((yyvsp[(1) - (1)]), context); context->nameChildrenStack.push_back(std::vector()); @@ -3501,7 +3531,7 @@ YYSTYPE yylval; case 50: /* Line 1455 of yacc.c */ -#line 1369 "pxr/usd/sdf/textFileFormat.yy" +#line 1399 "pxr/usd/sdf/textFileFormat.yy" { // If we're only reading metadata and we got here, // we're done. @@ -3513,7 +3543,7 @@ YYSTYPE yylval; case 51: /* Line 1455 of yacc.c */ -#line 1375 "pxr/usd/sdf/textFileFormat.yy" +#line 1405 "pxr/usd/sdf/textFileFormat.yy" { // Abort if error after layer metadata. ABORT_IF_ERROR(context->seenError); @@ -3528,7 +3558,7 @@ YYSTYPE yylval; case 57: /* Line 1455 of yacc.c */ -#line 1401 "pxr/usd/sdf/textFileFormat.yy" +#line 1431 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->Comment, @@ -3539,7 +3569,7 @@ YYSTYPE yylval; case 58: /* Line 1455 of yacc.c */ -#line 1406 "pxr/usd/sdf/textFileFormat.yy" +#line 1436 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(1) - (1)]), SdfSpecTypePseudoRoot, context); ;} @@ -3548,7 +3578,7 @@ YYSTYPE yylval; case 59: /* Line 1455 of yacc.c */ -#line 1408 "pxr/usd/sdf/textFileFormat.yy" +#line 1438 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypePseudoRoot, context); ;} @@ -3557,7 +3587,7 @@ YYSTYPE yylval; case 60: /* Line 1455 of yacc.c */ -#line 1415 "pxr/usd/sdf/textFileFormat.yy" +#line 1445 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(2) - (2)]), SdfSpecTypePseudoRoot, context); context->listOpType = SdfListOpTypeDeleted; @@ -3567,7 +3597,7 @@ YYSTYPE yylval; case 61: /* Line 1455 of yacc.c */ -#line 1418 "pxr/usd/sdf/textFileFormat.yy" +#line 1448 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypePseudoRoot, context); ;} @@ -3576,7 +3606,7 @@ YYSTYPE yylval; case 62: /* Line 1455 of yacc.c */ -#line 1421 "pxr/usd/sdf/textFileFormat.yy" +#line 1451 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(2) - (2)]), SdfSpecTypePseudoRoot, context); context->listOpType = SdfListOpTypeAdded; @@ -3586,7 +3616,7 @@ YYSTYPE yylval; case 63: /* Line 1455 of yacc.c */ -#line 1424 "pxr/usd/sdf/textFileFormat.yy" +#line 1454 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypePseudoRoot, context); ;} @@ -3595,7 +3625,7 @@ YYSTYPE yylval; case 64: /* Line 1455 of yacc.c */ -#line 1427 "pxr/usd/sdf/textFileFormat.yy" +#line 1457 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(2) - (2)]), SdfSpecTypePseudoRoot, context); context->listOpType = SdfListOpTypePrepended; @@ -3605,7 +3635,7 @@ YYSTYPE yylval; case 65: /* Line 1455 of yacc.c */ -#line 1430 "pxr/usd/sdf/textFileFormat.yy" +#line 1460 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypePseudoRoot, context); ;} @@ -3614,7 +3644,7 @@ YYSTYPE yylval; case 66: /* Line 1455 of yacc.c */ -#line 1433 "pxr/usd/sdf/textFileFormat.yy" +#line 1463 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(2) - (2)]), SdfSpecTypePseudoRoot, context); context->listOpType = SdfListOpTypeAppended; @@ -3624,7 +3654,7 @@ YYSTYPE yylval; case 67: /* Line 1455 of yacc.c */ -#line 1436 "pxr/usd/sdf/textFileFormat.yy" +#line 1466 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypePseudoRoot, context); ;} @@ -3633,7 +3663,7 @@ YYSTYPE yylval; case 68: /* Line 1455 of yacc.c */ -#line 1439 "pxr/usd/sdf/textFileFormat.yy" +#line 1469 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(2) - (2)]), SdfSpecTypePseudoRoot, context); context->listOpType = SdfListOpTypeOrdered; @@ -3643,7 +3673,7 @@ YYSTYPE yylval; case 69: /* Line 1455 of yacc.c */ -#line 1442 "pxr/usd/sdf/textFileFormat.yy" +#line 1472 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypePseudoRoot, context); ;} @@ -3652,7 +3682,7 @@ YYSTYPE yylval; case 70: /* Line 1455 of yacc.c */ -#line 1447 "pxr/usd/sdf/textFileFormat.yy" +#line 1477 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->Documentation, @@ -3663,7 +3693,7 @@ YYSTYPE yylval; case 73: /* Line 1455 of yacc.c */ -#line 1459 "pxr/usd/sdf/textFileFormat.yy" +#line 1489 "pxr/usd/sdf/textFileFormat.yy" { _SetField( SdfPath::AbsoluteRootPath(), SdfFieldKeys->SubLayers, @@ -3680,7 +3710,7 @@ YYSTYPE yylval; case 76: /* Line 1455 of yacc.c */ -#line 1478 "pxr/usd/sdf/textFileFormat.yy" +#line 1508 "pxr/usd/sdf/textFileFormat.yy" { context->subLayerPaths.push_back(context->layerRefPath); context->subLayerOffsets.push_back(context->layerRefOffset); @@ -3691,7 +3721,7 @@ YYSTYPE yylval; case 77: /* Line 1455 of yacc.c */ -#line 1486 "pxr/usd/sdf/textFileFormat.yy" +#line 1516 "pxr/usd/sdf/textFileFormat.yy" { context->layerRefPath = (yyvsp[(1) - (1)]).Get(); context->layerRefOffset = SdfLayerOffset(); @@ -3702,7 +3732,7 @@ YYSTYPE yylval; case 82: /* Line 1455 of yacc.c */ -#line 1504 "pxr/usd/sdf/textFileFormat.yy" +#line 1534 "pxr/usd/sdf/textFileFormat.yy" { context->layerRefOffset.SetOffset( (yyvsp[(3) - (3)]).Get() ); ABORT_IF_ERROR(context->seenError); @@ -3712,7 +3742,7 @@ YYSTYPE yylval; case 83: /* Line 1455 of yacc.c */ -#line 1508 "pxr/usd/sdf/textFileFormat.yy" +#line 1538 "pxr/usd/sdf/textFileFormat.yy" { context->layerRefOffset.SetScale( (yyvsp[(3) - (3)]).Get() ); ABORT_IF_ERROR(context->seenError); @@ -3722,7 +3752,7 @@ YYSTYPE yylval; case 86: /* Line 1455 of yacc.c */ -#line 1524 "pxr/usd/sdf/textFileFormat.yy" +#line 1554 "pxr/usd/sdf/textFileFormat.yy" { context->specifier = SdfSpecifierDef; context->typeName = TfToken(); @@ -3732,7 +3762,7 @@ YYSTYPE yylval; case 88: /* Line 1455 of yacc.c */ -#line 1528 "pxr/usd/sdf/textFileFormat.yy" +#line 1558 "pxr/usd/sdf/textFileFormat.yy" { context->specifier = SdfSpecifierDef; context->typeName = TfToken((yyvsp[(2) - (2)]).Get()); @@ -3742,7 +3772,7 @@ YYSTYPE yylval; case 90: /* Line 1455 of yacc.c */ -#line 1532 "pxr/usd/sdf/textFileFormat.yy" +#line 1562 "pxr/usd/sdf/textFileFormat.yy" { context->specifier = SdfSpecifierClass; context->typeName = TfToken(); @@ -3752,7 +3782,7 @@ YYSTYPE yylval; case 92: /* Line 1455 of yacc.c */ -#line 1536 "pxr/usd/sdf/textFileFormat.yy" +#line 1566 "pxr/usd/sdf/textFileFormat.yy" { context->specifier = SdfSpecifierClass; context->typeName = TfToken((yyvsp[(2) - (2)]).Get()); @@ -3762,7 +3792,7 @@ YYSTYPE yylval; case 94: /* Line 1455 of yacc.c */ -#line 1540 "pxr/usd/sdf/textFileFormat.yy" +#line 1570 "pxr/usd/sdf/textFileFormat.yy" { context->specifier = SdfSpecifierOver; context->typeName = TfToken(); @@ -3772,7 +3802,7 @@ YYSTYPE yylval; case 96: /* Line 1455 of yacc.c */ -#line 1544 "pxr/usd/sdf/textFileFormat.yy" +#line 1574 "pxr/usd/sdf/textFileFormat.yy" { context->specifier = SdfSpecifierOver; context->typeName = TfToken((yyvsp[(2) - (2)]).Get()); @@ -3782,7 +3812,7 @@ YYSTYPE yylval; case 98: /* Line 1455 of yacc.c */ -#line 1548 "pxr/usd/sdf/textFileFormat.yy" +#line 1578 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->PrimOrder, @@ -3794,14 +3824,14 @@ YYSTYPE yylval; case 99: /* Line 1455 of yacc.c */ -#line 1558 "pxr/usd/sdf/textFileFormat.yy" +#line 1588 "pxr/usd/sdf/textFileFormat.yy" { (yyval) = (yyvsp[(1) - (1)]); ;} break; case 100: /* Line 1455 of yacc.c */ -#line 1559 "pxr/usd/sdf/textFileFormat.yy" +#line 1589 "pxr/usd/sdf/textFileFormat.yy" { (yyval) = std::string( (yyvsp[(1) - (3)]).Get() + '.' + (yyvsp[(3) - (3)]).Get() ); @@ -3811,7 +3841,7 @@ YYSTYPE yylval; case 101: /* Line 1455 of yacc.c */ -#line 1566 "pxr/usd/sdf/textFileFormat.yy" +#line 1596 "pxr/usd/sdf/textFileFormat.yy" { TfToken name((yyvsp[(1) - (1)]).Get()); if (!SdfPath::IsValidIdentifier(name)) { @@ -3847,7 +3877,7 @@ YYSTYPE yylval; case 102: /* Line 1455 of yacc.c */ -#line 1599 "pxr/usd/sdf/textFileFormat.yy" +#line 1629 "pxr/usd/sdf/textFileFormat.yy" { // Store the names of our children if (!context->nameChildrenStack.back().empty()) { @@ -3875,7 +3905,7 @@ YYSTYPE yylval; case 112: /* Line 1455 of yacc.c */ -#line 1647 "pxr/usd/sdf/textFileFormat.yy" +#line 1677 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->Comment, @@ -3886,7 +3916,7 @@ YYSTYPE yylval; case 113: /* Line 1455 of yacc.c */ -#line 1652 "pxr/usd/sdf/textFileFormat.yy" +#line 1682 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(1) - (1)]), SdfSpecTypePrim, context); ;} @@ -3895,7 +3925,7 @@ YYSTYPE yylval; case 114: /* Line 1455 of yacc.c */ -#line 1654 "pxr/usd/sdf/textFileFormat.yy" +#line 1684 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypePrim, context); ;} @@ -3904,7 +3934,7 @@ YYSTYPE yylval; case 115: /* Line 1455 of yacc.c */ -#line 1661 "pxr/usd/sdf/textFileFormat.yy" +#line 1691 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(2) - (2)]), SdfSpecTypePrim, context); context->listOpType = SdfListOpTypeDeleted; @@ -3914,7 +3944,7 @@ YYSTYPE yylval; case 116: /* Line 1455 of yacc.c */ -#line 1664 "pxr/usd/sdf/textFileFormat.yy" +#line 1694 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypePrim, context); ;} @@ -3923,7 +3953,7 @@ YYSTYPE yylval; case 117: /* Line 1455 of yacc.c */ -#line 1667 "pxr/usd/sdf/textFileFormat.yy" +#line 1697 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(2) - (2)]), SdfSpecTypePrim, context); context->listOpType = SdfListOpTypeAdded; @@ -3933,7 +3963,7 @@ YYSTYPE yylval; case 118: /* Line 1455 of yacc.c */ -#line 1670 "pxr/usd/sdf/textFileFormat.yy" +#line 1700 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypePrim, context); ;} @@ -3942,7 +3972,7 @@ YYSTYPE yylval; case 119: /* Line 1455 of yacc.c */ -#line 1673 "pxr/usd/sdf/textFileFormat.yy" +#line 1703 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(2) - (2)]), SdfSpecTypePrim, context); context->listOpType = SdfListOpTypePrepended; @@ -3952,7 +3982,7 @@ YYSTYPE yylval; case 120: /* Line 1455 of yacc.c */ -#line 1676 "pxr/usd/sdf/textFileFormat.yy" +#line 1706 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypePrim, context); ;} @@ -3961,7 +3991,7 @@ YYSTYPE yylval; case 121: /* Line 1455 of yacc.c */ -#line 1679 "pxr/usd/sdf/textFileFormat.yy" +#line 1709 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(2) - (2)]), SdfSpecTypePrim, context); context->listOpType = SdfListOpTypeAppended; @@ -3971,7 +4001,7 @@ YYSTYPE yylval; case 122: /* Line 1455 of yacc.c */ -#line 1682 "pxr/usd/sdf/textFileFormat.yy" +#line 1712 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypePrim, context); ;} @@ -3980,7 +4010,7 @@ YYSTYPE yylval; case 123: /* Line 1455 of yacc.c */ -#line 1685 "pxr/usd/sdf/textFileFormat.yy" +#line 1715 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(2) - (2)]), SdfSpecTypePrim, context); context->listOpType = SdfListOpTypeOrdered; @@ -3990,7 +4020,7 @@ YYSTYPE yylval; case 124: /* Line 1455 of yacc.c */ -#line 1688 "pxr/usd/sdf/textFileFormat.yy" +#line 1718 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypePrim, context); ;} @@ -3999,7 +4029,7 @@ YYSTYPE yylval; case 125: /* Line 1455 of yacc.c */ -#line 1693 "pxr/usd/sdf/textFileFormat.yy" +#line 1723 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->Documentation, @@ -4010,7 +4040,7 @@ YYSTYPE yylval; case 126: /* Line 1455 of yacc.c */ -#line 1700 "pxr/usd/sdf/textFileFormat.yy" +#line 1730 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->Kind, @@ -4021,7 +4051,7 @@ YYSTYPE yylval; case 127: /* Line 1455 of yacc.c */ -#line 1707 "pxr/usd/sdf/textFileFormat.yy" +#line 1737 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->Permission, @@ -4033,7 +4063,7 @@ YYSTYPE yylval; case 128: /* Line 1455 of yacc.c */ -#line 1714 "pxr/usd/sdf/textFileFormat.yy" +#line 1744 "pxr/usd/sdf/textFileFormat.yy" { context->layerRefPath = std::string(); context->savedPath = SdfPath(); @@ -4044,7 +4074,7 @@ YYSTYPE yylval; case 129: /* Line 1455 of yacc.c */ -#line 1718 "pxr/usd/sdf/textFileFormat.yy" +#line 1748 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetPayloadListItems(SdfListOpTypeExplicit, context); ;} @@ -4053,7 +4083,7 @@ YYSTYPE yylval; case 130: /* Line 1455 of yacc.c */ -#line 1721 "pxr/usd/sdf/textFileFormat.yy" +#line 1751 "pxr/usd/sdf/textFileFormat.yy" { context->layerRefPath = std::string(); context->savedPath = SdfPath(); @@ -4064,7 +4094,7 @@ YYSTYPE yylval; case 131: /* Line 1455 of yacc.c */ -#line 1725 "pxr/usd/sdf/textFileFormat.yy" +#line 1755 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetPayloadListItems(SdfListOpTypeDeleted, context); ;} @@ -4073,7 +4103,7 @@ YYSTYPE yylval; case 132: /* Line 1455 of yacc.c */ -#line 1728 "pxr/usd/sdf/textFileFormat.yy" +#line 1758 "pxr/usd/sdf/textFileFormat.yy" { context->layerRefPath = std::string(); context->savedPath = SdfPath(); @@ -4084,7 +4114,7 @@ YYSTYPE yylval; case 133: /* Line 1455 of yacc.c */ -#line 1732 "pxr/usd/sdf/textFileFormat.yy" +#line 1762 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetPayloadListItems(SdfListOpTypeAdded, context); ;} @@ -4093,7 +4123,7 @@ YYSTYPE yylval; case 134: /* Line 1455 of yacc.c */ -#line 1735 "pxr/usd/sdf/textFileFormat.yy" +#line 1765 "pxr/usd/sdf/textFileFormat.yy" { context->layerRefPath = std::string(); context->savedPath = SdfPath(); @@ -4104,7 +4134,7 @@ YYSTYPE yylval; case 135: /* Line 1455 of yacc.c */ -#line 1739 "pxr/usd/sdf/textFileFormat.yy" +#line 1769 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetPayloadListItems(SdfListOpTypePrepended, context); ;} @@ -4113,7 +4143,7 @@ YYSTYPE yylval; case 136: /* Line 1455 of yacc.c */ -#line 1742 "pxr/usd/sdf/textFileFormat.yy" +#line 1772 "pxr/usd/sdf/textFileFormat.yy" { context->layerRefPath = std::string(); context->savedPath = SdfPath(); @@ -4124,7 +4154,7 @@ YYSTYPE yylval; case 137: /* Line 1455 of yacc.c */ -#line 1746 "pxr/usd/sdf/textFileFormat.yy" +#line 1776 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetPayloadListItems(SdfListOpTypeAppended, context); ;} @@ -4133,7 +4163,7 @@ YYSTYPE yylval; case 138: /* Line 1455 of yacc.c */ -#line 1749 "pxr/usd/sdf/textFileFormat.yy" +#line 1779 "pxr/usd/sdf/textFileFormat.yy" { context->layerRefPath = std::string(); context->savedPath = SdfPath(); @@ -4144,7 +4174,7 @@ YYSTYPE yylval; case 139: /* Line 1455 of yacc.c */ -#line 1753 "pxr/usd/sdf/textFileFormat.yy" +#line 1783 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetPayloadListItems(SdfListOpTypeOrdered, context); ;} @@ -4153,7 +4183,7 @@ YYSTYPE yylval; case 140: /* Line 1455 of yacc.c */ -#line 1757 "pxr/usd/sdf/textFileFormat.yy" +#line 1787 "pxr/usd/sdf/textFileFormat.yy" { context->inheritParsingTargetPaths.clear(); ;} @@ -4162,7 +4192,7 @@ YYSTYPE yylval; case 141: /* Line 1455 of yacc.c */ -#line 1759 "pxr/usd/sdf/textFileFormat.yy" +#line 1789 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetInheritListItems(SdfListOpTypeExplicit, context); ;} @@ -4171,7 +4201,7 @@ YYSTYPE yylval; case 142: /* Line 1455 of yacc.c */ -#line 1762 "pxr/usd/sdf/textFileFormat.yy" +#line 1792 "pxr/usd/sdf/textFileFormat.yy" { context->inheritParsingTargetPaths.clear(); ;} @@ -4180,7 +4210,7 @@ YYSTYPE yylval; case 143: /* Line 1455 of yacc.c */ -#line 1764 "pxr/usd/sdf/textFileFormat.yy" +#line 1794 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetInheritListItems(SdfListOpTypeDeleted, context); ;} @@ -4189,7 +4219,7 @@ YYSTYPE yylval; case 144: /* Line 1455 of yacc.c */ -#line 1767 "pxr/usd/sdf/textFileFormat.yy" +#line 1797 "pxr/usd/sdf/textFileFormat.yy" { context->inheritParsingTargetPaths.clear(); ;} @@ -4198,7 +4228,7 @@ YYSTYPE yylval; case 145: /* Line 1455 of yacc.c */ -#line 1769 "pxr/usd/sdf/textFileFormat.yy" +#line 1799 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetInheritListItems(SdfListOpTypeAdded, context); ;} @@ -4207,7 +4237,7 @@ YYSTYPE yylval; case 146: /* Line 1455 of yacc.c */ -#line 1772 "pxr/usd/sdf/textFileFormat.yy" +#line 1802 "pxr/usd/sdf/textFileFormat.yy" { context->inheritParsingTargetPaths.clear(); ;} @@ -4216,7 +4246,7 @@ YYSTYPE yylval; case 147: /* Line 1455 of yacc.c */ -#line 1774 "pxr/usd/sdf/textFileFormat.yy" +#line 1804 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetInheritListItems(SdfListOpTypePrepended, context); ;} @@ -4225,7 +4255,7 @@ YYSTYPE yylval; case 148: /* Line 1455 of yacc.c */ -#line 1777 "pxr/usd/sdf/textFileFormat.yy" +#line 1807 "pxr/usd/sdf/textFileFormat.yy" { context->inheritParsingTargetPaths.clear(); ;} @@ -4234,7 +4264,7 @@ YYSTYPE yylval; case 149: /* Line 1455 of yacc.c */ -#line 1779 "pxr/usd/sdf/textFileFormat.yy" +#line 1809 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetInheritListItems(SdfListOpTypeAppended, context); ;} @@ -4243,7 +4273,7 @@ YYSTYPE yylval; case 150: /* Line 1455 of yacc.c */ -#line 1782 "pxr/usd/sdf/textFileFormat.yy" +#line 1812 "pxr/usd/sdf/textFileFormat.yy" { context->inheritParsingTargetPaths.clear(); ;} @@ -4252,7 +4282,7 @@ YYSTYPE yylval; case 151: /* Line 1455 of yacc.c */ -#line 1784 "pxr/usd/sdf/textFileFormat.yy" +#line 1814 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetInheritListItems(SdfListOpTypeOrdered, context); ;} @@ -4261,7 +4291,7 @@ YYSTYPE yylval; case 152: /* Line 1455 of yacc.c */ -#line 1788 "pxr/usd/sdf/textFileFormat.yy" +#line 1818 "pxr/usd/sdf/textFileFormat.yy" { context->specializesParsingTargetPaths.clear(); ;} @@ -4270,7 +4300,7 @@ YYSTYPE yylval; case 153: /* Line 1455 of yacc.c */ -#line 1790 "pxr/usd/sdf/textFileFormat.yy" +#line 1820 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetSpecializesListItems(SdfListOpTypeExplicit, context); ;} @@ -4279,7 +4309,7 @@ YYSTYPE yylval; case 154: /* Line 1455 of yacc.c */ -#line 1793 "pxr/usd/sdf/textFileFormat.yy" +#line 1823 "pxr/usd/sdf/textFileFormat.yy" { context->specializesParsingTargetPaths.clear(); ;} @@ -4288,7 +4318,7 @@ YYSTYPE yylval; case 155: /* Line 1455 of yacc.c */ -#line 1795 "pxr/usd/sdf/textFileFormat.yy" +#line 1825 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetSpecializesListItems(SdfListOpTypeDeleted, context); ;} @@ -4297,7 +4327,7 @@ YYSTYPE yylval; case 156: /* Line 1455 of yacc.c */ -#line 1798 "pxr/usd/sdf/textFileFormat.yy" +#line 1828 "pxr/usd/sdf/textFileFormat.yy" { context->specializesParsingTargetPaths.clear(); ;} @@ -4306,7 +4336,7 @@ YYSTYPE yylval; case 157: /* Line 1455 of yacc.c */ -#line 1800 "pxr/usd/sdf/textFileFormat.yy" +#line 1830 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetSpecializesListItems(SdfListOpTypeAdded, context); ;} @@ -4315,7 +4345,7 @@ YYSTYPE yylval; case 158: /* Line 1455 of yacc.c */ -#line 1803 "pxr/usd/sdf/textFileFormat.yy" +#line 1833 "pxr/usd/sdf/textFileFormat.yy" { context->specializesParsingTargetPaths.clear(); ;} @@ -4324,7 +4354,7 @@ YYSTYPE yylval; case 159: /* Line 1455 of yacc.c */ -#line 1805 "pxr/usd/sdf/textFileFormat.yy" +#line 1835 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetSpecializesListItems(SdfListOpTypePrepended, context); ;} @@ -4333,7 +4363,7 @@ YYSTYPE yylval; case 160: /* Line 1455 of yacc.c */ -#line 1808 "pxr/usd/sdf/textFileFormat.yy" +#line 1838 "pxr/usd/sdf/textFileFormat.yy" { context->specializesParsingTargetPaths.clear(); ;} @@ -4342,7 +4372,7 @@ YYSTYPE yylval; case 161: /* Line 1455 of yacc.c */ -#line 1810 "pxr/usd/sdf/textFileFormat.yy" +#line 1840 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetSpecializesListItems(SdfListOpTypeAppended, context); ;} @@ -4351,7 +4381,7 @@ YYSTYPE yylval; case 162: /* Line 1455 of yacc.c */ -#line 1813 "pxr/usd/sdf/textFileFormat.yy" +#line 1843 "pxr/usd/sdf/textFileFormat.yy" { context->specializesParsingTargetPaths.clear(); ;} @@ -4360,7 +4390,7 @@ YYSTYPE yylval; case 163: /* Line 1455 of yacc.c */ -#line 1815 "pxr/usd/sdf/textFileFormat.yy" +#line 1845 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetSpecializesListItems(SdfListOpTypeOrdered, context); ;} @@ -4369,7 +4399,7 @@ YYSTYPE yylval; case 164: /* Line 1455 of yacc.c */ -#line 1819 "pxr/usd/sdf/textFileFormat.yy" +#line 1849 "pxr/usd/sdf/textFileFormat.yy" { context->layerRefPath = std::string(); context->savedPath = SdfPath(); @@ -4380,7 +4410,7 @@ YYSTYPE yylval; case 165: /* Line 1455 of yacc.c */ -#line 1823 "pxr/usd/sdf/textFileFormat.yy" +#line 1853 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetReferenceListItems(SdfListOpTypeExplicit, context); ;} @@ -4389,7 +4419,7 @@ YYSTYPE yylval; case 166: /* Line 1455 of yacc.c */ -#line 1826 "pxr/usd/sdf/textFileFormat.yy" +#line 1856 "pxr/usd/sdf/textFileFormat.yy" { context->layerRefPath = std::string(); context->savedPath = SdfPath(); @@ -4400,7 +4430,7 @@ YYSTYPE yylval; case 167: /* Line 1455 of yacc.c */ -#line 1830 "pxr/usd/sdf/textFileFormat.yy" +#line 1860 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetReferenceListItems(SdfListOpTypeDeleted, context); ;} @@ -4409,7 +4439,7 @@ YYSTYPE yylval; case 168: /* Line 1455 of yacc.c */ -#line 1833 "pxr/usd/sdf/textFileFormat.yy" +#line 1863 "pxr/usd/sdf/textFileFormat.yy" { context->layerRefPath = std::string(); context->savedPath = SdfPath(); @@ -4420,7 +4450,7 @@ YYSTYPE yylval; case 169: /* Line 1455 of yacc.c */ -#line 1837 "pxr/usd/sdf/textFileFormat.yy" +#line 1867 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetReferenceListItems(SdfListOpTypeAdded, context); ;} @@ -4429,7 +4459,7 @@ YYSTYPE yylval; case 170: /* Line 1455 of yacc.c */ -#line 1840 "pxr/usd/sdf/textFileFormat.yy" +#line 1870 "pxr/usd/sdf/textFileFormat.yy" { context->layerRefPath = std::string(); context->savedPath = SdfPath(); @@ -4440,7 +4470,7 @@ YYSTYPE yylval; case 171: /* Line 1455 of yacc.c */ -#line 1844 "pxr/usd/sdf/textFileFormat.yy" +#line 1874 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetReferenceListItems(SdfListOpTypePrepended, context); ;} @@ -4449,7 +4479,7 @@ YYSTYPE yylval; case 172: /* Line 1455 of yacc.c */ -#line 1847 "pxr/usd/sdf/textFileFormat.yy" +#line 1877 "pxr/usd/sdf/textFileFormat.yy" { context->layerRefPath = std::string(); context->savedPath = SdfPath(); @@ -4460,7 +4490,7 @@ YYSTYPE yylval; case 173: /* Line 1455 of yacc.c */ -#line 1851 "pxr/usd/sdf/textFileFormat.yy" +#line 1881 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetReferenceListItems(SdfListOpTypeAppended, context); ;} @@ -4469,7 +4499,7 @@ YYSTYPE yylval; case 174: /* Line 1455 of yacc.c */ -#line 1854 "pxr/usd/sdf/textFileFormat.yy" +#line 1884 "pxr/usd/sdf/textFileFormat.yy" { context->layerRefPath = std::string(); context->savedPath = SdfPath(); @@ -4480,7 +4510,7 @@ YYSTYPE yylval; case 175: /* Line 1455 of yacc.c */ -#line 1858 "pxr/usd/sdf/textFileFormat.yy" +#line 1888 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetReferenceListItems(SdfListOpTypeOrdered, context); ;} @@ -4489,7 +4519,7 @@ YYSTYPE yylval; case 176: /* Line 1455 of yacc.c */ -#line 1863 "pxr/usd/sdf/textFileFormat.yy" +#line 1893 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->Relocates, @@ -4501,7 +4531,7 @@ YYSTYPE yylval; case 177: /* Line 1455 of yacc.c */ -#line 1871 "pxr/usd/sdf/textFileFormat.yy" +#line 1901 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetVariantSelection(context); ;} @@ -4510,7 +4540,7 @@ YYSTYPE yylval; case 178: /* Line 1455 of yacc.c */ -#line 1875 "pxr/usd/sdf/textFileFormat.yy" +#line 1905 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetVariantSetNamesListItems(SdfListOpTypeExplicit, context); context->nameVector.clear(); @@ -4520,7 +4550,7 @@ YYSTYPE yylval; case 179: /* Line 1455 of yacc.c */ -#line 1879 "pxr/usd/sdf/textFileFormat.yy" +#line 1909 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetVariantSetNamesListItems(SdfListOpTypeDeleted, context); context->nameVector.clear(); @@ -4530,7 +4560,7 @@ YYSTYPE yylval; case 180: /* Line 1455 of yacc.c */ -#line 1883 "pxr/usd/sdf/textFileFormat.yy" +#line 1913 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetVariantSetNamesListItems(SdfListOpTypeAdded, context); context->nameVector.clear(); @@ -4540,7 +4570,7 @@ YYSTYPE yylval; case 181: /* Line 1455 of yacc.c */ -#line 1887 "pxr/usd/sdf/textFileFormat.yy" +#line 1917 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetVariantSetNamesListItems(SdfListOpTypePrepended, context); context->nameVector.clear(); @@ -4550,7 +4580,7 @@ YYSTYPE yylval; case 182: /* Line 1455 of yacc.c */ -#line 1891 "pxr/usd/sdf/textFileFormat.yy" +#line 1921 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetVariantSetNamesListItems(SdfListOpTypeAppended, context); context->nameVector.clear(); @@ -4560,7 +4590,7 @@ YYSTYPE yylval; case 183: /* Line 1455 of yacc.c */ -#line 1895 "pxr/usd/sdf/textFileFormat.yy" +#line 1925 "pxr/usd/sdf/textFileFormat.yy" { _PrimSetVariantSetNamesListItems(SdfListOpTypeOrdered, context); context->nameVector.clear(); @@ -4570,7 +4600,7 @@ YYSTYPE yylval; case 184: /* Line 1455 of yacc.c */ -#line 1901 "pxr/usd/sdf/textFileFormat.yy" +#line 1931 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->SymmetryFunction, @@ -4581,7 +4611,7 @@ YYSTYPE yylval; case 185: /* Line 1455 of yacc.c */ -#line 1906 "pxr/usd/sdf/textFileFormat.yy" +#line 1936 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->SymmetryFunction, @@ -4592,7 +4622,7 @@ YYSTYPE yylval; case 186: /* Line 1455 of yacc.c */ -#line 1913 "pxr/usd/sdf/textFileFormat.yy" +#line 1943 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->PrefixSubstitutions, @@ -4604,7 +4634,7 @@ YYSTYPE yylval; case 187: /* Line 1455 of yacc.c */ -#line 1921 "pxr/usd/sdf/textFileFormat.yy" +#line 1951 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->SuffixSubstitutions, @@ -4616,7 +4646,7 @@ YYSTYPE yylval; case 194: /* Line 1455 of yacc.c */ -#line 1942 "pxr/usd/sdf/textFileFormat.yy" +#line 1972 "pxr/usd/sdf/textFileFormat.yy" { if (context->layerRefPath.empty()) { Err(context, "Payload asset path must not be empty. If this " @@ -4634,7 +4664,7 @@ YYSTYPE yylval; case 195: /* Line 1455 of yacc.c */ -#line 1954 "pxr/usd/sdf/textFileFormat.yy" +#line 1984 "pxr/usd/sdf/textFileFormat.yy" { // Internal payloads do not begin with an asset path so there's // no layer_ref rule, but we need to make sure we reset state the @@ -4648,7 +4678,7 @@ YYSTYPE yylval; case 196: /* Line 1455 of yacc.c */ -#line 1962 "pxr/usd/sdf/textFileFormat.yy" +#line 1992 "pxr/usd/sdf/textFileFormat.yy" { if (!(yyvsp[(1) - (3)]).Get().empty()) { _PathSetPrim((yyvsp[(1) - (3)]), context); @@ -4667,7 +4697,7 @@ YYSTYPE yylval; case 209: /* Line 1455 of yacc.c */ -#line 2005 "pxr/usd/sdf/textFileFormat.yy" +#line 2035 "pxr/usd/sdf/textFileFormat.yy" { if (context->layerRefPath.empty()) { Err(context, "Reference asset path must not be empty. If this " @@ -4686,7 +4716,7 @@ YYSTYPE yylval; case 210: /* Line 1455 of yacc.c */ -#line 2018 "pxr/usd/sdf/textFileFormat.yy" +#line 2048 "pxr/usd/sdf/textFileFormat.yy" { // Internal references do not begin with an asset path so there's // no layer_ref rule, but we need to make sure we reset state the @@ -4700,7 +4730,7 @@ YYSTYPE yylval; case 211: /* Line 1455 of yacc.c */ -#line 2026 "pxr/usd/sdf/textFileFormat.yy" +#line 2056 "pxr/usd/sdf/textFileFormat.yy" { if (!(yyvsp[(1) - (3)]).Get().empty()) { _PathSetPrim((yyvsp[(1) - (3)]), context); @@ -4720,7 +4750,7 @@ YYSTYPE yylval; case 225: /* Line 1455 of yacc.c */ -#line 2071 "pxr/usd/sdf/textFileFormat.yy" +#line 2101 "pxr/usd/sdf/textFileFormat.yy" { _InheritAppendPath(context); ;} @@ -4729,7 +4759,7 @@ YYSTYPE yylval; case 232: /* Line 1455 of yacc.c */ -#line 2089 "pxr/usd/sdf/textFileFormat.yy" +#line 2119 "pxr/usd/sdf/textFileFormat.yy" { _SpecializesAppendPath(context); ;} @@ -4738,7 +4768,7 @@ YYSTYPE yylval; case 238: /* Line 1455 of yacc.c */ -#line 2109 "pxr/usd/sdf/textFileFormat.yy" +#line 2139 "pxr/usd/sdf/textFileFormat.yy" { _RelocatesAdd((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), context); ;} @@ -4747,7 +4777,7 @@ YYSTYPE yylval; case 243: /* Line 1455 of yacc.c */ -#line 2125 "pxr/usd/sdf/textFileFormat.yy" +#line 2155 "pxr/usd/sdf/textFileFormat.yy" { context->nameVector.push_back(TfToken((yyvsp[(1) - (1)]).Get())); ;} @@ -4756,28 +4786,28 @@ YYSTYPE yylval; case 248: /* Line 1455 of yacc.c */ -#line 2143 "pxr/usd/sdf/textFileFormat.yy" +#line 2173 "pxr/usd/sdf/textFileFormat.yy" {;} break; case 249: /* Line 1455 of yacc.c */ -#line 2144 "pxr/usd/sdf/textFileFormat.yy" +#line 2174 "pxr/usd/sdf/textFileFormat.yy" {;} break; case 250: /* Line 1455 of yacc.c */ -#line 2145 "pxr/usd/sdf/textFileFormat.yy" +#line 2175 "pxr/usd/sdf/textFileFormat.yy" {;} break; case 253: /* Line 1455 of yacc.c */ -#line 2151 "pxr/usd/sdf/textFileFormat.yy" +#line 2181 "pxr/usd/sdf/textFileFormat.yy" { const std::string name = (yyvsp[(2) - (2)]).Get(); ERROR_IF_NOT_ALLOWED(context, SdfSchema::IsValidVariantIdentifier(name)); @@ -4792,7 +4822,7 @@ YYSTYPE yylval; case 254: /* Line 1455 of yacc.c */ -#line 2159 "pxr/usd/sdf/textFileFormat.yy" +#line 2189 "pxr/usd/sdf/textFileFormat.yy" { SdfPath variantSetPath = context->path; @@ -4821,7 +4851,7 @@ YYSTYPE yylval; case 257: /* Line 1455 of yacc.c */ -#line 2190 "pxr/usd/sdf/textFileFormat.yy" +#line 2220 "pxr/usd/sdf/textFileFormat.yy" { const std::string variantName = (yyvsp[(1) - (1)]).Get(); ERROR_IF_NOT_ALLOWED( @@ -4848,7 +4878,7 @@ YYSTYPE yylval; case 258: /* Line 1455 of yacc.c */ -#line 2210 "pxr/usd/sdf/textFileFormat.yy" +#line 2240 "pxr/usd/sdf/textFileFormat.yy" { // Store the names of the prims and properties defined in this variant. if (!context->nameChildrenStack.back().empty()) { @@ -4874,7 +4904,7 @@ YYSTYPE yylval; case 259: /* Line 1455 of yacc.c */ -#line 2233 "pxr/usd/sdf/textFileFormat.yy" +#line 2263 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->PrimOrder, @@ -4886,7 +4916,7 @@ YYSTYPE yylval; case 260: /* Line 1455 of yacc.c */ -#line 2242 "pxr/usd/sdf/textFileFormat.yy" +#line 2272 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->PropertyOrder, @@ -4898,7 +4928,7 @@ YYSTYPE yylval; case 263: /* Line 1455 of yacc.c */ -#line 2264 "pxr/usd/sdf/textFileFormat.yy" +#line 2294 "pxr/usd/sdf/textFileFormat.yy" { context->variability = VtValue(SdfVariabilityUniform); ;} @@ -4907,7 +4937,7 @@ YYSTYPE yylval; case 264: /* Line 1455 of yacc.c */ -#line 2267 "pxr/usd/sdf/textFileFormat.yy" +#line 2297 "pxr/usd/sdf/textFileFormat.yy" { // Convert legacy "config" variability to SdfVariabilityUniform. // This value was never officially used in USD but we handle @@ -4919,7 +4949,7 @@ YYSTYPE yylval; case 265: /* Line 1455 of yacc.c */ -#line 2276 "pxr/usd/sdf/textFileFormat.yy" +#line 2306 "pxr/usd/sdf/textFileFormat.yy" { context->assoc = VtValue(); ;} @@ -4928,7 +4958,7 @@ YYSTYPE yylval; case 266: /* Line 1455 of yacc.c */ -#line 2282 "pxr/usd/sdf/textFileFormat.yy" +#line 2312 "pxr/usd/sdf/textFileFormat.yy" { _SetupValue((yyvsp[(1) - (1)]).Get(), context); ;} @@ -4937,7 +4967,7 @@ YYSTYPE yylval; case 267: /* Line 1455 of yacc.c */ -#line 2285 "pxr/usd/sdf/textFileFormat.yy" +#line 2315 "pxr/usd/sdf/textFileFormat.yy" { _SetupValue(std::string((yyvsp[(1) - (3)]).Get() + "[]"), context); ;} @@ -4946,7 +4976,7 @@ YYSTYPE yylval; case 268: /* Line 1455 of yacc.c */ -#line 2291 "pxr/usd/sdf/textFileFormat.yy" +#line 2321 "pxr/usd/sdf/textFileFormat.yy" { context->variability = VtValue(); context->custom = false; @@ -4956,7 +4986,7 @@ YYSTYPE yylval; case 269: /* Line 1455 of yacc.c */ -#line 2295 "pxr/usd/sdf/textFileFormat.yy" +#line 2325 "pxr/usd/sdf/textFileFormat.yy" { context->custom = false; ;} @@ -4965,7 +4995,7 @@ YYSTYPE yylval; case 270: /* Line 1455 of yacc.c */ -#line 2301 "pxr/usd/sdf/textFileFormat.yy" +#line 2331 "pxr/usd/sdf/textFileFormat.yy" { _PrimInitAttribute((yyvsp[(2) - (2)]), context); @@ -4978,7 +5008,7 @@ YYSTYPE yylval; case 271: /* Line 1455 of yacc.c */ -#line 2308 "pxr/usd/sdf/textFileFormat.yy" +#line 2338 "pxr/usd/sdf/textFileFormat.yy" { if (!context->values.valueTypeIsValid) { context->values.StopRecordingString(); @@ -4989,7 +5019,7 @@ YYSTYPE yylval; case 272: /* Line 1455 of yacc.c */ -#line 2313 "pxr/usd/sdf/textFileFormat.yy" +#line 2343 "pxr/usd/sdf/textFileFormat.yy" { context->path = context->path.GetParentPath(); ;} @@ -4998,7 +5028,7 @@ YYSTYPE yylval; case 273: /* Line 1455 of yacc.c */ -#line 2319 "pxr/usd/sdf/textFileFormat.yy" +#line 2349 "pxr/usd/sdf/textFileFormat.yy" { context->custom = true; _PrimInitAttribute((yyvsp[(3) - (3)]), context); @@ -5012,7 +5042,7 @@ YYSTYPE yylval; case 274: /* Line 1455 of yacc.c */ -#line 2327 "pxr/usd/sdf/textFileFormat.yy" +#line 2357 "pxr/usd/sdf/textFileFormat.yy" { if (!context->values.valueTypeIsValid) { context->values.StopRecordingString(); @@ -5023,7 +5053,7 @@ YYSTYPE yylval; case 275: /* Line 1455 of yacc.c */ -#line 2332 "pxr/usd/sdf/textFileFormat.yy" +#line 2362 "pxr/usd/sdf/textFileFormat.yy" { context->path = context->path.GetParentPath(); ;} @@ -5032,7 +5062,7 @@ YYSTYPE yylval; case 276: /* Line 1455 of yacc.c */ -#line 2338 "pxr/usd/sdf/textFileFormat.yy" +#line 2368 "pxr/usd/sdf/textFileFormat.yy" { _PrimInitAttribute((yyvsp[(2) - (5)]), context); context->connParsingTargetPaths.clear(); @@ -5043,7 +5073,7 @@ YYSTYPE yylval; case 277: /* Line 1455 of yacc.c */ -#line 2342 "pxr/usd/sdf/textFileFormat.yy" +#line 2372 "pxr/usd/sdf/textFileFormat.yy" { _AttributeSetConnectionTargetsList(SdfListOpTypeExplicit, context); context->path = context->path.GetParentPath(); @@ -5053,7 +5083,7 @@ YYSTYPE yylval; case 278: /* Line 1455 of yacc.c */ -#line 2346 "pxr/usd/sdf/textFileFormat.yy" +#line 2376 "pxr/usd/sdf/textFileFormat.yy" { _PrimInitAttribute((yyvsp[(3) - (6)]), context); context->connParsingTargetPaths.clear(); @@ -5064,7 +5094,7 @@ YYSTYPE yylval; case 279: /* Line 1455 of yacc.c */ -#line 2350 "pxr/usd/sdf/textFileFormat.yy" +#line 2380 "pxr/usd/sdf/textFileFormat.yy" { _AttributeSetConnectionTargetsList(SdfListOpTypeAdded, context); context->path = context->path.GetParentPath(); @@ -5074,7 +5104,7 @@ YYSTYPE yylval; case 280: /* Line 1455 of yacc.c */ -#line 2354 "pxr/usd/sdf/textFileFormat.yy" +#line 2384 "pxr/usd/sdf/textFileFormat.yy" { _PrimInitAttribute((yyvsp[(3) - (6)]), context); context->connParsingTargetPaths.clear(); @@ -5085,7 +5115,7 @@ YYSTYPE yylval; case 281: /* Line 1455 of yacc.c */ -#line 2358 "pxr/usd/sdf/textFileFormat.yy" +#line 2388 "pxr/usd/sdf/textFileFormat.yy" { _AttributeSetConnectionTargetsList(SdfListOpTypePrepended, context); context->path = context->path.GetParentPath(); @@ -5095,7 +5125,7 @@ YYSTYPE yylval; case 282: /* Line 1455 of yacc.c */ -#line 2362 "pxr/usd/sdf/textFileFormat.yy" +#line 2392 "pxr/usd/sdf/textFileFormat.yy" { _PrimInitAttribute((yyvsp[(3) - (6)]), context); context->connParsingTargetPaths.clear(); @@ -5106,7 +5136,7 @@ YYSTYPE yylval; case 283: /* Line 1455 of yacc.c */ -#line 2366 "pxr/usd/sdf/textFileFormat.yy" +#line 2396 "pxr/usd/sdf/textFileFormat.yy" { _AttributeSetConnectionTargetsList(SdfListOpTypeAppended, context); context->path = context->path.GetParentPath(); @@ -5116,7 +5146,7 @@ YYSTYPE yylval; case 284: /* Line 1455 of yacc.c */ -#line 2370 "pxr/usd/sdf/textFileFormat.yy" +#line 2400 "pxr/usd/sdf/textFileFormat.yy" { _PrimInitAttribute((yyvsp[(3) - (6)]), context); context->connParsingTargetPaths.clear(); @@ -5127,7 +5157,7 @@ YYSTYPE yylval; case 285: /* Line 1455 of yacc.c */ -#line 2374 "pxr/usd/sdf/textFileFormat.yy" +#line 2404 "pxr/usd/sdf/textFileFormat.yy" { _AttributeSetConnectionTargetsList(SdfListOpTypeDeleted, context); context->path = context->path.GetParentPath(); @@ -5137,7 +5167,7 @@ YYSTYPE yylval; case 286: /* Line 1455 of yacc.c */ -#line 2378 "pxr/usd/sdf/textFileFormat.yy" +#line 2408 "pxr/usd/sdf/textFileFormat.yy" { _PrimInitAttribute((yyvsp[(3) - (6)]), context); context->connParsingTargetPaths.clear(); @@ -5148,7 +5178,7 @@ YYSTYPE yylval; case 287: /* Line 1455 of yacc.c */ -#line 2382 "pxr/usd/sdf/textFileFormat.yy" +#line 2412 "pxr/usd/sdf/textFileFormat.yy" { _AttributeSetConnectionTargetsList(SdfListOpTypeOrdered, context); context->path = context->path.GetParentPath(); @@ -5158,7 +5188,7 @@ YYSTYPE yylval; case 288: /* Line 1455 of yacc.c */ -#line 2389 "pxr/usd/sdf/textFileFormat.yy" +#line 2419 "pxr/usd/sdf/textFileFormat.yy" { _PrimInitAttribute((yyvsp[(2) - (5)]), context); ;} @@ -5167,7 +5197,7 @@ YYSTYPE yylval; case 289: /* Line 1455 of yacc.c */ -#line 2392 "pxr/usd/sdf/textFileFormat.yy" +#line 2422 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->TimeSamples, @@ -5179,7 +5209,7 @@ YYSTYPE yylval; case 300: /* Line 1455 of yacc.c */ -#line 2424 "pxr/usd/sdf/textFileFormat.yy" +#line 2454 "pxr/usd/sdf/textFileFormat.yy" { _AttributeAppendConnectionPath(context); ;} @@ -5188,7 +5218,7 @@ YYSTYPE yylval; case 301: /* Line 1455 of yacc.c */ -#line 2434 "pxr/usd/sdf/textFileFormat.yy" +#line 2464 "pxr/usd/sdf/textFileFormat.yy" { context->timeSamples = SdfTimeSampleMap(); ;} @@ -5197,7 +5227,7 @@ YYSTYPE yylval; case 307: /* Line 1455 of yacc.c */ -#line 2450 "pxr/usd/sdf/textFileFormat.yy" +#line 2480 "pxr/usd/sdf/textFileFormat.yy" { context->timeSampleTime = (yyvsp[(1) - (2)]).Get(); ;} @@ -5206,7 +5236,7 @@ YYSTYPE yylval; case 308: /* Line 1455 of yacc.c */ -#line 2453 "pxr/usd/sdf/textFileFormat.yy" +#line 2483 "pxr/usd/sdf/textFileFormat.yy" { context->timeSamples[ context->timeSampleTime ] = context->currentValue; ;} @@ -5215,7 +5245,7 @@ YYSTYPE yylval; case 309: /* Line 1455 of yacc.c */ -#line 2457 "pxr/usd/sdf/textFileFormat.yy" +#line 2487 "pxr/usd/sdf/textFileFormat.yy" { context->timeSampleTime = (yyvsp[(1) - (3)]).Get(); context->timeSamples[ context->timeSampleTime ] @@ -5226,7 +5256,7 @@ YYSTYPE yylval; case 318: /* Line 1455 of yacc.c */ -#line 2487 "pxr/usd/sdf/textFileFormat.yy" +#line 2517 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->Comment, @@ -5237,7 +5267,7 @@ YYSTYPE yylval; case 319: /* Line 1455 of yacc.c */ -#line 2492 "pxr/usd/sdf/textFileFormat.yy" +#line 2522 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(1) - (1)]), SdfSpecTypeAttribute, context); ;} @@ -5246,7 +5276,7 @@ YYSTYPE yylval; case 320: /* Line 1455 of yacc.c */ -#line 2494 "pxr/usd/sdf/textFileFormat.yy" +#line 2524 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypeAttribute, context); ;} @@ -5255,7 +5285,7 @@ YYSTYPE yylval; case 321: /* Line 1455 of yacc.c */ -#line 2501 "pxr/usd/sdf/textFileFormat.yy" +#line 2531 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(2) - (2)]), SdfSpecTypeAttribute, context); context->listOpType = SdfListOpTypeDeleted; @@ -5265,7 +5295,7 @@ YYSTYPE yylval; case 322: /* Line 1455 of yacc.c */ -#line 2504 "pxr/usd/sdf/textFileFormat.yy" +#line 2534 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypeAttribute, context); ;} @@ -5274,7 +5304,7 @@ YYSTYPE yylval; case 323: /* Line 1455 of yacc.c */ -#line 2507 "pxr/usd/sdf/textFileFormat.yy" +#line 2537 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(2) - (2)]), SdfSpecTypeAttribute, context); context->listOpType = SdfListOpTypeAdded; @@ -5284,7 +5314,7 @@ YYSTYPE yylval; case 324: /* Line 1455 of yacc.c */ -#line 2510 "pxr/usd/sdf/textFileFormat.yy" +#line 2540 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypeAttribute, context); ;} @@ -5293,7 +5323,7 @@ YYSTYPE yylval; case 325: /* Line 1455 of yacc.c */ -#line 2513 "pxr/usd/sdf/textFileFormat.yy" +#line 2543 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(2) - (2)]), SdfSpecTypeAttribute, context); context->listOpType = SdfListOpTypePrepended; @@ -5303,7 +5333,7 @@ YYSTYPE yylval; case 326: /* Line 1455 of yacc.c */ -#line 2516 "pxr/usd/sdf/textFileFormat.yy" +#line 2546 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypeAttribute, context); ;} @@ -5312,7 +5342,7 @@ YYSTYPE yylval; case 327: /* Line 1455 of yacc.c */ -#line 2519 "pxr/usd/sdf/textFileFormat.yy" +#line 2549 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(2) - (2)]), SdfSpecTypeAttribute, context); context->listOpType = SdfListOpTypeAppended; @@ -5322,7 +5352,7 @@ YYSTYPE yylval; case 328: /* Line 1455 of yacc.c */ -#line 2522 "pxr/usd/sdf/textFileFormat.yy" +#line 2552 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypeAttribute, context); ;} @@ -5331,7 +5361,7 @@ YYSTYPE yylval; case 329: /* Line 1455 of yacc.c */ -#line 2525 "pxr/usd/sdf/textFileFormat.yy" +#line 2555 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(2) - (2)]), SdfSpecTypeAttribute, context); context->listOpType = SdfListOpTypeOrdered; @@ -5341,7 +5371,7 @@ YYSTYPE yylval; case 330: /* Line 1455 of yacc.c */ -#line 2528 "pxr/usd/sdf/textFileFormat.yy" +#line 2558 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypeAttribute, context); ;} @@ -5350,7 +5380,7 @@ YYSTYPE yylval; case 331: /* Line 1455 of yacc.c */ -#line 2533 "pxr/usd/sdf/textFileFormat.yy" +#line 2563 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->Documentation, @@ -5361,7 +5391,7 @@ YYSTYPE yylval; case 332: /* Line 1455 of yacc.c */ -#line 2540 "pxr/usd/sdf/textFileFormat.yy" +#line 2570 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->Permission, @@ -5373,7 +5403,7 @@ YYSTYPE yylval; case 333: /* Line 1455 of yacc.c */ -#line 2547 "pxr/usd/sdf/textFileFormat.yy" +#line 2577 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->DisplayUnit, @@ -5385,7 +5415,7 @@ YYSTYPE yylval; case 334: /* Line 1455 of yacc.c */ -#line 2555 "pxr/usd/sdf/textFileFormat.yy" +#line 2585 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->SymmetryFunction, @@ -5396,7 +5426,7 @@ YYSTYPE yylval; case 335: /* Line 1455 of yacc.c */ -#line 2560 "pxr/usd/sdf/textFileFormat.yy" +#line 2590 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->SymmetryFunction, @@ -5407,29 +5437,25 @@ YYSTYPE yylval; case 338: /* Line 1455 of yacc.c */ -#line 2573 "pxr/usd/sdf/textFileFormat.yy" +#line 2603 "pxr/usd/sdf/textFileFormat.yy" { - _SetField( - context->path, SdfFieldKeys->Default, - context->currentValue, context); + _SetDefault(context->path, context->currentValue, context); ;} break; case 339: /* Line 1455 of yacc.c */ -#line 2578 "pxr/usd/sdf/textFileFormat.yy" +#line 2606 "pxr/usd/sdf/textFileFormat.yy" { - _SetField( - context->path, SdfFieldKeys->Default, - SdfValueBlock(), context); + _SetDefault(context->path, VtValue(SdfValueBlock()), context); ;} break; case 340: /* Line 1455 of yacc.c */ -#line 2590 "pxr/usd/sdf/textFileFormat.yy" +#line 2616 "pxr/usd/sdf/textFileFormat.yy" { _DictionaryBegin(context); ;} @@ -5438,7 +5464,7 @@ YYSTYPE yylval; case 341: /* Line 1455 of yacc.c */ -#line 2593 "pxr/usd/sdf/textFileFormat.yy" +#line 2619 "pxr/usd/sdf/textFileFormat.yy" { _DictionaryEnd(context); ;} @@ -5447,7 +5473,7 @@ YYSTYPE yylval; case 346: /* Line 1455 of yacc.c */ -#line 2609 "pxr/usd/sdf/textFileFormat.yy" +#line 2635 "pxr/usd/sdf/textFileFormat.yy" { _DictionaryInsertValue((yyvsp[(2) - (4)]), context); ;} @@ -5456,7 +5482,7 @@ YYSTYPE yylval; case 347: /* Line 1455 of yacc.c */ -#line 2612 "pxr/usd/sdf/textFileFormat.yy" +#line 2638 "pxr/usd/sdf/textFileFormat.yy" { _DictionaryInsertDictionary((yyvsp[(2) - (4)]), context); ;} @@ -5465,7 +5491,7 @@ YYSTYPE yylval; case 352: /* Line 1455 of yacc.c */ -#line 2630 "pxr/usd/sdf/textFileFormat.yy" +#line 2656 "pxr/usd/sdf/textFileFormat.yy" { _DictionaryInitScalarFactory((yyvsp[(1) - (1)]), context); ;} @@ -5474,7 +5500,7 @@ YYSTYPE yylval; case 353: /* Line 1455 of yacc.c */ -#line 2636 "pxr/usd/sdf/textFileFormat.yy" +#line 2662 "pxr/usd/sdf/textFileFormat.yy" { _DictionaryInitShapedFactory((yyvsp[(1) - (3)]), context); ;} @@ -5483,7 +5509,7 @@ YYSTYPE yylval; case 354: /* Line 1455 of yacc.c */ -#line 2646 "pxr/usd/sdf/textFileFormat.yy" +#line 2672 "pxr/usd/sdf/textFileFormat.yy" { _DictionaryBegin(context); ;} @@ -5492,7 +5518,7 @@ YYSTYPE yylval; case 355: /* Line 1455 of yacc.c */ -#line 2649 "pxr/usd/sdf/textFileFormat.yy" +#line 2675 "pxr/usd/sdf/textFileFormat.yy" { _DictionaryEnd(context); ;} @@ -5501,7 +5527,7 @@ YYSTYPE yylval; case 360: /* Line 1455 of yacc.c */ -#line 2665 "pxr/usd/sdf/textFileFormat.yy" +#line 2691 "pxr/usd/sdf/textFileFormat.yy" { _DictionaryInitScalarFactory(Value(std::string("string")), context); _ValueAppendAtomic((yyvsp[(3) - (3)]), context); @@ -5513,7 +5539,7 @@ YYSTYPE yylval; case 361: /* Line 1455 of yacc.c */ -#line 2678 "pxr/usd/sdf/textFileFormat.yy" +#line 2704 "pxr/usd/sdf/textFileFormat.yy" { context->currentValue = VtValue(); if (context->values.IsRecordingString()) { @@ -5525,7 +5551,7 @@ YYSTYPE yylval; case 362: /* Line 1455 of yacc.c */ -#line 2684 "pxr/usd/sdf/textFileFormat.yy" +#line 2710 "pxr/usd/sdf/textFileFormat.yy" { _ValueSetList(context); ;} @@ -5534,7 +5560,7 @@ YYSTYPE yylval; case 363: /* Line 1455 of yacc.c */ -#line 2694 "pxr/usd/sdf/textFileFormat.yy" +#line 2720 "pxr/usd/sdf/textFileFormat.yy" { context->currentValue.Swap(context->currentDictionaries[0]); context->currentDictionaries[0].clear(); @@ -5544,7 +5570,7 @@ YYSTYPE yylval; case 365: /* Line 1455 of yacc.c */ -#line 2699 "pxr/usd/sdf/textFileFormat.yy" +#line 2725 "pxr/usd/sdf/textFileFormat.yy" { // This is only here to allow 'None' metadata values for // an explicit list operation on an SdfListOp-valued field. @@ -5560,7 +5586,7 @@ YYSTYPE yylval; case 366: /* Line 1455 of yacc.c */ -#line 2712 "pxr/usd/sdf/textFileFormat.yy" +#line 2738 "pxr/usd/sdf/textFileFormat.yy" { _ValueSetAtomic(context); ;} @@ -5569,7 +5595,7 @@ YYSTYPE yylval; case 367: /* Line 1455 of yacc.c */ -#line 2715 "pxr/usd/sdf/textFileFormat.yy" +#line 2741 "pxr/usd/sdf/textFileFormat.yy" { _ValueSetTuple(context); ;} @@ -5578,7 +5604,7 @@ YYSTYPE yylval; case 368: /* Line 1455 of yacc.c */ -#line 2718 "pxr/usd/sdf/textFileFormat.yy" +#line 2744 "pxr/usd/sdf/textFileFormat.yy" { _ValueSetList(context); ;} @@ -5587,7 +5613,7 @@ YYSTYPE yylval; case 369: /* Line 1455 of yacc.c */ -#line 2721 "pxr/usd/sdf/textFileFormat.yy" +#line 2747 "pxr/usd/sdf/textFileFormat.yy" { // Set the recorded string on the ParserValueContext. Normally // 'values' is able to keep track of the parsed string, but in this @@ -5604,7 +5630,7 @@ YYSTYPE yylval; case 370: /* Line 1455 of yacc.c */ -#line 2732 "pxr/usd/sdf/textFileFormat.yy" +#line 2758 "pxr/usd/sdf/textFileFormat.yy" { _ValueSetCurrentToSdfPath((yyvsp[(1) - (1)]), context); ;} @@ -5613,7 +5639,7 @@ YYSTYPE yylval; case 371: /* Line 1455 of yacc.c */ -#line 2738 "pxr/usd/sdf/textFileFormat.yy" +#line 2764 "pxr/usd/sdf/textFileFormat.yy" { _ValueAppendAtomic((yyvsp[(1) - (1)]), context); ;} @@ -5622,7 +5648,7 @@ YYSTYPE yylval; case 372: /* Line 1455 of yacc.c */ -#line 2741 "pxr/usd/sdf/textFileFormat.yy" +#line 2767 "pxr/usd/sdf/textFileFormat.yy" { _ValueAppendAtomic((yyvsp[(1) - (1)]), context); ;} @@ -5631,7 +5657,7 @@ YYSTYPE yylval; case 373: /* Line 1455 of yacc.c */ -#line 2744 "pxr/usd/sdf/textFileFormat.yy" +#line 2770 "pxr/usd/sdf/textFileFormat.yy" { // The ParserValueContext needs identifiers to be stored as TfToken // instead of std::string to be able to distinguish between them. @@ -5642,7 +5668,7 @@ YYSTYPE yylval; case 374: /* Line 1455 of yacc.c */ -#line 2749 "pxr/usd/sdf/textFileFormat.yy" +#line 2775 "pxr/usd/sdf/textFileFormat.yy" { // The ParserValueContext needs asset paths to be stored as // SdfAssetPath instead of std::string to be able to distinguish @@ -5654,7 +5680,7 @@ YYSTYPE yylval; case 375: /* Line 1455 of yacc.c */ -#line 2762 "pxr/usd/sdf/textFileFormat.yy" +#line 2788 "pxr/usd/sdf/textFileFormat.yy" { context->values.BeginList(); ;} @@ -5663,7 +5689,7 @@ YYSTYPE yylval; case 376: /* Line 1455 of yacc.c */ -#line 2765 "pxr/usd/sdf/textFileFormat.yy" +#line 2791 "pxr/usd/sdf/textFileFormat.yy" { context->values.EndList(); ;} @@ -5672,7 +5698,7 @@ YYSTYPE yylval; case 383: /* Line 1455 of yacc.c */ -#line 2790 "pxr/usd/sdf/textFileFormat.yy" +#line 2816 "pxr/usd/sdf/textFileFormat.yy" { context->values.BeginTuple(); ;} @@ -5681,7 +5707,7 @@ YYSTYPE yylval; case 384: /* Line 1455 of yacc.c */ -#line 2792 "pxr/usd/sdf/textFileFormat.yy" +#line 2818 "pxr/usd/sdf/textFileFormat.yy" { context->values.EndTuple(); ;} @@ -5690,7 +5716,7 @@ YYSTYPE yylval; case 390: /* Line 1455 of yacc.c */ -#line 2815 "pxr/usd/sdf/textFileFormat.yy" +#line 2841 "pxr/usd/sdf/textFileFormat.yy" { context->custom = false; context->variability = VtValue(SdfVariabilityUniform); @@ -5700,7 +5726,7 @@ YYSTYPE yylval; case 391: /* Line 1455 of yacc.c */ -#line 2819 "pxr/usd/sdf/textFileFormat.yy" +#line 2845 "pxr/usd/sdf/textFileFormat.yy" { context->custom = true; context->variability = VtValue(SdfVariabilityUniform); @@ -5710,7 +5736,7 @@ YYSTYPE yylval; case 392: /* Line 1455 of yacc.c */ -#line 2823 "pxr/usd/sdf/textFileFormat.yy" +#line 2849 "pxr/usd/sdf/textFileFormat.yy" { context->custom = true; context->variability = VtValue(SdfVariabilityVarying); @@ -5720,7 +5746,7 @@ YYSTYPE yylval; case 393: /* Line 1455 of yacc.c */ -#line 2827 "pxr/usd/sdf/textFileFormat.yy" +#line 2853 "pxr/usd/sdf/textFileFormat.yy" { context->custom = false; context->variability = VtValue(SdfVariabilityVarying); @@ -5730,7 +5756,7 @@ YYSTYPE yylval; case 394: /* Line 1455 of yacc.c */ -#line 2834 "pxr/usd/sdf/textFileFormat.yy" +#line 2860 "pxr/usd/sdf/textFileFormat.yy" { _PrimInitRelationship((yyvsp[(2) - (5)]), context); ;} @@ -5739,7 +5765,7 @@ YYSTYPE yylval; case 395: /* Line 1455 of yacc.c */ -#line 2837 "pxr/usd/sdf/textFileFormat.yy" +#line 2863 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->TimeSamples, @@ -5751,7 +5777,7 @@ YYSTYPE yylval; case 396: /* Line 1455 of yacc.c */ -#line 2846 "pxr/usd/sdf/textFileFormat.yy" +#line 2872 "pxr/usd/sdf/textFileFormat.yy" { _PrimInitRelationship((yyvsp[(2) - (6)]), context); @@ -5761,7 +5787,7 @@ YYSTYPE yylval; std::string pathString = (yyvsp[(6) - (6)]).Get(); SdfPath path = pathString.empty() ? SdfPath() : SdfPath(pathString); - _SetField(context->path, SdfFieldKeys->Default, path, context); + _SetDefault(context->path, VtValue(path), context); _PrimEndRelationship(context); ;} break; @@ -5769,7 +5795,7 @@ YYSTYPE yylval; case 397: /* Line 1455 of yacc.c */ -#line 2861 "pxr/usd/sdf/textFileFormat.yy" +#line 2887 "pxr/usd/sdf/textFileFormat.yy" { _PrimInitRelationship((yyvsp[(2) - (2)]), context); context->relParsingAllowTargetData = true; @@ -5779,7 +5805,7 @@ YYSTYPE yylval; case 398: /* Line 1455 of yacc.c */ -#line 2866 "pxr/usd/sdf/textFileFormat.yy" +#line 2892 "pxr/usd/sdf/textFileFormat.yy" { _RelationshipSetTargetsList(SdfListOpTypeExplicit, context); _PrimEndRelationship(context); @@ -5789,7 +5815,7 @@ YYSTYPE yylval; case 399: /* Line 1455 of yacc.c */ -#line 2871 "pxr/usd/sdf/textFileFormat.yy" +#line 2897 "pxr/usd/sdf/textFileFormat.yy" { _PrimInitRelationship((yyvsp[(3) - (3)]), context); ;} @@ -5798,7 +5824,7 @@ YYSTYPE yylval; case 400: /* Line 1455 of yacc.c */ -#line 2874 "pxr/usd/sdf/textFileFormat.yy" +#line 2900 "pxr/usd/sdf/textFileFormat.yy" { _RelationshipSetTargetsList(SdfListOpTypeDeleted, context); _PrimEndRelationship(context); @@ -5808,7 +5834,7 @@ YYSTYPE yylval; case 401: /* Line 1455 of yacc.c */ -#line 2879 "pxr/usd/sdf/textFileFormat.yy" +#line 2905 "pxr/usd/sdf/textFileFormat.yy" { _PrimInitRelationship((yyvsp[(3) - (3)]), context); context->relParsingAllowTargetData = true; @@ -5818,7 +5844,7 @@ YYSTYPE yylval; case 402: /* Line 1455 of yacc.c */ -#line 2883 "pxr/usd/sdf/textFileFormat.yy" +#line 2909 "pxr/usd/sdf/textFileFormat.yy" { _RelationshipSetTargetsList(SdfListOpTypeAdded, context); _PrimEndRelationship(context); @@ -5828,7 +5854,7 @@ YYSTYPE yylval; case 403: /* Line 1455 of yacc.c */ -#line 2887 "pxr/usd/sdf/textFileFormat.yy" +#line 2913 "pxr/usd/sdf/textFileFormat.yy" { _PrimInitRelationship((yyvsp[(3) - (3)]), context); context->relParsingAllowTargetData = true; @@ -5838,7 +5864,7 @@ YYSTYPE yylval; case 404: /* Line 1455 of yacc.c */ -#line 2891 "pxr/usd/sdf/textFileFormat.yy" +#line 2917 "pxr/usd/sdf/textFileFormat.yy" { _RelationshipSetTargetsList(SdfListOpTypePrepended, context); _PrimEndRelationship(context); @@ -5848,7 +5874,7 @@ YYSTYPE yylval; case 405: /* Line 1455 of yacc.c */ -#line 2895 "pxr/usd/sdf/textFileFormat.yy" +#line 2921 "pxr/usd/sdf/textFileFormat.yy" { _PrimInitRelationship((yyvsp[(3) - (3)]), context); context->relParsingAllowTargetData = true; @@ -5858,7 +5884,7 @@ YYSTYPE yylval; case 406: /* Line 1455 of yacc.c */ -#line 2899 "pxr/usd/sdf/textFileFormat.yy" +#line 2925 "pxr/usd/sdf/textFileFormat.yy" { _RelationshipSetTargetsList(SdfListOpTypeAppended, context); _PrimEndRelationship(context); @@ -5868,7 +5894,7 @@ YYSTYPE yylval; case 407: /* Line 1455 of yacc.c */ -#line 2904 "pxr/usd/sdf/textFileFormat.yy" +#line 2930 "pxr/usd/sdf/textFileFormat.yy" { _PrimInitRelationship((yyvsp[(3) - (3)]), context); ;} @@ -5877,7 +5903,7 @@ YYSTYPE yylval; case 408: /* Line 1455 of yacc.c */ -#line 2907 "pxr/usd/sdf/textFileFormat.yy" +#line 2933 "pxr/usd/sdf/textFileFormat.yy" { _RelationshipSetTargetsList(SdfListOpTypeOrdered, context); _PrimEndRelationship(context); @@ -5887,7 +5913,7 @@ YYSTYPE yylval; case 409: /* Line 1455 of yacc.c */ -#line 2912 "pxr/usd/sdf/textFileFormat.yy" +#line 2938 "pxr/usd/sdf/textFileFormat.yy" { _PrimInitRelationship((yyvsp[(2) - (5)]), context); context->relParsingAllowTargetData = true; @@ -5900,7 +5926,7 @@ YYSTYPE yylval; case 420: /* Line 1455 of yacc.c */ -#line 2941 "pxr/usd/sdf/textFileFormat.yy" +#line 2967 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->Comment, @@ -5911,7 +5937,7 @@ YYSTYPE yylval; case 421: /* Line 1455 of yacc.c */ -#line 2946 "pxr/usd/sdf/textFileFormat.yy" +#line 2972 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(1) - (1)]), SdfSpecTypeRelationship, context); ;} @@ -5920,7 +5946,7 @@ YYSTYPE yylval; case 422: /* Line 1455 of yacc.c */ -#line 2948 "pxr/usd/sdf/textFileFormat.yy" +#line 2974 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypeRelationship, context); ;} @@ -5929,7 +5955,7 @@ YYSTYPE yylval; case 423: /* Line 1455 of yacc.c */ -#line 2955 "pxr/usd/sdf/textFileFormat.yy" +#line 2981 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(2) - (2)]), SdfSpecTypeRelationship, context); context->listOpType = SdfListOpTypeDeleted; @@ -5939,7 +5965,7 @@ YYSTYPE yylval; case 424: /* Line 1455 of yacc.c */ -#line 2958 "pxr/usd/sdf/textFileFormat.yy" +#line 2984 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypeRelationship, context); ;} @@ -5948,7 +5974,7 @@ YYSTYPE yylval; case 425: /* Line 1455 of yacc.c */ -#line 2961 "pxr/usd/sdf/textFileFormat.yy" +#line 2987 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(2) - (2)]), SdfSpecTypeRelationship, context); context->listOpType = SdfListOpTypeAdded; @@ -5958,7 +5984,7 @@ YYSTYPE yylval; case 426: /* Line 1455 of yacc.c */ -#line 2964 "pxr/usd/sdf/textFileFormat.yy" +#line 2990 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypeRelationship, context); ;} @@ -5967,7 +5993,7 @@ YYSTYPE yylval; case 427: /* Line 1455 of yacc.c */ -#line 2967 "pxr/usd/sdf/textFileFormat.yy" +#line 2993 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(2) - (2)]), SdfSpecTypeRelationship, context); context->listOpType = SdfListOpTypePrepended; @@ -5977,7 +6003,7 @@ YYSTYPE yylval; case 428: /* Line 1455 of yacc.c */ -#line 2970 "pxr/usd/sdf/textFileFormat.yy" +#line 2996 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypeRelationship, context); ;} @@ -5986,7 +6012,7 @@ YYSTYPE yylval; case 429: /* Line 1455 of yacc.c */ -#line 2973 "pxr/usd/sdf/textFileFormat.yy" +#line 2999 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(2) - (2)]), SdfSpecTypeRelationship, context); context->listOpType = SdfListOpTypeAppended; @@ -5996,7 +6022,7 @@ YYSTYPE yylval; case 430: /* Line 1455 of yacc.c */ -#line 2976 "pxr/usd/sdf/textFileFormat.yy" +#line 3002 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypeRelationship, context); ;} @@ -6005,7 +6031,7 @@ YYSTYPE yylval; case 431: /* Line 1455 of yacc.c */ -#line 2979 "pxr/usd/sdf/textFileFormat.yy" +#line 3005 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataStart((yyvsp[(2) - (2)]), SdfSpecTypeRelationship, context); context->listOpType = SdfListOpTypeOrdered; @@ -6015,7 +6041,7 @@ YYSTYPE yylval; case 432: /* Line 1455 of yacc.c */ -#line 2982 "pxr/usd/sdf/textFileFormat.yy" +#line 3008 "pxr/usd/sdf/textFileFormat.yy" { _GenericMetadataEnd(SdfSpecTypeRelationship, context); ;} @@ -6024,7 +6050,7 @@ YYSTYPE yylval; case 433: /* Line 1455 of yacc.c */ -#line 2987 "pxr/usd/sdf/textFileFormat.yy" +#line 3013 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->Documentation, @@ -6035,7 +6061,7 @@ YYSTYPE yylval; case 434: /* Line 1455 of yacc.c */ -#line 2994 "pxr/usd/sdf/textFileFormat.yy" +#line 3020 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->Permission, @@ -6047,7 +6073,7 @@ YYSTYPE yylval; case 435: /* Line 1455 of yacc.c */ -#line 3002 "pxr/usd/sdf/textFileFormat.yy" +#line 3028 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->SymmetryFunction, @@ -6058,7 +6084,7 @@ YYSTYPE yylval; case 436: /* Line 1455 of yacc.c */ -#line 3007 "pxr/usd/sdf/textFileFormat.yy" +#line 3033 "pxr/usd/sdf/textFileFormat.yy" { _SetField( context->path, SdfFieldKeys->SymmetryFunction, @@ -6069,7 +6095,7 @@ YYSTYPE yylval; case 440: /* Line 1455 of yacc.c */ -#line 3021 "pxr/usd/sdf/textFileFormat.yy" +#line 3047 "pxr/usd/sdf/textFileFormat.yy" { context->relParsingTargetPaths = SdfPathVector(); ;} @@ -6078,7 +6104,7 @@ YYSTYPE yylval; case 441: /* Line 1455 of yacc.c */ -#line 3024 "pxr/usd/sdf/textFileFormat.yy" +#line 3050 "pxr/usd/sdf/textFileFormat.yy" { context->relParsingTargetPaths = SdfPathVector(); ;} @@ -6087,7 +6113,7 @@ YYSTYPE yylval; case 445: /* Line 1455 of yacc.c */ -#line 3036 "pxr/usd/sdf/textFileFormat.yy" +#line 3062 "pxr/usd/sdf/textFileFormat.yy" { _RelationshipAppendTargetPath((yyvsp[(1) - (1)]), context); ;} @@ -6096,7 +6122,7 @@ YYSTYPE yylval; case 446: /* Line 1455 of yacc.c */ -#line 3046 "pxr/usd/sdf/textFileFormat.yy" +#line 3072 "pxr/usd/sdf/textFileFormat.yy" { context->savedPath = SdfPath(); ;} @@ -6105,7 +6131,7 @@ YYSTYPE yylval; case 448: /* Line 1455 of yacc.c */ -#line 3053 "pxr/usd/sdf/textFileFormat.yy" +#line 3079 "pxr/usd/sdf/textFileFormat.yy" { _PathSetPrim((yyvsp[(1) - (1)]), context); ;} @@ -6114,7 +6140,7 @@ YYSTYPE yylval; case 449: /* Line 1455 of yacc.c */ -#line 3059 "pxr/usd/sdf/textFileFormat.yy" +#line 3085 "pxr/usd/sdf/textFileFormat.yy" { _PathSetPrimOrPropertyScenePath((yyvsp[(1) - (1)]), context); ;} @@ -6123,14 +6149,14 @@ YYSTYPE yylval; case 458: /* Line 1455 of yacc.c */ -#line 3091 "pxr/usd/sdf/textFileFormat.yy" +#line 3117 "pxr/usd/sdf/textFileFormat.yy" { (yyval) = (yyvsp[(1) - (1)]); ;} break; /* Line 1455 of yacc.c */ -#line 6111 "pxr/usd/sdf/textFileFormat.tab.cpp" +#line 6137 "pxr/usd/sdf/textFileFormat.tab.cpp" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -6342,7 +6368,7 @@ YYSTYPE yylval; /* Line 1675 of yacc.c */ -#line 3123 "pxr/usd/sdf/textFileFormat.yy" +#line 3149 "pxr/usd/sdf/textFileFormat.yy" //-------------------------------------------------------------------- diff --git a/pxr/usd/sdf/textFileFormat.yy b/pxr/usd/sdf/textFileFormat.yy index 9cf90ff006..c9e85be059 100644 --- a/pxr/usd/sdf/textFileFormat.yy +++ b/pxr/usd/sdf/textFileFormat.yy @@ -230,6 +230,36 @@ _AppendVectorItem(const TfToken& key, const T& item, context->data->Set(context->path, key, VtValue(vec)); } +inline static void +_SetDefault(const SdfPath& path, VtValue val, + Sdf_TextParserContext *context) +{ + // If is holding SdfPathExpression (or array of same), make absolute with + // path.GetPrimPath() as anchor. + if (val.IsHolding()) { + val.UncheckedMutate([&](SdfPathExpression &pe) { + pe = pe.MakeAbsolute(path.GetPrimPath()); + }); + } + else if (val.IsHolding>()) { + val.UncheckedMutate>( + [&](VtArray &peArr) { + for (SdfPathExpression &pe: peArr) { + pe = pe.MakeAbsolute(path.GetPrimPath()); + } + }); + } + /* + else if (val.IsHolding()) { + SdfPath valPath; + val.UncheckedSwap(valPath); + expr.MakeAbsolutePath(path.GetPrimPath()); + val.UncheckedSwap(valPath); + } + */ + context->data->Set(path, SdfFieldKeys->Default, val); +} + template inline static void _SetField(const SdfPath& path, const TfToken& key, const T& item, @@ -2571,14 +2601,10 @@ attribute_assignment_opt: attribute_value: typed_value { - _SetField( - context->path, SdfFieldKeys->Default, - context->currentValue, context); + _SetDefault(context->path, context->currentValue, context); } | TOK_NONE { - _SetField( - context->path, SdfFieldKeys->Default, - SdfValueBlock(), context); + _SetDefault(context->path, VtValue(SdfValueBlock()), context); } ; @@ -2852,7 +2878,7 @@ prim_relationship_default: std::string pathString = $6.Get(); SdfPath path = pathString.empty() ? SdfPath() : SdfPath(pathString); - _SetField(context->path, SdfFieldKeys->Default, path, context); + _SetDefault(context->path, VtValue(path), context); _PrimEndRelationship(context); } ; diff --git a/pxr/usd/sdf/types.h b/pxr/usd/sdf/types.h index 0168aa0901..daabdd1533 100644 --- a/pxr/usd/sdf/types.h +++ b/pxr/usd/sdf/types.h @@ -33,6 +33,7 @@ #include "pxr/usd/sdf/declareHandles.h" #include "pxr/usd/sdf/listOp.h" #include "pxr/usd/sdf/opaqueValue.h" +#include "pxr/usd/sdf/pathExpression.h" #include "pxr/usd/sdf/timeCode.h" #include "pxr/usd/sdf/valueTypeName.h" @@ -340,21 +341,22 @@ SDF_API TfToken SdfGetRoleNameForValueTypeName(TfToken const &typeName); // When doing so, the type must be declared using the SDF_DECLARE_VALUE_TYPE // macro below. The type must also be registered in the associated schema using // SdfSchema::_RegisterValueType(s). -#define _SDF_SCALAR_VALUE_TYPES \ - ((Bool, bool, bool, () )) \ - ((UChar, uchar, unsigned char, () )) \ - ((Int, int, int, () )) \ - ((UInt, uint, unsigned int, () )) \ - ((Int64, int64, int64_t, () )) \ - ((UInt64, uint64, uint64_t, () )) \ - ((Half, half, GfHalf, () )) \ - ((Float, float, float, () )) \ - ((Double, double, double, () )) \ - ((TimeCode, timecode, SdfTimeCode, () )) \ - ((String, string, std::string, () )) \ - ((Token, token, TfToken, () )) \ - ((Asset, asset, SdfAssetPath, () )) \ - ((Opaque, opaque, SdfOpaqueValue, () )) +#define _SDF_SCALAR_VALUE_TYPES \ + ((Bool, bool, bool, () )) \ + ((UChar, uchar, unsigned char, () )) \ + ((Int, int, int, () )) \ + ((UInt, uint, unsigned int, () )) \ + ((Int64, int64, int64_t, () )) \ + ((UInt64, uint64, uint64_t, () )) \ + ((Half, half, GfHalf, () )) \ + ((Float, float, float, () )) \ + ((Double, double, double, () )) \ + ((TimeCode, timecode, SdfTimeCode, () )) \ + ((String, string, std::string, () )) \ + ((Token, token, TfToken, () )) \ + ((Asset, asset, SdfAssetPath, () )) \ + ((Opaque, opaque, SdfOpaqueValue, () )) \ + ((PathExpression, pathExpression, SdfPathExpression, () )) #define _SDF_DIMENSIONED_VALUE_TYPES \ ((Matrix2d, matrix2d, GfMatrix2d, (2,2) )) \ @@ -546,6 +548,7 @@ class Sdf_ValueTypeNamesType { SdfValueTypeName TexCoord3h, TexCoord3f, TexCoord3d; SdfValueTypeName Opaque; SdfValueTypeName Group; + SdfValueTypeName PathExpression; SdfValueTypeName BoolArray; SdfValueTypeName UCharArray, IntArray, UIntArray, Int64Array, UInt64Array; @@ -565,6 +568,7 @@ class Sdf_ValueTypeNamesType { SdfValueTypeName Frame4dArray; SdfValueTypeName TexCoord2hArray, TexCoord2fArray, TexCoord2dArray; SdfValueTypeName TexCoord3hArray, TexCoord3fArray, TexCoord3dArray; + SdfValueTypeName PathExpressionArray; SDF_API ~Sdf_ValueTypeNamesType(); struct _Init { diff --git a/pxr/usd/sdf/wrapTypes.cpp b/pxr/usd/sdf/wrapTypes.cpp index 03fc4f9cf4..a4ab41dad8 100644 --- a/pxr/usd/sdf/wrapTypes.cpp +++ b/pxr/usd/sdf/wrapTypes.cpp @@ -444,109 +444,112 @@ void wrapTypes() "ValueTypeNames", no_init) .def( "Find", &_FindType ) .staticmethod("Find") - .def_readonly("Bool" , SdfValueTypeNames->Bool) - .def_readonly("UChar" , SdfValueTypeNames->UChar) - .def_readonly("Int" , SdfValueTypeNames->Int) - .def_readonly("UInt" , SdfValueTypeNames->UInt) - .def_readonly("Int64" , SdfValueTypeNames->Int64) - .def_readonly("UInt64" , SdfValueTypeNames->UInt64) - .def_readonly("Half" , SdfValueTypeNames->Half) - .def_readonly("Float" , SdfValueTypeNames->Float) - .def_readonly("Double" , SdfValueTypeNames->Double) - .def_readonly("TimeCode", SdfValueTypeNames->TimeCode) - .def_readonly("String" , SdfValueTypeNames->String) - .def_readonly("Token" , SdfValueTypeNames->Token) - .def_readonly("Asset" , SdfValueTypeNames->Asset) - .def_readonly("Opaque" , SdfValueTypeNames->Opaque) - .def_readonly("Group" , SdfValueTypeNames->Group) - .def_readonly("Int2" , SdfValueTypeNames->Int2) - .def_readonly("Int3" , SdfValueTypeNames->Int3) - .def_readonly("Int4" , SdfValueTypeNames->Int4) - .def_readonly("Half2" , SdfValueTypeNames->Half2) - .def_readonly("Half3" , SdfValueTypeNames->Half3) - .def_readonly("Half4" , SdfValueTypeNames->Half4) - .def_readonly("Float2" , SdfValueTypeNames->Float2) - .def_readonly("Float3" , SdfValueTypeNames->Float3) - .def_readonly("Float4" , SdfValueTypeNames->Float4) - .def_readonly("Double2" , SdfValueTypeNames->Double2) - .def_readonly("Double3" , SdfValueTypeNames->Double3) - .def_readonly("Double4" , SdfValueTypeNames->Double4) - .def_readonly("Point3h" , SdfValueTypeNames->Point3h) - .def_readonly("Point3f" , SdfValueTypeNames->Point3f) - .def_readonly("Point3d" , SdfValueTypeNames->Point3d) - .def_readonly("Vector3h", SdfValueTypeNames->Vector3h) - .def_readonly("Vector3f", SdfValueTypeNames->Vector3f) - .def_readonly("Vector3d", SdfValueTypeNames->Vector3d) - .def_readonly("Normal3h", SdfValueTypeNames->Normal3h) - .def_readonly("Normal3f", SdfValueTypeNames->Normal3f) - .def_readonly("Normal3d", SdfValueTypeNames->Normal3d) - .def_readonly("Color3h" , SdfValueTypeNames->Color3h) - .def_readonly("Color3f" , SdfValueTypeNames->Color3f) - .def_readonly("Color3d" , SdfValueTypeNames->Color3d) - .def_readonly("Color4h" , SdfValueTypeNames->Color4h) - .def_readonly("Color4f" , SdfValueTypeNames->Color4f) - .def_readonly("Color4d" , SdfValueTypeNames->Color4d) - .def_readonly("Quath" , SdfValueTypeNames->Quath) - .def_readonly("Quatf" , SdfValueTypeNames->Quatf) - .def_readonly("Quatd" , SdfValueTypeNames->Quatd) - .def_readonly("Matrix2d", SdfValueTypeNames->Matrix2d) - .def_readonly("Matrix3d", SdfValueTypeNames->Matrix3d) - .def_readonly("Matrix4d", SdfValueTypeNames->Matrix4d) - .def_readonly("Frame4d" , SdfValueTypeNames->Frame4d) - .def_readonly("TexCoord2h", SdfValueTypeNames->TexCoord2h) - .def_readonly("TexCoord2f", SdfValueTypeNames->TexCoord2f) - .def_readonly("TexCoord2d", SdfValueTypeNames->TexCoord2d) - .def_readonly("TexCoord3h", SdfValueTypeNames->TexCoord3h) - .def_readonly("TexCoord3f", SdfValueTypeNames->TexCoord3f) - .def_readonly("TexCoord3d", SdfValueTypeNames->TexCoord3d) - - .def_readonly("BoolArray" , SdfValueTypeNames->BoolArray) - .def_readonly("UCharArray" , SdfValueTypeNames->UCharArray) - .def_readonly("IntArray" , SdfValueTypeNames->IntArray) - .def_readonly("UIntArray" , SdfValueTypeNames->UIntArray) - .def_readonly("Int64Array" , SdfValueTypeNames->Int64Array) - .def_readonly("UInt64Array" , SdfValueTypeNames->UInt64Array) - .def_readonly("HalfArray" , SdfValueTypeNames->HalfArray) - .def_readonly("FloatArray" , SdfValueTypeNames->FloatArray) - .def_readonly("DoubleArray" , SdfValueTypeNames->DoubleArray) - .def_readonly("TimeCodeArray", SdfValueTypeNames->TimeCodeArray) - .def_readonly("StringArray" , SdfValueTypeNames->StringArray) - .def_readonly("TokenArray" , SdfValueTypeNames->TokenArray) - .def_readonly("AssetArray" , SdfValueTypeNames->AssetArray) - .def_readonly("Int2Array" , SdfValueTypeNames->Int2Array) - .def_readonly("Int3Array" , SdfValueTypeNames->Int3Array) - .def_readonly("Int4Array" , SdfValueTypeNames->Int4Array) - .def_readonly("Half2Array" , SdfValueTypeNames->Half2Array) - .def_readonly("Half3Array" , SdfValueTypeNames->Half3Array) - .def_readonly("Half4Array" , SdfValueTypeNames->Half4Array) - .def_readonly("Float2Array" , SdfValueTypeNames->Float2Array) - .def_readonly("Float3Array" , SdfValueTypeNames->Float3Array) - .def_readonly("Float4Array" , SdfValueTypeNames->Float4Array) - .def_readonly("Double2Array" , SdfValueTypeNames->Double2Array) - .def_readonly("Double3Array" , SdfValueTypeNames->Double3Array) - .def_readonly("Double4Array" , SdfValueTypeNames->Double4Array) - .def_readonly("Point3hArray" , SdfValueTypeNames->Point3hArray) - .def_readonly("Point3fArray" , SdfValueTypeNames->Point3fArray) - .def_readonly("Point3dArray" , SdfValueTypeNames->Point3dArray) - .def_readonly("Vector3hArray", SdfValueTypeNames->Vector3hArray) - .def_readonly("Vector3fArray", SdfValueTypeNames->Vector3fArray) - .def_readonly("Vector3dArray", SdfValueTypeNames->Vector3dArray) - .def_readonly("Normal3hArray", SdfValueTypeNames->Normal3hArray) - .def_readonly("Normal3fArray", SdfValueTypeNames->Normal3fArray) - .def_readonly("Normal3dArray", SdfValueTypeNames->Normal3dArray) - .def_readonly("Color3hArray" , SdfValueTypeNames->Color3hArray) - .def_readonly("Color3fArray" , SdfValueTypeNames->Color3fArray) - .def_readonly("Color3dArray" , SdfValueTypeNames->Color3dArray) - .def_readonly("Color4hArray" , SdfValueTypeNames->Color4hArray) - .def_readonly("Color4fArray" , SdfValueTypeNames->Color4fArray) - .def_readonly("Color4dArray" , SdfValueTypeNames->Color4dArray) - .def_readonly("QuathArray" , SdfValueTypeNames->QuathArray) - .def_readonly("QuatfArray" , SdfValueTypeNames->QuatfArray) - .def_readonly("QuatdArray" , SdfValueTypeNames->QuatdArray) - .def_readonly("Matrix2dArray", SdfValueTypeNames->Matrix2dArray) - .def_readonly("Matrix3dArray", SdfValueTypeNames->Matrix3dArray) - .def_readonly("Matrix4dArray", SdfValueTypeNames->Matrix4dArray) - .def_readonly("Frame4dArray" , SdfValueTypeNames->Frame4dArray) + .def_readonly("Bool" , SdfValueTypeNames->Bool) + .def_readonly("UChar" , SdfValueTypeNames->UChar) + .def_readonly("Int" , SdfValueTypeNames->Int) + .def_readonly("UInt" , SdfValueTypeNames->UInt) + .def_readonly("Int64" , SdfValueTypeNames->Int64) + .def_readonly("UInt64" , SdfValueTypeNames->UInt64) + .def_readonly("Half" , SdfValueTypeNames->Half) + .def_readonly("Float" , SdfValueTypeNames->Float) + .def_readonly("Double" , SdfValueTypeNames->Double) + .def_readonly("TimeCode" , SdfValueTypeNames->TimeCode) + .def_readonly("String" , SdfValueTypeNames->String) + .def_readonly("Token" , SdfValueTypeNames->Token) + .def_readonly("Asset" , SdfValueTypeNames->Asset) + .def_readonly("Opaque" , SdfValueTypeNames->Opaque) + .def_readonly("Group" , SdfValueTypeNames->Group) + .def_readonly("PathExpression" , SdfValueTypeNames->PathExpression) + .def_readonly("Int2" , SdfValueTypeNames->Int2) + .def_readonly("Int3" , SdfValueTypeNames->Int3) + .def_readonly("Int4" , SdfValueTypeNames->Int4) + .def_readonly("Half2" , SdfValueTypeNames->Half2) + .def_readonly("Half3" , SdfValueTypeNames->Half3) + .def_readonly("Half4" , SdfValueTypeNames->Half4) + .def_readonly("Float2" , SdfValueTypeNames->Float2) + .def_readonly("Float3" , SdfValueTypeNames->Float3) + .def_readonly("Float4" , SdfValueTypeNames->Float4) + .def_readonly("Double2" , SdfValueTypeNames->Double2) + .def_readonly("Double3" , SdfValueTypeNames->Double3) + .def_readonly("Double4" , SdfValueTypeNames->Double4) + .def_readonly("Point3h" , SdfValueTypeNames->Point3h) + .def_readonly("Point3f" , SdfValueTypeNames->Point3f) + .def_readonly("Point3d" , SdfValueTypeNames->Point3d) + .def_readonly("Vector3h" , SdfValueTypeNames->Vector3h) + .def_readonly("Vector3f" , SdfValueTypeNames->Vector3f) + .def_readonly("Vector3d" , SdfValueTypeNames->Vector3d) + .def_readonly("Normal3h" , SdfValueTypeNames->Normal3h) + .def_readonly("Normal3f" , SdfValueTypeNames->Normal3f) + .def_readonly("Normal3d" , SdfValueTypeNames->Normal3d) + .def_readonly("Color3h" , SdfValueTypeNames->Color3h) + .def_readonly("Color3f" , SdfValueTypeNames->Color3f) + .def_readonly("Color3d" , SdfValueTypeNames->Color3d) + .def_readonly("Color4h" , SdfValueTypeNames->Color4h) + .def_readonly("Color4f" , SdfValueTypeNames->Color4f) + .def_readonly("Color4d" , SdfValueTypeNames->Color4d) + .def_readonly("Quath" , SdfValueTypeNames->Quath) + .def_readonly("Quatf" , SdfValueTypeNames->Quatf) + .def_readonly("Quatd" , SdfValueTypeNames->Quatd) + .def_readonly("Matrix2d" , SdfValueTypeNames->Matrix2d) + .def_readonly("Matrix3d" , SdfValueTypeNames->Matrix3d) + .def_readonly("Matrix4d" , SdfValueTypeNames->Matrix4d) + .def_readonly("Frame4d" , SdfValueTypeNames->Frame4d) + .def_readonly("TexCoord2h" , SdfValueTypeNames->TexCoord2h) + .def_readonly("TexCoord2f" , SdfValueTypeNames->TexCoord2f) + .def_readonly("TexCoord2d" , SdfValueTypeNames->TexCoord2d) + .def_readonly("TexCoord3h" , SdfValueTypeNames->TexCoord3h) + .def_readonly("TexCoord3f" , SdfValueTypeNames->TexCoord3f) + .def_readonly("TexCoord3d" , SdfValueTypeNames->TexCoord3d) + + .def_readonly("BoolArray" , SdfValueTypeNames->BoolArray) + .def_readonly("UCharArray" , SdfValueTypeNames->UCharArray) + .def_readonly("IntArray" , SdfValueTypeNames->IntArray) + .def_readonly("UIntArray" , SdfValueTypeNames->UIntArray) + .def_readonly("Int64Array" , SdfValueTypeNames->Int64Array) + .def_readonly("UInt64Array" , SdfValueTypeNames->UInt64Array) + .def_readonly("HalfArray" , SdfValueTypeNames->HalfArray) + .def_readonly("FloatArray" , SdfValueTypeNames->FloatArray) + .def_readonly("DoubleArray" , SdfValueTypeNames->DoubleArray) + .def_readonly("TimeCodeArray" , SdfValueTypeNames->TimeCodeArray) + .def_readonly("StringArray" , SdfValueTypeNames->StringArray) + .def_readonly("TokenArray" , SdfValueTypeNames->TokenArray) + .def_readonly("AssetArray" , SdfValueTypeNames->AssetArray) + .def_readonly("PathExpressionArray", + SdfValueTypeNames->PathExpressionArray) + .def_readonly("Int2Array" , SdfValueTypeNames->Int2Array) + .def_readonly("Int3Array" , SdfValueTypeNames->Int3Array) + .def_readonly("Int4Array" , SdfValueTypeNames->Int4Array) + .def_readonly("Half2Array" , SdfValueTypeNames->Half2Array) + .def_readonly("Half3Array" , SdfValueTypeNames->Half3Array) + .def_readonly("Half4Array" , SdfValueTypeNames->Half4Array) + .def_readonly("Float2Array" , SdfValueTypeNames->Float2Array) + .def_readonly("Float3Array" , SdfValueTypeNames->Float3Array) + .def_readonly("Float4Array" , SdfValueTypeNames->Float4Array) + .def_readonly("Double2Array" , SdfValueTypeNames->Double2Array) + .def_readonly("Double3Array" , SdfValueTypeNames->Double3Array) + .def_readonly("Double4Array" , SdfValueTypeNames->Double4Array) + .def_readonly("Point3hArray" , SdfValueTypeNames->Point3hArray) + .def_readonly("Point3fArray" , SdfValueTypeNames->Point3fArray) + .def_readonly("Point3dArray" , SdfValueTypeNames->Point3dArray) + .def_readonly("Vector3hArray" , SdfValueTypeNames->Vector3hArray) + .def_readonly("Vector3fArray" , SdfValueTypeNames->Vector3fArray) + .def_readonly("Vector3dArray" , SdfValueTypeNames->Vector3dArray) + .def_readonly("Normal3hArray" , SdfValueTypeNames->Normal3hArray) + .def_readonly("Normal3fArray" , SdfValueTypeNames->Normal3fArray) + .def_readonly("Normal3dArray" , SdfValueTypeNames->Normal3dArray) + .def_readonly("Color3hArray" , SdfValueTypeNames->Color3hArray) + .def_readonly("Color3fArray" , SdfValueTypeNames->Color3fArray) + .def_readonly("Color3dArray" , SdfValueTypeNames->Color3dArray) + .def_readonly("Color4hArray" , SdfValueTypeNames->Color4hArray) + .def_readonly("Color4fArray" , SdfValueTypeNames->Color4fArray) + .def_readonly("Color4dArray" , SdfValueTypeNames->Color4dArray) + .def_readonly("QuathArray" , SdfValueTypeNames->QuathArray) + .def_readonly("QuatfArray" , SdfValueTypeNames->QuatfArray) + .def_readonly("QuatdArray" , SdfValueTypeNames->QuatdArray) + .def_readonly("Matrix2dArray" , SdfValueTypeNames->Matrix2dArray) + .def_readonly("Matrix3dArray" , SdfValueTypeNames->Matrix3dArray) + .def_readonly("Matrix4dArray" , SdfValueTypeNames->Matrix4dArray) + .def_readonly("Frame4dArray" , SdfValueTypeNames->Frame4dArray) .def_readonly("TexCoord2hArray", SdfValueTypeNames->TexCoord2hArray) .def_readonly("TexCoord2fArray", SdfValueTypeNames->TexCoord2fArray) .def_readonly("TexCoord2dArray", SdfValueTypeNames->TexCoord2dArray) diff --git a/pxr/usd/usd/testenv/testUsdAttributeInterpolationCpp.cpp b/pxr/usd/usd/testenv/testUsdAttributeInterpolationCpp.cpp index f4d7804ec4..c419716655 100644 --- a/pxr/usd/usd/testenv/testUsdAttributeInterpolationCpp.cpp +++ b/pxr/usd/usd/testenv/testUsdAttributeInterpolationCpp.cpp @@ -325,6 +325,43 @@ struct TestCase > } }; +template <> +struct TestCase +{ + static void AddTestCase(const UsdPrim& prim) + { + UsdAttribute attr = + prim.CreateAttribute(TfToken("testPathExpr"), + SdfValueTypeNames->PathExpression); + TF_VERIFY(attr.Set(SdfPathExpression("p1"), UsdTimeCode(0.0))); + TF_VERIFY(attr.Set(SdfPathExpression("p1"), UsdTimeCode(2.0))); + } + + static void TestLinearInterpolation(const UsdPrim& prim) + { + // pathExpression does not linearly interpolate + TestHeldInterpolation(prim); + } + + static void TestHeldInterpolation(const UsdPrim& prim) + { + UsdAttribute attr = prim.GetAttribute(TfToken("testPathExpr")); + VerifyAttributeValue(attr, UsdTimeCode(0.0), SdfPathExpression("p1")); + VerifyAttributeValue(attr, UsdTimeCode(1.0), SdfPathExpression("p1")); + VerifyAttributeValue(attr, UsdTimeCode(2.0), SdfPathExpression("p2")); + } +}; + +template <> +struct TestCase > +{ + // We do not support shaped pathExpression values. + static void AddTestCase(const UsdPrim& prim) {} + static void TestLinearInterpolation(const UsdPrim& prim) {} + static void TestHeldInterpolation(const UsdPrim& prim) {} +}; + + template <> struct TestCase { @@ -1946,7 +1983,7 @@ TestInterpolation(const string &layerIdent) // value type is added without a corresponding TestCase added, // this test won't compile. If a value type is removed, this // check will fail at runtime. - static const size_t numTestCasesExpected = 32; + static const size_t numTestCasesExpected = 33; const size_t numTestCasesAdded = AddTestCasesToPrim(testPrim); TF_VERIFY(numTestCasesAdded == numTestCasesExpected, "Expected %zd cases, got %zu.", From 846a52646c44c0be7db058ef87c4aeb82ab3130e Mon Sep 17 00:00:00 2001 From: gitamohr Date: Tue, 25 Jul 2023 16:53:18 -0700 Subject: [PATCH 127/352] usd: Fix a newly introduced bug in testUsdAttributeInterpolationCpp. (Internal change: 2286794) --- .../usd/testenv/testUsdAttributeInterpolationCpp.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pxr/usd/usd/testenv/testUsdAttributeInterpolationCpp.cpp b/pxr/usd/usd/testenv/testUsdAttributeInterpolationCpp.cpp index c419716655..aee445d73d 100644 --- a/pxr/usd/usd/testenv/testUsdAttributeInterpolationCpp.cpp +++ b/pxr/usd/usd/testenv/testUsdAttributeInterpolationCpp.cpp @@ -334,7 +334,7 @@ struct TestCase prim.CreateAttribute(TfToken("testPathExpr"), SdfValueTypeNames->PathExpression); TF_VERIFY(attr.Set(SdfPathExpression("p1"), UsdTimeCode(0.0))); - TF_VERIFY(attr.Set(SdfPathExpression("p1"), UsdTimeCode(2.0))); + TF_VERIFY(attr.Set(SdfPathExpression("p2"), UsdTimeCode(2.0))); } static void TestLinearInterpolation(const UsdPrim& prim) @@ -346,9 +346,12 @@ struct TestCase static void TestHeldInterpolation(const UsdPrim& prim) { UsdAttribute attr = prim.GetAttribute(TfToken("testPathExpr")); - VerifyAttributeValue(attr, UsdTimeCode(0.0), SdfPathExpression("p1")); - VerifyAttributeValue(attr, UsdTimeCode(1.0), SdfPathExpression("p1")); - VerifyAttributeValue(attr, UsdTimeCode(2.0), SdfPathExpression("p2")); + VerifyAttributeValue(attr, UsdTimeCode(0.0), + SdfPathExpression("/TestPrim/p1")); + VerifyAttributeValue(attr, UsdTimeCode(1.0), + SdfPathExpression("/TestPrim/p1")); + VerifyAttributeValue(attr, UsdTimeCode(2.0), + SdfPathExpression("/TestPrim/p2")); } }; From 12c932dd8f2ee14bc2dfb77fe2b32995f73fad78 Mon Sep 17 00:00:00 2001 From: gitamohr Date: Tue, 25 Jul 2023 16:53:26 -0700 Subject: [PATCH 128/352] usd: Usd-level composition support for path expressions. Unit tests coming in a followup change. (Internal change: 2286818) --- pxr/usd/usd/prim.cpp | 57 +++++ pxr/usd/usd/prim.h | 12 + pxr/usd/usd/property.cpp | 52 +--- pxr/usd/usd/stage.cpp | 541 +++++++++++++++++++++++++++++++++++---- pxr/usd/usd/stage.h | 9 + 5 files changed, 574 insertions(+), 97 deletions(-) diff --git a/pxr/usd/usd/prim.cpp b/pxr/usd/usd/prim.cpp index e410d52ccc..b6dd202bee 100644 --- a/pxr/usd/usd/prim.cpp +++ b/pxr/usd/usd/prim.cpp @@ -66,6 +66,26 @@ PXR_NAMESPACE_OPEN_SCOPE +SdfPath +UsdPrim::_ProtoToInstancePathMap +::MapProtoToInstance(SdfPath const &protoPath) const +{ + SdfPath ret = protoPath; + if (_map.empty()) { + return ret; + } + + auto it = SdfPathFindLongestPrefix( + _map.begin(), _map.end(), ret, + [](auto const &p) { return p.first; }); + + if (it != _map.end()) { + ret = ret.ReplacePrefix(it->first, it->second); + } + + return ret; +} + UsdPrim UsdPrim::GetChild(const TfToken &name) const { @@ -2036,6 +2056,43 @@ UsdPrim::_MakeResolveTargetFromEditTarget( } } +UsdPrim::_ProtoToInstancePathMap +UsdPrim::_GetProtoToInstancePathMap() const +{ + // Walk up to the root while we're in (nested) instance-land. When we + // hit an instance or a prototype, add a mapping for the prototype + // source prim index path to this particular instance (proxy) path. + + _ProtoToInstancePathMap pathMap; + if (_Prim()->IsInPrototype()) { + // This prim might be an instance proxy inside a prototype, if so use + // its prototype, but be sure to skip up to the parent if *this* prim is + // an instance. Target paths on *this* prim are in the "space" of its + // next ancestral prototype, just as how attribute & metadata values + // come from the instance itself, not its prototype. + + UsdPrim prim = *this; + if (prim.IsInstance()) { + prim = prim.GetParent(); + } + for (; prim; prim = prim.GetParent()) { + UsdPrim prototype; + if (prim.IsInstance()) { + prototype = prim.GetPrototype(); + } else if (prim.IsPrototype()) { + prototype = prim; + } + if (prototype) { + pathMap._map.emplace_back( + prototype._GetSourcePrimIndex().GetPath(), + prim.GetPath()); + } + }; + std::sort(pathMap._map.begin(), pathMap._map.end()); + } + return pathMap; +} + UsdResolveTarget UsdPrim::MakeResolveTargetUpToEditTarget( const UsdEditTarget &editTarget) const diff --git a/pxr/usd/usd/prim.h b/pxr/usd/usd/prim.h index eab9555d5d..89d4919feb 100644 --- a/pxr/usd/usd/prim.h +++ b/pxr/usd/usd/prim.h @@ -2135,6 +2135,15 @@ class UsdPrim : public UsdObject /// @} private: + class _ProtoToInstancePathMap { + friend class UsdPrim; + public: + using _Map = std::vector>; + SdfPath MapProtoToInstance(SdfPath const &protoPath) const; + private: + _Map _map; + }; + friend class UsdObject; friend class UsdPrimSiblingIterator; friend class UsdPrimSubtreeIterator; @@ -2142,6 +2151,7 @@ class UsdPrim : public UsdObject friend class UsdSchemaBase; friend class UsdAPISchemaBase; friend class UsdStage; + friend class Usd_StageImplAccess; friend class UsdPrimRange; friend class Usd_PrimData; friend class Usd_PrimFlagsPredicate; @@ -2210,6 +2220,8 @@ class UsdPrim : public UsdObject _MakeResolveTargetFromEditTarget( const UsdEditTarget &editTarget, bool makeAsStrongerThan) const; + + _ProtoToInstancePathMap _GetProtoToInstancePathMap() const; }; #ifdef doxygen diff --git a/pxr/usd/usd/property.cpp b/pxr/usd/usd/property.cpp index 57e5779e55..bcddf4616d 100644 --- a/pxr/usd/usd/property.cpp +++ b/pxr/usd/usd/property.cpp @@ -176,25 +176,6 @@ UsdProperty::FlattenTo(const UsdProperty &property) const *this, property.GetPrim(), property.GetName()); } -// Map from path to replacement for remapping target paths during flattening. -using _PathMap = std::vector>; - -// Apply path remappings to a list of target paths. -static SdfPath -_MapPath(_PathMap const &map, SdfPath const &path) -{ - if (map.empty()) { - return path; - } - - auto it = SdfPathFindLongestPrefix( - map.begin(), map.end(), path, TfGet<0>()); - if (it != map.end()) { - return path.ReplacePrefix(it->first, it->second); - } - return path; -} - bool UsdProperty::_GetTargets(SdfSpecType specType, SdfPathVector *out, bool *foundErrors) const @@ -229,38 +210,11 @@ UsdProperty::_GetTargets(SdfSpecType specType, SdfPathVector *out, } if (!targetIndex.paths.empty() && _Prim()->IsInPrototype()) { - - // Walk up to the root while we're in (nested) instance-land. When we - // hit an instance or a prototype, add a mapping for the prototype - // source prim index path to this particular instance (proxy) path. - _PathMap pathMap; - - // This prim might be an instance proxy inside a prototype, if so use - // its prototype, but be sure to skip up to the parent if *this* prim is - // an instance. Target paths on *this* prim are in the "space" of its - // next ancestral prototype, just as how attribute & metadata values - // come from the instance itself, not its prototype. - UsdPrim prim = GetPrim(); - if (prim.IsInstance()) { - prim = prim.GetParent(); - } - for (; prim; prim = prim.GetParent()) { - UsdPrim prototype; - if (prim.IsInstance()) { - prototype = prim.GetPrototype(); - } else if (prim.IsPrototype()) { - prototype = prim; - } - if (prototype) { - pathMap.emplace_back(prototype._GetSourcePrimIndex().GetPath(), - prim.GetPath()); - } - }; - std::sort(pathMap.begin(), pathMap.end()); - + UsdPrim::_ProtoToInstancePathMap pathMap = + GetPrim()._GetProtoToInstancePathMap(); // Now map the targets. for (SdfPath const &target : targetIndex.paths) { - out->push_back(_MapPath(pathMap, target)); + out->push_back(pathMap.MapProtoToInstance(target)); if (out->back().IsEmpty()) { out->pop_back(); } diff --git a/pxr/usd/usd/stage.cpp b/pxr/usd/usd/stage.cpp index 3cd650e8ca..68a80f8bf1 100644 --- a/pxr/usd/usd/stage.cpp +++ b/pxr/usd/usd/stage.cpp @@ -273,6 +273,98 @@ _GetLayerToStageOffset(const PcpNodeRef& pcpNode, return localOffset; } +template +static +SdfPathExpression +_MapPathExpressionToPrim( + SdfPathExpression const &pathExpr, + PcpMapFunction const &mapFn, + ProtoToInstancePathMap const &protoToInstMap, + std::vector *unmappedPatterns=nullptr, + std::vector *unmappedRefs=nullptr + ) +{ + using PathExpr = SdfPathExpression; + using Op = PathExpr::Op; + using PathPattern = PathExpr::PathPattern; + using ExpressionReference = PathExpr::ExpressionReference; + std::vector stack; + + auto map = [&](SdfPath const &path) { + SdfPath mapped = mapFn.MapSourceToTarget(path); + if (!mapped.IsEmpty()) { + mapped = protoToInstMap.MapProtoToInstance(mapped); + } + return mapped; + }; + + auto logic = [&stack](Op op, int argIndex) { + if (op == PathExpr::Complement) { + if (argIndex == 1) { + stack.back() = + PathExpr::MakeComplement(std::move(stack.back())); + } + } + else { + if (argIndex == 2) { + PathExpr arg2 = std::move(stack.back()); + stack.pop_back(); + stack.back() = PathExpr::MakeOp( + op, std::move(stack.back()), std::move(arg2)); + } + } + }; + + auto mapRef = + [&stack, &map, &unmappedRefs](ExpressionReference const &ref) { + if (ref.path.IsEmpty()) { + // If empty path, retain the reference unchanged. This is a special + // "named" reference (%:name) without a path. + stack.push_back(PathExpr::MakeAtom(ref)); + } + else { + SdfPath mapped = map(ref.path); + // This reference is outside the domain, push the Nothing() + // subexpression. + if (mapped.IsEmpty()) { + if (unmappedRefs) { + unmappedRefs->push_back(ref); + } + stack.push_back(SdfPathExpression::Nothing()); + } + // Otherwise push the mapped reference. + else { + stack.push_back(PathExpr::MakeAtom( + PathExpr::ExpressionReference { + mapped, ref.name })); + } + } + }; + + auto mapPattern = + [&stack, &map, &unmappedPatterns](PathPattern const &pattern) { + SdfPath mapped = map(pattern.GetPrefix()); + // If the prefix path is outside the domain, push the Nothing() + // subexpression. + if (mapped.IsEmpty()) { + if (unmappedPatterns) { + unmappedPatterns->push_back(pattern); + } + stack.push_back(SdfPathExpression::Nothing()); + } + // Otherwise push the mapped pattern. + else { + PathPattern mappedPattern(pattern); + mappedPattern.SetPrefix(mapped); + stack.push_back(PathExpr::MakeAtom(mappedPattern)); + } + }; + + // Walk the expression to map. + pathExpr.Walk(logic, mapRef, mapPattern); + return stack.empty() ? SdfPathExpression {} : stack.back(); +} + inline std::string _StageMallocTagString(const std::string &id) @@ -493,6 +585,29 @@ UsdStage::_MakeResolvedTimeCodes(UsdTimeCode time, const UsdAttribute &attr, } } +void +UsdStage::_MakeResolvedPathExpressions( + UsdTimeCode time, const UsdAttribute &attr, + SdfPathExpression *pathExprs, + size_t numPathExprs) const +{ + UsdResolveInfo info; + _GetResolveInfo(attr, &info, &time); + + // Use the info's node & make a map function. We hit this for anim values, + // requests at non-default, or thru AttributeQuery, which we don't "deeply" + // compose. Known bug. + + PcpMapFunction const &mapFn = info.GetNode().GetMapToRoot().Evaluate(); + UsdPrim::_ProtoToInstancePathMap ptoiMap = + attr.GetPrim()._GetProtoToInstancePathMap(); + + for (SdfPathExpression *pexpr = pathExprs; + pexpr != pathExprs + numPathExprs; ++pexpr) { + *pexpr = _MapPathExpressionToPrim(*pexpr, mapFn, ptoiMap); + } +} + void UsdStage::_MakeResolvedAttributeValue( UsdTimeCode time, const UsdAttribute &attr, VtValue *value) const @@ -510,7 +625,21 @@ UsdStage::_MakeResolvedAttributeValue( _MakeResolvedTimeCodes( time, attr, timeCodes.data(), timeCodes.size()); value->UncheckedSwap(timeCodes); - } else { + } + else if (value->IsHolding()) { + SdfPathExpression pathExpr; + value->UncheckedSwap(pathExpr); + _MakeResolvedPathExpressions(time, attr, &pathExpr, 1); + value->UncheckedSwap(pathExpr); + } + else if (value->IsHolding>()) { + VtArray pathExprs; + value->UncheckedSwap(pathExprs); + _MakeResolvedPathExpressions( + time, attr, pathExprs.data(), pathExprs.size()); + value->UncheckedSwap(pathExprs); + } + else { _MakeResolvedAssetPathsValue(time, attr, value); } } @@ -1622,6 +1751,12 @@ UsdStage::_SetMetadata(const UsdObject &object, } else if (value.IsHolding>()) { return _SetMetadata(object, key, keyPath, value.UncheckedGet>()); + } else if (value.IsHolding()) { + return _SetMetadata(object, key, keyPath, + value.UncheckedGet()); + } else if (value.IsHolding>()) { + return _SetMetadata(object, key, keyPath, + value.UncheckedGet>()); } else if (value.IsHolding()) { return _SetMetadata(object, key, keyPath, value.UncheckedGet()); @@ -1641,7 +1776,8 @@ UsdStage::_SetMetadata(const UsdObject &object, // bool setValueImpl(const SdfAbstractDataConstValue &) template static bool -_SetMappedValueForEditTarget(const T &newValue, +_SetMappedValueForEditTarget(UsdObject const &obj, + const T &newValue, const UsdEditTarget &editTarget, const Fn &setValueImpl) { @@ -1661,6 +1797,39 @@ _SetMappedValueForEditTarget(const T &newValue, return setValueImpl(in); } +template +static bool +_SetMappedValueForEditTarget(UsdObject const &obj, + const SdfPathExpression &newValue, + const UsdEditTarget &editTarget, + const Fn &setValueImpl) +{ + // Make absolute, then map across the edit target. + SdfPathExpression mappedExpr = + editTarget.GetMapFunction().MapTargetToSource( + newValue.MakeAbsolute(obj.GetPrim().GetPath())); + SdfAbstractDataConstTypedValue in(&mappedExpr); + return setValueImpl(in); +} + +template +static bool +_SetMappedValueForEditTarget(UsdObject const &obj, + const VtArray &newValue, + const UsdEditTarget &editTarget, + const Fn &setValueImpl) +{ + // Make absolute, then map across the edit target. + VtArray mappedExprs = newValue; + SdfPath const &primPath = obj.GetPrim().GetPath(); + PcpMapFunction const &mapFn = editTarget.GetMapFunction(); + for (SdfPathExpression &mappedExpr: mappedExprs) { + mappedExpr = mapFn.MapTargetToSource(mappedExpr.MakeAbsolute(primPath)); + } + SdfAbstractDataConstTypedValue> in(&mappedExprs); + return setValueImpl(in); +} + template bool UsdStage::_SetEditTargetMappedMetadata( const UsdObject &obj, const TfToken& fieldName, @@ -1670,7 +1839,7 @@ bool UsdStage::_SetEditTargetMappedMetadata( "_SetEditTargetMappedMetadata can only be instantiated for " "types that are edit target mappable."); return _SetMappedValueForEditTarget( - newValue, GetEditTarget(), + obj, newValue, GetEditTarget(), [this, &obj, &fieldName, &keyPath](const SdfAbstractDataConstValue &in) { return this->_SetMetadataImpl(obj, fieldName, keyPath, in); @@ -1752,7 +1921,7 @@ UsdStage::_SetEditTargetMappedValue( static_assert(_IsEditTargetMappable::value, "_SetEditTargetMappedValue can only be instantiated for " "types that are edit target mappable."); - return _SetMappedValueForEditTarget(newValue, GetEditTarget(), + return _SetMappedValueForEditTarget(attr, newValue, GetEditTarget(), [this, &time, &attr](const SdfAbstractDataConstValue &in) { return this->_SetValueImpl(time, attr, in); @@ -1791,10 +1960,19 @@ UsdStage::_SetValue( if (newValue.IsHolding()) { return _SetValue(time, attr, newValue.UncheckedGet()); - } else if (newValue.IsHolding>()) { + } + else if (newValue.IsHolding>()) { return _SetValue(time, attr, newValue.UncheckedGet>()); } + else if (newValue.IsHolding()) { + return _SetValue(time, attr, + newValue.UncheckedGet()); + } + else if (newValue.IsHolding>()) { + return _SetValue(time, attr, + newValue.UncheckedGet>()); + } return _SetValueImpl(time, attr, newValue); } @@ -5737,10 +5915,48 @@ _TryResolveTimeCodes(Storage storage, const LayerOffsetAccess &offsetAccess) _TryApplyLayerOffsetToValue>(storage, offsetAccess); } +struct Usd_StageImplAccess +{ + static auto GetPrimProtoToInstancePathMap(UsdPrim const &prim) { + return prim._GetProtoToInstancePathMap(); + } +}; + +template +static bool +_TryResolvePathExprs(Storage storage, UsdObject const &obj, + const PcpNodeRef &node) +{ + // Resolve. + if (_IsHolding(storage)) { + SdfPathExpression expr; + _UncheckedSwap(storage, expr); + expr = _MapPathExpressionToPrim( + expr, node.GetMapToRoot().Evaluate(), + Usd_StageImplAccess::GetPrimProtoToInstancePathMap(obj.GetPrim())); + _UncheckedSwap(storage, expr); + return true; + } + else if (_IsHolding>(storage)) { + VtArray exprs; + _UncheckedSwap(storage, exprs); + auto protoToInstMap = + Usd_StageImplAccess::GetPrimProtoToInstancePathMap(obj.GetPrim()); + PcpMapFunction const &mapFn = node.GetMapToRoot().Evaluate(); + for (SdfPathExpression &expr: exprs) { + expr = _MapPathExpressionToPrim(expr, mapFn, protoToInstMap); + } + _UncheckedSwap(storage, exprs); + return true; + } + return false; +} + // If the given dictionary contains any resolvable values, fills in those values // with their resolved paths. static void -_ResolveValuesInDictionary(const Usd_AssetPathContext &anchor, +_ResolveValuesInDictionary(const UsdObject &object, + const Usd_AssetPathContext &anchor, const ArResolverContext &context, const LayerOffsetAccess *offsetAccess, VtDictionary *dict, @@ -5749,20 +5965,19 @@ _ResolveValuesInDictionary(const Usd_AssetPathContext &anchor, // If there is no layer offset, don't bother with resolving time codes and // just resolve asset paths. if (offsetAccess) { - Usd_ResolveValuesInDictionary(dict, - [&anchor, &context, &offsetAccess, &forFlattening] - (VtValue *value) - { + Usd_ResolveValuesInDictionary( + dict, [&](VtValue *value) { _TryResolveAssetPaths( value, context, anchor, forFlattening) || - _TryResolveTimeCodes(value, *offsetAccess); + _TryResolveTimeCodes(value, *offsetAccess) || + _TryResolvePathExprs(value, object, anchor.node); }); } else { - Usd_ResolveValuesInDictionary(dict, - [&anchor, &context, &forFlattening](VtValue *value) - { + Usd_ResolveValuesInDictionary( + dict, [&](VtValue *value) { _TryResolveAssetPaths( - value, context, anchor, forFlattening); + value, context, anchor, forFlattening) || + _TryResolvePathExprs(value, object, anchor.node); }); } } @@ -5771,7 +5986,8 @@ _ResolveValuesInDictionary(const Usd_AssetPathContext &anchor, // storage. Returns true if the value is holding a VtDictionary. template static bool -_TryResolveValuesInDictionary(Storage storage, +_TryResolveValuesInDictionary(const UsdObject &object, + Storage storage, const Usd_AssetPathContext &anchor, const ArResolverContext &context, const LayerOffsetAccess *offsetAccess, @@ -5781,7 +5997,8 @@ _TryResolveValuesInDictionary(Storage storage, VtDictionary resolvedDict; _UncheckedSwap(storage, resolvedDict); _ResolveValuesInDictionary( - anchor, context, offsetAccess, &resolvedDict, forFlattening); + object, anchor, context, offsetAccess, + &resolvedDict, forFlattening); _UncheckedSwap(storage, resolvedDict); return true; } @@ -5811,8 +6028,13 @@ struct ValueComposerBase protected: // Protected constructor. - explicit ValueComposerBase(Storage s, bool forFlattening = false) - : _value(s), _done(false), _forFlattening(forFlattening) + ValueComposerBase(Storage s, + UsdObject const &object, + bool forFlattening = false) + : _value(s) + , _object(object) + , _done(false) + , _forFlattening(forFlattening) {} // Gets the value from the layer spec. @@ -5860,7 +6082,7 @@ struct ValueComposerBase // Try resolving the values in the dictionary. if (_TryResolveValuesInDictionary( - _value, { &stage, layer, specPath, node }, + _object, _value, { &stage, layer, specPath, node }, context, &layerOffsetAccess, _forFlattening)) { // Merge the resolved dictionary. VtDictionaryOverRecursive( @@ -5885,7 +6107,7 @@ struct ValueComposerBase VtDictionary tmpDict = _UncheckedGet(_value); // Try to read fallback value. - if(_GetFallbackValue(primDef, propName, fieldName, keyPath)) { + if (_GetFallbackValue(primDef, propName, fieldName, keyPath)) { // Always done after reading the fallback value. _done = true; if (_IsHolding(_value)) { @@ -5897,7 +6119,113 @@ struct ValueComposerBase } } + // Consumes an authored pathExpression value and merges it into the current + // strongest pathExpression value. + bool _ConsumeAndMergeAuthoredPathExpressions(const PcpNodeRef &node, + const SdfLayerRefPtr &layer, + const SdfPath &specPath, + const TfToken &fieldName, + const TfToken &keyPath) { + SdfPathExpression tmpExpr; + VtArray tmpExprs; + bool array = false; + + // Copy to the side since we'll have to merge if the next opinion is + // also an expression. + if (_IsHolding(_value)) { + tmpExpr = _UncheckedGet(_value); + } + else { + array = true; + tmpExprs = _UncheckedGet>(_value); + } + + // Try to read value from scene description. + if (_GetValue(layer, specPath, fieldName, keyPath)) { + // Try resolving the values in the dictionary. + if (_TryResolvePathExprs(_value, _object, node)) { + // Merge the resolved expr. + if (array) { + // If the arrays are the same size, merge index-wise. + // Otherwise just take the strongest? + VtArray weaker = + _UncheckedGet>(_value); + if (weaker.size() == tmpExprs.size()) { + std::transform( + tmpExprs.begin(), tmpExprs.end(), weaker.begin(), + tmpExprs.begin(), + [](SdfPathExpression const &stronger, + SdfPathExpression const &weaker) { + return stronger.ComposeOver(weaker); + }); + } + _UncheckedSwap(_value, tmpExprs); + } + else { + tmpExpr = std::move(tmpExpr) + .ComposeOver(_UncheckedGet(_value)); + _UncheckedSwap(_value, tmpExpr); + } + } + return true; + } + return false; + } + + // Consumes the fallback pathExpression value and merges it into the current + // pathExpression value. + void _ConsumeAndMergeFallbackPathExpressions( + const UsdPrimDefinition &primDef, + const TfToken &propName, + const TfToken &fieldName, + const TfToken &keyPath) + { + SdfPathExpression tmpExpr; + VtArray tmpExprs; + bool array = false; + + // Copy to the side since we'll have to merge if the next opinion is + // also an expression. + if (_IsHolding(_value)) { + tmpExpr = _UncheckedGet(_value); + } + else { + array = true; + tmpExprs = _UncheckedGet>(_value); + } + + // Try to read value from scene description. + if (_GetFallbackValue(primDef, propName, fieldName, keyPath)) { + // Always done after reading fallback value. + _done = true; + // No need to resolve a fallback value... + // Merge the resolved expr. + if (array) { + // If the arrays are the same size, merge index-wise. + // Otherwise just take the strongest? + VtArray weaker = + _UncheckedGet>(_value); + if (weaker.size() == tmpExprs.size()) { + std::transform( + tmpExprs.begin(), tmpExprs.end(), weaker.begin(), + tmpExprs.begin(), + [](SdfPathExpression const &stronger, + SdfPathExpression const &weaker) { + return stronger.ComposeOver(weaker); + }); + } + _UncheckedSwap(_value, tmpExprs); + } + else { + tmpExpr = std::move(tmpExpr) + .ComposeOver(_UncheckedGet(_value)); + _UncheckedSwap(_value, tmpExpr); + } + } + } + Storage _value; + UsdObject _object; bool _done; bool _forFlattening; }; @@ -5909,8 +6237,9 @@ struct UntypedValueComposer : public ValueComposerBase using Base = ValueComposerBase; explicit UntypedValueComposer( - VtValue *s, bool forFlattening = false) - : Base(s, forFlattening) {} + VtValue *s, UsdObject const &object, + bool forFlattening = false) + : Base(s, object, forFlattening) {} bool ConsumeAuthored(const UsdStage &stage, const PcpNodeRef &node, @@ -5924,13 +6253,21 @@ struct UntypedValueComposer : public ValueComposerBase // each other. return this->_ConsumeAndMergeAuthoredDictionary( stage, node, layer, specPath, fieldName, keyPath); - } else { + } + else if (_IsHoldingPathExpressions()) { + // Path expressions both have special Resolve behavior and merge + // atop each other. + return this->_ConsumeAndMergeAuthoredPathExpressions( + node, layer, specPath, fieldName, keyPath); + } + else { // Try to read value from scene description and resolve it if needed // if the value is found. if (this->_GetValue(layer, specPath, fieldName, keyPath)) { - // We're done if we got value and it's not a dictionary. For - // dictionaries we'll continue to merge in weaker dictionaries. - if (!_IsHoldingDictionary()) { + // We're done if we got value and it's not a dictionary or path + // expressions. For those types we'll continue to merge in + // weaker opinions. + if (!_IsHoldingDictionary() && !_IsHoldingPathExpressions()) { this->_done = true; } _ResolveValue(stage, node, layer, specPath); @@ -5950,7 +6287,14 @@ struct UntypedValueComposer : public ValueComposerBase // are merged into the current dictionary value.. this->_ConsumeAndMergeFallbackDictionary( primDef, propName, fieldName, keyPath); - } else { + } + else if (_IsHoldingPathExpressions()) { + // Handle special value-type composition: fallback path expressions + // are merged into the current expression value.. + this->_ConsumeAndMergeFallbackPathExpressions( + primDef, propName, fieldName, keyPath); + } + else { // Try to read fallback value. Fallbacks are not resolved. this->_done = this->_GetFallbackValue( primDef, propName, fieldName, keyPath); @@ -5962,6 +6306,11 @@ struct UntypedValueComposer : public ValueComposerBase return _IsHolding(this->_value); } + bool _IsHoldingPathExpressions() const { + return _IsHolding(this->_value) || + _IsHolding>(this->_value); + } + void _ResolveValue(const UsdStage& stage, const PcpNodeRef &node, const SdfLayerRefPtr &layer, @@ -5983,7 +6332,8 @@ struct UntypedValueComposer : public ValueComposerBase // here to the cover the case when the storage container starts as an // empty VtValue. if (_TryResolveValuesInDictionary( - this->_value, { &stage, layer, specPath, node }, + this->_object, this->_value, + { &stage, layer, specPath, node }, context, &layerOffsetAccess, this->_forFlattening)) { } else { // Otherwise try resolving each of the the other resolvable @@ -5994,7 +6344,8 @@ struct UntypedValueComposer : public ValueComposerBase this->_value, context, { &stage, layer, specPath, node }, this->_forFlattening) || - _TryResolveTimeCodes(this->_value, layerOffsetAccess); + _TryResolveTimeCodes(this->_value, layerOffsetAccess) || + _TryResolvePathExprs(this->_value, this->_object, node); } } }; @@ -6008,9 +6359,8 @@ struct StrongestValueComposer : public ValueComposerBase { using Base = ValueComposerBase; - explicit StrongestValueComposer(SdfAbstractDataValue *s) - : Base(s, /* forFlattening = */ false) {} - + StrongestValueComposer(SdfAbstractDataValue *s, UsdObject const &object) + : Base(s, object, /* forFlattening = */ false) {} bool ConsumeAuthored(const UsdStage &stage, const PcpNodeRef &node, @@ -6050,8 +6400,9 @@ struct TypeSpecificValueComposer : using Base = ValueComposerBase; friend Base; - explicit TypeSpecificValueComposer(SdfAbstractDataTypedValue *s) - : Base(s, /*forFlattening = */ false) {} + explicit TypeSpecificValueComposer(SdfAbstractDataTypedValue *s, + UsdObject const &object = UsdObject()) + : Base(s, object, /*forFlattening = */ false) {} bool ConsumeAuthored(const UsdStage &stage, const PcpNodeRef &node, @@ -6168,6 +6519,81 @@ TypeSpecificValueComposer::_ResolveValue( _UncheckedApplyLayerOffsetToValue(_value, offset); } +// The TypeSpecificValueComposer for SdfPathExpression has additional +// specialization for consuming values as it merges in weaker values unlike most +// types that only consume the strongest value. +template <> +bool +TypeSpecificValueComposer::ConsumeAuthored( + const UsdStage &stage, + const PcpNodeRef &node, + const SdfLayerRefPtr &layer, + const SdfPath &specPath, + const TfToken &fieldName, + const TfToken &keyPath) +{ + // Handle special value-type composition: pathExpressions merge atop + // each other. + return this->_ConsumeAndMergeAuthoredPathExpressions( + node, layer, specPath, fieldName, keyPath); +} + +template <> +void +TypeSpecificValueComposer::ConsumeUsdFallback( + const UsdPrimDefinition &primDef, + const TfToken &propName, + const TfToken &fieldName, + const TfToken &keyPath) +{ + // Handle special value-type composition: fallback pathExpressions + // are merged into the current pathExpression value.. + _ConsumeAndMergeFallbackPathExpressions( + primDef, propName, fieldName, keyPath); +} + +template <> +void +TypeSpecificValueComposer::_ResolveValue( + const UsdStage &, const PcpNodeRef &, const SdfLayerRefPtr &, + const SdfPath &) = delete; + +template <> +bool +TypeSpecificValueComposer>::ConsumeAuthored( + const UsdStage &stage, + const PcpNodeRef &node, + const SdfLayerRefPtr &layer, + const SdfPath &specPath, + const TfToken &fieldName, + const TfToken &keyPath) +{ + // Handle special value-type composition: pathExpressions merge atop + // each other. + return this->_ConsumeAndMergeAuthoredPathExpressions( + node, layer, specPath, fieldName, keyPath); +} + +template <> +void +TypeSpecificValueComposer>::ConsumeUsdFallback( + const UsdPrimDefinition &primDef, + const TfToken &propName, + const TfToken &fieldName, + const TfToken &keyPath) +{ + // Handle special value-type composition: fallback pathExpressions + // are merged into the current pathExpression value.. + _ConsumeAndMergeFallbackPathExpressions( + primDef, propName, fieldName, keyPath); +} + +template <> +void +TypeSpecificValueComposer>::_ResolveValue( + const UsdStage &, const PcpNodeRef &, const SdfLayerRefPtr &, + const SdfPath &) = delete; + // The TypeSpecificValueComposer for VtDictionary has additional specialization // for consuming values as it merges in weaker values unlike most types that // only consume the strongest value. @@ -6222,8 +6648,7 @@ struct ExistenceComposer const SdfLayerRefPtr &layer, const SdfPath &specPath, const TfToken &fieldName, - const TfToken &keyPath, - const SdfLayerOffset & = SdfLayerOffset()) { + const TfToken &keyPath) { _done = keyPath.IsEmpty() ? layer->HasField(specPath, fieldName, static_cast(nullptr)) : @@ -6243,7 +6668,7 @@ struct ExistenceComposer *_strongestLayer = TfNullPtr; } template - void ConsumeExplicitValue(ValueType type) { + void ConsumeExplicitValue(ValueType) { _done = true; } @@ -6264,7 +6689,7 @@ UsdStage::_SetValueImpl( // Do a type check. Obtain typeName. TfToken typeName; SdfAbstractDataTypedValue abstrToken(&typeName); - TypeSpecificValueComposer composer(&abstrToken); + TypeSpecificValueComposer composer(&abstrToken, attr); _GetMetadataImpl(attr, SdfFieldKeys->TypeName, TfToken(), /*useFallbacks=*/true, &composer); @@ -6626,7 +7051,7 @@ UsdStage::_GetMetadata(const UsdObject &obj, const TfToken &fieldName, } } - UntypedValueComposer composer(result); + UntypedValueComposer composer(result, obj); return _GetMetadataImpl(obj, fieldName, keyPath, useFallbacks, &composer); } @@ -6637,7 +7062,7 @@ UsdStage::_GetStrongestResolvedMetadata(const UsdObject &obj, bool useFallbacks, SdfAbstractDataValue* result) const { - StrongestValueComposer composer(result); + StrongestValueComposer composer(result, obj); return _GetMetadataImpl(obj, fieldName, keyPath, useFallbacks, &composer); } @@ -6650,7 +7075,7 @@ UsdStage::_GetTypeSpecificResolvedMetadata(const UsdObject &obj, T* result) const { SdfAbstractDataTypedValue out(result); - TypeSpecificValueComposer composer(&out); + TypeSpecificValueComposer composer(&out, obj); return _GetMetadataImpl(obj, fieldName, keyPath, useFallbacks, &composer); } @@ -6679,7 +7104,7 @@ UsdStage::_GetTypeSpecificResolvedMetadata(const UsdObject &obj, } SdfAbstractDataTypedValue out(result); - TypeSpecificValueComposer composer(&out); + TypeSpecificValueComposer composer(&out, obj); return _GetMetadataImpl(obj, fieldName, keyPath, useFallbacks, &composer); } @@ -7241,7 +7666,7 @@ UsdStage::_GetAllMetadata(const UsdObject &obj, TfTokenVector fieldNames = _ListMetadataFields(obj, useFallbacks); for (const auto& fieldName : fieldNames) { VtValue val; - UntypedValueComposer composer(&val, forFlattening); + UntypedValueComposer composer(&val, obj, forFlattening); _GetMetadataImpl(obj, fieldName, TfToken(), useFallbacks, &composer); result[fieldName] = val; } @@ -7373,7 +7798,7 @@ struct Usd_AttrGetValueHelper { // returned without further value resolution. if (time.IsDefault()) { SdfAbstractDataTypedValue out(result); - TypeSpecificValueComposer composer(&out); + TypeSpecificValueComposer composer(&out, attr); bool valueFound = stage._GetMetadataImpl( attr, SdfFieldKeys->Default, TfToken(), /*useFallbacks=*/true, &composer); @@ -7444,10 +7869,10 @@ struct Usd_AttrGetValueHelper { Usd_LinearInterpolator, Usd_HeldInterpolator > { }; - // Gets the attribute value from the implementation with appropriate + // Gets the attribute value from the implementation with appropriate // interpolation. In the case of value types that have type specific value - // resolution (like SdfAssetPath and SdfTimeCode), the value returned from - // from this is NOT fully resolved yet. + // resolution (like SdfAssetPath, SdfTimeCode, and SdfPathExpression), the + // value returned from from this is NOT fully resolved yet. template static bool _GetValueWithInterpolationImpl( const UsdStage &stage, T* result, const Fn &getValueImpl) @@ -7510,6 +7935,23 @@ void Usd_AttrGetValueHelper>::_ResolveValue( stage._MakeResolvedTimeCodes(time, attr, result->data(), result->size()); } +template <> +void Usd_AttrGetValueHelper::_ResolveValue( + const UsdStage &stage, UsdTimeCode time, const UsdAttribute &attr, + SdfPathExpression* result) +{ + stage._MakeResolvedPathExpressions(time, attr, result, 1); +} + +template <> +void Usd_AttrGetValueHelper>::_ResolveValue( + const UsdStage &stage, UsdTimeCode time, const UsdAttribute &attr, + VtArray* result) +{ + stage._MakeResolvedPathExpressions( + time, attr, result->data(), result->size()); +} + // Attribute value getter for type erased VtValue. struct Usd_AttrGetUntypedValueHelper { @@ -9315,6 +9757,9 @@ INSTANTIATE_GET_TYPE_RESOLVED_METADATA(SdfAssetPath); INSTANTIATE_GET_TYPE_RESOLVED_METADATA(VtArray); INSTANTIATE_GET_TYPE_RESOLVED_AND_SET_MAPPED_METADATA(SdfTimeCode); INSTANTIATE_GET_TYPE_RESOLVED_AND_SET_MAPPED_METADATA(VtArray); +INSTANTIATE_GET_TYPE_RESOLVED_AND_SET_MAPPED_METADATA(SdfPathExpression); +INSTANTIATE_GET_TYPE_RESOLVED_AND_SET_MAPPED_METADATA( + VtArray); // Do not explicitly instantiate _GetTypeSpecificResolvedMetadata for // SdfTimeSampleMap because we provide a specialization instead. INSTANTIATE_SET_MAPPED_METADATA(SdfTimeSampleMap); diff --git a/pxr/usd/usd/stage.h b/pxr/usd/usd/stage.h index efa3a47bb2..212e1a1fca 100644 --- a/pxr/usd/usd/stage.h +++ b/pxr/usd/usd/stage.h @@ -1721,6 +1721,8 @@ class UsdStage : public TfRefBase, public TfWeakBase { static const bool value = std::is_same::value || std::is_same>::value || + std::is_same::value || + std::is_same>::value || std::is_same::value || std::is_same::value; }; @@ -1980,6 +1982,11 @@ class UsdStage : public TfRefBase, public TfWeakBase { SdfTimeCode *timeCodes, size_t numTimeCodes) const; + void _MakeResolvedPathExpressions( + UsdTimeCode time, const UsdAttribute &attr, + SdfPathExpression *pathExprs, + size_t numPathExprs) const; + void _MakeResolvedAttributeValue(UsdTimeCode time, const UsdAttribute &attr, VtValue *value) const; @@ -1999,6 +2006,8 @@ class UsdStage : public TfRefBase, public TfWeakBase { std::is_same>::value || std::is_same::value || std::is_same>::value || + std::is_same::value || + std::is_same>::value || std::is_same::value || std::is_same::value; }; From ff58e332148bcb01fcf47f6ac8dbe2c37d56fda5 Mon Sep 17 00:00:00 2001 From: clach Date: Tue, 25 Jul 2023 16:53:33 -0700 Subject: [PATCH 129/352] [hdPrman] Add support for array-valued inputs on shader nodes. Fixes #1710 (Internal change: 2286846) --- .../renderman-25/plugin/hdPrman/material.cpp | 100 ++++++++++++++---- 1 file changed, 78 insertions(+), 22 deletions(-) diff --git a/third_party/renderman-25/plugin/hdPrman/material.cpp b/third_party/renderman-25/plugin/hdPrman/material.cpp index 700c09b7e2..891f083432 100644 --- a/third_party/renderman-25/plugin/hdPrman/material.cpp +++ b/third_party/renderman-25/plugin/hdPrman/material.cpp @@ -550,6 +550,21 @@ _ConvertNodes( } // Convert connected inputs. for (auto const& connEntry: node.inputConnections) { + // Find the shader properties, so that we can look up + // the property implementation names. + SdrShaderPropertyConstPtr downstreamProp = + sdrEntry->GetShaderInput(connEntry.first); + if (!downstreamProp) { + TF_WARN("Unknown downstream property %s", connEntry.first.data()); + continue; + } + RtUString name(downstreamProp->GetImplementationName().c_str()); + TfToken const propType = downstreamProp->GetType(); + + // Gather input (or inputs, for array-valued inputs) for shader + // property. + std::vector inputRefs; + for (auto const& e: connEntry.second) { // Find the output & input shader nodes of the connection. HdMaterialNode2 const* upstreamNode = @@ -572,18 +587,8 @@ _ConvertNodes( e.upstreamNode.GetText()); continue; } - // Find the shader properties, so that we can look up - // the property implementation names. - SdrShaderPropertyConstPtr downstreamProp = - sdrEntry->GetShaderInput(connEntry.first); SdrShaderPropertyConstPtr upstreamProp = upstreamSdrEntry->GetShaderOutput(e.upstreamOutputName); - if (!downstreamProp) { - TF_WARN("Unknown downstream property %s", - connEntry.first.data()); - continue; - } - TfToken propType = downstreamProp->GetType(); // In the case of terminals there is no upstream output name // since the whole node is referenced as a whole if (!upstreamProp && propType != SdrPropertyTypes->Terminal) { @@ -592,7 +597,6 @@ _ConvertNodes( continue; } // Prman syntax for parameter references is "handle:param". - RtUString name(downstreamProp->GetImplementationName().c_str()); RtUString inputRef; if (!upstreamProp) { inputRef = RtUString(e.upstreamNode.GetString().c_str()); @@ -602,26 +606,78 @@ _ConvertNodes( + upstreamProp->GetImplementationName().c_str()) .c_str()); } - - // Establish the Riley connection. + inputRefs.push_back(inputRef); + } + + // Establish the Riley connection. + size_t const numInputRefs = inputRefs.size(); + if (numInputRefs > 0) { if (propType == SdrPropertyTypes->Color) { - sn.params.SetColorReference(name, inputRef); + if (numInputRefs == 1) { + sn.params.SetColorReference(name, inputRefs[0]); + } else { + sn.params.SetColorReferenceArray( + name, inputRefs.data(), numInputRefs); + } } else if (propType == SdrPropertyTypes->Vector) { - sn.params.SetVectorReference(name, inputRef); + if (numInputRefs == 1) { + sn.params.SetVectorReference(name, inputRefs[0]); + } else { + sn.params.SetVectorReferenceArray( + name, inputRefs.data(), numInputRefs); + } } else if (propType == SdrPropertyTypes->Point) { - sn.params.SetPointReference(name, inputRef); + if (numInputRefs == 1) { + sn.params.SetPointReference(name, inputRefs[0]); + } else { + sn.params.SetPointReferenceArray( + name, inputRefs.data(), numInputRefs); + } } else if (propType == SdrPropertyTypes->Normal) { - sn.params.SetNormalReference(name, inputRef); + if (numInputRefs == 1) { + sn.params.SetNormalReference(name, inputRefs[0]); + } else { + sn.params.SetNormalReferenceArray( + name, inputRefs.data(), numInputRefs); + } } else if (propType == SdrPropertyTypes->Float) { - sn.params.SetFloatReference(name, inputRef); + if (numInputRefs == 1) { + sn.params.SetFloatReference(name, inputRefs[0]); + } else { + sn.params.SetFloatReferenceArray( + name, inputRefs.data(), numInputRefs); + } } else if (propType == SdrPropertyTypes->Int) { - sn.params.SetIntegerReference(name, inputRef); + if (numInputRefs == 1) { + sn.params.SetIntegerReference(name, inputRefs[0]); + } else { + sn.params.SetIntegerReferenceArray( + name, inputRefs.data(), numInputRefs); + } } else if (propType == SdrPropertyTypes->String) { - sn.params.SetStringReference(name, inputRef); + if (numInputRefs == 1) { + sn.params.SetStringReference(name, inputRefs[0]); + } else { + sn.params.SetStringReferenceArray( + name, inputRefs.data(), numInputRefs); + } } else if (propType == SdrPropertyTypes->Struct) { - sn.params.SetStructReference(name, inputRef); + if (numInputRefs == 1) { + sn.params.SetStructReference(name, inputRefs[0]); + } else { + TF_WARN("Unsupported type struct array for property '%s' " + "on shader '%s' at '%s'; ignoring.", + connEntry.first.data(), + sdrEntry->GetName().c_str(), + nodePath.GetText()); + } } else if (propType == SdrPropertyTypes->Terminal) { - sn.params.SetBxdfReference(name, inputRef); + if (numInputRefs == 1) { + sn.params.SetBxdfReference(name, inputRefs[0]); + } else { + sn.params.SetBxdfReferenceArray( + name, inputRefs.data(), numInputRefs); + } } else { TF_WARN("Unknown type '%s' for property '%s' " "on shader '%s' at %s; ignoring.", From b06ca300672fe45062bcd2626b16d78cfe76a034 Mon Sep 17 00:00:00 2001 From: clach Date: Tue, 25 Jul 2023 16:54:03 -0700 Subject: [PATCH 130/352] Remove "role = 'none'" from UsdPrimvarReader_float3 osl shader fallback definition, as this was causing the shader to ignore the fallback value. Role "none" will genericize the SdrPropertyType, such as changing SdrPropertyTypes->Color to SdrPropertyTypes->Float, which seemed to cause the fallback value to not be used properly. Fixes #1683 (Internal change: 2286847) --- .../plugin/usdShaders/shaders/UsdPrimvarReader_float3.osl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pxr/usdImaging/plugin/usdShaders/shaders/UsdPrimvarReader_float3.osl b/pxr/usdImaging/plugin/usdShaders/shaders/UsdPrimvarReader_float3.osl index fc21401ea1..dd105b5fcb 100644 --- a/pxr/usdImaging/plugin/usdShaders/shaders/UsdPrimvarReader_float3.osl +++ b/pxr/usdImaging/plugin/usdShaders/shaders/UsdPrimvarReader_float3.osl @@ -47,8 +47,7 @@ shader UsdPrimvarReader_float3 color fallback = color(0.0) [[ - string help = "return value if primvar not found.", - string role = "none" + string help = "return value if primvar not found." ]], output color result = 0.0 From ce6a4f16a3d727636d69d1064bf819c7a3d0baef Mon Sep 17 00:00:00 2001 From: clach Date: Tue, 25 Jul 2023 16:54:31 -0700 Subject: [PATCH 131/352] [hdSt] Remove unused HdStSimpleLightingShader::SetLightingStateFromOpenGL and HdStSimpleLightingShader::SetLightingState. (Internal change: 2286848) --- pxr/imaging/hdSt/simpleLightingShader.cpp | 25 ----------------------- pxr/imaging/hdSt/simpleLightingShader.h | 6 +----- 2 files changed, 1 insertion(+), 30 deletions(-) diff --git a/pxr/imaging/hdSt/simpleLightingShader.cpp b/pxr/imaging/hdSt/simpleLightingShader.cpp index fd16a91fce..ab01df19f5 100644 --- a/pxr/imaging/hdSt/simpleLightingShader.cpp +++ b/pxr/imaging/hdSt/simpleLightingShader.cpp @@ -268,31 +268,6 @@ HdStSimpleLightingShader::GetParams() const return _lightTextureParams; } -void -HdStSimpleLightingShader::SetLightingStateFromOpenGL() -{ - _lightingContext->SetStateFromOpenGL(); -} - -void -HdStSimpleLightingShader::SetLightingState( - GlfSimpleLightingContextPtr const &src) -{ - if (src) { - _useLighting = true; - _lightingContext->SetUseLighting(!src->GetLights().empty()); - _lightingContext->SetLights(src->GetLights()); - _lightingContext->SetMaterial(src->GetMaterial()); - _lightingContext->SetSceneAmbient(src->GetSceneAmbient()); - _lightingContext->SetShadows(src->GetShadows()); - } else { - // XXX: - // if src is null, turn off lights (this is temporary used for shadowmap drawing). - // see GprimUsdBaseIcBatch::Draw() - _useLighting = false; - } -} - static const std::string & _GetResolvedDomeLightEnvironmentFilePath( diff --git a/pxr/imaging/hdSt/simpleLightingShader.h b/pxr/imaging/hdSt/simpleLightingShader.h index c574305b2f..10d9805296 100644 --- a/pxr/imaging/hdSt/simpleLightingShader.h +++ b/pxr/imaging/hdSt/simpleLightingShader.h @@ -103,11 +103,7 @@ class HdStSimpleLightingShader : public HdStLightingShader void SetCamera( GfMatrix4d const &worldToViewMatrix, GfMatrix4d const &projectionMatrix) override; - HDST_API - void SetLightingStateFromOpenGL(); - HDST_API - void SetLightingState(GlfSimpleLightingContextPtr const &lightingContext); - + GlfSimpleLightingContextRefPtr GetLightingContext() const { return _lightingContext; }; From 2571b413bd8187d9af8c685b7cb9f63845d98540 Mon Sep 17 00:00:00 2001 From: klucknav Date: Tue, 25 Jul 2023 16:54:41 -0700 Subject: [PATCH 132/352] [hdPrman] Add string check to matfiltConvertPreviewMaterial (Internal change: 2286851) --- .../hdPrman/matfiltConvertPreviewMaterial.cpp | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/third_party/renderman-25/plugin/hdPrman/matfiltConvertPreviewMaterial.cpp b/third_party/renderman-25/plugin/hdPrman/matfiltConvertPreviewMaterial.cpp index 2f414abaf2..b211f720ad 100644 --- a/third_party/renderman-25/plugin/hdPrman/matfiltConvertPreviewMaterial.cpp +++ b/third_party/renderman-25/plugin/hdPrman/matfiltConvertPreviewMaterial.cpp @@ -330,6 +330,17 @@ _ProcessPreviewSurfaceNode( } } +// Returns true if the given path is already a RtxPath meaning it is already +// of the form: +// "rtxplugin:<>?filename=<>&wrapS=<>&wrapT=<>&sourceColorSpace=<>s" +// This function checks if the path contains the "rtxPlugin:" prefix +static bool +_RtxPath(std::string path) +{ + const std::string pathPrefix = "rtxplugin:"; + return path.substr(0, pathPrefix.length()) == pathPrefix; +} + // Update texture nodes that use non-native texture formats // to read them via a Renderman texture plugin. void @@ -343,12 +354,14 @@ _ProcessUVTextureNode( bool needInvertT = false; VtValue vtFile; if (_GetParameter(netInterface, nodeName, _tokens->file, &vtFile) && - vtFile.IsHolding()) { + (vtFile.IsHolding() || vtFile.IsHolding())) { - std::string path = vtFile.Get().GetResolvedPath(); + std::string path = vtFile.IsHolding() + ? vtFile.Get().GetResolvedPath() + : vtFile.Get(); std::string ext = ArGetResolver().GetExtension(path); - if (!ext.empty() && ext != "tex" && ext != "dds") { + if (!ext.empty() && ext != "tex" && ext != "dds" && !_RtxPath(path)) { std::string pluginName = std::string("RtxHioImage") + ARCH_LIBRARY_SUFFIX; // Check for wrap mode. In Renderman, the @@ -360,7 +373,7 @@ _ProcessUVTextureNode( VtValue wrapTVal = netInterface->GetNodeParameterValue(nodeName, _tokens->wrapT); TfToken wrapS = - wrapSVal.GetWithDefault(_tokens->useMetadata); + wrapSVal.GetWithDefault(_tokens->useMetadata); TfToken wrapT = wrapSVal.GetWithDefault(_tokens->useMetadata); @@ -385,7 +398,7 @@ _ProcessUVTextureNode( pluginName.c_str(), path.c_str(), wrapS.GetText(), wrapT.GetText(), sourceColorSpace.GetText()); - + netInterface->SetNodeParameterValue( nodeName, _tokens->file, VtValue(path)); From 3a3d1d04fe3da1f5c72597efcf968c259f47632c Mon Sep 17 00:00:00 2001 From: gitamohr Date: Tue, 25 Jul 2023 16:56:12 -0700 Subject: [PATCH 133/352] usd: New UsdCollectionAPI attribute 'membershipExpression', and UsdCollectionMembershipQuery support. (Internal change: 2286884) --- pxr/usd/usd/CMakeLists.txt | 8 + pxr/usd/usd/collectionAPI.cpp | 97 +++++ pxr/usd/usd/collectionAPI.h | 41 ++ pxr/usd/usd/collectionMembershipQuery.cpp | 158 +++++++- pxr/usd/usd/collectionMembershipQuery.h | 132 ++++++- pxr/usd/usd/collectionPredicateLibrary.cpp | 351 ++++++++++++++++++ pxr/usd/usd/collectionPredicateLibrary.h | 100 +++++ pxr/usd/usd/generatedSchema.usda | 4 + pxr/usd/usd/schema.usda | 5 + pxr/usd/usd/testenv/testUsdCollectionAPI.py | 11 +- .../usd/testenv/testUsdPathExpressionAttrs.py | 93 +++++ pxr/usd/usd/testenv/testUsdSchemaRegistry.py | 21 +- pxr/usd/usd/tokens.cpp | 2 + pxr/usd/usd/tokens.h | 4 + pxr/usd/usd/wrapCollectionAPI.cpp | 14 + pxr/usd/usd/wrapCollectionMembershipQuery.cpp | 1 - pxr/usd/usd/wrapTokens.cpp | 1 + 17 files changed, 1019 insertions(+), 24 deletions(-) create mode 100644 pxr/usd/usd/collectionPredicateLibrary.cpp create mode 100644 pxr/usd/usd/collectionPredicateLibrary.h create mode 100644 pxr/usd/usd/testenv/testUsdPathExpressionAttrs.py diff --git a/pxr/usd/usd/CMakeLists.txt b/pxr/usd/usd/CMakeLists.txt index 6c8bf9cc80..9d3d4c83a0 100644 --- a/pxr/usd/usd/CMakeLists.txt +++ b/pxr/usd/usd/CMakeLists.txt @@ -27,6 +27,7 @@ pxr_library(usd attributeQuery collectionAPI collectionMembershipQuery + collectionPredicateLibrary common crateInfo debugCodes @@ -230,6 +231,7 @@ pxr_test_scripts( testenv/testUsdModel.py testenv/testUsdNotices.py testenv/testUsdOpaqueAttributes.py + testenv/testUsdPathExpressionAttrs.py testenv/testUsdPayloads.py testenv/testUsdPrimCompositionQuery.py testenv/testUsdPrimFlagsPredicate.py @@ -1026,6 +1028,12 @@ pxr_register_test(testUsdPayloads EXPECTED_RETURN_CODE 0 ) +pxr_register_test(testUsdPathExpressionAttrs + PYTHON + COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdPathExpressionAttrs" + EXPECTED_RETURN_CODE 0 +) + pxr_register_test(testUsdCratePayloadConversionFromVersion07 PYTHON COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdCratePayloadConversionFromVersion07" diff --git a/pxr/usd/usd/collectionAPI.cpp b/pxr/usd/usd/collectionAPI.cpp index 284cfc6a3a..942df70712 100644 --- a/pxr/usd/usd/collectionAPI.cpp +++ b/pxr/usd/usd/collectionAPI.cpp @@ -96,6 +96,8 @@ UsdCollectionAPI::IsSchemaPropertyBaseName(const TfToken &baseName) UsdTokens->collection_MultipleApplyTemplate_ExpansionRule), UsdSchemaRegistry::GetMultipleApplyNameTemplateBaseName( UsdTokens->collection_MultipleApplyTemplate_IncludeRoot), + UsdSchemaRegistry::GetMultipleApplyNameTemplateBaseName( + UsdTokens->collection_MultipleApplyTemplate_MembershipExpression), UsdSchemaRegistry::GetMultipleApplyNameTemplateBaseName( UsdTokens->collection_MultipleApplyTemplate_), UsdSchemaRegistry::GetMultipleApplyNameTemplateBaseName( @@ -241,6 +243,29 @@ UsdCollectionAPI::CreateIncludeRootAttr(VtValue const &defaultValue, bool writeS writeSparsely); } +UsdAttribute +UsdCollectionAPI::GetMembershipExpressionAttr() const +{ + return GetPrim().GetAttribute( + _GetNamespacedPropertyName( + GetName(), + UsdTokens->collection_MultipleApplyTemplate_MembershipExpression)); +} + +UsdAttribute +UsdCollectionAPI::CreateMembershipExpressionAttr(VtValue const &defaultValue, bool writeSparsely) const +{ + return UsdSchemaBase::_CreateAttr( + _GetNamespacedPropertyName( + GetName(), + UsdTokens->collection_MultipleApplyTemplate_MembershipExpression), + SdfValueTypeNames->PathExpression, + /* custom = */ false, + SdfVariabilityUniform, + defaultValue, + writeSparsely); +} + UsdAttribute UsdCollectionAPI::GetCollectionAttr() const { @@ -321,6 +346,7 @@ UsdCollectionAPI::GetSchemaAttributeNames(bool includeInherited) static TfTokenVector localNames = { UsdTokens->collection_MultipleApplyTemplate_ExpansionRule, UsdTokens->collection_MultipleApplyTemplate_IncludeRoot, + UsdTokens->collection_MultipleApplyTemplate_MembershipExpression, UsdTokens->collection_MultipleApplyTemplate_, }; static TfTokenVector allNames = @@ -537,6 +563,62 @@ UsdCollectionAPI::HasNoIncludedPaths() const return includes.empty() && !includeRoot; } +SdfPathExpression +UsdCollectionAPI::ResolveCompleteMembershipExpression() const +{ + SdfPathExpression thisExpr; + UsdPrim thisPrim = GetPrim(); + + if (!thisPrim || !GetMembershipExpressionAttr().Get(&thisExpr)) { + return thisExpr; + } + + // Resolve any references. + auto resolveRefs = [&](SdfPathExpression::ExpressionReference const &ref) { + // We support references like %: and %:. In both + // cases they identify a collection API, the latter is just shorthand + // for the named collection on this collection prim. + if (ref.name.empty()) { + TF_CODING_ERROR( + "Unexpected reference to empty name in expression '%s' from " + "collection '%s' on prim <%s>; substituting empty expression", + thisExpr.GetText().c_str(), GetName().GetText(), + thisPrim.GetPath().GetAsString().c_str()); + return SdfPathExpression::Nothing(); + } + + // Replace "weaker" references with Nothing. + if (ref == SdfPathExpression::ExpressionReference::Weaker()) { + return SdfPathExpression::Nothing(); + } + + TfToken collectionName { ref.name }; + UsdPrim collectionPrim = ref.path.IsEmpty() ? GetPrim() : + thisPrim.GetStage()->GetPrimAtPath(ref.path); + + UsdCollectionAPI refCollection = + UsdCollectionAPI(collectionPrim, collectionName); + + // If we can't find a prim, warn and resolve the reference to + // Nothing. + if (!refCollection) { + TF_WARN("No collection at path <%s> resolving references in " + "expression '%s' from collection '%s' on prim <%s>; " + "substituting empty expression", + ref.path.GetAsString().c_str(), + thisExpr.GetText().c_str(), + GetName().GetText(), + thisPrim.GetPath().GetAsString().c_str()); + return SdfPathExpression::Nothing(); + } + + // Get the referenced collection expr fully resolved, and insert that. + return refCollection.ResolveCompleteMembershipExpression(); + }; + + return thisExpr.ResolveReferences(resolveRefs); +} + UsdCollectionMembershipQuery UsdCollectionAPI::ComputeMembershipQuery() const { @@ -556,6 +638,21 @@ UsdCollectionAPI::ComputeMembershipQuery( SdfPathSet chainedCollectionPaths { GetCollectionPath() }; _ComputeMembershipQueryImpl(query, chainedCollectionPaths); + + // Now embed the expression evaluator & the top-level expansion rule. + TfToken expRule; + GetExpansionRuleAttr().Get(&expRule); + if (expRule.IsEmpty()) { + expRule = UsdTokens->expandPrims; + } + + PathExpansionRuleMap map = query->GetAsPathExpansionRuleMap(); + SdfPathSet collections = query->GetIncludedCollections(); + + *query = UsdCollectionMembershipQuery( + std::move(map), std::move(collections), + { GetPrim().GetStage(), ResolveCompleteMembershipExpression() }, + expRule); } void diff --git a/pxr/usd/usd/collectionAPI.h b/pxr/usd/usd/collectionAPI.h index 18f553813d..cd49995602 100644 --- a/pxr/usd/usd/collectionAPI.h +++ b/pxr/usd/usd/collectionAPI.h @@ -36,6 +36,7 @@ #include "pxr/usd/usd/collectionMembershipQuery.h" #include "pxr/usd/usd/primFlags.h" #include "pxr/usd/usd/tokens.h" +#include "pxr/usd/sdf/pathExpression.h" #include "pxr/base/vt/value.h" @@ -368,6 +369,30 @@ class UsdCollectionAPI : public UsdAPISchemaBase USD_API UsdAttribute CreateIncludeRootAttr(VtValue const &defaultValue = VtValue(), bool writeSparsely=false) const; +public: + // --------------------------------------------------------------------- // + // MEMBERSHIPEXPRESSION + // --------------------------------------------------------------------- // + /// Specifies a path expression that determines membership in this + /// collection. + /// + /// | || + /// | -- | -- | + /// | Declaration | `uniform pathExpression membershipExpression` | + /// | C++ Type | SdfPathExpression | + /// | \ref Usd_Datatypes "Usd Type" | SdfValueTypeNames->PathExpression | + /// | \ref SdfVariability "Variability" | SdfVariabilityUniform | + USD_API + UsdAttribute GetMembershipExpressionAttr() const; + + /// See GetMembershipExpressionAttr(), and also + /// \ref Usd_Create_Or_Get_Property for when to use Get vs Create. + /// If specified, author \p defaultValue as the attribute's default, + /// sparsely (when it makes sense to do so) if \p writeSparsely is \c true - + /// the default for \p writeSparsely is \c false. + USD_API + UsdAttribute CreateMembershipExpressionAttr(VtValue const &defaultValue = VtValue(), bool writeSparsely=false) const; + public: // --------------------------------------------------------------------- // // COLLECTION @@ -487,6 +512,22 @@ class UsdCollectionAPI : public UsdAPISchemaBase const UsdPrim &prim, const TfToken &collectionName); + USD_API + static SdfPathExpression + ResolveCompleteMembershipExpression(SdfPathExpression pathExpr, + UsdPrim const &prim); + + /// Obtain a complete SdfPathExpression from this collection's + /// membershipExpression. First, UsdAttribute::Get() the value of + /// GetMembershipExpressionAttr(), then resolve any contained references. + /// Replace any remaining "weaker" references (%_) with + /// SdfPathExpression::Nothing(). Replace other references by recursively + /// resolving the expressions from the collections on the referenced prims. + /// If no such prims or no such collections exist, replace those references + /// with SdfPathExpression::Nothing() as well. + USD_API + SdfPathExpression ResolveCompleteMembershipExpression() const; + // Convenient alias for UsdCollectionMembershipQuery object using MembershipQuery = UsdCollectionMembershipQuery; diff --git a/pxr/usd/usd/collectionMembershipQuery.cpp b/pxr/usd/usd/collectionMembershipQuery.cpp index 8db2c225b3..8978a8baaa 100644 --- a/pxr/usd/usd/collectionMembershipQuery.cpp +++ b/pxr/usd/usd/collectionMembershipQuery.cpp @@ -43,6 +43,9 @@ _ComputeIncludedImpl( std::set *includedObjects, SdfPathSet *includedPaths) { + using ExpressionEvaluator = + UsdCollectionMembershipQuery::ExpressionEvaluator; + if (!((bool)includedObjects ^ (bool)includedPaths)) { TF_CODING_ERROR("Either includedObjects or includedPaths must be" " valid, but not both"); @@ -175,10 +178,104 @@ _ComputeIncludedImpl( } } } + + // Walk everything according to \p pred, and do incremental search. + TfToken expansionRule = query.GetTopExpansionRule(); + if (query.HasExpression() && + (expansionRule == UsdTokens->expandPrims || + expansionRule == UsdTokens->expandPrimsAndProperties)) { + + bool searchProperties = + (expansionRule == UsdTokens->expandPrimsAndProperties); + + ExpressionEvaluator::IncrementalSearcher + searcher = query.GetExpressionEvaluator().MakeIncrementalSearcher(); + + UsdPrimRange range = stage->Traverse(pred); + + for (auto iter = range.begin(), + end = range.end(); iter != end; ++iter) { + + SdfPredicateFunctionResult r = searcher.Next(*iter); + bool didProps = false; + if (r) { + // With a positive result that's constant over descendants, we + // can copy everything until the next sibling. + if (r.IsConstant()) { + auto subtreeIter = iter; + auto subtreeEnd = subtreeIter; + subtreeEnd.PruneChildren(); + ++subtreeEnd; + for (; subtreeIter != subtreeEnd; ++subtreeIter) { + AppendIncludedObject(*subtreeIter); + if (searchProperties) { + didProps = true; + for (UsdProperty const &prop: + subtreeIter->GetProperties()) { + AppendIncludedObject(prop); + } + } + } + } + // We have a positive result on this object, but we have to keep + // searching descendants, since results may vary. + else { + AppendIncludedObject(*iter); + } + } + + // If we're searching properties and didn't already do properties + // above, do them here. Constancy doesn't matter here since we + // don't search descendants of properties. + if (searchProperties && !didProps && !(r && !r.IsConstant())) { + for (UsdProperty const &prop: iter->GetProperties()) { + if (searcher.Next(prop)) { + AppendIncludedObject(prop); + } + } + } + + // If we have a constant result (either positive or negative), we + // can skip the subtree. + if (r.IsConstant()) { + iter.PruneChildren(); + } + } + } } } // anonymous +UsdCollectionMembershipQuery::ExpressionEvaluator +::ExpressionEvaluator(UsdStageWeakPtr const &stage, + SdfPathExpression const &expr) + : _stage(stage) + , _evaluator(SdfMakePathExpressionEval( + expr, UsdGetCollectionPredicateLibrary())) +{ +} + +SdfPredicateFunctionResult +UsdCollectionMembershipQuery::ExpressionEvaluator +::Match(UsdObject const &obj) const +{ + if (_stage) { + return _evaluator.Match(obj, ObjToPath {}, PathToObj { _stage }); + } + return SdfPredicateFunctionResult::MakeConstant(false); +} + +UsdCollectionMembershipQuery::ExpressionEvaluator::IncrementalSearcher +UsdCollectionMembershipQuery::ExpressionEvaluator +::MakeIncrementalSearcher() const +{ + if (_stage) { + return _evaluator + .MakeIncrementalSearcher(ObjToPath {}, PathToObj { _stage }); + } + return {}; +} + std::set UsdComputeIncludedObjectsFromCollection( const UsdCollectionMembershipQuery &query, const UsdStageWeakPtr &stage, @@ -202,22 +299,43 @@ SdfPathSet UsdComputeIncludedPathsFromCollection( UsdCollectionMembershipQuery::UsdCollectionMembershipQuery( const PathExpansionRuleMap& pathExpansionRuleMap, const SdfPathSet& includedCollections) - : _pathExpansionRuleMap(pathExpansionRuleMap) - , _includedCollections(includedCollections) + : UsdCollectionMembershipQuery( + PathExpansionRuleMap {pathExpansionRuleMap}, + SdfPathSet {includedCollections}, {}, {}) { - for (const auto &pathAndExpansionRule : _pathExpansionRuleMap) { - if (pathAndExpansionRule.second == UsdTokens->exclude) { - _hasExcludes = true; - break; - } - } } UsdCollectionMembershipQuery::UsdCollectionMembershipQuery( PathExpansionRuleMap&& pathExpansionRuleMap, SdfPathSet&& includedCollections) - : _pathExpansionRuleMap(std::move(pathExpansionRuleMap)) + : UsdCollectionMembershipQuery( + std::move(pathExpansionRuleMap), + std::move(includedCollections), {}, {}) +{ +} + +UsdCollectionMembershipQuery::UsdCollectionMembershipQuery( + const PathExpansionRuleMap& pathExpansionRuleMap, + const SdfPathSet& includedCollections, + const ExpressionEvaluator &exprEval, + const TfToken &topExpansionRule) + : UsdCollectionMembershipQuery( + PathExpansionRuleMap {pathExpansionRuleMap}, + SdfPathSet {includedCollections}, + ExpressionEvaluator {exprEval}, + topExpansionRule) +{ +} + +UsdCollectionMembershipQuery::UsdCollectionMembershipQuery( + PathExpansionRuleMap&& pathExpansionRuleMap, + SdfPathSet&& includedCollections, + ExpressionEvaluator &&exprEval, + TfToken const &topExpansionRule) + : _topExpansionRule(topExpansionRule) + , _pathExpansionRuleMap(std::move(pathExpansionRuleMap)) , _includedCollections(std::move(includedCollections)) + , _exprEval(std::move(exprEval)) { for (const auto &pathAndExpansionRule : _pathExpansionRuleMap) { if (pathAndExpansionRule.second == UsdTokens->exclude) { @@ -286,8 +404,12 @@ UsdCollectionMembershipQuery::IsPathIncluded( } - // Any path that's not explicitly mentioned is not included in the - // collection. + // Test against the expression if we have one. + if (UsdStageWeakPtr const &stage = _exprEval.GetStage()) { + if (UsdObject obj = stage->GetObjectAtPath(path)) { + return static_cast(_exprEval.Match(obj)); + } + } return false; } @@ -338,8 +460,18 @@ UsdCollectionMembershipQuery::IsPathIncluded( (parentExpansionRule == UsdTokens->expandPrimsAndProperties) ? UsdTokens->expandPrimsAndProperties : UsdTokens->exclude; } - return parentExpansionRule == UsdTokens->expandPrimsAndProperties; + if (parentExpansionRule == UsdTokens->expandPrimsAndProperties) { + return true; + } + } + + // Test against the expression if we have one. + if (UsdStageWeakPtr const &stage = _exprEval.GetStage()) { + if (UsdObject obj = stage->GetObjectAtPath(path)) { + return static_cast(_exprEval.Match(obj)); + } } + return false; } size_t @@ -363,7 +495,7 @@ UsdCollectionMembershipQuery::Hash::operator()( // Don't hash _hasExcludes because it is derived from // the contents of _pathExpansionRuleMap. - return TfHash()(entries); + return TfHash::Combine(entries, q._topExpansionRule, q._exprEval.IsEmpty()); } PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/usd/usd/collectionMembershipQuery.h b/pxr/usd/usd/collectionMembershipQuery.h index a35521eb55..65ad2d7de4 100644 --- a/pxr/usd/usd/collectionMembershipQuery.h +++ b/pxr/usd/usd/collectionMembershipQuery.h @@ -29,8 +29,11 @@ #include "pxr/base/tf/declarePtrs.h" #include "pxr/pxr.h" #include "pxr/usd/sdf/path.h" +#include "pxr/usd/sdf/pathExpression.h" +#include "pxr/usd/sdf/pathExpressionEval.h" #include "pxr/usd/usd/common.h" #include "pxr/usd/usd/primFlags.h" +#include "pxr/usd/usd/collectionPredicateLibrary.h" #include @@ -49,6 +52,76 @@ PXR_NAMESPACE_OPEN_SCOPE class UsdCollectionMembershipQuery { public: + + /// \class ExpressionEvaluator + /// + /// \brief Evaluates SdfPathExpressions with objects from a given UsdStage. + class ExpressionEvaluator { + struct ObjToPath { + SdfPath operator()(UsdObject const &obj) const { + return obj.GetPath(); + } + }; + + struct PathToObj { + UsdObject operator()(SdfPath const &path) const { + return stage->GetObjectAtPath(path); + } + UsdStageWeakPtr stage; + }; + + public: + using PathExprEval = SdfPathExpressionEval; + using IncrementalSearcher = + typename PathExprEval::IncrementalSearcher; + + /// Construct an empty evaluator. + ExpressionEvaluator() = default; + + /// Construct an evaluator that evalutates \p expr on objects from \p + /// statge. The \p expr must be "complete" (see + /// SdfPathExpression::IsComplete()). + /// + /// Typically these objects are not constructed directly, but instead + /// are created by UsdCollectionAPI::ComputeMembershipQuery() for + /// UsdCollectionMembershipQuery's use. However it is possible to + /// construct them directly if one wishes. Consider calling + /// UsdCollectionAPI::ResolveCompleteMembershipExpression() to produce + /// an approprate expression. + SDF_API + ExpressionEvaluator(UsdStageWeakPtr const &stage, + SdfPathExpression const &expr); + + /// Return true if this evaluator has an invalid stage or an empty + /// underlying SdfPathExpressionEval object. + bool IsEmpty() const { + return !_stage || _evaluator.IsEmpty(); + } + + /// Return the stage this object was constructed with, or nullptr if it + /// was default constructed. + UsdStageWeakPtr const &GetStage() const { return _stage; } + + /// Return the result of evaluating the expression against \p object. + SDF_API + SdfPredicateFunctionResult + Match(UsdObject const &object) const; + + /// Create an incremental searcher from this evaluator. See + /// SdfPathExpressionEval::IncrementalSearcher for more info and API. + /// + /// The returned IncrementalSearcher refers to the evaluator object + /// owned by this UsdCollectionMembershipExpressionEval object. This + /// means that the IncrementalSearcher must not be used after this + /// UsdCollectionMembershipExpressionEval object's lifetime ends. + SDF_API + IncrementalSearcher MakeIncrementalSearcher() const; + + private: + UsdStageWeakPtr _stage; + PathExprEval _evaluator; + }; + /// Holds an unordered map describing membership of paths in this collection /// and the associated expansionRule for how the paths are to be expanded. /// Valid expansionRules are UsdTokens->explicitOnly, @@ -77,6 +150,22 @@ class UsdCollectionMembershipQuery PathExpansionRuleMap&& pathExpansionRuleMap, SdfPathSet&& includedCollections); + /// Constructor that additionally takes an additional expression evaluator + /// and a top-level expansion rule. + UsdCollectionMembershipQuery( + const PathExpansionRuleMap& pathExpansionRuleMap, + const SdfPathSet& includedCollections, + const ExpressionEvaluator &exprEval, + const TfToken &topExpansionRule); + + /// Constructor that additionally takes an additional expression evaluator + /// as an rvalue reference and a top-level expansion rule. + UsdCollectionMembershipQuery( + PathExpansionRuleMap&& pathExpansionRuleMap, + SdfPathSet&& includedCollections, + ExpressionEvaluator &&exprEval, + TfToken const &topExpansionRule); + /// \overload /// Returns whether the given path is included in the collection from /// which this UsdCollectionMembershipQuery object was computed. This is the @@ -122,16 +211,23 @@ class UsdCollectionMembershipQuery TfToken *expansionRule=nullptr) const; /// Returns true if the collection excludes one or more paths below an - /// included path. + /// included path via the excludes relationship (see + /// UsdCollectionAPI::GetExcludesRel()). bool HasExcludes() const { return _hasExcludes; } - + /// Equality operator bool operator==(UsdCollectionMembershipQuery const& rhs) const { - return _hasExcludes == rhs._hasExcludes && - _pathExpansionRuleMap == rhs._pathExpansionRuleMap && - _includedCollections == rhs._includedCollections; + // Note that MembershipQuery objects that have non-empty _exprEval never + // compare equal to each other. This is because the evaluator objects + // run code, and there's no good way to determine equivalence. + return _topExpansionRule == rhs._topExpansionRule && + _hasExcludes == rhs._hasExcludes && + _pathExpansionRuleMap == rhs._pathExpansionRuleMap && + _includedCollections == rhs._includedCollections && + _exprEval.IsEmpty() == rhs._exprEval.IsEmpty(); + ; } /// Inequality operator @@ -167,11 +263,37 @@ class UsdCollectionMembershipQuery return _includedCollections; } + /// Return the expression evaluator associated with this query object. This + /// may be an empty evaluator. See HasExpression(). + ExpressionEvaluator const & + GetExpressionEvaluator() const { + return _exprEval; + } + + /// Return true if the expression evaluator associated with this query + /// object is not empty. See GetExpressionEvaluator(). + bool HasExpression() const { + return !_exprEval.IsEmpty(); + } + + /// Return the top expansion rule for this query object. This rule is the + /// expansion rule from the UsdCollectionAPI instance that was used to build + /// this query object. The top expansion rule is used when evaluating the + /// expression associated with this query, to determine whether it should + /// match prims only, or both prims and properties. + TfToken GetTopExpansionRule() const { + return _topExpansionRule; + } + private: + TfToken _topExpansionRule; + PathExpansionRuleMap _pathExpansionRuleMap; SdfPathSet _includedCollections; + ExpressionEvaluator _exprEval; + // A cached flag indicating whether _pathExpansionRuleMap contains // any exclude rules. bool _hasExcludes=false; diff --git a/pxr/usd/usd/collectionPredicateLibrary.cpp b/pxr/usd/usd/collectionPredicateLibrary.cpp new file mode 100644 index 0000000000..7bd018e868 --- /dev/null +++ b/pxr/usd/usd/collectionPredicateLibrary.cpp @@ -0,0 +1,351 @@ +// +// Copyright 2023 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +#include "pxr/usd/usd/collectionPredicateLibrary.h" +#include "pxr/usd/usd/variantSets.h" +#include "pxr/usd/kind/registry.h" +#include "pxr/base/arch/regex.h" + +#include +#include +#include + +PXR_NAMESPACE_OPEN_SCOPE + +using FnArg = SdfPredicateExpression::FnArg; +using FnArgs = std::vector; + +// If the given FnArgs have no named 'strict' argument, return 'defaultStrict'. +// Otherwise if the 'strict' argument's value is bool==true, int != 0, or string +// starting with '1', 'y', or 'Y', return true. Otherwise return false. +static inline bool +_IsStrict(FnArgs const &args, bool defaultStrict=false) +{ + for (FnArg const &arg: args) { + if (arg.argName == "strict") { + if (arg.value.IsHolding()) { + return arg.value.UncheckedGet(); + } + if (arg.value.IsHolding()) { + return arg.value.UncheckedGet() != 0; + } + if (arg.value.IsHolding()) { + std::string const &str = arg.value.UncheckedGet(); + if (!str.empty()) { + char firstChar = str.front(); + return + firstChar == '1' || + firstChar == 'y' || + firstChar == 'Y'; + } + } + return false; + } + } + // No argument, return default. + return defaultStrict; +} + +static +UsdObjectPredicateLibrary * +_MakeCollectionPredicateLibrary() +{ + using PredicateFunction = UsdObjectPredicateLibrary::PredicateFunction; + using PredResult = SdfPredicateFunctionResult; + + auto &lib = *(new UsdObjectPredicateLibrary); + + lib + .Define("abstract", [](UsdObject const &obj, bool abstract) { + bool primIsAbstract = obj.GetPrim().IsAbstract(); + if (primIsAbstract || !obj.Is()) { + return PredResult::MakeConstant(primIsAbstract == abstract); + } + return PredResult::MakeVarying(primIsAbstract == abstract); + }, {{"isAbstract", true}}) + + .Define("defined", [](UsdObject const &obj, bool defined) { + bool primIsDefined = obj.GetPrim().IsDefined(); + if (!primIsDefined || !obj.Is()) { + return PredResult::MakeConstant(primIsDefined == defined); + } + return PredResult::MakeVarying(primIsDefined == defined); + }, {{"isDefined", true}}) + + .Define("model", [](UsdObject const &obj, bool model) { + if (UsdPrim const &prim = obj.As()) { + bool primIsModel = prim.IsModel(); + if (!primIsModel) { + return PredResult::MakeConstant(primIsModel == model); + } + return PredResult::MakeVarying(primIsModel == model); + } + // Non-prims are never models. + return PredResult::MakeConstant(false); + }, {{"isModel", true}}) + + .Define("group", [](UsdObject const &obj, bool group) { + if (UsdPrim const &prim = obj.As()) { + bool primIsGroup = prim.IsGroup(); + if (!primIsGroup) { + return PredResult::MakeConstant(primIsGroup == group); + } + return PredResult::MakeVarying(primIsGroup == group); + } + // Non-prims are never groups. + return PredResult::MakeConstant(false); + }, {{"isGroup", true}}) + + .DefineBinder("kind", [](FnArgs const &args) -> PredicateFunction { + // Build a function that matches the requested kinds. + bool checkSubKinds = !_IsStrict(args, /*default*/false); + + // Build up all the kind tokens to check from unnamed string args. + std::vector queryKinds; + for (FnArg const &arg: args) { + if (arg.argName.empty() && arg.value.IsHolding()) { + TfToken kind(arg.value.UncheckedGet()); + if (KindRegistry::HasKind(kind)) { + queryKinds.push_back(std::move(kind)); + } + } + } + + if (queryKinds.empty()) { + return nullptr; + } + + return [queryKinds, checkSubKinds](UsdObject const &obj) { + if (UsdPrim const &prim = obj.As()) { + TfToken primKind; + if (!prim.GetMetadata(SdfFieldKeys->Kind, &primKind)) { + return PredResult::MakeVarying(false); + } + for (TfToken const &queryKind: queryKinds) { + if (checkSubKinds ? + KindRegistry::IsA(primKind, queryKind) : + primKind == queryKind) { + return PredResult::MakeVarying(true); + } + } + return PredResult::MakeVarying(false); + } + // Non-prims have no kinds. + return PredResult::MakeConstant(false); + }; + }) + + .DefineBinder("specifier", [](FnArgs const &args) -> PredicateFunction { + // Build a function that matches the requested specifiers. Supplied + // args must be unnamed strings: "over", "class", or "def". + bool specTable[SdfNumSpecifiers] = { false }; + + for (FnArg const &arg: args) { + if (!arg.argName.empty() || + !arg.value.IsHolding()) { + // Invalid arg. + return nullptr; + } + std::string const &argVal = + arg.value.UncheckedGet(); + if (argVal == "over") { + specTable[SdfSpecifierOver] = true; + } + else if (argVal == "def") { + specTable[SdfSpecifierDef] = true; + } + else if (argVal == "class") { + specTable[SdfSpecifierClass] = true; + } + else { + // Invalid arg. + return nullptr; + } + } + + return [specTable](UsdObject const &obj) { + if (UsdPrim const &prim = obj.As()) { + return PredResult::MakeVarying(specTable[prim.GetSpecifier()]); + } + // Non-prims do not have specifiers. + return PredResult::MakeConstant(false); + }; + }) + + .DefineBinder("isa", [](FnArgs const &args) -> PredicateFunction { + // 'isa' accepts a 'strict' argument, to disable subtype checking. + bool exactMatch = _IsStrict(args, /*default*/false); + + // Remaining args must be unnamed strings, identifying isa schema + // types. + std::vector queryTypes; + for (FnArg const &arg: args) { + if (arg.argName.empty() && arg.value.IsHolding()) { + TfType schemaType = + UsdSchemaRegistry::GetTypeFromSchemaTypeName( + TfToken(arg.value.UncheckedGet())); + if (schemaType) { + queryTypes.push_back(schemaType); + } + } + } + + return [queryTypes, exactMatch](UsdObject const &obj) { + if (UsdPrim const &prim = obj.As()) { + TfType const &primType = + prim.GetPrimTypeInfo().GetSchemaType(); + for (TfType const &queryType: queryTypes) { + if (exactMatch ? primType == queryType : + primType.IsA(queryType)) { + return PredResult::MakeVarying(true); + } + } + return PredResult::MakeVarying(false); + } + return PredResult::MakeConstant(false); + }; + }) + + .DefineBinder("hasAPI", [](FnArgs const &args) -> PredicateFunction { + // 'hasAPI' accepts an optional 'instanceName' argument which must + // be named and be a string. + + TfToken instanceName; + for (FnArg const &arg: args) { + if (arg.argName == "instanceName") { + if (arg.value.IsHolding()) { + instanceName = + TfToken(arg.value.UncheckedGet()); + break; + } + return nullptr; + } + } + + // Remaining args must be unnamed strings, identifying applied API + // schema types. + std::vector queryTypes; + for (FnArg const &arg: args) { + if (arg.argName.empty() && arg.value.IsHolding()) { + TfType schemaType = + UsdSchemaRegistry::GetTypeFromSchemaTypeName( + TfToken(arg.value.UncheckedGet())); + if (schemaType) { + queryTypes.push_back(schemaType); + } + } + } + + return [queryTypes, instanceName](UsdObject const &obj) { + if (UsdPrim const &prim = obj.As()) { + if (instanceName.IsEmpty()) { + for (TfType const &queryType: queryTypes) { + if (prim.HasAPI(queryType)) { + return PredResult::MakeVarying(true); + } + } + } + else { + for (TfType const &queryType: queryTypes) { + if (prim.HasAPI(queryType, instanceName)) { + return PredResult::MakeVarying(true); + } + } + } + return PredResult::MakeVarying(false); + } + return PredResult::MakeConstant(false); + }; + }) + + .DefineBinder("variant", [](FnArgs const &args) -> PredicateFunction { + // 'variant' accepts only named arguments of the form, + // setName=selGlob where setName is a variant set name and selGlob + // is a glob pattern to match the selection for variant set setName + // against. + + // For each arg, store the set name and the selection name or + // selection glob pattern. We distinguish ordinary 'identifier' + // selection names because they are much faster to check than glob + // patterns, so we do those first. + + std::vector> exactSels; + std::vector> globSels; + + for (FnArg const &arg: args) { + if (arg.argName.empty() || + !arg.value.IsHolding()) { + // Invalid arg. + return nullptr; + } + std::string const & + selStr = arg.value.UncheckedGet(); + // XXX: This should check against truly valid sel names. + if (TfIsValidIdentifier(selStr)) { + exactSels.push_back({arg.argName, selStr}); + } + else { + ArchRegex regex(selStr, ArchRegex::GLOB); + if (!regex) { + // Invalid argument + return nullptr; + } + globSels.push_back({arg.argName, std::move(regex)}); + } + } + + return [exactSels, globSels](UsdObject const &obj) { + // Check exacts first, then globs. + if (UsdPrim const &prim = obj.As()) { + UsdVariantSets vsets = prim.GetVariantSets(); + for (auto const &setNsel: exactSels) { + if (vsets.GetVariantSelection( + setNsel.first) != setNsel.second) { + return PredResult::MakeVarying(false); + } + } + for (auto const &setNglob: globSels) { + if (!setNglob.second.Match( + vsets.GetVariantSelection(setNglob.first))) { + return PredResult::MakeVarying(false); + } + } + return PredResult::MakeVarying(true); + } + return PredResult::MakeConstant(false); + }; + }) + ; + + return &lib; +} + +UsdObjectPredicateLibrary const & +UsdGetCollectionPredicateLibrary() +{ + static UsdObjectPredicateLibrary + *theLibrary = _MakeCollectionPredicateLibrary(); + return *theLibrary; +} + +PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/usd/usd/collectionPredicateLibrary.h b/pxr/usd/usd/collectionPredicateLibrary.h new file mode 100644 index 0000000000..5ad6ecbed5 --- /dev/null +++ b/pxr/usd/usd/collectionPredicateLibrary.h @@ -0,0 +1,100 @@ +// +// Copyright 2023 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +#ifndef PXR_USD_USD_COLLECTION_PREDICATE_LIBRARY_H +#define PXR_USD_USD_COLLECTION_PREDICATE_LIBRARY_H + +/// \file usd/collectionPredicateLibrary.h + +#include "pxr/pxr.h" + +#include "pxr/usd/usd/object.h" +#include "pxr/usd/usd/prim.h" + +#include "pxr/usd/sdf/predicateLibrary.h" + +PXR_NAMESPACE_OPEN_SCOPE + +using UsdObjectPredicateLibrary = SdfPredicateLibrary; + +/// Return the predicate library used to evaluate SdfPathExpressions in +/// UsdCollectionAPI's membershipExpression attributes. +/// +/// This library provides the following predicate functions. Where the +/// documentation says closest-prim, it means the given object if that object is +/// a prim, otherwise the object's owning prim if the object is a property. +/// +/// abstract(bool isAbstract=true) +/// Return true if the closest-prim's IsAbstract() == isAbstract. +/// +/// defined(bool isDefined=true) +/// Return true if the closest-prim's IsDefined() == isDefined. +/// +/// model(bool isModel=true) +/// Return true if the given object is a prim and its IsModel() == isModel. +/// If the given object is not a prim, return false. +/// +/// group(bool isGroup=true) +/// Return true if the given object is a prim and its IsGroup() == isGroup. +/// If the given object is not a prim, return false. +/// +/// kind(kind1, ... kindN, strict=false) +/// Return true if the given object is a prim, and its kind metadata (see +/// UsdModelAPI::GetKind()) is one of kind1...kindN (exactly if strict=true, +/// or in the UsdKindRegistry::IsA() sense otherwise). If the given object +/// is not a prim, return false. +/// +/// specifier(spec1, ... specN) +/// Return true if the given object is a prim and its specifier (see +/// UsdPrim::GetSpecifier()) is one of spec1...specN. The spec1..specN +/// arguments must be unnamed strings: "over", "class", or "def". If the +/// given object is not a prim, return false. +/// +/// isa(schema1, ... schemaN, strict=false) +/// Return true if the given object is a prim and its typed schema (see +/// UsdPrim::IsA())is exactly one of schema1...schemaN if strict=true, or a +/// subtype of schema1...schemaN if strict=false. If the given object is +/// not a prim, return false. +/// +/// hasAPI(apiSchema1, ... apiSchemaN, [instanceName=name]) +/// Return true if the given object is a prim and it has an applied API +/// schema (see UsdPrim::HasAPI()) of type apiSchema1...apiSchemaN. If the +/// 'instanceName' argument is supplied, the prim must have an applied API +/// schema with that instanceName. If the given object is not a prim, +/// return false. +/// +/// variant(set1=selGlob1, ... setN=selGlobN) +/// Return true if the given object is a prim and it has selections matching +/// the literal names or glob patterns selGlob1...selGlobN for the variant +/// sets set1...setN. See UsdPrim::GetVariantSets() and +/// UsdVariantSets::GetVariantSelection(). If the given object is not a +/// prim, return false. +/// +SDF_API +UsdObjectPredicateLibrary const & +UsdGetCollectionPredicateLibrary(); + +PXR_NAMESPACE_CLOSE_SCOPE + +#endif // PXR_USD_USD_COLLECTION_PREDICATE_LIBRARY_H + diff --git a/pxr/usd/usd/generatedSchema.usda b/pxr/usd/usd/generatedSchema.usda index 82cbe2a566..fff855e154 100644 --- a/pxr/usd/usd/generatedSchema.usda +++ b/pxr/usd/usd/generatedSchema.usda @@ -237,6 +237,10 @@ class "CollectionAPI" ( relationship target the collection:{collectionName} property on the owning prim of the collection to be included""" ) + uniform pathExpression collection:__INSTANCE_NAME__:membershipExpression ( + doc = """Specifies a path expression that determines membership in this + collection.""" + ) } class "ClipsAPI" ( diff --git a/pxr/usd/usd/schema.usda b/pxr/usd/usd/schema.usda index 017a42d857..86fa601b7d 100644 --- a/pxr/usd/usd/schema.usda +++ b/pxr/usd/usd/schema.usda @@ -241,6 +241,7 @@ class "CollectionAPI" #include "pxr/usd/usd/collectionMembershipQuery.h" #include "pxr/usd/usd/primFlags.h" #include "pxr/usd/usd/tokens.h" +#include "pxr/usd/sdf/pathExpression.h" """ token apiSchemaType = "multipleApply" token propertyNamespacePrefix = "collection" @@ -289,6 +290,10 @@ class "CollectionAPI" or of enumerating the objects belonging to the collection (see UsdCollectionAPI::GetIncludedObjects).""" ) + uniform pathExpression membershipExpression ( + doc = """Specifies a path expression that determines membership in this + collection.""" + ) uniform opaque __INSTANCE_NAME__ ( customData = { string apiName = "Collection" diff --git a/pxr/usd/usd/testenv/testUsdCollectionAPI.py b/pxr/usd/usd/testenv/testUsdCollectionAPI.py index 8e7481ff90..a623dff4cb 100644 --- a/pxr/usd/usd/testenv/testUsdCollectionAPI.py +++ b/pxr/usd/usd/testenv/testUsdCollectionAPI.py @@ -174,7 +174,7 @@ def test_AuthorCollections(self): expandPnPCollObjects = Usd.CollectionAPI.ComputeIncludedObjects( expandPnPCollMquery, stage) - self.assertEqual(len(expandPnPCollObjects), 20) + self.assertEqual(len(expandPnPCollObjects), 21) for obj in expandPnPCollObjects: self.assertTrue(expandPnPCollMquery.IsPathIncluded(obj.GetPath())) @@ -199,7 +199,7 @@ def test_AuthorCollections(self): for obj in combinedCollIncObjects: self.assertTrue(combinedMquery.IsPathIncluded(obj.GetPath())) - self.assertEqual(len(combinedCollIncObjects), 17) + self.assertEqual(len(combinedCollIncObjects), 18) # now add the collection "expandPrimsColl", which includes "Geom" and # exludes "Shapes", but is weaker than the "expandPrimsAndProperties" @@ -344,7 +344,7 @@ def test_testReadCollection(self): allGeomPropertiesMquery = allGeomProperties.ComputeMembershipQuery() self.assertEqual(allGeomPropertiesMquery.GetIncludedCollections(), []) self.assertEqual(len(Usd.CollectionAPI.ComputeIncludedObjects( - allGeomPropertiesMquery, stage)), 31) + allGeomPropertiesMquery, stage)), 33) hasRels = Usd.CollectionAPI(testPrim, "hasRelationships") (valid, reason) = hasRels.Validate() @@ -641,26 +641,31 @@ def test_GetSchemaAttributeNames(self): self.assertEqual(Usd.CollectionAPI.GetSchemaAttributeNames(), ['collection:__INSTANCE_NAME__:expansionRule', 'collection:__INSTANCE_NAME__:includeRoot', + 'collection:__INSTANCE_NAME__:membershipExpression', 'collection:__INSTANCE_NAME__']) self.assertEqual(Usd.CollectionAPI.GetSchemaAttributeNames(False, ""), ['collection:__INSTANCE_NAME__:expansionRule', 'collection:__INSTANCE_NAME__:includeRoot', + 'collection:__INSTANCE_NAME__:membershipExpression', 'collection:__INSTANCE_NAME__']) self.assertEqual(Usd.CollectionAPI.GetSchemaAttributeNames(True, ""), ['collection:__INSTANCE_NAME__:expansionRule', 'collection:__INSTANCE_NAME__:includeRoot', + 'collection:__INSTANCE_NAME__:membershipExpression', 'collection:__INSTANCE_NAME__']) self.assertEqual(Usd.CollectionAPI.GetSchemaAttributeNames(False, "foo"), ['collection:foo:expansionRule', 'collection:foo:includeRoot', + 'collection:foo:membershipExpression', 'collection:foo']) self.assertEqual(Usd.CollectionAPI.GetSchemaAttributeNames(True, "bar"), ['collection:bar:expansionRule', 'collection:bar:includeRoot', + 'collection:bar:membershipExpression', 'collection:bar']) def test_RelativePathIsPathIncluded(self): diff --git a/pxr/usd/usd/testenv/testUsdPathExpressionAttrs.py b/pxr/usd/usd/testenv/testUsdPathExpressionAttrs.py new file mode 100644 index 0000000000..8a4974ab19 --- /dev/null +++ b/pxr/usd/usd/testenv/testUsdPathExpressionAttrs.py @@ -0,0 +1,93 @@ +#!/pxrpythonsubst +# +# Copyright 2023 Pixar +# +# Licensed under the Apache License, Version 2.0 (the "Apache License") +# with the following modification; you may not use this file except in +# compliance with the Apache License and the following modification to it: +# Section 6. Trademarks. is deleted and replaced with: +# +# 6. Trademarks. This License does not grant permission to use the trade +# names, trademarks, service marks, or product names of the Licensor +# and its affiliates, except as required to comply with Section 4(c) of +# the License and to reproduce the content of the NOTICE file. +# +# You may obtain a copy of the Apache License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the Apache License with the above modification is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the Apache License for the specific +# language governing permissions and limitations under the Apache License. + +from pxr import Usd, Vt, Sdf, Tf +import unittest + +class TestUsdPathExpressionAttrs(unittest.TestCase): + + def test_BasicResolution(self): + # Superlayer + supLayer = Sdf.Layer.CreateAnonymous() + supPrimSpec = Sdf.CreatePrimInLayer(supLayer, '/prim') + supAttrSpec = Sdf.AttributeSpec( + supPrimSpec, 'expr', Sdf.ValueTypeNames.PathExpression) + supAttrSpec.default = Sdf.PathExpression('super %_') + # Authoring makes absolute, as with relationships/connections. + self.assertEqual(supAttrSpec.default, + Sdf.PathExpression('/prim/super %_')) + + # Sublayer + subLayer = Sdf.Layer.CreateAnonymous() + subPrimSpec = Sdf.CreatePrimInLayer(subLayer, '/prim') + subAttrSpec = Sdf.AttributeSpec( + subPrimSpec, 'expr', Sdf.ValueTypeNames.PathExpression) + subAttrSpec.default = Sdf.PathExpression('suber') + # Authoring makes absolute, as with relationships/connections. + self.assertEqual(subAttrSpec.default, + Sdf.PathExpression('/prim/suber')) + + # Put 'em together. + supLayer.subLayerPaths.append(subLayer.identifier) + + stage = Usd.Stage.Open(supLayer) + + # The expression should compose as expected, for a call to Get() at + # default time. + self.assertEqual(stage.GetAttributeAtPath('/prim.expr').Get(), + Sdf.PathExpression('/prim/super /prim/suber')) + + def test_BasicPathTranslation(self): + refTargLayer = Sdf.Layer.CreateAnonymous() + refPrimSpec = Sdf.CreatePrimInLayer(refTargLayer, '/prim') + refAttrSpec = Sdf.AttributeSpec( + refPrimSpec, 'expr', Sdf.ValueTypeNames.PathExpression) + refAttrSpec.default = Sdf.PathExpression('refChild') + # Authoring makes absolute, as with relationships/connections. + self.assertEqual(refAttrSpec.default, + Sdf.PathExpression('/prim/refChild')) + + srcLayer = Sdf.Layer.CreateAnonymous() + srcPrimSpec = Sdf.CreatePrimInLayer(srcLayer, '/srcPrim') + srcAttrSpec = Sdf.AttributeSpec( + srcPrimSpec, 'expr', Sdf.ValueTypeNames.PathExpression) + srcAttrSpec.default = Sdf.PathExpression('srcChild %_') + # Authoring makes absolute, as with relationships/connections. + self.assertEqual(srcAttrSpec.default, + Sdf.PathExpression('/srcPrim/srcChild %_')) + + # Put 'em together. + srcPrimSpec.referenceList.Append( + Sdf.Reference(refTargLayer.identifier, refPrimSpec.path)) + + stage = Usd.Stage.Open(srcLayer) + + # The expression should path-translate and compose as expected for a + # call to Get() at default time. + self.assertEqual(stage.GetAttributeAtPath('/srcPrim.expr').Get(), + Sdf.PathExpression( + '/srcPrim/srcChild /srcPrim/refChild')) + +if __name__ == '__main__': + unittest.main() diff --git a/pxr/usd/usd/testenv/testUsdSchemaRegistry.py b/pxr/usd/usd/testenv/testUsdSchemaRegistry.py index 1edf97fe13..e3b48f7a46 100644 --- a/pxr/usd/usd/testenv/testUsdSchemaRegistry.py +++ b/pxr/usd/usd/testenv/testUsdSchemaRegistry.py @@ -435,8 +435,9 @@ def test_FindAppliedAPIPrimDefinition(self): 'collection:__INSTANCE_NAME__:excludes', 'collection:__INSTANCE_NAME__:expansionRule', 'collection:__INSTANCE_NAME__:includeRoot', - 'collection:__INSTANCE_NAME__:includes']) - + 'collection:__INSTANCE_NAME__:includes', + 'collection:__INSTANCE_NAME__:membershipExpression']) + # Prim def has relationship/property spec for 'excludes' self.assertTrue(primDef.GetPropertyDefinition( 'collection:__INSTANCE_NAME__:excludes')) @@ -453,6 +454,14 @@ def test_FindAppliedAPIPrimDefinition(self): self.assertFalse(primDef.GetRelationshipDefinition( 'collection:__INSTANCE_NAME__:expansionRule')) + # Prim def has attribute/property spec for 'membershipExpression'. + self.assertTrue(primDef.GetPropertyDefinition( + 'collection:__INSTANCE_NAME__:membershipExpression')) + self.assertTrue(primDef.GetAttributeDefinition( + 'collection:__INSTANCE_NAME__:membershipExpression')) + self.assertFalse(primDef.GetRelationshipDefinition( + 'collection:__INSTANCE_NAME__:membershipExpression')) + # API schema but not an applied schema. No prim definition self.assertFalse(Usd.SchemaRegistry().FindAppliedAPIPrimDefinition( 'ModelAPI')) @@ -663,6 +672,14 @@ def _VerifyExpectedPrimData(layer, path, expectedPrimFields, "documentation" : apiPrimDef.GetPropertyDocumentation( "collection:__INSTANCE_NAME__:excludes"), "variability" : Sdf.VariabilityUniform + }, + "collection:__INSTANCE_NAME__:membershipExpression" : { + "custom" : False, + "default" : None, + "typeName" : Sdf.ValueTypeNames.PathExpression, + "documentation" : apiPrimDef.GetPropertyDocumentation( + "collection:__INSTANCE_NAME__:membershipExpression"), + "variability" : Sdf.VariabilityUniform } } diff --git a/pxr/usd/usd/tokens.cpp b/pxr/usd/usd/tokens.cpp index 644ec14dae..f0c2fec1cf 100644 --- a/pxr/usd/usd/tokens.cpp +++ b/pxr/usd/usd/tokens.cpp @@ -35,6 +35,7 @@ UsdTokensType::UsdTokensType() : collection_MultipleApplyTemplate_ExpansionRule("collection:__INSTANCE_NAME__:expansionRule", TfToken::Immortal), collection_MultipleApplyTemplate_IncludeRoot("collection:__INSTANCE_NAME__:includeRoot", TfToken::Immortal), collection_MultipleApplyTemplate_Includes("collection:__INSTANCE_NAME__:includes", TfToken::Immortal), + collection_MultipleApplyTemplate_MembershipExpression("collection:__INSTANCE_NAME__:membershipExpression", TfToken::Immortal), exclude("exclude", TfToken::Immortal), expandPrims("expandPrims", TfToken::Immortal), expandPrimsAndProperties("expandPrimsAndProperties", TfToken::Immortal), @@ -55,6 +56,7 @@ UsdTokensType::UsdTokensType() : collection_MultipleApplyTemplate_ExpansionRule, collection_MultipleApplyTemplate_IncludeRoot, collection_MultipleApplyTemplate_Includes, + collection_MultipleApplyTemplate_MembershipExpression, exclude, expandPrims, expandPrimsAndProperties, diff --git a/pxr/usd/usd/tokens.h b/pxr/usd/usd/tokens.h index 717f6bf0f8..6c2a2dc0b3 100644 --- a/pxr/usd/usd/tokens.h +++ b/pxr/usd/usd/tokens.h @@ -98,6 +98,10 @@ struct UsdTokensType { /// /// UsdCollectionAPI const TfToken collection_MultipleApplyTemplate_Includes; + /// \brief "collection:__INSTANCE_NAME__:membershipExpression" + /// + /// UsdCollectionAPI + const TfToken collection_MultipleApplyTemplate_MembershipExpression; /// \brief "exclude" /// /// This is the token used to exclude a path from a collection. Although it is not a possible value for the "expansionRule" attribute, it is used as the expansionRule for excluded paths in UsdCollectionAPI::MembershipQuery::IsPathIncluded. diff --git a/pxr/usd/usd/wrapCollectionAPI.cpp b/pxr/usd/usd/wrapCollectionAPI.cpp index 7231e776fc..495bce77a9 100644 --- a/pxr/usd/usd/wrapCollectionAPI.cpp +++ b/pxr/usd/usd/wrapCollectionAPI.cpp @@ -64,6 +64,13 @@ _CreateIncludeRootAttr(UsdCollectionAPI &self, UsdPythonToSdfType(defaultVal, SdfValueTypeNames->Bool), writeSparsely); } +static UsdAttribute +_CreateMembershipExpressionAttr(UsdCollectionAPI &self, + object defaultVal, bool writeSparsely) { + return self.CreateMembershipExpressionAttr( + UsdPythonToSdfType(defaultVal, SdfValueTypeNames->PathExpression), writeSparsely); +} + static UsdAttribute _CreateCollectionAttr(UsdCollectionAPI &self, object defaultVal, bool writeSparsely) { @@ -177,6 +184,13 @@ void wrapUsdCollectionAPI() (arg("defaultValue")=object(), arg("writeSparsely")=false)) + .def("GetMembershipExpressionAttr", + &This::GetMembershipExpressionAttr) + .def("CreateMembershipExpressionAttr", + &_CreateMembershipExpressionAttr, + (arg("defaultValue")=object(), + arg("writeSparsely")=false)) + .def("GetCollectionAttr", &This::GetCollectionAttr) .def("CreateCollectionAttr", diff --git a/pxr/usd/usd/wrapCollectionMembershipQuery.cpp b/pxr/usd/usd/wrapCollectionMembershipQuery.cpp index 32da430cda..6c0badb9c2 100644 --- a/pxr/usd/usd/wrapCollectionMembershipQuery.cpp +++ b/pxr/usd/usd/wrapCollectionMembershipQuery.cpp @@ -67,7 +67,6 @@ wrapUsdCollectionMembershipQuery() return_value_policy()); class_("UsdCollectionMembershipQuery") - .def(init<>()) .def("IsPathIncluded", _WrapIsPathIncluded_1, arg("path")) .def("IsPathIncluded", _WrapIsPathIncluded_2, (arg("path"), arg("parentExpansionRule"))) diff --git a/pxr/usd/usd/wrapTokens.cpp b/pxr/usd/usd/wrapTokens.cpp index a1d03bddb8..53e4f12d74 100644 --- a/pxr/usd/usd/wrapTokens.cpp +++ b/pxr/usd/usd/wrapTokens.cpp @@ -73,6 +73,7 @@ void wrapUsdTokens() _AddToken(cls, "collection_MultipleApplyTemplate_ExpansionRule", UsdTokens->collection_MultipleApplyTemplate_ExpansionRule); _AddToken(cls, "collection_MultipleApplyTemplate_IncludeRoot", UsdTokens->collection_MultipleApplyTemplate_IncludeRoot); _AddToken(cls, "collection_MultipleApplyTemplate_Includes", UsdTokens->collection_MultipleApplyTemplate_Includes); + _AddToken(cls, "collection_MultipleApplyTemplate_MembershipExpression", UsdTokens->collection_MultipleApplyTemplate_MembershipExpression); _AddToken(cls, "exclude", UsdTokens->exclude); _AddToken(cls, "expandPrims", UsdTokens->expandPrims); _AddToken(cls, "expandPrimsAndProperties", UsdTokens->expandPrimsAndProperties); From 31820060554f0a525c2edc97b24c62557bf92634 Mon Sep 17 00:00:00 2001 From: clach Date: Tue, 25 Jul 2023 16:56:34 -0700 Subject: [PATCH 134/352] [hdx] Only rebuild HdxSimpleLightTask buffer sources when needed. (Internal change: 2287050) --- pxr/imaging/hdx/simpleLightTask.cpp | 30 ++++++++++++++++++++++++----- pxr/imaging/hdx/simpleLightTask.h | 4 ++++ 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/pxr/imaging/hdx/simpleLightTask.cpp b/pxr/imaging/hdx/simpleLightTask.cpp index 5b79e3623c..ee1dafa79d 100644 --- a/pxr/imaging/hdx/simpleLightTask.cpp +++ b/pxr/imaging/hdx/simpleLightTask.cpp @@ -71,7 +71,10 @@ HdxSimpleLightTask::HdxSimpleLightTask( , _lightingBar(nullptr) , _lightSourcesBar(nullptr) , _shadowsBar(nullptr) - , _materialBar(nullptr) + // Build all buffer sources the first time. + , _rebuildLightingBufferSources(true) + , _rebuildLightAndShadowBufferSources(true) + , _rebuildMaterialBufferSources(true) { } @@ -134,6 +137,8 @@ HdxSimpleLightTask::Sync(HdSceneDelegate* delegate, // more formal material plumbing. _material = params.material; _sceneAmbient = params.sceneAmbient; + + _rebuildMaterialBufferSources = true; } static const TfTokenVector lightTypes = @@ -328,7 +333,16 @@ HdxSimpleLightTask::Sync(HdSceneDelegate* delegate, TF_VERIFY(_glfSimpleLights.size() <= _maxLights); - lightingContext->SetUseLighting(!_glfSimpleLights.empty()); + const bool useLighting = !_glfSimpleLights.empty(); + if (useLighting != lightingContext->GetUseLighting()) { + _rebuildLightingBufferSources = true; + } + + if (_glfSimpleLights != lightingContext->GetLights()) { + _rebuildLightAndShadowBufferSources = true; + } + + lightingContext->SetUseLighting(useLighting); lightingContext->SetLights(_glfSimpleLights); lightingContext->SetCamera(viewMatrix, projectionMatrix); // XXX: compatibility hack for passing some unit tests until we have @@ -379,6 +393,8 @@ void HdxSimpleLightTask::Prepare(HdTaskContext* ctx, HdRenderIndex* renderIndex) { + HD_TRACE_FUNCTION(); + GlfSimpleLightingContextRefPtr const& lightingContext = _lightingShader->GetLightingContext(); if (!TF_VERIFY(lightingContext)) { @@ -417,7 +433,7 @@ HdxSimpleLightTask::Prepare(HdTaskContext* ctx, } // Add lighting buffer sources - { + if (_rebuildLightingBufferSources) { HdBufferSourceSharedPtrVector sources = { std::make_shared( HdxSimpleLightTaskTokens->useLighting, @@ -532,7 +548,7 @@ HdxSimpleLightTask::Prepare(HdTaskContext* ctx, } // Add light and shadow buffer sources - { + if (_rebuildLightAndShadowBufferSources) { // Light sources VtVec4fArray position(numLights); VtVec4fArray ambient(numLights); @@ -691,7 +707,7 @@ HdxSimpleLightTask::Prepare(HdTaskContext* ctx, } // Add material buffer sources - { + if (_rebuildMaterialBufferSources) { GlfSimpleMaterial const & material = lightingContext->GetMaterial(); HdBufferSourceSharedPtrVector sources = { @@ -717,6 +733,10 @@ HdxSimpleLightTask::Prepare(HdTaskContext* ctx, hdStResourceRegistry->AddSources(_materialBar, std::move(sources)); } + + _rebuildLightingBufferSources = false; + _rebuildLightAndShadowBufferSources = false; + _rebuildMaterialBufferSources = false; } void diff --git a/pxr/imaging/hdx/simpleLightTask.h b/pxr/imaging/hdx/simpleLightTask.h index 5a7fde3f5f..5ee3b38e3f 100644 --- a/pxr/imaging/hdx/simpleLightTask.h +++ b/pxr/imaging/hdx/simpleLightTask.h @@ -114,6 +114,10 @@ class HdxSimpleLightTask : public HdTask HdBufferArrayRangeSharedPtr _shadowsBar; HdBufferArrayRangeSharedPtr _materialBar; + bool _rebuildLightingBufferSources; + bool _rebuildLightAndShadowBufferSources; + bool _rebuildMaterialBufferSources; + size_t _AppendLightsOfType(HdRenderIndex &renderIndex, TfTokenVector const &lightTypes, SdfPathVector const &lightIncludePaths, From 327b2162cb3b3ec3577d38747877d3eeb89c113b Mon Sep 17 00:00:00 2001 From: rajabala Date: Tue, 25 Jul 2023 16:56:49 -0700 Subject: [PATCH 135/352] [hdsi] Validate namespacedSettings datasource before use ... and some minor refactoring. (Internal change: 2287064) --- .../renderSettingsFilteringSceneIndex.cpp | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/pxr/imaging/hdsi/renderSettingsFilteringSceneIndex.cpp b/pxr/imaging/hdsi/renderSettingsFilteringSceneIndex.cpp index 735de5dc07..4ae4499564 100644 --- a/pxr/imaging/hdsi/renderSettingsFilteringSceneIndex.cpp +++ b/pxr/imaging/hdsi/renderSettingsFilteringSceneIndex.cpp @@ -47,9 +47,8 @@ namespace static const SdfPath s_renderScope("/Render"); static const SdfPath s_fallbackPath("/Render/_FallbackSettings"); -// Builds and returns a data source to invalidate the 'active' locator on -// the 'renderSettings' container when the 'activeRenderSettingsPrim' locator -// on the 'sceneGlobals' container is dirtied. +// Builds and returns a data source to invalidate the renderSettings.active +// locator when the sceneGlobals.activeRenderSettingsPrim locator is dirtied. // HdContainerDataSourceHandle _GetDependenciesDataSource( @@ -71,21 +70,23 @@ _GetDependenciesDataSource( .Build() ); - if (HdContainerDataSourceHandle c = HdContainerDataSource::Cast( - existingDependenciesDs)) { - return HdOverlayContainerDataSource::New(c, renderSettingsDepDS); - } - - return renderSettingsDepDS; + return HdOverlayContainerDataSource::OverlayedContainerDataSources( + HdContainerDataSource::Cast(existingDependenciesDs), + renderSettingsDepDS); } -// Build and return a container with only the names that begin with the requested prefixes. +// Build and return a container with only the names that begin with the +// requested prefixes. // HdContainerDataSourceHandle _GetFilteredNamespacedSettings( const HdContainerDataSourceHandle &c, const VtArray &prefixes) { + if (!c) { + return HdContainerDataSourceHandle(); + } + TfTokenVector names = c->GetNames(); names.erase( std::remove_if(names.begin(), names.end(), @@ -153,11 +154,11 @@ class _RenderSettingsDataSource final : public HdContainerDataSource HdDataSourceBaseHandle result = _input->Get(name); - if (name == HdRenderSettingsSchemaTokens->namespacedSettings) { - if (!_namespacePrefixes.empty()) { - return _GetFilteredNamespacedSettings( - HdContainerDataSource::Cast(result), _namespacePrefixes); - } + if (name == HdRenderSettingsSchemaTokens->namespacedSettings && + !_namespacePrefixes.empty()) { + + return _GetFilteredNamespacedSettings( + HdContainerDataSource::Cast(result), _namespacePrefixes); } return result; From 1b905a34afb4b89c43d2e69327cbd0754981890c Mon Sep 17 00:00:00 2001 From: cvj Date: Tue, 25 Jul 2023 16:56:57 -0700 Subject: [PATCH 136/352] Make RenderColorWithOccludedSelection take non-opaque colors into account. Any non-opaque geometry which would normally be rendered via alpha-to-coverage cannot do so when using RenderColorWithOccludedSelection since it requires blending. To deal with this, we instead use the standard blending approach for non-opaque geometry, and if there is an occluded selection behind this geometry we also increase the contribution from the selected geometry when blending. (Internal change: 2287071) --- pxr/imaging/hdx/shaders/renderPass.glslfx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pxr/imaging/hdx/shaders/renderPass.glslfx b/pxr/imaging/hdx/shaders/renderPass.glslfx index 160fa42cb8..4175fe43f1 100644 --- a/pxr/imaging/hdx/shaders/renderPass.glslfx +++ b/pxr/imaging/hdx/shaders/renderPass.glslfx @@ -244,8 +244,10 @@ GetShowThroughOpacity() // Input AOV textures are provided by the task. void RenderOutput(vec4 Peye, vec3 Neye, vec4 color, vec4 patchCoord) { + color.rgb *= color.a; + if (HasOccludedSelection(gl_FragCoord.xy)) { - color.a = GetShowThroughOpacity(); + color.a *= GetShowThroughOpacity(); } colorOut = color; From ba90c784bf0fc950d6326aa1e82bc37fd156fa19 Mon Sep 17 00:00:00 2001 From: rajabala Date: Tue, 25 Jul 2023 23:11:10 -0700 Subject: [PATCH 137/352] [testusdview] Improve Prman test run times. - Set the HD_PRMAN_MAX_SAMPLES env var to 1024 only when running usdview and not the tests. - Use settings attributes on the RenderSettings prim for quick and consistent test runs. This reduces test run times by a factor of 10. - Simplify some test scenes by using cube instead of sphere. The legacy delegate converts the sphere into a mesh, while the stage scene index doesn't which results in differences. - Update test baselines and remove sphere* baselines where possible. (Internal change: 2287274) --- .../baseline/firstFilter.png | Bin 89527 -> 148668 bytes .../baseline/firstFilter_sphereAsMesh.png | Bin 87781 -> 0 bytes .../baseline/multiFilters1.png | Bin 92195 -> 149411 bytes .../baseline/multiFilters1_sphereAsMesh.png | Bin 90430 -> 0 bytes .../baseline/multiFilters2.png | Bin 91793 -> 149162 bytes .../baseline/multiFilters2_sphereAsMesh.png | Bin 90090 -> 0 bytes .../baseline/secondFilter.png | Bin 92091 -> 149081 bytes .../baseline/secondFilter_modified.png | Bin 92015 -> 148935 bytes .../secondFilter_modified_sphereAsMesh.png | Bin 90465 -> 0 bytes .../baseline/secondFilter_sphereAsMesh.png | Bin 90457 -> 0 bytes .../testUsdviewDisplayFilterEdits/test.usda | 13 +++++++------ .../baseline/directLighting.png | Bin 50121 -> 47238 bytes .../baseline/directLighting_sphereAsMesh.png | Bin 50057 -> 47318 bytes .../baseline/pathTracer.png | Bin 97271 -> 102066 bytes .../baseline/pathTracer_modified.png | Bin 90716 -> 93680 bytes .../pathTracer_modified_sphereAsMesh.png | Bin 90877 -> 93497 bytes .../baseline/pathTracer_sphereAsMesh.png | Bin 95637 -> 101061 bytes .../testUsdviewIntegratorEdits/test.usda | 13 ++++++++----- .../baseline/both.png | Bin 18627 -> 16105 bytes .../baseline/both_sphereAsMesh.png | Bin 18371 -> 0 bytes .../baseline/displayOnly.png | Bin 92263 -> 149049 bytes .../baseline/displayOnly_sphereAsMesh.png | Bin 90449 -> 0 bytes .../baseline/sampleOnly.png | Bin 19135 -> 16147 bytes .../baseline/sampleOnly_sphereAsMesh.png | Bin 18947 -> 0 bytes .../test.usda | 13 +++++++------ .../baseline/firstFilter.png | Bin 19135 -> 16147 bytes .../baseline/firstFilter_sphereAsMesh.png | Bin 18947 -> 0 bytes .../baseline/multiFilters1.png | Bin 22511 -> 18526 bytes .../baseline/multiFilters1_sphereAsMesh.png | Bin 22174 -> 0 bytes .../baseline/multiFilters2.png | Bin 19135 -> 16147 bytes .../baseline/multiFilters2_sphereAsMesh.png | Bin 18947 -> 0 bytes .../baseline/secondFilter.png | Bin 61458 -> 104132 bytes .../baseline/secondFilter_modified.png | Bin 19026 -> 16034 bytes .../secondFilter_modified_sphereAsMesh.png | Bin 18874 -> 0 bytes .../baseline/secondFilter_sphereAsMesh.png | Bin 60007 -> 0 bytes .../testUsdviewSampleFilterEdits/test.usda | 14 ++++++++------ pxr/usdImaging/bin/testusdview/testusdview.py | 3 ++- pxr/usdImaging/usdviewq/__init__.py | 5 +++-- 38 files changed, 35 insertions(+), 26 deletions(-) delete mode 100644 pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/firstFilter_sphereAsMesh.png delete mode 100644 pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/multiFilters1_sphereAsMesh.png delete mode 100644 pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/multiFilters2_sphereAsMesh.png delete mode 100644 pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/secondFilter_modified_sphereAsMesh.png delete mode 100644 pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/secondFilter_sphereAsMesh.png delete mode 100644 pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleAndDisplayFilters/baseline/both_sphereAsMesh.png delete mode 100644 pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleAndDisplayFilters/baseline/displayOnly_sphereAsMesh.png delete mode 100644 pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleAndDisplayFilters/baseline/sampleOnly_sphereAsMesh.png delete mode 100644 pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/firstFilter_sphereAsMesh.png delete mode 100644 pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/multiFilters1_sphereAsMesh.png delete mode 100644 pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/multiFilters2_sphereAsMesh.png delete mode 100644 pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/secondFilter_modified_sphereAsMesh.png delete mode 100644 pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/secondFilter_sphereAsMesh.png diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/firstFilter.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/firstFilter.png index 22f7d72c0e7e488f802c5e881ce97cf2df8507a0..fcd52822eede95cb73e7acb2de5584d8d0683b51 100644 GIT binary patch literal 148668 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 literal 92195 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

+utd@4 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 B?F;|_ diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/multiFilters1_sphereAsMesh.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/multiFilters1_sphereAsMesh.png deleted file mode 100644 index 5d2e82bfcf30898e5240153af54b6975f3e260ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90430 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

sTp*zVb?G{EKu=2#KkFeL{+|EW2*# zI&r?VLMSN>qtp|xtE^qqBnN+<6tjNh-{1MZD~?io4zpSG^fcRS&|8&}>;C&EnJcR2&!m*t)F#uh*vux{?H3(hT@_g2q@&*8Lk;E~LW0u4;O?jMfOnKuq5Y{Et`6Rh$hvN11a6Z2> zetCLM5&Rw=9>NTt!6ez_WF(Amf1Bj_%{0nzS5{2oB+C#5oo1DUI0WDyiYw?@I`C|T zdngzHr}?~GF8lqyEXyp*Hk<9k!$XR`tfTliS}5JCa7X7E{yI5+E2&JU0H&Ma`u9LI z38fPx&0-KpJ(47OdU|?!dD(8aX_{hXAFGs7QV1c1i}dgNwr$&{?T5Y_x=FXE@0k~# zMjhZ4lN89Zp+^05vEj6s0sxQsj6>Wq>vPdLe#XP&N`jMwHbcgqh9w%S$?6Bv}?GF^?idvXQrS5q=tsEXwxvwfX$HQ;M$F`FcH@&(bJz zH28|TPPVTDn9t+q=h@?9 zo~7{^8F}>}8;X1L@>{xgO%46)ilLk?OS5rcjCxc|V_>w_Qd$$EKs~BWj*3x?x@}ca z2q`-o!bl;CD5_FzXn%s778OEORdYC;kH?+Sr_~CcpV!aNPs`=f29Luia(T1^&k{P7 z<`;PW!07nKImRL1)Ir9{k5hKcPp{2J9UQ#(Xe{z@I2?}0BOzqHS+7^CAYrsyb{t=@ z%RKl^fY5K7FN!!`)qHi(f0_upWO7a@N}}ers_M(-GW0_}n>{={%;)nsi5X{ys_;-~pfpU5ZstN?O?X(RxnvT1}s_unY=2N?PD$aghBbMyIDj=U#X zPRt5mw9sm>{-54=Da11m-nXg(4}K6ZF=NPtW%QMl@&mkld6oaz?Q6vU5nzlhV6o^H z@b>_JZx2EWlFM%1m1%j2FU6v`#Frv2Dppmd>U0ML;y8{XI-5}dXLeSg6d4Ak6jKU@ z!6?O*GRDMOTVYWM2>?89)YqNu8>echE+CBQ%w(NNRnQ*(zTh`1IdA{B6)Ubc zH}NxJTux&Y!Z5t#byqjFm@nezr`dWnOS3n@&voVI0i*u&R$}rawYcs161<91n7k3A zqnj}XwARR7DP@#YLaJdb(Z&L*R;ufpzCS7Tn&%fOv%c@n z=QAOsX_`2WV|2m^GNoE|s1x#o#d&igoJsFW`UpoqQ9$`QvMh-8ie8PqCp>%QqN^7Ypqc-^&ro;C3S05M*B%D>_5qrd7yRUFW z)>3aX%F1{2{m%^NkKDd~{xjPQKnooByqwQr{sJ!m02F|LNllk_P12mB^C>wMS#i$J z6|dT;?MO=_3IIt$C{=_IN*MrX4N4iMKnNlRP&$&5NC{fo6#%OuB7_jF^)QH{X#W0( z-QWJrdB1OHEgl~Up=J>M>C|++G@9^;dJSq4^El=)R#%_efvklP^;Oor1E!S3f}fOX z7-ZWHb=_Ch(6lm&=y%`G7xOgBB3q~aIw1}K1O`8*v4@|2YEEaFrtxModwj^#^fr^u z*olecH!{NGKMtzzH+KTDmxn*O+(`G-P@x2AM*+^mwywL=sd;^^+g2`@@zc|MwaT+B zcJ+*=H@Y=r1wT3h5nMJQL(|ti@L3w|HU4rmpdr_801c23&>)YCfxM_)T)*f#Sr+}_ z*c=W`(_FMZFm?jyiemWfZ@b_9?)Mm)mLxGI`ob#hNs^>#ifO=j6h#3pdNpbI*9{~P zA6?(PkoV?fkuk{6Nz4vcfWTBk;4~M0pAd}V>IbL!EXp)Zwwvwa>M=`GhFL?WGir%@ z0Mge~{^q!~D2>1ttd9vDmxG-#UF7jJePvKokK6W=(k(6_B?60dmvpXxur$(0w{$O! zv`9%xmwzOkwtLAf%O~!qSalR=^;Tds%p`4?((5VF$3v^z69vak z@O|rov%(Z(c`aTIzC8$p1;Q|)<553r8QydKBwoD5@FuFMB(Kb>oemX?NO}!i6Qe!= zHrJ=B_zaW9QX9aMDwu?kfJ|ash9~$&cqsZ@5)-bD&WxXKS5LURkMY>hHBz(|&b5}Z zIo%ha5PTGpK0Jr0mEE z-yW8EmfXx;(i-{|&MGz6Ad{E`0|@-V%^z=$@9!O3m;PD`o8vhsE}O-!+JPh?vH3!( z2);C63_x(kY|5K*c$*UIkuP5Tw z9faC2Zp;Tv4mtIdLKL8M0KI0A=dZ`xPYI7hE-bS5;)r~7rrxK@?<|WIPCp%I+RW)n zyw6ry%wuWZKYcmOCt~ZF+Bzn4(5$K(2f_as$6PGA9U7izpHfhN*mSf*B;!mjAi%Md zWYwk_5eld8sVew!Uc=`6W&3U*T7fuAEE*rnXd^c)VowgJpao!Fa0Ee)pSFois zcDPBeMUBc!bu-lU@JryUQaEDKZw@?-inz!A5xw7fBNHb<>o3lkI%pcW-Qw7601)&x zx_MO1qEG_kCazI`d&2_UgGGmwBWt8(T;$XeV zmA^TpH9isgF6*^k)W1JUh0cBK-g(F81bHjhcuxH1fEhtSlKytzzZ1f}bK3F;(w@%7 zbWAXufY0fa`jpuV)%mv>x{L^)l7{8$viH#i+gtvm{Ajcv86g(1#EqJ)p+Ln%T5z;w zt%PyaQ?%#NIEz^*7ky+BrbDbg@9;Nn0Njb;K0kzSU7Ch3giXZZ$%%hXjqbeeAw%6t6 zUhM7=fX7m=_AW#QYerWmc(w8kWmzE@MW>&VFIyTM{HEFgmNOpOKy+vV@rwzv!P@m1 zwn4KPy=cS2_R%p4c{jH%63MJu8{-4&^`>WqS`z2Ig|i2qa_T)UZFBZqQ+hqG219av zMpa3;5oy@Cp?mP>@8s3aMffDnvPa|1sNn$ig8kc=na7w#y16)igD~uWltRMO!>+R+$IZav!d zg=C7@+n;yqO26}S0bXb52}4_w{iN`#v@Xr7yy}XIvIe&Fv%*8)iX>A!UUxZ{(AyC@ z>F%PyeBy8g(uu1zH%D=Q+hMD3jANE>eY@DWhLtuelh#1HyQ7iL69SeWxxWq`=`LrA zSeG3)x4fj-kmgHM$}MX_9u0QqejWcY^T$K<%EqPRqraOGsIg4lZ)v~$?a5&C&f>qB zKYrg<7}hvkc)4FoPK@-UTUUf8xG&KV0BnKojT);TvySV8w9D;nZGnD%ZuBT|{2o|6 znS!iB+TB79G~{HxT>SJKqgT2bWVjCI^tlZVt(CorzA#9|^Veh+QmGqn-TpfB_pzObIEJ| zvTSs}dh{#OJ=5@}U1TBg?jDU8jLWT+URaa*xRBkJ4g(HA_^$+Pu0XaDnVfhEnWK+I z7aVbA9!gzNpJ%HUQdp$Z-H97Oe;+FPX0h0EQ9pO%F)sWS8G%gWY$NG*N?IY8g0| zJcLaV7nW`cf}psJfyGks;f9o`#?#m|d8Qtl`Xz`x4*71}xdaa7G$S2C}i} zlUD@E*98fZ`x4z0&p$J%=yxJdZCiNR;gGd z%J1LENt6)H8i$3!n@_Vx3q@HYn}BaW+T$qpe$)izOYzU^WF};%@?h8CY0ZTQ(fL9{ zkA7JLk+e5UJN;mcWf8>ts)a-Sy~@3^GS)$u-P?>IniK%JV4xv(Yen0tTIHIhT9#}b zIb4y9sJ>Ph+ZBBe}58xnH|gpgU1Fk1Z3^I!-N($>~vzX>b5x_w=^^U(KH zIv-ehedS>uGc@N%;L3smg?D0_fQU*=m-Y5kP2@nZS2rr#^iB-2`Y8&QWj&`&q1D<*K;u!sm%;dP!AVt8qaq z!rTteUSP*V)R^Opado-<$ZRL*ztP4jWnjt3M&6J)$d<4cnPS1oj< z0f7U=Loj-azko{js}6uNvn!CCxYcdWAL&E$TlJu78GPoPHhcVj1NEW1fXua@FHT;0>ey@P zI4UdKy)$CP#w_=Do#bmmrLsw}P|7T@p_EfkWXe2?REXg<$Fnqh8NT|~+liMap#2j6 zDWH-9giRMzZ}0JK$i$L8nv4!LGWT7pfK&Mo)*3)-Ca2H$!zRBWKZ_v>5l$2gsm~-y z{@%t?NQ|oHA62Fa0QJ=Hzm~j5Gr8%izBtl1`Ah>UqpYkagK5w!K))YCehCuJ6HCt=b5aK<~`6 zzPj7>+J`4pU`Xh69>-piv#8Q4EQ89wka`5qe=u=MZpvRCoY;b3;~(x@H@p0?8=l%b z1P-Eit3M5*fU8&pA?JI5`DRbRv|h(2nF85 zxbl5016)5=q9Es8O`9;btNvL8Pi8{E!F+IJzGfd(vj3@YmUQ@)^moVfvmG(KZlCs| zP}YiYQ%NEVl(P+f6Cx&b6d+ZFY1AQnSCp5#qeT*b>(81_S5q=?C5JHlB9-ETA?U~F zvoS(LEgcJW9EeVQJTU){jQPiqxDkxccZUdEN^r@qKeJluf&fv&+aIUo-NUHnXCq2K z@#{YNDje=G%N&?puX1Eu^KScA5kgt>@j*Yx%Z>e?-V6(&1XCw#0$0R-DLgZ9c*mZD zV^haoYh`8m`bp$r5CV+QB~x&rE>=os1WFolJUpS&;VRtT)q6I&qHe@vwE{?95Cc8XJWzZ|TZ#2473dGposXI%zU1~SNozm2wqWRicdvcfCH7_M?_1sK5mf=B>STrmh7O@w z)oJTPUKex?>>JKtR0?YA+AkDUmUWvV8(z*=w^l~4H?a+tu?F7m6yKP|(Z^`Zr4$;) z540QoPM*P=d(IpC1M3;;*NW}pZuzuQmX{ zMMfovc@Q2>0~e>Y0q)&%3T&MYYETj^7~6tu8A-@I8Yi?o2rWm@gfwa;_1M@sQDM|c zsZyR&pnO`ci^xNZI*G>s=HFL1874F|H7f0Hq z7ajR%{*KPtzB9raYjBw0I|?{U4tZLkdVFAZ#FPYKt-LhuGDG307sgmI;hB(k5Ov!7 z!BLa5il9(PfXkHOC47sB`Vl0*nZE#AG}8km53%4ubN_Y1eGbo?^z*2PN&8 zTS&sKOJ%tF&1Zrfxv_l*hY0g@fsv6~VCd@%d=2PYUY zqzNLr_x8$R18~!rTnG!``mOSxCX`K;WU`pag#?HsR+v5s=hhS!SrsDl3|Tb}%Hw4U zgQ{j`Vs~$jTJ-2U)J^*%0h`#QFf{-wG?_&^Wf74xi@MMsL4h#G$I$A1*o?Gvb^`F3euO|_wt-rl=ZHf6y z(qh8Zp%l5HW+~1iRH({)rOWw*$RL1jfg6k@a;cfyTo|&C(Wd_8#A=H)bP0V^sNZLb8vS%NW5x zKtp*Xzw{n)n*p}v(o6oZX=CN5-?K6^iYKNoW9aVAi&DCiT3)cKlTVO3QZ0%Ao5@$Q z)D0(={}Te4NGf3ruA7r7 zOpa>R1XnEqWqigFUsi?eWj+R*{j?xvLa`sf>=ad_HXep_-;{oJU6+?! z2t2cry_P0}mdcEgEnxTqe&XZfUC3Th)L+U0A#bScvJWc;%p%G%@n5JSx~1^aP7y@X z!dqBTN|_(MQ>?rbne$Q!t{)+-Jdv_(z8{AJ%tm2_#VH} z+l$O2BzgV(d)$G8(F_%P9SJ3ttU6;DK#7AkEEkhTnwH#;Cc*BLd7gQJuD`wru0~5D z`Vl1!@n?)D+_%#PNOr)i=BB z?zxWPWPL%h=J>3mGh=kx;{rGVW*6(u%O!w@ABzsBAT6{J$wBLyw__W-`i1fBbD8aY z1Lt57+g(eFJZYf{*_>p6GTEVoEcMIprQGsZS}98>vj!Y8)U^j19dmyzYx$x^NuSYP zHF#M~@F0bsX{FPkIt3D1dtHD35FMc<@6FAfCMilqS~~gYh$fs~B$^eqbm%2^5G!0Y zbKV`nOuIFVT3@Uq^NU?p#m7ovFX(`syh}*4Q$58nOR&AO@7>xacalVA6NNaLgJB4` ztVV>IVCyVQt;VQorktOgvqy6**K6mo`jS4WWwe#z!Ew|b)o!FgWv?BUQFL>Es|Ur# z#CmO7BA>kh2-chtv;2o&3t*aRLWG)v3)-?12>2K22Ez{qQ7x5_LcpO=Jf~Q1K*&|N z52anCj{>&~k+)L9DDdBW`WY+ts;8!vgtg7II|O@Ti+*>&&x`$O&LV61Nt?ROTcNUH zT1W@;A6H6w@DRA-|G8I4CIwl2TBzszN%VgcXb(r0GoucYkYPkjSncLT*&eZ!hmK?a`ns8Se zgYKb0+)3j-;ICUZ-Q8$7(I9x49~t>whf{h(bfJiktm1ZG}G4C8Zm70HS3GnY7zCyWQUr#C;96MM|W5^c=7 zK(8m~Eb!G#x=@s<`x;&>w*YuUVf|1TTj)>vm@M{+nL39pXJQR|!frUPjm+IwZXEVO zSLKBCBAZM`;w`Z?7wT5LwooE7(hjnXLYCXg_qA@oZ1v(yh+>bBYO8VQpmjyFH~^nkZJ@(qs1)GE;; zhJ}*9V@RV)Rx}QlB%pH*u&CvqjNApn%0FD5fgD5hCQhb)FCVrFHe5cBSZi1A)5^9T zscKa4`amX#k4*sPqSHqKUr9HQNAWs#eTPhgWr7)>_Xzrd-Gx+&;$011m3=QvJo?ib z%6KJz&Fp|YKFTq7t){?c#Ab{?z9tr**Wr6c@rPq)_lG0-(CZdWZ>{6J*m?0o-|;;~ zDlQPyh=Upmd91W4u{n7b=JPrxC^uXdnl`dk`wgl=@LlK4*_od}bPP8vs?0VW zD8?OZ3oVX!%i&hv`&1HjWqZnC`7U3$2N1gyL64&Z=j_Qy7E08v2LtOv1%=pt-5G?T z$I&Hb{!1U1j!8fk>?PE2K%e7&w9GC6Jg$HM>14XX$^7F50tl#al;7g!sL}T$fg_*( z472DwRX;b#RG{XkagYLLO5@w?xZ*Qxkaqc$Pdk8Xr7??;X;UZZe-d0~?N5}E?_2r2 zH*{^irED7OG2J}38B|-QSxWSxwF6frM!+P$cl0qoN!msZ`vL_Fh49Jb{Y$qj74R_{ z`O5ftt)J?J|H-TPFzY4s2%=d*_KKnRL8qd21&=)#-nVH{bg{BR%pgHMlgjgNS8)cd zqQY<6U4GHO;#lS<3Sa2<%qBvUCrDKL&0?OU*N#EIEQ}SeCS7s)V&Z{_Ih({P(Yf?o z@fdio5}`OZ%FF(GuzTPTb$ykiA~OZWroN`$bWL0M@7+ol-&<&__}Y@0YGII~q}S)( z*P4BS_ELz@SSLTpy+s`-TqzS4iWQT5Rfiu zaZE3&+UuxXSW-Q27r^|v?;MQTn^p*kXGkUD|H0bpXfmd8d7`Bt{2b({J_^{6;(MpM zSd_`NX#Zg?ybEB7_UV*3y6P*NFIH+_`pC(7G`h+w74e?Oa)6fjB3jS>FIi^CqI9*> zzmp>)J4bOZF9w};+`}VOv4TY4Og)^szB=o^^r_mQYG%;l`%R|U?z|+wmbPd&D-jk? zm!V2@@n-fgDu@fX%C4*qv9nOT;k2z#k7o_rH|$OlR9Tu-@fS7*l(+OsUmF|% zKXUJsd^F&@w;e*-$IWyeW%i=2|C{^a_a2pO?rD$%pY;$Qy!)p!wB*g&re;2kWfw{s z?GYo}>LCN*pz;I5B~!%5|0CIc5uKo(r&GAw-I8^F;h-=4w0%Z4^mjYyqxAa8KP|WT zpHAs#3@JdcK=#g=;Qifn0LoCWWq}+~{|GR4eu?5ZNdHl4sgs>pVIKP6G@%g6%>e>@-AFoK^Vkm`qB6z8`ptmyGnx5N$zA&r4gPud z8A=#f39y{82arR+F z?L}?Fyos^Betr_IgAz03gl2!P$o^>}`uJ&{ zWki^Jxt8B^GL4Cd;_Zlh@n5Rp+>pG_>(;XiJH+|1B!C@MEtmyt3pTaRmhG5+(^AoJ zw(Ee#^UK|{=M=~KF!|G9N5C6qyf&iX0df^&D?NSLPGfbcWLm~X2e zLTCh~6$?Ki3H_1yA=VikHmzm50JEI>8GW5Lm-Yy_oaju*GSm0H=5KKRWFgHr7IlRV zk%S59fY}Gzm*N&$?h)qI3ppIAXs>&1dx1(9@bvgL4>kP9m#*CVX(3N`3{0}GU8&UK z%&9_n+__dOFEon~4;M|+U3V_JcSHZ&LefWyD&H3aJ_VZpDd;YIcym5Pd{HBjRO4AU zM-<2COQjJl694GrT2!<1#9+_=;Z&i!V%^>-Pf^E=NLMg`gylv6dqRA9A0e#-KqO^U zg2TITW-6&&X53X4&JB?OE3nQ&Z(sz5vt#H4wo*#(QKDvcA(Q(flPJb)|EnuzP%2o@ znUriF-Ice_*+wh|BRJpC;$W0)zbd~fwo}W?sxjT;bL^CThUC%P8Wl`9d|LnA5CD%^ zsZ*Q&d{qQJrur){b?rdvMz`37GP5H@@?k)>YIcV3f1_f>g90CKk@Qd$TgYF`Q&JEC zrCa&JuD|6A@AmtA7aoLN#8xE<6=7z+CN`4w znq;TGLP88rX6C|BkWb~ql*7!xU?D9gKVC`uuO6pGTMbeg1+gfHV5$!ba6QQa^12_@ zYx)&dG2HTsdNWHWn)@DoXFDc;z3Ulh#qEuamYoFl`~5T&guj%Pr^V@_f z-uhb6ccDbSa}JnV-7BWEJ7kRkl$-jGzpd!6O}|7;+_(wRwElNGE4fjwoxJn&nVZGU zC&0jVaRgGQ9}wB*@qlBR@;XW-mJinQN1xxb8-Gj`9x^a1>cQv?ddLf`Ai#uuP(4>N z#8F(FS{sWy(v--o>%PQaPDN)|$@Xa<)+h2s!oGCZa8|o;=`PhRax^>D$h|8`u`h0fu?C-;o08 z>fuz~xy9ZL~)ASW7wn6h^nC)CYeKB8ag8xJAU$bpqSrWn^Dqcfj*f z*A4yo$R$pDCX#Q}!-Xf^-*Hr4R=U^VAUET#WpgWqol8;3@-n>nw?m3^j6u&Xg}|#9 zE1OF-NK6Q#_sVYF?3Ey2jK5TAmw7Xx+<~e)%#Lyd)52N;H{v7fA#R-S+ zcq4!z6wIS!zH-@JQym9j4~(p*S_Rh=Rq^bstp{@<|XEOfpE>~lHDw;gS53yzKA^Q+|U{Y&#F zPJGgS>>$+urFAg|fyxMvFD7S%qM54aE1?L0@we492SayQKR&;5@v85jlrr{ntW zIg0!vkL!lq=x)AOV%ioy@;~9=n3%JYN8PrI*}OW*Njzk5cw@EZo+!s zDt>LXKKCbBwIfWDt`Q-@>23VsvB*b<6S@Yp6>GVHuWUm<(iC5EwJQ4xO|7#K?FL_~ z$Cu`N#&A>C0p1?X{GE|NfOvQyaz3X;*fRq?@n3>i7aC}GHiqmY>s^6UP0{ck14mgM z>ja5Zbun;2U{07Vp+}XhD%QceIW_uf}#`!@`hUv#YmZQ_pxe%+e!dI#Anm( zmH=>g%VAXB+(FsLbgP+1PQo{Psx;P|ubwk3lNShK*R{bx2U%>5ze4${LL4ZZ* zWs$tot8;`zMIG7coY)gd@PF97zg=f!IA%Ph*O0LDhmT)oB?DgW(Nm;xkBpnL@ARrUfGZrYrq!{@IW;X)*ro6m+>ti1jq(W{l}FxVr0yVIz@`*Kj>dhJvneAkDi-IDq0!JVH8e|63VGl$M+3xNK^P4 zywxAFqP`i8v#Vy>rU}&rn>cSHCA1nb8BUXhz$8~DY>mpnu7aqbh(3gMMHmsF;{c-8 z_^te^0nQw*ve)LGNlgBzV;(35F#IZ5w$RIdzqJO_bT2IUZ5w$bHu7Ier<;5bs%g)Q zu%BG^!BVDI5R?NpkL)L`XC&LIpP5K2N>k6;v?rn+KT=xLF89RLuOB5PH;umlqhfyK zte+gbNpwBT9h>LhDRH}?$z6wj`!ldy_7>Rd-j)7Ku@}CPlN{m9BSp?PdK6Rag+oQt zrPHNt<9R_iM6I(i1vZ;1-;%VnliT*!D&udn&l8n;$;Q3hi1`p;G<|acP1eGcM6oAO!pZ>e9cx8!j$nTh0}d!SR?E02aEjii&!CZsH8aywEG-v;C{EeQqjRjgdfWd zEvp1>$*fT@9N~-+@Tl3mS(WTkq`EsKG_|K z1G7`yIjA)Ps$SNMwbJAv#ycK|pmlwELW{Mc8-Xu<%RVH5$cRYDT57wGu(=3@SR35d z{`}QXuH|syA=~6j4UozJ*i<%I^DU5#D!cA~Q2;7Qw@FJS0am_SrL+Iuje^4XEoTi3EsRifkO&%p%u zlhE6r^q92bgPvpe1et;RNAC}Zj%SwfK%h(?-b83agA6}j#;O^I!&rmdLh1ucpL(3C z*SHcy-{>ro<$aAK<%{1N*Qf5jZE3%bL>p->h!sOv>SQ6N8g!1uI)7xnDQ$875KQZB zVa`xf3APkDbnqkZU(h1p*tmvCa^GC5S)%gT2J-k2X}`&e)Sw%C0ii_ijzT3}KKwm? z(-%>9zf-@zF=M2;eZiU9)J8MH_TmO%3I?{jvq4wng_aheNC48yTgn2Rzw~-W|FoGq zTaw?tpTS1@#YjZ8>u4M}Ha_b_Ufy5KjNYSrOCzGU zr^$_l2jv~*Ee(#GJ}rXgN%=YfY9ZX3$(5`|tk*M3GwV)wyMmX3w0#Gbj9N0R^tO07 z!9c&pVT2^ZBGsJsb}%?RPy7D0$BX-HMRMeMO*ob{(VK)+g|f1OgmB* zMEuj)+8}6q{o*XCbT3d)G-yF2jk zUAhUS1w?~6M_S_?xE%}Z)1|W{MxCV#ffr14$a^egukhl>uC|GHk`N|4U|Ud`5CYzw z`2&v(A9I|qb}v3}u6my36Pte;HcTHpYuqZXdOw29=1hGD-8pQi01J zCj0rukP#Y$N}TJ*KekEf{%+y%;M=0Z!N}?M#w_U!0#osf;F!da>xglSnq;u!=AL~e z?uTV@g~7|y`;Qx)r1p~1pZLy0v_+gE73qT{6{S9>#3!U+UkrLOueD&iWW+T# zRum=>tT_dqsUvRs9yQ*9$Vc;bVo-S5$$K@!Da)5GbEW5cwxaOGsj-Xn3Ddl>1lBcs~#Sm>?KNfLiYCKNCz&2R6t2cp9L7BDxmXhlVw zvJM3~(_+w-|ZctzOyz>x~=5V;GQ8M|1LCfYm>$uOL|VHVs=qkZU>fN{6pV=uK4 zdp(fC?+yD$fvcpOLo^&vbF?mK11%vv{h+8X_%uv`yBBQkxbGVf@YsFybbNX$EgA7( z+WMa_(2$2lO5vzkS==|fk0eZ!6DHdh##dSr$b*mud%u9IeLrJG>BQwrR0fbyJZ7rX zt5eI(`>$=`0dMurH`|qsF%@V0+Hd9~IefOB4m_VO?X%A~j?6F{i_>eFg7Y7&4pVod@SM08EKyd3XuD>@fb zNzqbNTqL+9#i#8-9s#B{WrU05)F>)TGDb3@f64nr2Vud(X`_QNh9Uci>SneLC&16V$brwx5NMy%9cg^ZM zj}p^q9)3C=s<~(>xIQ#gu3C3m?)Fqqe}`XD?=WM;@xm?(^4GBwX)hp8MQ`k0rYu_c z>w{fHK$8JSAJC1wPM43a?jB4#CH9YK4?XXeYPN(A1oK?%O~{8mujf zUpoA6;K@?F2uI=LR)(=-ZUmPkxw1xhIzg;nIN^F;+9H+iiWP_-+^X2IV?*CoXecYOc7L zh{=fKCQ2#k7=y4iND|0=P-7G#>kT**#Pfpnw_x+Y=kq;ru+&tyTB$%Ll=?gEM8GfbGcgjo8b00LI1o zuL`x^9awhs?|6iq+&KqRo6V@GHZ56oXW(@h9t}Ai^zn;!UWzu_i3i*D4yjxde<1`u zr~$|qdX=~2(YWAHUe+?rH!QfeIkS;V8`rnq==2_$4Fqgy%y`Ui1E`1J?L9;=fTbcd z2{bbp&!S@PmKQUFPIByVf?p+Hs~X5^^n~FuG3(qq^$j_m=`oRVaezM7y!(mO_g6Ef zdjRfCLFz=qF}L>rbsJYo$z7cBX%X0F~%V-jGR zD9NhNtv_+q;xJV>v89^x!M!Gr>f@dZo(ZY^PqpC)No?zRspn+;m`YOSi61SD*kFka zN~~pOrD^>-iJNcRSAsnQ_7xUBh|aI_WO5W2Pkh~@_D*DpZR|M!h|<|v^h-cC+uqrVq$RM>Vl6aEmiTzRB;!{5)u-aV4RWpLb9_{8_pP}TT&}%qyc|FXCIa4)q0JVr$`_AUrV3h47}dh$_WHq z=m4J|g4S*z29EkPOdBLAWGKju0m~#&ROGf8@xv2)IX1MB4k^;9{heyDI5gny^JBbC zr|q0~@v(J5&98kos|JsrkTGAjsxqxFV?1q;vm3_H%=CW)(m28u?kV`n-*p;y+iw1x&$d+t z-#DhRb`7QMUtu@44K;^;6j8dZckNq16MzHu94|8(Y%;dxIiH43PMf##roxVZ+ZnPm!1$9!wyVRp z{v3UhLJr86Bx%azMm`LzCgFy^TXWtZ)#EYm7kz9-L%yeH#q)>A6Y=e=N@kQ9Fkjcm2JU5N^xe&5=IgvwFhDJ`2V;7DMM5D=FkCVT1XLxemmFUrV*E&y-mP03y%^95 z6Oa^K3KH&IbB~e^(BPJ(U?gcUTo7PK-M_p8()GHROf{T-O1_>PUrreOkRm)YsMF>C z1v(+eFg-tbb2^yHsim$WSlUjQ85r}x&Q|5G4mPGJ@i+!?b#`G#jtd`PP7$>1odfk< zJ6qJ9vf8z*arBuR4yi6{G3hHh6h;<$bQN{8gcWo=beHcHA^wsIU^3hMGDG*qR?*34 zuT%oQsL=O<`vTmiV-JMfx@Th@km8=4s~LpmYTpYI3LyiZM6}t;%hIZ##;WAVIxA&| z=t1Sl8*99j+ishOt6eOY)7!|sK85fz4`dxhX5v+cU2Bm|xTzWx_?Hh^Y9wv&8JRfx zMl>hL=1mqv*RTMd*Y6zMB7?@!K?NzWfi{FbQx+@_{c|LnUPXPfM<}=S`L+xWx7+}; z)t67FDqlzbEzUA;I-&NoEePiXd)W*1dVmL%*gY+IWU7-*bDE%~W=b&@nr~$N;W`?+e2Q`re1K5m@W51xqG=9t?)c-KkWBy z9nOi*S-)bUSNdl+zE>s?R$A85pJgUzTE`uxCw+3)&}+eYco})pQgBz#I(lUMc8jv# z;LmuS%0eAC!Y@H@rk-105#_jSoyvs3G6<&R;HD1NNCUDF#b^f0eh6q8&J?lL5lvvz z4)>-AwH_g1lFdKqAQ^TQx4jAP?Rft zqY8!l#TaPOF>{k%DxuOUKsvJY$w{?-L#BP{pTYc8an_VKyHFMn69`o*k8Q9f4JT0p znmV!ZslyH=rNnOVnZcGZ=Sv|CJsT*bP-Obq4Tt07pwJW8_v&;n{TaHA zfyH+bHbKIzWxSmVYI$C~mV?RWsZ=9FeQ)YqyWg&E0o#8!t#~-$sFO}Ths@0sfE^3D zth_9Sk$U1bzbv-8q^z=ZB1}`VzBI+KCJB~JOzG#GUz;Dz!B>p9Y}iTX3SAwP%tpt- z(C|gnr*^W%aC`q9x{B_lZ8+=BnD}K}O8Gj?=P}dMAK9p~K-iwdW9**9x$npUGd`7fr2d}i=DEntDgh#<&{vEt9Z<G%> zQ7$z9ezOYTsLz@}<9Qk$C#atELtVrRL+SE+rkNSfg=SwCtF0e(^Mh~f#?9yP5)b5! zotE>%M&@D@yZa`+YwyhK?zJ+RIcw=+TYSb7&wrDjqoFTv3~FtV_Ye7Hsps@yQ8i@v zpq@A_ZMM;Qs;k%TKZx9$`~+2c5WrxT{>xkcm5v0AUQj3~Bbfkx&QwsM`MaPV`uu>P z)jJs6O9W9r1fNaEKWr-?`LhlVW+rqfS?0mv-$Qxk!EcjuwY9X!irC(m*LCb{C zu=kjGbGIMncg#%>G6!0J2A){2#QsJ2=$p&I(Z}RxT26T4hPH<*{cX%+TDvRnOOx^!b?)9z z6{|FVVU&_Orr+VarXSc2#U*MPl_N$AM~A=|rIN7z8Qgq6qo7&r2}I4sz|a@3+UR$- z>B;nAJ-y|8R@OrEivb0D;7N_CR1uqAvg_P{>K|D<_huB|vPIgWC`#{qGn)6VpMmK90+G>ai82v3zkI z7CpigbPH(=*hf^;#&4O6Fe81HOTq-^4XAiy{)DB5L1F}2M)h}YV5Kt|C0zWx|9lHu*FM%0i;tzMB~^rA0Zn02+`jd^w*q(BY&9AHoPZhR7c`F_F#MPu9MP7_PmYJ?=m zM&tpSz?Dmvo4h=k5uYPY=|Cec=CxIr=;`Ts*BzkY$ZD9Z#tLipPlzON?jLd&_s+Su z?kh3-PGk`SetR4G2bWfkQHq#>{x!6@0fYFA_|;#GLdl7UBtQKDXz>XjSB|J9}9 z%fdlg!K}IBG4Wi(uSrPqj#c$O;I-R6TWUC6EPcoPUi&h{I&)jb8StWq6GxJ)EN0Nt zVKZU`uu6u}aVsjKl0e5<8NQAGGp{Wb%w$1^>{eVYw~k$?NOY&(%p=kF!v=o=$jiGq_pdCneO z`2qw3C_L>_;1y9KBZZ9H3r`>6EF)D%H)&jlIu1AW7nXKzx$X`hA&II2bBteK@Ac1p zRD!`18ezqR&x8C1c>5~f7^Xw*E13h&#$G}HMg)RP^3 z>;6LFsAoM@EtS}*l;eE(@?$WY!a8YbMXsrzbpNy^KK*-!q*4Zjrx8Pl{_Pb5@TgLan6l77wD z1-G6t3FpGVArMS5>h1}`YJ1>H+IM{M$7_SM~nfh=?h8iW?s*j_*p;Y}`RuM)I2({- z@z8lz>-Y2iml;DcZbgQ!2^!NrAz{p*{I??id|pl{^85K??r{P}stCjP`l_I5_6ftK zwe5~(aYkF+i>zb(_93#E>R=&vnao%G%bw)2mz5qBy|qDpL2551$fG&gRr5Oy63vAd zas%C8X;EW^$|l#ifoK<96U7Y-kE0JXlSLBQ-+rTSzbl&~k@o@O>zJmN>J4qZvx7Fe zm^d$2ZKN7*zC`;A>oYSR^Sk>&S4IIEA8&J7vfwWYG=XAxoBbv? zHr7^mau+dl=zqQ#Sib&z^tXCAuZ4e2Z;A?X2tVmC{ z%F8{b<8nNa_bRzaX!Vj5Qo~9J3Q38GD3^;z)I;D!i0vf2o}CvZ3DhJY8i#Fg4RlEg z{jnKSonGCuIj3yx7b$+;@7^0udb%}2=B$DFQG2uN_7^v{k7%{DNPd=)enhe$(EM{r z@660@$elO>ANb3NuJ;C<_TkwQ2$Zn{UA6iuU#e8SM%h)WIzVI_;PuN(fYI;vL~)LQ zPo3p>efp+{(pGS_r(2v1iolH^Ob2TrJL^ZJeUoq_gx#r{t{?E`U+;pq_k`IKdu6-% z`@2Ttp<^LC)%m*SQsiW$#_?ehIh;_gJ2yg-#29-&K1Aylkz5%t1*Q$0qb%%#i3obR zqPHsDY~hr;Rm|trz&H~=Y!~Dqr%T!CPwMAGeqXS^AivrHklxAAcqOX;Lbi+YJ3g)9 zIKX}y3LdDl;uAj`SAsDFhf5)0CRs9uSbdgg2DhI&Ar6H@$d`-M)DBU)Hfx!P7P;G; z70y4~>wgD-V4U^$VEq&6UF>|WUvDkN%H;R~?hy-icsVn@l_BHmWuC_T)QvdBE<%_% zUGe@lSeO0`H|DL%Rw43$(ppuzZZ?UIiL(9e`eM_#lWmTnHRIp}z=hzqDUYKh<7?6S zg(YweNY>HNZ5Ki7&o0qISg^mY>ci8h*Q36)CfS-#J`guD-3`diC&%5s1)b#O$>D`!D zdaGPb5L?OdR0%L|#0!(Y+H;M~{S&iQZ==<~+{~*TffAa>cL(_g1m5#kE$@`|{k1+7 zy6ib_>)3nimMNf1W^@HJ^O+(YyShu-j`gIX*@@Oq=1E>lAZcNI{T^2|!JWTCj5gvg)5{Dp`%-M4Y0~mjUyqe-RSaHQok~h1Rboz}HS(Y3Y)hd)?^vSxZ zZlUkA&o}DwO4G$JV|`_3n+F}6PKEfZteV?U%7!gwEGzW;Cfa6Z_Owi0BXZLw`PkoCv*D%8>{MG- z9hYVx;YFT{a{$U24b9EF%{?(a6Cro&%q>8n8_c{j*EAu>C`}cY1mBV0l}~C->s2lY zNK%0oAX}yl_&|};ts#C!BYpYy@M2%V*g>PnXA1i~xdI)@d2bf{4uW@1QUX2&JPsg9 zCx@djGI)4yQHdlJqKgCTmZRdR^z5Ry&*v2_ZKv8VQ+=Mc-LH{|p!N-G-Z~C2xc&26!wp+5bQgFm^)b+#S-^a}fht4$!0bT!j@B2#oYo z1v&v>?O)t~tZxG~wS1s=({i+1MEafg-*4ozICmPB z0H}FxO&2S124E{=TB)mStiBn(SV}XsMcz6?ne~6q9d%FD02Kj2C%2Oflpbv6Rl3o0 z2~p#aoPcriy|vDyC8sr-gnCvIDyc&d1Cfv&FV2< zi?DP3oND1Hz5OoO@_Y*d`0v-7JbQE zIjbR+t=@3m3)mKdN0T8Q4|KW0QF6ROJkkJIeQWy5HW|iqDlSS&6c3Tsub$ejQrAUj z>SM1gewzDkvlb?{9Hi)Fo!@dQ-y>Pfe)Y$2t!zTmOM^ZCn(_yi#?Zwcf!zwj=c%cV7H#gZ@s!@X^oiW z?C*bzN!m)u)dR7r_hFyrA_VP}1v;h< z`clqwKJMgeibNi@aL#qJJm1@n&@y{ONB7psMPs91MSf1pEZ2w+YS?lT=o<<~%2lsb z`3jx)RR0UC5kI&)r9Hj@&>r+N9nZT$$c^JCI09RLj`2MohWcL1_|<;lvu!FAfC9Kx z;ZbO}2!^iwJn%+;=x-B#Gu{6cm%yVl2*kzj;IzIHNwRyd#T9DPvbQp$>V`qt0Lw*o z^ZGgv2gt_VQXoWe#}bTHt*OH>5)UKSrUcpd^e$}Y_2(Y}ab!pqZ2c^@;Md+RJYp?(L z6oh>vFD<3Jz0f(QBN04eA;A$GU!qUCa5&4W{mcHdjAVFvk9*z{Q@@d^+U{rhbLM?F zO!LShKLtn^*?r&JR(IsQ-7fmrT9)m00RRaiyGOR)sd8yM zs%3r3#>Uuk`rU_=E(p|$d5zi)XVcTu)h`+*o@_|lL8-*i&fk4$dK0gvflq;JD9rKT zqQEKc(=iHE9It(0Z#ya5!_*aOsjqld8j78EET7!2kzlPgG-_T$<+oV2MC;*!>PKyP zluW!W<5@*~5gKYaUE$V?20BSC2pHq(fTK_92kBMLpfE>DWyb9NH#d}Ig$*Y*uS{Eq z<|oqVsanf>Cnj7wcaQCJ{V{oEnVQ(GJEVe2N?@3vob{Rf+sxZsilrIa* zq`ZM3pH1a1?@+$?)JROsH8rg12wH=slFKxXbc@*Ob9&MG#OwByzh9@{0H&7rUZBv_ zbftKaa$j7bT+f?!=bI{-)UYR3(z{-S2e#-lxdCC+7?5`VOyzC3*@cC1)bO;jJ65`jX?K%hk# zV;52oyjnxaeA8lXymK%CWVFavn;2MxuWA<}c)eKg(uYY4=j<9@Hc042q#C&dJBF|) zBBBTB<-lCxdU^WWE5htZt&0W+dMd(0E1oeE{j-hs=^yXXZ21mdeqQ;%T9Lp!ca*4J z=t680mLW|5f4!~Fi|r_ zq;x$cC9IqT!#sL=W)Y9kXo*5g*{CKRMjA`8bHpsyYup0krw@gSp4+s=+OG1Rlqp0o ziewqJ^3ktSpRI-JR?Khm`49hdS-7y>fE@@y-v1H1yg0i>1xonc`wNt#3DIUeBY}Py z`wj=z#Rv&v-^uepc zJr#F}7#tNVuxFzqcFXTY%+~uq!4`J2MG``iM#pY6v_|gVLC6GD=L~;C?^-n!a{|2` zzsQ&0K}^Ix>1k`5bEIXED5=6+sE9D2wFVC@>MWR6n9?>zC=p__q@>4eq~bBtfv0Ta zv7IoDN!9xICIwZlEdGYZrMG$Cd3E$Jku`Wt!d^;W>dpw-Nb#(49p4-gUsn(N@hyMX zS{Q()RF+#Gn)G&P9)4+5JA@ZiBs}1(7#{+&j4=>2h+!LA1*qH{RGv^iuBJsJNQoki zC6UQ+ARvoKg{!NXv^(Q9w7^6)5=NAoJfv_e+cqATAG9*S%#h+)ozw)m1wTcO&FNfA z{Kix+yYz8#Y|SD0>)!77wRqy2Bw4p)v({ z8uVs4D}MaP$Dm2;&Ee-6TT#DN?Yblwgg2IFa4kfJ=7d;-$b9X}WF0KEX!*9C{pSk3 zLjc^58TtF2@?e?N!CC+efTFpaX!0sg#5@}-GBRy5tKK=5l}x9{lBL%*$7 zgA*^TB+;ZJXiaWQHHtjpaOJc`hcUe z*|qX2Jy#vJsh@xQ`D^o`=WrX1dn=)_za{b^^yRHcXqdbMZ&MWiiw=)hwkS8fGgQ*o zt9SYXe`fr7Y_@O$-0ST6u5(cS^U{;#be?;0iu0)bozICawh&))ha_#or{DVEfZ QC-7bnLCX+VrC}5CAEF@)NB{r; diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/multiFilters2.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/multiFilters2.png index d2eb264496e6853f16b18cc244345cbb3624738e..0be3877ff9a6989193d571edf30ad79c555fe621 100644 GIT binary patch literal 149162 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 A#Q*>R diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/multiFilters2_sphereAsMesh.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/multiFilters2_sphereAsMesh.png deleted file mode 100644 index d1ef58f0220f335b6c5596f5628007c7046ae9e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90090 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 F{vVF7pG5!w diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/secondFilter.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/secondFilter.png index 8a6df91e44f57fb15289da8a57ffff35895298a3..7f74731818851466757827902dd286c23735f348 100644 GIT binary patch literal 149081 zcmeEt^;269^d(TBI0T2Hfg&yL6fZ%F7Ax+>8yteW1TTf+PN7JVBEg|Zp%gC=Bms(h zaJQwO@9zE!`^#qLO)|-wH<|nHz2}^J&x?7hp+tyBi-(4WM)*bYA#q4#*u;b1&| z^Hy+J?(q%RRoT!34UMSp-+})5CDAi9G$yn+AUR#1oV||y>i2VQ^vyu4gOtpR#T~2q zH@-qYF6lQ0E@=oZxo?B6EoI@vy=e;FLQFk;va*bP@3p~o#=vZrQdrdv?9q8l3GbLcMGArpA!7V~M6!h(00x5}PfYen z{Qs92`~R`{f0Y-<|5AA+JbcyV(&ZlduvK|H{U>c{bxC6PY7}JzUNY+PibJ&ZnpW;( zi$C@bz@tKz$DF>j>*YO+J7Da3I5<2oTmGEcjgCJ4 z5UdC?(gUFtoXuqV6ZFq!%nhUQo#3~l9n#;8HeDfH>0FzQ4>Zm^yKTCUaRZM@dChBT z%vYZC2K0(T5V^t?d>;4dmV6q9N(+S9}1n5-Tyj7g) z{{2lvX61~IRL4|0>nZ&;QOJ5wXkkISWJjucVn9Rv!XQ272LiMMaU|Q+J-=)u-(uOaGeGe;I>FPG9cqPuoC+_mQ(&s7vi0^+q{N21g@mcSP zk5tM^%9I~2uYm69(PPt_?Z1HK2Wxf)94rUXpG$OG3|#%D*vHbd=0lmOqcnXq5eJ_O z^<7NC=lli$^9@lC3cpd40XtwF51 zwtc2{Q=W_u?N)G_FL#9Lwd@PQznAoV0^+K}e%#Ekus-{6u_!@F)!cP>SLL7MO_*5I z=!|&hWIEHBO6q=F(k?l-Z9ky7!|r^a9O#K~HU{%HrQ>r?@AM22I)7*+)2RCmIa)Ya zY3oAqJkP`Y2NdRURUc$NGTz>-F9oaQO9w$TLv_S|8q2YI%mp5-1f8ki&`N#+QHM_6 zjfQ(Rf$^)eo=IvPsQXeqU3e<;5EFlP>9?9>PW5o>)t0sAzrLQyIETO0GLi>drM%ZSAW!3WgX)lOR9T)%N6+=rjXajfPDbw6mK(r{@v=oYU;d-v zuGO;^O3mZ!fRNnx1nyZNF+p#S%@mnxcmGN9SDJrgt1hU-!pl5vnt9MlQdmA(bO z?*!k9%Xmfl!aTAAzj)#`cDUF(i~9y*#~xM7F6r!juCa@PJ~l3F&6zLR8PPZS`mr|A$!|ZbfRvt-*q&3MscJN6D)zXd2P_X}c4H{_X``v5CXZP4` zzs(vgK!0jeI1d)agghnBtNKbd#Cg~Kj3(U6IL+GWnML&Kaz|HmAK7CtSHxHJhidNkHpcF)uadfc z@E$rVeZIP&a4^LhId|E=a_8y3xl>Easyq+68T8Qkt#+L4vaf&Td)lIQa0b7fLUMVI zovxbflZ8jvf4SgGB}>>^Uws;OM?c#|-3JRMx7Y}57ORHr)COv#La^rt3p|=;6%5fq zX>R!dB>qUpXg2QXRm1nLwU*vWL}yoT#dS*l?Wuc90}O!WLAE4lc3Ujd(03s8SkPm* z5ncC}HCuO2~>-Yk>;DvkgDIM+J^tmuC*8hf3;mP&Ac)xW>g|t2&~>nVf!l3 zM#|y;uG6S%^Tm0|9h_^g{G>vXrA6^9x&_GI(i{+gT3c1KA^ z4?l&)6N97cPWI8Ys%^EomlJ_j?!lQi#vNU24tvO@+g~`?V?R&iGCq74Y!5j4NtGXb zFYX~umsmUx(#_uSzM0sUx$jlIb$%okN6f4G1Lk+@LtVFKH;YL-Nh=gR5>Yo-7iKhS zH@y^=CRpp|lH`ZEoSxM`lWZpapAX$`noX6d73--o_323~(%*9>;O zMh9?u;&oQehgW_Wmv$BjkMMUthWMwOyeSz_{M`~}-4t-p8{V+HBe0YprFQ)VB4~V4 z0Qi$5UhhkLvU=}qD(PL9FLl9qd|DCF3u*K_QJB|5J_SS_9mks6 zCA!)&u9~UyM=N3Y1vyQwwH!$DiMCz;l@^hJNQ=(G_Ji-o7#Ehhm}A)~fMK7YuE{~Y zE-o(LnUB6aLic6CA>E`qu_@g|75e**)ATvpMUAG@?)?PF+v_Mv)8W(eMZNDH;WeGt zI|uhDyDH&iptcbL4FkD=7FLnjwL_h30Oy?c$GSsy=svlcnaJl-dy8B&gogHtkG`qSoIxS-E<2Met1lXS-tMa784#~;Pf{@3`r%T*Sq|T$z4Z`YK%SU7LQDm zn(dtIevnw^YMF76F>;jbpi?fmNd|w>6tiX}+TWMznfaXTp|eB8f#XmuK0C_hX~%9{ zi?+YNgZs}c{VT!wE6{l-@uDy*qUP+TGJ}6H@ZRO%O^ZMn>Y`RODFP$tz|Jn!y(Z>@ zA?z3cWcg+jUy`)-kf6*pwIIPWT1ejQy_L-jorzxX^<;jhug4gd z1^Sk|F9|L`p{-d{eP&u+0}Ng4_ff}yx+L>ssPmZcf}-*RgD$RuJFaSi_3rUPWbO6C z?hIb<_l6w(4iaCC=GbJYF8k%ZpjR4|-PVC8GhYmR+CFAZ>*L~i`XV?gx5YMZSrR?C z$$Cz5(6>iN*OcZR<4e{#iV96sPL>NQe-XSV4!K-($`qp8l#C&3lNLU8_8)uc)uuUP z$&TFoYCp_{G#^6lQ_zf=j=c1`(3H75P4Bv0SAsx@iH)nKzkSxuh^wd&neIm-2FgSr zUvAc)JaXd|&gGHq5xdhl^MD)P`;^*+NS;N!BvftlE^mysv-7EjnRcWw8viJLwkv6>$L(Z_|VO{ zL_6@)0AQjcA#!oV|1r_^wvxOzXxkCy{-{m2s1Lyc=g#y!ta-jxatxD zcrNar_g}y_pFgeKClv4pa27voBA3m6p$_8X9iX$3r3z~S(!tl;UolAmF6tdnsPYl~ zt%}n#K(wA0!l)`)p)_d^HFNitOcUpkqOpg_+{!#0j%|(MoZbu_bY1U!CNFO!-5SXj z?PKLaYcY1>PFpZ?f)eO;{8961QgP8t@DOY_#;skleer^kV)rH>?|`;+y!wYlDYe6l zi^qLOlA`pzzec$F6+Ybmz{cGNt;H%x>su=e0wXVJcNj$avpG{^NH2i_bgY0ObbU*g@ ztE>-0#qnJbwzjIKFc|;$ES{m`ol1ReRpX}K<-_Z<-MgKZ>fJ958Q6l z-k6zODf5$02jJjDQYF!!DDKbYD)Qf$9rPEjI*$paFYMvlF2cYE0=eb`dLt`l@X0o| z;tnNSTAe2F%|H4VXMSsi$a1Vall@|{dvz{Guc{Yil7-(O>02i^bw%)YJ`BI3;7rX6NX6&Dzm$*xARI zeL^GvZ4&(5=wX=@$?%3oZ!x;zgc!zAJBY{0>RQ&Da!n z=wkk8mUul)#ZR6;&%*r2%6-yrzU#QBELYQF^u4^T?uB}9w>JNwp5cQ~FC9qkm!I2H z?d2vITvW^~JO*N~ek|x}$UIA77!AZHU)94^fpP{F&8PVpG@a?DW9N)r4DUHNGMKLv z2gC9qD^1b=-F9ktzbl#;7NLM#ZiG5_R+hv2uTUiN8bgYUk0>1QYuTA+m?`A%#*sPO zqR~rjgITV3Ug z(edy*B_MM!odIVNPG5TsX6Z+n*qdnt6|_l+NTXii6rTTB+hAhz)=S{ytmcu7s55IXmNsQtpyyzZvop$MHY<{Y)rwL?F#gxq zmK1cP@2Dsm+i;->|S0jJ^5M zN0fx^;!?t(BPc;f)OUJp%!}*k;V)0bom+iiJ{>8uZc)zwI z;%2UR`Z>Bg8l%07i%VSz^m3{mZN52aczQB8}8wB_x~qw4b3cjFF

)yzwOMLuv%P}?YX@TefAdh&=MXMbNa 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

    ^2Y>$l+eQ}eugku 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

    &?c^X1&qar-Wnx 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 HyU_mwPRK1F diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/secondFilter_modified.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/secondFilter_modified.png index 8ca8640fc3a676c576c1fe03fd1e0eb6d34694b1..2390bd36ec0f92a4c08ceaf42b9746a787953e71 100644 GIT binary patch literal 148935 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

    6xW2XqG=v3~WfLv^14 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 Di0#$k diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/secondFilter_sphereAsMesh.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/secondFilter_sphereAsMesh.png deleted file mode 100644 index ebf9fb1476db2f189758034bd1de622b12311299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90457 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 PB#@!*Ra^zu{=t6$rhM-4 diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/test.usda b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/test.usda index 76b93df0d9..680ee142f0 100644 --- a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/test.usda +++ b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/test.usda @@ -28,25 +28,23 @@ def Scope "World" token[] xformOpOrder = ["xformOp:translate"] } - def Cone "Cone" ( + def Cube "BlueCube" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { - token axis = "Y" - double height = 1.2 rel material:binding = color3f[] primvars:displayColor = [(0.0436, 0.1311, 0.3634)] - double radius = 0.6 + double size = 1.2 double3 xformOp:translate = (-3.85, 0.65, 3.85) token[] xformOpOrder = ["xformOp:translate"] } - def Sphere "LargeSphere" ( + def Cube "LargeCube" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { rel material:binding = - double radius = 2 + double size = 4 double3 xformOp:translate = (0, 2, 0) token[] xformOpOrder = ["xformOp:translate"] } @@ -142,6 +140,9 @@ def Scope "Render" def RenderSettings "RenderSettings" { token outputs:ri:displayFilters.connect = + float ri:Ri:PixelVariance = 0.0 + int ri:hider:minsamples = 32 + int ri:hider:maxsamples = 32 } def PxrColorTransformDisplayFilter "DisplayFilter1" diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewIntegratorEdits/baseline/directLighting.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewIntegratorEdits/baseline/directLighting.png index 55d93e8cc836704708166403f316f1158c8fe29b..9950e18f564929ea467e9b60fffe59dae5b56fb5 100644 GIT binary patch literal 47238 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 W6Qt%J9=->_T?#U)kV>hKf&UM9isjn? literal 50121 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 VRi{m}dkO*`RYeVj8aa!P{{xntrQQGl diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewIntegratorEdits/baseline/directLighting_sphereAsMesh.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewIntegratorEdits/baseline/directLighting_sphereAsMesh.png index bbe3d236435ea22ff508cede837c579f9dd39b51..b5ca5338c8771d4de532e3311905a31f1b750b79 100644 GIT binary patch literal 47318 zcmeFZRa{$L^fnlrqM>MUD_&Y!+$Bg`q)?m!#U%uHFBG@p#VHg@fdqF6P~6>u75AWl zqLcUk&CJDI%v{dRcX5*6+1dMKpS9M0*0a`G`$T(^b#BWtVS^xm14*HD1agfG|DX7@J#?;@3%^4R{lE2}M=%C6^anEZFJ0N2W^>EgbBaTL%9`8D+4Ht)-z1Ca;v;5@A0yhlnvu#-oHcknL& zWe369(=~yPU(SyfHw6zB51n3*sqmAHppzU@5OGb(uFnOX%1HF(@^!oiyu`TU1^}+P0l^iXvzrY;Rft_9K$I3{FxEBZ8b+-~ z&<^|&{ur?ubVbibW*z`1KCZpzgvy1H|97dsVVhYMt^WVl2sv*S zvRe(&|M7(NF6p-xjc5Zn>H42>F_G{i4E&dp|M|n#NXeG}`{e)O9AB~~J+fy1k2GJh z76f(u{?AdIu%e+Nd(aq$B*VsM(Jo6Jc@2&gR^l#7X+DyB;)Q`0ur}!NYs>pOL#f7~ z#~2N1?!igRjM+>;bPwy88?>&93UF3XIlJuxOPTD|2d8Qof?1yy-F;D_dL&m@ywGTj z5mY`xJS%n%7ec?F^Bm0jqMAf&S1f6?+erdnw#EnNw`zx1p#x8M)Z!3frp z{RxPSjC_TCu|mcTHDa9=o)eUH|JOr}4FHuVf-KLoBZIkkhYI*GKD)SlVcE2L0`k$c zL{EFLnvc=Y@(gyi@PA(&2tl+zp8Vw`Wt^8Bt0oezi--i0k+qSIk`=sGqWgo(1g0eW zaYcj4QoTq<#)27K#siHT=}UB!~Iy$pU9y>uoO`0WH zttBcW3XUhl)qkdh)SO8G4!JgpKU#>JWzFDU@R*aW!o$)a?R9_1%!s(DSV>{j$3773WVfz=ErlIgb+) z=zF_7-$Eh3H~;e4LUp)5L<65tkkZVmsutx_%anuFm9}0e;Ey4wd`-cUF3gj&XY&qd zqaFSAA*HBl*03zjEK7^GD5cuKb5r^CHfQ_8qyfrJZ5+$sPFIu?y>_W=5vUDPnY%S; zLp56Y#j_OVv8?M!($krB5jvpfP7|}+h6qWUgy-Ra72YEKY=>O80)oe6U=>6{!y2xk ztA;iJn84T3P{U2bEN^-c5#%5GoUssbb3vgohYm!USEDN@t&U8J;koV^U zF<9Z7gDax^6aom{B0uu+S$8G79k@l1si2&1XzM8;x|+R!Z>&zB_dEJi%Rt7uNSmiN z8Y2}HH~_<}cCJ7?8hK}a zQR-GafCco$`#|b4K5&#)G%)o1C)v$()|wQvJ^0A{2Xw;s8-M)=pD{@lmC=GXw zhK)o{;=`MN$8>os|KU0#TC&?Ex@A|4lGp1S2{n>)R!?5(zgo@FwPfHJFs?WGi&?fTz^%0w8>;%h`hR`7;)80DSSKFavv8n%>T29HVKM80&B zWoJ#cx?}ObbZU3KldH&Mx?Sw~&n5kbla3+vkUXh?n^ABDchOk^P4PpStC%zE(K94 zXAa|5e1`*SFf>Cf@@@Eb8@*j4in^|1p{rny|LCayB53^=Jn%epDNp8l6t6)F?Jxhs z4W-5U`;+@CnZTW#axMqW!$tQuM^;y`xq7{5Hw|-B8c6Jm_b{@<`X~-|2|cpJAY9CS zlQ`G!+dU=U9h13A2483GPwJ9JWBJZ6*a0b{^xa)3X+e)0w1zCAu95FYg%R3sOj#R*ynDz-RV(RJn@K$# zh_mazg((y9M$hI`ga?n>6{%{vLuP;*ZXIdU>B$x3d5SV1W`dR5X4DGU!ok26BFfk# zOt3DPVe+IUXvOT|;Sr^g8ZG`Sb^_2rf~+2{(|xzs!z$8CV^Llgqlf|U$&CmuPbo-5 zGfQXnR=2#Mhky6TAeooZ{_p9=$fNu=xuw04rQ(fg0M%TZR;{&#n)ljs@2wGzcvu7z z5<3T(KuDU)k)*H2*H(PRhPsg26^rV9ta>I#rpDOyynsv^QQZaESLtvJs?V*yj)fTN~n+}Pq2R~#0suR!fHv}Td*`&3@@nd%uY{dGy z*D|JuYsTuT3Pv-fIrYqI*O7KrFn_w+JIN8Um-4%~>)W@l>(_Xj-j=E>d#h!Q>4=gv zO)U4?!z99+)2!p;U+Hyywy>5bdk?GpWVQYZCP2noYtGVm#`VM3AzkAF63b zGCPoP7PDVE0-~>!mDn}$F%qf2tV=t;1Iwa&q=d|i^NW4kPv{YQNdSmwxAkgzK-y8j zHzn0+E46}ERxA*>tXu@iR%r(+$yjnXa$?kgV0_)OMjEM}dg4gFJQ3{jF8m%bmo9A+cWRbtes=%Wu_n#1#p&hvb)#vX*dlq-0U9=UJI0{RK` zzW>bZ3dF=Voy$Iw2h4+60Dz@sobbR~_;o_DWFBY0u0KMYT3#0Ho|duepx&_Pzj19r zztZ)9_L@_T#V(+eJD({gdy1rCxA&lci>eyhsI`^0qB`NB*Qa$RFF#rOjR%RQIgnXQpC>_ zUfsFtD1z$wYG|xmPFY-VENqR`+Xe<*Yi0vC4HaLn88-5zz1IctlM~&K0lYlE{2&cH zce>wx^z(eq%(^3wz%9}?(Fe!P+ACY0e()7}?=NL*=P zrCD^8LC65=<8`S^iP#@6ae&k(F#;KaOqO`R)QR3^FgPzOB3ucPlDK!M?*TB2Kvt71 z^N&#?31umminy^#ILp-`DqkZP4MQU%G04^&VL`VVL5DBzM3k|oZ*Jlt6-r~ATTNCQ z$R(y}Mv-tnX^%J*XJ%dGf&g!i!=?P@b?BaT8iJF2YN&D^pfoGh{Iz_Tv8 zI^9>-$43S_8$$roEmlyEAXoLDvIR@LcOS|O5s__h{is8xS$hZY%t>6|r2a7bJ-8&2 z;wnTlI%U$!-SzHb?y+}OYoEqy(Us7>N*m?xn{XI+c&-bZ-&v6Od8X2;40^3(RF+KJ z_l2E(;VrWbP+|umOjEcJH;H_6^n$dPij$b>{e%sOI)=9HUTi~nFWZPl>hPEOT z;KbI}7Wi>9kEZA_O_yU>hhsjFBU39HUtujUH+#@5<~6TGp2?jq)~~=1)KgtRNxj1J zxwcheoow4GEVsdf~rg0QeV8M1L z!O%|2Six(7Y`|7c(X1Zxy>)KZLp9FvoFeP#tfgpb{N)NYN2G za2^{O&1xf|1s?egl>r2JqWNdp>F9q^?m4N<@Ki{Ba*-q6(pdR>4~$o{z0o0pM@~0w zuTmMGwUx6F38=6}<2#x;zEmyDanZA3%Tah~1 zn?K8gy)0$28F9Sn>vIXeb9$W9Yk~;|1Wyz`4YlB~MESF7CFtVTbIIvsEK z#^)&+>ra!}qdyWz`f=lu;!_HL+9u?SoursMG(RdHu^4y-laKajr)_}H(s4ax^rF0Qq`cGcoQ*xln^h&@n)1UbMW1+1W{Z{eP{ z&{MF+nc7nT>W+zd-p6SXwaHC=YKzt^RJ&|O!l_Ls;8Zcqs*pC6+;Mgp`BQ(Mk(Zt- zhEM(AmcdH{K66|_ANN9q2&3(439JN$k$aWtNO)F}gj*OM{-D5{-i`Ia15t#4X-((e z9Rv(Mew@s3aFtX{le$AQPP#`!!johG$r|Th;ViSDn*;cbSAz!y?bXbe=|dY$%fg7G z+;*gq%{-PYe)s4fzJo)kkzD|7swlRg(&^`3rV-$nMFxodLw;QS?8Sj`JjyP1auEP9 z`m*8%`GpA};di7rr~C6mOf8Oy%pzC)BIyJR?~zo+Dq}0&U2RIzPgmh=B<8mhh(ajo zzRf4sMeD#^v)aTYPdxhJ33)B#cA$?b=wv&~$G~%FhB1(k@h1Fxw}7^2x5s3~LfXDp z<~#q#HHNldECAVheM_qWW2sy0Sy2HXS@lsQM55drerzr@c+tbC$uVOF2Ck=EEB?94 zcUwVqy?kha6Q3Z!@H;U4!p8L99@7Kw4E$?+`KCoZq^CS{@0Vb}%txJ-WMKd8 z=rzJD{3#ijl*|@dzFcJKpX?feq5!5$J#=c1XQ9&5gDwJIGKH;lLQZ_!!3Jw70j~;1)4@+myF|=u?oh}!l9QXDo7H<$gz)wM zDXNNlIyjoWf4J*1#rDQLAr8h|%fqTv#@`HGy+=rNI|UU8o{@g)zytz13~N4FFAc|v z91FRAc!w0AO&JepUAC!q+$YVWbokguv7goB%_PqZ)uHW0fWXESRKcZ#Y?G-Tv=hI_ zo-6YGo!wXKvv}P2O4KV)7*7NUuJf(xH;3_ce8$vGJ0&2mD+Hj=V3wBC33zFzdp)^vTIAGVKFXK&-R`$=t=%tBa`@Tx+^E(H0&c8cY|I zb+(t&U{D`tYWS~*^woem$l~Lg%;SA(gNcn##tSNgv<2_y4>_hc+<=>*$H}p~BKXCd zlemhGYV2#W;0jE%ZCTJ^{=0>rfZ=Z4%IUo`#SP5s!*2mxuE|y$b{?KZ3{AS)<3)55 z)bq}7iGNGK#WR;r-A_|x3}aD{MJD1`4__od=n__%ZoJh?E#sXVdeRV;(au^v6-hwh zyju4*S)ht+j$e^;k}t6BT>h8%h;>n2@Au=;IKMS?B2O`~D(C*t01UOEJdA+e$XYxu zMP8&<1p3_gkAB@nCzWJD8tvEXN5~+!5llF$F8kwAQh=wI=@|9E zk+*_x6{ZeJDtnwBQ*W0}{uU#j4cYHQ4^nB!u+rtjJElm(#!XBx%`U(mZ^-eOEndC; z9s0?Q!_-XTQ0~T4{sIav{eW{&H$q^PW^fTK0KdFN0y>=TA6fv9&Iswpo0s>~rVrFX z+Zy*L@6n=qyw%i#J;llNmXY~f3t6iJ)J#zL&%l(^9)(@P1Vff=bTv19&xRT7X}& zu8Le&*_~fB0nqXKPfw(A7l}+^iLJ6HG2?aertV7@mD49SZr*!NeJ<^rmJ||tHGFTN zgb;FhW()mIS#D#B?15*Cvkj2XGB&wJqj4MfXqJN1l-seIG5qx>vUEViVd~_mb_eO( zjROTx%Fe8@k-K!x7^IL?O*q1oMC?l>bb^gj}3%-^E=l64K+Fc6%JCQFB>pG_o z>D72w1!XN`t6~&wyiDNzhbSE_hX!38z_&{b_*9=q$E`>bMsVaMO-_v+_a^GY*lr_2 z8QBTw=+R3qXx7IYaHG?3i2N!@@#Sc5@h1gOYY#(N|b-EWAA~y>ESI;p)M#GorLLJ!|2%bL1zXfP0tszM;`>5F0dzV>k2}oYK-I4 z8+iMsqgDxWL^SV6_|#WDRdNj)W@j!fcJU^K2xR5eJN`0CZA#%1VHoo8R5A);8$v%J za7SI38m68R^&2HBq5RKSNe}mLIqB52_n9xN1E$2}Wu;%l1ie@$CBQe^(5}fq=j1X8jTF`|U znUTMqtmorv$XE4sB;(~E7Q%Yv%Wp{CAGK38HRf~p?`Od-UxJ%$<>Iwj1(_V5pX^}y zsQ3o*8&0FR? zIKTzh${|{Z(}r4ytUmm~9;yNV`ttS}J10hOQ17rGB_VF?Ya^Vq&un>8c>zy6^(+FZ ztfWwJ(?tQ8mKg$RQb);H;wTzDJIf?dEI_^xODXUJFAnZtSK4#VpwjM0`ZK*YgKTpc4C<4Ylu-4KI1|m_c-V3jC*h56O)D1#-H)2 zyu*I_+4gCEs>%B)O=Er=o^JvpNiB-hVQP~mvtx&Ayl!ipK#hzT$qg-Kgm2@C9BSdz zY-8=7Ln6K?j{Zc)ct7h{M~q?F`US6Qntyjf(&GY?wjxtUak@~rV$AxYLQO%C%r!dw zx9WR2^ILsIY*qez^#33;hCq% z;3uKQSSg|VznCIge}h+D?fS}$=)0f6i(7w&mhs3RBB0L#OQe1Cl9Ad7(?yGKn?`fx z{#&Yqv)i6k!}{8&m93NSRd1+NTuhD?zDZ`V;u5H=e8lHhuLzLdG;~apXBU3Bc}3S9 zHy7^yT5tD*Owai{c6@+AG4zNR*ry=c-Pr1SqDLCbAaK_)(LibZQ94rdq3#NmMMm_T z35*Pxj*J}>oQRC2jBY(%5NSWXEF0ZLKh_QW_Jqa%t`m=`{od1r!l%iUZozFBuRAIQ zOi2y^L=hH@kvfsBEgva*Hc|d-CCAKj zDPTPSv(yM0neKwjsXAy83t;E$c+RS}#q*18M!NM4r7dSM8)x6Y;Mqqh|P)vD?RQUR}~Rj!|1V#Vu7;m{FGp0S0M$ zNC|Flhd7I>f~Y-$oSJ@WGLsF6!3~8JU5Xn9_jd`q6rSg3 zUtf;(*|_XstkjgE#7pDR_eZ5lGnT1am{dbPnhme#H=jOdY<}QJhY`I{U6RD;E~>B@ zL$V@uY}e5~OO;)VZxYz9Q$xPM-={XW9*$S@GqvM63Tz9`Z2J=a_QU~J{TQ5$Jqd5< z&Ch${u1X))71E4bB+>H+tS_SewjcvLhh|`E`EzT>Z=VfIBUuD)w$~#AA=fHqy3#i)$m?LkBM& zuqNP4uYjk?2{I3BM-2;yi0rU2QJEsgVRec5!!j_dmXeKCwf1Kb=TP;v}Yxu{P@tp_nD0#?>3j@LvFQkn;Y&I8b{(&uoMr65Zj90aJ*&)~cj1SZO zeq>Dc0*Mz@Yn;Yms?`b%0`zCmRK_Jc}OBMyg&eQh&P~PB10` zQCRS<)Fq+aNBHhD7FX%g?TgU5NfIeOSHD6Rx%D(C%;X=>Z_m$)O-*L>n10e(y?z=7 zz0gruPhPe^>nrYW-z;~T%@H>Z1Gycj3yFAsHh>3(-d6nVS^KaG-3mo0@k zvH)3nupli%sIy{qdh;8#tgNb0d*&5{i zfsT&!F{IY<(f@HLP{*c?uQ`{2x!*d(%&?XF)*qnNtV7mW7=Uw~s-tWulXq(^T!wynvIA+rN*=hhq z@=F-2#{oS-k7Gta*q_fRMX!18cmDHq_3dnn#qWN9*LJm@vTL|?A3_~6UwV))>e?8z ze_Fga4eMReDbQaeyD#e$d%)0VqWmcqM*{izsU%1P7(tIFDv`U%W77XN z8Xo$?dQ$o&uG(jcaY;?1|oWt|Du!^uIYv#lWKzdrZy z_BS1wrz$RHg-SCiU#eoPbkpih3-9=oe5Ii?ie^{GyaAGX)L?rRN&aKcxOcz#Bt*{@ ze?t%C0J5tQUZt9{ULQXo!hzxuUEh8drcCCitUF2ofS5i^DIv8omn;f7ORlDx?3nD; zo~x^Z?imPDo_iF zk>$XePOqt7dv1Jc+*UEHrupI3>K^Ztc&#}^vE9&OCK{GlwlF+5Og#2Hw{ zIf|-!9=~|X#liWr_DK*$Keq>wS`3iZn^BqxC9=47F>ci z&^Q(f(d6!TLu45=$h;DMs5IK|cPI~hbxQT%SAlgg*$9a^oz_7v zS$}XkjFbE5s^ZI$*=pg|auj{*$2pV3umw99EEZfX_RQWd)1Wq%P^`pZ?m}E^1Tq%H zszPI}K7RS+@R?Gh-hd{{vI{EuC}Rg@yI0n3Q9`Wy`%6Ya&kP4!s|~EryKJHJ@piPJ z*dH7KKvAmhXVp0;kEIO%q1Uc|oM+=@PKTC%sulUJLQSe1an%mX`3za?2zo2NXe$)&O&68 z^Z+kwSL$ghYVe!zXLFLw#cczIaM#aW{ehr!LBY6v$P_fAWKKb_Rk%+{KyS9G@dOF- z>Zu{!E`@L`X?+U+EC11g!J*7S*K#PPm8*PWd3jRmmqJ6S=H#1SL)s3s@`vI(vNBJU z$XRIPvj(F3mT}&B&`#A$^E+kj^g3v)%Ou7T#WVD&u%atSFV&hX8=h<$D%k73esE98 zoZS}Gu{qPX_`?3v+t1w*ClG(PJBb7PDL`HpsgO&}nRhc2`LOK47;v+D8Bsw8PTNYV zvj+qGISEqai!_x_5yTRD|HkOUm1?JDRH_AgWf*YSHFm$?Pk=GQ`W+O*yLz*DllGb92r z>pyQY zBpzx+Qouvmifh}W$4)QS^(sEi>}K-0A3?96o-{kq-lK@7SX_}it|%E?CI#6!^Uxno z)6FaI9q4Un3v4IOf7kI73^BGEY50BNXA%;fd+A|096x#X@L~@R6LB4wxnf}k&=hX0 ze=s^Li)$5m@tD;(cc>3(UzXmJWW>U75}5i>;yzA$8DBB5 z;3R}IXb%=ShJDXtU>1bgsZDWkixIpf+XIBBgpWdL&s}OK4e4g)+)nbF*orE^dUFK% zWhWB;IqsBYMWci{+Cu{G^Y<8U>~If{08VZ9NCM}WV5&+dm1Kum~SQ-6O^yVhLz*E&{JU%38^Y$6?gH)-dGpq_wB^qudFt@>YY zTlr<|G)?$2f|o5zpFbTbYekRKB_7{j-8!0}w18E1nZS^0$*Bw1 z%I)b`A%`eIB@ZGRLwEkhV8(BP!5Bq$R<=b56Nb+3yShh%V&RNjcm3iF@5I*$9PWyT zuFAlA&_*IQn<1p{QS6O9Nb1;2axYmH&BQUe zmM2!Ma2+pD9+uVuZ-DP9CCi}6LcA;}0q%X*`$r^%fO;!z*0=1>N9aA+{Egzfh$!3D zBOWGzH!`buk7><^+6dL!mK_?28Qyy!t3nXn%H?2I%fc*AK!N$=PcY3lLwRiZu%B3T z@pSto7P|5Ki=Q3dSIrBpT#|VjW9ssvvn)eDa8KtG)(lgN2tUj~jLo*7ABB1K@5EV} z2sLXV7cr7w0}~_m`d1B20aWlfN(pnv(GQCgWo)su6|@lXKUJnp0X)1Cv_YV6JD*UM z8mec5#OhDFda68vP+;i}{W}iE{dno!>v0~2j>X)bhb#sUW0|{?zsefY?}q4bi`xk$ zy1pb^ull4SBiqO{5%r@@n|cB4TOIe1q0fHixvT{sTA^bAaqq&`Pn zTwWVQ@RrS%X{IV!>CJ2UzIqGslM8#GW`l~!Q7J*>{Fy}p;`n2WQq)4?-GG2LXs*_S zlE=odQn(?;D%a~to*%>KosHqYOy}*DUIKz@CyX_*Jx&2(aMAA0)3(25p_bw+_)_uW zJE~a;hR@nemVcx~myz<|+)}h6M}7;)?2`W~K~_M+g%Y%Vqk2*6+f^j^VU8rs4~@DX z8}*k!=V&(6VjQ_U@hjosx|8W;w4&Y$uxYTZX&`gK>mZZ*2}>=6PM!vNx)$&>kr3wT z!C+rF%xYA*CGxMkvW*nLz87(@kFF-2AZKC5bQ#yQ3+Z$|G=FPcZ*O?mpT@-53Mg@C z%Kn6L-O4l^C6OQ8?lLl{2mQ@5^^DVh5i8w&wQ9kGTSBj;0pbi9H>B(-DZF5bC3<+_ z^s7qNb9+O{4v&MkN5Mf6nj-HGp(~&8MVB2NeNsF7L?W7g6pNb4!z4?rS}vL8@2Ce4 zw3*h^pMF+UO*ZX*6eHYk4m>)V<6qut>uK{KEVg;99kWF(Hz&IhBLfiik&O?S7%tl@ zFbh&Twjbv(R~@>=VaphYL`3Tlj?`Dj(yZ1cO}Yp%ex1H?p!u)(qx|?U#CKlix>MJGjE(FSCKQH2IlxSP7UGHwEiRs5>5G6v zRJJQeMdxU1Rv8}ch-1q_@~$shTR7QXO#T<05(z8ZG16nt1J=YVr{&BhC%05r?`u?9 z56>@Frl!48Y-6tDQlnnf1^>7_8iZnoby1;j&OrU=l0~*2*WvCYDLez%*XbV1_*xi% ziIeby0CHedkRN&OVz1z_uDiuA*6SW#xOa<3`q13Q*h(q^htgHvipe^Alz>aP*lN;F ze1831S9WDe?qYAey@I&W%fBt7SN z`|=F0OxiNOVX5qfVgWSd${ft7n+8%QvAd%p7!?o;@x*?*LSIPor7Hj0_J3#pD%j1? zbn%ARHfN|q&i{@)-So!KN=Gj2nf*sT^RAsHN6z4%`bQ-$8eh{J3ke!B9gL>mZ8Z(N z_Oqov<$Coi4W@ROA$l|=rbTcj=`xJssSAj^W+74)cGp_4YXCr?{6Gi znspbe$WVu&K>~FVUg%PbpU*{FgN|CN>tJxgPS(lyFPA|(ZO+vwE$gWuKa&E|_D zO6(E^XftD_v5r===+=q$oYWkY?m0m!iQ&{jn#v05xmXBPdQ1RR%hr%f%*W)vRk}E5 zxEFI*P^q}X%SasHOZrQi>hQ{u{i0J31`DuCG1wlOOjF8wLg?CGmd{>+$q=52Y0m5p zD)IiyLuyUoF6i>NeUH&K!rv7{;SUIIF5uDsZGs^r?1d?+zmCok4FoFb2%axP6sQp2~^l?zHJ!$7(!sB&9-)aP~^(sKF`$vF#vcG$|9!$F8>q{7A2W@u5SdSx?YJ2Y^o);!*TTs?VN>94&r#vL!|aPAy6PiAok{*{z@&V1!~v+&x8 zs=hHk%3JjGg@ihBpLZTMQR})(hisI%Jv(J^2r8uk8-I{h^j8Y&aX@yxfCi+NZcrbnWwJC#nJm@@#+sU1l-F9}gFs?!No zb99A)BwMc4sJc}hggrjcZk1ui6p*5Qc&Wj^wYNHpwM_%DRVxYzYIlIM2>qM<1xn}!8-(^5(o2e|ELD!pedo2b^+WJ`^%OZY=fk+-fqNS2gmyLcw!2fzLz%N5Xve}-2K7P-V zSr22KRIUAiWKIWAI8bz{znDEM0Ix~v77%bJ!fbYcSkzIoh1L%_WY{!m_IUwTn~uzk zl;^#=duU$NH;tzMJ8OK`y?2`ZR(;wT?*7QFje*5#9#g8*G}?Yq^wRj#r%m+kyDr8D z%QhP)-;DrU%y0lGS_MP-nV-kB65R;FGd;ukG^a+#h3?q#@4p4!4!c>xSzkI40u&p% z^3-?6H@QlKkonK-ICx~>42~)up_$sVG+7tY0J*fi;oOS6ZGK#YOT-NRhH5ephz_qL zs2gZaG8V1X7$lx$#Y)#hSNli4bn9ayL$6qd(D_Q$$laR0y!(MrnF(Eu+EdAQsQR`m zca06{lN$Zp9n+i1bikT&;HL8R)zWYg>;UP%BcYKe9fsAD@QiQqXIBN`^;XQVWy?)| zSDk@3qQU$W>|f)`8vz^dVKvXCS86k`^S1^5OtEUHtoJ(aF!cOn_2`YR{^E7}5^?x>5hrk(>%%`n$Bbi$Luaddc}wUqu(} zB8;5EiyE+{El3~DSm~a{J4pDNy4h3%BO%HFXv!W$Ij2$A<7M20);?QqRFO(IxaIt; zp68`%nlVe@+@Pfa-Q3;3#!+aF{!Tzklh2EX`8~Ev!j-3A>Uh+~-i{q?R`*Yk+-lgj zVbEP%X(4V(?T?ocw!!{6kqi#RG#R}y z0-?+7CD+uPZ%I3UV!WA4sT^^1aXcnI&F@FkjI-JxS}u}Zvh&?_ zmSiHr?zT5Bre}l_9=f}_Ckgite7wKaIQXTwl5UMms;}`mj~@^b6H!)`{jF~@n?5S$ z2>Fr953#Gm0k9v=;pE=~ZeCPv>mDUJXKtUJRhQZWDuq7| z3dR{iZ7JNRL$|(P>qIoNF$Ih~YqC15J0958+RDtpOqwV$ zUmS+?Any`?dEm$_+lB@I@PN!{tIfy~hjFWu!8b;)-o-fl*%7|08S^;>jMu*)dqEZB zcXe!K(3?psFAEy&eZt~gU+Si>GhMV9tXuf?{{YQEGQU+la;)|ZRh#Fj*!HJ@r{e6KC|ex{pw6yuDC8;-qG6k|V{JkL%Z$pMJ|9n3_Y%bt_h z;rG~%sM1}~KbZ1y?T=E57qGR)c5+3X>To#(jeDI$b@b@bBX7xH{6rdc*9W+32G&a> zOiyy%NH(rB>#h%eNX%ikr^&jW)Tgj%)t%L7jpg}OTh&!f6=f>Bx4d_8aZwaS`jOqK z5ZWe0s;#KumR5X;`UP(xHIA?2$Q#2L>i0L{vE5|xJBa=r z1n0TD@xdEqQ7+1bQKKHm=d$*$%p2@);xO^rjkBlzP3FktCeQOcHV256Y5)MLtNI7% z%eedf^a~HgD1M0TPC97}*jtUjZB&&~(VLp~Q;k;RaOmFkwIP0sMZU1cj@BsNhijI) zNr;HWuc|7n(UOhgw=LoG4#LJCHz!g`m1W7|z0G9Y5p<-!EobUk-Au_zgN{m>t`9)x zS>3Q5`MyyqHhe+kw9i;hcjZOiWmfhZoLM8g)g+LV9)f?{2Xo$|$4{!;`9@{^&8>XP zi2m)%^XJd+zkmN}^YmhIVa@OadNbBugu_v-Z|kN$_yE^HSzg_&Z(D+>QO0V!%TuYw ze{7k!M+v3lUU8kt$j!ilYp6lMIJdAm4$_!-Q@djPPy@iyj&NA_T-Z7ka@4ol$n~&bivMe{bN6+#67(0OUA#^ldU(G>PV%);2 zc6H^eJEDJA&ZpbNkD2(|9r4_dSO6Nf%yIohH|bDy=o)H}F#2Yq1!1OGlYscMjS=OX+&31IoJ6AVN>zoULlrmLi>e^~;x;_9#+o2mkTIzVE zTlMM-wr$8eti~Ap0~msTyWIhkG10S&A`u`_xw!VUtTjacuHf+(kKcIs#^=rFV8Eek zu>}YHqB1IGDr&`#f+p#YsN>AIXUu5_JaKb}lqNKH$N#zee!W8c4$=NA*>OELum4(m zOm69kgdTnC+saoSyaL7D*Z6af=fe7z^u#ym>QvmbCRNAvGd<*#4uXKXwSxOj+y&q4@g zSuPd}tu>F|`w)WjKDt$7&@pwZrU|R-U2@-wGd-+A=xQJ&>rz4$5sq$@DQrTbh6Eew-m;#KPsG1k%)*Jei8 zV{$~o5JK(i%B>uF0LV?wzdR-VjNyW(AH^n=j`5s6C_2zxGE~`c{g(Z(k4k#9i*`@;fN1U(~jSxLd85nPWW8a6<0eHrg-V% zrL$B!sBy>h>n3_WSyWj3ZoS}r^5~p^%845n7Z-fBd zpT4n44o*x`9jY4%;yti-g4>>xVyR#2+Eue^s+wvlbSHj!zO_SJx7+=+?Pjzm8dbgL z(=HZ^JkK}NUTzmkhRO?27ex`rIXTqy8_`c5qZTPWHdJs<$|bCBAw7ta&nOD@1(a>!MQH(dM&qJNuQt}fqx`1aGL@8=RHqXaam6&M=9sv;{FY`{s#$s=m5ZKyRh6I({4sG zZiQ_*1^c|0!U5yI4$X_i^^EFJ^U@QA-TCQHiBalN9mN`xa3lZe$z#9`X&hONYtk6k z98#kz(G7xq<5g4DRZTTzkXwxi>YI5)=cLGgLeKU3# zPxdBPzGX!J1`zT7!~5@j{$AJ5WpnX?tGjTe+$Ujn&yQF5|u_ ze)|n|Gy@JxT=ZY{#A=Mi8_{ZPvBiMY`xkf&dc&cbdJbr=Yw)QXL~Z)G;v}i_#Lz7?Jx0pahn?jDqYPuKH_Y%8iyoRY>+UPHugpRiUNi<;0jfvj5Wp@ z0N`m+C3GXXds@O!U+vyDtubb?SWFiD?GIZ{>2LUP;q<3Q4*Rk3XN+O}yFQ)Xp^lSo z)lI|EIagKnYPE9C1878B*Jib1ZR0)wG2A#r9EW_>q=y_##Qcswv*;}&Jj3U5D58JR zG|m0@?tk*^lOit`cCjt`vYVr4ZI%27pjAKjc?txiwa#?5uwCVKoE!rNYwR7-zvILY zVDub$UGB{-Nk*(VanZpxw3*2|x92|Mx5qeH9|-&Z0xw^R zz71{To6rWT2x@=;ZD=36$4{R;wLQj|_`_(;A>A*}b9iFp5k!yuk!kaHnowfcU;-{Z~`o{ZjXrq^lrP1bE ztM_)pttO)_LPT1bg)K{4W;RP#Smk>byiZx^N1|Igl=^+u8;=b~or9&2Wjtm>+o z?w+23MuM)OBR~uEq63_#qbopvL(o6bv;Kh~=%46$1if70+|`?2!^0!OJ~y+^%#MzZrqk(7!7qIN@LFRF=B*zdLO&zp zOe)j1-F&zQwv4&Q!Exj38^~b(8}%9y8E2%H-gs&V3}k6mmSvV^LWn3_WVP1pC1aio zA~GVzxTuth>qf^>!+kE$o)>Y)#~8G#sy4=^X~H=h`-5MgqOkikoGJfRN*RzqYYhO4 z#e$W3nx^CNn6>-0lZ>G{HvT>adg?|Adk*T#rSgRHyk+a~$6~`V*p9)o+7(ze);j0B zZoKc;0cb17#l^>^Xn`?8N7#5T^P$J1^nsJ#;m3@B%WC=h&Fk~!d6s5e&t*p)lA#<1 z`MM}noY>AD&P1ez%CjU_LawMT5yWWoQPlrrxh41=kiHXP#zw2FcXa1nZFFUph77lx z&r~X6@VlM$e+#+oS6iNBQ=7^_1G&nN#z*7vs;eyw7=|$@@_wHqZTuOC_W2BoiAtmj zd?+j!7-O*?i4tnk3 zg7edRpXWK_-<~$~jeR7CkT_B(gy4%C?=7%nn{WF%4BV;%N>0NSP_-tGGDhgQvG{m< z7g1M_G|3(zQ2k@XKj+-HZ@+#0;dP$oWmdL4m;F}$P_W12w0>{zTeHt<&Tz%(V;W2Q2KHWTJ9?WWZkC4D+PLp|8|(wI*GwDk;)5y~uZ6ezYD`Be;!AyNbp66^yBA={mZ zIN@*4a9YzebzRTrb3|l+W}H9{>zaLd;;!pJxL7Qf%jIY^8jr`j>88Q>YZ@bjh$DY@ zG?ee}xegvq-XBOQaZ?%FjdP>*-c`NZY2(7ixg1eC$L2Z!%&&3IfBNZ*gP-`d@}tAQ z`C|U{+pjOHOXj)UsQ>j{V^r(2;}C~VSIzunUL?h};I}P?x9^14ar*8t&bGIMuIjp`ni5L3f#2Fh zqW5|4KUB3roo%xkUDS{-e600%t$S0Yl2WQbs~AFKK&HU?D~!??`N}FRaGY^C%rBiYm4u_wWetr?;Yp-9m@H+!-BjEDDwI8IRXG* zqqqRuKC{|3ligPDMz?AY8jUe^t*vc}{Igr1X^|AEOob3YtzR^@{>T#|vf1=8kY50Rx4`>J-4eiWX(~@HlUbRTiA})cbOeT|!rn7UdX-v~JvGKQKst1uB0JD$D z7%mW7@Vr!qn#qo%UyJDM!>_7pI-MpDp8Nnm68s~gckkbQ^Zsjxew2?k6!q972XS@w zu07wZL}Z=SR#&z%&JdAAnX5cgSt65FQ7ej40M~a?000Dw#p30Qm$#hRfrOu^JwM!g zRLIk;o++iaRnBaef(~Od@tQBq(v#;JI;l!y2f)Kr>D)OIZtiH`iTB<(Q|W41FJ0|~ z6{C!MI~4nepl&>?otPT#Oz83rsH0lMxX2Xzx~}<8{9Q&Y_9%Mq8BX{!otkb9M~Ij> zM8wg)BuPRjYn$b_ah`0mGWhYF1M7z&@apOc5t$bgkKnyGrj7h1N%H8-m*L6w5Hajm zc!k4?0URvYHZ-ztH1lxb9-jOHKL-3;R?Dy7etkMS&C)EF>AqI~t#}ae_hFM3qppl~ zZR*^KhjXDN?CPD)b#tr99a5x} z;99A}_U`@Csjzj0H%d$|^5nUOP5{4y*?G4dV=s%A?+EKGH#V}B6^$sTM$VuK@yM z+tFHkadF|CJ3c;+Ns`VvV;Xk&?`f(&u=IS(&;|ckR|K>BKIVKQ(=h%Fum1ygzGeA+ z#y{uWyASWadjFM>qRh){ulixREj=M30&>o=+1J>HpS@h>naWa`a%S`z@&Uw{*Y29T z7v$+Kfwu$7KK9?XC*e3hCgl2X&Ux>kZAHY(#cSE(BKKPmgMJHxE>yksXYi{`RojXP z3RM(Ik*JPae?y|@U5wG&1UsX0qt;n%^s-(yRf8IHm5)c`P~Q3xO%Pho>Z6DY+A~e! z*Btg^bjh-eJN$8?LXW4)_Lg&w$QMO98nw>ejc(7~hmKvK0hMte{DJ9oDug&bKIV7W zS;r3E*!b%m?nY+N0|*;`&bhFqh@Y2xo$a=(A4~8>KjGgYWjdRF_1#yO^(Ch_2pkkM zi{u~?zWz9ou-Rvv(MGQ_9Ar|cB9(2<*_wsder=6d1swAWZ^FmY0_j@W@r>n3E)&^) zhRC;tAlQ!<6%*%*(qzd|$O>m?XzY#zV({DH z`RrkH>>G@&zyN{Jd0F|jG3MgpLP|NAOgiJw@TRj@@NCCw^n@OkyiF0uC(w7-Hj57h z+dH-+)Ui_UbpjjZ_YnWI*5ADS=GX6kEtO1U0v4>Z!CY8#qeXcLu+?(APOfvru{PIM zvlb?zRfdB|1QU_5Gxgd6+AAHwgOG1spp1Fs2>_PW^5)ZhXxaT-adAt21<=-o3x%X1 z>;XDlBq9byADR$(t|#7*T|py*AOCdVoOb|_$&730IPWORk6u{}cXWEMpVywByH>b2 zp*FhGm990_lwumnTi+A-UE?Xa^AY`elLxMIEtMQzlpyRc_~*Sp zzdZjxU;dv48mS}!X{&3{ol^{Py>scB4{g;sq>V7`b3Lxv>j9A`;|wET+`}PNsS^DR zhxSqQL_~ls$hBKw@+*Ku@XiyFl8=A+uHEhK{`$rb^do$OBgEA*X<#yj9t*}B=Uv#` z)UMV}i>B+du_@4qh+MEDoZ9|Lf!BYi`{@2cT~|Nu?cgh~C>fP&<*jcpTs(`1ZRr<; zFB)gNbLBj)bImlU9rMvzBO>FUh-9PjHyj5Mwbq}1{<%`>)vH(5+W-2m|KdLhA%^#1 zz{RF%rn6a=rlH_jk|ehSziVY9I^G%-gYn0SQgOKS+G!6za9Bj_8REgo{J`?~3iMFI zJeT*=_eEZe#TXERT6E-n*RGaTBtZiJ9AOH$7}R2*Bd&B}XDqH=q@CBR)m*lzyViYe zhJz|v&VBc>cn8V~J%FFHE-+%aT6ExTlc)J&?mprcxcfXXx3Rc8MB4DcbQ_6KNv;Mh z5L1yVp#UN3(dewRZ7pd6KoEc!`cE+pr)yu_dQ-c-(e5q$wmIKIsO|pPruw&{*Km~jlW*HJr3BR!$E`)fBBbx`KN#Sr=NZH z*%x1Yk>~kjGWqb~!$1G?KY#hBw}-9t^`447-aA z9hG}JEd&1fsO-yKHcauzw;N>R3?Ga90>2;l=bSq|KmF?auRQwDy&?RSqAY@5uiCg{ ztp{(tZ75=tAPVSkaa|Rzxl&>M-#S}imEj;HQ(ZXt)Jth-f9;?y_+Ah(kkj}~ng7!M z74QLakFJ$F-Mf1}jMsgvU3nxV^x&O$jcbfIN!QPat!?Ob7;7eD+|u1U z2!uo-h3W?yvHLf`#k*EZ03ae`P2E&2;nRpRE61a8TpM%qYJ4h7?ce_Gzy9mL z@+XHTATx0Sgm6J^ei-NT`Et3$sN3Gg)W+S3|F@R->pQG8o;(|W-up1IeT=^w&7pVP z{UvBQ?|qg%bmv=^A3XjomWyxSeS11T&C)Cp8i^O@&a zp64prRc{OtnIjV$Th|(Yi1>?N{Nf+~@gM){ul{N>napOhtE;Q8zyA94^t7s~i;Ihk zi;I8%_kU;DV-*bR`5Q#U5Xji(oXhiE3R#o|S6KDlJMZ20N~&VLTwD*ohs;$t#H9?I zJm?ZOoOOII_nN90ANNMW>!0Tj-T9W~2aJD>Y2Lnn`}+OsJj;u`*cdz*5C`JC zu63%7ZLpp~j7W)=tRd5*Bl4H|ll-PcnaVcW7c9Bh{#!p@NB-!bj{gDA!*$M2N8b7A zbm~8XDlo%6$F+|EBIeKXwAf-e;^4*FAGbWf41T6rnyPVH3dzmde= z;wepC*T$GMP4m1+(=<42ww)2DNyPMxp79sH8{^;E+1clxf4*EUfAgE){OVV~`sFWw z`Kw?3s;+CLRQsSspJzPdcNi4IPeu+l{<1t{o@#I;2KWpl)j&B3DI6i|KR9)E*TmTf zjXTz7+iJJLKWDMae7J9S(T;~`qlBeDp8xZD@Do^mQmS-t@9liLac9+O z>PkXarfOWHgesCEPx70Vcn!yDU*NhAQ$pD8^q_H@$=Ied!pfT}P#~~JUG!SIGcE!G z6F!%EscTJ|GR(&1s2r7Sc^t%rby&f5f(8x}4O@%L3;Q6>fYGYFd>FU zE_~{o3(FU;6}-civfNxskdfhk%JlR^T^C6I?Uz06~BNvG!ML$L~dzxVClQWOSBR zL$+fgQ}GEAQ9x%FK+Det4*)IUlPNIa>AJeQ`bbJ(hu7CWOEQziNx==uS8^Tl^HSz?mwHl$T z`N_e~kTEh`C0NHNywBW39F*f>QBpou5a)-4f6lq{%kwYae(AuKc{%LU-B)4Q`W3kX zh;b&soZI^)i+5Ek#5UBnV*kDMc60s=xp000k&*jkbVoVW%AD9~FE(9%Ia1_{3VYoDB?Nb=)c$jAw^cX)4`Fto7c zXS_*dQY1yDvTa_08y{kSa0$fJZeR&(ZuPK93O7c$C0059-e{+tb<_}402-WkOTV<% z&gb(`zj3JeB5Y_UeMel}hI6n9Y<5V{^}+M0k|f`|!yn_{HqOfq{M$Igo>jW-yjU0% zWBZBupV!X0CmWHH21ZW|jlpnq17TF-QUDayuZc}YMrdxW;GAW)DyP8jK*8br2gky& z@?m`M{b)409=y)t0u_fRlwMCx1_g;|q z9tfCl;k*OivO{A}>BnIIvH$bhM(i#$9s=>{j^D zk0fuHw)xe=xh(ava+TK}Ev8wTr#TZby!Tq`<#Nfl3bTJhfJ&|x$?Vw#E0bj>1LrO{ zw?l}Cbus7g6?wtcJFf*2HjjpWzajXAakdReUB!c*2@-379{vRs42ui^hsrn_&NH6L zaPqKjHTKZ4=Ti*fW^KFL?PlMqM~pX(ZP?}`ASoo91#N^6F?@?nJ;un!HLO_@sZyC0U1=_cMoX5t zpvD^|3{egMDW-&7Txyt_M$l?}0>UoUj6^_ah<1DctK0_P7Ch`Sc*p~RGmbn%q6Y-< zA4?acYoCp5l4X+&w|8B+MIvC_%+HcdMOq|9mSjW6z`lpLALQF`+`gZp4Q(=Y!Ze07 zNhiy^oQx;Td4Y&5uSJSK4-@RU##i$rb zDaCr*;x&d#$4uc+P;KkRH3TG4W-7~7o~Tp~IHI1saaNmpRhCmExyth-Q!)vMWBaUe zO>Jv!wTG4j7I1qQzBM$2_!sK({1A{Ng*YD~dhex_TbSZ1WW`zArtKAYfpN%nHsk41+mh!3f zEXCeZ#L>8o#$3E;xZSB6e{mZGehk~q{_cNpF0C3NYB{S}#udYPp~9_Vopp9~xAaJ= zd<*niaO|)eZw8HBWQwnE`gj>!A20sZb^Z3k+i%Xk+1ReO&r%_RuA?kN6mwg+-b$)c zE`h!F6(Hwa)yOK318mfB{iT!v8}G==r>^sy)~)9=&+|~ZW=~zY+xXjPm&9{}2>D>${tLEp z?_)b45I&l|)3FRs)~|X#2(DJzyOD-lsKB)u?xM8T;ZM+c7q*d9HwC2o_epI05&86y zlHcLu#6R!-<<;eHzWt3uH>~FZ+s!_%G0nN^p`$FfdFzc36liU0<5p!kvm_ff2MG0C zjPJauz!3@2!_;jO2sK31KB|C$H_yCKrpqIUOs1(yTjxV(9kMyt@}v>Kf+FR;pU>y7 zUcI{8df!#H)qhc$%8zrIZU~m#zFH=&HS=@ia@lpV4PKh-_@ajo>|N*K+$QWlXbsuA z(v^l9QcOq1XjG0ukZi9xYyrjKE~E7rQje4$h!xH`>s+mM>m_54eP=bQ$a3tdykI0j z1U9Tanc~lNK5yEsX(I^1I@;|x{dh94ZvTlc`F;4YjYk&|NA%;A7*||d_N?FYh-J83 zfq^;PLeYSv>ehQ2hma&hEe3nh=-#bDt1efMmiz}FA^y!5^EcnW`7ryCrG1{uwycKM z>@&4?Yi1wwAU2qNT$ZzM_T?!@2iHH}GH7g5nX2)PCofQDk{zl^FO;}Z2*`PFT+>+N zyyYzEc4TT3B>1^fLKP}aRf~VUQzjtkB>|yAryYj?jWxGi=);K+q9_WEG_2lC#kTS; z`-0!_Q^fx2ww|~rpUb>Ri&Sm^zkSENt!%I_Z$3B?IM4RR`=r2ZelC)0r?*U|QaEMTFPq*zON-*Z)hVQ*K--z_RzwWwQ)}hfyS^w(*>6)ft z*yII|eX3%`P_3Wv4*;O9>$A(VH)r2@a7AA9%)SlD>;wS7;G}I`JMGCUl$pv`;52ZP zwtH<`8E=S436-lnPx6gspZDH4!yRj_x121vG81={tBJ7!W(D8 zDutgR6MV~XTMiR}Uu7#I%2l2xMXHijjqZH#$he*W*w2T&D4N>7JA4_Ll%fu-@|lHf<5& z`CmKoHfW4}3^6*gFcQZORp*>;v^CZklP1X%{=sxMeS7-$bbgv8St7FCW?v^=HWiR3 zLcmlcxyrL7???L(LgGQlJ_dj_@ax*8LfAuf(L_edRHlhY*r6K7{Q5F{4}m8mK?dRm z5pg>tL=-4;m2;d@?o8QUDF|$Te>Z)1SzR)(HQbk@d;|b5pS{epd|Zx|Qe{!HDXbDD zP#lE79n10Y@zvE8zcz`fk_t7hIt^_qj5+Mv4t%XQ0TmH=a>m)(RNO-`S2?$F=S~{e z$NBCC89kT#-3O%5q(WC!UAfvxD?@o}wW+cA155AH#P`e&J0Qdt+3jhJ;rJqx@~5*I zcFF8g%8jnh;+qgFI z{BJ$UZJUoBzIV3#=JPpE@^;6)yF5PrEvx0}`RVHqud_5OvVIxQjWx_z*l`moYXE>0 zN{aPX@7N9!h?>-KSb#l~N=LlSdG_%$Y&Mb*ffd=Am4tsbUL;Ly3t< z3YF(c*OYvxvSYC4Q}As*;2PWg<3$ z-+`>XZm_{XcOIETzs8wb*P*vVkrboRxG0K`zryEk7a4U$t~<>OdEVBH4%(SvQfs|f zECP;VS6wCeQIjMo%d%%547Ke>KEIJTxBaBjd2tJSSe>ROJu?%PqyJg{f_vy z?$bUuNiZlYQ`NS1)l$l`9F0a?Gdli2%uS6wW1*b_d+>hx)1TgS zCj5anZ{GaP-~7!#{nI}Iz~BAd-$7L5tf$|%;m{Bdb~vSPBt2k=XLT1)WEH^+NY^!d z-)DMZ*xSu#hp;I~L}ghXWJzx)kAr_iw5*ozKD_((;@d3AdhWY5*>d5it7_J`rj5+W zL`fw?%gOA!DL8zFBEck)2^Sor^%_(JBoIYcjF^WCmWU^ET@f`R3Vi{E=rr|qCmb=s zovSnZ#*=4yYOY$#a?ePT_iZyKrtM@h%agqI#{$NSg@6JC5|XFJHcPXteT@P+c-c0? z>oy6-ne*8>0DQRo5JpH;0tC+{&(b8Fj3-%|l|`8*DGKD+YKSiiA*{2bmm`&`&1XSv zakrJnEUNnzJEgg+207}*2pLTgPzlA`2qF@#H?IKe!ciZoSV`6)(}5}4h?_RTL1Ew zzvMUn;UE6t-~R32dM9|TT8}@#vkIp9VWl4h7|?(AL7?8!4V<61zoUBA+pWjx39Ep| z>U_)c2>7S9KD#*k-Mil{-7=Ah@rEo#bv1?Pd|xYdHoSNUoFtd2ObG=5N~*Tg4Q$m} z?U=Z#VcnIl1^}Yio(l$KM}%SGjCR_%#(`%)9yj(AC{`t4dP2bI4fT48J@=*C$LF~k zDJrhbOq^9P64vhT0Dj*2+SW_6Y^YIEG2C)m#kJ%OW|qFcd=CH+U=bmaiLvJS(esnZ zi4bC3j?*N?922)aiFNg4#|yL0JY4Uh;JkNat+S19jJMR0W-Zx;T`cSZQE+!+DO6~r z5L~Gk#TVnn*}c>|ob87a-n6ygS2v&`#gxHs&yryGAqPBS2<(0+ZPU-GJ&2A&? zi=sH(>~1U%jem~Zcj!P$K8K~_$wRMEl%h(8Z1D^k5xh; zU@+O)WHhePTt2*8jJ5b8wmq!`N{Iqvd$GHhR?1~}zWkk~wT-%L2VeVylCl_$$`NOU zKLGgQmP~`Y3w7D<+}_r6lZWia34ifa0YC`Bj?maxjPW4W$iqPbWAkS}``I_&d^4Og zbh^0re*CBK>!bIY-tC#BF7tti4%_g3<21s`-}LLjRP{tZF8fcQFqs*BKKlIV^FKKG zgBOz*lB9EPF*(irZKwG&bq6MD_z%bzkkcM3?;H9zZn--2VjF@PZZo}Rj!W| zjKARdOk`4sLJFy*8upG@eLYlSGqrY_fRs>cl}h%T;|fGgRlAx&G?Q7Oid1!;%x>}= z@B;#4O=YU3TM|;9FO9I8w^o=8xUSzUiM}So6NqR&l4hL4FG(CqPK~9 zJf>2NKon7M0q(uwdpw7D7qaKK!m2)E@DCmy{}52t($Bn?UQC2_wk!%EWnShlKYIxX z1Z0dMM^#;2UR_c}^XdHR@+y(Z_aD9&B%F3%e)T2SCuHRn*n@ps+-($YGDm`hiY?(k z1~4TQ!(JGFI7r+tLJFBDc`8$`!QBQacO(wRb07-MeQHxR-Y{P@4*RWIPiznPt;)aM z6#RC6_I5jrYlXT_wza7=cd~60E)_DfH;gF&qSa<6Y8+qe^(A)XJvrlTgp2KcGUTI5 zY&To6u^71@Zl+WS$WcGrp~wo(cDPsYi-)~GRY)D@g-e|YA+jvXvg{zI)+^M~gT37l z7``=~POsI`J(~|AHSL^RE|*nRU0V-Rtk+F_FlY?+xAz_ZdzpXtD!m=mJ}Ahuy_Q>d z-|`6YKlQar&XfEP^Kml%H2E}@DW&AR!vsBgZM78A2=ij};`sR3Sc3v*%UPCWe{BEQ zXk)bbYx~z1?=NPvne?)08eQwF>DAX?e*NtD*~R=Kum?Me3VXd)F(KgVL~AUGq3?^) z3lT$rEr!*e#BYURl~hWqa5wD#Ja8i~hRi&N+xuuJtTr=8FL2fSkvDI%5P}OKl(%-Z6Gr4oJ}%pAhrqzlMxPjrFfoQK`}1|%$K31dwoLWQ%9Uxxt@QY6E7V&iW-9%oq=ejOCSae?*f zx^iF86~klw-qd6R71k%TQp8D+&hiaY}Ty?F8B z*|TSeczJo5=ecvPEXyQG5YcGbR?!)m2Ywbv)VPzaFuP&8J9wqvgGVT{;xNKVZg8QOAplbd%AhR?;zlJGb3|V zb7uqib*UP6RHJ>%KH3j(gZ7pBix{a~m$gGgu45S4i)6_f4@BVkLh!8;f{X1Q3q;%7 zNY|z^q$!28%*zA1J@2SD?u3x`?{rdH5Ztjz&>3BSrQcfn5BuS2rju25w z$yr2v-xo!ZK$81hHOhMr0)!H^uWMI3aHNQkgb>>4EYGMU<4jtnpML)77xoK*f`E)Q zP1T^mMmNi=<#N8X*3Rei`Fwu0n0|Qko*f#|rk+DVLSXj~R<|Pp60V|s(Mj&R8mwMf z_1CU;-XUV!ydr8wv0+QQCE&+hFFH%{CR5pp$SPF-A&*!65Le$5Pi*R_BS2@Im^9uO;2-Z~2*82tFJxX$<4$Nn3FE<;+L z=eS-zX2)$A2Jum&c0XvIz#ikae}Z#9YPvLp#$YlARO@B+b>mx}WMF=7TmRmR__}QT z%0VPtxFGkGPr1K5e*H7(8ptti8UVik{`>f^Ts&el8X+R@!qPOg)}EZ4R8=(|j|Ga8 z^n{3n7gEZmX;7jghZ5&*Zd1$92m*{Zq7-Ii0J}XSpg_^s=4x^E`t9rdH2ZMzK{oOT zj*gS#3^J?jn{VEn&(C8IYCk~L?kh@bR+V$|8)Vs zrCn;TrBHd2rRr9&@p$03N{O?T^|s9q>Dsv8PSM|PFS2zgTzdfk(D`f_4#Q7285t2d ze5JBaKmNQFJxv{k+O}4()BcN5FvcxwEr;|NkB5WzE&+9o4k${=?;SmW zE3IexuS`a3o%h^z&#gC4*oKQl)HIFOnkU?|{Ag#Q%fsJAVR@6}F_RzQBf-DjvREt@ zi^b{bX?TaD%|eJYO<%rzd2({1wdT}R-gstNMvnAcXEHk}P5{7phY~@6Bd1B%zINUz zrL@%^J$R5(mXo5OqBtrt%)ThT`1$eAKN)>u8sloGYi$~H{^7jQjnT#$`|i!Vx9{H` zjgOYgWt(2MBW-a#xVSozj#!b%gn;7o?X7#a^?+Y(>!n>7u!&6aB&NZaG%8IPW3U>9! zDz9m(pb)Y1@(o(FZ=f3XG%`G_E~DW2)GN(~jqGt?kvHTkyIM`tAAk<_S!|aa~z} zaP^7E7(+ySgYnE`7U;%6W0+NMsEw09l!T=&iu_&=bgldV@NXy_YzKh4uBX#!c%K8* zCnqODi099rS5=iH2@!F8aXcO?rL47yNHUS7X^IXT+n~gTnh*NJY%v?nM`!vB6GVx= z@i@Yxqa*c9S#PC~fAA-Nz;}jejL~*6pS#Aree>2^@157RUd$J>>FnD#-=e?}Q{0`N z!GWUKO}7Jh`T;*%Rj%^jnH|HC!W;8Ew;X8ykKSU~7W{nI#@$vvZsWeQ3C51WS0vv1 zLjmml*2mhGR>S#=rfGEJwddXrlktR$oUxV(nr@}zoOK<^V9enl1FwH}30izm5^{`m{w@gTsEn&n{~>4EPQ=>_)O-x z%F`s3;x^#7c9erZyx33V*tSG1_;uM1wXQkap-{!R9B*vtKD0$v@uDq!3T`bF>*e4X z>)~R|rWoSlUDO;ScPMo>^n6}BIIc&70{Ah5!$%VK2i|*5!u#n@e>#~=ZU=$e@Gm|h z<2tV`PldjiO{6A)}+WuC#3M?wbW9`A}df}F)3dD^ra`S zq;lTrrFPDl+L*?C`RgyUB;);ZwXDAV`rEwBzyI*PSou!dbRl+QcJ-ZwfVQa<*AQ9S zW#hHr&uzZ;ju**yOJn|(Vb$Kcntjcn?wu1sa1Y0F#l4s7_$?=aDZ z+y5RO#Gp9D#h7FmTa7&(CpzxxjdYxkN}Ul=@O;Xh1-D}T9!$NSKnJcAF;Ey3ImBg* z;oa?cJm!LALwk3}(TDig!&+lZ(==Sa)OR`BzN@3gaO=ASi~~G$>wd_1symF!_+s&7 z_!1{cG8&E8;{}niwK>ojy0mxRR6eP7ld+9Y_Xs$_aD<)r@KC~(c(-(yrMtWQDDZEa zOsCV>eTs-_ntt)c7kty7o}MzDn)6=MG%bokpddq&WKv*(9)%FX3qsOfJL#Nr7Hti+ z5W=JP$38dt1*N?NRvcjsd?rARlz#*CK?eYg-dgF7vfK{acTJ z-=V&1574el_2MV0eQ0na35~jF`@B#yCjKL=S#E9D>rF70sr_;Kw zKl|*nlarH>LmA?5yU{m3L=XSi>jE#}4Oh+o_hD>OHSjOu*@Fr^J@Djc_924v#MZ-){$5u3O8G8vlC2*M_es z0LEM&t3AVUklA5iy6{d#{870p59`g!R@*SLw=u(^kt& zf`r=ED3BBtdErZc^y~-`5zvt%Po^=}+In8kE@vM6<%i3QtBYm5Je{6i%rAW9edD3a zsc)e1G=^6Wk1MeO$+(%a6XH9ME+SYIf@Y_&n<$!`6nI$-(uM_GTa%rP0 zT{X1^4GAUO{VvaQRuH?6xrf8B_qwN)Ay#maUf)5Z2)M}SsicxpuqSm}xQGpo7ANYO zcZ~u3u3e=V%wna?BU8jHfhdy!5sfj%7}1r(Zkpz+ufAF?moHwtD2hTUMVrWX@r*kaq?6MG}+ok$N3DGHHd+w&n1==$>vL&>NYV?1(i zL*TXudt6<|iG}Un)DVLVpA3WKc`oH+CO^Ov{_QEt<&u5tv5d!KAw*f0lgR`TkB^Vp z?VhHoB$ObbBq`JOhI7I>a9;YQUdmL~RD17100}Z+L@r8E9vvNh^64kWnP2?L zFJ{&3{p|g3-u_zD!d7-tPewG#Aj=^0MXq21>pYuY zv%Rfy+khV*g45JDu0QQeoQs(+@q}Z* zKGdb$Ey0kAr_t_jh*S$X*X*>01Hxeb8+KIN(;4HtDBL;Jk(p&j+6r4hUhr41UOmjB z?T{z@yS>cka{!o5r-5t3kEjr0G#X7N6Mm46kB{RNqCC$f$^?>3X6SM3#wgG^2M8p{ z3Ab#PUU*PY`N~?Gid2y-MrEQBF%rk=@y{ne|Lpj)Q8waC46E&8xu~X9HLq%2+r~Cc zQ!nc`Z{O5SjUM|oZp7yFjFvpP&EnbnMjd`PEFUgs+y8mMkvIbWNIqVbEDV8-h z={4VI!LKn*t?Rn3xx96mm7{WNZ-<9`@`v_NJM%##%sEG%oL|#uv4Z2$m;9O)9CIs} zYrP5@G4)0YjC*Tz7GA8xWB*~8r<9UyFOI;muM7YJ9LD0D`}*szi=ue;?Agi53CF;~ zLARZ3u=$#%Su7SGK70s;W4L}dD{l7jz`(sZeEq-|G=?SZz4c#{|Mx#W5T61nU6O*- z=+TYB=#o+z>F$;iB}Plv00jn;5(3gadPswGP8f|aV!(I4KEHqeg7<#f54-KU9*^ss z^El^R=YGEa7;<2oSBan?c^ad+Rj`M|+@F+xwV&4S^;DgVYUuKUFA<|j@kw04^>g|1f$Kyy= z5MVUOGp^w((0>vT|6z79^AzT(M6f+5fvT)+teq)rY5B>b9JgTQCqk|Z4H1`;lX{yi z*(rXM^=4~&`E)xOy>%e&}=#W zJ-yykI1B%n1j5+x^i}V0jC;Hwe1l~!nz_2V!X8?&&pg3|k|7L#`GcgW zxg*xTb$at%2*jOFI{)NDdxra|&(|3`xBEi|Ta$wF#^F-U_DMZ!cLaW-LCXty8MX^W zazxsfXp){U4pp}5CkKm7zrw9DY!!8Ej53f{Cnunr;mdF=s5HII+0^aqZ%9s9x}IXc zcHI8`aOj<~+_-CXv7n7W|L^JSQK&y*8mSVcT0A&VzvFtBTicw#V3!a_(^|vT2Zpkh zX@~Mrs~08A8o#|piCLgvRPvnq@;*;LND^}uy?7ayP_tY-zji_Y!J-D^h8K#~@+Dvk z5@qx}6PvAP*!%tF4NdY;#@Qsd`|Tg?Ac3}O5hXEWEte;x$)G4PR}H6a232PfxI{d{ z8y2*R?aY_IBl}a<%}do46)tc`s6aZfh5Nue;Nz(Bw(&E02+s(7(-WXWWD+GyDWz3# z7R5ZdAC9JJHGD?FbW#V$quL+NU)H1Xitghkp+nc=VFkROtxY4_^B(5HVc#5C56yCT1xa zO6Z_$bLHcbB@4K4S&KUP9z$k?YH7&?o&VQbE+$j>w9~!nsU0j$P*ZQm{*dZOhAwh( z))FlrcocZkBdq^u z$NTfW?U78tYl9j8)sRPkq6tWd8vU`#)DL}F(;a@IZo08EETv^4qf(>zq$Iqg(Kn}* zRn;UUjlr>WAQc4IDq2dt-$?2>Ug6*>%Sd#-=5l_fbk(AV6652u3C_izc`t`Tx`_d^YAy7i_s9bHD#YAGg_VV?8b$*hogQFk zM@HJ{?WCk7FPCj`Es=~l($B3N+!wunoHfV%tjjAXz6SW56p^9{5_Z(+!i}3P9!MI7@9A>_H<$(8S~G9 z9;6%>i)ea>{`(LC_LbIRZ?FYj8`Jn1RIh`imXq)hH>>4Gu`c^0c8*7tjn^op_?48G z$h7VdTr{K7+0-aaQOD3-=4!m-a#Zp$o_ws5Sj%k7-Hv3sr6bE+qg1c` z7Y;SfL~8wtu@|mltnOENFz)H}#gmT*<;~is5uaLQ<{q_`r4N;o)G_!}y-H;OZW1^WUsbTUmC2<|3{Yc0=S(lDGw$#|NLAv(e%LCnU}ygOEISuA!Tox z18XQVC`@6^rq|Xo&sSlVps~(thnk0mo!p|DEZWuxem@9wII+4EpqM{?S8*~y@t!L&24?Nj2O*?oUv`tAa8~yMLvD_Jo^;>f* zQwU|_gzEw2Lb_yJ!+~Zgb?AR@n0<$cK`j3XfoeD|-&XJRf5A6nXL=$I>;2?5b%!x! zRqbhxFXSfb$`ph;(w7GNoUyTVUQ(WUcdo4#0WAMK-)VoFw0xDfO>iG77b(*3)ojDp zS0FXPwL}Zq`Xkfd5_50cN)wN^ZC-l-Z!cT>NJDx_6 z5qu+kiX-8%{f)=f=rY(#aH3dF)f~ebc<%IfPh5&!{j4I;Y%UIK3Kr7_2YH?1t%Ilg zxnipx(TWYN&z%5@;t`6zCEcVJ`(Ly+i!h z|o4gqS=|{YoJj`!o~R&rB%{urt4K^K(y%CJZ4#FCd4`HW9y#j_7)K zpKg0~EIsp8dVMvuQj!=Q5%-B&(bLC=B6gTs(K6mrMkSv_=OZ|dzakUaDK#!@GdsV* z(O+L6L&x?4D~`P-Px$h9EzhSME2UIR_uvBu7L{`+;rz@#ZvsADQeM7oCDES4SE|k& z;okuoLt|ehhFydTN|vM42-x0NQAPfN@gAyebv}+^ANKo(g;r8M-4R4GJZQy}`|nt4 zklw1NWi|)(Dw>@bJr-({N2Fs``T=Zv-QfAKz? z4iIp*qZyEDVxs~a*aUGnssJ-b*p#CLQ+LbWl=WCkhx%gFI&_P_F{gl4o_}dJ7>!aPnGmEWfBy=T5|GY}Tx0ez%L`~SlkdA-F)hQt zUYhbl2u;>M7oN^GR6oOzsSLOA#5K4?N8@#V9rNcT$k*n(6#N^!5`8B0$AZ4*qIWz$ zfzn5;RjJpWvoNMEd+_izSYz@Bk2;?uDS{2ab*@Llz~OM&u(!U_-1t5q3qWUS_4+^K zO0*Khll1Ui*`v?@{SlILuRZOBb@Yq3MzX9EFkwiVu$4+s$^(3NMbhM(E}WMJ2KTqC z_hT7W`A8_Y3}ezlya%GTJ1u53h`(*nmJjxK1*J5i{~jrG4HtW3sEqh{-lNXU(DHkx z$cwf3dEvy+pL)5=Cj>a%4x7*y+Sr&To5yeWxXRaTX3g@w$V`jlkGs45Am-w|@`wQu zod;Od4`#RKSE?8y!sU?@XIc{xrR;h)Z)ebk72bF$NNG+aNcPi-zsI;eap?0NUSs=O zq6sUsbL=0Xua8`EilOTR4iv<3X5YRyQ3!M?HZ^0pa#m`q=(}iIo)Ahn2rc$1Lb6~| z9?7#)iX`iamtt*HCwmNUdIV+Ll5C3pdHYh4hhy%~p+enZ;~UJCcOxq&IPTBY6Na^9;rj<{K(vrh&3$Xt5uJ#K-Ee$dSwXR;dQD2iI-;Gkx}`T0*bm z9>8XEAh=i~x2JtsZNC-S+4DYp--MoprVdWy%uA>-8Nm=GbG+!6cAN;=gG6;({!%Wp zI4vRPOQxkO>z0g175(=@@S+H=cOW76K;eA0Wa~IM$nNh~)=FKY3?_wBrhf~St`QL9 zzsRfOgw1;dpKLrNWng0R-d3`cu`&7&U~6RTJm97Al3WCokgQt><}fvz`_lE*WK#Fz z)=ux%AVH>0%m@P@K56j{9lk@JFWksF&vPnn7rh!{vG~5(G~X$u0?|b`8iq1e(Z$I4P zT}Scm@MWvt*1M~Ta+id&4&DeV)@ompFxy9b@0-e#he_Ws%}BYPXcMv-jN5E2#!sY; zf3v@0==-r32tE=w{``*0-TBeQ@o7Yu_Nfk}A!AoG+~)zn(pfrNBZ5R(8Ox#}u369H z{0XU=!kWdYFR}A6g5uPW{>7I@W7x2v!bdJM9r=ceg(d>BC(m%?VZ$GN5e%K;cNk*1 z@0zz4`v(qhpcXM!jlrSGOd{i5$c)#lF`jOXrhHtt_rX_mJ`T__#iszxDZGnUZLUdd z-%=G0#*St}`nYn{^E^4`6#`{FWyfHbfl={A zsyQXg4)e82z0EFXMer};8fV09bW>STIbEn%;Ig!rTLR&6v6~K6S7U3_X3IhTL}W~a zxSMR-9NUN1D`xq}N2;>s>rVv%9%t*n#CnZ`f`dotux;{YcO|2YUne`MtgqrCd49|m z*c8-|_T~}bt4i^bV~dyXZD)v}af)0WV|GE+IAQd4_PCr7$M?iAQAVbs&j}5TwX^5< zcO#wVd>QK2b|bLbSwj=Cv27PWkzBKx^QgNyU3?d_)<^5I(jQK!vEwFMl*p)IDGtnp zB#f;sD(`Thm7W_6TF_UMBpCKL`M|3rt9Ad&*qh68{^?)C%wF%^ZY98A!WsSVxZX>v zm&z#9%cZ*Ve|-b$@`JJ(JO0>TpOO{gAuNP`7h1uK8%!j)SM&>0XP`myJDDM3jrmW* z^waqsuRQoL*m4)knwQGDP6Tin@Ti{me6Im6^1%ZTVcD9Jb6c-Yt&B_)`KSYn6b%^W z#2q=k>v)8+Uyx4JW7}P?@J~Bte;cE4;=SXx>n7iu8z863IO=9;ky_uY?>fcYacSVJ zkSuZ<57O!vvP(^PuyNW|V{Vv@uN+ThTj$z`dDRE`$PlRe{@}s0uoJ#wbUNdyfkBn; z0W?+DE961qrQ6>xM9a;f;#dA5ASWhLi^GHqmZX{;3(>1g3-hY6V*Q&ZKRF4jZ$+~;tSB>BW8B+*cX9@CyYPV1?t91Cih6aAV~L6&EI(!`T6DH%o(!LF(M64vn;$4q+FbE z)rlRgYcrj0aLa*9SRdTPJ$8LUc(NQ#T!;EdRgbfMfmgR8idmz@Dp%%|;C$d*Khj!z zgle|+2Zf=N=P#|1rQV5HPPyZa{|-jO$IHv-ABxf9YfqfCc667bsUH-uj4KfUKFWIz(> zYYLf^x9=jSCR;S-@g{~$Qxt*9MHJ0S4pYVa<`~RO1?$LO`RNLOhI;hRN>q8dR;iwI zRij_CX<=IF+qdAqi~dLE^bBJ^4ufj@hCk6p=d5`EKXe-t!Vp+q9jS2+rRlNtCr2Wo zLu7PerjwCHzMdZ%(SZ;Q?CXGxPc9%M!6?7m{0WW(=8 znOn`vOBgx5sjmk_ds_L9XZy7-OLCX2UAd@V`Ow}gNlHHXd2nkI@AsHM1rBG5j#wlj zFj>m4MjejG5cLv0AE{&EpA_ESAgE#MQQk+3vadZ&f+s*PQ(f`+>Q0YBOQb|!$}Cb8 zUeJR0uFu)A#6N5N0myl7I_q^0`^E|Di3g4>r(lilTb1~KZ9k5{l;_hKnH0M6DFGkU zo%zQRTf1fIQ^{#Y840AeIf?a^tSLqrq|Brxjw}%#=1xfve0&J!hc-vD$Tc%&UI}h9 z0~=kS$4U#FH6~3hK|N5IG3aRMW?V}vMfhQ#Q?n1aVYUI3S-;R$o?*~n$_G*{Z}9`) zAGwE_ldkuO>Ct#?h4~0 znK#?eRz0oao_bg$S)fsrBvTNy=U|F#?CO$!Ut<>b2zg<=$v>LP(0O)c)oe;*jXPeC z#90X-v}6lhh=GJ>ycO}WCA`dJby6wl4pJ9AvZcCE86=q@Kcb3&%$kQ0*diH~<666)H6tgiBKy@VVp#bKS{h zmWl&!9sKFnZSscyx zANwSI9IpDqT2PZm&}XW0E;|?x$Dz6Wj5b%RlqOThR`0K__5tYc4&S8 zS;O(wMt|Jx_~HL^c~v6LmEW|0`0NLODV=e|OMIAqB4?z^@M(5h4A%TJ!-{}Dw?osu`p`{YsnQ$TV_(@gEW5}-35GYp+iK8U3B?|=hW0@DLziN`4OeMs0u&)>YU1z{DsX~ zZ(X-8TYkO4KY@&}JJloR*fCa7hllhrau_*oZeVaAgY#=h^=>a+TGmh13bN83R#3d# zRvk$K|2;J_GPV16V}nICEnc@g8cVs=t(fuUSu{?4P|BB&*(W1#rnfixPC~1!c*iNM zLv^FZC~U6uXvEzlv?oy_fMw27_gx3LyK^kz+6{TXb!NMf0)hupPww{+J)f>LGAoHHVDfNIz56V%6Iu_Mb|dz^zZ>W{7i28|t~`=b+!XCAb7C?lH)2+%ViqD@fWgcQ zZl$m!4U84Mc5j8JpznemtMkoX`n!@E_y&gS<|>6@LJTEU%l5<*2R3WjIZ0)1pR}Es zR%(}-2xMCDbZxBcQK zn0w{Qajqc1t-WH~4fO|!VasZrZPjj$_VU~KlVUTncGSIvyb|f;#4s)ex|Vv}u}`Nu zDsK5m&M?a)Ue^A@a*zr%|e63!-O(**2s_E7$ktki_csmF%K?XUu#N~PVGKo zk(6SEwyn}`R=J`I%>4UZ+R&|Le^>gmiiW@bWcn7St@Wgx{XVGv3c1wbmsvHGU~4%k zE<$fSpcvzT$R0FO+Z-8D_mqu{F>e=S0pWqzODK?m2#JW}Lyw;e2fDys0nRh%8A;FB zuJDuIbv{KW(VTkb!Ohp0h3p^vWBs;k=Y0>x{{$0GuV{v^%y{ycQ0J3{8c3L2-OR5Y zy~6x4`ub~C;Nkl_E(E{V&6|3jiBR-Tm=nW~P)DNz6Q%H8foZYz#+iDM_I)?>`{SJP zJn6f1=6gWsVn%wuVjj4m@%)a<-qtN)h?<&97xEL8B|$Nj?bpijZp|;jQcxtV@ zwl`4GOVrE`8D449FwUBeHQWq5T+GP!RtvklFky)WmhC|&1rnRnm?Ls~EuUD%dd7mr z&Mb4(fH$5Pl(t;x zVj#!2{+9o)c34}6JLmQ2vljIF!< zu?i>G!mG-jq|af1`+z-GCo|K^qyX*J;NI`%s=%lPfyGVF%(Idse#J^OuaKS~+)&hx z%XoT6!>aXFx{9U_5PR(0H2`1P_?gDDZ$gCihGv^}r&Z@KOn8C)m&n!o4nElg=276& z-q%?JH0bEw6CXm@wD*v~mfUKaM5IT2EvRHk&JuhWB%mvOkN3T|;nAb~ke2z=+HHl- zH(D!1CgVyj1%?yBuaT3!d64PraoB(7_8f9dX|X&;r@P4~1JLiLJ6^e~KAB~!9X+I$fT_&(kW@E>qP>o$l# zB2L&f2&B1k^9HO|Hs$}O&o&uKm~3ljX{iaTDJu4MX!FRC7GX~%c~+nfw2Jg{q4f^5 ztZp=^Y6XJ5fXwieGe>%F;8ekVaEN$cTH>a7f0j36iDN$URya>y08Vc$Y#$;tTJ*r} z&!JFDl*Mw-{on3Y!QHp$&}owL3jg<1Dg_O!1>SrGW!oGDvLQhPNAGP$$%KeQ=>pVz zb{9Z==MB>Y^V{f{(zXn?K@`-3mvg2*Rk1*pBbYJ#Jo+@vK7?WX&l|uRY9z1)Rr_9h zIoDF7NG;^P=Vs-1Ms|W{`LGMrxk}{K)8?@(LUrf(G-v{3>p2VGfbL*MO?Ik^yDMLx zF`3>)g0*H9nxzmNhB=gC$??`Y3zp8)w~4P!JH6Q1v1^J0CgX!TSC3*G__u&_hZM`Lw&Tk*E3m5eyrk)C*N z?x=0Gj1hgKpf=qY?7Pj+r!-Sct6KUpb5b{=66a3LaQks+{86THVmlvfnzLwprfsRSFZyc!n%(-29B_9slgvW;wAX}% ztQKtJT2Vea+l-J16QA!0>mDsHalL^Ca`m}nDPA9_I%-8_Cy)sxTaFv4vGWN(U2#!o zR4#ed`&w8}TcgVN_M-gcR*av&5{>nyRtdJFC7MkSaWKo+)$RIm=l!MfSfEY|9uZotVdUPtVeD95lyT01J&(kRPrl z*y?tS+Thnx;@og_zg)*Mo8v*|bTZeniHHwE=F04f78}lwMW9I(F`V$lXVbZKf+a%| zhKrJOapFfoq+yc2np1J&&SOw#5QIta*%T+xe_3|4be>*4NZ}y-Vzg-6OEoQ4XfkLa z*8Nk8S8OD7K9k?Vafsz~xoNe8B!w$ZV^bXdCwJ%8tx1Ye53wnn073vGX^2awKuW_` z(YGDm)evbFc+gi)7Bt#U8uT#JR&+)l>`PE%mwy#70x4+FK=O^@kE7+5h;Za2Y^q*0 zKuye$?;0pjOOqs*aqq2p`}spwjT*~z`;|0 z8ypxaxLC zE64qHkP0(!R(0B!$!ZUNU3EqgJR6jB=>O(Dri#h1=cvsejQ`4@9o<0ZabR%Tr=~AS zhY8U+AN!wk+m{njX_potm@21&Br;nnv&bYetE&f%`TBj#Kyb2VL)uC9VY)YV zEF~JS0EN+hhemTc27Lq0@;Yy*_YVDc^R_~1iyt!Ht}$f-Q*)4G=lt(^udz~P1X*aqwH=mBfhHs4 zv*y(F`sycF8qCm{1tQMD3GXh1A4MI7b>r0(SoX9y(K+eS?z!{b4&B%S*)!`LN2l-K z`LFMKZaUJSDPr)gN<@&QUf;GUSei12J!oQqryS%1&q#T)EjpHCg&L&glE_TSA|!3- zSiES5Ov`-iqenK2YC+{`6lh9-JHhl(z3T#*g`h*^Gy2+9ov+OOsqoH6 zt~X(}>o+?eapzcElVc39DegN(r)T9{ku@fg#B<77LpQwjp4A*yM@@*pG7oTTn^W7ZEcwKWhZcb@TQOG}3K*dOOFhpB08X2#C`=8Q!_g=V#;{@w*(P&a7gr+(XF2U)MKu~e@Um$>}$ z*ev69qqFb%OSb_>eW@if<5c&fLMY5z>|FxBg*L9bZryvdJS9y}$=Olsg9IQYNt>2C zcwpjltGGm3tZw~B}2yazYHJ`vba8Eu&gAMDkanF)HLydO4{@SyY3hdj8RB7-8_BVg+GS&-X7*TFM{xpw>P=DsHt7^ z#~aE)RNHr+4(G{dyzi5uldiYe&zo|Y4&O7)Z1-CH890p#^b^Aa9FOugizgn9Gf~&F z%r@t%K%K#~M<&R<;lg5laD2I_CY_xKT;un*%U68h5sDokv9hc7Bvp>6hK^*0E8)`n z+6{0_pYNj96i?-1^$2JO+HY+2W(F8xnWNP!pgHB%ngBeA3io1!cmH4jb;{BE4Q#sQ zIB}E|F!1wz>Sv>M-r=o9|2-)P%>o!$k9l+7v2HN|y7*yfSX622<-o~B_iyFzX;@@P zR${Z^B589+=W{D-TI&cSI7#6oU#@=(!;khKvOi@{c5G3qGq$eK0HCQLY$7O`tj`~u zv!i0%w!Ly$y?Zw|lG$M9np2YH4YbwTy}k`{%OSDOLT-v55=WEBTV9xwY@ zb7SJmne5$i*z0WS6m;x>e!138d0RAe{QI%I$=-WriDx#3@h?uM{f5RSAaxno`Cg-; zptr62PC(UjAIVzp8!WG?XFmCaCk>orFZ`QjK5_4HL3D3LTwJg4a>Y;57dz&h!wa5Y zh@EWQh~@M`-16?Z{%zD-gHml&nLDg_)6=kn)k=)+FvzMAC^E3=m*3jB9Gg|LP?8pr zkV3mjtXg%>oC11NY^x9rjkU2)fQ{y;^X28yRa64K1uGQ?FW`O2*<}&b{N^PBA>N*r zi++p);^RDC<+=BeNok8CbUpsIbd;k8b}rNy2~UgKJQ*|Ml+AxtrBhn&%bMeDM>QIT z3+Un~Znc~=9S)FOhH5bx+Y8WT?ycFt7+Pa~WFMr?{R_SnRm#cHAQuW5=vwga_*w*_IhbHQ^qm%^I9>TrrpnvZ1Z{|djv%~l$13ArYOG9@)++> zF2{SHYag!Oi2RF)cgYkiYL3qf13SL@x+)yEO@}wuDR!_$3&CT7^ zm`RKDKyV*3xzcQh3L)P_iGdaMi3Owcw{O#Wc>1FBM@FH@cUd7*nh{7AH z_?^^iTfgOw!SFL_=G%VJwAmWCLd6RrbTv}H>g&e-ewb&!7v~~4Qm-!e&zPM+sO9ST z&y(wiudL&x=ploKC~qq3-;K*@JqTasv}J^m^B&GuM6*WYH}+F-U$N1&XEw6-_0Q}B z^DCQJ;}E}@0<5nB#7lGZhR=^A3LuD7xr4qydsQD1}x z_(Hh!lgmo6z^@B7hNmGz-Cr#pVjmqqRzaj8Z)(tZ?wGP+@E5zDLS zm7nk|hh46-{RsT;QkS`)F!4EdIB{u2oT1%YHBYSs)mhorZl-^aV~zT)8jBkEFOS&W z^81WWSW^BE7SH}&U>5)C5dh$fEt~)!ME+T77wx~_ze~WT?tmJle}8QF;@?(RlK$V% m|8Hmh&j|ki-Q!Ou4(Jg%0mv&4`(6P6P*v0dSIfWq`2PX=pG6-4 literal 50057 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ℑ6cpKPkBsq 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 nOC7iVK2b>TF70KODtRb{HAjRXH5-C^8{ literal 97271 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 z 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 qn)d&`5>Ebq()fR82@W^k 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 C-UBxP diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewIntegratorEdits/baseline/pathTracer_modified_sphereAsMesh.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewIntegratorEdits/baseline/pathTracer_modified_sphereAsMesh.png index 37b945dc99c46c354066bbdf729ef0e2913fb3a0..049b7f3f73c06d90f5f132251688575d3fc45445 100644 GIT binary patch literal 93497 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 z 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%0Dk0i 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 diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewIntegratorEdits/baseline/pathTracer_sphereAsMesh.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewIntegratorEdits/baseline/pathTracer_sphereAsMesh.png index 05749dd94395b619f2addab95122b9d4e7d681bd..93d99a113e71da0980be00730d2911d7e1e66f5c 100644 GIT binary patch literal 101061 zcmeFZ^;cU@_%6DU;?|;tqNQk%B8B2bi@UqK6n7~O1qu`k1qu`k?oH5^QY1x#Ly+R` zZYQ66&i&!uwa$O=&00Ij%$~LPo|)%;pVyLj4K)QqJZd}u00`~NETRD{qUpb3 zAl6j_weR&drk%_=nCxl7{wr8FQcDUx`qQSj3TRxinPjtRPsY!0#r$vBy@hCAeT%4F zgtS8XF^I(g9LA{6JsR^J=%_EFZ@M2CqewiN_UNT?7+HV)Pvd{q;D2!NKeF(D(Fbb| z*GmKLmmCaD;&ov-Z?n$Ab)HwbTpIoFHe=LRoZDCu>Hc`s$^TE|t-kg5r)C81|F@BG zvj^l-ILPvc>yVHR(@x3}TVOf1(f@@w?5D*eiL_*^sKPJv+nX-58GHb{69A5ylN7we zMWpbh&>hfq0HwMnH(le$>+uA%0Dw8J)UNOgzUEF@RL3={g%D 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

      f~$m86U+p$H>dAix9y zW#wCtC20HeumAb3-Mav;1M}G*YbMZbO`WwP2V9uy_)Bw_UOoLPz6Cw-scGa%0)gYV z&j7#+Z(R*LA$2}3<-)Ko2Me5;pDt2_Ko_zQ1@Gr^p$m_B$TPwq7A!*uwE`ELIi>Y( z8ESxy?P_ALi}5hLEFlB>&oHjVoi?J<6)HgTPB-mlX{Iwxa^f=|*Lkk%qRul0c0!2K zno$}A0i#p{VA^P8i0I161R5|a7*&;-75<(&yyrWwFASez1l0rah?0^goYFyM@tT-sZ`Gt>2xxEUAqtGy;GAPD z#Md6W>!tVR2>~Rvq5aVG$*|4Yh_e1puMAPzCz-(0>!TkxAf!w}(-tkHJT!k<3}n zlCqqD3Q;hJ;S8u`$w$qz+;v?gl_&&((uJbc4L6jxwx(|cOq(QTlRz99VN8!O^K zA(^%e`!ekf3!|qZ&5KN^!liD*Yj}=_wdgiouzKY3)r``wwx%~a&-GlaxCC3zRs&Q4 z1PB~EJpJOUivXopauCH~gAWZy4^N#uwe;}8oiA0sNv*YzqM!8pNnhq_y6N{eXs6X_ zHk+u@FjY#HWsI?+5K^i%ODUmP$=%F`cni$5NeH2o1%Xc~bzK(?Wrmb*l82eU_CpQN zdLLUaA`HVcO*i$c*19T~zPh?9rHrB|2!d9tg}88=Yof{z!oUq&siowSDDv>_Q?IepT;!c>HhbF57~U`fmBY-|f2K1z=csbf=8CpQd)`MyXm`|;2Y1_r;AljG|jS1N{KX7$8qpk%rG8nxZPAbj-$19T{jFvDP^P4kWxC1 zPhnfB4~tBcBLQjN`c5?as{1l#|$JF2CveZ=<_$ z;p&B$$4K(5jqDm}(~tZ#P776_sS~667-9DvnEBx6iR-wHW`n2Pz5<#wGm&8_BI;9C zFrRt86Zo!gCNBhMyx?h(a>>C1;1Ib{;0BFGLvp12mE*&VhQY6qz?Y6pVJ!%)HHI|c zg1_9r(2I)mDWxn#;kXU}6r!M%id<;WvXB}y#zH8ewA5e!v#;;ovwJXoV-s}UMTan` zruk5@5j)_4)Ey_ry*c1#R)Tm}gBC*k!?XWjKYJr;Bx#~SW6g)46MQV}8xeE}l?Bzb z+j=N%*N{@&A#N*ZIn=S0pP4VpaC)ogXz9po(3uAr+5K3eO?@1FYZPv#MHqL~quB{B~YyI|QN zsQg1nFAT#_YaIlEQrd9_wS-J@INQ)?8&nPGF;j32*#MNIPFFcT@;vW$yMMU5wUW9~ z6k!MlUeKJ2^CqSAtM^YEpc#gtANqm_kqAauNmBwaQ6;}L{(~XspXpT-#(-UiW;$fv z`o2GM8B~M3Mzb2(1|VLKpibQif?KLlYYkYZ2@Ad>!ozhBr4-9tRI8{0i_ijq*@LPS zhnyLE_|zuZtVz>qw(SSMp2yKzbI#*9?)UpQ-gx88%*-#{Grx-b=IXyJ&lZ*zE?m11 z_<`^GHDk0LA`MVZh;HC+Y-|W65|L=o#3QU=4Y%RDzDaFmM1wY2LNLgW5{e<}uH$0x zmeH@cHWyN)MVc2m00d6pGe7jg(i$@YQth5T9(06>#_0Wl1yT~@T z*v7WGsarN{$4#Lc)&66Lr%xhHMnk=mtuu#}Y>ALmk@B?L?}|haP9hdH8jVKOK$9k- zw?Dpj^10LVFiP3jGB!4bv=pV(SMHyA=9NnTKnOufMV4hp@0@)9!s^^gmSq{KsQLK& zLVKguIt)XlR1}4jve_|jB>|aQgX|7d2=v@UkS6O5%P- zm>alxnk%jHBG+0gt%MSk&@c#@WS;8*lmJK;k}_I|0`r0@rIb{8nrCVD^{2i*H9fV- zn}r>-S!odyoNlCw1sqhStrT8O>;te#V8vQ!rPC~Z?jN7SyPz)<9jlJ-G}}#~1X!{8 z#yX03I(l&OrPIr{cGQ)_3`;4QBTI*$*0>holBYZ^bb-pxcYI7NFk0 zki*#$?CI4g&N|b03n!v2#!(H11t7&uxA;GMV=;*nNZ`h)PB&p=oiU6L8;NNMA^Z35 zKYRA9-8LJ$8&hO$0b$lySf5sFErdXrD1=DUbar<3^5x55MFLRD0Lr8%$Tq}?J!VBC zKvjeRHXF*YbP?h|Eb`E7Hvi;--QWM&lIyz2U^LTx&BBbWYPZ{(XmEhJ3<>}R1uuvt z=HRV5YPbhrvpQ5({xf49H24n#+Yt=m1+nFLz({pvun_`TLdX*j%sltn)n5?;4tG)Q z8S(97zWcq~g(>d3>#laY{i}4#FD<`u`mZ1NuUxybv~ex) ze8!kzc%sw{p3SjlZ@pKhuyWLTcOA2rg;D582csJBm7D6LXg8BerXov=1m8rv*`@_` znTw=B8_XSlX!`pv&SfIYi(IHO&RY(yA;#p$hab z5|=Q_k|Zva#A%%n;sxG#Fb)Njk%)wNfyXoM1s+~pD=n2I4vCXkIx<;KzW$Z3Pfbl> zg9qr%+O9eCYTiCV2CPei=fJ4L>I(R+aVy&B5CE1}mQTNaI!?;ken?eyU6=XH4c)Cw zi?)=jU=5{n)M}> zCMPGaUE741%{*wgZF_#oaEcZH&{{`PgcGH~I$t}y`|n?w(^d4Fap@s~lv3_&(#4H3 zw-Kcj^M09Rn3Pgv=cBh0X^M=oR;z_I^KkMtZnJ;$$W8zGg$st?VfT5KWfKz&OVz?XC03Z0FZ3n8=yO3R8%#>|d4P1E%7p+jL54d3xIkl&#Ahb+q$uPvUN zKbML$@2L5s&0NXB`%{!+yUXt2obc4jeQnt+G5*N+Ijd7%=NxN2oURfGh(R&f9cu zb&8pE24+%9T-Sa3y|>55#`8RvN;=GuOo9iF=O7%!%a+c_p?M0-PYWaS4o_jo!Jyfs z#IKmUl}jFrSZm$z8i5mF##fV_90j8nT;Cm}(IJqfC12nCk}q72%V?HrqXsGLx1OiFF44f!VbR5K0LpcWJ#81GL^KTduPTd4cqOu8UKV3 zr01DdnF+VnnMk{*ls22qFWU~XV53Pw z$ddp3*&EXBxU;x0{8pr}gwh=o2Ogjl7c+KGu9=`G1 zV&?mP5Cj;)foq+x(Z&>a&1SRNYyyBOS|WtVvMkFoO6iR^-Sle-{)68f{MYSwuU@;l z++Rli9`-eYwoR@z0)FT}{J_KyPF}^AjaB_h_6ng`QMTD^P|ET&CzbUq2!kxi3=T_+ zRBFj63!Ttop6j@bFl0?=tqrlhkOlH+aM1Y7kG#l$vpVbp@FO2I2keKy`0Q;8buj8Q^GE?Q$P0N^?Id=LNP$EX$cHhL^@q*JWL>&ZskYPF}Qr^j1k zVGvS6SC>{D*C}`r_`%*?dnr(tx}C93f2|+-A#+$3XO8QXrb4=jb2;qcvztvSYo|HD z>|9-2)vITI@Glp&*2iz3`lq)q_naQCR~TUkmj`8Ose@#FJb*F^0LKqc8>(b=OCXdS zJv4<}O3)y+%mpu$htY?I%+O}tY z?5#<~k1Z|Uh1mTE^v$0x@h)eQHG^gpHCoN4Nr|}~`W%w27^>HERvpA#NAUq8=)FeE z-oN|uP5=A1KR9u4_W%Cp_X{DCG{p(s6m38w7(O660+muzQ&VV3!vkE`#XF9TjR8Ou zMd($^Wlmh83dI=9d-+IJH=@I99PAN);fp+SxCfx7}A#)d7%mbpg<8_89t#@l6tfo zck?3Wl&5)02nn2EtUcyaKX3z=xlto>T^C^=w#OhpSxEfoxQ;AjYpg{HWo{Li82E${ z&N&GQr#zJ@k;Dz$rrU4|r`>87yufvL(oaMt!e$sXBjz&3Se9g-?|Fg87y||?t1A#` z01~+&5zy|mvAd#Xl=U-0Ng<0~+*|LjYY#s9;6ulER{AS%y!FOvwmNrhZl$*p1c6e@ z2^`GJB@3ykF0IW&^b>*r(X60xcvmdbq9}g${-rpH2_+w0>q%F7%)>n3gb<+xmpqdh zdQamb&P0|KS;7;kr6>e1_}Po=T5AQWP(_&vRVxDI;#`c&5v5cii$ug}krE)06Zx+1 zGM7?H2_4Wlx9|Xs{Ag62(RPE$lvsLk$fY+3epi5A)$3PL0MKYRc+N{YF;6d@UzJiq zPJHHfI%AC}!X(8f4$PjNAK*yD0R|1y1-cmk03ZNKL_t*8J57l3HpaB^@o_`Pz}EV{ zZ%@i#z3vkScVR3%*oa^269;#lnd_N7#`%X9E#w*g{M?4``yXCSAGl@5!a64a2nfc; z#>U3RI-L&258zx`6h*h&#R@p9tE=5^7g_tgUQa2tzP_I4ITnRS1Vc0-ia5SQG%0w2 zj5hPuYRd1Pd+u3WTpU(2HI)gQHIP{enJ(2@x7%&>av>?^=_7m3&c{z2nEjxFUr`hl zMe)Re*)wy!D2i(AB)o{Z;|KFqrjDv(?IzhT(Hvm*FvjrJ*uwxN3`3-@pkEE!?|Gid zd0o4dJs8eh>5~c+;#~mX{pw@Qvrvn0M>%nD_WjHCov``s*y#%hA-LcOg7DWB{0_ff z{HK&!Sz9?be@;{FI<5)JD_d4^I{e7blf1SJfArz$@1MM?lu}H^Nz5hp1K-o0%Up*# zj~<Ytd#SL6qP)uHo zp~Qd*uB`X!xQ^pEHOz;`wANUww_c73FYuB$5mIo%x#Bs^NkXD9@*Th3Y>QaznAx$m zw1zr0PxFbXiMSUx+6@2z4X)?n+A}Zme%?==L^4Tp7DCwe+s$Unp^Q=*Ho~YCtt_nU zoY}dtx-l^^(O>RQ?3lQ^aJ9#K8^wlFs^K*nVI%UR9aB5judNqFF|&83f33e`W=A_} z^OUQ;(o{!{$aj23ncxCTObm44=71zA^ZE3LHDvXF%ajWveK zTxD8HEpZ6~7Purp7-bBY%RB&W3Trsb;RP>LkrwIxJKI;^lfL77j%QbO7&tg9a*h3K zcN|9+(rC3B>1O0#ywo;i77X1RIk0UH5EzAO!D~c*NuFR~Ba)HGjRL5cg`O}o8r zAqwC3G1?uuJi6j&;K(u2bx5yJRc09}WhG2rTgP*2Cdyhj+IyZj zF#ElqUc=*ush+j*MkzH1l-d5aef#Eu2GuF0gb)~1jupo`osP-Y{joa6zMUC7sLuc7 zzNwK|@RMRhs5)FqdGHUL&%FHM4;LKH%k1q6;Qn%jSxOjepOHK)Op-e4C2|a%?HYO>@bsX18dI=#Uj6y9nqs(>O zzzIC&g>J|Q0|^dwC?Ov6#i|p!;m)z0E^#}}P8fu~@2f(2ftTeO#!C>Fq*NE0w(H9xSO~!=3rXk`ztik6V6N{9E;=MLs;TFCaW|gYGv)an5TG9Af+sw=x_DKFQU-EvelB4N zC%n7SU0hkzj`l*YpY(abDNtZgLT7+1%U=KK>(O|`Tt+A%q|5-v7;~uOIiAP7&^{t)%xiCYLX>9;Y5&|rpAE;rnbX%+JZ2d+1S{a;iurr`iTc- z4MeDApMt7J>zD7|fk=*7C0or$vlFbEuJ_)1@4~_Y_Laeo_^o{l$8kQG+dxRibME^- z)*SadZ(?GCb51G!+Sk5z_Uu`NjHqCOAo%8&KYwXep|1!%j(*faPZF9#0YFNLXeRIj zN+>QAa56RKVxzY6Jb&x0w^mkG4jw%Ct#5tH2D`QjH&-T>nGP`S(Dz%d77nwEOKF;> zh;)a`6V?Qcr2z2JLRwQ%n?^+i#Q)^}=`(XZt@VimvmeaI_EK#4c++frQfx4SQKi(; z+b7AzXFl+Dp;7W|YA`D7FN29&k@H|gSISd5NsKD)g z`}S>YYz!YGrF{R=YM$p46BEBK@+bUS@L!(iE9)!g=FcT6DW^zQ=Ij6fB$Xg^tJx^* zi}<0R#wjKYLvkQ$P&4&D&W?@{Lgb<~-imv1k|cfJPee=_)Yb0f*d)zq5C*>Q2Vsz>d86G}xVSL2dusK{ z>h3+eFP*;x0W7U9Wh&jVcPHtR$?3^vv$?UnF}Z7!XPi0A3p_O2E?rrg+C2pTz4cye zthIDy2>^CX?*IZ}BV4?^xN~;r^3~;?vpd(9*LSpb?3~;w3PA*M!TtGrKVRQix626) z^1Mi;p&o$_0AV9c`X&Dsv#KKg1^`}gtu>~K=86kdKotT3)xrqvmSqwRUKS-64 z&em`?{=);XF&J?9jpH}}{i|1S_D8#7x4V&Ld85&=mD#RcyRKfnsx8;riG#Z^OcQVS z#DUpwZ>DH^p7%$0?=U;J^2ycS`x6h$;=4dyWqT0KSxTuq&k_FtK&#b4LP{-vg55L2 ztl+JJH0)NPzwmmD6CIRLJY8i}RBg1TL%JjcBnB8lsZlBEnxP~Gq1ODbmhJ{A2}$Yhy63xV z-8;YdAuK%X^S*mO`w0a>>;ziC$@pipPIhe!q2DS(9No}Y8yRWnfjWEmV34*~P2PJA z6Jqd-E1r{ZjkVveBJ&u^S_>L>)%cgYbbNK*PUnZU{+*nEa*QUPCw|}pdIwwyO6Oye zGT-P6OcePixstKpLM)U+I7T%*O8u~pa1z#ubTkgPDlB-wBgHUj;|Td?J3wSng=s zwu7$s(%g>I#yJh0^X`>b@62pqY3j%}`A+itq#6!(_7+Qnqih)E)vH41+SP1~NH=R- z;N9-odh0OR8cL}_W`T65(zw-t@)ELKC_xk4jBkiVS&*c&tz&QA@$YRxsBFw1_WWPe zuK#{-`5Ds~m*h`TRi|;k|7GU=f*wtIxqljp&_d_5Fdq6_f=ohV!XS4J*=5Q86|c7` zLy;44sc-prvzxM1`J{@fl~F@78Brs-NZAGC)p)53&I`4qu5n$@rm{215!Mc_g=Q!g zEm*D8$^b2~Zi_SCmyjN*x{lNUPKuLYMCsC@k#WoefY8@@um3t&xJ?1*;l}c%So9(I zMAkyyGW(D0+`=e+xbb6np)45msd&a+%PlUP4V^mF*LfnuZV}GEwo=)vp`k`+<2g}v zJCA%(fEFCL5Uc;=JK2lQM0Y4F>sIjR_(kKiXbSPq9!&{Twdd8p@A_WZ0%=iIw&vYp zNV2sN4pG~t0Bu!r=!8(5Qp0KKL}WB_!qwmyvTb#$$ z&wBSXEt!>QzVY$2{i=Q8_ksLZX>2A3)&R{+{V~_yx<`s5iX8g7V{v7TlP%4TWRHG5 zOp=7SlM+JT!@XKLm}Vr)8d(N^QNFa9pPZig^{Ux;P4VbYVTxe^iKKGn4bHCDHa z>2&dqc}n99fxAb{F$`UEFp-3|y#FO9;Hd+D6G?`IHOlLLuMaM-^iYQtK8d&el9->f zc(<;Hi^%}*P}J7>CYW$#|IY$JiJCGxe73Z2u} zcVr7-dQZt|{!03s43yYn%VPVL?z-Ypy5q;sCMfSN?#}MUQZsOpUv`;cA)#{$2nqsY z>B8zi!HQ|C57l3|%*M)8xS7nRGB1S_Sa*hY!8IvY+xM!cmOdpmaA*RM4S1vgl8&8cp8Soibd}ht13R(RGgra z9dnc~#&~BRBEjku(hbfNr8JG;ipQPK?hD3Oe7vduDjmO&N@y^UYCf)G$T*{IT=Ba6 z5>U9VxL2m{JC!^H5Vv_ppX>AlvM)#%%>EXrA1m4ND-o-R zmQtR#t^aJiD*gqoee1(9_U0=yZNFnG}d_K%!bO}rjvh1UwlEvBnCGdG#9u1Ed| z@xJGG-lu6iT5S9}*RFeS^Jl-=hL6@SATctrW+jqT{Ds(04$?UtG8jD2?kGxMyJAfD z;Ip0o*7GL-NI8}CwG#J`4MIBvVvHTiq(KQ_$xdG-v{qtaA=?$4kL@>*#IMrKbr>&QPmiYVw{PrciNu7uaB#tvGq=B0i}jIRN?0%v*bG9*Qn$3yCB4^W-151k;vovZAyR^x*vc>H z5}0mFv$B@w@zu4|O=myhff)>pK3B8z#F7`UnKG^`LE*%+yVPU2;KBzr%~E(AB@5|=2pAF(X8t*HtB;o#4Dw| zciC)6@rg486)AVq?Jd4UzFxH;nt-QvpK(N+i|HIs`Jjmr1x9h=q4N(VQ(~jtPbF%E z*K`+yMZ!tF;Xy8+qSZ*Z?#DU*%wO)-<-A29nsYM50Bj5<)04OXShsO0F!0)f4@IK? z{6T2kj)+k9Zy#B802!_gS0=zCJv?klLvOb?Y@i^brE=9*pOt8RwR_}z;>qTnQVNs! z@Ef3KSV_ea&>-#TSnb_87Rk7H6^BoM?9ZuJv!gj#0}~F0atz1uWoG;!xm;d-y20J^ z+27w^wz;nErxkQN+C1ngD;pL*HPzApG365N2t{qg1Q(hGK~v6!6yy0qA?m|t9CEyK zc2L-r%~45%z&zDW?D0jq&ale|mmTwMm+NaVJ#jo4bNFr?5i^uHBgwY2I-)ye1-VZU zCj9Uow@Yvfxl3JFq07HA$>yIjMIxerFD%@&YyG8~E;^%{5aA6{0R-Q8bV5zRNv1-# z9-IDXzIVpf8KJqfohFJBtNg#V##cs1AnEOpUA+ZNw zMbccxo(9m_5|i!cT+|iH=V!xoV^bkVkz@+cjk@0zhFS)RWlwsqX$9bM>t+3I)w=b| zv2x%^1znBJzfTi1Ew#h7H4H7r$%H7r1g%K@={?wg(L%t|#7w@FnO6`^_Q1#TXmI z-yE^9ErnD46T&KQzkZl{{ooi$cs6ewt=sOIs#3U5m6El-#=o=b;eC4P(%7?rEcY#a zjT?awpo*j$VF~cP;sMC>sqzp7)NyegOk_E%Mc+T)vcC7TT8#*em(K0GW!|?F`~g@F zAp_MVASP?6iT#}Ud_AaTFfd72n4V(n{!%NUUrA(2tDlo z`P$m9pAb|lH%;nJJm+Mp6?8}$m!*jo5*)A^u5&*30sl~z8nMBr?mtE&cz=!ae06=@ zzi|p^hw`F@1wMTET&{5}v`>7AqQpA`4tGf74HSDL%BpZagPk6yn}$Ym0YVv^xLgLw zx%M!zHC41UHUogd@XYBG-q)s7wKrt*Prj8}d zCJcTh@sP5C_`hf!z0oOr%r^6MT_@vW#O!Nal+6#d3DjZ@ORje~Kj)FYekT=Nx;uXv-AR zwfZXyE{Le%?3i%d$nb)Jo9%9Mj)T3a@*xFOa~#ub$@rx-VH+{y10T)VHPt7@FOMer zPsWsUA5gCX$4PIm2j=K?^3Xf1syTJWYtOIrb+qvwMC0;Ty>@$)y!jDoY=BqS+`d*4 zdZjYZaV!~_hZx6$uvvvR9emX(#2mlKJbnVH3)dhV4Jt+?%ESk@2m&q45lI8IoG zi;hekwXcjL;A!uv@eS7)4x|_AioPG;hvnj8pz3^FYN+M-AFVSNi6edQcEfU%PZ8k}KL&rP5^LZhO`iU;j(nVYZbMFQ?b#_~y9K4;~| z&v(J4!I{D9x`OWE`fYsI{@2%4DTEoeu>{2$r6>zq$9l~hB*?H5b!W`{3QZ4Uv zm^czirT9Ir4p4{UeU>+Pe~Adci{MfKc6yn7b_`f3hGqEi^i^|`7>rD;!<5N_E%TnT)NEUd?IYy`W%4gVX04q0Y48t{y0K)F~G3U5#pBnK;IK(*< z)cL=mW^cH1**H?=yv{||qwY;~XF5S~IcV6{4tdV>DSWyrK&A(U#&LdJ?fm+n>1dC< zrz%c#OC;WYqI15S6&(-moMVhy7aAuh^Ngb#VvK|b8TsN%;4oaEhN9%rF&Tc964{qv z*Wr%-HW}Ed@d zo<>WQf)z8cM(~)Zw*4CRi^!K8cUr1>Gt8qvVnfhT;|mJnV;!#1nfvG%RVno0T;}+g zCSw_Y)Nww;dZ}U`fne)d4DP`Ve%edKsr7+uQPZM`cq#$zWrS!U-atPAu@()nsL?LZ zjrTpi4tp3XhC2-aIXKbq58c1eD{(bZKA%lRS0nS+bzl( z8y#;<8*OU?YS?R4#wC*rmo=~65=}~OZ5!Cj~aWhrE33z6N2*~qp$bSD556^*e??IY!SY*AM3>KiZ)q%e;n9v zCagoF3R9RyGhqueN-J~?TBsAt3*kZ6CntYS#Br$XXn7oRsI6>k!P_Phs@&ki$a~RV zwr&!=CrL01i|)$N#BK9ze={_7jXK64P5Xu*ykqE``jM`G!!B=<&-q|}mGePRK(eq} zjcs&f#P`+54vUz5&vh`^j=n|+Zah4A?(jQ zKue7!i(y1+6WX$WdwuU^zN+k$NYdU|OD_G_f@g7Q-Z-KpXo%!3Zz?#UP%`md_XM}r zevmX)WS-{SJ8@PcqS1+Ux|feB+2(|6!4AMp9jEY1lvJ{YZAVB+mRQEF$H?bk0Z)*s zx6qIRF?m$i?{8PGB^N)Fb)&IxMy)ifHvOLEF;usv7Cc-l#I*YjB3lLtuZhz_`B=n1 zP3;_PHi+gM8iY}x&8jd3QY2M}Zp=6c)tay&cxWStlpJ3Q~&bij2&wNXYq}`a{rqt+o?z*zmSzqh`EQ7A7POleF)gjp!O}e zAvpB>tAP6G9mgbZ1SRg*LV2dL+UPO9N{sHGhh=W@veaipORN*7sf0pJTOztrK+yih zK6jC~0*)bC(Jx6|d(q5JAq21Qy$p`M4_yiAy$(;={@q-sFZvq#;yql=;y8%h7;p~P ze11Ffcv|2k-=a*~R8a~~vtAk=9@aGewT37@z&J`8Hg!!{^OSn#Bx*xui_wbA1&^OU zA9ncs^||$T8X)N6nsIuZuQnbp9{|cMFx>xZ2veZN#SjIKpXl7BbRIX5@ueVf5h{9k z-F`7ZAUsb7pZD&_0)?7tou8iz3JU%bnR6nO!s|wo{A33R8>S#1asBgdKicOPq3ux9 z?c6`{vRK;s)UaSRcTtn=>hP2wD#MiX6HJ@t-CmsG61_DpLQ4GmEyT~XM2!b;nk!Nw zD0dyJ8Yg{{KBrAnZTTF^cehPXaCDzqCBgGOvd8YAxnhIQ!NDOsJX}WP;ma!@#*^bt z)J$lB3Y?ExqjXki{8eNS$1va?Ik!J+`OdC!t&~)XNZo=WxVhxMIY6a*=6hfa^1tS&)~v#>DO+u!=80t>#q?NIIyI-nAx9x<-asZT zU^A{0TOc|0PIst)W9-fF4DOpyVl>Z0Y12QiQ6DG_wbE~mv!EO>#^e@5+94fgB7X0y z8&{t)OUpG3M4|WyOPOSKEG#ds2TE0hbxC+0d2d{5LIjHgE30h{s_x0m8TEwJu#t#Q z@%5G^NMg$(%m%5C2)>pBk>oC(YRISF#4N=qVfU`Scj-OKWk4OXt;}x(?4+B!Q5D(A zZ_weY6(*Gt52u)ZxkeJPN0Q}in+U=#LX_B1kUL~vN8KKY(8gd9cL+SBqFm?+>HF-r z(TWnur*h$8vq&j+=2n

      uy#f4BxU*Fji#`N1ji8K#^tYE^^XKqoZmhUe}lyyZ)wSr zy){r~r`V>i3y{x1%vzM=J;y?oxL&G$4~62({dkd*hRTZX-}TLOs~V_P zY;L?@9X4#b3wTu1BcxKDsHudN(Bngis+7=xUfjsh)sHi^0d6;}XSyXaGG2Ap(jKNT zMH-OgyjP#LX{pdNyX+1stCi8(DIz8?5M5|hv$ir|gz2Xtb?<0s{=$8fYlvt)PGlZt zRO-`Vbc5}NHuokGRliGdPA+NYvs3jtp+w7mfv~+vd9)2BuJ`5c z7wC1DRJ4&%;x$JlQckRs#1fq6@hb-nlJa9CD=XnJ^oDBc#)<%q5s@Dr`B*wXMFUV*^I)2b zbKMwLx#LJ{`v18AqvfX@k-Lec;)=xj@hY+2t=#gm`yjS7xSd_@*3I&ZRh)9V0C?0X zlh`{csPUo!SD_Pr&SN~yz6@qbqiBFf+Mmyyl&gR5N_6RR%#KZ)#$BOWXyUPJU%!Vu zRgPSHKeC;5^5-?ek!WDEd6PKfb9hwR{;&AK#jS6A1^<<)kC0Ra_Fen$`3Ez(N#PmnA z7Gd&?Mda#(UM=1PEfMmXgGm04e%CVUH2Bzq0}#L0aq%U(wP$lsIkPZWVe$90`voS4 znR(ruLTI$yMBn6_o8btlI(4<`bmeT2VzS~43W9#%y0{q{i)4MaS0C6J;GXMA@gIY{9#+GcXr;a> zni=u$O3D4aQS-(MV9Ex^F!TJ%S+YxK|9OxE57_RY(?ip1mrkk2N*3N_fuvGrJo;d1 z#+Km{T|OXhA~fe(jC1{_^aD+0n$}yzKZ(n&l0nwXnLaH9!WZ)r#Oek&otV=O>oV)) z7lLvex=sok?$FLkpQ5ZYg}?%J*-B{C$J|^jIbcW0ej_g@$dXXZ(i0he{OA43fhque z>xqbHujMqslOsnD%%+qu7fflvz`O#kn9&vkeZpc-m<3!| zx?QDg!h(X9hRBQKgOG;BPm+NFE47Y$)j~5Xl%Ok|-BDeTdI3D{ zjO}D`;B@aHO*Z6bOtEOUA2}20!hDahHR5e&uzMoozo4Uko>AXIPBsaOS?_%Q!j?k^ zgD-+>{u2$CdyPkjDG{gcmmki5pY`~^Cm9{q!K>O1qpm1YcAu{JbxA@S4jm{n>uMY~ zZ)e*|ys??(|GNER+kjQ0Su5EYlDt2;(%KarqQav<+&yaAAxV6kd{j|Cr&@MJVF*R3 zVa1aN$HQKsEPIxy01 zN=c$v)Be7gV_<>`Zu!&vYZ-Ba-Z2^Qr9v(U6&Du zrrJ~jS<^qc(0YQ<{356AvZ{V^=y)b!myoNtap)gT>g|Kfe~xUPr}0(p@PTW6$)HKx z@z;N|a*&29!)MQL{*^Jpddz9}pOOkddgMl3?C~Z>t{`3pP{nbP3f5`qZGK)D;L6q1 z)IvI0c%fpHn&5M5Ob6$$Ry+TE@II5m%6~ia18@Um*JBs^$o%8J+TFcf@(n|>7}q12QS^x) zaKgH${u$e4tX}x3rcA^dv3E3wU}xxq7Xy3$I{rMBqm%RB|@vj$c$M`d? zge(6r_w?0BWS?C0hkog<%eCmWndq6#{bO=M&)hu_M|Y0+wGGcr2&oT2`b#{oOK1E2 zaejI=R^m(BQNbZm?=VEo1T&q&MdjijMT!cKut2(Wh92sd51|<`k$*Z&qSt*Tj7~h2 z#avybRf@(_zuDBC?PXRNiE3uc$*H#3_Y^tty*FolXZ^snI@f?DMwGAjhkhNK#kRPw zXl%SiX}TO})`B?|zjccnDroqX>UZdsk2D54cMoXp(EsDw)U+8=RUYyVSBOSTfg zOyV)Os2CR?h)Lj9|E9yU_wI&O>j*+aBUGnf#b~=N?iaDy=Q=hI_crmkNp|u-R}EL8 z+pP5DJ81c&nXa`0SlA3)#o*pdRFU2wf>5EIsys_NA37Wz+FQh&lfxrh2Mq0{)5>SV za@a`@q^|A1@1XMDcb0K-`SBXKKYy=PG%YH|NM&8@62=KWh%ygPj0dct$=Xq`q|*vA zNk8!5^a#1w5jnZRwRE<=vpu8O+?;6piCIIk3N<)Cf8KOB*-G_y|6}CICOZYF4f|fV zVmPSs-qe(d^r`I-`*iL1AbI1ayJM5IDX3THEa9Z;)4f-h!u3bjG<4QGcGMe5UG`ly zjK^$|=aWa{ay#?F>ZOi*AD8Z2;xG#f`_8&{(S{6v{u8yA@W{)vA>Myqqt7;)FaPYW zsXh_6i+d6BGKh!b&Kt7_mY4I=Be3&2gh{SRe63xy=L-`7C&gS_0Vhv}?lpgk{eS1Y z(4~o&S=x4!=lR+vP4JGCXAT;bD>i*fctPr6z#Szj3Sty#_JA(*^N zA#oXmhx#}zC?8|WHuvT-J>`8U&OQO#Dli(+ED8E_WCX2?`ypWA`j_WrWM#!8X%Ska zRfb#h!oq@4@2XTs!EN0*uzzbWB8RdpR4e~_l zHanb3)z!O#iZO1mE)JX7Td^S4xUSmG| z=Q-JF9HpKYIBzl{@;CJ9g>BSH*P3IJuI-EQegIfSQs8GfvF}*YaoLI#4B7ZQy;coh z^Z82N(tjC@E__MLSu?l(CyyAmrcy2mB3=8uou@P9=gaG#>8_P|4OCryw3KSn%D^@k zQ(hhFR!T*bSIsvjPBkG)BPz8Y8ilvq>1`zGx$dYo?;MQg$~;N4fJ-}|P}+Q2+A0D0 z8!z<4|Jews(AR1q*@KfOq#iYd=?DX3S1SgKaFT28M%*@>hECKeRHZ>B!-VQvj?}Vg zOtDP{?jSP?iaXF0YPs!Yskcu}tWHdw9EAEk%h|w7ylMx|O(Z z;5+1pJyfP4Em|rFSSo>g^n@&Ksg0Xj&fm$)@zLp?SM-UrJ5`|yIsNAw&_WRaBe#?c zBTi-+5k7mP9UzK86}7E%VD{9el!pRVMXeKUo4e65_~+uh9GVW^UfF=33~&B5wnSp> z`@cwHj9`zR6dYoV-i8BQcTJuVV zX1YHpOEukj!1?L>oJslNK}(Iq(P{QZXii|hI~ZD`3n3?0JzyV)&xbV=XT!!2G*0=} z@#4{29u)WD8@Xl*ULFSxzDW}Bp8vfwPZTLo=?t9|kX1N2Q9No^B%Yu16fT~gk~a3D zNXsGeppzfZ2+17S^Cg-hgqGM_CJcHbzJialvPYtQ28S9hydmXyw zTM^Z?w6pa?Q2{eEHZ_N5KzG2(Y{Q#)^(Vi2gMAh|`qt`H)$WwM*osmoEcw8+EPjrJ zjVbY(7(SMeb~%DSJs?C5>YXJMEOcN@+t&2gC)?y=8~hHwY}Ni)XR6%Uei+eC($(sC z5PwZ5u6XLWG{99@?2i05&(NDxnnuvgugc&#x>r{z+2mh-@3RRZ+@Tj)4(Wus0s2kZ z0i8GWN|kjzGzqHczE_r%)K?$4_37l=#>&yGNQN^6qk7&a{X#sxlc>RG@mXLLL;sp! z?|E=VMl+X^^O&(a1|w_v`*zHmD@o#P$v2=DuYQps(n>~B*@6LS1 zS;tX5&~h(vU6{;v6MS#c-dNb&UQP z^>2B3ZKO}dr0Ros$G}E`qZ9|W!``7wZK|?Pr4wxu`&2THfC!CH>B`>goSOdipM6>S zKmW`W@}fUF>Nw?k?XK|ejnF7ttNfWD1ZLrzWB(y2sJ^xFKRuTCGS59OW-H;;ZMMnC zq6wpD341Y!A%*6AAdRdsgWBNbiHSU#ii+6t&f9dddzou>@KV*g4)}AG=tGHG7Cpno zTlvNGF&P~*KSgv3nGS$ISYF_^yP-jR^n#L*xBuq2Y_>3QXn~lzlWDt?Z^@71s299V zVY)FdC7(P74@2@r2OP=_Z=`*0csw@Wo*MxP$aUZ0dF)l_3LJI^R#h_fzXMW2(G{_E zAq2dU#W32~2y?HIpT4N1ZNf$q5a-4EaJutQf98IiX0PX_k)6#gmExxgP(ktaFVM{6 z)i>Oy58eE)>1NkM3#O&9vZg)`8XjElNrFy%I&^k9L*g{v9o6D-q98Q)5YDjV?Ho*b zEa;SF9pyb&6_CQs=(K&u==Qc%_}7O-YLLxdM(%e3;qkG>jt-lnNyJz`K@vhre1fm}3=j|;_;Bx$Ix^(QCV1few)ML&QOJ2ru4>fZajWdceDAG$w^?uu zs31bv9{82V*({SRUL8E0xtU-tP>e5I3>Q{a%cr=@z3%a* zZpiACLdGZ{e%kO385)PYCo*iJ7J9aeOd;>3&WrKU3z^$=Y>{QJd!C8*(|3n2E*RqS zxvB!gu}gbM@RODg;qV=_1m4=x>+grJw?KfbkzUE9k4uf%`M$RcWr*U$K4ws4c(%Jj z04T@ZtxRhl5U6Chy;VT&@Bf{=*xgyX_jt6Duqtf`YPVN<_CZ9i zb_U~#+=Cge+Lczlwk8v1N7h{CGeKFTz4O3{(8VRfmb_ms)RoXgo$1l$J-=DEyK&r( z=(->*{R`jSrI{*Y7g)O0bo?s}P_yv$R~ikvAI76>iWZc zGXj;so41y;x1l!H`8*hj8HVgrR1svRWoDM{W>Jqp_Dk$vE7twTuWQD` z2NYzL0H^ZtanAP$zF?zb))id^3+=}w{p>#)x;tRGVX@OOV@s6N+1u&8za5aLB^akG zCNWWIHc{0`%J;&_ZrrGEUhF)w*P^|*I>oH&Z+tD40aW5V|LrHEtrH+QhB2=*=S4ba zoGuWxs9?prfAc7L5Gp3HZJ&_9NkMj!j-NJ08xlGyCwzTNW71w^7k+fLvKk(|rb9_B z=TsaM^TS&l2#B||wAL4M=Hbb01izt0H%w^?2Hl4$e*9*2a$$s&w#OK=;gYU=0~dOo zWQJmdd_w}LoW)qCnah|y+OY>fb`W!IyTNPz%4nMaV13~N@| zBXoFK!AJhE15guX8lG$rmP*)-SQ2UA6De*uf*N3HlvqzTNMRsE@^NCPC_yH?1sM&c zzWyN$hWy)i9>wreQkd@LoZo~rcgo6YoYYD{>8uLi>Ml6Qw>r6Er;pUns>+ydS3}h#-Q%~L4&n9i`VDtWvZIFKlhnPF2|Z3{ zuUCkb^gcus@gI;W=AHfHHr;yDstNWV!03Bg`neMOk>-jZL zVh0nL2K(fg`Qcu_z8vxiLz@s903fIvN6o#wc{pupAl8B8vzWx;N7fn_Xj2lZJwdOj z-;7$vQ(})^mS~jtJ^+Ywi`k+y!2DDA03H2z-YCA}cOFUU7MXz9%8cGrDHX>y_cqT` zuq3GHeYlQ}youLCT${PU0g&+tzou+s6TIILsOvgg5p2+nMr9B7h3^Ga-pGeC!!CXj zu+2V;Dyr&ZlYyP@_EJcwbT#E(p4dS$-Fo~mEPq=tfFW?52Jm%*gSx$@+ctn9I7mu)(tGOf$e~5L{gRy58#6;;#T7v?O=_pIK4+xT@6N;9hGDE=kmi;w z^hFhAjINLt#4c0pw#UT-H2?f%FTnDN8NkZw1zEQ8B4;$%~+E}|$VVW~4xiF>ZE zZ+G+9zvCCF>r%xi%O_$*#>mn#d}d?g$bT-sAcKqXnsBd&cw?rwt3V;C<_4hf>fTa# z|8yRdJQ(bl%nOJK&z_q{c@mL(ZOS0WwIadY4xOY{IW{+-9PK7^XrK9wnSR(xJlt z6V5q0b6DlcG*cJNX9-rZH)i@&vtf($4X{U&%stm{K{x=8GX|KqgH9h7tka#!j@L^B z4CVamrNFjgLH1anfL6Q|T~{b1`p?kK{vKT|L6RvM!rGWWW(B&N_Xs)Wi-UXVnnIZc z3xsu`Y3BOuY|PHZzw9TU?F!p*Gq6Lt*o~nw5X(J#ieJ9pGt8k*`4SN3D{0w>p*7%; z=q^P_y;4E*;$dJ|5*f~Cd;Go`n;7nxsXVI9>6!7N1r*C!)`>wUGK^@IGJ$nU&PP+O zMkXOYc!jq_|I_E_uH9Zr**id*bX}B3?*~L{M+vF*JUAXQ-#(7WhvJ)#+h+R&WPQrt zk~IJ7n2(x|G=Vk`Ljq&AOgj**QeEv?dDA8Yu-p?9p9P_+K;K}0OP1lIXDCOvb zuLKejNj#_kjMM?T@uwCNi~8%2B>?H>)6H%NyXdg z|D({z9_6M{Sn)(p9^RBI)w7=F?w$Ve1(gOytn+|fJSDw53_z}UJY)_;Va}hGX1MhQ zy4l>_-@m$y_-e^njLofb`Wo<_q_(r=xsD)Se4D#7T90P=DK|!J--g3?{E?R}lF5g= zeVNL^*tI}PVw7^Es2jgHcyjY^tFF;TV*>)zV>MQ9b*Q|+%&%YBcbTcwOTeTnS2dUxK ztCj5&(n`p?`Qwe~)3NiRkuK8y(N26a)oP}pr%6{Nv2qeLDnr(CLdywCW|7HR_cS@a~dI; zWOE_z6MVhTpqku*042pJx18qC^E0VQSBf42mpKk)F-XvEVMgC%p?quSno4OEb&HUY zfPLch;%~hjeE{DV-RG1afiH`4KxWze{8Z&wqoo_56tky8%iNIq)*=yVx6-b->WWLAQyZA3Ahs)Eo1`2D;1P3BA7NA(&^@}KItJ0=)n0hjx)62GdU*HhP5k*{Qi!0@Re%O` z(a#A__|%yH>IrpQ-*Ln7uU|$buGc~zGWcVrBX4V4WZWh4-bE|G^wS}8gL{N~3-W1w zZX99+&nBa0OjkHED%4~0an#To?KG*@zuTTv-uF&PFG4q@k?KXaE3BOTR%M3MS;p8)zr<_~>g!#-X8i!S`D9 z65d==GDUiwhcU#w_%%6Y37>c9B&oh)iZQhppdN>=E3@?@_c|+rTeldzM2waa=qfFsA0}N-WnnIr9qG zzj|Z&YX%j7+wa@&*aVDSNK5#m9z$zny`&)MHQ;3KTlR=#4FWO5E*k`^G8j#>*0_2k zcdgR)Phjs)VY>$9na-oX&YKuWK<0PU#~Q%1P}gNBHBVHsn@G%}LOm6TDYE-(tVVx7 z>vbl+#=rPUDNCq@rKc=JI2cKLEpAn>%4QuLs-#Stc27xZS*8eqNka8;{*i@H%M?2^ zIa$$>|81VFfHS)4H>Y? z8g!Y*{0)$!u{3e{H9x(ReeJ*s0gK#Y3eDecbFiI%ja?~MKl{6r>*Kwh!DYN5QhZ~X zS1lq~r4xiEoUZ*bgwAY-D(>N4BE|JNV5)<=)jR?aUTH<4rU)4JgP9hFq z=Jjf@t-5#B8O3#DI>~yv366bi5wCXaO4|SEUS?bEX|Pynv#NN!&c|%luntqhwS1Rg zJ^p_$Kv&&=C*G4l@`S(=Bo#C>rKM5^m8gEo^sCC#Tulr)e-*IFosUxN9a1?qg2~_uwqAnHP+Ufx- z?Q{sGcfMctS8pBQ4D?Xc0#dpJYV4_rI~KCa26cA}KIH>2arhp3mjDy7`jqe0Xb~Zb z;Pjl`_s3(P_0%P~xMxA5qH~h`pwvfCK%eZJ%?+}f@%mzw*gpW_t1mys;O?80xh(?* zTQpNZa8WQ9JihsoueCC}Q$jyMOTgWS?DktO!lUo5ZFPSOb1$|Ce(rXMnOQ*F-$4oN zSy|a)va)ViIl3U`suOQpJ-e?=5rfbD_%Z}3-17NSut*^z8uyz?>)lFSZY3>WVeThg z>b4whnE>a%3*p)!P|Rlw^^4V&y)(SePH;Hif~|CE1HPg09O1M3gAe>=7wEGT^+wJt zZ4SE|T#wD2Jw9unCs44a9s3`DwA*c!1n|pE?fTX?e@(knUjm`~*?r;*l)Codi#_`8 z<_Em_&H%^>2J%&N9NWO8+e++_i1O2@5Vtzl!$cr9v`SkPM5TKn+kv+TFJq*Hs*P87 zUf{2M0eZeM~CN>De^|Y>mTfmu%D5)HxycG;o=waTLq!F_;5yzjhzJ> z#J1fmp)S7^VjJxJcT3QZ_L@!bBkd-<1SF?JMSWoMEgwE~-K{6|E{=%52QV!Cp<>cl zvrUVtsp@bvkVQHNLx1l~v3+%i+&lkqjkhE6*~=mdU=4o;Un2u5UC2mu`Ux7%0eb1Z ztegI|0Jv=EtVt~>uUljY`T^6`jbEe(F8qA%sNM3MpZQ8z63v>V443@fdpE~!J~7nQ zD$_9r3aAi91>%xp$j=U%z-h>}my$GnhP6sFElxjuta+tPIliDZiGY1Kz}ocs%^oo* znkBD}#8b%?CRP@$w!P!dbrPmGMBk-7#83GjmT)e5eC=)in*@sbv3&ek>lPDAw6fJ>gPaM3dUdw^v?I&hd`dRM1y=T=|E`rmghB@Au{wA-jv>D9Xih$R zlH+-NV^HJ4g-^$r$jjVGXL=8{_QViMsk zvg1KJm?AC{mRl(!Dq{e@m2_eE{)c#?XLH`s-Mjo(V+6}!0Bz-D;cE)7G3nwStS{RAWZOsWVo(K2%~U&o zw8fnE0byxhrU&PHGW2K+(lDKa_y8 zeT`CXULMr(TEz2ZDO3Q)&a09fkybtBF}K6?qYh5r-6Gkqy;{E5etgz<&zJ8fpFrY|BauKqc=bVB?l5JFj_hs9U}3iQ$j$xI~*_&X<>9oD~KSS0uoXx zrNHPAN7rcn`#t#Y(XR9C>^j%Z`*XkV`*p`M-pr`iInsJja2Yfte4$mrwEEHVvy+6 zT~K1o+4~~XzFLnF?niq z-9DHU#uv&H~`9d?i zZ)DO82ZnNZd2@1c`-yN7L{&GuLRW!lc|J|e3n|JBkJvpjBp`q#|1gMq5@IX_fyF_T zh}v^4H7ea2bGWM~bOPFH%P@A(r+?tV9-sZ|XKaFMmjEE@4Rm6>|$l(p{RVFs|n zP`@$3N!Tgv_pHDE>j%#M8|Emum`d1~dhli1hMHY?)ce7T-aTlW*?-5!k#7c1g=DEn z)w*gfmV2H5^;Kj)&TqDy2|pk0I!H*u&wsWcij?_E-cR7xQ2SKy$8lcDfV4n-%9(T{|MghXWsN}C8f8S z*zJM-xmA-Lxn;9YIK%KgFN50`Nac})Q~Lj!vxT-;*$)L zojml&uMcE&vVOkSj0jy)6_^dCwTR3+0+;Vr?4b$q0jovOrxwF1syRiTb8~R5PkfC? zcEdVQejh4R?7c{ZV?HRL-2}fze;cKG9o=I+d6*#N{BR`S0~RoC;r+DlK9oLaud>$w0!D&d z=h%ZkZdZuVJ`CrRjDGNIK|O%+3$6doM!%Z68|*`@!M`aXdW13>>C^s(&jqjl%0kwo(*;%G1st|q3~8G ztVNZSe%uw+(g&gK?Y0A(@6%~!O`pt~dJhbL^OJ7vvdXaUJTEl_7~N))i|^TGOi#bU zXjIA(#2sdfeE2F72lp-TaJk&iQ1q|fyCMAkqKDurz$u||8!gHP8rnte$#QxbX%29L;j2l z|GHPpOP95wkOe%o^n zR;(tuy+?g1`-Ha0#jb(kjZxe?`nnBtg0|X?j-4-a%5E54w~!(LKX&2ic`Sw4MvE$c zAK@$knJVd21CT=Zhwmi6MMpi|$p>>Oy36L(x!SFkTIUibfP0g zm{LWM;|rVnCZEu%h}b#6d^f)=_aBQZREe2|u-nmSNW*NwJjEE%@Yz|>QP}!*EKL#( z&OgchQ>K2_-MA-KIt^o09XWOX!ooAvR)b{UXdShWf4mHotik$L)jPZI*oxzQhRO1h3t%o7ltM(az?KtqdDqLcL~uHVRXS z@)}uI+?G#q`^Pz7V!|0_tYX1h+j7j13GG$KGwA${!u6JX-|fhAYWIIR!B2JraAaNY zma-fHbj1y)d7$)dB|g&^J`hg6dlt|r8nT`l;cV&JVcB>6e}9n2=h_B7Hn z(8s86`KP(DrS~N&#_NetR+$9~Lm%{dVr$(e+h1DHzNL!}Ps!F0lHgtlD$od&D{%k& z$h?uC+R;i+C9n z1|jUN*Hzw)qRU_JaZ^O9yWkDf20YhO*Z5Htm^mNm)5$jjO=-;!ipCPt?`7f zSesNj1}-|17ZD@^y*D-%$tA%jYE$7tboZb3L0P>{FugwA($~HN#!)sQc58+Hhmuc% zjAy-hFeI;&QG=5NBEz;70!U(_?yo(`dQ0P5`#pWI+?P#lB5AKD7^9?!o=Dx%ITA4( zrbXvvL9o*i>Z4?F5SFMcLw>qY6GU5CHUU8Kxka^qAX9iH4VG5khtY@roL9Z$&&gL7 zucc>)_J9#9yd3wsx>;|bx7j#47acu15Bk%%v+FTqIKG*NG8f2vOaoi*jrGSz=+8rf zjyC8-ykjS}NOwJDIx&s(?d1}``-Q`A&W9+cR+_@Ff3!5d{?Gf+I2!+D72}zomUsV1 zhJTm{P`8fES^w$s*A4MyTBp3hzkpkAJDOLKn3k{Qz-xw{g?stIrBc0$Xe#z-M4hhM zcPn)G@`5{8!C^Y3&gD}j^$Vu^T)$?RZ0t-KfU1jDQ()%%upZs!h}Rnl2?GD{JL2>G z@l1|r-x({LWx=;bSN#J+&OGWBE%q|@-}_$j*8isa*|gz){ht5N?caf!lRY+{Cs%Ac zw-=mNS8-jlU1{MdFW=-W+zV-M5mwpIhH=cl{4Uwdx_^xdR=+C~-%dmOW?Y2sT1AGm zA3qLE3ob8eP;F&G$j+Xgxhk9)`Q7$BTj7zHyhh+op>hoAoNSJ{)L%%IRDwDVyRLez z&T;aW?@!O_<}eRB=z5eLYQr@5yiqCEC8BJBzjwxF z-jKp4xa=*O;MmQhVVZDWhq}jjsS>jz3cLH`3yGLF@Up`(4X44yQD&dr^A_T-kMGmL zxRvkbh{I@My=Q03kvKXa!m){GmNEivQixoJIP<1f0TOC)Up|;fFzD<{5kP(fp$a7- zMZS-E6d84DxIa}5C3MTVdb9#U8L6B-`2P>|Aff%0~|03c2 z^@{2%>DX2l=F#Is8;mi+P!sBXw{M}1Ug*g5!>Jtn6eejwXG_TgGkg=m4@!3pg&>X> zK5dHVS2gnGRT`dPVsULw@ez7u3*&Q*tkk&O#>a2|;jKE&u15ZPn8X1I2alHac}%EJ ziwq03yK^XX9nF$$ua{_`n zsSOnnXi|_LwCC|;sqS%UZCjbLIjuCsj9a!4w4+JSd5=G*=kXmpbdi%)e>GVx|IvtxoWz_W?J2( z&E4j@URJ-@Urq_Ya_oz33jFeCBFs(ZWDAk*;SY@*$V%)%0cj!dOfRvth#=k(1 z!Z+Nz%TZSnW4E$EAD@>9K;rsh*mazro%9waU3UJWLBN zd7qsXT%6re4FIT5TcMxGzMOFu%zIXtaZpFtXQxhOz5C=6-XKL7QH>i35NVj6d3oL2 zCb;AUg#}%n2FO&km3-n~_H_X(AfrohiO7veuuXmevZv1EX&JohBR0&$vSwyR)43`l zU<-S({J`}+sK+$~nQF%dVTeKeeEWznBFoXqhsIV%!-fG3C_IbjEz$Vo{|2Q;afh6A zAMVS}rNaawBLpb*1(1WeCQ0DJC?F+Jt6MF~+S)1n{Zp3$w0%U*JwVIbLhwFVvbiuF z`e6;s=}ExU%K__F(&(=v{Evi&gN#B#bxhj*Z-<@_4Zy0SMzlo4RLOusu0eX%pnOqd zDglgUs=qvSH4bX+NFIDGO0PTVe_Zu8F6Dre<3BlGsrgUnS?Jx`de!%k?zBD&+ zr}mM0-&a?Q?={5J+eZ0B#|V1LSydaN;i0pK9i2K3Bljx+bl&Nz%=`YbUuTJC=fciy20p&kz9RgRrpBJZ%+9XKW^_ zQr;P6C=F9i&XP~ZuM_u{4lp}Sx7(Kmw={E~9DZIrU&o&_E?32;-hW*s=b;U#PDdrL zJ!&U*`Kq=S2iUe|*{nQzObvmORF0CUmayefk-WX!V?4w_k(y?^wca%=~Dc|KKBo+&C=FzFOF*>v%)9QgEASWAZr(@B^6U9 zbB5o7N9R%xC4l7p;d8Bo4DYLmkfvV`XH^bR>?6i8Mcy-m#|1>ny-~u3xn#exD7zo4 z4NiK0e$dZOwDIK^D@vkR{K0bfzMRL{P92mEW-3x{tz!7phJl0t_%UkCD7n)t6!P1{ z-9@$U3k?g4Jc)>l5f@is`T{2)+(KjZ3ZbCm_`E{j$xKyAL5nnLQqXzE)OkkdX?-kI z5gfs;=B6_k0p(lQS``(C&0GP-2X&dkUH<6{x9J-EKEp;tO~szP)p9LZERju^zV z8}gT`G^_dgPjROfqf%SD=U#aMNe!Q!G|9@<7CRBiohH zUid-yudef%?Y2*rq&9i>T>+^(qK|wEzOULbWlUj+E7(sR- z-#5|G<>{dC&|awLLovEUU`b4jFL=d1o0hwyQ5%^Sf955(xPxud+1$;y%+qCO zMp*;)cNzlE7|q|-JCxFoxxJ^S?qjDRMzC+_ruDRp|Jco98IJ~ior;9ZR3t!52T6X& z`YR!jcP5;qhFEIy%U8aS%nQ6FFGVC7w?BdrMfqlCx04M@W#4e0AHJbi<$)3XtpN%# zsAM!)kA(_Jv;>BLW)q?{_#)VqgZ79}T0`YOYsjphEAEg$VY%GJYC^zglxQVK(L!5o z@{iFsfz~~%Qd!VsFqsf-%KMedLh+o3OVGp{x^ zp#TG3K;WvIW80;h%iUy21&C}?<^K8v`TOJ4PYp{ak!&t`aq(?sk3<1(S>X-?lv)X* z*+g>+Q7xi?Ue~RCHRs!v=^lQ$dlM$1O=tH{m>uRimvKCnnW>LN6BifgRQ;>2u6C{J z5Hk?#vxf17h0D*FD*wIodF(=eY(`6EDcJLI}F~V_sEt?OZK6F?$pi6 zmKAc&VDp1?*gSUe?hfWQ=o}mVZ~g8~cDVf4NJJ}VDs zx(eBXn60@&7kR%n{c%SiIiWpN8dL)x8(tW`<;sLX`(Cot+aQgCcwwJ`*G(}!gG$6S z_Aof^v3nxQnY#zvYc@VV|Dvy%MrE2^REc45E{0#wx9WjyU#FwAvBs7&0CG~FpY@Z& z33k53nmY5l%cq*+VnfT2{ySn#AEC?BhN|K{`~qS?nQ1+*1M}51e-C`6)iu!7ZP}V{ zKyDWY`hl@vA?zn52BO(xxR~KFrD8S^4iKZmoSm$T7Chx?#ao9IJ3B_37~U*S_Pc&! z3{eq6YexWLf8PzI7Twc3T3VO0`C|U9Jw$zpp#~Z0#!3l^^HXiak1d!wLM zjg^^Mn3Q?C(<@Vg%D!W3{VG#MiE?BFWc`ne9s+ZsWC0)>BO|ccbP5pQGp=4#d1phx z!@t3jtKn4g;aDF_-SG!e{kLBX=^S9Qjjm0LZ(kC4!w#VjIh-~65L_s-b{Z;T)iHe+ zJ`2Mfol^GCEv{ydl!0V0rpHFq8%FCk8$9$f2F&_-sBqV?1jnscs|GZ;ILh>_M?rf+ z0)D@E62N}cS`*uQ;3dcRoPPrUvGM=iN`U;=kY4KFa0Byga-9KN%^daiHu<+*P8%As zv36$ZTNH~vQbd4s0RxQJ^t*RSEhXh~ZRIf>(GdtroycZa7ox1MM-vQ*!(p^3un{fE z5jvPyURkQ{rc9U6#24es4T-pxic_xWY~_cenBEbA%w1~iY>mGjETKN9PPUJtGZ&EGWbhKWX>r!7m7FFZ2Fb7GQS-4&)k7VmyN7^*9fY4zPa znz^(jZL&GlW*a(405Q<$>h#D0em1@vUc=muPx!lp*5u3&dDb8G9zu&EW>P@?vkk^M(_u+T!@|SDE*oSB zJN4jb&vHEi>-w0uV~k3PT62S68euCqXVxtrxHSC z7(281TXe&Hvd#<;0|CP5k+lrAuXlQl}6?sn9tx z`A$%c7^F83jbem-xlb#E-<+dbPx0F6;rl-iQk@R5RULUVV&${g_0&%t({W_}ZL8Dw z=|Fv9;qKEIstWjU*sX_LIIn$R*v)d-ZN)4bTi2gi-+US;eWUN`%G3azDUo#wrL1mo zkQr8FASqiXebr zu{5K-IO(t;DLft{gR}d1Ddzdm%EotKml5)Z!a;{={%_u&#|w-iXBT2-{Rs0T7g}8q z@6Pd|Th}M6^L?5yEv%wv&!7MI0$6o_vbZ@7zc^mJ$~rYlu4^TlC-GX&ALKz|mNe8j zD1a*z(VgTxb8***7Rn^aZ)Z6_PoK*%_tcA0?~c5c64M<+&h$b^%DH>uG>a?M=m8K3 zB-E_Z!2SC~ZuLV*{{heRP}`5A>D;A>fO4#6$KSZ3nDEOhZpKd@p_2n|I+_1@=2HU^ zTtvx!c@i%t$v(S`OXq^eXIxBYj8c5(1k7AAk51~x+r<>pljO29?Il^0o6Y`>{9t*) zBmm4zX9RxNh(I;a0|s->?w2x|zW~RB_X(CQY2Q=5X6eS=6){kP<*99Ocg< z{k@Ou(n~%#I_yJ5h}0hJq|gb`dOah78PCuYveR~VQ&uMDByHS_b-72Tiu8R7qa9o` zb071LQ*2R1{Fn^NA+P~rq@HjYKcpkHy|ar!4^8615_Mi}HhKY~vbwP5RJW&;o2*E% zBC60LMd-z1OYMj9M-^;yyZ0WWze=w8ehpF!YtQrT38Rc*Cv6CfpYn(llQO`2L& znQv8%${@D!jt#B)5IbRZ>5}g&(zJJ)^D$89)y1f#00*XA1e_tH&ilHZ>GcMze!H9<++>hjk4dhN(% zl05a%=7i>6wooWY*9oKd@_2=tZ@DP)(c5O`Y4W zJ^B?Cp|oa4f{0L4E}5Lm;*01Y--4vs^zCLdTi`{g%gfd3fvD|20K9%lpX8&n!@=_P zI;s48jS*+bUijYOAIG~XbhPo!9wrRCnBConB6NY(zS#lUdOXUo$u@_NZi)9t%}cmc zxvdQT`*HO?cxY6y?nNOn|ROl~Jq-c!nvR}^a^La`^H@$e~5q7u|g3^;WEbi~O z}~zrbSeii}$I ziMSPbzRnzyZyAa5Ds4>4%Hyy#+QYocb^s@vl6@T|_eQF^>}*wb1#eb;nd5g~NVn&k zNO$OfD`}-3N^DyQ4}rYw9q+wR?pu&003XcWgXuI705HoY{>q7&X*3zA1{=g#{d4Xa zD`8}oce|qn^s{?EUHQfL3*+}GaAw{C*8GoyU{cz_a53MJcW>MrMnL9VFt>>rRK!Rl zzoxGk04VMBD2_G=J0RroO5y9RiglfTF(@+gLNmLs_4{QMY(IGBLzuEb7ldf;4>-i00#% z)@#@tiHm+<^CcadZYpG}udR89>w9%cn65nwVb~BG<^Bbduqd>X*|Xsr{*;ecvWWT1rmpK}{KHSZ zgwdMuEOa|QJRA3H;9RK@gFr?o4X~#02!_T3bg}rf@6jL5t6ewC4B>H#x9AmtRH+NQ z-qMoPIN^dK4q))eaR8^N(%YrkEVhWkR(QZfMUvUTqH>GuXbKH>4w zXeZV72fqATy9 zgz){Td4+Wi;ldW(wc}mFsx()Z<|9#)MPXA~GS-D%t!GSn-}}0CQ&p&HbNoOYu$kc# zGxxA!S1Pyf^XrGOq#osfHuIjEnY%mp`}A#$`4a_(?UiCH1zrXG!d>*aPy~o=+ z9v{`2r7mafyC>d=l+)wKYkh{O8YffB=A6PLpg!lK_C$mmEhft;0=WyblgI z=$#O`-f%za`ffu_+2|)gz-XVcJ)&hHd?gr1kIxcC;C*4siDKV2pnq&Y9ySuH4lc4? z;n7;3t&QQy*^wXUg|wUCI)^1$$`?^m5IV$?0-0@YReVk~v4`_JPImp(7s+Tn7WB3@ zk-jRW?J4WipG7(ddWqLL536Dl7>6PhY$+97q(&ziT^}a^vp4Ri3nfFTk2UF}COWFz zMcH~pIHe!9)s^HpycUIF9^C-)72&Fa5n_)J#-B+Qf7c?3a~2{ad<_4iPFY^w-EeT% z?Z8n!9y6p!O1FDXpY^8D*T!~2BzUj#pDZq9^Zv(4;ao{sH8nHRXcU-W0!op4;o?xE$sO-ofOVOCv>Fv zWoL4^xic6+J+v=ehoS}?WL-Quy;pmZg|C*s@Z2GesU$}z#6u2~ULmy>2D#PYJR;5J z|1roF;PH}Q7N4Q^FHS(vqyb4++mY>0w->I+4;ulXX*@=aobQLQOfwi#5jx!IG( z4JUkY)Mpds(^8!TaOq%}6}pl>AwrLtT_XjhE9Q@im?)4u7fiafn(U&vp12LbtAnGf z;n#XK5FwTT3A5jVZBoB$QlAsph`6dhV0+by^pySF>>TDka@5~d#D<_oGv8Gwf7whm z)t8ZwfEwKHO%I*R0_j36+u>MFe)+xcV7veFPKk?& zK>6jop^>|^?6!?6QCpCKh4UZpEE&E63WANj`5qa^bNB2)ko(iGGB2p(Ol*L^8}Gpo^_G#M+F&(huoq+e zo8{oFJ8xhkqn!E|^V;zMx6XR0m({yy!l&9#6`etATE-8!P$>Q^84ChEC)V8_TZbOo z-M&AtSQL`@E_H*?s)3PO$z#ZTWJ?402nvbBNP+0w&*Dg7eiPr7)F6d5%W~Rj?iFl8 zfzNh%H)k#MzGlf0^AW~??HGl> zpG}RV{Rv@uJ}TOy$%mNQ7SP+nxm2gM5y08YCOMd9t2Ap!c7I4$!D#nReHY?_$FW=( zMXTw^lGu{BCN6JCL3Va}ud4B-2Gj+2)qFf()Ie9>WQo~R+y{-cYtMU%P%xY8`jfJY z7|*aOG{l2-;{GOZ^1M+bBq)5f*H028(K6TDyIh)0P}13hDmh_bh3;Rq!}VP*uG-oA zCMGU&x^Q-DAl+)NC>WaI5Ve1Ey^i^Gv%OKUpY|!d;Bw-&@uuze@F@JU>))dL9g6x< z4b@u?2R7kTBFXDgCrwEv+Sfczbd4=4_`+ntlh?^dq`SNTrH41;K>JcLAhhx3g=jn9 zDkjd}Lp3XT(86M7-<*pKuE5(9IBQ}C8EW7tHc6`!e1}XMuHEvQR1tVK%U@Mj`(c=C zR@8*jfm=Csad4#QxkjF&aMHagjQ^#q!0~1IVotD{>|mhOIF0DI{UM4qROQvo=9`8` z=(*W#)7rSzW!QKvgQK$SfTR}9gk;o)-jobbCKdRwPxf)hjx50CDybhzRa>w*cdav6 z%@<+$UvRuT=*Or!W3-1FKC0O(V_~HA7A^bY6b$N~f{~cNh4;I&=lB1}_1P%{DGZvp zL+TBRKDhRVsZBei+M?h9BcFx905dd{h=z<7#_)LrbF#DYlqeyRmcn{meP34}9ay>Y z&uvUAEB-EYR%C+}TIBzz!7g%4bH;b=wabh!mCX}am09Hj3DTB1O~=Z$*X)rW2$7Xj zrc?AUy1yyMSC+vkk|FSxLKqS1Haer(nKIS%N~dgh z8I#+I_TAoHE?Qbr9O3iUQoT>XqtLCZukJ~pt21V0?#{e&aJ0HvK7Qn8gbk5nE6C5^ z2<*hvIE1yyX}95n`iR)Z8brWv7J?_yCA*#-VGBDtsF1L;s)qkGn5o_8Mcxh?WWL$} zJhG|b!v8|D%ce7&X6b|!2!Ra(1*kAV|6*@m<{)ARTn>4Jy(=dR2oNmFrL)A%WvpS3|10)A_NA3MY zBEZ@C`GOg`-)6kcBF>|4tyXm7@RxMi_=)Dlul^arvmQ5To4IW_m(kWYn@7u~D=I_; zl};`lwH2x^7%jm}l87WW_oRYM-?+GPc_YKKm9wGguJMbj@CAI?<;qsqdBO3mf-PgT zD+=PpPiAzcxas!vH|dM{{o<$KrfPTKETxjA{qL!GG=UrMb4oKtwR@TjjS6dO0dyox z&M$h`1n;FPJP~$jQ#vHq@O6*iYTw(5SDVgYW=Pet>9?Eip2?W_EAq!bIL`>mEZ_(8&zl=)m>QN%ObE$>Rlnjx;=F zb36Z4RG1;H+-LkRd+l2g*reIyjU+$&W3w(cs(8A2n_qDV?)=O!&BR3;{}|NewfLyC zzhLQZS>;K-9B**72E81+0*Y~lcq>!GnA7jkk*z2ac;l=|lA$!6`%yNk$R*Wov>9iP z*2~DZ`>A&H8yfk+!2!RTobn3ZfE^Ym&{mpsHx5u+vrBm7Q1uVXpa58&eJ3jUE0yWf zdAg3~B(Vx?p$pBr;>ws|r;!&&;vq%;ZV%`Hz>~}2+nY$=F>u_xE5fvN-{nyj=Vr9< z`!!N0Yh-xj#|;K!Z6o#wU*(OG4x}&4Q^Z|@i`$k6rPqG4ou)>VA|N5pCW-Hr45c&v z-Rmu`zbW;r1yq-{)N{X0wq!8KitqI@(0q6jWH=#je(SMymoVp5&~I6pZOc1M*F<-R z@IJQWp&1p$`Vo*Pn#WZ``eEtF#H)=^SKlgESA0$9XeA`objFP>V-Kg-WhUp}`aEl6 z`nFMCZXU{nJ*wBXYw|0rkLI@s7J*Gq>w-gag>8M3j$0H}jNWGIf+)r(K7Y%JCZuSM z#abtuQqT}a*|_FsNh`S}YPqRsZ78BYBR~-w{f5@Z*z`Zp7N^79KiU4SgD7Cv?cZZ9 zC2I)0)qAXrokx_l?0XMq0gY15SS%kfB?U|6C>f^)XiF0?)+oBVrbi8wAqlCd^|cZU z%@nW#0fC>t$fME{71&%Kl<5vM`L!!0a!{h&49MUwXq>do$d^Xb^`)o{n4{Yg73n!l zq=L9|pb8i!^(r(IB--STQyH`dgYQR;_-twGaQQaD!o>p3sr`nwW?umY*C)b9i~?^# z(36F@1DOK(fi&fcpgk(WGK?FS!Eu;O{)ij4b-uwn%Pq6~`i8QRArNC|)p2ota?yfY z_Xwz;lRpk41yW3WzrhQ?K;D>EHU;NVqv-PmLZ5~KKs82USm^sww7t`CgCOq2XO@LJ zS`zV6*Qm$f4ws30_L5C?8&wwau4d+ABQtQy=C%is(c1`x5h+)P5%dY)gPoj13{<@& z`(&*Mu1WNGSeC%ODG||-VQ{m))qU`5rPN+);pxVh`vH_S|C@+Y2jPsiAF)W+;DQ7) zp{{exdn+_rn;v8>80K|*v0rc#Zccl{mRR6$efe7E#^|_9tGua(3P|poWr>@+R-dcZ zBIWuV#uiuFLdvZIn~{@}na`yI0eVG!%jBpm2dR7Ct5ZvjS>eA{IeOW|U-GDGIA!Fm zWe5Dc=XOgye+N>j*8Dv0qrUr3HqQIN)qKJ&)Z|)38t;zp-ovLH2_hr>I4QZf)<$TAe7SfVUP>Sa(LBEi7E3jh zaI>NiR0YJ*3hh=QNnv0JwJ8=&Mgq{E3xu!93`b$$qK5w75f)xL5dttV$aGIK)XTp+ z8HQY2R{LWUT=o!F+(LHOR~y?#L@M(2XYaR4`h$;Nj8L@OLB}Q9+J3GHN=g+4enan# ztsXxb>3jC9;6pmbZ4-+1;^eBg)Fejw?$9$Xm#@@+4??E4yc@V{Ux|uJD_$l3ydxY!;hS1tFbK5%|J&7RJ(wy$?;Y(RGDj| zWvtC&&ovu`0^skw8-#)ElfZ?|IBSN9{OE>hNf@BiFe7!6zmM-%8Ve=*$u(||xR?^o zy04IsQcsWg8%i9J&TJ>?KVa`Pn@9X?fIK$&G}hux%=zY(VNk%F`CO**aMOX5wo&Br*@{K#^9^M><{KBDv0_*c26lyz7{0W++XcYn&m7f@qd6&op)3ZJ% z0?&#qV`W^5KoJl|24U}jwE|@of!u3z$~a2^0-L)*gQLmtm*%ku zMplPJNDnizW{b=AX_E5u(vKZ1@>#A|q;~`dCpzB*OoabMDwsTHhNJbE{aU&8_j>keg|3924cmThw3jd3zEm(SH~D z?cIFV6n^Q?CLb!roCJ7uES63>WuxAliUms0l)r$Ox)_BUBu(_TZElX2Phg)F+(062 zIvU2z=bUkE%~qOU@z>ihTzVi;m~);!%Itf3JFWj-C@~rUcjM!f3r&q*8sX0zW*eFq za5-ZlY)QcmwzS-^RNoG}fsCP;-H!B1Ts}*Fu-3%b$Ch9h&5Tw(gxKriLY#65%xh2c zVyr}oQ1!pdWR^0?0G*8>D~+rXDJYD=kSbz&cE=eAkkL7E)7jG0NvG@5j>~s75gLjb zQlaa=@=7MPDt-eI8g(%c>HbGdz#>J(e7{>1`JRinueQE7E%%1fe)$=*{OAP_*5eo> z7e;2yO|sKRnao%?dCg=U(7?P9l9u~Spv^BlRoKKT<(qHAf?f+X6cWSfC)p?j@6>&9 z=-j;x<+xjzK(n+X5o;H`&YY;raR<3!?*)DIDL;FdUqg>S!LNL4UDiFiS8VUA_-BTjk_>SUbFleqi4Z==f)0+8!keC>hOirg~C4DcW1s!Ot_O4bz z$z?;1a>$Eu(+$%7E_gyHli0|RQp1^+m_y0y-V4G4xbWD0?dmaQax;Hx>pqW{)l(K? zO~Q8;YkGZ(4?F~-s4JgnVOVK}>sn&pV$4#<+8!SNP5v*0$$c4oEc}&()bTGiJ31tr zTSVJm*5>D55QOOOP{l)YXEbqO^;A8Ms-V2e8C~&m0fFqm)rjwL58}z4lPeq4Kc=kP z+O)(VNMeAXsJfb-X_VrZfs4Y`VdkQ_yOGFV$BdrrRp-ZnjsT+?F1?oY^@ZkX@DtW& zsI&cjf%o@Ea_yw@y1b_Lc296!R;F!VVyYLNZ4mQB#i5BpwEa*d0@_4M3#m#1rB zrRn#6aw^&V>!@6S44<@yT?OD!P7gPaLVoW}pZLk-XRc>dTWTD@>V}TAUI6>AN-P;4 zbTnym-E|o1{Da4nMYq_g=0BpL5n3sHStihf;WTXwHH)D{4W0xUeY^aXQu|+ancezQ z*$uP6RL-8MU%+cb+TwVdgLfY_^I`4aaUcIV82B}*Vzq5Ycanf2q85JWWpR1kd9yug z6?H`>KXuXcA@-#e^-0(g9~JW70|%O>0-j)Ef)rJPwU*B-~s`kz9?q;-bF+mE#MP4;0atOcrPZ(;`IQT`?f`AmbU)4vTR@RX&IobUh z{RI<80eIwf=b_UO*=EvSSEv33T|tjfaXlc~3{$<^WW87)d3CkX5o1O&s!;cU0}57RCoo^5hRVrQszsGe zq_828ab`wJu;fQrk*=V3q$s1vr-sG_UARofToh`;O-bWLuCCbEgW?~g`91F}SZvUD znh7Ics2q^BC?k^b{X)z#l&&U}%y(dumAcJ5+$@X+gOl;;KL+_sJ2U2`2DxUdbxQqR zHQx&jiO^~^^4vKj>Y$o5sDc!msohcdTit8Ds7$0x1M#>oU?2Hh(`3eBH}%wkG9~5U zUBjb&KXH~UUIKJuR6I%){UPwQn#TLoUH#_8cocTwq>e++`{M1iqm4Spi#?)rS+)vhq#G zdR4%3<^~y}a_y^aS?SE1J}vPu5<}1)j3j(zJ02A@ zDXBfl%>8qBBx(>Jj+~!eG3(T;`6QSUnRO229F?2=()GrQRY*BJO?X-6q_XN3E*5^| z$V(Bva^^HGuXtV_aOP|7DH;;_RDbRNy#T#dLP>(-Shmc5HmJ>hY!V2PFP^98KSu}! zN_I;|o}Lawt6c=~O(iw8Vbm%8>s6{3Vo?D`6AFE9epI4D z`Wfv@6t(tW+(`o~n@>xmFZ1LlaQ#Ft=*Mt+?K>e6+KkGzeRoC$2zO!TH^GVU$>Y_X z)igO-fh5GSPG`0~Zg-i5kkdB4GfR@x0FoTBc^xFEFEo|F`v#R8x&DOImXf73qq9-U zXeSiZU^&8#kb@;~yG6*8w(1q3N< z=6-^g(a@FhN_RhhXn(h-XF26192O%<5JRX}NIKLl(;G|oKIc7z&ZMdK=dE|EIOod= z6nohhrq>EedLp)5cJv+;OY8vGwuMMR=&+=MKPlT3D=(lkCjC^YOJGm#7b9pHzL#S}+= zKI{0VQPbSD58iX!y2!S(s|=0t)~m}q0UDM6MZNd?P#WVQr(&v zJ@m_{Y-N}kzJwUeEiU1(8>&4%LewkaWQ{nJVKX&@5ePYB8vJ<3fyegb5@Om)@mWHJ zsE^nxl9{>LU}oy}#qo&l-2Yb3Z2hwHY{_pyF`vaK3xhFg(LfG)6srDcx-b9mPkVuC83#H;_~k_y2*A4wgVSpq$n!D%VLrwBz1E zuY4tB;*(YpZX#^*5SYX;0nJ)~?uI8U#drqaLzf}UCYaQ3>NWFwRNF@#7H*hRGT}n2ZT6(d4RFoO*rXeV+4M^e3;plOYBgjH@R1{ zD2v-v4Sj4JCU<*va&zJtKJUYfP6*NO{mR5ty|7z5QIng&i)0!|HqhJo9!+{uc`QDYG-6HrU2NM@IPM zH#*4cmpG)Srx!KEKTc38t!R21kwgDq0~a}Worabg5ySE_Ey&s?Yl?JLnA@KX-pNiP z^@J$nA^1y;3lV+F{$D(26~!qv+8;F3m>L#<>o6F6;P6~gif&-saZ1snQ1__*37hgmx zXW{4(SMlYwP5w$iHnb)E4S3scLUbp{$l;T(Kxu_vimgL~4#M8z6QGM73*~!2w|vyW z5dozBK+9v^@9r#i3qFp`Dj{GZ{>&nGDPnkYEh!|E48;(Ddvz|La~|OkF*!W}E#boc(RmmsM@WGdQl-D@pqD zYKpW`0Epo}-?DonPp;O8jUj1tDF%1l$_npdZPz(9V!gQ(;W6#$^`z431lwM{>JCHg zSNclJ|Lsd_tS!skVUd-6FJ+>g;!+KR@dRowP{Vm%$BP9xhAtJ-<^l&uDzRv2h?@Ap z7w5l~+3e~zbVt9vJ;akkjsPtF42tdNyKJrf5jN;X|aOvm0BNrR)+(x}U$ z)4)X@eif$W813we22Zouv4f%tA!@r@UG}^0Iqt;}ul)8oe|f2p z`=prA_8F4AWde#Af(Pt*wkB1>DfYcO-bK1y^8O66&vCWSmMSoT*0%J1tL*#XB0r^v z|0X$eE^em@bYM*VI$&FlKV+vO^W~vD|5jd_c>^$`Hq@e1%-DT%1Jbg&?!E8ft(C`S+P;FWfh{~%Flz#B}vU^j)FT7yE#*($Vs59hWOk9!j+c=mSKJzoSI!`|llZhr9k%B98Gn6+@qY$n?s`ASM=8vemL)%^$wHJ91j$c@IQ&lj+fg z3KXL1p~KA~p~c3pJoGz{{`(D1Aj-3byMOlO4T?d=&_M7Ao{ZM4)a%Q;cMx8LCa;NO zIfzeF^lPKGg@oGB(ElJ_c^*PaJPVl{ysF~P=28;BTijzmxx?3fKt!LG6>mNl9&mfK zu{b}WNH?FC2VPn<%P_Lzd4eQ@tvu|r6~yxHvGSC&k+ai*7a8%4?nXiAI9p`)=nM5Z3iMO2PZ5 zYgOl$QSux?zL(bb6jhX{`VW3>hRQ}BosBQ@DK2@M?3HB)bb))NCq@dy? z1lnayKdfFivJ4e;&fCZnut$8sLlaB&_Yy|9ME64TWt)XC(YgHM0fsLk5B^MYyLvl_ zzrq`ocWxN_{$__X9V-h&0p+^&D}PtgONhbFxJ}doQycz-q<`y4hen^4>W>h4WFa^}jSO~To&MsHt zm*@C#T&ft4hhWdTRURP-n0)d53=Nm3C$7-_S&}>L6J^V-D=iyjePqv3iZ=tma-5PR zGy=17!S2s)P=D~UFaW1&bXr?MP##7}9~CD(ZS!QCMNBOv%$2;)*H*KtXEqt4PqIOJ zf^~J6$Zxy#$G_I9j2IXiAWfOonL6hZrk5vw7#w;|KQ=Fsrj~>GhU?LHwFlk2fFGv! zT}&ixHTWgQBYWsN>@D%Tsov~jlb}Z_D+F% zUlvWb>sxL&XPV;YtM#q50nUBjyQKP^s!qpc8ostsKz-T@MglwRkd;+cWA6f++wnGg zM^Uy>=S%nd&4NoRM4^R-L2YlL{3*CU`&$U+x^w?MZWZCWusZQsY8V)+!*LT}>dA0h z>`9lb**9ZHG{;Naf90RnKi#K#6}QF6?C$)eGk!2dmQ&*8>v4bfN0f=zUdNMHs>zos zgp;H>6;vYrcKfsb@6wHNwGKMI+PSpS_Cuj|7f@=q!)TSOvov>c5#3~5-Q|DWm-~Ig zcX1Z;dZ;Aa+5!N5KRaX5myg=lg?*Am6bDfKJn>!*{+Wg5l_1kV<#;AcHs?o5?^p{p z5Nk4y`Z>K})Yp4?Hdl|lusrWOTiASZ{*D#PaqyI+n#~Mo{t3`)RciKiI3G!5l9sx) z*)aHdJ^5A|E|YnKk0~48WBpaKwyja1CG^|-f^^4@dWIIIv$i~w3S z3u3$1lIimM{Tyuo<+q2}fv+ta_K)%9`>$QQu-Xpu_nb-DElij73s1Ag>%$W^Oo?)2 zv~tOYO-ws;*ww{pb=}6n!g%(!23hLx0jYgCZJ3I%fSa*s;Y`~zwehZO(eDW&DJQmd z5!l6Z8(j^T<7__qp{LJ+wt+mRd88R#qOFyn8`Zb;D?DVL6yM__z-!&M!yAHbl?fuS zFTn6DnFIY<>B&4Kcbq_PSbL`UFA64T;vg6F_*{ngXJ3>TF;CAm;!JS!Na#=q3lDb_ zHZt<8`?WT_p%-9ra{hhU+#oA_uP*)`C;j+?m0mpWK$HXEX&V!qP<{!|G6jsYwg~u#r-)}GVY5#r3rLu4q^1{WP zP)D_I`myz&*GwfVD)7WC?Z!c{msqR2F{23WCHGAo0N}OAZ;7Srt3NsaX}7;k>~g>5 z0@HQWMUMu|{?5--^)VnQA^5_`1&rAM7`;GRQI}u~ay6FXrLsDNRI|-Jv7-tmCh`2G zgWb)tobQjKBMz3rOzWx}>HDPT;4Hjk#q0)CW-Jwt{44org8Z9#8+x{iw*fB zWm6Gx6A^engu?Y+DG|yyG9p;uk0MX((TYt6IN3@H!zmF?!D;K?XiQCW&Ac%fe8jC5 zW}(7gQ=Cbi|JZ!k#QmoqA!q(;6V}L;g?-iUpUGvD=^Amh_sD~&Mm&M;eI9thKd}16 zqRLdVJM*Vt3$rko3&o|@-TFw^O^_14!=SJ$sHCdph%xnSb;N{{QpMisB|#w zzGmlfKCcO7Xr-cURwhdxMznNc9?m%+xU+nZ>JF-hpSNXr}_SmoiU)S<aT*J8=nJ1(8BYN(uMH+1w@i@K?VVuTBpVs6 zY=*t-%f5@8>o8AC!s7YMrw*Spe~oiOX6fJ~_Pp(x)Btl^anX2MK)w`#)$^w9{I76p zpSGK@)ZuVheW3g#RkKu90MUa0&~!-WJNQ=V{ATWMo*z<)FIj=AzH;#^Ow#%3R|$TQ zX5;RDS$<_XxctOEuUeY|{G05+F0%FnHE11?;b6HB<(fbwfyqJhWT1I-*n^p zd3pXk?0ld5tS|cT&-{haBl-6)PZ(8Z8bSplRG6DMh~8}rH%7C7y0QqdIX=x_qti8FgT^!#~{emgP_2taTKLX9cAKiM3S$b~p@ z+~b-Ue)9ZLgy&TFUf-kWXI=)j$6Oqk(Dlbzo0n&o_-r$kn$7whf_&m>cHU^cVT@db z-Yt#nPvl)l*~e}?!!bJVv67^HMq9n>y?Sqt81|(He9SDa!i$n`i&}?FlwgZr(@kn> z4Q?KuZocd1ysJ1XaXVl?or^fcq7WTK81Tm8%}i~4Z-4hMZS+b<~BKS8p2M-Da3)+1LSrvKb+O4&?Q5=*Q4Ip zf8a!aX)^q{Y*057i(c4KL)I~|A&5VL=@gFd!?Ap?B{`@|+5@E+N8NglK519*3CNd; zGTvro2^gD+Nba_onl%r~=bxUyJcyOXwlHtj#9Pnm-m!Qs!9AvK&dHt*?cyf{y9+>Vs zVZF9qIh>YkOXztU!N}P}gP*@B^u*uQkp5UuJ$T=hX0O8B!c`dQ--QoPJ1^^5^R_fw z&5`=5q+318#DWD+lH0>QI@)+a7@LjrOSq{_gl7nYo8+|q=~xPejz7>ySI=WdcTvk{ zuBd>*B8743tW&NJo%fF`XUv0$luWy(TDl=lA^)n@6(gEjW6E%3tkU-I00p+tKC5%ZoYK6^8Xd3-Z*<;|2H436ZD` zTA|D_x?_afd@-I&+`W(YU0ZQp8{f@=!5dgp<(#EXjuB(%Gui;^<`0{WimR&yZ9V`1 zc&@en+4JbI>#ps+6n$i>pW@yG7jcX0-{slWUPIp}tTPprJOIEev0us&B2K3EOIN$) zA)P+Eb!tlz7JViTnjU5vgBDP+CV>$@2EbsD8{vU&*7;F!*Ab2fM8!kE5lX#ev)7jLMVP6$NATnUY{LX5*_NQT1C}Ii>epCK4fJ*Co$EQ zl%TkPh@kV&yuDGUo97Ofgo6zuH_j%nw)wfc09h{XyyOU0c3XuPUiqzl%i{-F>Wx#` z)CdXJdH`amr>(h#4M7)FXiN5bIB|HBndsZ}edoBq=?y%yx!xi@JuYBW3nIAIzWtnk z2w*;IGhFLrozPs~p`bHLA;5(FS}2bnfe0?hK(U)QYLq}p>EMI0#MvAufG|ftTpi*# zFs_;41ndXG2XfiO?UM8uqrc*8&?E}Rvo>||<&_2Z{=^b#XmpPSF=n{gw}Ztj+wE zB7&Z^&N|g++VK|0s|T^j6{g3ks75zCHvi=2i|)batDXQt4iS?)_=H|?un0W`1Hd0h zK5&7U1*C9Trmt@m4k*zC$s_`b6nutk8`Bg2dmP>ZAWsTy{s>}t?I}_r#Nl;HwK0a^D+o@ec}s*RomunHZy3X(*{p52*Xw>KCc zP%MhemUhjH%d6GY*da#^mG=ZdW%g>aG$JOcGr}RSGC`FHbC2hd;o*@{y}jMc*u=!d zf&yC!PlJYru__~OJ;7s!G?Eqn^AGQw93P}d-8|7Gp>C22AnY0^+i6>Oo3K?s9jG7L zF}J&Us7TiZb`@T04~X{n=`ha}4<`>WDFVtEC7$EG+uJ$3z3TzyNK>+@#Y`tnH+vTt zBjL_H42I0Oy!<~J5DhDX%C^?|b=e&&!Z+67W!74J5?Y5t_bgexa8Q1DW!_bdlht34Oo1M}yJPg5?Ps1? z4;qlV6rfB>i6a$ru`dh#vN}cFJD+~cz21P0EEpDPy-J#9Xg_^iD5~-KK7+($UQ2h; z*qn^7|0$Jh8l@knK#>&V_pPPL;=g@6|0d#)^35I)$Uv<@+GQ-Y-2Zt2FeLZAq4^tg z&3DSpbp6^RZcG&0k%7Ce&1o=8ja8(w*pnYPy>|3%prTUyb-&v`-|*1m{i}fMWv?iu z?x^PI1Gf+vZF?(59-gF(j~@wePX3nYG$g(=pEA@+^4V}OIjU;Yy>;&O^Frl+zpq?q z5>U*NBM>guU(RO3s+tn_h5Q9Jl{s$3m-}j{Lfwb?E0Cf0xJgb(nI!|yXT<4^HOrSP z-OrD=6r|aMJ6!yF=9 z)!er57{Raf%-OR8K|Hl6TG)pM6bcbdA3!1WkY^sP zPd4QVsL}D!)nWgaA(My$-yBtVnZW~gCjA}An^g3G^V7!s_J8$g1QPeN1|c?ika0J@ zABT4FuE<19d29c6tj7LU+B_c-;#!HwP~!n$a`QlH5h5)QN$`}IqG7){2;NKH5a;3z z&Xwh2Os!DnP7~7Cr-N|yRL_8#zWI_lzE~#vFlSe6Bk)#;vEuLI45WWq6p?|{Mk4JM zTs~XuAv4D$o2`)Ekm$?HWBkSGAEz!nXEE2tT)mHXU*u`z^XCVLhk;>Xq?Gi@)~u&* z@u1#9chsfy@CT?YT}z7=k}Khv=UsmJW2d!7scrYFvKr){lhEZoAA($hQ-r)yp8KAG zl=&WCd@Zx8MU0Z#zF9HYzE; zo+nj!ZF>zGXTX^Q^-rg;0eH??9c>&G36 zxzpX!`DB1f1Vq-%E!#HVU_^gt$axN+wxzj|l&E?>r1(_9uUZo0DPhp2@9zahkF37H z;VgpG;KGC3d*_3zt0XE&=*fxMbrL43=lp0lG@`j@Vdf=s5=!)LC2|mx!}c_!L7f6+ zegHrRFMS}g_%MkTR8qUUN77ftVK`C~7oGq@y(f)!-SaEmi`|MB7DfaxDfecZQhJUG z{!p^P9BqT+%>Dg+1DLQKLBj23i-h0+!L4ZW5mUH&;a z-8?v&m0EXsIdv2Cb$wBg>CGM{AKzUE(2+VZIvQCEZ41)raVZ}ZSYNKMlxZVAf`Q|Q}wx)CoLc5j;VhROAR!a?_ zjhSlkwd_2P0kl-8x0K{OF(C2I+m+|V)>g9Vg z@1zT=k_F4O8ja5|ot@ey5+MyOoeRruHtgH*uOuIO@rKQPKwz^xowu9ZEI*ENXeL(> z)XC070WujyE&B;{R*F}|tRVpjP1RO!GXuKK&^E}lxuAP6mdJtXVWntyxZ zK!+p>%kxw%bxHf%9(X%6rkAgXSgwL=GfXz28 zoVnns^b;xuu7DX;q15}_TgTUwvp@R6FPyi(8@7rLb|fnB<~^ALOrURuexdlZ<=j?C z9z%QT6a=w_&Kx|O82_0J4=KLYEAYb4Z24<1jGf%qAL@s(a_A*Dbeq z3&7Xz>W&DM=+CkPsE4C5+Cu@aV%w$?ol9c4+Ru%(b+xq>EE(WuOasm|^oxOD%m%BD zej_DDK15$ zjb~QE-zXqIhFdpq7}x?97p!;PLU?(EYVXD~(dVpfUZK@og;q`UsA=zA>~8|2lZT#; z4`A8sd7HE#@4e00mL+l~I{)!WQm0Qg($8vCS16Dp~`-Abi^2d}^wLVm=#kw5klm$XAN=*q) z@#H3@e+Ap(`_tni_TpLB0C33zxW+h7|9~ELnW=I-TBsKb1hiyY$(qqLM(VObAUGGU zy0>{W$@y-QU%$>UQk2z()@r3wX}I7NlU-6W-ogW%q>rtGy82)!dAd3&WNy{;;Qaa6 zTTh8?d)^-h^F}h3mV4J1(@Sln6CQ- zw9{EbcB7wzP0SIyN*gW<>6EwRcVY~@@iSf`%a)w+b1x0lSb#$|D>h}d6#r_T8jyKa zNd8uo-svT^y>eLcNBQpZp!>eAO2IXS%92g=MMy zX3%UN)U-4D(lE*uY~NzOkn-4*2D&IO9`l${cVk756vOKrU=bd(rg=>&?gLNNt5@4c zfG7d7nP11@a2QRp`tPz6yV^@?6a0W8ctB|x%Lc{c`l+dbo%t9D+)S#u{HseOvRVpG zNzho&QPgR46b7^!?#$BVff4xR5x3=ak&Ch65@PRlR$c}4>)@azL!gX=h$}!%bJ5E? zTp`=E)|TDWo@zCZa;IWuCgfOILl#OwtC?Hf1s}NQ%xl4!fR`+RpKQ;cySLi>BDk>) zgMR2p>uINhlM;~35LD>RflgbbAPC{6bSlzg1Z|SG%8tyN4V74XX>O5sr{Z_spm!x8 z^SiyUhI?a}+kpmBaPaanXLwkB&*bgSaU2G-{fWG`?lpbM=OrwBSBPZf%_P%?Fy!>01ONi>CksRUw?9)zm{Wr4PKesbG+)C0Jy$b zpUB$MaA3Q?5n!G8unrV8jlDy6*1XCcxxIU}Ahmt?YlG~gtM%x-X^7=PRf9GzXlfG~ zJJ({Q6?k{S`GfDB`Z+_pgx{%%5trvQ689){)Cy({a^d1)&d{FkH&}Dp28khUeM>hK z_}zZKw=`_A%M~fRA0(TYB?^Zkg^=qzLDa7%V^c71NI_0HGY}->P(Z^j2a;V&!!G>c zwzt{amT+12yruD9FFV{NP?&Am397T9+Y7ia(u(x5J1)mzXBS&PXa8)T7^Ph^b5u#s zR~Hh@xfN`KdAlrD0!c3t_?FSI*jUv}8w2exjXGtCnLZZ|uALg=y z?y5-t0(yUdKPPJQb+>1a!Ah~+`BM;R02vixe}DOk3Pf2+0YsJuJwd{F*+h*UQR*@u zm!G)yn+bV%hRoMn=rStIW;uVLBpDrZ!PL)7k>sHDsx>0m+@(o?2CQR*4w^D9fB&>& zdpPqzoo{xI1wGAP`c}MD9VUj}FlK?}{w`N~vIOYYCt}%SR#UrgJqVK}XM84IFgVQw z^Ezhr>5VQ(2#SxFi3|$+HJ0*OCGrFn8goJL{mrDXD#56iAHu|)Hu+eV@=)2`sEbi- zex>p-Y{4sd`cO!`#!Vp$7;_g)>gK7e9uE(YuyY_OCb!Xa`ULY~pCzX%CNb_NObDmQ zh!Doe+e)*Iixk^5w{0y2G!mwq(Z{4jQq0Ji38R|+%^@0}RBLxxs{7R#EoAnLpuu!? z2n8Y}1%)?6@&&PW!1&BbaGHTIfk9(X?b4ud!a&~Y#KxH!vy8~%9g5D$Qt`8sH(fFatyxANW##}yh;s+mgB`TkqCM<+hEBIq&Gk0p=cL^>3I!0ceL z>FFOHq?39kKPv71w@k;XAa6u>j~y=e{Xt8+&Enniki4z}>uN?6n5Ge zN_2Nm&-0_LqeKQ3PWtI{?&!e#m~K1~`PsWoD-$2g@o52uc4i|Gjo z`Tbn2+-8`0wc3M(CJB`1dNVif##=!y@xsgT%kl8dGoQYT@3Tu~#~UUpD(A$P*$>** zrb7c#9II~`Z$AZIhUUk7ZZF_{o$1E4YT;pc!Wa&%2Bd$y$?`}i8H~!P6t#YgVFQI5 z)!b{HD=As}ldIEVe*X@Y)PP39%3U`T3pb*>VQa!gQJ#oSsN5?EW@G@0X`K}(m`_T|H?@ShkV<-VJrqUT_QYiQwsWT^&tWER78=Pti<+eC{dGMzWM zH3m3hnh*4eHf^oj`Qog+u`M$ zbhH$;aTXzaKyv+**nY=XJQd%>t)AXtj3)azy}md;u5Xq5O=&mBPtKvA8V2&mCjy*> z_$Z5`z9TcA?Y^@-fRzSTje$R{8xu~`%ctaLR^*{a7(cdfPcD=4_j9jIF_=0T9!ikK zW2giZ_I=i*$*ZLS^-&2WCG5C98u$hGzAg49FfaX0?QibNQk^Jfe2Tzx4>=XAP|34m zQmb_^sQ@aZ0gk7G+)J(lwJk$6$sxp$uCe6H%QdEe1i)lYjwRbZVZ4A;IGHp;>RI0# z_6tztvfZv5ubLKwD@UG0=bc`rRn5_vR3;%?ak7~P?37rNZenL|ztI@fTn%573<69M z?MdZO7r(YkgL=A!y6kVN@)d570kTcujw<+or-fR{;Waqf=$D(c0I#Ka%x_{LF<-#& zqYK~n7HPSx#6Jn$tiovmE}T~ULe2+X!a-yZcGVWi*cwzOZe^LW`W~EcMTZKPnPsD7 zr{YSm(G}Fdv7CgPRBEOkXWXFz=;*ipVzwz;YRij&Mn8X zXZYUqG}vNWO}1LOBzoJr_8)laX+De%wPs*BV^Aa4tR#1#SFit=%qam7E>+0`QewCM z3b}8jNtmRHinPE)_8l2L(gl~PNAVP5qKnnQ4{Mu$)-IZ|dWSD}iNTh^>>^rfzAv0O z2-0a?CS5-%2g~fdBYX~Kynuz!o|Yc)`kVg7NNE=AWRma`QqRJLKlO885U=0&6{&>h+S9{?}J3A{d4TU53B^N!g(XG}-R%Gt8A-%@`F-}}* z@|Hmo6hL$>T*W269Mp~ysoLhj5!0!dlDv` zcZtR?IMRkUHU|If^Hp%Ay|TVOJDPOpNrm7PMrdP2pX4g1-1zbg~^_W(oIxj?;x+$|m_|MPeM5k}}| z>mzJ2Zr4hfYCo)f{}IEpmE8sv!P48>7G_khJ74;0?Nnm=kr>gotBXj{II!asDGZ00(1N47}*e}b_y{6YN*?DN_ZRpnlui@UVA`LOQUj8(+YW9 z>Ki08kijyu*++pw0ntX2Q~aEoF#wi{hvK+)-|+l)d9f~bm|IS^kMQKC*NN_f#lUBr zWGtEqWWw)@yZsP`1Aor|#}aL%AZ0xhPsxN*ew(_&h2-T-`}e=&|2x^oYJ$p-`3|{8 zU;e;i-Wc2f3#C}Iz0^uTZOk3ZoQGT=5=pkvxCmblGV~<*9jy79W zhty&9f10eU1vcBWvq2de7IG?lB9 z=^PPT_nX`7Ta`n;#hC?}v&e5!iF4m`WjFkE(POtxGokyK z+)t8#e1JLILH};4acX{+(y?FhvHg(KDaLO*{^GS-ZgI{ z_9I?Ux|?sH_Ihh0*>j%lzMmurvN5Q%-a&c;=8M&K!XF`BQNHB=!gRsRz`T!v{4U7A zXMhnnkiIyDGOmA`d`N2Am6dCV(P$0Tp5Xw3Vn=5KvgBA*U@#XM2S(3_v2*|kREXa; zSFS$EBF_ds7$(Nj&y3Ff>%gPGE6Uwl*c&MynQ0moa=G+;VNW{3X|!syuH)2A=HFc6 z4I3G@*Qr6uQim%>tqad)YA1KMh+C`E)8hq8k;OvxauqcDn0@ab=^b%H?Tt-JZ-hR% znI^vlmOj8Lh1O>_X->d-r?z(0);n_p7_rqkO@@y{ zQfoi4cVSCz&@K171rlX+*7kS8G0GDI5>s%r+BxQ*q_UR8Af3U8ec~vKj_qzgu6H~= z6!-qyP8P)iV+;&KuifANt%qN&F>_qoI#wOUOiiJRtem?AtVHuJ+<&@apz+ySo^#>4 z!nV2w5+nh5ijUX8=S?Yrl_2=K7q}i)5S{LZobR#KKmAP?B%hq*mi_#+RG1eOpw3P> zT?guq48i}dorg4#P(6S5VcLK9*X&tTO_Lh7aT4G1{+XW0j@ zw4pM4u3ShzIVtmRqmT0*AXh7v;`FCrP!w&vc<<^9xtmd?^PlDXZYAE`ist&Zq5fgf zK%C9VYe%jN_q)oz%R#aTY2O-P*?hw7b2*00S-X&x`mjqrh@`Mrrz|d^`9u9Czz-9I zYvd~et_Pwp+SyL)YWsqPiuo>u(slzGV8A;AyUQ-6Y;r$ckjW#Rk)Gr0(u<=EpM#S- zq=8zo*4Z$$DgH&)mkh*Hu5GUE+Z#-d@rss0ejn~VBJVBPJCYdr^TeJosV&xYn2Z^U zMWB8-k*_X7zZh&2YdA|Fz+B*Hiv}R))}mDcSly940kJEgCFRK+{~1z)!u+ma-p!XN z1_N+~o?s)!A}z!lSDiR3>4-6SZdfZ40J9i~+&lmc6y?QC<=lQ9L}hi$0EMF~^A$hv zPM{x}G2k{zJD$GG*&OR%TS{(Y?MgPl3mNmk#Jz(HFrrdOq#B#(z|zdNm6iLlW5KP~ z`hd2DPk7jW>%Wy9Zi~f-lb4gRrZEz>kC|5WvNcF+6DQAy(8tJBd0riODUn67+>}dO z7T(VRe$RgQGnHeFocefpUizNe6*6QjO6)7uO(2?&^VO?>0@sB5wr%DvZafThsuR1f z^0I9HUicp{Ka!JY{Pfd!klqks--UsgZSCzVn#GK4>V;;SIz4;V;=V5q$$*pBmR4UO zky08+d*p)hqy+hhv4v$D8j})PuwkuxlVwr~TBensnouf6yZTcHS+Sl?oAF0YRX_fX zwG}y22NjPM;U_%K_UD_L7XTqfz=2|pDPBxaTHnR(zf4lnD+xmCR@i&gCpSKQc{w;f zegjr%dcHm1;Pa^O>d)o*)YZAl#fNb#BogAsrUeg=isDM(c_ycat*UzBrdAeKoGglj zef{Vy)50zh21P{h5|k&`+B^FCREqck?cLoc$JbZi@%ZN??vqfBH zSR2SraM*+L|-TY4rr=ZD(lLOrv@7^Er3*_M5HZ zEelLw`snu(EtkH0_6}k!UJM_D;NyJ~f3A<8L*6Z!*$g{tPzoI((N{BM= zF2_GM9Iy2nJ26_0?I8F9L)75q@(-)a40vPHar!lfb7H;`9k1?D28YUC{871FyFLtw zF5${uVFhHzvs^lW8VkK>XaM`#A8mVU0PCNLswr5TNe_Yl^8$>EIa2aCmH%9DH_=A) z3OcKmiW;@~3YLun#2$39eBh3cNcVMk;fab*tQrB1IpbKMf|gcx3GYJNsZdREyo|=L z^K@42;9^tDauC{h`In4b%8sAcAHIs8php#dlH452Iy)@Sm@|!4?IPS(N6HS8Tmv!QP-9OMhJ9a2 zfDQUFN)X8BEJXp}HW@^gBQC;e6<0#3#mR4z)c&##>zF;n5Z&Sp0W z94x(;<36ngV(?&A)@jL>IY+0}ZSS_C%8pF&xkU>R5fP&*v)-bP@f^!}w-<#SYRahv z)0=!1ZUYBvYlCb5`;Z~*>>fR`v!hox7%9Sj7Em_$?_Rz<;#1|W96 z)OM}MU%pf;%-a41oIPXARl1$xRmb(wDEZ zQ`SKBp_C?jIQwH?f0d_?6b!Zc_F9BLaR}-yZ(H)}#;=-62?pMJJP(pQ6uC8ZAH~a) z^|OOL=N4dy5xQ~{`++Pk$!v5Oht_)-HqqIvrw&Lr%}CDOyN~UE&(4H3Z}jJ}3hxq~ z{rCtC2Jxce1D@un-*Se#G1@q1%tY*^85wbNDR)PQU;Bo)vwL6R-}ZI%c5@AzAeU2U z6Sdeso7%JM02HI~`nAXm!~6P0|6j^S9k`zAB90`>*L62jVQ~()QtY}nfdad&cp3>2tL}E@E~khJ0`` z*8+qGq-)$?MKU}oFMX({%aEh3DhYV9-M08aG|40nZ?OJ-9lMsZe7)-z*HUH* zx7kh#;o5nS19Zg7^vhQ$q)|A1G=yGRzx(p{xQ%@^*@>rEY|_eyX$F_DYy8;9ZO~+@xj`*X>ww<|O!YjKD}jE@ zLM}?nII>*UFNc4vAulimPwePvsS<)+p(yRogEFScjd|)qF{*sb(E8-5rS~O=hpYRm z+ndV$eSH^K-qAAjyu3N3PtB?`ESSiY5NNXghd+`rO0i(87X^>AFyBVpqFegHgMyxf z)Y?7DGS20G@`z0jyqzFZ<&8mkK8$eWdzN)SF;O(J%Umpg&q@}FPM%SsrbYvPumsr# znKIKQPK`J@v8cIZO8OvY_V<6pNW2jc9k>DQsC}=`z-$LL>A2JOT0UN|1` zbi6x$$JiYvDP#u+?ue>=e#yp@5R=#`&pN^Wy5u+h78M?Hs7b!V{O+v%+r)pY z$+snJ>VKSoCdm1M7#uP8Vv+1Y&fbOcW3RQRZHC|%7l*R+gNY@|jH?AQ4JuI=GdB0( zfRm8u<2Hb=yuqD8TCC}C&(wdoPky1Hq2G4@Z4#yFTIL3D(~{2;{zw{~X0*sS1HlrW zb)0F#gR2nW{JhNf=f`;2loop6mqp3B&(Oe7?`b~dR;s7ez|9SPEAhF_qEGKsW3ry6 zkB7j?Ps!|F%ylXk(H1oPSD150X)LQm z$$2yQ`$e>R0<{Mv_~87ifqedENZp9-<$D!Ap=!fPEbHG#FOYO0#!?bpzxwW-GDR(1 za+6&qMzwkG10S|N;*)c=mYDQ<+k8OVe=mHj;IjMw0X{*&z8hR~{??QEg}i-j_~6AK zc^7zzf&u_gsiqSwqi^9l00Oe0Bp#({N`svIct_?4=Tcb)A_+GDB&ybDLU!vptNX`) z`tarH^TY98LA&+2&*}1dx5s8R)_4GA5PsM6Ivs%wTT_Q9!COl8< z5iyOkRkii@G(Eq2c=ze}sd9aL{r3Bt@3+IY4pnN=ro>AdK}1xz3^jkQbu8m{lu}4I z7d|8`V`U@&EVZ(59qRsSfA!m|KTm&te|-0J@%UxOg?GmN11!IB;T#i0)oCMXGQiAjle-ZMA#2Ix+U9VXNKp91%Ceu-Fz8 zW~BsLepjhmZLKY-5xGvABaslUtPMg0?VX8|g(F1(5j>EXh0QH{ilqektvG^>G{%;~mFzDTCAL1OS1!+wHd7ZBCP0?}#WYkB?8EKYe<7db+y0yt%pF zZg<&74#Ox?PIIHDC;928ENQy7U$g>GgqR>;Hhh|6zjNcY7-Isj47I!x*A8+iP7#R6 z3z)NJgsy~|g}bsgdAYLrVmTd51PQL1C5}q#ljdC(p3eGoLFJ%6w}wbbX^Az`9RSRY zkXBb0v^J?~z65tYw~PSGwuTnR(cD;r_BfrU3%>ZTuIB$X$1l16gMhK_pk-edXUubr zs)-e@JX=@8x26qX!OC#8L(A#ixh@hx>S*$gY5Td(7Jo(!%?oE!(0mq8qsY7>Ab_Z3 z4kr>*8LZFC0}vsKdk+gL6`6HD<>WHJkTA?xDj-JayVIvXfA}dd_O#oSZKcY{+i^#M zMM~i!EQ~B7(3^+=CGo+8Ig5mwm!YIA+D*CeGV}8#wLAhcY$Ye1DGCe^bGNXshp!(W zKR&j{+wJYmaC5!C*QB9J-PVnWoKB}&O1OEraPd$C z1YWIA%#oRg0-hZ*kl-2lL_!jBb<9yQ05Jwac3l8q-AFRzkHcJwBtH{!QHwA$F1*Au zVScRu09?4AIu{OeKt#%doklPYjA6dO=c!Zm@B|J4lUzzjEYy3iwT6WV=jWUPyN;fs zF3x;y!mNZ{RagLlnR{0PTrdE4B-EzXx(Fwc%H2GcHnFgD)nOQ0YwniTqkzbiuHu=f zyZ{EiZank8XQoL6Bz2|;&*^sU;T%LHh~_RV!O_)3io1=&7y!MsSVk4WQV;TmN+WWZhig%!l~xKXO=eaVqO4~Lv>>8J1OO93 zL>Az0u=$H-PH^tM*iz1|K;(Eu73z4RDhKlcxG^(=`hRa9TK$6b?w{G?pqfZ z|343Iw(>av08#+=0$=rSY6o}$wXPFD06=7jK#?#DHv^Z=K3pNfts^lYQJ~qpoJnBO zJGu}tkN|+SnMJxz!Xr2ml~;7T-47l5X+F)-o~P%79?}FLAQ*ToJ#W@((L-ZlEi!>6B4A2js4{jaXK zS2x?MQfjEzamZ9mNC)k%2~m0)$`tnAq?R@{W+3KtS#x!+f&nC?vs!m7#K;=TmE9sB zkSsL-?bunkROwSsq*0@D6~6F5KjIM(e6$my48`4a)_&@h%k%M2sqAFW!~+h@(tAi@ zYX(dN;23TpOu1@6{U?jEeXOJzArafb=c=33{2R2AW;VF z?RWdRwKNULv0Crb@pOEAdYq=yIF5IBcl-TCx+R2mskKLkxs@+p!YrqEa}G)Y)Lj$R ze8G94wcecf;n|&Mr6gusL`v&j03yjON%u_xxC!fIxsU65OXQQ zj1fSD`DrKMoYDx-(1!ps|9koMPImt-*8P9M@r$m10M*u3Zv{9P*SXxN0t5t}`@Pi% z_M4dRTP<9#U-+NPW1V@PE5wwoUMzhcy|fGs0E8rSLLf5_LqvFQ$zGu%HXTt2sYFDW zA-H1@%Ti@?d#E0$h*gLkQkPQ@$h0}OtNry4Z+=Ax=GIeo>ejuTrqijPAmA9sr|D_N z`B@JwT0FQml~M+*qm0F?p>BA)ANCR~QlylfZiFNhgjqyT(A9hEEM%4hXFJTtcc0%q zwMR3%-M_loT-{#Y)>5@ut?yb77e8uCO zv-e(Wd9cojdnucMY^q!6h7THDk$EHHL`Iz0Yp-v85AYdinKgwDh^A+2VukPy-=kl;R9Q7x@mD^@;~4{smd zeHh=r+`fD!Pp>a;1{j!leZFp`I$3G$tlOw78&gL&3*~x>W_L6uVn(bj;tXe5Y81j4Lq-t|!Jh>h&us4Qpsj_GbEy>xb4s-} zz-V4;q#%V_gAqS`_^{e;wYBj$3}tGqtyb$F|L8|gpFc09Fk;{L2&mY`ab)K8dOZw- z2qR)zt!k}pocewh20g1)4*-4FO{E-%BLIpBBB@$yWgN$kA3xsS-j!0Wude#O@4K9H z4iZOe)oSZ&X}et*r8cu5r&KduB>aA=XJHcR4uAd5a3ZIqxRAu|(62fK?E7S>L}`930sy&L%G>eq!ObZlinu8-xtZHUoZO95@2=KL6k1LztphQ+k+*7zDP_}w zEN03%1JY*0eV60)=hjk}S}}LUEqMfd6B@!W9?8L&j^loqj>z~pJR;%24o&so$2W)9 zYU%_XWyv`Kuk)t&E^+Gno{hWI2`55QYv%Uh_~BmfQpzvRUtXPEZ8v8GWa`Uc0*Ep7 zxlJ_!CA75|H6e1Vwco6!`~(!kwEAUlF^!j zdyEnx0RU(-&f@Br(A6Vh<0Mf~(@5k)KzAczb3?$yNlimVfJnqNzoQhPNE}Z5?sK37 z&LV4Ws^R~VQqtB+t>Mp~awg)O^D>BX1cC&y;(Aj6K#J&aR?~n|r)i3&uCx~Lotkwi z)z+d0Ad!_aBd$23vL`5>0V(HF3KMlXgZpgMfEe{Gz~D$rcah7Bi--IBv8jUBTG#9K z&CT_9uU~)tlOLa*ZHM8w7Ew1Aafi9{V@V>adN}OQ&oB1-9V&L~b*;75>h4J-NkZ^u z9&Rs)$V}5X9uCL-e%JS_tLy9Y^K%XRT!55wt+fNd`}r!uueCiq zes?&OaWHc>C*iZ!TG#chQEU3YZvW^1Qp^5-{_z`L|DLU1z~g5z4)X^4KfyImv41cN z;C+z*!e;F*=cHvI zNr)VtpQaN4gu;|WtW^L#g0GO(sqO+OxPndotPw5H$H@66419!z*}0ENtX2Rn4?I6v*4n%UIG z)RNVfIJ0oGW?<-8$0CVqQ9{gp@22Dw#SGkYPD0#N0fB`jbE{^}q$ksOGfle0#Ezy_ zLr$K%&eY1Wl0ZZol(EKkh1|9%f?U7=`(E^ z0KDj&M28alcVI`yRz^w!hTukkF3FlBk+njc0MM-=iRy?>V2wnO*jh!V%c}(Q>zz$0 z%TV1tb!i$WNz#f-mjmDm(5aOM4j`~ztxS6W->$Z*s%q~3^72({wQ1wTYJQxKZh9!k zV>=d|-j5$X=m!N&n8@(W{>}IBecB}f=~9;y>{x;X-A@} zz_8!#KO8>1et0vqgIBzqk;Oc8@f#gbq-&uQv*Pbf;ZB#6jU<#A=ET3QCB` z9RAl5QK;^S*qVlEYXllJRb~Q21Mt=m0V3`aptd$6tBA}z?)MaVlPRJ5hYufq=Vw0) zFrX7@t%1*e+3WQ>I?lddMNI3uUo~xJGK^zNsn(KHLcmd{Fh5HvCZ@CU;r{mS!-o%u zczJoT>N-M1q^1px`rMUq$m3|cox4ly8vp zXihnfsN1<;jL$KGEqRWN4!a5L`@YsHA~`IL0M3bS+zGJ!s1ng`w|o8i^*7&qbCrJ8 z<}dIYU;kwEQ}GMPWogt-$Ry3cCcx4NF6iY+4*2QDXGQLWh2k6yGEWCjO>9zMD?q7;owKuJ!>xpOzOMv`lt<}0aHlt@f22!!qkXx_p{m}cLT_Won~@z2B^ z!ueCHB86W`c-NxjBn1n`UPd8@5y+fVy< z_wUAT+Q8-_oo{8k={IUxz1@%Z;4s)wblM;GZ-zI9273T?7D>?coD-x~zuL&A%N?OG zQ75^Ro<)Snnu|!OQ|69EfEJcNTB^a4@4;Bdnpau1*<`%p zhr5S2_ix@D-Z=V;)r)7Fr<=4%l#tL7z>U(fnoOEjSyl5Y*HTG1WX80Rm^_kf69-_> zs)f!T0BfnKOTqC8V#vkw?cjr=4#S872tY4bt4`z8ap&%wDRo&urm=W)MCh>Nj;$#m zAfTx_f}3em1Zvhu$(qd=vZJuLyRewLsS>f9GgApGOCkqv4VVHvb0idEbqmHy=-*Y9 zjDn~cOIT}-5M$j>FsoKtYe>jQeb<#z98s7wfL4d5Ev2lc!W=H)?(=-h5c{0RsnUX8 zhTu9}%>s8dH?&i#5%8Qv-oQQQtf~Y+gsRF!5Lx5lo&(V5>}EtX4a3>l+0D%j5sl+W zh+W?!q7YB+sv1&z2)}JHiSv@At6SpTaU!Q!_>kVrOPPY1pF!!v!4$m^FMeQo6KvffocR zrY%?~E)u{62t~jdJJplt3sE(b&`~TKsURSmJ1pA#aF)S&Z;$@T79RlM&BMcw!d8PQ z>Y1Cxo5lbQAhLGRV=^s4kBWXB0KznY5NA&EU67W;4Wj$_qRZXHK_~X5RYgH-zEHl~VDY0KfeE1KCHX-Wx9NJ z{$kaypqX^Zntm-`Yinw14z*2cdT2*Ab+rbn(00e&;K$vtYf$Ip6d)4X@MhbcyL;wt zE1Okb;ST$5)k&8nfrF$pl`(|#%;elktfgg>);SLHJG*_WI}`hFY9>Dxs;MZdePL}!Yum}jgaQ4XK1*i zF?Do15&f6IDFaOahN!`&X{{Fy>$y45Tmg}ou&G*WDd+v+aK7Dsyt^j=b?Z{Py1MH7 z-psn30r7A+bU9aT+wHd2I!z^~G))r#NJ^?2hSw4D+)9nV(X_4mzL^ShMXK5yU>t_y zFr*|Gmlv0p7b!6jgPQ~7l!yI3zkdf059U7S83710094h}h%We+f$OS!yg6ZVc2Xdi z*-0R{d_J>MkQY7+ERy!QX?914#5_}503>Lii{=4>&j~Zq8qXV>k0_;otzSfp)^I;f z?+=Inc5@cx3KvI(**3@=T5YWcFc4;Vrxna*^mExG%iWPadHQ5IR59WQui4ZQc?kaNp2IQre`oHoID1vGaDbW#H!RVtWA&5wj|Hl5VKhIV{&`~ADaJ8*opeRaLLzSv$sMa-zx+?+_pp<@K!m#HL?;8LFG10-`2EHOm_Z7WSAX>FY6d?*pFO`~~@Eq9w*>eIBJ zII&g*21Rx8{%LoF0SQYjyMA}~aQ~OzezVF@cz+DiILi;0ox)i zfX~{s&)F;SUZ1L6bcD2&!&rWZD0nN)43=Dokp01D(!IE6^qNf-5M{}f@Wty#PtG## zAx#clAQ7GJjEkq*&|1fQ97jX~#4hF1Dx4ZbL`0O7YAGTDs$JK$)@-TM5I%X5qDG!7 zv6>OF*=(ls^!({Bs}lUp$8T)?`}4;?|L5QR^M7{umoIqKrvb%Sy6@W)zkh_!2QFG%o8rnFH4nEmbtRBmu)Y4doGLAaj zKHLsE@FSxmBCdW|5!3bhN<6LmH6wSa+itdXsAp$qZEBKa^67`W@83MWk(7RP_2rY* zlc!hD+gQVc6vEvNO_J2nJYtoYT4~&OT1trgBn4NS-F+T!7`S!HsYhN_xG9DoSTXZ}Tu=pv#v+~aDkGdtsi z;JHUlm7HA7-KUuU%`cdOjt{DykeCSxiE>K8-C*JGU%$S-xlTF1e*Jp4+x_XE{wX+| zot?38m%Huxw(t9#QrC5-;&&Lw)oK-AMqvho)+#uZT2eUMiKv<|mr~4Z8ivQm$K7tH z+Ro2!*6Xz}G0&4SLS&KEZU^HL5%cW0I~%)1If>$A0Eu~u7K(#*`zZnoka+Cv7_|f>LD>gRZEFu+3dP*nkGaHI#t*8s?A#q=5ScUq$KWOrc00LwU*Y}Q+(Rt zuUh;LzmfItVS4yC-~O9F{O%9^;DG4AYY2<-VGgr)00^@yfTdA86}Fh+0nE^73o(;Px-rmc|(qI~<^@ZbIS+iukbO@dQuwS^_s!hkh*Bw?>Db)B2m+LEL; zRT9x!9gvv4H6(VcaVoWXD2Myw{cX7&>Ufc#JU@GJd3MRfIIFhJz|4VE0o_#dD%D8? zQw+C%0C0{`KSsoz)*xYnRbxpaAd~?7Vs+tWl2fy$O{J6JIG9@TQm3k*MN746C8<~Hnaf&P}tGV(O>2lZPH5ZC7OjTc(~snh5saIRRVT!M96&(6^CGC(0fGYs%orpq3)L?=n!~A zSckh?t4mN0xi?3|kf7b}K7RY=+jsBZ*LUs4Z+`2?zxCs+|#Tr`Ol&zFMtC z7#uDyFV41GcWgsB}UZ<`zZOj<}B&AgA z@bGY>N;wzR=FUWUY1-m1if%Q4&8S}UXmDY;z#{KE0h{Kw1B}f9b3B}hW6yiV%LfBPPW#XIR$7WGCMFt z`7{%eQVK1OLfTqN+1*;3@pDx}glU>eDZ>2Bf7Qvi^9A-_;hev`!{FcD|GPi@KmPFF zr+*Iz$k$n?3lHG&G{Bo1K{zG1!2(?^D!`c_gTx-q;`}HE(*;;O4gX+n^=P)v`vj2U ziSc=w9RdIV&idt6j??juxdU)(4G1Y^vqmIf?vAF7kc zHP_$%={gKZ9L(pOadQAk;(%^eOC#o18YdBZB8f`-gwZZT2Y=HTtBBGd7BELNF$7>|=rcgMS`71-~l zhj)j!M>vwxI;{_PhmHJ@9@7d|J$0P;>g<}0iD;Eq= zQ)6ORH&YfSnFG_UnYodWM}PskgNKo~I}p*FZiv`Qi$+j7X{~|b92AToDb=w`5;xCX z(yHdxS~Kv&wExB1U;Oa)hvD^jF`fV9%O8LB>Z|MP>y#6qBT}g)n$9v-VP%mrOxsntyZDTTS?z$=-ZxN-^9Y#uU3zbkF}JG%gYb%->=r|ckkXky}8*R4ms!6nz=Eu z&Y1kHWT>@&n!2vLxw+|6cA6Dax3{+sclYjoeRXwyc9wJQ zx(?iHts<$Ek`9N>!$U|Ihf+fA-Z4ACPzn)kaz-LGJ0&^jB0tB)hA>!{08mvEv$}&> zC>8=NwJ3E9QIimbsHpO(Uj#UrV*8?eIKi+%D-AbuTTs?$PiIKh%ogyoneC?u0EihE z>-KRRlgRvGBC5{L^(W3t0NSbw5Q_;CbD+dgIKx3nbp}HB`~5%QKluOa-{0zZJHGuF z-~5X|+WpZujTe^}5BrCDR{Y z!AVM)8n)ZVJFsuTe3e$`a=ytMW;wKdsb%tMXrsIT@b(7$&ukyNDt%y*d&^&uC`E9c2>^~z^6NlcPr zDNjid(ZQ1lxF<k7>7kruwwZgw1wkq28!IlsJc^RK@83INWwTSOd&;r{+U zcezdz=PV*2gA4rDZB8iyz<{}e{y;=w$`wgBaaD&XC4Ma0gctzB9ZTKa3`Gna!$J)) zC#h43$!=|}?|VTC|GlOfPzE5H>Za?iudaUh;fJrk{`%?7&2boJI(};x7Z)?f1Yj6P zW}ZrMhcZov<3U>kv(nmbzkhsuJRXnZH2wKs{KYT~t+j~5M8wT{Jx-IU-QVAJUDvPr zx9{I0;xtXFdU0_X?r3+nx0mC%b=TIiNM4qvO-hM*s`aev9>);@s_NBxeLoC+N&s-E zmCb^Fax5jR$UZkDI}PM8#Ocf6Fdh=c&li-H77hz89k#lwYWl3P{#-b50%oK5K@0*B z!JQGuS`VdcFE4Y~ojzg=%h1+Dq}CcqiaF=FirhV(Ht0*LmUC`RiLlm6NGA`62x27W z8~?8${)69)`lqIU^6^jp$zT1GKe0bq<<$h!GpNMd>QC}Q^<8}Jnw4L}gsMCRS@1_85rBUv@ zwfTXn2+6Iv8#r34Bw5=8NXQ8s+?y*QAPQe>0=Cw2eFf~bJ=4O_%q%1%p z2?5DeyH##YO`Vy{)XXReD3~_@s?#VrskLbw-rv7}JHD${&inJHn`c+st3LOL+)8O) z;>|=xcd%wGqRkLNTg!c?i?4CYNt+@$Gioz)4?FD$@mUgdPuIF6%=TC=_GkL~zaABQqbj}tJ^d*mb?bix7+&b#yTe#-zQ1yv?io3_cQ_` zrSQ;qY_;WCWQoLNExZ{cI}s$wxSLj+J_3H--As{Dh_z~DM8w8os?*)$?YsMTfBEyj zJbc`r59dF9{?i|Q`J<~RSLf&F%p{V^G!apkGdYf>ND=}H_Ze+fL=sEWR!c>QP=&}N zgxacr*VZC9F!wp)1FF@4F`G71W9Dbio`s7vBGyvQHk%miscBC6{{H^z$&<(3uJ5}0 zhliZ=a6IB7+-|i7v4vw1w+PX*kid&D0|R1=_Yjeh)iq#GcR*%S4V}0ol40mJv=--K0J1PcXxO9aDV^Zn>Y9OcZb8_a5zlU^zF}o9;aBZ)=2pD<|#4# z{q1%W(~8BJGrHK)ngL{y{WQg3@2u;NrF6`Z#<$6NEi$UQ*(T@2yc>p`(mEwIn^es` z^a(2w{;b=J)-9b3LO%;|fCbEqiWf1tv?T6EJIF*?q^O=Il=0%D-;Gu^Gv6JL{P2*w zuGTrUz1GUiId^6%BEk%2gcy@%0AN6M*I3OEF;s(&fyujibc(IDaU9+3IX(a77Ky*% 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 F{{u8+5i9@z literal 92263 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%0A`4Y@AC_ECIDh7&X(i(HmCW{$FM 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 F{{ho7NPqwU diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleAndDisplayFilters/baseline/displayOnly_sphereAsMesh.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleAndDisplayFilters/baseline/displayOnly_sphereAsMesh.png deleted file mode 100644 index 2343f4fab333782ba1eb24b48b5377953fe68bd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90449 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

      E^DtT$p=T=+^88NUKWQ>pd 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 KVkqbbq5lEenUiAx diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleAndDisplayFilters/baseline/sampleOnly.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleAndDisplayFilters/baseline/sampleOnly.png index 103063648151be774341d9f96e7141657f0ceb1c..7c26da7cced7a461050054d21cf05295df9811ee 100644 GIT binary patch literal 16147 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 diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleAndDisplayFilters/baseline/sampleOnly_sphereAsMesh.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleAndDisplayFilters/baseline/sampleOnly_sphereAsMesh.png deleted file mode 100644 index 1b049c57bf7fd960b176e1508de64f9161e30b4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18947 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 diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleAndDisplayFilters/test.usda b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleAndDisplayFilters/test.usda index f1571f2517..cab44a9cbf 100644 --- a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleAndDisplayFilters/test.usda +++ b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleAndDisplayFilters/test.usda @@ -28,25 +28,23 @@ def Scope "World" token[] xformOpOrder = ["xformOp:translate"] } - def Cone "Cone" ( + def Cube "BlueCube" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { - token axis = "Y" - double height = 1.2 rel material:binding = color3f[] primvars:displayColor = [(0.0436, 0.1311, 0.3634)] - double radius = 0.6 + double size = 1.2 double3 xformOp:translate = (-3.85, 0.65, 3.85) token[] xformOpOrder = ["xformOp:translate"] } - def Sphere "LargeSphere" ( + def Cube "LargeCube" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { rel material:binding = - double radius = 2 + double size = 4 double3 xformOp:translate = (0, 2, 0) token[] xformOpOrder = ["xformOp:translate"] } @@ -143,6 +141,9 @@ def Scope "Render" { token outputs:ri:displayFilters.connect = token outputs:ri:sampleFilters.connect = + float ri:Ri:PixelVariance = 0.0 + int ri:hider:minsamples = 32 + int ri:hider:maxsamples = 32 } def PxrMurkFilter "SampleFilter" diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/firstFilter.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/firstFilter.png index 29354cdc9d7949a195a02d3d96052757f25d0a6a..7c26da7cced7a461050054d21cf05295df9811ee 100644 GIT binary patch literal 16147 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 k2ltGgT14iNP56#xJL diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/firstFilter_sphereAsMesh.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/firstFilter_sphereAsMesh.png deleted file mode 100644 index 1b049c57bf7fd960b176e1508de64f9161e30b4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18947 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 diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/multiFilters1.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/multiFilters1.png index 48942422a6eb6e44a9a671975755c43f2a9026e9..3fd36a7b778c4b3f203c2665e99e1608ba60ceb2 100644 GIT binary patch literal 18526 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 b_@XO_y}t1tHo@L%&Ev%5Z}SjY6a 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 literal 22511 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

      VGg>(ap$ zMxVt{0YT+8&kt#kTd&A#YzS3sJMd)g)qtC_I5Rc==9!T#ii=KH;H*cZF~So@qCAmG znSF)izv6jQ>{w)LfttZ8r_M~99OI4N1H^mD&di_Q;|r;!xgSjuH*5XwspqL9F7_`Z(R>W{eGUgf-yuj& zd6A1548Fd3@sw3&S7!`+54Ym}Ow;VH$%%PoPKS)n`NAn{v+}2xD?RJ;pBS~z?Yvew ztXr*m7;jpdXT9&(0fATp33EcIcaF}YxpoksUl3&h(`wgi7of?7(lZysqHG;4XRk7nmJt+zpydx-m}~9 zA&y&G4$=^bV9{q%k}3AV!zkUJ`=k%WQz1$`UX3me1UcbGC$>J&mjcQY!Sfhpbw6aJ zy0-9Bo#@OMHizH=7PrgB=oyyJLRIPa=__+FGuZR`#^-N>4Vr z*Lo6PJIU`SJ1FogKv_x*k#Lr#b{C+1>LZu>M4W_RBkwy#u9k%1IvvZ*UHyx-t=ece zjw9)QX*2j*2Xv^f$&p|`0f*yqM6udP0?_;lVxSrTz|DIpyeVw}{%BIi$P3q&G{Q#@ z+_%LHTRxpLEy=mh2dFAqJZ(}pIE_pp`A+|?V2Dhd&^O@CO!i1K5)(C)YG&wGoD0Z^ z_41{@Qyaa^ewp1_xB)U_=Pac`G9%0L)@#|{j_}PGKJzPc|FXX>`at7*{yb9^_vDiaN2{pHIn#UEu9t3T zf11-XCCdc`FP3rDpgawlu-}mCHQ5V*^$-}f7_*Be&GD3iiETzIk(`%eM0*4cfq~04-jS?EFB@Fp5q=nC`A17Z5^~uLKFI9H!c5EMkui-I zuhFD7rv-GH*{Tu0rJG0yuM9B|_iw^Sx5Xk5j{y>INOKWXQS9?hx2)@nEUC1_{K_xS z6Hf`3O{umgRtyLp0MZHMX7xjA0sxTB;A4d^w+?TPck{8f+m3_BdlG=k)6J7k{xBi4 zjA7Wni{z%v&Q8#XD}k^Uepxyo1nHJl zLlc6O*c87#5ApcHpS>Om$&h4IJ^&_A;9VYzZa5=;Y8$yQhBq!&ZTNt#Y(y53s!mzgNz-zGuF_ZXn5l*H|K;aaFo^w2!M$rR0;Q8E~*B|DPXO2z^pdmF;`pl2#7j zzpprfaU~$oG%%V11d2}k@5_G}{1*rRk8`2_x1gaGQR&DNt`#6{K}a(j(>i0fnEwHw C|7+C% diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/multiFilters1_sphereAsMesh.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/multiFilters1_sphereAsMesh.png deleted file mode 100644 index dbd6abd73cbd2fa1529f23a31337a7d0c5bb8485..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22174 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 diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/multiFilters2.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/multiFilters2.png index eeb49835c7e35329be3d91f1dfaa32118391cc7a..7c26da7cced7a461050054d21cf05295df9811ee 100644 GIT binary patch literal 16147 zcmeIZg;&$x|2VEFVj-fG)N~*qASER=loF8=VT=%v9NnWQqJpHfbazZaItC&w9h02W zFmj^?WBWdRz5j{d`JKOSh;$0r>vHQKAJSI?b0N2~r!`Q^EDRQkZf zewhk*qx0z36X55H>ob_gxpOyu{(H_R3fy2jckb>vb>%0oeA2h()IApMGFOR^-E$YA z4~2+K>+T=AQ}0CB8oYv9c^V*~DPBh=8)C`6C6A68hD=U$EG2EMt(~ScUcK`1d*6Sb z{^umkGxzWXs<(!jG($(0@K~Yni=1z{gZwz?u5ubn%mNYev3_crSP zzWzVWgJwWf`%$ZxKv^X6Vz=1?%utmTeQ4!k7ko*EKN7Xb9UedI)xvir&xihgPS~%! zqln`Zem`Dt-+^#Pog1rnAiLsFEKbd8_o@e zCvmGM*p%Sv;YlC&4#27Y_BXqr;9I;AzMl8Nx?1Fnpj*qn6;F@RH4a|A`~Top_sQD}$#qTyALR<;Av0lieko z;j80^rE}U|7%-E5>azUjD!uhYENrO$^x@)r}smN81 zJ!<1i*J5k_5ApXZ(}xdd|DcRcAN=DBDUf?yJFQP9T9YlRPvD3NO9b}%q?4-gt> zK!AwM0O;NU=Y|X{98SnEMyP_PAp>gU9EzNjkK676p+j4nr|ywnynkAXr*ogJm+5+D zOkwCq4`hF;dYu{ln1r{&>;8#BK-jt-WK9&j{_CjKAMo6bC5og($8m8eb4Y=*wmSxI zJJbr9pwThq8VR9;VY?v$0znVzpgIvnls_JvvqO2Y|OP?v;)8 z633>x5sa;oSIuxn6_H+Z8oY&PV*yK`>ymrgnOcxQ$n1k^xG zSXd9ZwY2);8WoX-aD8HPZ)sw0ZEA6y*pn6R>OVxKX>eSH_y5wp!}j2+kutfRyC@IJ zyT}~FD;(3M-6(WzdSWe08kalNK>ahJJWqeinQqr01F~z&W?NcNh|mG0|F-w zqFS7s`;%@&<_%lqo~{-dK2M~Xb1I=c zmceZAKZFH(wn8!a()TGRZ%HBB3*xgl_dKs>tb_Hpjk&*GljAKot7iVs6*M2$Dv$F!hx)z!tEkj_5 z9!Q&l&HLAZeIOKJx4R%T*Q(VlIGY-nQy=Y(sxer*rN-#Wv2~3PT$ALUrTG{Pwg@oQ z(;dDKj4&rDo&CDpa?1M9BPELW7jp6%K#qd3UN7mKZQHvqsBfD3ScZv$qs7x5t{AKRttXwrR z?-vaLoxCH3oKKjE_!Pb$$tZ zoc^0~@`&92-bXYivhI0eP2mO0J@outiuv2BF((~r!Ki9oLnN8Cnv+QLz5jjwzfsx#(fIA7oiJ4z>|9uED3a&CD)mr_K2akb^t{voll z7sc$geSPj803LUo`!w&iew%!XPS^dkaO0z&Q=$=+18O481s#e*OhZNX%kp}MEIoU? z!}kAPbHkcFt{m3@jLUIq4|nAxD(Z=HT=bbQp1ixEnjJ3sxD+Te3^DoOZ&Tar2Ib=Gub>% z->8ql8P-rrY!;Pra+Pk*AP~ra*9QYgfM1o|LSG2 zd~Sqzawl|}cM0_CCME&d2tDt0BZ>3-yKQ;m!MhW)7=YH$Smp`F;%_oR?J zr4^K~O!{ptcCVX1#v%g&46aLIG9-mtmCetuBzPvjQM<*McA?%^nYn;^}OP_sC|0Uo~n!Mn<<87x19Hizx@!fZ0FS z7dq%(o!7l;dkgm&`8D}GRAnIIcLe_**0h-Soi6`jW3W0`?D9A*HPcEUipv$-i^9lT zaDF@1MFOaY;C`RLCiq`Yj!IKO6Qbl+w{vDFA4Sj1PC6zXuD+;##`#OuTANX4^;z%w zonYDoOM0^jw65nrA{%!QMg1ys*JUy*T6if8OvoK(08v8-xn+Rgyl!7Omwdnc0$>EL z0A5>FV9ndF_T40}W(uhq+5`Dwu}HE#e04r*7T7+Nb;-PFZ z{u_VQyQR9~>TlokSM4EGnvWl?-5`d}!yC9>tYW4Huj%O2)wId*pl`rPIc9(#uv}!Y zixRyLi?r}jvdc*u7NG&CPH3X22^80gN4EX=5XLF=^h!LSd>!ER!u3xE!zXZ-;7&n9 zQVTHs%ag}J4a_W_u!@K$p|koIx9f^NlW_m>oIAO|%+gqmrP|Z(- zj_>Ce{_Hi~j|;3}ZCB%wGDk?CvvH>Jj6%TF#EK;B7cJl^yh6oOBm zb<-VyDdv}kXsZI9+kQ`7EmgYne8i{MWCMAo1Z)}4ma=DA=N>#;ysZ3B=3T8@S>6Wc zHOFl(GR=FYe?4}>{v(l=R>xcQA9M}0QTC0xEL~wdU6=Ve1FwuCHR>9*KS>zoFQiCd zV}_DKtT)T4!X-QT3ceYcf7lu(PeA~R{>qeQ($WWCn&PGE=iHfGRl6ep^#ss8(S1h> zHx=8FIrpE#oM2jscp<<714?%Pwq>@^N6u4D#wWImbU2X5HmCdK8EYV5fD9&U-=&s~ zY2^^YI%EEWv7n5dP@|1d)C|{s5_{QkWsM22q5x+EC)Kap#mT2KktxVK_5QE6c}OGW32py?D(_JAAc|=RwX(xH8^skT zQSTe&-I%0sza-oIZ&_CW8Ngu^aG@uD#N#p-von!99EGsB0=VbHk}GxQkuPp@T?;I; z`U}nbswl21nuz8EQ?m1H)ljeHDJxPjX3HL#4bis>#O~A12bV~k3wM4|Ha=1+V!eE) zR-0H?n4RfCXQ90W+IN@pJzQE_-Wj9}w9y$LG5Z<(V4bobul_h5AI&q3Q%=H2A*xz* zgXGs2ixN7C8qo-Pw)A#2b6<76|GUBryYs6@*7!ta;4ygn1*;P5uRNxv>cbzotY6Fk}j@q|mt z5my!=Ek5{^SyT5q6JKM8PYbHq1|O!>G~=@dn0fZ)RMi0pf6M+5_li&u;*74yR&Rkf z(x@QX;KRC6T&F4X`2!$k4IZ1C!mL8%9tY`e=u2_jo^Igt;L;Hncv18ttP|uHMp7yZ zU<|EEDMde@xo8!*Kp#1tJ0?g5@|0I%;# zKE?qO?9~g(n31Sv9DjS}oNMg6Q6oUTP8kJQ!s;m_dwRHtmX{A`T|rFsQFd0!P2LYg zD(V?OQ9VKRVweh--Szd6`G=8Vr0~uep zBW)65T4j+Z*8WZ6)r{X~4?QCkN2;D_zS%o^4W{U%#emRcd?%uM#4QBc<&0`j{v$>k z@jbV&cSw0@r2gS4KYAyBB8<4CRa^c&gcnr4OY7KJn(Zk#Mku2C9?ExH(2aWCG4-jKpgic6>hCO z6>+*e-+!5NSdWbAvjK?-cmmW<+11)*#-rWkOo%Y99 zt5P=HIhOsND+gRr80S(^Ug})81;^RugmJ4khpobsy3`Yfx&wXB9OCY~U@70jP#tS0 zVgUkHR(F;_&t+wa8@Oc167tuE*9aGtY`$&Dc9|p*R@d!?(4IR;*r7fOLZFxL55!4- ziU%qsd|J8x5_twyC_I%Eum@q@J7_A)TK0bE|K?>6BmuwwXJQp}HW8o4td)0WA~_Qn zb^kx0-u!Xz{5hclTZff-monoLBN^ypwU@ofG0l>9c-M=+8S9k-@cLqz-35k0>i+lz>NB z8g)=9DEHI>dwkhjo~^*!^1NXsazvPZqIO&8+;&={e!$u^|4TV8!k5T66&BN$K#E>m z7xZrvcht&=|44mBBB?{N^{PVP$=uE$xo|2tu;$TYs(vT!q00;puNv4Mz_-4MkCiq+ zHxdKg3Y7T1#8&1la6hjWSI;Fb@B@<91k|#z@+dh1gks*=DWqTHzuOCO^gLWEa~Yy| zGrT}RYT$KPdybEg@+TK73!K{fruVne;Q8fn6(Z zTrldbzy_Nln~&DMg*{7GrmRv3+RKtqd(40nD-ZsaYY_fGY88n$ zLCBb8N=^UxoNA#!d&YLa0%3XKzf{~nYRQ|kWR^LQJ~Pp6l#adO+`AS_DWG{ zxV)UnAE_{Be3|o%cu-<8U-ELq!5doe27h*dV${&PPNboy*QPd8I3-75Nq|)nLcNkb zs`z`~<_>-Rr_79}IDMs%&In;vPs;57S3)x1nYpJk}5Vow0?S^ z*dMC7DA8sxEh#W;xX7( z5+bdzWG;6qB2K=aXYD3LCcz?N+J$E0v%G4NO`ua+V%`2WUbyqM5eE_4Gu4jM)^1I^ z;gW28Ls>bKqqz^+=M25@X^c-j4?#fxTn9&@DsvG)LKvqSu`i>ZC*q5B7uO1j#|Trl z*GC#QJ)B0?8)3$l2}F8BzxY(O>^0*bZxvavm<=sz&^MSgYgYNhn%rN1 zlQ}*$wNBv0A_EUY#;St@S2%%KTlw1kat4+Yt*z08>$Vg6_Pn%tHZ+tg#JbMC-AzI~ z`f*A?LXnYmW!_KS=RcvrVeHqTMX+Ax_{g|jF_MH9bA%OV7gYDwYr%PL`1fa(Dogx9 z#?9M4VvkSHh*(hcwO^}m(pk}M8NXDXUfj-ae*rJcs**PnJFvev0e9>urLk_RCl{;- z#vvVmLKkU`E-RfBG_)kZXT~S6+Z8Ou1UqB@36!Lv5oW7<%gYN;j4ozGCG|ex_zc|8 z8jbzbW7@wloYfMvcQgcQ5p!&qW=umDz*>@3z&ge?45P5qp&E!(cIS9G#ZLTLU;k&4 zLo!f22L&GC*AN0uUnaKBI1WwBly7`2qH#wlBnzX`ZPZf>ECLQFSU?Q{ATcJ;!(Z>K?NZgmtQ`LtKFR z?;WDv6y;ihzS@?TB-1cS;|jgu&_~+7L@;A}4fg6>TplZz>S;xBLhQrqLCn_(JC27Z zq~n>6k=s+`)-Udl4PO#|pL3c+8{Q5+a5N0jMcn^>EV*@T#Ms>M`wDHB2*W{kG5WPc z6JBXBmm~{0-d-NTNOcTp5;K`GXs+q}55y;%k!?I0FVXhFrl%i*OwW5WKd&2iY(n)r z6V|Fev>3)BwY$xlWyoi}ODY)ZDf=1+aZPBj@C0Ek(=~}nwDJZsrr%< zpoEe%VgCqGB5p!k!qGZ8a}~S3HsNw3=qTV&UG`DKtmUu@x2;KVG7I+V^pe&oC>R_k zU%%-sOVnuLZ00ZuwdUwhnGbcr@%7zk89s`F5Im=rE&PvxFQjnM0BVQn%} zjs_Q>7dVgxlQ%KkV<`(3>yE?{3uB0>?ycJDS6UFlPUq%9*&-H_4)>F=8ZR z$AIsW4~EBnHu&3ZEeU(AHM5&mWFS6O3h%BB!h3)>sro)4KvVt*f z;i&bvOlNs$sHb z?CNw6Q`0Ow@p%TEzCL-GYvLX>T*Mkc^Ds+;ojw*vy_Mx37PnG11Vs7>b7Fk@L)zdq zVq#x|8Jve|W~%l9ef`mr@YF|8A9ZMLdkIzt?Jq_jYlb4%WV9SSqQnUfCU-X-*X<6X~}H#Bdw)?D6v?@Z6vl{qOSR=8FoCN7-TP~%bK16{UW1{PZIjLp~0;G#^H zic(1hJ`YFw^)dYz)-bGVeEzBe{B^-W=UGX!pr`Nf%15l~k;WJ9kyDjL0rcug3R1l` zY>ZYu?Brx(3+Ki-zGE=_@o1*wa=9c?;{(@*xarlzI`fy_K6j7kEa~e+@$#4;f_{D3HD@3L`M0;HSoG zevDk^8h>e@^%ze_Zq1~`8ix;0FJ+A`lA10fnTU=vk64epYJKSqDd+8dj{Hm(N^#m3 zC7W^K^n5EwWzJG>WtpPFOQH=0mkDcuA+oKgIwJFZY8m?V@vDt!M+|Q*jww(FkL~Aef6*1>pP5oucONy%0nhUw$;lN$;lhulBm|D~1Bj^k} z19t3kdA%Y(MN{{*if8w(|9mntiC9y!M@tgAR^#tM?Ht!^{<=` z{t{3!9ejDyp1@lBK{EYL#pIDVj=oy6_wDt(GH-*{fdfej)4ErB7rEoXFz1GzK(PUo zo#SROhjS|d)uELbQHQAf{t7$x#{hd{jy5Qna}}$6{b+5ztiE%x(;hy1suMPO?wtN^5WBXutqtoZYBd`9I!dY8cl- z@l1GL(|$UMqA|gdJYlqMJa3r(lknxltj@@pdTt+9LK+d={c)?iNZWa$c=^SK|3w3= zI?lH6fDIW}5Z5{2=r=H^@V$Hm(u=R0OG}FegPw{Gbxs(^oaX1fqU+&<`;S&CtYYPy zYXr9ZWCA+;Q!M=Lt7Yv%W+v=*jOsqjo4QKv*lC)U{`x58EEy{ZFY-7PTHg?zKXrS2 zn4aeUS!%1SPW#x^(p{Tv{zDQCS_4fGt{@?jYb&z74laiLW)6O%W^89Fs#h*2`|?q| zcq_cp)94NbYRZHEYJITH;q}u^nR-Dyh2&F=NH|cawyBJEWby zq=~a4^}nHM)29A{WtY8o2kOnpg5=?jY7-J8(mRi)VLU0dLT~()TKjF?y13sR*tnXDto~N7`r;33@ z7mvU}2)#NcTKJ(B=CWXWCd*9d2YSB1vdhj*3Q&bn`4dGOeF3B<9|O`j>lML_0e4vQ ztP(fZs|BnoO*=N-HOKNaZO7PUUy^EuU#Xk1U0(lp6BjtHK*OUo!Pg?x8~Qu_(&@J@ z_`VRSB*n>Pe3f)N)^X@0OWcII9I>0l*-~yix?ml9dD9(2P4L)SZH*UJnvbpe@dcrI z((H&`A3gq|*;#DRD6TPMLX^Z1NXFx0*;Of*zdvQh91T7yxY!TY*<53ew_fIv6F`T& z(JnjSCsptIRT zrC_Y*&c`CwP3&qxaEnW+LM`N2+b;`g5uk6J)xQ#&p+7sWC9zdTDD!k#zZpD=4L5Jf zFk?lLCdzzNCo>a{5G`S-jrn$G`5|=RDN<-mk}7#?y6^$^xo2J{_k10g5BC~LVKuEG z^u0z6jm}&d>f3r@S>Y*gd9hX&`Fw}4WAjvBlid1Rcb%*Ax}C#spI=e%x`&=9Q;FS{ z`A1@eKC=-Ex>SS@Y#ymVTy+n|35{Ae31C-F(vi0*OT@pnuq5f|(Ql07lIb!bU-aoW z$KC(-3mrhMLB`)7F;7o}K>V;T2tq9lUf$g0 z1iz!nk!RV0Tb{rCJ)$bLstM?P*e#xYWJw2b5|33Nj*T4mZV12lR5|HybskqEyJ4Qy zQb8R34q4S`bQ@%*EiI`NZxHoGv#8(dUe6`ARBq^#XfuA?|O$}NMP{g;nSKzNshtbm}C?p2yB zpUNzV`wmxKoW7R|^axp)3JTB2QnY&!>S72_`)I`giTg1m7?dasZ6+5$d9!hR{R=j6^)v>fT(i5?>+u_}}AJA+1 z(Ip}w*Za~cHt+8ga|}{CqjjzPV#TW6z=6D8rGP4YKR@;LUsR#;)yYZULeYn6CqZ{$ z8$UPWqyL#gi%hlvKhjw@FV-7fTcMz@t{FZeA{*__bw-D7;Dhg$)$YiNYRo*4)zJ<` zczWCsQ%g^sAK9WY8hT2-oRW;x<~0i-9>>t+jX7!a|L%r{(qY3{DGQ@-52;PMd!90n z1*jB#iZ8OPs5>P3OOVGO9~AsCf+aPZHN#zL(oz!ssnD1j@+_@GI02V@Qt$XehV7%$ zW_z>q+V9FTy+-Ur^|O+QSw9D(APVZug`$-@nFy2R(#$oLTRbqD5X#SN(y86a1aRIj z!pUyn?^}JZAn;=CE14E;DjB^Un!F{i+6@194xzvFU$pb19F-g5by{co2XIxM^CM5a zE-n2R{%4Wa?e@(Tl8sp0xOUssirQU5InCtE^8yueKcLotqrX2A6N@jZ@0Pc(T<`^v zN8dc&9+9Ug`0u-z$@_8mES^bCI11Pa^f8Wo4xySJGqHBXC6(1VZ`^!OTXz>Bact^2 zh%Sm3RtVgm%j+csN`2pN5N%~lcy?hLy6azugZo>l@_N4+SuE$Z_yx`z`_xVIJl|Q(EaiA@@N4nt{&PKn zDE!X)QbctJN{d&xIj)0kze+oLgR(4j6c|iz5APS%q?Kso;r}ogf=qZR$T23^uw6_j zT8l?!u?JG{Yh?kfLq?vyIg@Dq65qYIeT^r$>gb(U8Bgjl2Aqx$%TDPcW~vI{jn4#~ zDI`Et{dp*D-h!gNa`H;8>w(K-s@_ND+SX|0BSLo0y=Z@@+UN>kOJRnuU(mh9V_F`N zh7+SuNt`Y$VaY4I5t?Tv{H+dWmqUWssfVFcAt1Kn!AbV_){>sd0kTl?%&LMpi`l^K z{%MH3l#c=t|G#9kWOtG^mX@*fttxx+$3tnCq%3^P^!Mw{V>Xr3&bwPu-=8{DqE_MoJqx=7=j zpy0{JSI@iqJ5kh9*!Q)Be+Iw}-@VwRyLHKQ<2t{+M{VZC!JD;wCwqKy;Q=wW`%eZs zK(*=LjRsdgg1x1WO{a$d7m6Bps?pBE6)44( z(;~!Yd40#5Rc`&uEBZ&15d3f2y#nXXACj|!U)Bb4Ns^ow56t?FY>X`zaIx0vR{B6h znm&8zU4i)gmb~K)Q%?OTj=b=_nUBqBk&V2|oEj*(QO;25m|GYFOD(|cHTl)*tJ4q> zcg|!YKtz65c75%O_J`kQww?q>$-cYc8XZ2oBuL*OQ=;?0bNhAeVMRH7rJC)bN{&Y$rGVm=w-m7VzEEB$ zFNib58vfWld8$la-k_L~w|+uWPIzxq_;$O-{){L_$zc#2N3Z!LJp@L6X&=}G%5s_~ zU(F)&6#7rjpM*HqQ*1*4kN3R?y(N?@MxY>NB?f$1c0e63G*XHP{biOqkY4E|cE1-Y^gzLO+li{WaPj(-&?dgA9LGmtppE zm^8z!{WGyIH|zx|K3F#MdbGBxu!$ON%cs?oz5{uHni?MFvb|_e!WFqLAwrD-zqCO6UP7MhkJb*i;?60kOHXF zyJ~C}MP%|Hyi!NBRpTCrb7n@~Oe5^%G_!43lUBrn2n14AGE!ns>yo|PUQ9RHB3o6- zMP{Ejx_HL>l}qT64CZXETF#@^eUuyHL;&+}`Sfeg$=#W(Pe0*5&mfPMa_UWB z46&aOxhBXZj$fB}GueJ!ijhNnmdYxG-SPpniw)F+jc_p)zLD#a8l?Aq5L0EUNW7Sg z;4tNe*#d=t9`uILq7)eKytjxpnUjm7TcVqVzlNpX;H0*fJEUV*^R3)zXkDxiX2n$d zJGHt`Gvph{%krO%+E8wn_lq8E=DFiK)}0C|wyXaNg=LrlMY6a_iQxS5!Z_qHyF$jX z8dz+f$Jctq&17g##cJkV8=b^1w5ZU`N;ASbLBX3`?){=MzmP0R8-#-6hj7PWw7GW} z$)Uqth}?fLuqlbik;dN$kYM!>rD-ogeY_yCZ-Qkkz&jTk8|n0`nU^I$aqo9G@+J!! z7eAF9O3Jh+cDMds%7P^+n}%k6MsgV4=nO^6v&gZPhD`mj5|idE{@cd!>Diws!nZr{ zB)cvd`IKwS>o;{x5+wJ@b!J8nnRf(f_qVoczd<^wwIf6amAsPIdxWtp5j(CJLHx1|vP`QY)rO)d#B`!8a z8*%iboGxy_N-OQ$CBy!LBQO70fd<8l@ooF<0xUFWfJrSrL8K`TP$9(jZ(Q2mz3U^l zZ=>V_PFd1>FMt_JPAJV9Og@*Oztc2zDlP%O+&}FpNH;%Fww5~sq(w_0?iWHomKIF+ z^TK+ZvdWvQq+MMu;pxVGHaV7#7*x1-yTGHbgs2kr+Ux&}i(TH?Hk$O10kNmvh{}3O zwun#b%Wd{;I<6Mar9GpNe}c>@m%fHofy}>Ra#_wz(dYcj3P`qnW#OSGcl1$ z%DSw)dbmTF(wT7yHH)gChdM@{s+MquU_X$Q9^!Qp*5*Te`S`n!ChRsjG|%$Z|HR_> zy4_6Ge4{BA@7TaM3+)Ki)4n%_cIpfZQ0C%=rl^24;G#o9nojeO$2;k3F*LTmeE;or zDwhSBN`XEvljW1vt0r*Ax$9N6tc%-a2kNU&>H{(N^F*Kj7=*SC#3JqV(?5Xm-g~Qw z-SWIF#qdATwjtfEY>~}Vzag)-+ZZuk2`DOzZr_v)+eT1W=WLe->^5)Mi-!)xNQtA^ zho`LxkzLYJGG;_cHS&{dZcJTnK8c9B2FBu)u#4MP#lXH|_Ydvvuq9S?_}*NRP%%qf z|Jb-4&Gi>iG@|#-PjuG9HmTcIDe;Hj&_-hwaC}ubr%isa1oBLZxp^WYsiYj#0)HaE zn?>BV`x8y&B6AS)(SD;$S79t|=Mu4}GioOAX7K(GxY~dNdHvhD(d}Nd)Jd&^uL?51 z0)VQe`IlzugTEOn^mqJu`}SzI?G`|%&bxNUKfIjzBl>_^Q@5Ku#*8iaP1i(+y@c}X ztw#a&o$m$Hd6U(r&zAlPRlCx;sMhy3xjKwACQBcyIFRs&r3BCp+Lqp*vYf>^?lhUW z(`}I*w?&!Cu=?EM%ZD!yRPIKS#W$xEjb_%4^xbZ)AUnOINlHV@QN>V=>el6l#hJGw zn-^ncdYW6?0gC$Emt z%tQ)LH`z-$jI7=TpX|LU;h6BCqQB$Y-M6P^?=9jZb{KyDzjgB zK?2WCS#iz{(<^1O-*J(gRJhN=TJ=(5whFK0)|4yyeD!qe-;MRJnw;U#y)*$|f`)?R z;>#uPwuLs1h@NKyg=E0RYo0BV407EAF}kg6_0dgk{I8rPx2=8({%-NTZ7dB>;f9OH zU?tE+Pl1+)@TT(-V0=WFNko{BR`zUrTSnw~a9CtZUcg=S>UHPFoW@pnXJ?`Co54{f z^NXE+v{~UQxf;v=x+PQrol|GwVP>XVp#c@c0YqGPe<4De4)T?i8(LS7qx0l29;s=^ zw8r}t-TgtVIN}4aIxAf4pWV!+_O%wJAQU9In2V>{GOo|Yx|2$f?ksX%og99*f$(ej zanO7~pG*YnxBOP}u870)p8`&-kPoB_G6^WTbjoQ_LrvXCMF}eR!jg z%r(T}Q@Io7&Vlh7SBz55e{TKl)Ar+EzH?k@^S?B?*2V;*)+kijLd4&Z%W8Pl@wN<( z8=0ruuA3Y;CLA|GOEn!cupdB2&58rP%S@xQ5~D!E`yR)+Ld1jqQG@<(z-88b&G|6a zLgxO&PC!O|djSY>0OhFed0hp%(y;5}I&=H=Zq@~@cKgz_T~F<}w73E;0p*jSG87IcHhw3J9gP0TV*{tydI@v_XrKx>ssv#S2-=sEUW&u(_yZhLC&w; z%eq6d5W2MOn9alG^+#rY9CD`wHjnA@xI`>>31(d#a^3hF zX|mrZdOg}+p@BwcL7BQYTo*twEg=C5V*%!>t)&bXh!~*0ud3X?J(%szcsBi9Hylhk z_X;5esh4A^{eoctjL9a)sg?-dCX?;@#80;bgzQsM9m{UFmP-w{x_;4&m;y%f_wE3vC(UJ&IAG_J!=iuDsRlC1KZRE&gZ%rDhCNNzKFs ztxHO4EKk~K&-1OC72)ORSSrPVXO+n3?K%dkI@I~V(B779$za)QV-al`QR6^JPK97C z?(IpVo#3WZp?B-#DE>AZZ6^4J@+~58Z83L%qlxdzYVWB5q5%+2wk2^~(l>_flY*Rr z0k3-Pmy@E_N35mmic!4e*wy2{e@>H-n2)!JsIrJo8+~9H^zgEtWz`&@j^YzG%SY@) z8bv){3DN62bE5ck^FLaNi>rY;7bNy(%@;t__U;JKh?fbL1IRfz694roHQ|Wc<@}sq z?w@+6jt>;1*qP*GnzF{hc)GXhfXPx>0+Wa5RtnilWni2=5WEf7&fWf7X0%ZLh{3@r z9gT}C2G(N0@td!H-kwaWVg4-T!ds&`PbJOy@>$q^x_N#y^ZIfQWfl?oPtB@xQkMZM zYso}lWU3a_udL%?HvV$H#;|kv?Z)DyRvp1GFLnpG^{(jB3Ht)QjcjyMK1f%59KvlJ zIlkA%L6l1Dyny9+K~k&CYo3wFm+MBbOQEZe?=j1!oUb(O)Je+}qMJ<;RAq7#| zpHujr-DfI3=+Y(F1(POZKIjIOPU&dMOG&fKX;q8wI{VEo%{h$<_U;IK`?An&g||-T ziuT4e=b;n;O)?awQ)$rnIrHrfBC1$#M}2rKC$aCiPO{(K&xe%`8N8+Mw z+}fAurotEj*%p)3`$iR{WT3$*o6}dQ@;iR{0#m%B=z&)Eyj#Lx_q+v=gzXHwjq7MC zbDMei{JBBU*(}^wc{R|<9p%YJ5?TVC6W?%ddsAQUQ(d2ORbuc*TgLL7j@rgu9ld2A zB^Sw;kCsm^Ab=3-fFO~NKgf^#rP9Db`fRc;`QMhYgUx%VLT?K%fRg=lFKxegd|~<6 z7r}<*xMVN(@)1TC$VmrA15U;Q?w63zP2G5ez-{{8D&@NN9iRp5t-^LqhLBeseQdyF zUD`qZY@1iJViXXT1=y!8%SQOo4&9`W1sdsIpxTlDhOZQ@^eLavX zzKjMHulLBZluY%=0&Nd-87j~OAh+Ag&+E(0OoZH{oNJRtTzE9;T?b3KI)MlUNNRyJ zMFFuu0Au}2bII{Q4K`lb(=)nr!`Yg8Iel|}FXv1CxfwB?#WoKAN>H)-d_b!9jcu9I z!@dQ%*7|Yn4r!f1)qhZ#H!Vv&uxLS;I3U5^d{x ztGGv8c0>M6sb~r&^$XCg=G4#9dKDKcxva=O`J*Xk`x!&e(S5*t(3SN~k z{?8MgQ>eez$rju55;Wd46TUsL&=In(33`(Qt9@#4*E9%uq+y-l4P tI63^vR;uuSowxtjbNv6;mTNL|OY4KG{%&iZ~8p% z`E>rm`H+>hvi3cD<{I1g?3qNUtIFYEl4GKvpx`LTOKYN_Jl8>f-oAQ{{6(F6OcMEp z;VQ51fr9e7@89PckmWT63JNufg0!TzZ|2GBQsS0;Hr0Jj`-_*|ET>UJ;X^}XBf|Au zEcK`P?G6qDHXl@!ig;%bOx&W!=~n(Tr@g1?-n{cgy!O1pws)RhKE{4%xNo~~smZ7@ zz6!iWKUj+$*Ot3P$)t{8e|q^iR}GLs@{qpaMS}dwMH>=FLHUb!iHm~b847!Wfiw*|xK5WeG3lCBOwSB)bBh8V|WDqQT2wAR=MZYy)ASdkr@*dJ~(i`+R zW3=0zjJsSH^1DO2-aTDA+z(Q%J>3>hxfEVUo?+$s4~c(`wu(4aKtMFkEC$668y@Um zsL?}4ZE(ZaNNw|GmJb@dRneLw#5_7Kj;3(MyB=4mAh46ssk7-6s$B15JLx&(>gDE++71s*i}@WeLx$e!^bZeVpi9 zS|5(?413H<++Q~7+`xxC>JW2{?q{BfimU~=3i>^@ry$nWo?v>kcV0JzFXVsTs(q!e zi_W@xEhe75W;`SyOShqp;+Cbt7H<#)5gyJq% zO!zpbw(v)qd#DV~mZ_$gQWqr%wn7Czq%wUXx3tPN*@QnmdZj#*@DZNBA+bdqcMsbd zJEn|p(K!B;5jD|yEsJhiB#-y+<{^zEHf9nj31c#bon@S?SUPz$z-NP)d=8aoC-9alTJ7=>mhs z1o4=LahqPwEv6-Nzq0k}Zdwvu3#yqB^Am)LChLU!GKXPF;HdiFQJEsjR+c;4?482r z^j4JKaK5lu#pGg%HD?G}3G1u}LE#|SO)NrK2=zBt3F4Xd2>vQkmd);qVm5O%myv`( zm7xx+(eCCZp`q|_0fMm3t3-I`LOvCz{+qIIuoop0NF5gQBX*qkQZ>DAoU||5%xe+h zK_%9n6FyX_6<1q3F5A1E7KBH$eDN6_imqPOj-Defj;K$L&ugxhznq)?oGOZ?Rk&Uuckb(2zaVtK zwE{{EmE_EQw=Di_gr)_$abTK#3^rNYO{;FKzkOW?ES#7Yv3%l~Do3xaUwwSKg$Kh2 z5zwqFty7EV(o#tCAT;(sTp1#EbA6Jq zN5Ad2ZH9X_H*!BUzaAzj;y@+Ci|-zv$r6s)>UjIq^?4YjiW-4JC`=&&-QUc~$P;~P zPB>o)Uo-^LywZ}TwuJe*YN;QEjRvc0aG_iyo-y7)AcL{h!G2zq%R}Jl_t57|^WR(j z<-sAJR=@dF2Q6|fgW#v)7T(l^VXznKyWJalcd_F7+{5pK?w!WT#EdcPc0e@Ee?H#k zkapYzBTj?6746mEm?GYw$Zt$Fx>WVB$7I57RT?UT`_K&T@~Tcv?`AeU?;wMFh+mT| zODL`X*!2xOQ9FIt*-{4W=MQkuK8b8Noimm(vzWOUUhj;ZK+Mf~aii4r7Nh5ugvo(A zJg!Abm$ZtoK$R7@m5Lg8Mo^Z`)5Pu*T(#i-&)?{lC0vkUOX`#|(Cutl&ao%f;;f^s zdUiVz6<*yzQ`pLV5tn@m@$yxeNpL*B!d?s=v;^Ee&6w7OvTLMIeZ=%AJXSPRxar{`>h62h5pdFL*iKc( z@@D@z6g_S*#_Mu(AjiYzP5-v!$ZOE%h;vDW8R!S?`S5|>Lfcs>Bc|O;yxYtyrHy}~Mr*`d?^C{K^kY6FM+#(hb$`DS0$IAIY78|^WK!tf4zP$3#JgER zpR7jITePD`BT?rPI1%p%y7zpDW$vv`^Xd{njWnQsuI6(FfjpM{>5`;Hg4iImdpc7u zp7#2_LIB365l=Wq_3e0Lcu#m<0YVw_k1M8Hq;q%BeaSN_z6n&Qkwnq~7I$?UPEI1; zmWT8hAc<(ddkbh?>wFjB1;$Xc@ta@{{@YtU$KkB=vdUL3K!5}$L*cHcoHd)Ex-$Z68Nk~a*XJD>B@Os{+87v0NwLC3dBKty#46_Nv z48a!Xy4OJ%Y&k$&<5KtBlJuaR`=B^i59OES9XHnx&182k+a%!6`r76@Jw#e~p9ZJN zyidM>u7B+)7;AkXJl1o1InXi>YMJj$bW_VkMG~!$V=$#RUSU`D!!-#sA)rSmX8W1< zDyqwoj}|^PoD$`l=KC3$;=;Wh@A`9tNP|pQ*>V~OA!Ua&9Oe|98RQMPAHBuZYbX{! zA_0Gu8PP6RZ~Y;EqRgR(eW4VjK3xC>S!7H?$K0vLPTvKEx4x-CLjGo>^C|X3SNuUt z2UvZ)GEBfB_`UM;+g;`E9=uc|)Z+$k=TouC&-9D#NTSx65lHhXLNJzIrm*PMi5lqK znN_I(-+epa=V-s_?A@7u zB)SW?0eMdT{D-uiNDr#TbzIo-OZ$o*#b&}nr!tqb86xB>OZp0v8@VOwUPy7)JoSpl zAr7d`Mk+~fl+}qg+#GS6KM+T^YF(R&`8F4w(9bExkek9t(G{o6?4e>%#!A% zGBUqa9WU**XB8Ay(I#m@4H1j0**8)8;}WOanD)C7##dj6kxOO|oW}%f&34qv&#_8= zN$gbnG<8$74MmVp40C>rKla+!$dxJ-L=VBf3eL68D zo}>s)S6uOY0`Ax5q34HZR*!W3AwF-kTS;&ybaGZm55D_L&P-6w4CFyMYVPv3Oa+35I zR*6*WsvEtx@SxkBvkKZ=Mf{)}D4_F{Mj|UNIJf=9V-KNjALR}|z(E6QSbS{qCv@*- zC18dKS3+q>{O_uU%REK_hkH7QW1fAPpN77Hq9Auno89v{l1p4qJ-w|xT^l1YowvVI zgN}VvSr!F(2rh9O2EuWcAIY-S5sDlc6-5qiJy+hx`I!_y#*x{o@}`njtAX~E(Y?rd zz5krNy6VMr^X+HXewM#Tyc@j#ri};M$51D>%{SPVkRhqg zH==owJS&TPQ)TQ}+~zLv?=e%fW`m!UZejE{9Mm*4E5{4QFH6ubajzRKDeHFwQ5!H< zX;gB{aJ5&CnISY^!UqDO&zKjSPE-(O903i#T9>WJpEI*|8(Jr$kt41C;jl^D2SyF% zi~K-i5w(KW_RR|ke2~5@!)aA!h`7fm*ZBzJ#+P4Jk)X4WMvaRz8Yj}M;opDQe}#N_ z#CwUBDBW|yrNrR1hLjS@7tU>}{ZT@V{C72^1%SL@jP9mS@NZo&`DvYHC@Z1bAUWA> z_VDY(3n^_|23W-^^Ikjog7rHmcqx5Z+knhD=mtv7fcXFx1&Pj&fNB zNC}wvOPr#d#D2nN@F8A*32A@Ee|%$h&uWJOMNdyCsqT*Ivz7d(dO|I+sb@OjvcvfH z39#vrXX8I$FH{r~ewBYM`NT6aG8rGb#-K@q`1dwttPoLeGG126$p90(2&zT`Y>5O| zE1{s858<9OKINJYJfz)yh}mT8p_f3);W|H~C}k%EY5D&vO|waW!6nfLwwuw1AD_>n zAQAahg#Zdhp)M^eTi(?njTHweRkeauxn3ICkN0_wIu8WqP4&O8+D2BTKK)bX9O6*! zsXBhU@UiZc>%XhxuRiwX#~VA$xr^j`A3jXoaf{`GkCDr!(&Sa=_ZQ5R!8~qZ$y3H%AwU65ZtoTAQ$qX> zGK97dUhcagaXZFO4bJaGyMni5Cf~^?Oy7yFT@~*6RUNg*2)nHg_mM@fUi6X0WW{gA z3{2QlDPW#*#2z+?lzT3T3`HpC#9i(i{-nvip+0qNh zN}S!1BC3=gAs4UbiF=q15`6gBOYjeeTz%GhkF$r!mEu^Z@(lQwK~he91v0@(G{v>M zptY-ly@2ea_Ay>Y8@#`n<|&)@ZT#Qn=T^uY*L=1XvirDd(xu>%S{wsv-fID#7Z>pL zRPHJsjKyn21jYm^zcLM1M0kN(evU2f)cXJjJ-K_jms~R8A2N?LP zRvpQ7fsfXiq{ZP!)N@2(Z3C{xUOhQe&|;*o%qqKX4Q%9x@rxb%+>)|f@R0UlVm;x3 zhg3#fZ!&nG+65S%?L>hAks?_#a4i7hmJ0I=As@vh?qS1%sGsM>(#;drN9^?1))+Ec z685@7K=Bs5jNqGsB*0S1rJmYA+L;S|uy%{bBI}TNNf=W_`+|6f$3vIXO*rx7y^<{= zq4#Ub1s&sORPe~FiqZ&f^Jez2SK^iL5xEXgwfWuSgCsfcPK|6U;6&l6sb0@M7OEP( zaXgxCUvH{7 zNamn>N@wl-i2Rso2`!{%Xfh+NLeOzt0!8*uxh)RWPEq+%^|}%J|ivE zMn#0In-32hcy=H1Xgeu<0$8<9OGrrG)#s2MqrMsaT7Xr<7W-#}IoJ(1G8?*%*quWp zx+7{T`-2Fcjr`9@s*yl72thB2b$I}k()3V!lg zihRC;wD(_}1FAk}qFwi2ihb1YYCx>`84@h7a-Aao^!aqPjhKRmCYuqTT=VbgKA7ht zUA(ZW@osy7#5T+)l<|Bj;Yc-Z!)E4uD>7?D+HwA+fgF+R(+hsa=Q=-31%cvI7N9_c zX+YOe%NCTVPIkg|6MOK~^%$Gs^zX$0vKaI?ydC@^p>^s5pZK?I32oqyO49=6&VGV9uikKs}6X2ie!)Vp7eV$@4-ZKC4G-y z_O+q4@sC%8j$*y-tSo_dA1WuF7q;!fkVO@5X3S!|+^I%)(pC^1V|%^6U;B03hhn&%p8eE&;&4sfUU zNJd8M+@~5Et}9i$;G!uLT&(Ee=zY+f+;uq^{{4=>%A`27W0{QBLfQ4bvZS;$-a=!N zq%7KaC30g(Um9<7OxA|LES;b`#II}XfnZWjmN^6#BC>3Q7>;IldArK}eMTYXEI+e9 zHq$9LhW+MHj63$b0{bYjrf3reQz}il1L@1RrcjnE{6zg)KUs2`Q_h6&z=KDCI?&U2 z(yb$6D~4f$hjwtn_4qZzsq1z}fbc_U&!vmVHkDN`8A!nQ5*evhZ(r;1juk2@zaiNU z;JlMf77VIkiv1I{qFoWi%2a>JV9**fH_fr7$Vsy~6J<0*cc3tdv;`02H8(JFgF$4l zj~STRo!?lbjLB@yJ`;fS-BF4=SETU81;=&&>AJn%EZ^#ke5f{T@aHl(Y_No~V|E*E z<9?z@Q`$#mWeDYxrq;>$evm-zVZw+33e5%`A5~3eFot7V*|rw-dSeenWNRYSjA7aV2cfafWr2MY&qUCFMl9>IrxfH$|d5J`KmoS_FXe zV9y?U7SR1ycfkjlCEF5fg)!3&8BXoCjZ`x?{`wvHT25xPbZw>F=rB=U;?4^nt_AvE zm3KlKZ$LRf)uHluyLdwrB96z{5bVj+92TN3)TK$#j&6XvHhc`Y`;ChT_KvmKW<-!r zMkVazmGdj-R1I41T{0%5Rc8OodIH&7En5-7*#f;64SJXE$0jkEO31_q@4KNNACupv z`e09%#jt0(+Hot9B>bhyZKU$K<}jW>aF5Z2fqbbNGkbK8Xs~(NPcER=rE;OAV0Qia z*w`cnj+08d3KvDwR!jEL1ow0n>UM(?lDg46Fn&lpe1KGVE#Ufoz*aP%`7me{=;8Bi zq63U1Z4-2UOqO&;s?F<~Uk0g4T}dvkS4QyfL$ylno>cWE-3iU%)+0pqWbZ_&nk;1y zzS%e{7|D3&#tRS@zs!<3n*9NOA=^*`7UASuNA<^@3@&y!K@3!5R3JmkF4j!8h zvS%)b&;3l~7{==QdSED7Khh3d)~eYr)sdO5AiK4A6PsnwmFLU-=|w$vP+;kz+Hz-M zK*Lr{=a+I$>k!xr8XB$7v8tf9Aeg}C+vYYchi&TbyV@ubEec%}9vZKH%sj*DfN%{2 z6s_5NWem+;l9AtPS}-h>p?RY3Y9E*@8d6XR_vQsCB2TW~O#z7EeiG3D{#y?=lF7P} zUM4?!(^ct6FdiNdT%&(qqWdP)L3LKJDd9XR^*rBf;?sZ^Ip+M6dsDWvkwcLSg!OMW zYsAmQI)C`{A@Rzk-Svb11=~j-(k*+2TaEgj(&wye5~L$U-wM{xnQ^6nwgz4sBtcil zy7b{0e!<_j{kvNY)jS5I8+n_)Y>xyd_7l223)Abf_>o%E620O$s=?KuB@DA zpVkZ^Gzalf6^~`ne*)Da)~1biF96o+?*MLhRjT(&`Rf%w54vm(<)19BP;Hwmm%^LH zO_VPnuT7KN47YP)yiXEs`9WfDGw0`jYR)8e{dlgvSw(VYA>F~-&T}d&W9FOaHPZZ8 zu|eVht#JCWO!Gc{htb+8LaqJedaiMLaAX8|PAoh{L7q;KN19^ORWX1#fDKAIQePIs z6eQy+=?=j(P>x1UYL|GI%I(TIy?s zC7Q?c7wsRpFz7uil|XIdte50sOnB?q%ieX#z*?x+QfVt!aho8Kaa1 zQyl_T4u-Fa_}=crxZCGc5EavEO*h%&dV_T~P}K1)n?9{!Jb5pw=IcXD5b@Ne#I6uG zqiMY*0gaaZg2n0b!6MnnzG?ahHKIv>Qpgu@wUXa0SZkE>zT7QPF@#Mytc2^iJ%MJ; zdTYDHJ!;DFXS*yLKQ2c11=J!LtN5pd&*NM~0>mz%5gfUeX^?vOAvYyGB)mnl@g@MC` z#!QeQ1Gl*m_&bW*INk3x#&~v=uhPNS z$z|*6Lf%e;G!OOIK>m+D7bHkRVXBUI(Ec2gl~yzRiI*7!9OHweZi#^mHugMiza*F& z**v{M%=;h7N8^f?Q|@cl*Xy|e5?|t25A@Wq?5h0mv(JoG)e#}mnGpdCVx2xuKgf)B z2$q^AG*y}GLbgk3;u0*YW+yt(vgad1sWRYtPc*hN13P@?5UIN3=rShT?(*6e?mlLi~U=AG>)yee!nV6-QY;d6Xv*VU3qVP*)Pfk-n0E_aJ9)|5{;9>fwe@1Of{m}zk6#O^sBsRyB^4J^mbl${dnMJ5b((S zy{tEu(KFEEwRYK7iVcdY2akoBoos17JM7O!0T?L$Vn`e)z@1Hnh(y495x4Wu-%%$k zyX#BP=7l?F)5ukSmK4H`PvqJy8? z2%NKSnBJ87nb{Gu$gn+*G(X$UQIyNNtGaRF8bDN^!L!7TDW!2_k0+)EaaG0nWHRio zCLO59}_+0ia)QAIHUOoe7=eu7`4}@f3fse2-MK&#M?tIZyg~0#3!b zVTG6Nfq3~oD(0I6Twj=t2G4Ww(r$eL?bs?oiJ{H<&S#x(zW9p>+aS8T^+51mPzq{S z9m7-m+1kBzb!W!m)VRp|!)T06)_yvVPehU_Xz3jL`yYM}(Ybc#RrbpXEKdr^F>DkxQOi5JFDCpr zQ~xCVTLThj;OicMF@w%+{>1>#XpLBLNh^+c^0Q9Y*s<-1^01tA6ahiB(F*ID2*^e? zE(HrgaWSH+Xwn@?Dx6Ql8+IKR>;MKo{n^&NC!UBxmotT3XRHaqIYyHg1JK#uWdaiu{9^)bJ8>(2F>awt z^Rh9zij&_;y&D*d%*d#$Q{tyWO*C51wjwayzaenHGBG~^g2$DJp_&sCS z_n{YGbwrW8f%%UBr|h&+Cb?vNdx-?*PyV_OPaNVhK;YY9k_JCj3NfnnlC zie^BXjkMaKK25#?Q8Y3tYHeDaS2%g*pPKXEK@hzwAgCW~Wt+{F{@pvo=EQ|ott;MS zPhF0{T#iOa|sybqbXHpenAOO?#fBe<8{r8F+RD?4!k#sZa zZ|Q!*8n53i3seR$Y@52#yX2gJV;_~tI&RMQ%Mn*O@JfcP7PhxH&f>y|BA2uNQ(DW> z_nHjit*Lw)7amHhzx+5=qu6y{+8bkPZXBBFOzYn3zT>FA1u|T@83s!I%;V(~m>INU zvq25uXL|bQZl)RxtLUrqsy#1|M(lDDc+by{h@ER!o&tE^7VkaY>B9s_TF=GFOP+uu zB_LWC)~^_O>z5bynywem#>pPZ!UYU%l*KmtK8IL_gmY1zEPdkEZYIB3X35+mDgDlZ zK#dFj;Y#m(+6ih3+Pm$(67P7-D3qCUJ{1k{eE4DQUBbywH^$cpj(#)iTOjWEx^R|B zekN>=BGk{qWrtJJ$(Q+V)K1$s)Qa?mMk~xZzlbAwdXsrAN>N|jo#?VUj`p!r^3m+1 zmvzd|^Li8kTLmRfGvqltB0{djg~>DLpm?&LyuF@AQB-Z=fg`#TCFJi5100+Mx!Din zv4-{j>MHLlQ6xt?;g??4$u1ch1+7sLn+SfO+cpJ6Esl5EMoFimQ{6ac-ekjORuB*C z`=jlH?4jzM6R2cOl#305N$$neY$7c~i<6;j1ziE-Tl)D1!dQTaLjcji6<2A27wFgd zD5>x#CKjQ__lV1t#);QL#Y|LV@*)Bc$B-M65Y@mSJU`vOpH!l<(vm@Tyr@j8<%Xh> zL}X8&VQJ+aJ>7|Z4@1Z#rp?VqNly@7$8 zBJRjkv{$uNn(7Hjks+!~kDL`O_Q}kFQQ<#y-4&MX2^&k<;sG=^KQwuDsP^)O@iC2?t$KkMBo^X4xf`$|? zRQnDqGPV^nma$;-y5`xcD~?OPQ5KfzOoOnj-c)<$ zj|Lk;<@q3MMzx-I<%-Yg&Z6piY$)9fHDm;`lF0O>($->vH9Pu!hd^W4&RHiSLx?7& zgs8w2%!#i<7dY%Yo|R4h%YPOfS@|B-q=Vwfo1JdkZ9J(Fq6BS^8o7u}@H=a}VZ32FYu8C7zxW#?J^R8QeKw@r1!Zciv5<%f$3J{)NDz3i!A`z7DiSVmP< zhnoB|)!B#G254y`1+h$Rq^PY3(!P8~`W`_ZiPzqE_e_gFNX?&3S)aZT@U{5ucXW*Yis=hNSDrkS)^~i%l4Qv=XF9=5vQ!#hnFqmN!%nU zGq74Jm&!ptXxBgs@Vpy!Q7lVm+{|Z6vEnbhfC=$OXptr~i1bp&cgXly2HrdlE4#K? zK#V}R}Yc6UnPa#EXa zSCG-`!l6b?x78yem@2rMSR;m_$zRo<%ob?ek7ZdHz5?m^*$@!MjMU9Ll*(9iYCU|I z!9Kth4eI)9EG@)bAuLOr>q=p>tvmBYEg_J*%K4J&Jz{#_a3MPj&~9s-;y~h<_hSib zdM(wf*5lpRl42&|I;Y1V@&<$+J_x7?}BUn2i z)k)F-8Qb>?eS8koWB%4uExUug^P}9pJXzyZ?}e&i)+E~jKdWgV)5t#0|N z{(}*gEB)!aK)~L9E0aOPwNmBr$QpC-@}&v4G}f$=dELB*0??$*9=Elb>guixyHP=B zkU?egXr${SLp9-v7~3`#W4rf16Uke-9?fEGM(Rlx6Qn$i-&_^`W% zZ0^cWWdBm1bDhhaXj6+R;DlP)EFazIhW=je8~+Zk1#Hx4pDj^;ucNs7cU^x@&)mD) z9df5x$Q2M-t`rGQI4Xr6qy|%ZoE;1|FQAbOpCw(_^VFuGyfAk^e#R|5@<;czi(TmA z2$h3R$2TrLc%4(wMQl{i7ib||@Z(-=?618Rd=+pR10voTI!FqtzdKlUq$)BP)|xOt*mXqmeES8c(HQnfjwQASX@EvC~ibSOaN%l>d{>7);N+V=UGV3zto9il+a6CC&9#l)0f*>soMZ+S%5Gy#IE%`Cygy4NDH=6Mv^I+oB}r9!VRG z(R!vQ6eHELcQA#OEF{u*!xuSkah>ZH>3H*bi!b@<6pHNXR0Qo$eZT`Ei1?WvqktXLhk@KvJY0W^{(CEeoC zfY0Pkh+bQ1BQ<5ju>=rJYdZb5nMRIw?LNgbya$`?xZ6z*mE)AfGtFSMEF04uRe`xVF6B+Mv6;APn*!ybYF zR*-$8Ip}2-%CBqap=MNV1(iu_`J^w`?-y`+RuF)gx=0aqjAcCd)KMf_{XRMeLq|fM zUN0Tw3dS@bUDpU8D)LJZH&dGX+bG^`&-eTzTwSh0N}ah$0A3i{InM=+ZK6dW`!z2b ztJToX+y6gHUCpTC>5s^MrSu<|NMqoU4EDyNFQog~PcqNuYx_BV<|e|{AR2Ujnz+(IzXH;_KeF(T z^sV7U+4xini`k>i8#!6-Of@P4igCupLk#b3K`pI_zBiRHL;aw^bbnQ~00&10D9}zd zi`zL#q9;1uwxDGJA6gTt=6G0Dh+i4=7F;7T;d#6Xc($`Be?qm7r0vf4vupi<{Rogb z^joWU+h@5CCVUDBaJ}x&?WB6lo`uJ2(*4G4d0%FKrctvxSO57_4`1iph1i#i#w0<& z`%C_B3B)Q6W-(Pys7WTDG&yA3+DtVxA5xrg5)pRwmy>+n@7@8tg7!Y*evC0$4lDYW zGtdT5SqNlgUU}N(LF+Skie|GsExRwI8)H@~DChtJ9JlA*)dO48y{Ev_9R<(Pm#N9xxV*#aic*%5g+$+@Q^+3wT~2DA@w}KWx-_t{IB%M`!uKoh z?Hd%rBzS$N5H|lA{Z+O2XP0@k&T}+oSOAv`}qjs?dz=O!ZTV~f~#sL?00VikxfQw=Y;(;8%D9| z`rqerP*=fC6v%XB0Q*6n z5RB%s3W46w!)MIM)aWjQ(V8BmL95lTzj6VFG8&A=56RI4o28h$4t8(?Fo5HCtMSEd zaLVOos<(jbE%!!0$eJs~DBn_D$_w>0aMn>|F$>dNAdX&&(QxbBP@(;m6aCEQ0@=Td zpFvbUb@?pl0`XJ(V@}Q)g#Z4MD_bV`C7rkj?X(3gW@+X1+>cPXk^a+_0HQT?sg% z08-f1E0%-X&WuhSW|lGWzcgUaEfWrR(7!nv8FdgZy>gb~l_Z5Q{@@!7FWK*pO<22( zH(c5FDHB5kUJ7ifV1s0dik@>u2RU}Bwo%gAWz&e#j@n+%MrKwPI>3~4mA0%2(ajGI zGhq_E+c}<;)t6IZD?#(B6>*hNr_@?Lw3?}8@f9wpb6yLpox@u3L%;b*V6^6lc~B%s z{RYZV7z_-?+s$QFB@_=^NBRHTCy0hO(>o-lsGt=G=8ycH_uql4{K#EU!<}OpRbLYL(Nz zti$=M-MO}H$R$cWh^9xCCXz(=DJMhIO+ON)N+-K^uUrdnFM&VlA=*30HqQ|L1QLf= zBhC-2mk0jvJ#@}zJ6*5XOmYbo)x6{v+*+!-S||a_t2Xwz^XQc9rDgM+YThZVLdV~fWbWdR~>uN@LulTQ%GDk0A6J1+V?F_Gv z&~A*=Eo=S?zSE}$0Rp{z8(p0@-&lxv(oPxX=mVMXf7@Vs#j_yB%b=zD&Aj!`h>QZA ztZg&BA;m!aSTdA64x;9Dc+Lh(Tamkhars$Y% z!?X4{DvYWtf$^%-4%6<_7P3p3p&IL=`sg4f!Q9{6wf3wmFLFQKW`oZ zKXoP|N;aS*3JKS+;lDZ9t9tB%pp3PNG;`O{&DExN@@y=Ic&cSFuS^Bk6~Yp*i-HBamf^) zcJ-&Vl;X(m7f#+^+Rb%5T|_GD5jmLy#`Gs9+ZwF|)5)wg0n`Y8y`?j}UD0smu$}pk z)HKvG1NIDG9DfM4N&@3ZE1kI>Hm{@rqV)i{U)10-3DX{hdk-j*^t0dz{IdhS|EKbL&cW``YK$qF*Ul-v098KlDavR_< zAJ5nIFb&xPg*!x$N0DrJ`1k`(`DN~E)gO7-tb&p_ ziGg>s9%lmG(P#(K?A_bxzN{=BkcPyx&hQ1Cm^q`lpaNy``iv?#pA+n@RtKN{e5Hq- zT!vXL8kBKWHv+7|9Cui=ODs33)g^f*Py5?apdVmXx$fEu>AR4-Nqz}!{`uixIATvl z7E->DxHjpsr%XD=B~#4yKxt`~5fUS4N3oi`|FYNVB{ykpk7IE)drtb`tnERlVW3ud z@OFvdKK1WH!PD?kp|4A{MN$Xi9}o3bW{3JH{OTr#&q86N<0%kn6IIx#&jhacgtL|M zD|%(;X5R%qG)j+R%h$`YllWQ5<`j~QHpc7ps)=3h{iD;ldNU>d7W2s=b6Di8otZYQ z#d+H#3Qz2X7&&p66K$xc6AtE;P_ZC*)-Lm-9PDWM|WUYPU4tqrf0xv$LOT3l`zYj;9m!D9edi6?o#Y%S! zZEYV2x5ha9R<^T{{_^rhrrsr@%6g0?lE!D!qRGY1N{PH{L%oT{Qf%+n4d-qJL%tkG zS|*}eydvOVbtzpIP3gD)#8AN10JIl&y9ADkq4PgExQ@z2y>W0xv;B@&`P5eYtES~Q z-o0*b(NKDpOdA1#{}3OPMazVxmOW?|L0$P597VMUl$m%*JGI%wB-FIOGLY+Z?S$k6 zIXZ{!jA`RePim=z1+Ivdn7xwVPXlZenr{3Sv@GRfY7Lpa>x>B2KNZuIfID%R`b$Ip zW?*;fRoeqrv5CjV?J!n0JDWK7NrP72e$JyXvYIlZ-}}y8yUQK(3VR6HwALaCRN6F% zO8IGCAigoZ88X8fg|GM9{?D7g<4uIgj%$PCm9LYz?`JL;2ymh3hYF@`1P7`xAD4qL zSL^sh^IxiwD@~j=G9ahd$7aqyYjB(~#VT1%g8opDek-@l#Ka^MjO5snhz(Wnc2iSk z{ItzBj1%P6uI~G{!PG{kNIbP1WI)bn$37x-&#m;LZY$a`=ifC_(Eaq)u*d2}93Xpg z+^mn3fZino?5t*}9)NU)2EC@X>%3X6PF~c0ba!asaBTonVYStY46@6rC$MFl?&;e7mL;0A+ulU~xG^LG zHW1jNGMd_y`)lV&;h8qAT)D)B{zaL4xkgZEeNRF8gf(pjCluKj9+#bzEtmbzyN{6S zK5(T-Y&OhWA?}Q+o#FGJ(OHug{=90_YU@_jts;^8qoRIu!MUJC7S%lI`)|g=w*fb5 z$f6<@p*Jrw1__&D00js#$>{4zSRy;;zc~NwwgJivkUxs*v9=1@hZvkR=v<&T-nJ6N zvzQh59+&k?&WIfb*Ng`qK&L(IMXpV{yo>nJdY!Os8l{W-+nuJcbU!&Eqf3p-6kjS+ zi$;Sjr{sxbhSAsMNd9J?VjAZMbZu&P1ErgUJ-Mn!k# zGwa@wKFfKw6i-e2&DB3w8eZ~$r|XH_wNUnO>KgkOIHX zVLgo3Il*!E@#rBjfTGs7i2WS_`)S68M89K(IA~?RIT~R2Qt5Y7$Ow(?_e8V!MBn@eZSwm7 z{|xCWsyMa%hiCPm`qww$uG^Ku8+1%S(x^DHgJ&Q5Uxj>mYueW3Nr|{j0Hm*xRv;N} z8eT!>NSasu+5e_qv-OBWTFGW?w58Y4MmXo-%x6|5GW;`j9;K1m+{6zq-GWJU36?JV z3bs!#M#EqsP8`Oo0~E0xdRMJvQ394=vt+>|{Vx>VM8v%w+{)e3uJJO&hmh};@%guY zM9(rF?HT_{7zXV5%4_#82xfZ2O&i#tLa!%XuW}HFg=`bQ7!E zS@RNyqYO83sGizoMyrw!a1R!%o3S5L)=X|>uh*!&|^}`N*s;VSiHC`Q$?UV^0CEp@34_omw;q= znFr(Qhzzf=y}`RjI=s&ZoC5gt?+OH$n!4~T{!GF47({n>cnd|k!3y!&@<1+|fAUn8 z4zc0)wC`B5`agd=tJrQi1j-_Bw9NC%+a1l4oKFq)2fCGg2a%J2?43WA0o2HGqB^K+ z#(6Yyo(0D_ZLCS!2NLcOaoSKPkTEnFA&1DU3bK#gjT8|$Xg^CQOBPC$md-xovHBOb zQQTiui5&YSa(4O&m$OdjHFNr|Y-T0zFXy?acuev6tq`(xD|cfL2++!E^r}mKyS6m$ z0ZIMUHpE!S5kUG9$_iaa+c@2i6e(T-?lJq1w>G@}CWfAdc}^d7h~1u7X&OB`y;b3= z8(Y}Fw_I@P+x9_@tR%77NqX5!L(2JiGBUaa^2=MvlJ^^Bs@d9{^7#!{2Y6bB)4D@O zHg9u0`6c5|$5il^xT=q57zUlS=n=>%^IT%hhXma{o0F!D8I>$8X1*LwJ zCTWG=j8L!@X8NYoaq`+BbujZIY-P*^`{&9l8#EIAOdW!Nt3vhhA9Ot-va_t((c{C* zgUQ%SOCRFTY`-w#D;)6KUcUG@tF6rerY~VlkmEVh+!!_cZz;KK^KSmTN~QXviy@>Z;=*-lGUFZc^v^r(SgrPe13i3&tywuSde;Y5y`2iW6I7?nFCr2y<@tGMY| z6{}D4jF7XHUoG@{o%Sh>vrfN{*41;He_PD^Wzob7L2tOOtUI9JHx$WH`yKvx}(e7p{+h z%?C!f%4XI!0QAGW$dXa{dPer$GR`dw9E~S>lw~ zr~+xa4{Wj+#HUO&q<6uxsn8{!`DmR87|xgt5!+o+4i@Z@{ZM#lcOAH3KfP&->|*?i zgKvPz>)sMggxy>#%}*M!yxHxV(XX=>&TeCo1dc8?w{IiUd-v`x3hicphdE~}mNMdj z3gxR1XRlK@cSs_K?~2(x4lhF#bUOgBZhd)DX(#Xe2? zx>)>jPvXSzzY`}qJ7%jjYyUUR2F-ghIA{k|#TndbyLV2z8)!h=L8qy%7q_~YpExls zWA>h-H!po%^2%>oi=kbzS^+msm4L4kwD-mxvCGh2nZMy@#EWhdfRr3X|pO9y8m;;R0 zlNE`;_HGaNwOvwqhnpE!+!fp2+^ypmUYq&PqCC>uqztRLbnf zWRNXScShY+GcixLyW?hXI^}cd{av~jb3blVwPM?TX!SnR?VDy)ot3^m-{cjzgkf-4 zdgySj+mvV+D*Az~5Jubi7ch{#};QlLy3o#3U(fYQ1^G->}r5DU*%Ifgh zMSse*npkg^zVY0tMN{@Y_W#oc3D5&-TxZYj*i~qD=a@;v?FVngfUT9}kAA?EaOSMR z4%HteO7*5wT|F;-bhiV>KBzup*yfh8)xwZW-%M4oqU^lUgf1B+0Ck*_RDki@FwZGmuFib_M8ks}XWMSago-sU&5f$L)s$6G92P0Exm)L0TN3m78foBW zV1@%zrp)8X$^m-Tk^9vbrS3aMGjofqC9;KM%61%WPF$gDxBExIj!iFqO=j~0ryd3s z?x=vy6O$)z{GV1=eWB^pOi7*AtW6K1BpquD?bxnXz5XM!F3AkIlaPVo(~Rv4+NL|r z<=rmGwwdRi+0M7#=}-3h-3hV3(R|}*q)%JI8G(Y}Y4|r+~Xxkc47}#=VU;u3k vWMHrY*24@9eWSvoVKSN^h{+9$|I7DY-SA>hyK)0CLos-|`njxgN@xNAQI7*M diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/multiFilters2_sphereAsMesh.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/multiFilters2_sphereAsMesh.png deleted file mode 100644 index 7e08b5d4bb040cc90f22b60bd1702c35d76cbfc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18947 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 E0JHW@$^ZZW diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/secondFilter.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/secondFilter.png index 9616010f26a2c707c414509dee3666afabbc82c8..1b220ea2ce41b33d3137727dfcbbe02c4a648c99 100644 GIT binary patch literal 104132 zcmeEtWmjBH&@B=q1PKK9Kp?nF@C0{vhah2acMHKS1RdPnWd@hvFu3awG%z>}E|)y- zdw;|IazC6ka?U!dyQ^#0uBzRUs>(807^D~o2nbkmvXbfu2uNBl7dbl8%Rj2zkS{ME zubpJ|ToDkk`~F>s$;{Yf2nf^&a*|&(y)q9wR({dRxqK+La^|Y=@i|8RjKI>oiWYUs zeS>)OT$5Xg?#cPLdPLZ408NAUdZ>ILw9skSA|0u8TsRdyKH^73#d7~q&hu>!Cov{! zNDo@ba}gTHe_u@ydILjxOgU~Mh@Z&*-IM7%g_^$H6Qv1ze)(y7ip%-H|L@WGh(BE~ z4-)%HVm@QN+}WTtzj6Hc5-QyP|BC;=7XPpIh4Z}vjwy$iV{L}mbMJ}h;}%t13GGD8 zg3#)Dz_N3uiLnzZo`+YqbAbPtFE#fGu8Hv$j2WSeVo!zLJHG4E9TWA0{NMh4w)VPf zGYNbu5fgcQ(&3Pxhp=4S%()^B@ieSB269jbKY7Z~E3#XD!1NZofcTvFb&yqd0&A|l zM9c_lJUu74$JyCQB7H3++cP8jNcOrqZ}trQTArVM$xuTEyI*|j^qFw5M$G@ICeY_@ zEB?tZgrJG_l&C=xDP<+vTLjzAw;zE!uyyC1$thKKf{lasqrTeFlP#4XZ0&RQM?4a> zN-}m&?$IF#WWiT@7iMF%x3CZcL4T8JV#3NbK9t%9>|YQHQY#9%{_*0c8_(|#cXOUs zpu&%5gIj|tQbPD1uNx#gYX443%C#M?%$atnn^ZmESKSpg1L7H>CrLlJWyvG)} zPlAVBe75#<%R=&O<+nQDVQTK^4x`?kJ z(RpA~q5e%e{7zy4_XrP{2seGDtW?~)uitfE(9?hAXTq+_R{?Z9<6pzKYmmkjvu$MK0QT!J_x;R;m1eEoaZM`F!bRw)+I&tC>+X%qi|=)Iu7sM1imr5Ol802u;qdJ z*;$V~5g72O{c!faK5AZ|hEC!VT1Js75$^vgk~{akC*bki^#F23Ni8f%J44s$*W8U# zg-lagom|m2j-PHBxz{?z=Mtv&+?!UahIp=Hz6nmqN^S!=`e4B88OOm}I6)c00m)Fz z0{5}?18ns1`Qc)vgxibZAM|%cZ1Lx0KkwsA1l}9?3O*G;my*=$B!@FrZ*Zg6@Ews` z`XrGvd%l>j7)oB^2vX}&W2s^~hI~88;IBT0jg0MoaY#?t(p#RaRnzzH8;$}x#pc+7 z_b2R6r2=+{SCV(D{jRT;?@bV-T5AcTiUeTDrEs)6W^ykyd8zQ72gaR z`WiWnkNF_vSzpHfv{u{)J;$@<=wXlsOL_;#N5ZlNomD~VHal}q>YD3IU*SXJUcr;= zi=FjO*oN~z+p-8hZk=R5KY^cM6HjhDX4}blrLkN^{C84gcOX#^x&xRSI)Hsmlp%G) zUZnD7#C=kP1@y`FBgio%U@4)E4`-$SAx@zDgrv4%hbG>Ut)|c9LyGE_E`;URE19UP zG5j$@Flcra%nx{1d4D^0MK%BH`!B7YDHxH|z|gs<(q&lmw681G*&TeRJ;#cVvGU|! z*hhTOnE-b^kIg`zcCRw1mcuKDIV8oZWVaatn2FaJC=qO#EF-F+V<(W)(X17({+~Bt z<2Pg3B^m`II~m6b1M{D|i>do(tWqUTdb)n;QB=%)PJLXgIjqUxR{#S0NmvXNi(|Re z7q=GHw#*XcN}4WZyVtnc3JaO1CkA>uj1puWIdNQW z4+bYGduEIX(fb`1=qjKA{M<=04Hk2B?s@!6a(f52%}(AJsqpq~?I|$3aXiI!e%RN^ zd4f?nc0D`qxN?z63Chfn?HSSoD{u4+!W=_?gVpkw+u9!?WVFs1fm6a}VHIKT)Hq6z zm3)h-O|)q3Lchb@e0zi?%yhlW9oeKI<+5vVQpo%ns50ddj=jM8_h4OhF`$$(|0uh7 z>24Ap2ecP6O8mM&(zTc3&{b_4#cX7?Jvw1h&R6%0ApP8d{Njqh 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

      1>b`QQxzdr?zbW(#*7gG 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 z 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 HT)p)_vB>OQ literal 61458 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 diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/secondFilter_modified.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/secondFilter_modified.png index e53343044dc158ebabdf36588e045fca700b8d94..ea05db3991a23bcc4e10c21729119ee11ec1ba10 100644 GIT binary patch literal 16034 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 diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/secondFilter_modified_sphereAsMesh.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/baseline/secondFilter_modified_sphereAsMesh.png deleted file mode 100644 index 22f061169863f2e050faaefe97be604523714488..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18874 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 VtQ$#(PTXrhmj`7 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 V2pjue4P>NCN7F!~O3gm>{{eZi{3iea diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/test.usda b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/test.usda index 34a70de792..dc93df7ee2 100644 --- a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/test.usda +++ b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleFilterEdits/test.usda @@ -28,25 +28,23 @@ def Scope "World" token[] xformOpOrder = ["xformOp:translate"] } - def Cone "Cone" ( + def Cube "BlueCube" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { - token axis = "Y" - double height = 1.2 rel material:binding = color3f[] primvars:displayColor = [(0.0436, 0.1311, 0.3634)] - double radius = 0.6 + double size = 1.2 double3 xformOp:translate = (-3.85, 0.65, 3.85) token[] xformOpOrder = ["xformOp:translate"] } - def Sphere "LargeSphere" ( + def Cube "LargeCube" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { rel material:binding = - double radius = 2 + double size = 4 double3 xformOp:translate = (0, 2, 0) token[] xformOpOrder = ["xformOp:translate"] } @@ -142,6 +140,10 @@ def Scope "Render" def RenderSettings "RenderSettings" { token outputs:ri:sampleFilters.connect = + float ri:Ri:PixelVariance = 0.0 + int ri:hider:minsamples = 32 + int ri:hider:maxsamples = 32 + int ri:hider:incremental = 0 } def PxrMurkFilter "MurkFilter1" diff --git a/pxr/usdImaging/bin/testusdview/testusdview.py b/pxr/usdImaging/bin/testusdview/testusdview.py index 6c59d939b8..04ffa8bbcb 100644 --- a/pxr/usdImaging/bin/testusdview/testusdview.py +++ b/pxr/usdImaging/bin/testusdview/testusdview.py @@ -62,7 +62,8 @@ def Run(self): def __LaunchProcess(self, arg_parse_result): callBack = self._ValidateTestFile(arg_parse_result.testScript) (app, appController) = ( - super(TestUsdView, self).LaunchPreamble(arg_parse_result)) + super(TestUsdView, self).LaunchPreamble( + arg_parse_result, overrideMaxSamples = False)) # Set a fixed size on the stage view so that any image tests get a # consistent resolution - but only if we've created a viewer diff --git a/pxr/usdImaging/usdviewq/__init__.py b/pxr/usdImaging/usdviewq/__init__.py index 7ae5ec35ab..d9fc4c6482 100644 --- a/pxr/usdImaging/usdviewq/__init__.py +++ b/pxr/usdImaging/usdviewq/__init__.py @@ -365,7 +365,7 @@ def GetResolverContext(self, usdFile): return r.CreateDefaultContextForAsset(usdFile) - def LaunchPreamble(self, arg_parse_result): + def LaunchPreamble(self, arg_parse_result, overrideMaxSamples = True): # Initialize concurrency limit as early as possible so that it is # respected by subsequent imports. from pxr import Work @@ -374,7 +374,8 @@ def LaunchPreamble(self, arg_parse_result): # XXX Override HdPrman's defaults using the env var. In the # future we expect there may be more formal ways to represent # per-app settings for particular Hydra plugins. - os.environ.setdefault('HD_PRMAN_MAX_SAMPLES', '1024') + if overrideMaxSamples: + os.environ.setdefault('HD_PRMAN_MAX_SAMPLES', '1024') if arg_parse_result.clearSettings: AppController.clearSettings() From cadc404972dbfa11e12be136933ef374b61fed1c Mon Sep 17 00:00:00 2001 From: pixar-oss Date: Tue, 25 Jul 2023 23:11:35 -0700 Subject: [PATCH 138/352] doc fix for "render target" -> "render context" (Internal change: 2287293) --- pxr/usd/usdShade/generatedSchema.usda | 15 ++++++++------- pxr/usd/usdShade/material.h | 13 +++++++------ pxr/usd/usdShade/nodeDefAPI.h | 2 +- pxr/usd/usdShade/schema.usda | 15 ++++++++------- 4 files changed, 24 insertions(+), 21 deletions(-) diff --git a/pxr/usd/usdShade/generatedSchema.usda b/pxr/usd/usdShade/generatedSchema.usda index 029c843adb..05d7be852d 100644 --- a/pxr/usd/usdShade/generatedSchema.usda +++ b/pxr/usd/usdShade/generatedSchema.usda @@ -26,13 +26,14 @@ class NodeGraph "NodeGraph" ( } class Material "Material" ( - doc = """A Material provides a container into which multiple \"render targets\" - can add data that defines a \"shading material\" for a renderer. Typically - this consists of one or more UsdRelationship properties that target - other prims of type Shader - though a target/client is free to add - any data that is suitable. We strongly advise that all targets + doc = """A Material provides a container into which multiple \"render contexts\" + can add data that defines a \"shading material\" for a renderer. Typically + this consists of one or more UsdShadeOutput properties connected to outputs + of nested Shader prims - though a context/client is free to add + any data that is suitable. We strongly advise that all contexts adopt the convention that all properties be prefixed with a namespace - that identifies the target, e.g. \"rel ri:surface = \". + that identifies the context e.g. \"token outputs:ri:surface.connect = + strongly advise that all targets +/// A Material provides a container into which multiple "render contexts" +/// can add data that defines a "shading material" for a renderer. Typically +/// this consists of one or more UsdShadeOutput properties connected to outputs +/// of nested Shader prims - though a context/client is free to add +/// any data that is suitable. We strongly advise that all contexts /// adopt the convention that all properties be prefixed with a namespace -/// that identifies the target, e.g. "rel ri:surface = ". +/// that identifies the context e.g. "token outputs:ri:surface.connect = +/// - doc = """A Material provides a container into which multiple "render targets" - can add data that defines a "shading material" for a renderer. Typically - this consists of one or more UsdRelationship properties that target - other prims of type \\em Shader - though a target/client is free to add - any data that is suitable. We strongly advise that all targets + doc = """A Material provides a container into which multiple "render contexts" + can add data that defines a "shading material" for a renderer. Typically + this consists of one or more UsdShadeOutput properties connected to outputs + of nested Shader prims - though a context/client is free to add + any data that is suitable. We strongly advise that all contexts adopt the convention that all properties be prefixed with a namespace - that identifies the target, e.g. "rel ri:surface = ". + that identifies the context e.g. "token outputs:ri:surface.connect = + Date: Tue, 25 Jul 2023 23:12:14 -0700 Subject: [PATCH 139/352] Adding new user guide for rendering (Internal change: 2287578) --- docs/toc.rst | 12 + docs/user_guides/render_user_guide.rst | 1389 ++++++++++++++++++++++++ 2 files changed, 1401 insertions(+) create mode 100644 docs/user_guides/render_user_guide.rst diff --git a/docs/toc.rst b/docs/toc.rst index b9270200db..9252f61342 100644 --- a/docs/toc.rst +++ b/docs/toc.rst @@ -1,6 +1,11 @@ .. It is unfortunate we disable sub-structure with "titlesonly" for all the .. Resources pages, but until we can figure out how to do it selectively for .. the Glossary, which is much too long to be indexed thusly, that's where we are + +.. Note that for the left nav for the RTD theme, certain settings in this file +.. are replaced by RTD settings in conf.py. Example: maxdepth is replaced by +.. navigation_depth in conf.py + .. toctree:: :hidden: :titlesonly: @@ -12,6 +17,13 @@ dl_downloads usd_products +.. toctree:: + :hidden: + :caption: User Guides + :maxdepth: 1 + + Rendering with USD + .. toctree:: :hidden: :caption: Reference diff --git a/docs/user_guides/render_user_guide.rst b/docs/user_guides/render_user_guide.rst new file mode 100644 index 0000000000..9e8d25c50f --- /dev/null +++ b/docs/user_guides/render_user_guide.rst @@ -0,0 +1,1389 @@ +.. include:: ../rolesAndUtils.rst + +################## +Rendering with USD +################## + +This document describes the conventions and rules USD provides for producing +correct and reproducible renders. Use this information to help build a robust +USD pipeline and configure your assets for rendering. As USD can be used for +both interactive renders and "final frame" renders, some of the conventions in +this document will be more applicable to one use case than the other, whereas +some conventions will apply to any rendering use case. + +.. contents:: Table of Contents + :local: + :depth: 2 + +***************************** +Configuring Imageable Content +***************************** + +Renderable content for USD is anything that is considered *imageable*. Imageable +content is often geometry-based, such as meshes and curves, but can also +be content such as lights, volumes, and physics joints. Imageable content also +isn't necessarily content that has a specific position in 3D space. For example, +a Scope prim is considered imageable but has no independent position (but can +contain a group of other prims that might have positions and bounds). + +For imageable content that does have an independent position in 3D space, USD +defines a sub-class of imageable objects called *Xformable*. Xformable prims can +specify an ordered set of transform operations (translate, scale, rotate, etc.). +Some examples of Xformable content are cameras, volumes and volume fields, point +instancers, and Xform prims. + +A *geometric prim*, or "Gprim", is an Xformable prim that has a defined extent in +space, and directly defines some renderable geometry. Some examples of Gprims +are meshes, NURBS surfaces, curves, points, and "instrinsic" Gprims such as +spheres, cubes, and cylinders. + +See `UsdGeom `__ for more +details on Xformable prims and geometric prims. + +Configuring the Stage Coordinate System +======================================= + +For Xformable objects in your stage, USD uses a right-handed coordinate system +but allows a configurable up axis, which can be either +Y (the fallback) or +Z. +The configurable up axis is specified at the stage level, so if the up axis is +Y, the stage's Z axis will be pointing out of the screen, and when viewing a +stage with a Z up axis, the stage's Y axis will be pointing into the screen. + +The configurable up axis lets you use objects with geometry that was modeled +with either up axis. Keep in mind that since the up axis is declared in your +stage metadata at the stage's root layer, the up axis applies to all Xformable +objects in the stage, including any `referenced <#usdglossary-references>`_ +geometry and assets. If all your objects in the stage were modeled with the same +up axis, you just need to ensure that the stage's up axis is set appropriately. +If your objects were modeled with a mix of Y or Z up axes, you may need to apply +a corrective transform for some of those objects to be consistent with your +preferred stage up axis. + +The following example sets the up axis to Z in the stage metadata. + +.. code-block:: usda + + #usda 1.0 + ( + upAxis = "Z" + ) + +See `Encoding Stage UpAxis `__ +for more details on up axis. + +Note that for Camera prims used by renderers, the *Camera* always views the +scene in a right-handed coordinate system where up is +Y, right is +X, and the +forward viewing direction is -Z. + +Understanding Render Visibility +=============================== + +USD provides several options when configuring whether imageable prims are +visible in the render output and, if so, if they are rendered with alternate +representations, such as a lower-complexity representation of a Gprim used by +a DCC tool. These options include: + +- Visibility attribute: This controls whether the imageable prim is rendered at + all, and takes precedence over other render visibility settings. +- Imageable purpose: This describes the intended purpose for rendering the prim + (e.g., for final renders, for fast viewport renders in a DCC tool, etc.) and can + be used by renderers as a type of visibility filter. For example, a DCC tool + may opt to only render prims with the "proxy" purpose, and ignore "render" + prims intended for final renders. + +Note that there is a higher-level method for controlling render visibility at +the model (not prim) level, using `draw modes `__. +As this method depends on a specific production model workflow, it isn't +discussed in this document. + +Additionally, you can specify a collection of prims that are visible to a +renderer for a specific render pass. This is discussed in the +:ref:`Render Settings ` section. + +.. _visibility_attribute: + +Using the Visibility Attribute +------------------------------ + +For imageable Gprims, use the :usda:`visibility` attribute to control the visibility +of a prim and its descendant prims in the rendered results. This can +act as a basic toggle for displaying or not displaying the prim in a DCC tool. +Unlike using the :usda:`active` attribute to deactivate a prim, invisible Gprims +are still available for inspection, positioning, defining volumes, etc. Unlike +the :ref:`purpose attribute `, setting visibility +does not communicate any sort of higher-level visibility purpose to the renderer. + +Visibility can be set to :usda:`invisible` or :usda:`inherited` (the fallback +value). Child prims with no visibility set, or with visibility set to +:usda:`inherited`, inherit the parent visibility value, if any. In the following +example, all child prims will inherit the parent visibility value except +"cube23", which explicitly sets visibility to :usda:`invisible`. + +.. code-block:: usda + + def Xform "xform" + { + def Cube "cube21" + { + # Inherits visibility from parent + token visibility = "inherited" + } + } + + def Xform "xform2" + { + token visibility = "inherited" + + def Cube "cube22" + { + # No visibility set, so inherits visibility from parent by default + } + } + + def Xform "xform3" + { + def Cube "cube23" + { + # Overrides parent visibility + token visibility = "invisible" + } + } + +Because the :usda:`invisible` visibility value is strongly inherited +down the namespace, child prims of a prim set as invisible cannot be +switched to visible. This may differ from systems you might be used to that +don't propagate visibility settings through the node hierarchy, and also from +systems in which visibility can be turned on and off multiple times in a prim +hierarchy. In Pixar's experience, this latter, "non-pruning" visibility behavior +does not interact well with USD's ability to allow multi-layered overriding of +opinions. + +Keep in mind that the :usda:`invisible` visibility value effectively overrules +other higher-level render visibility-related settings, such as :ref:`imageable +purpose `. For example, if a prim is configured to use a proxy +representation in a DCC tool via the :usda:`purpose` attribute and the DCC tool +is set to display only "proxy" prims but the prim is also set to be invisible, +the prim will not be rendered in the DCC tool. + +Visibility is animatable, allowing a subtree of geometry to be present for some +segments of a shot, and absent from others. Pixar strongly recommends using animated +visibility over approaches like changing the object scale to 0, as these +approaches can trigger degenerate cases in renderers and also impact render +results for things like motion blur. When rendering with motion blur, an +object's visibility at shutter open time is held over the entire shutter interval, +regardless of whether it may change in value over that interval in the scene. + +.. _render_purpose: + +Using Imageable Purpose +----------------------- + +USD provides a builtin attribute for imageable prims called *purpose*, which +describes the underlying purpose for why a prim may be rendered, and can +thereby be used to control render visibility. A prim can only have one purpose, +and the purpose can be one of the following: + +- :usda:`default`: The prim has no special imageable purpose and should be rendered in + all situations. This is the fallback value if a purpose has not been authored. +- :usda:`render`: The prim represents scene data that should be used in "final + quality" renders. +- :usda:`proxy`: The prim should be used when rendering lightweight renders or for + interactive tools. For example, the prim might be a lower-complexity + representation of a mesh rendered to Hydra Storm for display in the viewport of a + DCC tool. +- :usda:`guide`: The prim should be used for viewable guides in interactive + applications. An example might be a spline used as a visual aid when rigging + a character, which should not be visible when actually animating the character + or doing a final render for that character. + +Renderers will use the purpose of imageable prims to determine how the prim +should be rendered, and also to potentially filter prims while gathering data +to render. For example, a DCC tool might want to filter out :usda:`render` +purpose and possibly :usda:`guide` purpose prims, to provide the right user +experience in a viewport. Or, an offline renderer might traverse the scene and +filter out :usda:`proxy` and :usda:`guide` prims for final render pass output. + +If you just need to unconditionally control whether a specific imageable prim +and its child prims are visible in a render or not, +the :ref:`visibility attribute ` should be used instead of +imageable purpose. + +Purpose Inheritance +^^^^^^^^^^^^^^^^^^^ + +If a prim does not have an authored purpose but has an ancestor that may have +an authored purpose, the rules about how the ancestor purpose is inherited at +render-time are as follows. If a prim is not imageable or does not have an +authored opinion about its own purpose, then it will inherit the purpose of the +closest imageable ancestor with an authored purpose opinion. If there are no +imageable ancestors with an authored purpose opinion then the prim uses its +fallback purpose. + +In the following example, purpose is defined on the prims as follows: + +- :usda:`` is not imageable so its purpose attribute is ignored and its + effective purpose is :usda:`default`. +- :usda:`` is imageable and has an authored purpose of + :usda:`render` so its effective purpose is :usda:`render`. +- :usda:`` is not imageable so its purpose attribute is + ignored. +- :usda:`` is imageable but with no authored + purpose. Its effective purpose is :usda:`render`, inherited from the authored + purpose of :usda:``. +- :usda:`` is imageable and has an authored + purpose of :usda:`guide` so its effective purpose is :usda:`guide`. +- :usda:`` is imageable but with no authored purpose. It also has no + imageable ancestor with an authored purpose so its effective purpose is the + fallback value of :usda:`default`. + +.. code-block:: usda + + def "Root" { + token purpose = "proxy" + def Xform "RenderXform" { + token purpose = "render" + def "Prim" { + token purpose = "default" + def Xform "InheritXform" { + } + def Xform "GuideXform" { + token purpose = "guide" + } + } + } + def Xform "Xform" { + } + } + +Using Purpose for Stand-in Data +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Purposes :usda:`render` and :usda:`proxy` can be used together to partition a +complicated model into a lightweight proxy representation for interactive use, +and a fully realized representation for rendering. If prims are authored with a +pair of :usda:`render` and :usda:`proxy` purpose prims, the :usda:`proxyPrim` +relationship can be authored on the render prim to encode that correspondence +for DCCs and pipeline tools, although it is entirely optional and does not +affect renders in any way. + +The following simplified example shows a Mesh Gprim with purpose :usda:`render` +that will be used for final renders, and a Sphere Gprim that is set as the Mesh +prim's proxy used in an interactive render or DCC tool. + +.. code-block:: usda + + def Mesh "renderMesh" + { + token purpose = "render" + rel proxyPrim = + ... + } + + def Sphere "proxySphere" + { + token purpose = "proxy" + ... + } + +Avoid using variant sets instead of :usda:`purpose` and :usda:`proxyPrim` for +defining proxy stand-ins in your scene. While variants do provide a mechanism +to switch prims for different rendering needs, they have the following drawbacks +when used this way. + +- Variant selection changes the composed scene data, whereas switching a + renderer to filter on a particular purpose does not. Ideally the client or + tool (and underlying renderer) that needs to control render visibility should + be responsible for implementing visibility control (using purpose) without + having to change the scene data. +- If using variant sets, parts of the stage need to be recomposed in order to + change to a different runtime level of detail, and that does not interact + well with the needs of multithreaded rendering since a + :ref:`UsdStage ` cannot be queried from any thread while + it is recomposing. + +While variant sets shouldn't be used for creating render proxy +stand-ins, variant sets are appropriate for creating "workflow stand-ins" such +as lighter-weight rigging and geometry versions of a model for layout/blocking +and animation workflows. In these scenarios, switching a variant is appropriate, +because it is a persistent decision by the user that affects behavior beyond +just rendering. + +Understanding Intrinsic and Explicit Normals +============================================ + +For every point on every surface prim (e.g., Meshes) in USD (and potentially +Curves and Points prims also) a renderer must be able to compute a surface +normal in order to perform its shading and lighting calculations. Surfaces +always possess intrinsically computable normals, defined by the topology of +the surface and its orientation, but normals can also be explicitly specified. +In most scenarios you won't need to specify normals for your meshes, as by +default a Mesh prim in USD is an `OpenSubdiv `__ +compliant subdivision mesh that automatically calculates surface normals. + +USD by default uses the right-handed winding rule to compute normals, so the +right-handed rule will determine if a normal is a "face" or +"outward-facing" normal. You can optionally set the orientation attribute on a +Mesh to "leftHanded" to use a left-handed winding rule instead. + +.. code-block:: usda + + def Mesh "BasicMesh" + { + uniform token orientation = "leftHanded" + ...face and vertex data... + } + +If you need to set normals explicitly, set the Mesh to +:mono:`subdivisionScheme = "none"` and provide normals as needed. You can specify +any primvar interpolation mode for normals, with :usda:`vertex` being the default +and most common choice. + +USD provides two ways to specify normals: using the +:usda:`primvars:normals` primvar from the PrimvarsAPI schema and using the +:usda:`normals` attribute from the GeomPointBased schema. Both approaches will be +used by renderers the same way, but the recommended approach is to use +:usda:`primvars:normals` because the primvar form supports encoding your normals +as indexed data, as described in :ref:`Working with Primvars `. +Note that if a Gprim specifies normals using both approaches, the normals set +via :usda:`primvar:normals` will be used. + +The following example sets the normals using the :usda:`primvars:normals` primvar. + +.. code-block:: usda + + def Mesh "Mesh" + { + float3[] extent = [(-430, -145, 0), (430, 300, -30)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 2, 3] + point3f[] points = [(-430, -145, 0), (430, -145, 0), (430, 145, 0), (-430, 145, 0)] + + # Make polygonal and not subdiv mesh + uniform token subdivisionScheme = "none" + + normal3f[] primvars:normals = [(0, 0, 1), (0, 0, 1), (0, 0, 1), (0, 0, 1)] ( + interpolation = "vertex" + ) + } + +Your Gprim might have different transforms applied via parent prim transforms, +Xformable transform operations, or composition. The renderer is responsible +for ensuring that computed or manually created normals are properly transformed +as well. For example, any given Gprim's local-to-world transformation can flip +its effective orientation when it contains an odd number of negative scales. +This condition can be reliably detected using the (Jacobian) determinant of the +local-to-world transform: if the determinant is less than zero, then the Gprim's +orientation has been flipped, and therefore the renderer will apply the opposite +handedness rule when computing its surface normals (or just flip the computed +normals) for the purposes of hidden surface detection and lighting calculations. + +******************* +Working with Lights +******************* + +USD provides the UsdLux LightsAPI schema for adding light behavior to prims, +along with built-in common light types such as DistantLight, SphereLight, etc. +UsdLux also provides additional schemas, such as ShadowAPI (for configuring +shadows) and ShapingAPI (for configuring light emission shape, e.g., light cones +and falloff), for adding more complex light-associated behaviors. + +By convention, most lights with a primary axis (except CylinderLight) emit along +the -Z axis. Area lights are centered in the XY plane and are 1 unit in diameter. + +The built-in light types are Xformable, so they can have transform operators +applied as usual. It is recommended that only translation and rotations be used +with these lights, to avoid introducing difficulties for light sampling and +integration. Lights have explicit attributes to adjust their size. + +The LightAPI schema can be applied to any prim to add light behavior. One +use case for adding light behavior to prims is to create arbitrarily shaped +"mesh light" light sources. However, not all renderers support +LightAPI on every Gprim type (e.g., a Capsule), so you should consider using the +MeshLightAPI schema for mesh lights for better renderer support. + +To use MeshLightAPI or LightAPI, add the desired schema to +your prim and author the schema inputs attributes as needed. The following +example adds the MeshLightAPI schema to a Mesh prim. + +.. code-block:: usda + + def Mesh "meshLight" ( + prepend apiSchemas = ["MeshLightAPI"] + ) + { + # Geometry data + float3[] extent = [(-430, -145, 0), (430, 300, -30)] + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 2, 3] + point3f[] points = [(-430, -145, 0), (430, -145, 0), (430, 145, 0), (-430, 145, 0)] + .... + + # LightAPI + color3f inputs:color = (1, 0.5, 0.5) + float inputs:intensity = 300 + .... + } + +See the `UsdLux documentation `__ +for more details on LightAPI, MeshLightAPI, and the common light types. + +Using Light-linking to Filter Objects Affected by Lights +======================================================== + +You might need to control which geometry +is illuminated by a particular light. To support this, USD provides +*light-linking* which uses the +:usda:`collection:lightLink` :ref:`object collection ` +to specify which objects are illuminated by a light. +By default the collection has :usda:`includeRoot` set to true, indicating that +the light will potentially illuminate all objects. To illuminate only a specific +set of objects, there are two options. One option is to modify the collection +paths to explicitly exclude everything else. The other option is to set +includeRoot to false and explicitly include just the desired objects. These are +complementary approaches that may each be preferable depending on the scenario +and how to best express the intent of the light setup. The following example +specifies that only the :usda:`` and :usda:`` +objects are affected by CylinderLight. + +.. code-block:: usda + + def CylinderLight "CylinderLight" + { + uniform bool collection:lightLink:includeRoot = 0 + prepend rel collection:lightLink:includes = [ + , + , + ] + .... + } + +A similar collection, :usda:`collection:shadowLink`, exists for specifying which +objects will cast shadows from a particular light that uses the ShadowAPI schema. + +********************** +Working with Materials +********************** + +In USD, a Material prim describes the surface and volumetric properties of +geometry in a scene. A Material prim is a container of Shader nodes connected +into networks. The networks describe shading computations and dataflow, and +their outputs are connected to and described by their containing Material prim. + +Geometry can be bound to Materials to subscribe to the "look" described by the +Material. To add a material binding, the MaterialBindingAPI schema must be +applied to a prim. In the following example a Mesh prim has the +MaterialBindingAPI schema applied and is bound to the +:usda:`` Material prim (not shown in this example) via +the :usda:`material:binding` relationship. + +.. code-block:: usda + + def Mesh "Mesh" + ( + prepend apiSchemas = ["MaterialBindingAPI"] + ) + { + # ... geometric info omitted ... + + # Material binding + rel material:binding = + } + +Material bindings inherit down the prim namespace and come in two forms: + +- Direct bindings, in which a prim directly names (via relationship) the + Material it wants to bind, as shown in the previous example. + +- Collection-based bindings, in which a USD Collection identifies a set of prims, + and the binding (again, a relationship) names both the Collection and the + Material to which the collected prims should be bound. See + :ref:`material_collection_binding` for more information on collection-based + bindings. + +For any given Gprim, the direct or collection binding closest to it in the +namespace is the one that wins. If a prim has both a direct binding and is +directly targeted by a collection binding, by default the direct binding wins. +USD also provides the :usda:`bindMaterialAs` metadata to control the strength +of collection-based bindings, as described in :ref:`material_collection_binding_strength`. + +.. _usd_preview_material: + +Using the USD Preview Material +============================== + +USD provides a general-purpose preview material with a basic set of Shader +nodes that is designed to work across most renderers and is supported by +production renderers that ship with USD and Hydra. You can use the USD preview +material if you want to enable reliable interchange of material settings between +DCCs and real-time rendering clients in your workflow. + +The preview material includes the following shaders: + +- UsdPreviewSurface: Models a physically-based surface and can be configured to + follow either a "specular" or a "metalness" workflow. +- UsdUvTexture: Reads a source UV texture. +- UsdPrimvarReader: Reads and evaluates :ref:`primvars `. +- UsdTransform2D: Takes a 2D input and applies an affine transformation to it. + Useful for transforming 2D texture coordinates. + +See :ref:`working_with_primvars` for a simple example that renders a texture. +For more examples and full details of the preview material and shader inputs and +outputs, see the :doc:`../spec_usdpreviewsurface`. + +Using GLSLFX Shaders +-------------------- + +For interactive rendering use cases, you can use GLSLFX shaders as +nodes in your material network, with connections to UsdPrimvarReader or +UsdUvTexture preview material shaders, and Hydra + Storm will render with +those shaders. Use the :usda:`info:glslfx:sourceAsset` Shader attribute to set +the GLSLFX shader asset. For example, if you have a custom GLSLFX shader named +"MyShader.glslfx" that uses a texture coordinate parameter, a simple Material +network that uses this shader along with the UsdPrimvarReader shader to access +the "st" primvar might look something like: + +.. code-block:: usda + + def Material "MyMaterial" + { + token outputs:glslfx:surface.connect = + + def Shader "usdprimvarreader1" + { + uniform token info:id = "UsdPrimvarReader_float2" + string inputs:varname = "st" + float2 outputs:result + } + + def Shader "glslSurface" + { + # Specify the GLSLFX shader + uniform asset info:glslfx:sourceAsset = @MyShader.glslfx@ + uniform token info:implementationSource = "sourceAsset" + + # Connect to PrimvarReader shader for st coords + float2 inputs:st.connect = + token outputs:surface + } + } + +.. _working_with_primvars: + +Working with Primvars +===================== + +A primvar is a special type of attribute that a renderer associates with an +imageable prim, and can vary (interpolate) the value of the attribute over the +surface/volume of the prim. Primvars allow for: + +- Binding data to Gprims made available to the USD material/shader pipeline + during rendering. +- Associating data with prim vertices or faces and interpolating that data + across the prim's surface using a variety of interpolation modes. +- Inheriting constant interpolation primvars down the namespace to allow sparse + authoring of sharable data that is compatible with native scenegraph + instancing. Unlike regular USD attributes, constant interpolation primvars + implicitly also apply to any child prims, unless those child prims have their + own opinions about those primvars. + +A commonly used primvar when rendering is the "st" primvar that specifies +texture coordinates (sometimes referred to as "UVs"). The following simple +example specifies four texture coordinates for a quad mesh using the +:usda:`primvars:st` primvar. + +.. code-block:: usda + + def Mesh "Mesh" + { + int[] faceVertexCounts = [4] + int[] faceVertexIndices = [0, 1, 3, 2] + point3f[] points = [(-5, 0, 5), (5, 0, 5), (-5, 0, -5), (5, 0, -5)] + + texCoord2f[] primvars:st = [(0, 0), (0, 1), (1, 1), (1, 0)] ( + interpolation = "faceVarying" + ) + } + +Primvar Interpolation +--------------------- + +Primvars support several *interpolation modes*, based on interpolation modes of +the primvar equivalent `Primitive Variable `__ +from RenderMan. These are: + +- :usda:`constant`: One value remains constant over the entire surface prim. + Note that only constant interpolation primvars will inherit down the namespace. +- :usda:`uniform`: One value remains constant for each UV patch segment of the + surface prim (which is a face for meshes). +- :usda:`varying`: Four values are interpolated over each UV patch segment of the + surface. Bilinear interpolation is used for interpolation between the four + values. +- :usda:`vertex`: Values are interpolated between each vertex in the surface + prim. The basis function of the surface is used for interpolation between + vertices. +- :usda:`faceVarying`: For polygons and subdivision surfaces, four values are + interpolated over each face of the mesh. Bilinear interpolation is used for + interpolation between the four values. + +For a graphical illustration of these modes, see `Primvar Interpolation `__ + +As :usda:`faceVarying` allows for per-vertex-per-face values, you can use this +interpolation to create discontinuous vertex UVs or normals. For example, with +discontinuous vertex UVs, you could create a "seam" in your texture-coordinate +mapping to emulate wrapping a label around a cylinder. + +Primvar interpolation for curves, such as :usda:`BasisCurves` interprets the +interpolation values differently, and is described in detail `here `__ + +Indexed Primvars +---------------- + +Primvars support *indexed data*, so data can be referred to by index rather +than repeating the full values, thereby reducing memory usage. For example, +if multiple vertices on a surface all use the same normal, you can specify the +primvar index for those normals rather than repeat the same normal multiple +times. + +.. code-block:: usda + + normal3f[] primvars:normals = [(0, 0, 1),(0,0.5,0.5)] ( + interpolation = "faceVarying" + ) + int[] primvars:normals:indices = [0,0,0,0,0,1,0,0] + +Consuming Primvars in Materials +------------------------------- + +USD Materials and Shaders bound to Gprims will evaluate Gprim primvars as needed +at render-time. Your Gprim must apply the MaterialBindingAPI API schema and +bind the material via the :usda:`material:binding` relationship. + +.. code-block:: usda + + def Mesh "Mesh" + ( + prepend apiSchemas = ["MaterialBindingAPI"] + ) + { + # ... geometric info and primvars omitted ... + + # Material binding, which will access various primvars on this prim + rel material:binding = + } + +Then, in your shaders, you can reference the Gprim primvars as needed using +shader inputs connected to a UsdPrimvarReader shader. The following simple +:ref:`USD preview Material ` applies a texture using +the UV coordinates of the Gprim bound to the Material. The example uses: + +- A UsdPrimvarReader_float2 Shader that has a "varname" input to access + the :usda:`st` primvar from the Gprim the Material has been bound to, and a + "result" output for the UV results. +- A UsdUVTexture Shader that has a "st" input connected to the + UsdPrimvarReader_float2 Shader, a "file" input to access a texture image file, + and an "rgb" output for the texture results. +- A UsdPreviewSurface Shader that has a "diffuseColor" input connected to the + UsdUVTexture Shader, and "displacement" and "surface" outputs (that are + connected to the containing Material). + +.. code-block:: usda + + def Scope "materials" + { + def Material "MyMaterial" + { + token outputs:displacement.connect = + token outputs:surface.connect = + + def Shader "usdprimvarreader1" + { + uniform token info:id = "UsdPrimvarReader_float2" + string inputs:varname = "st" + float2 outputs:result + } + + def Shader "usduvtexture1" + { + uniform token info:id = "UsdUVTexture" + asset inputs:file = @./usdLogo.png@ + float2 inputs:st = (0, 1) # default provided here in case connection to usdprimvarreader1 ever broken + float2 inputs:st.connect = + vector3f outputs:rgb + } + + def Shader "usdpreviewsurface1" + { + uniform token info:id = "UsdPreviewSurface" + color3f inputs:diffuseColor.connect = + token outputs:displacement + token outputs:surface + } + } + } + +Material Primvar Fallbacks +-------------------------- + +Renderers also support a special "fallback" evaluation of primvars for Shaders. +If a shader needs to evaluate a primvar that is not defined on the bound Gprim +(or any of the Gprim's ancestors), the renderer will fallback to getting the +primvar on the *Material* that contains the shader, if it exists. + +For example, suppose you have the following Gprims defined, with both Gprims +bound to the same MatteMaterial but with the "roughness" primvar defined on +"cube" and not on "sphere". + +.. code-block:: usda + + def Cube "cube" ( + prepend apiSchemas = ["MaterialBindingAPI"] + ) + { + double3 xformOp:translate = (0, 0, 0) + token[] xformOpOrder = ["xformOp:translate"] + + rel material:binding = + float primvars:roughness = 1 + } + + def Sphere "sphere" ( + prepend apiSchemas = ["MaterialBindingAPI"] + ) + { + double3 xformOp:translate = (0, 2, 0) + token[] xformOpOrder = ["xformOp:translate"] + + rel material:binding = + } + +You then define MatteMaterial and the contained shaders as follows. + +.. code-block:: usda + + def Material "MatteMaterial" + { + float primvars:roughness = 0 + + token outputs:surface.connect = + + def Shader "Surface" + { + uniform token info:id = "UsdPreviewSurface" + float inputs:roughness.connect = + token outputs:surface + } + + def Shader "PrimvarRoughness" + { + uniform token info:id = "UsdPrimvarReader_float" + string inputs:varname = "roughness" + float outputs:result + } + } + +At render-time, when the PrimvarRoughness shader needs the roughness input, for +"cube" the Gprim :usda:`roughness` primvar will be used, whereas for "sphere", the +value will be obtained through the MatteMaterial :usda:`roughness` primvar. The +renderer is ultimately responsible for determining that the primvar does not +exist on the bound Gprim, and substituting the Material primvar if it exists. + +.. _material_binding_purpose: + +Using Material Binding Purpose +============================== + +USD provides the ability to bind a material to a Gprim and also indicate the +purpose of that binding using a *material binding purpose*. This is conceptually +similar to the :ref:`imageable purpose ` attribute discussed +earlier, but is defined at the material binding level and applies to different +use cases. A material binding purpose lets the user describe the intent of the +material binding, and informs the renderer which material(s) to use for +different renders. + +USD provides two material binding purposes that renderers are expected to +support if possible: + +- :usda:`material:binding:full`: used when the purpose of the render is + entirely to visualize the truest representation of a scene, considering all + lighting and material information, at the highest fidelity. +- :usda:`material:binding:preview`: used when the render is in service of a + goal other than a high fidelity "full" render (such as scene manipulation, + modeling, or realtime playback). Latency and speed are generally of greater + concern for preview renders, therefore preview materials should generally be + designed to be "lightweight" compared to full materials. + +A binding can also have no specific purpose at all, in which case it is +considered the fallback or "all purpose" binding, applying to any +use case. All-purpose bindings have no additional suffix and are what all of +the previous material examples have used. When no specific "full" or "preview" +binding is found, renderers should attempt to fall back to an all-purpose +binding, if present. + +To use material binding purposes, your prim must apply the MaterialBindingAPI +API schema, and then use the :usda:`material:binding:full` and +:usda:`material:binding:preview` relationships to specify which materials to use. +For example, you can specify that a Gprim is bound to a "MaterialPreview" +Material for preview renders, and a "MaterialFinal" Material for final renders. + +.. code-block:: usda + + def Mesh "MyMesh" ( + prepend apiSchemas = ["MaterialBindingAPI"] + ) + { + ...vertex and face data... + + # Material bindings + + # Default binding + rel material:binding = + + # Preview/Viewport render binding + rel material:binding:preview = + + # Final render binding + rel material:binding:full = + } + + ... + + # Materials definitions + def Scope "materials" + { + def Material "MaterialPreview" + { + ... + } + + def Material "MaterialFinal" + { + ... + } + } + +Specifying Material Binding Purpose in Render Settings +------------------------------------------------------ + +USD provides prims for configuring global render settings, as described in +:ref:`Configuring Render Settings `. You can +specify a per-render material binding purpose setting via the RenderSettings +prim. For example, you might have separate RenderSettings for final render, +using the "full" purpose, and for your DCC tool, using the "preview" purpose. + +.. code-block:: usda + + def RenderSettings "FinalRenderSettings" + { + uniform token[] materialBindingPurposes = ["full", ""] + ... + } + def RenderSettings "DefaultRenderSettings" + { + uniform token[] materialBindingPurposes = ["preview"] + ... + } + +Note that in the material binding purpose list for "FinalRenderSettings" we +specify both "full" and "" (indicating no specific purpose, or "all purpose") +bindings should be used. This ensures the full render renders prims with +no material binding purpose specified, in case the scene is inconsistent with +applying the "full" purpose. For "DefaultRenderSettings" you only want to +render prims with a "preview" binding purpose set, so only "preview" is +specified in the render settings purpose list. + +.. _material_collection_binding: + +Binding Materials to Collections +================================ + +For more flexible and expressive binding of materials, you can bind materials +to :ref:`USD object collections `. You might have a +model with a complex hierarchy of Gprims, where prims in different parts of the +hierarchy all correspond to a logical "part" of the model, and therefore are all +grouped together in a collection. Rather than setting the same material binding +for each individual "part", you can specify a material binding that applies to +a collection using a :usda:`material:binding:collection:` binding +syntax. + +Note that the bindings are applied in namespace order, with the earliest ordered +binding relationship the strongest. If you have prims that are included in +multiple collections, and collection-based bindings defined for each collection, +the binding defined first (for one of the collections that contains the prims) +is the binding that gets applied. + +The following example uses collections for the "windows" and "doors" for a model +representing a building, and applies a material binding to those collections. + +.. code-block:: usda + + def Scope "Model" ( + prepend apiSchemas = ["CollectionAPI:windows", "CollectionAPI:doors", "MaterialBindingAPI"] + ) + { + # Collections definitions + + rel collection:windows:includes = [ + ... + ] + rel collection:doors:includes = [ + ... + ] + + # Material collection binding definitions + + rel material:binding = # fallback + rel material:binding:collection:windows = [, ] + rel material:binding:collection:doors = [, ] + + # Gprims + + ... + } + + # Materials definitions + def Scope "materials" + { + def Material "WindowMaterial" + { + ... + } + + def Material "DoorMaterial" + { + ... + } + + def Material "PreviewMaterial" + { + ... + } + } + +Note that a fallback binding is provided in the above example, which is used if +no collection-based binding applies to Gprims in the model hierarchy. + +.. _material_collection_binding_strength: + +Setting Collection Binding Strength +----------------------------------- + +When working with layers that already come with some direct material bindings +applied, you can control the strength order of how collection-based material +bindings are applied using the :usda:`bindMaterialAs` material binding metadata. +The two valid token values are: + +- :usda:`weakerThanDescendants`: Material bindings on descendant prims + in the collection override the bindings specified in the collection-based + bindings. This is the default behavior. +- :usda:`strongerThanDescendants`: Collection-based bindings override + descendant prim bindings. + +Using the previous example, if some or all of the "door" prims already have +direct material bindings applied and you want to override those bindings, you +could specify that, for the current stage, the collection-based binding should +be used by setting :mono:`bindMaterialAs = "strongerThanDescendants"`. + +.. code-block:: usda + + rel material:binding:collection:doors = [, ] ( + bindMaterialAs = "strongerThanDescendants" + ) + +Combining Collection Binding with Material Binding Purpose +---------------------------------------------------------- + +You can combine collection material binding with material binding purpose for +use cases where you have collections that need specific material bindings and +also need separate bindings for rendering versus preview. The binding syntax for +this combination is +:usda:`material:binding:collection::`. + +For example, if you wanted to specify separate materials for full renders versus +preview renders for prims in the "windows" collection, you might have bindings +that look as follows. + +.. code-block:: usda + + # Material collection binding definitions + + # default/fallback bindings for preview and full + rel material:binding:preview = + rel material:binding:full = + + # More specific bindings for windows collection + rel material:binding:collection:preview:windows = [, ] + rel material:binding:collection:full:windows = [, ] + +Using Material Render Contexts +============================== + +Using *render contexts*, a Material can specify which output +(or Shader output) is used for a specific renderer. For example, you might have +a Material that specifies one Shader is used when being rendered with a display +renderer that supports GLSLFX (e.g., Storm), and a different Shader is used when +being rendered with RenderMan. + +.. code-block:: usda + + def Material "rendererSpecificMaterial" + { + # Use material render context to have a single material use different + # outputs depending on which render context is being used + + # Fallback output used for any renderers that we didn't specify + token outputs:surface.connect = + + # Output used for renderers that support GLSLFX (Storm) + token outputs:glslfx:surface.connect = + + # Output used for RenderMan renderers + token outputs:ri:surface.connect = + + ...Shader implementations omitted... + } + +You can use render contexts in combination with +:ref:`material binding purpose ` to provide +finer-grain control over what shaders are used for which renderer in a "full" or +"preview" render. + +Note that, unlike material binding purpose, there's no way to specify at a global +level in RenderSettings which material render context to use. The context is +chosen by the renderer at render-time. + +.. _render_camera: + +************************** +Defining the Render Camera +************************** + +Renderers image the scene through a particular Camera prim. + +Camera prims used by renderers always view the scene in a right-handed +coordinate system where up is +Y, right is +X, and the forward viewing direction +is -Z. + +The camera has additional attributes to bound the frustum, the volume of space +viewed in the image. These attributes include the near and far clipping range, +as well as optional additional clipping planes. The camera also specifies an +aperture, which bounds the X and Y axes of screen space. The projection of the +aperture bounds to screen coordinates is known as the screen window. + +The aperture is specified in view coordinates using the same units as focal +length. Aperture and focal length units are treated as *1/10* of the current scene +world unit, so if your world unit is centimeters, the aperture/focal unit will +be millimeters. This automatic use of 1/10 of a scene world unit is done to help +match real-world physical camera configurations, however if your scene world +unit is not in centimeters, the aperture/focal length units will be 1/10 of +whatever your world unit is, and you may have to adjust accordingly. + +For a perspective projection, the aperture describes an axis-aligned rectangle +in the plane sitting at the focal length in front of the camera origin. + +.. image:: https://openusd.org/release/api/aperture.svg + :align: center + +The following example sets the camera focal length and aperture to typical +defaults. + +.. code-block:: usda + + def Camera "Camera" + { + token projection = "perspective" + float focalLength = 50 + float horizontalAperture = 20.955 + float verticalAperture = 15.29 + float2 clippingRange = (1, 1000000) + } + +For an orthographic projection, no reference plane is needed, and the aperture +simply bounds the X/Y axes of view space. The aperture is still expressed in +the same units as focal length in this case, although the focal length does not +itself pertain to orthographic projection. + +The camera :usda:`clippingRange` attribute sets the near and far ranges of the +camera frustrum. Anything falling outside the clipping range is omitted. Note +that unlike aperture and focal length, the clipping range is set in scene units, +not 1/10 scene units. If you need more fine-grained control beyond near and far +clipping planes, you can also provide arbitrarily oriented clipping +planes by setting plane vectors in the :usda:`clippingPlanes` attribute. + +*Depth of field* describes the finite range of focus that a camera can produce. +Depth of field for a renderer is normally configured using the Camera :usda:`fstop`, +:usda:`focalLength`, and :usda:`focusDistance` attributes to create the illusion of +depth of field or realistic cinematographic effects. The focus distance is the +distance from the camera through the center of projection to the plane of focus. +The ratio of the focal length to the fstop determines the size of the lens +aperture (and therefore the amount of blur), while the relation between the +focus distance and the focal length determines the depth of field. + +Configuring Motion Blur +======================= + +Motion blur in USD is controlled by setting the Camera shutter open and close +times, along with refining how some objects participate in motion blurring using +the MotionAPI schema. Additionally, there are :ref:`Render Settings ` +to control the overall application of motion blur. + +For renderers that support motion blur, set the Camera :usda:`shutter:open` and +:usda:`shutter:close` attributes to control the sampling frames used for motion +blur. If :usda:`shutter:close` is equal to :usda:`shutter:open`, no motion blur +will be rendered. + +.. code-block:: usda + + #usda 1.0 + ( + framesPerSecond = 30 + timeCodesPerSecond = 30 + startTimeCode = 0 + ... + ) + + def Camera "Camera" + { + # configure sampling initial 2 frames for motion blur + double shutter:close = 2 + double shutter:open = 0 + ... + } + +Use the MotionAPI schema and the :usda:`motion:blurScale` attribute to specify the +scale of motion blur applied to the object and its child prims. A blurScale of +0 turns motion blur off for the given object and its children. +A blurScale value greater than 1.0 will exaggerate the blurring by sampling +motion progressively further outside the sampling range indicated by the +camera's shutter interval; for some renderers, this may have a performance +impact but provides an easy way to achieve some artistic looks. + +.. code-block:: usda + + def Xform "Xform" + ( + prepend apiSchemas = ["MotionAPI"] + ) + { + # Double the amount of motion blur (x2) for this Xform and all imageable child prims + float motion:blurScale = 2 + ... + } + +See `Modulating Motion and Motion Blur `__ +for more details on using the MotionAPI schema for applying motion blur. + +You can disable all motion blur for a particular render pass by using the +:usda:`disableMotionBlur` attribute of the RenderSettings prim. + +.. code-block:: usda + + def RenderSettings "NoBlurRenderSettings" + { + uniform bool disableMotionBlur = 1 + ... + } + +.. _configuring_render_settings: + +*************************** +Configuring Render Settings +*************************** + +USD provides a set of *render settings* prims to configure how your scene will +be rendered. When you define these prims in your USD scene, the renderer is +responsible for applying these settings (as best as possible) when rendering +the scene. Note that renderers that support USD should have reasonable defaults +that will be applied if render configuration isn't available in the USD data. + +As a best practice, group all your render settings prims (RenderSettings, +RenderProduct, RenderVar, RenderPass) in a scene under a common root prim named +"Render". This encapsulates render-related specifications from the rest of your +scene data so that, even in large scenes, render specifications can be accessed +efficiently using features like UsdStage masking. The following example has two +RenderSettings and a RenderProduct grouped under a Scope "Render" prim. + +.. code-block:: usda + + def Scope "Render" + { + def RenderSettings "PrimarySettings" { + rel products = + int2 resolution = (512, 512) + } + def RenderSettings "PrimarySettingsRaw" { + rel products = + int2 resolution = (1024, 1024) + uniform token renderingColorSpace = "raw" + } + def RenderProduct "PrimaryProduct" { + rel camera = + token productName = "/scratch/tmp/render000009.exr" + } + } + +A USD stage may contain one or more *RenderSettings* prims. The stage metadata can +specify the default RenderSettings to be used via the :usda:`renderSettingsPrimPath` +layer metadata field. + +.. code-block:: usda + + #usda 1.0 + ( + renderSettingsPrimPath = "/Render/PrimarySettings" + ) + +Each RenderSettings prim encapsulates all the settings and components that tell +a renderer what render settings to use, and what render output to produce, for +a single invocation of rendering the scene. A RenderSettings prim will contain +global renderer settings, such as working colorspace, and the prim that +represents the camera for the render. RenderSettings also may contain one or +more RenderProducts, although to get a default RGB color image render, you can +omit the products specification. + +A *RenderProduct* represents a single render output artifact, such as a rendered +image file or an output depth buffer. RenderProducts can override some of the +configuration in a RenderSetting (such as the camera), but also have +product-specific settings, such as the output "product name" (for a rendered +image, the image filename). + +RenderSettings and RenderProduct can designate the :ref:`render camera ` +used for rendering via setting the :usda:`camera` relationship to a Camera prim. The +Camera prim determines the visual composition of the scene as an +image, and represents creative choices distinct from the technical render +settings used to configure image generation. This is why some attributes +originate from the camera and others (such as pixel resolution) are expressed +separately as render settings, and may vary per RenderProduct. + +A RenderProduct can specify one or more *RenderVars*. Each RenderVar represents +a quantity or "channel" of computed output data that can vary across an output +artifact. A product may contain multiple channels of data representing related +values or variables sampled by a render process. The RenderVar prim specifies +what values the renderer should output and how the renderer should produce them. +Examples of render variables include geometric measurements such as +camera-space depth, quantities emitted by material shaders, light path +expressions (LPE's), and quantities intrinsic to the renderer such as +computation time per pixel. Note that USD does not yet enforce a set of +universal RenderVar names and formats, so renderer-specific RenderVars are +expected. In the following example, the "PrimaryProduct" RenderProduct +specifies four RenderVars representing channels for color, alpha, directDiffuse, +and a general ID value. + +.. code-block:: usda + + def RenderProduct "PrimaryProduct" { + rel camera = + token productName = "/scratch/tmp/render000009.exr" + rel orderedVars = [ + , + , + , + + ] + } + def Scope "Vars" + { + def RenderVar "color" { + string sourceName = "Ci" + } + def RenderVar "alpha" { + token dataType = "float" + string sourceName = "a" + } + def RenderVar "directDiffuse" { + string sourceName = "C[O]" + token sourceType = "lpe" + } + def RenderVar "id" { + token dataType = "int" + string sourceName = "id" + } + } + +*RenderPass* encapsulates multi-pass rendering workflows, letting you specify a +different RenderSetting for each render pass. For example, you might have a +workflow that uses separate render passes and settings to render the foreground +and background portions of a scene, and a third pass that composites the +foreground and background render output into the final frame. RenderPass can +point to a RenderSettings for render configuration for the pass, or point to +product-specific configuration for external renderers that may not describe a +render in terms of RenderSettings (e.g., compositing applications). In addition +to organizing the different renders and processes (such as denoising and +compositing) that collectively produce a "final frame", RenderPass codifies the +dependencies between passes. A single pass generally represents not just a +single set of products, but a sequence of temporally varying frames of outputs +that depend on temporally varying inputs. + +RenderPass also lets you specify collections of prims that are visible to the +renderer for that pass, using the :usda:`collection:renderVisibility` collection. +Use this collection if you have separate passes for different sets of objects +in the stage (e.g., separate foreground and background passes), or passes that +only apply to specific types of objects. + +The following example shows three RenderPasses. A "foreground" pass and a +"background" pass are specified that use RenderMan and the "PrimarySettings" +RenderSettings configuration, but specify different parts of the stage to render +using the RenderPass :usda:`renderVisibility` collection. A final "composite" pass +is also specified that uses Nuke and takes the results from the other two passes +as :usda:`inputPasses`. Note that the :usda:`nuke:writeNode` attribute and Nuke +:usda:`renderSource` are hypothetical examples that would be associated with a +Nuke-supplied API schema applied to the "composite" RenderPass prim -- USD does +not provide any default Nuke render configuration support. + +.. code-block:: usda + + def Scope "Render" + { + ...settings and products... + + def Scope "Passes" + { + def RenderPass "foreground" + { + token passType = "prman" + rel renderSource = + string[] command = ["prman"] + uniform bool collection:renderVisibility:includeRoot = false + prepend rel collection:renderVisibility:includes = [ + , + , + ] + } + def RenderPass "background" + { + token passType = "prman" + rel renderSource = + string[] command = ["prman"] + uniform bool collection:renderVisibility:includeRoot = true + prepend rel collection:renderVisibility:excludes = [ + , + , + ] + } + def RenderPass "composite" + { + token passType = "nuke" + asset fileName = @composite.nk@ + # this nuke-namespaced property might come from a hypothetical Nuke-supplied API schema + string nuke:writeNode = "WriteFinalComposite" + rel renderSource = + string[] command = ["nuke", "-x", "-c", "32G"] + rel inputPasses = [ + , + + ] + } + } + } + +For more details on the standard USD attributes for the render settings prims, +see: + +- `RenderSettingsBase `__ +- `RenderSettings `__ +- `RenderProduct `__ +- `RenderVar `__ +- `RenderPass `__ + +Note that renderers are expected to add renderer-specific properties to the +USD render schemas via auto applied API schemas, and document those settings in +the renderer documentation. \ No newline at end of file From 87e722eb4876fb1c56081f87b75c3219edf344ab Mon Sep 17 00:00:00 2001 From: rajabala Date: Tue, 25 Jul 2023 23:12:52 -0700 Subject: [PATCH 140/352] [hd, hdPrman] Add render delegate API to aid transition to Hydra 2.0 - Add SetTerminalSceneIndex(..) and Update() to HdRenderDelegate to allow a render delegate to observe the terminal scene index and process change notices directly. - Update HdRenderIndex to call the above methods towards the end of construction and at the beginning of SyncAll respectively. - Add skeleton implementation of a terminal scene index observer in hdPrman. (Internal change: 2287580) --- pxr/imaging/hd/renderDelegate.cpp | 17 +++ pxr/imaging/hd/renderDelegate.h | 30 +++++ pxr/imaging/hd/renderIndex.cpp | 16 +++ pxr/imaging/hd/version.h | 5 +- .../plugin/hdPrman/CMakeLists.txt | 1 + .../plugin/hdPrman/debugCodes.cpp | 2 + .../renderman-25/plugin/hdPrman/debugCodes.h | 3 +- .../plugin/hdPrman/renderDelegate.cpp | 34 +++++ .../plugin/hdPrman/renderDelegate.h | 24 ++++ .../hdPrman/terminalSceneIndexObserver.cpp | 120 ++++++++++++++++++ .../hdPrman/terminalSceneIndexObserver.h | 90 +++++++++++++ 11 files changed, 340 insertions(+), 2 deletions(-) create mode 100644 third_party/renderman-25/plugin/hdPrman/terminalSceneIndexObserver.cpp create mode 100644 third_party/renderman-25/plugin/hdPrman/terminalSceneIndexObserver.h diff --git a/pxr/imaging/hd/renderDelegate.cpp b/pxr/imaging/hd/renderDelegate.cpp index cdcdf476a3..573d6adb41 100644 --- a/pxr/imaging/hd/renderDelegate.cpp +++ b/pxr/imaging/hd/renderDelegate.cpp @@ -257,5 +257,22 @@ HdRenderDelegate::Restart() return false; } +//////////////////////////////////////////////////////////////////////////// +/// +/// Hydra 2.0 API +/// +//////////////////////////////////////////////////////////////////////////// + +void +HdRenderDelegate::SetTerminalSceneIndex( + const HdSceneIndexBaseRefPtr &terminalSceneIndex) +{ +} + +void +HdRenderDelegate::Update() +{ +} + PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/imaging/hd/renderDelegate.h b/pxr/imaging/hd/renderDelegate.h index bbeac14ad2..d7bb53458e 100644 --- a/pxr/imaging/hd/renderDelegate.h +++ b/pxr/imaging/hd/renderDelegate.h @@ -46,6 +46,8 @@ class HdRenderPass; class HdInstancer; class HdDriver; +TF_DECLARE_REF_PTRS(HdSceneIndexBase); + using HdRenderPassSharedPtr = std::shared_ptr; using HdRenderPassStateSharedPtr = std::shared_ptr; using HdResourceRegistrySharedPtr = std::shared_ptr; @@ -484,6 +486,34 @@ class HdRenderDelegate return _displayName; } + //////////////////////////////////////////////////////////////////////////// + /// + /// Hydra 2.0 API + /// + /// \note The following methods aid in migrating existing 1.0 based + /// render delegates to the Hydra 2.0 API. + /// + //////////////////////////////////////////////////////////////////////////// + + /// Called after the scene index graph is created during render index + /// construction, providing a hook point for the render delegate to + /// register an observer of the terminal scene index. + /// + /// \note Render delegates should not assume that the scene index is fully + /// populated at this point. + /// + HD_API + virtual void SetTerminalSceneIndex( + const HdSceneIndexBaseRefPtr &terminalSceneIndex); + + /// Called at the beginning of HdRenderIndex::SyncAll, before render index + /// prim sync, to provide the render delegate an opportunity to directly + /// process change notices from observing the terminal scene index, + /// rather than using the Hydra 1.0 Sync algorithm. + /// + HD_API + virtual void Update(); + protected: /// This class must be derived from. HD_API diff --git a/pxr/imaging/hd/renderIndex.cpp b/pxr/imaging/hd/renderIndex.cpp index 64a098e0fb..2b8d546ffc 100644 --- a/pxr/imaging/hd/renderIndex.cpp +++ b/pxr/imaging/hd/renderIndex.cpp @@ -146,6 +146,8 @@ HdRenderIndex::HdRenderIndex( SdfPath::AbsoluteRootPath()); _tracker._SetTargetSceneIndex(get_pointer(_emulationSceneIndex)); + + renderDelegate->SetTerminalSceneIndex(_terminalSceneIndex); } } @@ -1389,6 +1391,20 @@ HdRenderIndex::SyncAll(HdTaskSharedPtrVector *tasks, { HD_TRACE_FUNCTION(); + //////////////////////////////////////////////////////////////////////////// + // + // Render delegates driving prim updates from the scene index will expect + // an Update call; run this before legacy Hydra prim sync. + // + + if (_IsEnabledSceneIndexEmulation()) { + _renderDelegate->Update(); + } + + // + //////////////////////////////////////////////////////////////////////////// + + HdRenderParam *renderParam = _renderDelegate->GetRenderParam(); _bprimIndex.SyncPrims(_tracker, _renderDelegate->GetRenderParam()); diff --git a/pxr/imaging/hd/version.h b/pxr/imaging/hd/version.h index 5a1302200b..1fda1fdf07 100644 --- a/pxr/imaging/hd/version.h +++ b/pxr/imaging/hd/version.h @@ -74,7 +74,10 @@ // 52 -> 53: Changing dirty bits of HdCoordSys. // 53 -> 54: Introducing HdFlattenedDataSourceProvider to make // HdFlatteningSceneIndex modular. -#define HD_API_VERSION 54 +// 54 -> 55: Introduce API in HdRenderDelegate to aid in transitioning +// render delegates to a Hydra 2.0 world. +// +#define HD_API_VERSION 55 // 1 -> 2: SimpleLighting -> FallbackLighting #define HD_SHADER_API 2 diff --git a/third_party/renderman-25/plugin/hdPrman/CMakeLists.txt b/third_party/renderman-25/plugin/hdPrman/CMakeLists.txt index 2d6ce55dd6..8b56171e59 100644 --- a/third_party/renderman-25/plugin/hdPrman/CMakeLists.txt +++ b/third_party/renderman-25/plugin/hdPrman/CMakeLists.txt @@ -119,6 +119,7 @@ pxr_plugin(${PXR_PACKAGE} renderSettingsFilteringSceneIndexPlugin renderViewContext resourceRegistry + terminalSceneIndexObserver utils velocityMotionBlurSceneIndexPlugin virtualStructResolvingSceneIndex diff --git a/third_party/renderman-25/plugin/hdPrman/debugCodes.cpp b/third_party/renderman-25/plugin/hdPrman/debugCodes.cpp index e2eccbc635..8bf82c5e10 100644 --- a/third_party/renderman-25/plugin/hdPrman/debugCodes.cpp +++ b/third_party/renderman-25/plugin/hdPrman/debugCodes.cpp @@ -44,6 +44,8 @@ TF_REGISTRY_FUNCTION(TfDebug) TF_DEBUG_ENVIRONMENT_SYMBOL(HDPRMAN_MESHLIGHT, "Mesh lights"); TF_DEBUG_ENVIRONMENT_SYMBOL(HDPRMAN_RENDER_SETTINGS, "Debug logging for all things render settings."); + TF_DEBUG_ENVIRONMENT_SYMBOL(HDPRMAN_TERMINAL_SCENE_INDEX_OBSERVER, + "Debug logging for HdPrman terminal scene index observer."); } PXR_NAMESPACE_CLOSE_SCOPE diff --git a/third_party/renderman-25/plugin/hdPrman/debugCodes.h b/third_party/renderman-25/plugin/hdPrman/debugCodes.h index 908e7ce0bc..d0a9f04ce8 100644 --- a/third_party/renderman-25/plugin/hdPrman/debugCodes.h +++ b/third_party/renderman-25/plugin/hdPrman/debugCodes.h @@ -40,7 +40,8 @@ TF_DEBUG_CODES( HDPRMAN_IMAGE_ASSET_RESOLVE, HDPRMAN_INSTANCERS, HDPRMAN_MESHLIGHT, - HDPRMAN_RENDER_SETTINGS + HDPRMAN_RENDER_SETTINGS, + HDPRMAN_TERMINAL_SCENE_INDEX_OBSERVER ); PXR_NAMESPACE_CLOSE_SCOPE diff --git a/third_party/renderman-25/plugin/hdPrman/renderDelegate.cpp b/third_party/renderman-25/plugin/hdPrman/renderDelegate.cpp index 486410ee09..6ea5ea3e9b 100644 --- a/third_party/renderman-25/plugin/hdPrman/renderDelegate.cpp +++ b/third_party/renderman-25/plugin/hdPrman/renderDelegate.cpp @@ -44,6 +44,7 @@ #include "hdPrman/paramsSetter.h" #include "hdPrman/points.h" #include "hdPrman/resourceRegistry.h" +#include "hdPrman/terminalSceneIndexObserver.h" #include "hdPrman/tokens.h" #include "hdPrman/volume.h" @@ -51,6 +52,7 @@ #include "pxr/imaging/hd/camera.h" #include "pxr/imaging/hd/extComputation.h" #include "pxr/imaging/hd/rprim.h" +#include "pxr/imaging/hd/sceneIndex.h" #include "pxr/imaging/hd/sprim.h" #include "pxr/imaging/hd/tokens.h" @@ -628,4 +630,36 @@ HdPrmanRenderDelegate::GetRenderIndex() const return nullptr; } +#if HD_API_VERSION >= 55 + +//////////////////////////////////////////////////////////////////////////// +/// +/// Hydra 2.0 API +/// +//////////////////////////////////////////////////////////////////////////// + +void +HdPrmanRenderDelegate::SetTerminalSceneIndex( + const HdSceneIndexBaseRefPtr &terminalSceneIndex) +{ + if (!_terminalObserver) { + _terminalObserver = + std::make_unique( + _renderParam, terminalSceneIndex); + } +} + +void +HdPrmanRenderDelegate::Update() +{ + if (!_terminalObserver) { + TF_CODING_ERROR("Invalid terminal scene index observer."); + return; + } + + _terminalObserver->Update(); +} + +#endif + PXR_NAMESPACE_CLOSE_SCOPE diff --git a/third_party/renderman-25/plugin/hdPrman/renderDelegate.h b/third_party/renderman-25/plugin/hdPrman/renderDelegate.h index e2de713fb4..88c6745a9e 100644 --- a/third_party/renderman-25/plugin/hdPrman/renderDelegate.h +++ b/third_party/renderman-25/plugin/hdPrman/renderDelegate.h @@ -26,6 +26,7 @@ #include "pxr/pxr.h" #include "pxr/imaging/hd/renderDelegate.h" +#include "pxr/imaging/hd/version.h" #include "hdPrman/api.h" PXR_NAMESPACE_OPEN_SCOPE @@ -199,6 +200,23 @@ class HdPrmanRenderDelegate : public HdRenderDelegate HDPRMAN_API bool Restart() override; +#if HD_API_VERSION >= 55 + + //////////////////////////////////////////////////////////////////////////// + /// + /// Hydra 2.0 API + /// + //////////////////////////////////////////////////////////////////////////// + + HDPRMAN_API + void SetTerminalSceneIndex( + const HdSceneIndexBaseRefPtr &inputSceneIndex) override; + + HDPRMAN_API + void Update() override; + +#endif + // ------------------------------------------------------------------------ // Public (non-virtual) API // ------------------------------------------------------------------------ @@ -225,6 +243,12 @@ class HdPrmanRenderDelegate : public HdRenderDelegate static const TfTokenVector SUPPORTED_BPRIM_TYPES; std::shared_ptr _renderParam; + +#if HD_API_VERSION >= 55 + std::unique_ptr + _terminalObserver; +#endif + HdResourceRegistrySharedPtr _resourceRegistry; HdRenderPassSharedPtr _renderPass; HdRenderSettingDescriptorList _settingDescriptors; diff --git a/third_party/renderman-25/plugin/hdPrman/terminalSceneIndexObserver.cpp b/third_party/renderman-25/plugin/hdPrman/terminalSceneIndexObserver.cpp new file mode 100644 index 0000000000..4338dfec49 --- /dev/null +++ b/third_party/renderman-25/plugin/hdPrman/terminalSceneIndexObserver.cpp @@ -0,0 +1,120 @@ +// +// Copyright 2023 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// + +#include "hdPrman/terminalSceneIndexObserver.h" +#include "hdPrman/debugCodes.h" +#include "hdPrman/renderParam.h" + +#include "pxr/usd/sdf/path.h" +#include "pxr/imaging/hd/sceneIndex.h" +#include "pxr/imaging/hd/perfLog.h" +#include "pxr/imaging/hd/tokens.h" + +PXR_NAMESPACE_OPEN_SCOPE + +HdPrman_TerminalSceneIndexObserver::HdPrman_TerminalSceneIndexObserver( + HdPrman_RenderParamSharedPtr const &renderParam, + HdSceneIndexBaseRefPtr const &inputSceneIndex) +: _renderParam(renderParam) +, _terminalSi(inputSceneIndex) +, _initialized(false) +{ + if (!renderParam) { + TF_CODING_ERROR("Invalid render param provided."); + } + + if (!inputSceneIndex) { + TF_CODING_ERROR("Invalid input (terminal) scene index provided.\n"); + } else { + inputSceneIndex->AddObserver(HdSceneIndexObserverPtr(this)); + } +} + +HdPrman_TerminalSceneIndexObserver::~HdPrman_TerminalSceneIndexObserver() + = default; + +// ------------------------------------------------------------------------ +// Public API +// ------------------------------------------------------------------------ + +void +HdPrman_TerminalSceneIndexObserver::Update() +{ + HD_TRACE_FUNCTION(); + + if (!_initialized) { + TF_DEBUG(HDPRMAN_TERMINAL_SCENE_INDEX_OBSERVER).Msg( + "HdPrman_TerminalSceneIndexObserver::Update -- Initialization..\n"); + + // TODO + // * Move riley scene options initialization here. + // * Walk the scene and process populated prims. + // Start with the active (or available) render settings prim and + // connected prims (cameras, render terminals). + // + + _initialized = true; + } else { + // TODO + // * Process change notices received since the last Update call. + } +} + +// ------------------------------------------------------------------------ +// HdSceneIndexObserver virtual API +// ------------------------------------------------------------------------ + +void +HdPrman_TerminalSceneIndexObserver::PrimsAdded( + const HdSceneIndexBase &sender, + const AddedPrimEntries &entries) +{ + +} + +void +HdPrman_TerminalSceneIndexObserver::PrimsRemoved( + const HdSceneIndexBase &sender, + const RemovedPrimEntries &entries) +{ + +} + +void +HdPrman_TerminalSceneIndexObserver::PrimsDirtied( + const HdSceneIndexBase &sender, + const DirtiedPrimEntries &entries) +{ + +} + +void +HdPrman_TerminalSceneIndexObserver::PrimsRenamed( + const HdSceneIndexBase &sender, + const RenamedPrimEntries &entries) +{ + +} + +PXR_NAMESPACE_CLOSE_SCOPE \ No newline at end of file diff --git a/third_party/renderman-25/plugin/hdPrman/terminalSceneIndexObserver.h b/third_party/renderman-25/plugin/hdPrman/terminalSceneIndexObserver.h new file mode 100644 index 0000000000..d59648bfea --- /dev/null +++ b/third_party/renderman-25/plugin/hdPrman/terminalSceneIndexObserver.h @@ -0,0 +1,90 @@ +// +// Copyright 2023 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +#ifndef EXT_RMANPKG_25_0_PLUGIN_RENDERMAN_PLUGIN_HD_PRMAN_TERMINAL_SCENE_INDEX_OBSERVER_H +#define EXT_RMANPKG_25_0_PLUGIN_RENDERMAN_PLUGIN_HD_PRMAN_TERMINAL_SCENE_INDEX_OBSERVER_H + +#include "pxr/pxr.h" +#include "pxr/imaging/hd/sceneIndexObserver.h" + +#include + +PXR_NAMESPACE_OPEN_SCOPE + +using HdPrman_RenderParamSharedPtr = std::shared_ptr; + +/// Observes and processes notices from the terminal scene index (which is +/// currently managed by the render index during emulation). +/// +class HdPrman_TerminalSceneIndexObserver : public HdSceneIndexObserver +{ +public: + HdPrman_TerminalSceneIndexObserver( + const HdPrman_RenderParamSharedPtr &renderParam, + const HdSceneIndexBaseRefPtr &inputSceneIndex); + + ~HdPrman_TerminalSceneIndexObserver() override; + + // ------------------------------------------------------------------------ + // Public API + // ------------------------------------------------------------------------ + + // Process change notices that were aggregated since the last Update call. + // This method mimics the intent of "Sync" in Hydra 1.0 + // + void Update(); + + protected: + + // ------------------------------------------------------------------------ + // Satisfying HdSceneIndexObserver + // ------------------------------------------------------------------------ + + void PrimsAdded( + const HdSceneIndexBase &sender, + const AddedPrimEntries &entries) override; + + void PrimsRemoved( + const HdSceneIndexBase &sender, + const RemovedPrimEntries &entries) override; + + void PrimsDirtied( + const HdSceneIndexBase &sender, + const DirtiedPrimEntries &entries) override; + + void PrimsRenamed( + const HdSceneIndexBase &sender, + const RenamedPrimEntries &entries) override; + +private: + + // Need a handle to renderParam since it manages the riley instance and + // the render thread. + std::shared_ptr _renderParam; + HdSceneIndexBaseRefPtr const _terminalSi; + bool _initialized; +}; + +PXR_NAMESPACE_CLOSE_SCOPE + +#endif // EXT_RMANPKG_25_0_PLUGIN_RENDERMAN_PLUGIN_HD_PRMAN_TERMINAL_SCENE_INDEX_OBSERVER_H \ No newline at end of file From 95cf6407012f5e5ff49b5ef9a51bd3d599a442b9 Mon Sep 17 00:00:00 2001 From: pixar-oss Date: Thu, 27 Jul 2023 09:03:52 -0700 Subject: [PATCH 141/352] Updating recommended doxygen version for USD (to 1.9) (Internal change: 2287764) --- VERSIONS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSIONS.md b/VERSIONS.md index 03f51d3c4a..21aaf7e865 100644 --- a/VERSIONS.md +++ b/VERSIONS.md @@ -34,7 +34,7 @@ Our test machines have the following software versions installed | Jinja2 | 2.0 | | | | Flex | 2.5.39 | | | | Bison | 2.4.1 | | | -| Doxygen | 1.8.14 | | | +| Doxygen | 1.9.6 | | | | GraphViz | 2.40.1 | | | | OpenVDB | 7.1.0 | 7.1.0 | 7.1.0 | | Vulkan SDK | 1.2.135.0 | 1.2.135.0 | 1.2.135.0 | From 6bfee0a732ed5beeb53089bb8f37b4f1a90d7c6d Mon Sep 17 00:00:00 2001 From: Chad Dombrova Date: Thu, 27 Jul 2023 22:28:09 -0600 Subject: [PATCH 142/352] doxygenlib: filter empty innerclass elements that were generated by parsing the additional xml entries These elements shadow class elements of the same name, but they lack any valuable information, and thus create empty docstrings. --- docs/python/doxygenlib/cdParser.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/python/doxygenlib/cdParser.py b/docs/python/doxygenlib/cdParser.py index fc2561edd1..78cdc335d0 100644 --- a/docs/python/doxygenlib/cdParser.py +++ b/docs/python/doxygenlib/cdParser.py @@ -387,7 +387,10 @@ def __createDocElement(self, node): prot = '' doc = self.__getAllDocStrings(node, name) location = node.getLocation() - ret = DocElement(name, kind, prot, doc, location) + if location != ('', ''): + # These elements shadow class elements of the same name, but they + # lack any valuable information, and thus create empty docstrings. + ret = DocElement(name, kind, prot, doc, location) elif node.name == 'compounddef': kind = node.getKind() if kind == 'class' or kind == 'struct': From 38a4985bc95728c068e0232df16ba07af6c92ab0 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Mon, 13 Feb 2023 13:10:24 -0800 Subject: [PATCH 143/352] Replace `boost::multi_index_container` with custom container in `stageCache.cpp` --- pxr/usd/usd/stageCache.cpp | 383 +++++++++++++++++++++++-------------- 1 file changed, 242 insertions(+), 141 deletions(-) diff --git a/pxr/usd/usd/stageCache.cpp b/pxr/usd/usd/stageCache.cpp index a7f0b96b32..edaafbd7f9 100644 --- a/pxr/usd/usd/stageCache.cpp +++ b/pxr/usd/usd/stageCache.cpp @@ -25,23 +25,17 @@ #include "pxr/usd/usd/stageCache.h" #include "pxr/usd/sdf/layer.h" -#include "pxr/base/tf/hash.h" +#include "pxr/usd/usd/common.h" #include "pxr/usd/usd/debugCodes.h" #include "pxr/usd/usd/stage.h" #include "pxr/usd/ar/resolverContext.h" - -#include -#include -#include -#include -#include -#include -#include +#include "pxr/base/tf/hash.h" #include #include #include +#include #include PXR_NAMESPACE_OPEN_SCOPE @@ -65,69 +59,178 @@ std::atomic_long idCounter(9223000); Id GetNextId() { return Id::FromLongInt(++idCounter); } struct Entry { - Entry() {} + Entry() = default; Entry(const UsdStageRefPtr &stage, Id id) : stage(stage), id(id) {} UsdStageRefPtr stage; Id id; }; -struct ById {}; +using StagesById = std::unordered_map; +using IdsByStage = std::unordered_map; +using StagesByRootLayer = std::unordered_multimap; + +/// The stage container provides a set of synchronized maps to enable +/// lookup by Id, LayerHandle, or Stage. It provides a single insertion +/// function to populate these maps and erasure by multiple key types. +/// +/// This data structure does not add any thread safety guarantees. Users should +/// lock appropriately before read and write. +class StageContainer { +public: + StageContainer() = default; + + /// Return an unordered_map of the stages indexed by id + const StagesById& ById() const { return _byId; } + /// Return an unordered_map of the ids indexed by stage + const IdsByStage& ByStage() const { return _byStage; } + /// Return an unordered_multimap of the stages indexed by root layer + /// NOTE: This is a multimap where multiple stages may mapped by a single + /// root layer. + const StagesByRootLayer& ByRootLayer() const { return _byRootLayer; } + + // If the stage is already in the cache, return the pair {Id, false} + // If the stage is not in the cache, generate a new id, populate + // the synchronized maps, and return {NewId, true} + std::pair Insert(const UsdStageRefPtr& stage) { + const auto it = _byStage.find(stage); + if ( it != _byStage.cend()) { + return std::make_pair(it->second, false); + } + const Id id = GetNextId(); + TF_VERIFY(_byStage.emplace(stage, id).second); + TF_VERIFY(_byId.emplace(id, stage).second); + _byRootLayer.emplace(stage->GetRootLayer(), stage); + return std::make_pair(id, true); + } + + // Return true if the stage was successfully erased + bool Erase(const UsdStageRefPtr& stage) { + const auto it = _byStage.find(stage); + if (it == _byStage.cend()) { + return false; + } + _EraseRootLayerEntry(stage); + TF_VERIFY(_byId.erase(it->second) == 1); + _byStage.erase(it); + return true; + } -struct ByStage {}; + // Return true if the stage was successfully erased + bool Erase(const Id id) { + const auto it = _byId.find(id); + if (it == _byId.cend()) { + return false; + } + _EraseRootLayerEntry(it->second); + TF_VERIFY(_byStage.erase(it->second) == 1); + _byId.erase(it); + return true; + } -struct ByRootLayer { - static SdfLayerHandle Get(const Entry &entry) { - return entry.stage->GetRootLayer(); + size_t EraseAll(const SdfLayerHandle& rootLayer, + vector* erased) { + return _EraseAllIf(rootLayer, + [](const auto& stage){ return true; }, + erased); } -}; -typedef boost::multi_index::multi_index_container< - - Entry, - - boost::multi_index::indexed_by< - - boost::multi_index::hashed_unique< - boost::multi_index::tag, - boost::multi_index::member - >, - - boost::multi_index::hashed_unique< - boost::multi_index::tag, - boost::multi_index::member - >, - - boost::multi_index::hashed_non_unique< - boost::multi_index::tag, - boost::multi_index::global_fun< - const Entry &, SdfLayerHandle, &ByRootLayer::Get> - > - > - > StageContainer; - -typedef StageContainer::index::type StagesById; -typedef StageContainer::index::type StagesByStage; -typedef StageContainer::index::type StagesByRootLayer; - -// Walk range, which must be from index, applying pred() to every element. For -// those elements where pred(element) is true, erase the element from the index -// and invoke out->push_back(element) if out is not null. Return the number of -// elements erased. -template -size_t EraseIf(Index &index, Range range, Pred pred, BackIns *out) { - size_t numErased = 0; - while (range.first != range.second) { - if (pred(*range.first)) { - if (out) - out->push_back(*range.first); - index.erase(range.first++); - ++numErased; + size_t EraseAll(const SdfLayerHandle& rootLayer, + const SdfLayerHandle& sessionLayer, + vector* erased) { + return _EraseAllIf(rootLayer, + [&sessionLayer](const auto& stage){ + return stage->GetSessionLayer() == sessionLayer; + }, + erased); + } + + size_t EraseAll(const SdfLayerHandle& rootLayer, + const SdfLayerHandle& sessionLayer, + const ArResolverContext& resolverContext, + vector* erased) { + return _EraseAllIf(rootLayer, + [&sessionLayer, &resolverContext](const auto& stage){ + return stage->GetSessionLayer() == sessionLayer && + stage->GetPathResolverContext() == resolverContext; + }, + erased); + } + + size_t size() const { return _byId.size(); } + +private: + // Helper function to erase the ByRootLayer() entry associated with the + // stage (and no other entries). + // + // This must be used in tandem with erase methods on ById() and ByStage() + // to uphold the synchronization invariant. + void _EraseRootLayerEntry(const UsdStageRefPtr& stage) { + const auto range = _byRootLayer.equal_range( + stage->GetRootLayer() + ); + const auto it = std::find_if( + range.first, range.second, + [&stage](const auto& element){ + return element.second == stage; + }); + if (it != range.second) { + _byRootLayer.erase(it); } else { - ++range.first; + TF_CODING_ERROR( + "Internal StageCache is out of sync." + "Cannot find root layer entry for stage '%s'." + "Skipping erase of incomplete element.", + UsdDescribe(stage).c_str() + ); } } - return numErased; -} + + template + size_t _EraseAllIf(const SdfLayerHandle& rootLayer, + ConditionFn&& conditionFn, + vector* erased) { + const auto range = _byRootLayer.equal_range(rootLayer); + size_t erasedCount = 0; + // In C++20, consider using a filtered range with the condition + // function + for (auto it = range.first; it != range.second;) { + if (conditionFn(it->second)) { + const auto byStageIt = _byStage.find(it->second); + if (byStageIt == _byStage.cend()) { + TF_CODING_ERROR( + "Internal StageCache is out of sync. " + "Cannot locate ID for stage '%s'." + "Skipping erase of incomplete element.", + UsdDescribe(it->second).c_str()); + ++it; + } else { + if (erased) { + erased->emplace_back(byStageIt->first, + byStageIt->second); + } + // Erase the ID => Stage map by value first and + // verify it succeeded. + TF_VERIFY(_byId.erase(byStageIt->second) == 1); + // Erase the Stage => ID map using the found iterator + _byStage.erase(byStageIt); + // Erase the multimap last and increment it to the + // next element in the equal_range + it = _byRootLayer.erase(it); + ++erasedCount; + } + } else { + ++it; + } + } + return erasedCount; + } + + StagesById _byId; + IdsByStage _byStage; + StagesByRootLayer _byRootLayer; +}; struct DebugHelper { @@ -143,15 +246,10 @@ struct DebugHelper bool IsEnabled() const { return _enabled; } - template - void AddEntries(const Range &rng) { - if (IsEnabled()) - _entries.insert(_entries.end(), boost::begin(rng), boost::end(rng)); - } - - void AddEntry(const Entry &entry) { - if (IsEnabled()) - _entries.push_back(entry); + void AddEntry(const UsdStageRefPtr& stagePtr, const Id id) { + if (IsEnabled()) { + _entries.emplace_back(stagePtr, id); + } } void IssueMessage() const { @@ -262,11 +360,10 @@ vector UsdStageCache::GetAllStages() const { LockGuard lock(_mutex); - StagesByStage &byStage = _impl->stages.get(); - vector result; - result.reserve(_impl->stages.size()); - for (auto const &entry: byStage) - result.push_back(entry.stage); + const IdsByStage &byStage = _impl->stages.ByStage(); + vector result(_impl->stages.size()); + std::transform(byStage.cbegin(), byStage.cend(), result.begin(), + [](const auto& entry) { return entry.first; }); return result; } @@ -284,10 +381,14 @@ UsdStageCache::RequestStage(UsdStageCacheRequest &&request) { LockGuard lock(_mutex); // Does the cache currently have a match? If so, done. - StagesByStage &byStage = _impl->stages.get(); - for (auto const &entry: byStage) - if (request.IsSatisfiedBy(entry.stage)) - return std::make_pair(entry.stage, false); + { + const IdsByStage &byStage = _impl->stages.ByStage(); + for (auto const &element: byStage) { + if (request.IsSatisfiedBy(element.first)) { + return std::make_pair(element.first, false); + } + } + } // Check to see if any pending requests can satisfy. for (auto *pending: _impl->pendingRequests) { @@ -347,9 +448,9 @@ UsdStageCache::Find(Id id) const { UsdStageRefPtr result; { LockGuard lock(_mutex); - StagesById &byId = _impl->stages.get(); + const StagesById& byId = _impl->stages.ById(); StagesById::const_iterator iter = byId.find(id); - result = iter != byId.end() ? iter->stage : TfNullPtr; + result = iter != byId.end() ? iter->second : TfNullPtr; } DBG("%s for id=%s in %s\n", @@ -365,9 +466,9 @@ UsdStageCache::FindOneMatching(const SdfLayerHandle &rootLayer) const { UsdStageRefPtr result; { LockGuard lock(_mutex); - StagesByRootLayer &byRootLayer = _impl->stages.get(); + const StagesByRootLayer& byRootLayer = _impl->stages.ByRootLayer(); auto iter = byRootLayer.find(rootLayer); - result = iter != byRootLayer.end() ? iter->stage : TfNullPtr; + result = iter != byRootLayer.end() ? iter->second : TfNullPtr; } DBG("%s by rootLayer%s in %s\n", @@ -385,12 +486,12 @@ UsdStageCache::FindOneMatching(const SdfLayerHandle &rootLayer, { UsdStageRefPtr result; { LockGuard lock(_mutex); - StagesByRootLayer &byRootLayer = _impl->stages.get(); + const StagesByRootLayer &byRootLayer = _impl->stages.ByRootLayer(); auto range = byRootLayer.equal_range(rootLayer); for (auto entryIt = range.first; entryIt != range.second; ++entryIt) { const auto& entry = *entryIt; - if (entry.stage->GetSessionLayer() == sessionLayer) { - result = entry.stage; + if (entry.second->GetSessionLayer() == sessionLayer) { + result = entry.second; break; } } @@ -414,12 +515,12 @@ UsdStageCache::FindOneMatching( { UsdStageRefPtr result; { LockGuard lock(_mutex); - StagesByRootLayer &byRootLayer = _impl->stages.get(); + const StagesByRootLayer &byRootLayer = _impl->stages.ByRootLayer(); auto range = byRootLayer.equal_range(rootLayer); for (auto entryIt = range.first; entryIt != range.second; ++entryIt) { const auto& entry = *entryIt; - if (entry.stage->GetPathResolverContext() == pathResolverContext) { - result = entry.stage; + if (entry.second->GetPathResolverContext() == pathResolverContext) { + result = entry.second; break; } } @@ -442,13 +543,13 @@ UsdStageCache::FindOneMatching( { UsdStageRefPtr result; { LockGuard lock(_mutex); - StagesByRootLayer &byRootLayer = _impl->stages.get(); + const StagesByRootLayer &byRootLayer = _impl->stages.ByRootLayer(); auto range = byRootLayer.equal_range(rootLayer); for (auto entryIt = range.first; entryIt != range.second; ++entryIt) { const auto& entry = *entryIt; - if (entry.stage->GetSessionLayer() == sessionLayer && - entry.stage->GetPathResolverContext() == pathResolverContext) { - result = entry.stage; + if (entry.second->GetSessionLayer() == sessionLayer && + entry.second->GetPathResolverContext() == pathResolverContext) { + result = entry.second; break; } } @@ -469,12 +570,12 @@ std::vector UsdStageCache::FindAllMatching(const SdfLayerHandle &rootLayer) const { LockGuard lock(_mutex); - StagesByRootLayer &byRootLayer = _impl->stages.get(); + const StagesByRootLayer &byRootLayer = _impl->stages.ByRootLayer(); vector result; auto range = byRootLayer.equal_range(rootLayer); for (auto entryIt = range.first; entryIt != range.second; ++entryIt) { const auto& entry = *entryIt; - result.push_back(entry.stage); + result.push_back(entry.second); } return result; } @@ -484,13 +585,13 @@ UsdStageCache::FindAllMatching(const SdfLayerHandle &rootLayer, const SdfLayerHandle &sessionLayer) const { LockGuard lock(_mutex); - StagesByRootLayer &byRootLayer = _impl->stages.get(); + const StagesByRootLayer &byRootLayer = _impl->stages.ByRootLayer(); vector result; auto range = byRootLayer.equal_range(rootLayer); for (auto entryIt = range.first; entryIt != range.second; ++entryIt) { const auto& entry = *entryIt; - if (entry.stage->GetSessionLayer() == sessionLayer) - result.push_back(entry.stage); + if (entry.second->GetSessionLayer() == sessionLayer) + result.push_back(entry.second); } return result; } @@ -501,13 +602,13 @@ UsdStageCache::FindAllMatching( const ArResolverContext &pathResolverContext) const { LockGuard lock(_mutex); - StagesByRootLayer &byRootLayer = _impl->stages.get(); + const StagesByRootLayer &byRootLayer = _impl->stages.ByRootLayer(); vector result; auto range = byRootLayer.equal_range(rootLayer); for (auto entryIt = range.first; entryIt != range.second; ++entryIt) { const auto& entry = *entryIt; - if (entry.stage->GetPathResolverContext() == pathResolverContext) - result.push_back(entry.stage); + if (entry.second->GetPathResolverContext() == pathResolverContext) + result.push_back(entry.second); } return result; } @@ -519,14 +620,14 @@ UsdStageCache::FindAllMatching( const ArResolverContext &pathResolverContext) const { LockGuard lock(_mutex); - StagesByRootLayer &byRootLayer = _impl->stages.get(); + const StagesByRootLayer &byRootLayer = _impl->stages.ByRootLayer(); vector result; auto range = byRootLayer.equal_range(rootLayer); for (auto entryIt = range.first; entryIt != range.second; ++entryIt) { const auto& entry = *entryIt; - if (entry.stage->GetSessionLayer() == sessionLayer && - entry.stage->GetPathResolverContext() == pathResolverContext) { - result.push_back(entry.stage); + if (entry.second->GetSessionLayer() == sessionLayer && + entry.second->GetPathResolverContext() == pathResolverContext) { + result.push_back(entry.second); } } return result; @@ -536,9 +637,9 @@ UsdStageCache::Id UsdStageCache::GetId(const UsdStageRefPtr &stage) const { LockGuard lock(_mutex); - StagesByStage &byStage = _impl->stages.get(); + const IdsByStage& byStage = _impl->stages.ByStage(); auto iter = byStage.find(stage); - return iter != byStage.end() ? iter->id : Id(); + return iter != byStage.end() ? iter->second : Id(); } UsdStageCache::Id @@ -553,11 +654,11 @@ UsdStageCache::Insert(const UsdStageRefPtr &stage) Id ret; { LockGuard lock(_mutex); - StagesByStage &byStage = _impl->stages.get(); - auto iresult = byStage.insert(Entry(stage, GetNextId())); - if (iresult.second && debug.IsEnabled()) - debug.AddEntry(*iresult.first); - ret = iresult.first->id; + auto iresult = _impl->stages.Insert(stage); + if (iresult.second && debug.IsEnabled()) { + debug.AddEntry(stage, iresult.first); + } + ret = iresult.first; } return ret; } @@ -568,9 +669,14 @@ UsdStageCache::Erase(Id id) DebugHelper debug(*this, "erased"); bool result; { LockGuard lock(_mutex); - if (debug.IsEnabled()) - debug.AddEntries(_impl->stages.get().equal_range(id)); - result = _impl->stages.get().erase(id); + if (debug.IsEnabled()) { + const StagesById& stagesById = _impl->stages.ById(); + const auto it = stagesById.find(id); + if (it != stagesById.end()){ + debug.AddEntry(it->second, it->first); + } + } + result = _impl->stages.Erase(id); } return result; } @@ -581,9 +687,14 @@ UsdStageCache::Erase(const UsdStageRefPtr &stage) DebugHelper debug(*this, "erased"); bool result; { LockGuard lock(_mutex); - if (debug.IsEnabled()) - debug.AddEntries(_impl->stages.get().equal_range(stage)); - result = _impl->stages.get().erase(stage); + if (debug.IsEnabled()) { + const IdsByStage& idsByStage = _impl->stages.ByStage(); + const auto it = idsByStage.find(stage); + if (it != idsByStage.end()) { + debug.AddEntry(it->first, it->second); + } + } + result = _impl->stages.Erase(stage); } return result; } @@ -594,29 +705,21 @@ UsdStageCache::EraseAll(const SdfLayerHandle &rootLayer) DebugHelper debug(*this, "erased"); size_t result; { LockGuard lock(_mutex); - if (debug.IsEnabled()) { - debug.AddEntries( - _impl->stages.get().equal_range(rootLayer)); - } - result = _impl->stages.get().erase(rootLayer); + result = _impl->stages.EraseAll(rootLayer, debug.GetEntryVec()); } return result; } size_t UsdStageCache::EraseAll(const SdfLayerHandle &rootLayer, - const SdfLayerHandle &sessionLayer) + const SdfLayerHandle &sessionLayer) { DebugHelper debug(*this, "erased"); size_t numErased; { LockGuard lock(_mutex); - StagesByRootLayer &byRootLayer = _impl->stages.get(); - numErased = - EraseIf(byRootLayer, byRootLayer.equal_range(rootLayer), - [&sessionLayer](Entry const &e) { - return e.stage->GetSessionLayer() == sessionLayer; - }, - debug.GetEntryVec()); + numErased = _impl->stages.EraseAll( + rootLayer, sessionLayer, debug.GetEntryVec() + ); } return numErased; } @@ -629,15 +732,9 @@ UsdStageCache::EraseAll(const SdfLayerHandle &rootLayer, DebugHelper debug(*this, "erased"); size_t numErased; { LockGuard lock(_mutex); - StagesByRootLayer &byRootLayer = _impl->stages.get(); - numErased = - EraseIf(byRootLayer, byRootLayer.equal_range(rootLayer), - [&sessionLayer, &pathResolverContext](Entry const &e) { - return (e.stage->GetSessionLayer() == sessionLayer && - e.stage->GetPathResolverContext() == - pathResolverContext); - }, - debug.GetEntryVec()); + numErased = _impl->stages.EraseAll( + rootLayer, sessionLayer, pathResolverContext, debug.GetEntryVec() + ); } return numErased; } @@ -650,8 +747,12 @@ UsdStageCache::Clear() UsdStageCache tmp; { LockGuard lock(_mutex); - if (debug.IsEnabled()) - debug.AddEntries(_impl->stages.get()); + if (debug.IsEnabled()) { + const IdsByStage& idsByStage = _impl->stages.ByStage(); + for (const auto& element : idsByStage) { + debug.AddEntry(element.first, element.second); + } + } _impl.swap(tmp._impl); } } From 32fba2030c80ea51e82a3f814cf93384c7ad99d3 Mon Sep 17 00:00:00 2001 From: gitamohr Date: Thu, 27 Jul 2023 09:04:07 -0700 Subject: [PATCH 144/352] Add TfPyFunctionFromFunction registration for TfPyObjWrapper (Internal change: 2287771) --- pxr/base/tf/wrapFunction.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pxr/base/tf/wrapFunction.cpp b/pxr/base/tf/wrapFunction.cpp index 5e4542d4d7..7f1c07651a 100644 --- a/pxr/base/tf/wrapFunction.cpp +++ b/pxr/base/tf/wrapFunction.cpp @@ -24,6 +24,7 @@ #include "pxr/pxr.h" #include "pxr/base/tf/pyFunction.h" +#include "pxr/base/tf/pyObjWrapper.h" #include @@ -41,4 +42,5 @@ void wrapFunction() { TfPyFunctionFromPython(); TfPyFunctionFromPython(); TfPyFunctionFromPython(); + TfPyFunctionFromPython(); } From 12fceb9018d6cb87755ed5ddcdc2c1555ba12431 Mon Sep 17 00:00:00 2001 From: pixar-oss Date: Thu, 3 Aug 2023 14:39:49 -0700 Subject: [PATCH 145/352] UsdSkel doc example fix Fixes #2538 (Internal change: 2288022) --- pxr/usd/usdSkel/doxygen/schemas.dox | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pxr/usd/usdSkel/doxygen/schemas.dox b/pxr/usd/usdSkel/doxygen/schemas.dox index 4f1f468530..122fd30058 100644 --- a/pxr/usd/usdSkel/doxygen/schemas.dox +++ b/pxr/usd/usdSkel/doxygen/schemas.dox @@ -723,12 +723,13 @@ blend shapes than are actually used on ``. This is because an animation source is providing animation data for a **complete model** (I.e., multiple geometric primitives). The _skel:blendShape_ attribute, as defined on ``, provides a mapping between the _blendShapeWeights_ animation data on ` --- which holds weight animation for multiple geometric primitives. The set +-- which holds weight animation for multiple geometric primitives (although in +this example _blendShapeWeights_ is not animated). The set of blend shape targets specified by the _skel:blendShapeTargets_ rel identifies, for each mapped blend shape token in _skel:blendShapes_, the target UsdSkelBlendShape primitive to which animation data should apply. -From the example above, shape `` is using shapes `['B', 'A']` (in that +From the example above, `` is using shapes mapped to `['B', 'A']` (in that order). First we map the _blendShapeWeights_ from the ordering specified by `` to the ordering on ``, which gives local weight values of [0.75,1.0]. For each token in ``, From ef23915e6054006db35c958765112718c57e0343 Mon Sep 17 00:00:00 2001 From: clach Date: Thu, 3 Aug 2023 14:39:57 -0700 Subject: [PATCH 146/352] Rollback change 2286847. Fixes #1683 (Internal change: 2288024) --- .../plugin/usdShaders/shaders/UsdPrimvarReader_float3.osl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pxr/usdImaging/plugin/usdShaders/shaders/UsdPrimvarReader_float3.osl b/pxr/usdImaging/plugin/usdShaders/shaders/UsdPrimvarReader_float3.osl index dd105b5fcb..fc21401ea1 100644 --- a/pxr/usdImaging/plugin/usdShaders/shaders/UsdPrimvarReader_float3.osl +++ b/pxr/usdImaging/plugin/usdShaders/shaders/UsdPrimvarReader_float3.osl @@ -47,7 +47,8 @@ shader UsdPrimvarReader_float3 color fallback = color(0.0) [[ - string help = "return value if primvar not found." + string help = "return value if primvar not found.", + string role = "none" ]], output color result = 0.0 From 4d6d5bd116e365a9b211dc42915f82f6b8304dda Mon Sep 17 00:00:00 2001 From: unhyperbolic Date: Thu, 3 Aug 2023 14:40:11 -0700 Subject: [PATCH 147/352] Adding HdMakeStaticCopy and using it in UsdImaging_NiInstanceAggregationSceneIndex. (Internal change: 2288534) --- pxr/imaging/hd/retainedDataSource.cpp | 58 +++++++++++++++++++ pxr/imaging/hd/retainedDataSource.h | 12 ++++ .../niInstanceAggregationSceneIndex.cpp | 40 +------------ 3 files changed, 72 insertions(+), 38 deletions(-) diff --git a/pxr/imaging/hd/retainedDataSource.cpp b/pxr/imaging/hd/retainedDataSource.cpp index 60ff09bf58..0d6147c7f5 100644 --- a/pxr/imaging/hd/retainedDataSource.cpp +++ b/pxr/imaging/hd/retainedDataSource.cpp @@ -421,4 +421,62 @@ HdRetainedTypedSampledDataSource::New(const bool &value) } } +static +HdSampledDataSourceHandle +_MakeStaticCopy(HdSampledDataSourceHandle const &ds) +{ + return HdCreateTypedRetainedDataSource(ds->GetValue(0.0f)); +} + +static +HdVectorDataSourceHandle +_MakeStaticCopy(HdVectorDataSourceHandle const &ds) +{ + const size_t n = ds->GetNumElements(); + std::vector values; + values.reserve(n); + for (size_t i = 0; i < n; ++i) { + values.push_back(ds->GetElement(i)); + } + return HdRetainedSmallVectorDataSource::New(n, values.data()); +} + +HdContainerDataSourceHandle +HdMakeStaticCopy(HdContainerDataSourceHandle const &ds) +{ + if (!ds) { + return nullptr; + } + const TfTokenVector names = ds->GetNames(); + std::vector items; + items.reserve(names.size()); + for (const TfToken &name : names) { + items.push_back(HdMakeStaticCopy(ds->Get(name))); + } + return HdRetainedContainerDataSource::New( + names.size(), names.data(), items.data()); +} + +HdDataSourceBaseHandle +HdMakeStaticCopy(HdDataSourceBaseHandle const &ds) +{ + if (!ds) { + return nullptr; + } + if (HdContainerDataSourceHandle const containerDs = + HdContainerDataSource::Cast(ds)) { + return HdMakeStaticCopy(containerDs); + } + if (HdVectorDataSourceHandle const vectorDs = + HdVectorDataSource::Cast(ds)) { + return _MakeStaticCopy(vectorDs); + } + if (HdSampledDataSourceHandle const sampledDs = + HdSampledDataSource::Cast(ds)) { + return _MakeStaticCopy(sampledDs); + } + TF_CODING_ERROR("Unsupported data source type"); + return nullptr; +} + PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/imaging/hd/retainedDataSource.h b/pxr/imaging/hd/retainedDataSource.h index 6c91a2ec10..d39cf2273a 100644 --- a/pxr/imaging/hd/retainedDataSource.h +++ b/pxr/imaging/hd/retainedDataSource.h @@ -376,6 +376,18 @@ HD_API HdSampledDataSourceHandle HdCreateTypedRetainedDataSource(VtValue const &v); +/// Attempt to make a copy of the given data source using the sample at +/// time 0.0f if it or a descendant data source is sampled. +HD_API +HdDataSourceBaseHandle +HdMakeStaticCopy(HdDataSourceBaseHandle const &ds); + +/// Attempt to make a copy of the given container data source using the sample +/// at time 0.0f if a descendant data source is sampled. +HD_API +HdContainerDataSourceHandle +HdMakeStaticCopy(HdContainerDataSourceHandle const &ds); + PXR_NAMESPACE_CLOSE_SCOPE #endif // PXR_IMAGING_HD_RETAINEDDATASOURCE_H diff --git a/pxr/usdImaging/usdImaging/niInstanceAggregationSceneIndex.cpp b/pxr/usdImaging/usdImaging/niInstanceAggregationSceneIndex.cpp index 687e5cf5bc..521d01ac6f 100644 --- a/pxr/usdImaging/usdImaging/niInstanceAggregationSceneIndex.cpp +++ b/pxr/usdImaging/usdImaging/niInstanceAggregationSceneIndex.cpp @@ -895,41 +895,6 @@ _GetPrototypeRoot(HdContainerDataSourceHandle const &primSource) return result[0]; } -// We should implement a generic function to deep copy a data source -// and use it here. -HdDataSourceBaseHandle -_MakeCopy(HdDataSourceBaseHandle const &ds) -{ - if (!ds) { - return nullptr; - } - if (HdContainerDataSourceHandle const container = - HdContainerDataSource::Cast(ds)) { - TfTokenVector names = container->GetNames(); - std::vector items; - items.reserve(names.size()); - for (const TfToken &name : names) { - items.push_back(_MakeCopy(container->Get(name))); - } - return HdRetainedContainerDataSource::New( - names.size(), names.data(), items.data()); - } - if (HdPathDataSourceHandle const pathDs = - HdPathDataSource::Cast(ds)) { - return HdRetainedTypedSampledDataSource::New( - pathDs->GetTypedValue(0.0f)); - } - if (HdTokenDataSourceHandle const tokenDs = - HdTokenDataSource::Cast(ds)) { - return HdRetainedTypedSampledDataSource::New( - tokenDs->GetTypedValue(0.0f)); - } - - TF_CODING_ERROR("Unknown data source type"); - - return nullptr; -} - HdContainerDataSourceHandle _MakeBindingCopy(HdContainerDataSourceHandle const &primSource) { @@ -940,10 +905,9 @@ _MakeBindingCopy(HdContainerDataSourceHandle const &primSource) return HdRetainedContainerDataSource::New( HdMaterialBindingsSchema::GetSchemaToken(), - _MakeCopy(materialBindingsSchema.GetContainer()), + HdMakeStaticCopy(materialBindingsSchema.GetContainer()), HdPurposeSchema::GetSchemaToken(), - _MakeCopy(purposeSchema.GetContainer())); - + HdMakeStaticCopy(purposeSchema.GetContainer())); } struct _InstanceInfo { From 7916f95481bdebb8a80b7ff3b922ca4b011a0791 Mon Sep 17 00:00:00 2001 From: gitamohr Date: Thu, 3 Aug 2023 14:40:30 -0700 Subject: [PATCH 148/352] tf: In newer python versions, Py_Exit() does Py_FinalizeEx() before calling exit(). That means that any static destructors that try to invoke python will blow up. We have a couple of fixes in this code already due to external reports, but this one was missed. (Internal change: 2288600) --- pxr/base/tf/pyIdentity.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pxr/base/tf/pyIdentity.cpp b/pxr/base/tf/pyIdentity.cpp index 20277bc898..8e68f64ada 100644 --- a/pxr/base/tf/pyIdentity.cpp +++ b/pxr/base/tf/pyIdentity.cpp @@ -152,16 +152,13 @@ void Tf_PyIdHandle::Acquire() const { PyObject * Tf_PyIdHandle::Ptr() const { if (_weakRef) { - TfPyLock lock; + TfPyLock lock; return PyWeakref_GetObject(_weakRef); } return 0; } - - - typedef TfHashMap _IdentityMap; static _IdentityMap& _GetIdentityMap() @@ -172,6 +169,10 @@ static _IdentityMap& _GetIdentityMap() static void _WeakBaseDied(void const *key) { + // Python may be already shut down (like in exit()). If so, do nothing. + if (!Py_IsInitialized()) { + return; + } // Erase python identity. Tf_PyIdentityHelper::Erase(key); }; From 04786240f90ababeb203349fa910f9e5f3e81d92 Mon Sep 17 00:00:00 2001 From: gitamohr Date: Thu, 3 Aug 2023 14:40:37 -0700 Subject: [PATCH 149/352] usd: Use correct integer compression working space size when decompressing. Fixes #2435 (Internal change: 2289002) --- pxr/usd/usd/integerCoding.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pxr/usd/usd/integerCoding.cpp b/pxr/usd/usd/integerCoding.cpp index 8aa481c851..28716aac76 100644 --- a/pxr/usd/usd/integerCoding.cpp +++ b/pxr/usd/usd/integerCoding.cpp @@ -385,13 +385,13 @@ _CompressIntegers(Int const *begin, size_t numInts, char *output) encodeBuffer.get(), output, encodedSize); } -template +template size_t _DecompressIntegers(char const *compressed, size_t compressedSize, Int *ints, size_t numInts, char *workingSpace) { // Working space. size_t workingSpaceSize = - Usd_IntegerCompression::GetDecompressionWorkingSpaceSize(numInts); + Compression::GetDecompressionWorkingSpaceSize(numInts); std::unique_ptr tmpSpace; if (!workingSpace) { tmpSpace.reset(new char[workingSpaceSize]); @@ -445,8 +445,8 @@ Usd_IntegerCompression::DecompressFromBuffer( char const *compressed, size_t compressedSize, int32_t *ints, size_t numInts, char *workingSpace) { - return _DecompressIntegers(compressed, compressedSize, - ints, numInts, workingSpace); + return _DecompressIntegers( + compressed, compressedSize, ints, numInts, workingSpace); } size_t @@ -454,8 +454,8 @@ Usd_IntegerCompression::DecompressFromBuffer( char const *compressed, size_t compressedSize, uint32_t *ints, size_t numInts, char *workingSpace) { - return _DecompressIntegers(compressed, compressedSize, - ints, numInts, workingSpace); + return _DecompressIntegers( + compressed, compressedSize, ints, numInts, workingSpace); } //////////////////////////////////////////////////////////////////////// @@ -493,8 +493,8 @@ Usd_IntegerCompression64::DecompressFromBuffer( char const *compressed, size_t compressedSize, int64_t *ints, size_t numInts, char *workingSpace) { - return _DecompressIntegers(compressed, compressedSize, - ints, numInts, workingSpace); + return _DecompressIntegers( + compressed, compressedSize, ints, numInts, workingSpace); } size_t @@ -502,8 +502,8 @@ Usd_IntegerCompression64::DecompressFromBuffer( char const *compressed, size_t compressedSize, uint64_t *ints, size_t numInts, char *workingSpace) { - return _DecompressIntegers(compressed, compressedSize, - ints, numInts, workingSpace); + return _DecompressIntegers( + compressed, compressedSize, ints, numInts, workingSpace); } PXR_NAMESPACE_CLOSE_SCOPE From 54e70c1904e7dc51470cf7ef318b7cf5ccfcc6fb Mon Sep 17 00:00:00 2001 From: unhyperbolic Date: Thu, 3 Aug 2023 14:40:42 -0700 Subject: [PATCH 150/352] UsdImaging: handling UsdGeomModelAPI in a API adapter. Note: also setting applyDrawMode to true based on the prim kind metadata when the prim is not a UsdGeomModelAPI. (Internal change: 2289007) --- pxr/imaging/hd/materialBindingsSchema.cpp | 5 +- pxr/usdImaging/usdImaging/CMakeLists.txt | 2 + pxr/usdImaging/usdImaging/dataSourcePrim.cpp | 367 +++++------------- pxr/usdImaging/usdImaging/dataSourcePrim.h | 71 +--- .../usdImaging/extentResolvingSceneIndex.cpp | 69 +--- .../usdImaging/extentResolvingSceneIndex.h | 2 +- .../usdImaging/extentsHintSchema.cpp | 82 ++++ pxr/usdImaging/usdImaging/extentsHintSchema.h | 76 ++++ .../usdImaging/geomModelAPIAdapter.cpp | 112 ++++++ .../usdImaging/geomModelAPIAdapter.h | 55 +++ pxr/usdImaging/usdImaging/plugInfo.json | 7 + pxr/usdImaging/usdImaging/tokens.h | 3 +- 12 files changed, 461 insertions(+), 390 deletions(-) create mode 100644 pxr/usdImaging/usdImaging/extentsHintSchema.cpp create mode 100644 pxr/usdImaging/usdImaging/extentsHintSchema.h create mode 100644 pxr/usdImaging/usdImaging/geomModelAPIAdapter.cpp create mode 100644 pxr/usdImaging/usdImaging/geomModelAPIAdapter.h diff --git a/pxr/imaging/hd/materialBindingsSchema.cpp b/pxr/imaging/hd/materialBindingsSchema.cpp index 27d1a38ed2..13f967dd5c 100644 --- a/pxr/imaging/hd/materialBindingsSchema.cpp +++ b/pxr/imaging/hd/materialBindingsSchema.cpp @@ -31,9 +31,6 @@ #include "pxr/imaging/hd/materialBindingsSchema.h" #include "pxr/imaging/hd/retainedDataSource.h" -#include "pxr/base/trace/trace.h" - - PXR_NAMESPACE_OPEN_SCOPE TF_DEFINE_PUBLIC_TOKENS(HdMaterialBindingsSchemaTokens, @@ -98,4 +95,4 @@ HdMaterialBindingsSchema::GetDefaultLocator() ); return locator; } -PXR_NAMESPACE_CLOSE_SCOPE \ No newline at end of file +PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/usdImaging/usdImaging/CMakeLists.txt b/pxr/usdImaging/usdImaging/CMakeLists.txt index 9504f3ad94..9a41348f88 100644 --- a/pxr/usdImaging/usdImaging/CMakeLists.txt +++ b/pxr/usdImaging/usdImaging/CMakeLists.txt @@ -53,6 +53,7 @@ pxr_library(usdImaging drawModeAdapter drawModeSceneIndex extentResolvingSceneIndex + extentsHintSchema indexProxy materialParamUtils modelSchema @@ -80,6 +81,7 @@ pxr_library(usdImaging flattenedDataSourceProviders flattenedModelDataSourceProvider geometryLightAdapter + geomModelAPIAdapter gprimAdapter hermiteCurvesAdapter implicitSurfaceMeshUtils diff --git a/pxr/usdImaging/usdImaging/dataSourcePrim.cpp b/pxr/usdImaging/usdImaging/dataSourcePrim.cpp index efbe2a36c0..238903e7a4 100644 --- a/pxr/usdImaging/usdImaging/dataSourcePrim.cpp +++ b/pxr/usdImaging/usdImaging/dataSourcePrim.cpp @@ -25,6 +25,7 @@ #include "pxr/usdImaging/usdImaging/dataSourceAttribute.h" #include "pxr/usdImaging/usdImaging/dataSourcePrimvars.h" #include "pxr/usdImaging/usdImaging/dataSourceUsdPrimInfo.h" +#include "pxr/usdImaging/usdImaging/extentsHintSchema.h" #include "pxr/usdImaging/usdImaging/modelSchema.h" #include "pxr/usdImaging/usdImaging/tokens.h" #include "pxr/usdImaging/usdImaging/usdPrimInfoSchema.h" @@ -38,9 +39,10 @@ #include "pxr/imaging/hd/primvarsSchema.h" #include "pxr/imaging/hd/tokens.h" -#include "pxr/usd/usd/modelAPI.h" #include "pxr/usd/kind/registry.h" +#include "pxr/usd/usd/modelAPI.h" #include "pxr/usd/usdGeom/primvarsAPI.h" +#include "pxr/usd/usdGeom/modelAPI.h" PXR_NAMESPACE_OPEN_SCOPE @@ -239,15 +241,37 @@ UsdImagingDataSourceExtent::Get(const TfToken &name) // ---------------------------------------------------------------------------- +static +TfTokenVector _UsdToHdPurposes(const TfTokenVector &v) +{ + TfTokenVector result; + for (const TfToken &usdPurpose : v) { + if (usdPurpose == UsdGeomTokens->default_) { + result.push_back(HdTokens->geometry); + } else { + result.push_back(usdPurpose); + } + } + return result; +} + +static +const TfTokenVector &_OrderedPurposes() +{ + static const TfTokenVector result = + _UsdToHdPurposes(UsdGeomImageable::GetOrderedPurposeTokens()); + return result; +} + UsdImagingDataSourceExtentsHint::UsdImagingDataSourceExtentsHint( const UsdAttributeQuery &extentQuery, const SdfPath &sceneIndexPath, const UsdImagingDataSourceStageGlobals &stageGlobals) { if (extentQuery.ValueMightBeTimeVarying()) { - static const HdDataSourceLocator locator( - UsdImagingTokens->extentsHint); - stageGlobals.FlagAsTimeVarying(sceneIndexPath, locator); + stageGlobals.FlagAsTimeVarying( + sceneIndexPath, + UsdImagingExtentsHintSchema::GetDefaultLocator()); } _attrPath = extentQuery.GetAttribute().GetPath(); @@ -255,33 +279,49 @@ UsdImagingDataSourceExtentsHint::UsdImagingDataSourceExtentsHint( UsdImagingDataSourceAttributeNew(extentQuery, stageGlobals)); } -size_t -UsdImagingDataSourceExtentsHint::GetNumElements() +TfTokenVector +UsdImagingDataSourceExtentsHint::GetNames() { if (!_extentDs) { return {}; } - return _extentDs->GetTypedValue(0.0f).size() / 2; + const TfTokenVector &orderedPurposes = _OrderedPurposes(); + + const size_t n0 = _extentDs->GetTypedValue(0.0f).size() / 2; + const size_t n1 = orderedPurposes.size(); + const size_t n = std::min(n0, n1); + + return TfTokenVector(orderedPurposes.begin(), orderedPurposes.begin() + n); } HdDataSourceBaseHandle -UsdImagingDataSourceExtentsHint::GetElement(const size_t element) +UsdImagingDataSourceExtentsHint::Get(const TfToken &name) { - // If the extents attr hasn't been defined, this prim has no extents. if (!_extentDs) { return nullptr; } - return - HdExtentSchema::Builder() - .SetMin( - UsdImagingDataSourceExtentCoordinate::New( - _extentDs, _attrPath, 2 * element)) - .SetMax( - UsdImagingDataSourceExtentCoordinate::New( - _extentDs, _attrPath, 2 * element + 1)) - .Build(); + const TfTokenVector &orderedPurposes = _OrderedPurposes(); + + const size_t n0 = _extentDs->GetTypedValue(0.0f).size() / 2; + const size_t n1 = orderedPurposes.size(); + const size_t n = std::min(n0, n1); + + for (size_t i = 0; i < n; i++) { + if (name == orderedPurposes[i]) { + return + HdExtentSchema::Builder() + .SetMin( + UsdImagingDataSourceExtentCoordinate::New( + _extentDs, _attrPath, 2 * i)) + .SetMax( + UsdImagingDataSourceExtentCoordinate::New( + _extentDs, _attrPath, 2 * i + 1)) + .Build(); + } + } + return nullptr; } // ---------------------------------------------------------------------------- @@ -416,234 +456,6 @@ UsdImagingDataSourceXform::Get(const TfToken &name) return nullptr; } - -// ---------------------------------------------------------------------------- - -UsdImagingDataSourceModel::UsdImagingDataSourceModel( - const UsdGeomModelAPI &model, - const SdfPath &sceneIndexPath, - const UsdImagingDataSourceStageGlobals &stageGlobals) - : _model(model) - , _sceneIndexPath(sceneIndexPath) - , _stageGlobals(stageGlobals) -{ -} - -TfTokenVector -UsdImagingDataSourceModel::GetNames() -{ - return { - UsdImagingModelSchemaTokens->drawMode, - UsdImagingModelSchemaTokens->applyDrawMode, - UsdImagingModelSchemaTokens->drawModeColor, - UsdImagingModelSchemaTokens->cardGeometry, - UsdImagingModelSchemaTokens->cardTextureXPos, - UsdImagingModelSchemaTokens->cardTextureYPos, - UsdImagingModelSchemaTokens->cardTextureZPos, - UsdImagingModelSchemaTokens->cardTextureXNeg, - UsdImagingModelSchemaTokens->cardTextureYNeg, - UsdImagingModelSchemaTokens->cardTextureZNeg - }; -} - -HdDataSourceBaseHandle -UsdImagingDataSourceModel::Get(const TfToken &name) -{ - if (name == UsdImagingModelSchemaTokens->drawMode) { - static const HdDataSourceLocator locator = - UsdImagingModelSchema::GetDefaultLocator().Append( - UsdImagingModelSchemaTokens->drawMode); - return UsdImagingDataSourceAttribute::New( - _model.GetModelDrawModeAttr(), - _stageGlobals, - _sceneIndexPath, - locator); - } - if (name == UsdImagingModelSchemaTokens->applyDrawMode) { - UsdPrim prim = _model.GetPrim(); - if (prim.IsModel()) { - if (UsdModelAPI(prim).IsKind(KindTokens->component)) { - return HdRetainedTypedSampledDataSource::New(true); - } - } - - static const HdDataSourceLocator locator = - UsdImagingModelSchema::GetDefaultLocator().Append( - UsdImagingModelSchemaTokens->applyDrawMode); - return UsdImagingDataSourceAttribute::New( - _model.GetModelApplyDrawModeAttr(), - _stageGlobals, - _sceneIndexPath, - locator); - } - if (name == UsdImagingModelSchemaTokens->drawModeColor) { - static const HdDataSourceLocator locator = - UsdImagingModelSchema::GetDefaultLocator().Append( - UsdImagingModelSchemaTokens->drawModeColor); - return UsdImagingDataSourceAttribute::New( - _model.GetModelDrawModeColorAttr(), - _stageGlobals, - _sceneIndexPath, - locator); - } - if (name == UsdImagingModelSchemaTokens->cardGeometry) { - static const HdDataSourceLocator locator = - UsdImagingModelSchema::GetDefaultLocator().Append( - UsdImagingModelSchemaTokens->cardGeometry); - return UsdImagingDataSourceAttribute::New( - _model.GetModelCardGeometryAttr(), - _stageGlobals, - _sceneIndexPath, - locator); - } - if (name == UsdImagingModelSchemaTokens->cardTextureXPos) { - static const HdDataSourceLocator locator = - UsdImagingModelSchema::GetDefaultLocator().Append( - UsdImagingModelSchemaTokens->cardTextureXPos); - return UsdImagingDataSourceAttribute::New( - _model.GetModelCardTextureXPosAttr(), - _stageGlobals, - _sceneIndexPath, - locator); - } - if (name == UsdImagingModelSchemaTokens->cardTextureYPos) { - static const HdDataSourceLocator locator = - UsdImagingModelSchema::GetDefaultLocator().Append( - UsdImagingModelSchemaTokens->cardTextureYPos); - return UsdImagingDataSourceAttribute::New( - _model.GetModelCardTextureYPosAttr(), - _stageGlobals, - _sceneIndexPath, - locator); - } - if (name == UsdImagingModelSchemaTokens->cardTextureZPos) { - static const HdDataSourceLocator locator = - UsdImagingModelSchema::GetDefaultLocator().Append( - UsdImagingModelSchemaTokens->cardTextureZPos); - return UsdImagingDataSourceAttribute::New( - _model.GetModelCardTextureZPosAttr(), - _stageGlobals, - _sceneIndexPath, - locator); - } - if (name == UsdImagingModelSchemaTokens->cardTextureXNeg) { - static const HdDataSourceLocator locator = - UsdImagingModelSchema::GetDefaultLocator().Append( - UsdImagingModelSchemaTokens->cardTextureXNeg); - return UsdImagingDataSourceAttribute::New( - _model.GetModelCardTextureXNegAttr(), - _stageGlobals, - _sceneIndexPath, - locator); - } - if (name == UsdImagingModelSchemaTokens->cardTextureYNeg) { - static const HdDataSourceLocator locator = - UsdImagingModelSchema::GetDefaultLocator().Append( - UsdImagingModelSchemaTokens->cardTextureYNeg); - return UsdImagingDataSourceAttribute::New( - _model.GetModelCardTextureYNegAttr(), - _stageGlobals, - _sceneIndexPath, - locator); - } - if (name == UsdImagingModelSchemaTokens->cardTextureZNeg) { - static const HdDataSourceLocator locator = - UsdImagingModelSchema::GetDefaultLocator().Append( - UsdImagingModelSchemaTokens->cardTextureZNeg); - return UsdImagingDataSourceAttribute::New( - _model.GetModelCardTextureZNegAttr(), - _stageGlobals, - _sceneIndexPath, - locator); - } - - return nullptr; -} - -/* static */ HdDataSourceLocatorSet -UsdImagingDataSourceModel::Invalidate( - UsdPrim const& prim, - const TfToken &subprim, - const TfTokenVector &properties, - const UsdImagingPropertyInvalidationType invalidationType) -{ - HdDataSourceLocatorSet locators; - - for (const TfToken &propertyName : properties) { - if (propertyName == UsdGeomTokens->modelDrawMode) { - static const HdDataSourceLocator locator = - UsdImagingModelSchema::GetDefaultLocator().Append( - UsdImagingModelSchemaTokens->drawMode); - locators.insert(locator); - } - - if (propertyName == UsdGeomTokens->modelApplyDrawMode) { - static const HdDataSourceLocator locator = - UsdImagingModelSchema::GetDefaultLocator().Append( - UsdImagingModelSchemaTokens->applyDrawMode); - locators.insert(locator); - } - - if (propertyName == UsdGeomTokens->modelDrawModeColor) { - static const HdDataSourceLocator locator = - UsdImagingModelSchema::GetDefaultLocator().Append( - UsdImagingModelSchemaTokens->drawModeColor); - locators.insert(locator); - } - - if (propertyName == UsdGeomTokens->modelCardGeometry) { - static const HdDataSourceLocator locator = - UsdImagingModelSchema::GetDefaultLocator().Append( - UsdImagingModelSchemaTokens->cardGeometry); - locators.insert(locator); - } - - if (propertyName == UsdGeomTokens->modelCardTextureXPos) { - static const HdDataSourceLocator locator = - UsdImagingModelSchema::GetDefaultLocator().Append( - UsdImagingModelSchemaTokens->cardTextureXPos); - locators.insert(locator); - } - - if (propertyName == UsdGeomTokens->modelCardTextureXNeg) { - static const HdDataSourceLocator locator = - UsdImagingModelSchema::GetDefaultLocator().Append( - UsdImagingModelSchemaTokens->cardTextureXNeg); - locators.insert(locator); - } - - if (propertyName == UsdGeomTokens->modelCardTextureYPos) { - static const HdDataSourceLocator locator = - UsdImagingModelSchema::GetDefaultLocator().Append( - UsdImagingModelSchemaTokens->cardTextureYPos); - locators.insert(locator); - } - - if (propertyName == UsdGeomTokens->modelCardTextureYNeg) { - static const HdDataSourceLocator locator = - UsdImagingModelSchema::GetDefaultLocator().Append( - UsdImagingModelSchemaTokens->cardTextureYNeg); - locators.insert(locator); - } - - if (propertyName == UsdGeomTokens->modelCardTextureZPos) { - static const HdDataSourceLocator locator = - UsdImagingModelSchema::GetDefaultLocator().Append( - UsdImagingModelSchemaTokens->cardTextureZPos); - locators.insert(locator); - } - - if (propertyName == UsdGeomTokens->modelCardTextureZNeg) { - static const HdDataSourceLocator locator = - UsdImagingModelSchema::GetDefaultLocator().Append( - UsdImagingModelSchemaTokens->cardTextureZNeg); - locators.insert(locator); - } - } - - return locators; -} - // ---------------------------------------------------------------------------- UsdImagingDataSourcePrimOrigin::UsdImagingDataSourcePrimOrigin( @@ -743,13 +555,17 @@ UsdImagingDataSourcePrim::GetNames() vec.push_back(HdExtentSchema::GetSchemaToken()); } - if (_GetUsdPrim().HasAPI()) { - vec.push_back(UsdImagingModelSchema::GetSchemaToken()); - } - if (_GetUsdPrim().IsModel()) { - vec.push_back(UsdImagingTokens->extentsHint); + if (UsdModelAPI(_GetUsdPrim()).IsKind(KindTokens->component)) { + vec.push_back(UsdImagingModelSchema::GetSchemaToken()); + } } + + if (UsdAttributeQuery(UsdGeomModelAPI(_GetUsdPrim()).GetExtentsHintAttr()) + .HasAuthoredValue()) { + vec.push_back(UsdImagingExtentsHintSchema::GetSchemaToken()); + } + vec.push_back(UsdImagingUsdPrimInfoSchema::GetSchemaToken()); vec.push_back(HdPrimOriginSchema::GetSchemaToken()); @@ -827,27 +643,32 @@ UsdImagingDataSourcePrim::Get(const TfToken &name) } else { return nullptr; } - } else if (name == UsdImagingModelSchema::GetSchemaToken()) { - UsdGeomModelAPI model(_GetUsdPrim()); - if (!model) { - return nullptr; - } - return UsdImagingDataSourceModel::New( - model, _sceneIndexPath, _GetStageGlobals()); - } else if (name == UsdImagingTokens->extentsHint) { - if (!_GetUsdPrim().IsModel()) { + } else if (name == UsdImagingExtentsHintSchema::GetSchemaToken()) { + // For compatibility with UsdImagingDelegate, we read the extentsHint + // even if the prim is not a Usd model or UsdGeomModelAPI. + UsdAttributeQuery extentsHintQuery( + UsdGeomModelAPI(_GetUsdPrim()).GetExtentsHintAttr()); + if (extentsHintQuery.HasAuthoredValue()) { + return UsdImagingDataSourceExtentsHint::New( + extentsHintQuery, + _sceneIndexPath, + _GetStageGlobals()); + } else { return nullptr; } - - UsdGeomModelAPI model(_GetUsdPrim()); - UsdAttributeQuery extentsHintQuery(model.GetExtentsHintAttr()); - if (!extentsHintQuery.HasAuthoredValue()) { - return nullptr; + } else if (name == UsdImagingModelSchema::GetSchemaToken()) { + // We set applyDrawMode for kind = component prims even if the + // prim is not a UsdGeomModelAPI. + if (_GetUsdPrim().IsModel()) { + if (UsdModelAPI(_GetUsdPrim()).IsKind(KindTokens->component)) { + static HdDataSourceBaseHandle const applyDrawModeDs = + UsdImagingModelSchema::Builder() + .SetApplyDrawMode( + HdRetainedTypedSampledDataSource::New(true)) + .Build(); + return applyDrawModeDs; + } } - return UsdImagingDataSourceExtentsHint::New( - extentsHintQuery, - _sceneIndexPath, - _stageGlobals); } else if (name == UsdImagingUsdPrimInfoSchema::GetSchemaToken()) { return UsdImagingDataSourceUsdPrimInfo::New( _GetUsdPrim()); @@ -886,9 +707,7 @@ UsdImagingDataSourcePrim::Invalidate( } if (propertyName == UsdGeomTokens->extentsHint) { - static const HdDataSourceLocator locator( - UsdImagingTokens->extentsHint); - locators.insert(locator); + locators.insert(UsdImagingExtentsHintSchema::GetDefaultLocator()); } if (UsdGeomPrimvarsAPI::CanContainPropertyName(propertyName)) { @@ -904,10 +723,6 @@ UsdImagingDataSourcePrim::Invalidate( } } - locators.insert( - UsdImagingDataSourceModel::Invalidate( - prim, subprim, properties, invalidationType)); - return locators; } diff --git a/pxr/usdImaging/usdImaging/dataSourcePrim.h b/pxr/usdImaging/usdImaging/dataSourcePrim.h index 5f37e236c0..3105958591 100644 --- a/pxr/usdImaging/usdImaging/dataSourcePrim.h +++ b/pxr/usdImaging/usdImaging/dataSourcePrim.h @@ -31,7 +31,6 @@ #include "pxr/usd/usdGeom/xformable.h" #include "pxr/usd/usdGeom/boundable.h" -#include "pxr/usd/usdGeom/modelAPI.h" #include "pxr/usdImaging/usdImaging/api.h" #include "pxr/usdImaging/usdImaging/dataSourceStageGlobals.h" @@ -207,19 +206,24 @@ HD_DECLARE_DATASOURCE_HANDLES(UsdImagingDataSourceExtent); /// \class UsdImagingDataSourceExtentsHint /// -/// Data source representing extents hint of a model API prim. -class UsdImagingDataSourceExtentsHint : public HdVectorDataSource +/// Data source representing extents hint of a geom model API prim. +class UsdImagingDataSourceExtentsHint : public HdContainerDataSource { public: HD_DECLARE_DATASOURCE(UsdImagingDataSourceExtentsHint); - /// Returns number of vec3 pairs authored on extentsHint. + /// Returns names of (hydra) purposes for which we have extentsHint. /// - size_t GetNumElements() override; + /// extentsHint in usd is an array. The names are computed using + /// the lenth of this array, by truncating + /// UsdGeomImagable::GetOrderedPurposeTokens() (and translating + /// UsdGeomTokens->default_ to HdTokens->geometry). + /// + TfTokenVector GetNames() override; - /// Returns i-th pair of vec3 authored on extentsHint as - /// extent schema. - HdDataSourceBaseHandle GetElement(size_t element) override; + /// Takes the hydra name of a purpose and returns the corresponding + /// values from extentsHint as HdExtentSchema. + HdDataSourceBaseHandle Get(const TfToken &name) override; private: /// Use to construct a new UsdImagingDataSourceExtentsHint. @@ -243,7 +247,6 @@ class UsdImagingDataSourceExtentsHint : public HdVectorDataSource HD_DECLARE_DATASOURCE_HANDLES(UsdImagingDataSourceExtent); - // ---------------------------------------------------------------------------- /// \class UsdImagingDataSourceXformResetXformStack @@ -396,56 +399,6 @@ HD_DECLARE_DATASOURCE_HANDLES(UsdImagingDataSourceXform); // ---------------------------------------------------------------------------- -/// -/// \class UsdImagingDataSourceModel -/// -/// Data source representing model API for a USD prim. -/// -class UsdImagingDataSourceModel : public HdContainerDataSource -{ -public: - HD_DECLARE_DATASOURCE(UsdImagingDataSourceModel); - - /// Return attribute names of UsdImagingModelSchema. - /// - TfTokenVector GetNames() override; - - /// Returns data authored on USD prim (without resolving inherited) for - /// attribute names of UsdImagingModelSchema. - /// - HdDataSourceBaseHandle Get(const TfToken &name) override; - - USDIMAGING_API - static HdDataSourceLocatorSet Invalidate( - UsdPrim const& prim, - const TfToken &subprim, - const TfTokenVector &properties, - UsdImagingPropertyInvalidationType invalidationType); - -private: - /// C'tor. - /// - /// \p model is API schema from which this class can extract values from. - /// \p sceneIndexPath is the path of this object in the scene index. - /// \p stageGlobals represents the context object for the UsdStage with - /// which to evaluate this attribute data source. - /// - /// Note: client code calls this via static New(). - UsdImagingDataSourceModel( - const UsdGeomModelAPI &model, - const SdfPath &sceneIndexPath, - const UsdImagingDataSourceStageGlobals &stageGlobals); - -private: - UsdGeomModelAPI _model; - const SdfPath _sceneIndexPath; - const UsdImagingDataSourceStageGlobals &_stageGlobals; -}; - -HD_DECLARE_DATASOURCE_HANDLES(UsdImagingDataSourceModel); - -// ---------------------------------------------------------------------------- - /// /// \class UsdImagingDataSourcePrimOrigin /// diff --git a/pxr/usdImaging/usdImaging/extentResolvingSceneIndex.cpp b/pxr/usdImaging/usdImaging/extentResolvingSceneIndex.cpp index 66f3fb86d1..884e4c6e3c 100644 --- a/pxr/usdImaging/usdImaging/extentResolvingSceneIndex.cpp +++ b/pxr/usdImaging/usdImaging/extentResolvingSceneIndex.cpp @@ -23,12 +23,11 @@ #include "pxr/usdImaging/usdImaging/extentResolvingSceneIndex.h" -#include "pxr/usdImaging/usdImaging/tokens.h" -#include "pxr/usd/usdGeom/imageable.h" -#include "pxr/imaging/hd/extentSchema.h" +#include "pxr/usdImaging/usdImaging/extentsHintSchema.h" +#include "pxr/usdImaging/usdImaging/modelSchema.h" #include "pxr/imaging/hd/retainedDataSource.h" #include "pxr/imaging/hd/tokens.h" -#include "pxr/imaging/hd/vectorSchema.h" +#include "pxr/base/gf/range3d.h" PXR_NAMESPACE_OPEN_SCOPE @@ -68,42 +67,16 @@ _GetPurposes(HdContainerDataSourceHandle const &inputArgs) return result; } -std::vector -_GetExtentsHintIndices(const TfToken::HashSet &purposes) -{ - std::vector result; - - const TfTokenVector &orderedPurposes = - UsdGeomImageable::GetOrderedPurposeTokens(); - for (size_t i = 0; i < orderedPurposes.size(); ++i) { - const TfToken usdPurpose = orderedPurposes[i]; - const TfToken purpose = - usdPurpose == UsdGeomTokens->default_ - ? HdTokens->geometry - : usdPurpose; - if (purposes.find(purpose) != purposes.end()) { - result.push_back(i); - } - } - - return result; -} - struct _Info { _Info(HdContainerDataSourceHandle const &inputArgs) : purposes(_GetPurposes(inputArgs)) - , extentsHintIndices(_GetExtentsHintIndices(purposes)) { } /// When computing the bounding box, we only consider geometry /// with purposes being in this set. const TfToken::HashSet purposes; - - /// Indices into UsdGeomModelAPI's extentsHint corresponding to - /// the above purposes. - const std::vector extentsHintIndices; }; using _DirtyEntryPredicate = @@ -167,11 +140,9 @@ bool _ContainsExtentsHintWithoutExtent( const HdSceneIndexObserver::DirtiedPrimEntry &entry) { - static const HdDataSourceLocator extentsHintLocator( - UsdImagingTokens->extentsHint); - return - entry.dirtyLocators.Intersects(extentsHintLocator) && + entry.dirtyLocators.Intersects( + UsdImagingExtentsHintSchema::GetDefaultLocator()) && !entry.dirtyLocators.Contains(HdExtentSchema::GetDefaultLocator()); } @@ -226,31 +197,33 @@ class _PrimSource : public HdContainerDataSource { } - HdVectorDataSourceHandle _GetExtentsHints() const { - return HdVectorDataSource::Cast( - _primSource->Get(UsdImagingTokens->extentsHint)); + UsdImagingExtentsHintSchema _GetExtentsHints() const { + return + UsdImagingExtentsHintSchema::GetFromParent(_primSource); } HdDataSourceBaseHandle _GetExtentFromExtentsHint() const { - if (_info->extentsHintIndices.empty()) { + if (_info->purposes.empty()) { return nullptr; } - HdSchemaBasedVectorSchema vecSchema(_GetExtentsHints()); - if (!vecSchema) { + UsdImagingExtentsHintSchema extentsHintSchema = _GetExtentsHints(); + if (!extentsHintSchema) { return nullptr; } - - if (_info->extentsHintIndices.size() == 1) { - return vecSchema.GetElement( - _info->extentsHintIndices[0]).GetContainer(); + + if (_info->purposes.size() == 1) { + return + extentsHintSchema + .GetExtent(*_info->purposes.begin()) + .GetContainer(); } GfRange3d bbox; - for (const size_t extentsHintIndex : _info->extentsHintIndices) { - HdExtentSchema schema = vecSchema.GetElement(extentsHintIndex); - HdVec3dDataSourceHandle const minDs = schema.GetMin(); - HdVec3dDataSourceHandle const maxDs = schema.GetMax(); + for (const TfToken &purpose : _info->purposes) { + HdExtentSchema extentSchema = extentsHintSchema.GetExtent(purpose); + HdVec3dDataSourceHandle const minDs = extentSchema.GetMin(); + HdVec3dDataSourceHandle const maxDs = extentSchema.GetMax(); if (minDs && maxDs) { bbox.UnionWith( GfRange3d( diff --git a/pxr/usdImaging/usdImaging/extentResolvingSceneIndex.h b/pxr/usdImaging/usdImaging/extentResolvingSceneIndex.h index 75b0fe2e27..eda49bf51b 100644 --- a/pxr/usdImaging/usdImaging/extentResolvingSceneIndex.h +++ b/pxr/usdImaging/usdImaging/extentResolvingSceneIndex.h @@ -45,7 +45,7 @@ TF_DECLARE_REF_PTRS(UsdImagingExtentResolvingSceneIndex); /// \class UsdImagingExtentResolvingSceneIndex /// -/// A scene index that uses UsdGeoModelAPI's extentsHint if +/// A scene index that uses UsdGeomModelAPI's extentsHint if /// UsdGeomBoundable's extent has not been authored. /// /// TODO: The UsdStageSceneIndex should consult the diff --git a/pxr/usdImaging/usdImaging/extentsHintSchema.cpp b/pxr/usdImaging/usdImaging/extentsHintSchema.cpp new file mode 100644 index 0000000000..5b5ee012e6 --- /dev/null +++ b/pxr/usdImaging/usdImaging/extentsHintSchema.cpp @@ -0,0 +1,82 @@ +// +// Copyright 2023 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +//////////////////////////////////////////////////////////////////////// + +#include "pxr/usdImaging/usdImaging/extentsHintSchema.h" + +#include "pxr/imaging/hd/retainedDataSource.h" + +PXR_NAMESPACE_OPEN_SCOPE + +TF_DEFINE_PUBLIC_TOKENS(UsdImagingExtentsHintSchemaTokens, + USDIMAGINGEXTENTSHINT_SCHEMA_TOKENS); + + +HdExtentSchema +UsdImagingExtentsHintSchema::GetExtent(const TfToken &purpose) +{ + return HdExtentSchema(_GetTypedDataSource(purpose)); +} + +/*static*/ +HdContainerDataSourceHandle +UsdImagingExtentsHintSchema::BuildRetained( + const size_t count, + const TfToken * const names, + const HdDataSourceBaseHandle * const values) +{ + return HdRetainedContainerDataSource::New(count, names, values); +} + +/*static*/ +UsdImagingExtentsHintSchema +UsdImagingExtentsHintSchema::GetFromParent( + const HdContainerDataSourceHandle &fromParentContainer) +{ + return UsdImagingExtentsHintSchema( + fromParentContainer + ? HdContainerDataSource::Cast( + fromParentContainer->Get( + GetSchemaToken())) + : nullptr); +} + +/*static*/ +const TfToken & +UsdImagingExtentsHintSchema::GetSchemaToken() +{ + return UsdImagingExtentsHintSchemaTokens->extentsHint; +} + +/*static*/ +const HdDataSourceLocator & +UsdImagingExtentsHintSchema::GetDefaultLocator() +{ + static const HdDataSourceLocator locator( + UsdImagingExtentsHintSchemaTokens->extentsHint + ); + return locator; +} + +PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/usdImaging/usdImaging/extentsHintSchema.h b/pxr/usdImaging/usdImaging/extentsHintSchema.h new file mode 100644 index 0000000000..441f785a4f --- /dev/null +++ b/pxr/usdImaging/usdImaging/extentsHintSchema.h @@ -0,0 +1,76 @@ +// +// Copyright 2023 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +//////////////////////////////////////////////////////////////////////// + +#ifndef PXR_USD_IMAGING_USD_IMAGING_EXTENTS_HINT_SCHEMA_H +#define PXR_USD_IMAGING_USD_IMAGING_EXTENTS_HINT_SCHEMA_H + +#include "pxr/usdImaging/usdImaging/api.h" + +#include "pxr/imaging/hd/extentSchema.h" + +PXR_NAMESPACE_OPEN_SCOPE + +//----------------------------------------------------------------------------- + +#define USDIMAGINGEXTENTSHINT_SCHEMA_TOKENS \ + (extentsHint) + +TF_DECLARE_PUBLIC_TOKENS(UsdImagingExtentsHintSchemaTokens, USDIMAGING_API, + USDIMAGINGEXTENTSHINT_SCHEMA_TOKENS); + +class UsdImagingExtentsHintSchema : public HdSchema +{ +public: + UsdImagingExtentsHintSchema(HdContainerDataSourceHandle container) + : HdSchema(container) {} + + USDIMAGING_API + static HdContainerDataSourceHandle + BuildRetained( + size_t count, + const TfToken *names, + const HdDataSourceBaseHandle *values); + + USDIMAGING_API + HdExtentSchema GetExtent(const TfToken &purpose); + + USDIMAGING_API + static UsdImagingExtentsHintSchema GetFromParent( + const HdContainerDataSourceHandle &fromParentContainer); + + /// Returns a token where the container representing this schema is found in + /// a container by default. + USDIMAGING_API + static const TfToken &GetSchemaToken(); + + /// Returns an HdDataSourceLocator (relative to the prim-level data source) + /// where the container representing this schema is found by default. + USDIMAGING_API + static const HdDataSourceLocator &GetDefaultLocator(); +}; + +PXR_NAMESPACE_CLOSE_SCOPE + +#endif diff --git a/pxr/usdImaging/usdImaging/geomModelAPIAdapter.cpp b/pxr/usdImaging/usdImaging/geomModelAPIAdapter.cpp new file mode 100644 index 0000000000..f38ff941fc --- /dev/null +++ b/pxr/usdImaging/usdImaging/geomModelAPIAdapter.cpp @@ -0,0 +1,112 @@ +// +// Copyright 2023 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +#include "pxr/usdImaging/usdImaging/geomModelAPIAdapter.h" + +#include "pxr/usdImaging/usdImaging/dataSourceSchemaBased.h" +#include "pxr/usdImaging/usdImaging/modelSchema.h" +#include "pxr/usdImaging/usdImaging/tokens.h" +#include "pxr/imaging/hd/extentSchema.h" +#include "pxr/imaging/hd/overlayContainerDataSource.h" +#include "pxr/imaging/hd/tokens.h" +#include "pxr/imaging/hd/retainedDataSource.h" +#include "pxr/usd/usdGeom/modelAPI.h" + +PXR_NAMESPACE_OPEN_SCOPE + +namespace { + +struct _GeomModelTranslator +{ + static + TfToken + UsdAttributeNameToHdName(const TfToken &name) + { + const std::vector tokens = + SdfPath::TokenizeIdentifier(name.GetString()); + if (tokens.size() == 2 && tokens[0] == "model") { + return TfToken(tokens[1]); + } + return TfToken(); + } + + static + HdDataSourceLocator + GetContainerLocator() + { + return UsdImagingModelSchema::GetDefaultLocator(); + } +}; + +using _GeomModelDataSource = UsdImagingDataSourceSchemaBased< + UsdGeomModelAPI, std::tuple<>, _GeomModelTranslator>; + +} + +TF_REGISTRY_FUNCTION(TfType) +{ + using Adapter = UsdImagingGeomModelAPIAdapter; + TfType t = TfType::Define >(); + t.SetFactory< UsdImagingAPISchemaAdapterFactory >(); +} + +HdContainerDataSourceHandle +UsdImagingGeomModelAPIAdapter::GetImagingSubprimData( + UsdPrim const& prim, + TfToken const& subprim, + TfToken const& appliedInstanceName, + const UsdImagingDataSourceStageGlobals &stageGlobals) +{ + if (!subprim.IsEmpty() || !appliedInstanceName.IsEmpty()) { + return nullptr; + } + + if (subprim.IsEmpty()) { + UsdGeomModelAPI model(prim); + + return HdRetainedContainerDataSource::New( + UsdImagingModelSchema::GetSchemaToken(), + _GeomModelDataSource::New( + prim.GetPath(), model, stageGlobals)); + } + + return nullptr; +} + + +HdDataSourceLocatorSet +UsdImagingGeomModelAPIAdapter::InvalidateImagingSubprim( + UsdPrim const& prim, + TfToken const& subprim, + TfToken const& appliedInstanceName, + TfTokenVector const& properties, + const UsdImagingPropertyInvalidationType invalidationType) +{ + if (!subprim.IsEmpty() || !appliedInstanceName.IsEmpty()) { + return HdDataSourceLocatorSet(); + } + + return _GeomModelDataSource::Invalidate(subprim, properties); +} + +PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/usdImaging/usdImaging/geomModelAPIAdapter.h b/pxr/usdImaging/usdImaging/geomModelAPIAdapter.h new file mode 100644 index 0000000000..e80e6f720a --- /dev/null +++ b/pxr/usdImaging/usdImaging/geomModelAPIAdapter.h @@ -0,0 +1,55 @@ +// +// Copyright 2023 Pixar +// +// Licensed under the Apache License, Version 2.0 (the "Apache License") +// with the following modification; you may not use this file except in +// compliance with the Apache License and the following modification to it: +// Section 6. Trademarks. is deleted and replaced with: +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor +// and its affiliates, except as required to comply with Section 4(c) of +// the License and to reproduce the content of the NOTICE file. +// +// You may obtain a copy of the Apache License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the Apache License with the above modification is +// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the Apache License for the specific +// language governing permissions and limitations under the Apache License. +// +#ifndef PXR_USD_IMAGING_USD_IMAGING_GEOM_MODEL_API_ADAPTER_H +#define PXR_USD_IMAGING_USD_IMAGING_GEOM_MODEL_API_ADAPTER_H + +#include "pxr/usdImaging/usdImaging/apiSchemaAdapter.h" + +PXR_NAMESPACE_OPEN_SCOPE + +class UsdImagingGeomModelAPIAdapter : public UsdImagingAPISchemaAdapter +{ +public: + + using BaseAdapter = UsdImagingAPISchemaAdapter; + + USDIMAGING_API + HdContainerDataSourceHandle GetImagingSubprimData( + UsdPrim const& prim, + TfToken const& subprim, + TfToken const& appliedInstanceName, + const UsdImagingDataSourceStageGlobals &stageGlobals) override; + + USDIMAGING_API + HdDataSourceLocatorSet InvalidateImagingSubprim( + UsdPrim const& prim, + TfToken const& subprim, + TfToken const& appliedInstanceName, + TfTokenVector const& properties, + UsdImagingPropertyInvalidationType invalidationType) override; +}; + +PXR_NAMESPACE_CLOSE_SCOPE + +#endif diff --git a/pxr/usdImaging/usdImaging/plugInfo.json b/pxr/usdImaging/usdImaging/plugInfo.json index 78b2041659..8b1737c986 100644 --- a/pxr/usdImaging/usdImaging/plugInfo.json +++ b/pxr/usdImaging/usdImaging/plugInfo.json @@ -286,6 +286,13 @@ ], "isInternal": true, "primTypeName": "PluginLightFilter" + }, + "UsdImagingGeomModelAPIAdapter": { + "bases": [ + "UsdImagingAPISchemaAdapter" + ], + "isInternal": true, + "apiSchemaName": "GeomModelAPI" } } }, diff --git a/pxr/usdImaging/usdImaging/tokens.h b/pxr/usdImaging/usdImaging/tokens.h index 674f73b0c9..ab17837b04 100644 --- a/pxr/usdImaging/usdImaging/tokens.h +++ b/pxr/usdImaging/usdImaging/tokens.h @@ -59,8 +59,7 @@ PXR_NAMESPACE_OPEN_SCOPE (UsdPrimvarReader_float4)\ (UsdPrimvarReader_int) \ (UsdTransform2d) \ - ((stageSceneIndexRepopulate, "__usdStageSceneIndexRepopulate")) \ - (extentsHint) + ((stageSceneIndexRepopulate, "__usdStageSceneIndexRepopulate")) TF_DECLARE_PUBLIC_TOKENS( UsdImagingTokens, From b127739eb38d072cce6c1e465372a9df80b22e14 Mon Sep 17 00:00:00 2001 From: tcauchois Date: Thu, 3 Aug 2023 14:47:23 -0700 Subject: [PATCH 151/352] [Hio] Expand overview.dox. (Internal change: 2289053) --- pxr/imaging/hio/overview.dox | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/pxr/imaging/hio/overview.dox b/pxr/imaging/hio/overview.dox index 54f57fdab0..8083442edc 100644 --- a/pxr/imaging/hio/overview.dox +++ b/pxr/imaging/hio/overview.dox @@ -4,8 +4,29 @@ \mainpage Hio: Hydra Resource I/O \endif -Utility classes for loading resources used by Hydra. +This library contains utility classes for loading resources used by Hydra. -This library provides access to Pixar's shader container format, -glslfx, as well as support for loading image data and volume field data. +HioGlslfx provides interpretation of the "glslfx" file format, which is Pixar's +GPU shader container format. It supports composition of shader snippets as well +as specification of metadata that can be used for code generation purposes. + +HioImage provides a plugin-based image/texture-reading abstraction, and is used +by hdStorm for all image I/O. Hydra provides two implementations: HioStb_Image +and HioOIIO_Image. Stb is compiled by default, whereas the OIIO plugin is only +compiled when USD is built against OpenImageIO. + +Hydra integrations can include support for other image libraries by defining new +HioImage subclasses and adding appropriate plugin metadata to plugInfo.json; +hio/plugInfo.json contains the general idea. When Hydra is asked to load a +certain file format (image.FOO), it will return the HioImage base class for +which: +(1) FOO is listed in the "imageTypes" array; and +(2) in the case of multiple matches, the highest numerical value of precedence. + +Note that OpenImageIO has a higher precedence than Stb, meaning that for image +types that both plugins support, OpenImageIO will be used. Integration +authors will want to choose their own precedence values accordingly. + +HioFieldTextureData provides a similar plugin-based abstraction for adding +volume field readers, but does not include a precedence. */ From bc7a5e1d00b3fe93c2a9f6480a959b7d91ea4cb6 Mon Sep 17 00:00:00 2001 From: tcauchois Date: Thu, 3 Aug 2023 14:47:29 -0700 Subject: [PATCH 152/352] [Hio] Fix a typo in overview.dox. (Internal change: 2289054) --- pxr/imaging/hio/overview.dox | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pxr/imaging/hio/overview.dox b/pxr/imaging/hio/overview.dox index 8083442edc..60f65cd206 100644 --- a/pxr/imaging/hio/overview.dox +++ b/pxr/imaging/hio/overview.dox @@ -23,8 +23,8 @@ which: (1) FOO is listed in the "imageTypes" array; and (2) in the case of multiple matches, the highest numerical value of precedence. -Note that OpenImageIO has a higher precedence than Stb, meaning that for image -types that both plugins support, OpenImageIO will be used. Integration +Note that Stb has a higher precedence than OpenImageIO, meaning that for image +types that both plugins support, the Stb version will be used. Integration authors will want to choose their own precedence values accordingly. HioFieldTextureData provides a similar plugin-based abstraction for adding From d2f2aa1325d0e9395cf114df75e8c9f97fb6c22f Mon Sep 17 00:00:00 2001 From: sunyab Date: Thu, 3 Aug 2023 14:47:35 -0700 Subject: [PATCH 153/352] sdf: Add more types to variable expression language This change adds support for ints and bools to go with the existing support for strings, homogeneous lists containing those types, and a 'None' sentinel value. (Internal change: 2289055) --- .../sdf/testenv/testSdfVariableExpression.py | 187 ++++++++++- pxr/usd/sdf/variableExpression.cpp | 6 +- pxr/usd/sdf/variableExpression.h | 71 +++- pxr/usd/sdf/variableExpressionImpl.cpp | 212 +++++++++++- pxr/usd/sdf/variableExpressionImpl.h | 57 +++- pxr/usd/sdf/variableExpressionParser.cpp | 307 ++++++++++++++++-- pxr/usd/sdf/wrapVariableExpression.cpp | 9 +- 7 files changed, 803 insertions(+), 46 deletions(-) diff --git a/pxr/usd/sdf/testenv/testSdfVariableExpression.py b/pxr/usd/sdf/testenv/testSdfVariableExpression.py index 7b62d42b83..76c877e3d2 100644 --- a/pxr/usd/sdf/testenv/testSdfVariableExpression.py +++ b/pxr/usd/sdf/testenv/testSdfVariableExpression.py @@ -22,7 +22,7 @@ # KIND, either express or implied. See the Apache License for the specific # language governing permissions and limitations under the Apache License. -from pxr import Sdf +from pxr import Sdf, Vt import unittest class TestSdfVariableExpression(unittest.TestCase): @@ -87,7 +87,22 @@ def test_IsValidVariableType(self): IsValidVariableType = Sdf.VariableExpression.IsValidVariableType self.assertTrue(IsValidVariableType("string")) + self.assertTrue(IsValidVariableType(True)) + self.assertTrue(IsValidVariableType(None)) + + # Explicitly verify that both int and int64 are considered valid + # variable types, even though the result of evaluation will always + # be an int64. + self.assertTrue(IsValidVariableType(Vt.Int(123))) + self.assertTrue(IsValidVariableType(Vt.Int64(2**63-1))) + + self.assertTrue(IsValidVariableType(Vt.StringArray(['a', 'b']))) + self.assertTrue(IsValidVariableType(Vt.BoolArray([True, False]))) + self.assertTrue(IsValidVariableType(Vt.IntArray([123, 456]))) + self.assertTrue(IsValidVariableType(Vt.Int64Array([123, 456]))) + self.assertFalse(IsValidVariableType(1.23)) + self.assertFalse(IsValidVariableType(Vt.DoubleArray([1.23, 4.56]))) def test_VarExpressions(self): """Test variable expressions consisting of just a top-level @@ -100,6 +115,41 @@ def test_VarExpressions(self): expected="string", expectedUsedVars=["FOO"]) + self.assertEvaluates( + "`${FOO}`", {"FOO" : 42}, + expected=42, + expectedUsedVars=["FOO"]) + + self.assertEvaluates( + "`${FOO}`", {"FOO" : True}, + expected=True, + expectedUsedVars=["FOO"]) + + self.assertEvaluates( + "`${FOO}`", {"FOO" : None}, + expected=None, + expectedUsedVars=["FOO"]) + + self.assertEvaluates( + "`${FOO}`", {"FOO" : Vt.StringArray(['foo', 'bar'])}, + expected=['foo', 'bar'], + expectedUsedVars=["FOO"]) + + self.assertEvaluates( + "`${FOO}`", {"FOO" : Vt.IntArray([1, 2, 3])}, + expected=[1, 2, 3], + expectedUsedVars=["FOO"]) + + self.assertEvaluates( + "`${FOO}`", {"FOO" : Vt.Int64Array([1, 2, 3])}, + expected=[1, 2, 3], + expectedUsedVars=["FOO"]) + + self.assertEvaluates( + "`${FOO}`", {"FOO" : Vt.BoolArray([True, False])}, + expected=[True, False], + expectedUsedVars=["FOO"]) + # If no value is found for the specified var, we should # get an error. self.assertEvaluationErrors( @@ -156,6 +206,22 @@ def test_StringExpressions(self): expected="string_substitution_works", expectedUsedVars=["A", "B"]) + # 'None' is considered an empty string for substitution purposes. + self.assertEvaluates( + '''`'none_sub_${A}'`''', + {"A" : None}, + expected="none_sub_", + expectedUsedVars=["A"]) + + # Substitutions using other non-string types are disallowed. + self.assertEvaluationErrors( + '''`'bad_sub_${A}'`''', {"A" : 0}, + ["String value required for substituting variable 'A', got int."]) + + self.assertEvaluationErrors( + '''`'bad_sub_${A}'`''', {"A" : True}, + ["String value required for substituting variable 'A', got bool."]) + # No substitutions occur here since the '$' is escaped, # so \${A} and \${B} aren't recognized as subsitutions. self.assertEvaluates( @@ -174,12 +240,127 @@ def test_StringExpressions(self): self.assertInvalid('''`"unescaped_"quotes"_are_bad"`''') self.assertInvalid('''`'unescaped_'quotes'_are_bad'`''') - self.assertInvalid('`"bad_stage_var_${FOO"`') - self.assertInvalid('`"bad_stage_var_${FO-O}"`') + self.assertInvalid('`"bad_var_${FOO"`') + self.assertInvalid('`"bad_var_${FO-O}"`') self.assertInvalid("`'`") self.assertInvalid('`"`') + def test_IntegerExpressions(self): + """Test integer expressions.""" + self.assertEvaluates("`0`", {}, 0) + self.assertEvaluates("`-1`", {}, -1) + self.assertEvaluates("`1`", {}, 1) + + # Test that integer values within an int64's range are allowed + # and are invalid if they're outside that range. + self.assertEvaluates("`{}`".format(2**63-1), {}, 2**63-1) + self.assertInvalid("`{}`".format(2**63)) + + self.assertEvaluates("`{}`".format(-2**63), {}, -2**63) + self.assertInvalid("`{}`".format(-2**63-1)) + + self.assertInvalid("`42abc`") + + # Explicitly test that both int and int64 values in the expression + # variables dictionary are accepted during evaluation, even though + # the final result will always be an int64. + self.assertEvaluates("`${FOO}`", {"FOO" : Vt.Int(0)}, 0) + self.assertEvaluates("`${FOO}`", {"FOO" : Vt.Int64(2**63-1)}, 2**63-1) + + def test_BooleanExpressions(self): + """Test boolean expressions.""" + self.assertEvaluates("`True`", {}, True) + self.assertEvaluates("`true`", {}, True) + self.assertEvaluates("`False`", {}, False) + self.assertEvaluates("`false`", {}, False) + + self.assertInvalid("`Truee`") + self.assertInvalid("`truee`") + self.assertInvalid("`TRUE`") + + self.assertInvalid("`Falsee`") + self.assertInvalid("`falsee`") + self.assertInvalid("`FALSE`") + + def test_NoneExpressions(self): + """Test None expressions.""" + self.assertEvaluates("`None`", {}, None) + self.assertEvaluates("`none`", {}, None) + + self.assertInvalid("`Nonee`") + self.assertInvalid("`nonee`") + + def test_Lists(self): + """Test list expressions.""" + self.assertEvaluates("`[]`", {}, []) + + # Test list of integers. + self.assertEvaluates( + "`[1]`", {}, Vt.Int64Array([1])) + self.assertEvaluates( + "`[1, 2]`", {}, Vt.Int64Array([1, 2])) + self.assertEvaluates( + "`[1, 2, 3]`", {}, Vt.Int64Array([1, 2, 3])) + self.assertEvaluates( + "`[${FOO}, 2, 3]`", {'FOO' : 1}, Vt.Int64Array([1, 2, 3])) + self.assertEvaluates( + "`[1, ${FOO}, 3]`", {'FOO' : 2}, Vt.Int64Array([1, 2, 3])) + self.assertEvaluates( + "`[1, 2, ${FOO}]`", {'FOO' : 3}, Vt.Int64Array([1, 2, 3])) + + # Test list of strings. + self.assertEvaluates( + "`['a']`", {}, Vt.StringArray(['a'])) + self.assertEvaluates( + "`['a', 'b']`", {}, Vt.StringArray(['a', 'b'])) + self.assertEvaluates( + "`['a', 'b', 'c']`", {}, Vt.StringArray(['a', 'b', 'c'])) + self.assertEvaluates( + "`['${FOO}a', 'b', 'c']`", {'FOO' :'a'}, + Vt.StringArray(['aa', 'b', 'c'])) + self.assertEvaluates( + "`['a', '${FOO}b', 'c']`", {'FOO' :'b'}, + Vt.StringArray(['a', 'bb', 'c'])) + self.assertEvaluates( + "`['a', 'b', '${FOO}c']`", {'FOO' :'c'}, + Vt.StringArray(['a', 'b', 'cc'])) + + # Test list of variable substitutions. + self.assertEvaluates( + "`[${FOO}]`", {'FOO':'a'}, Vt.StringArray(['a'])) + self.assertEvaluates( + "`[${FOO}, ${BAR}]`", {'FOO':'a', 'BAR':'b'}, + Vt.StringArray(['a', 'b'])) + self.assertEvaluates( + "`[${FOO}, ${BAR}, ${BAZ}]`", + {'FOO':'a', 'BAR':'b', 'BAZ':'c'}, + Vt.StringArray(['a', 'b', 'c'])) + + # None values encountered in lists are dropped. + self.assertEvaluates("`[None]`", {}, []) + self.assertEvaluates("`[None, 2, 3]`", {}, [2, 3]) + self.assertEvaluates("`[1, ${FOO}, 3]`", {'FOO' : None}, [1, 3]) + + # Lists cannot contain other lists. + self.assertInvalid("`[[1, 2]]`") + self.assertEvaluationErrors( + "`[${L}]`", {'L': "`[]`"}, + ["Unexpected value of type list in list at element 0"]) + self.assertEvaluationErrors( + "`[${L}]`", {'L': Vt.IntArray([1,2]) }, + ["Unexpected value of type list in list at element 0"]) + + # Lists must contain elements of the same type. + self.assertEvaluationErrors( + "`[1, 'foo', False, ${L}]`", {'L': "`[]`"}, + ['Unexpected value of type string in list at element 1', + 'Unexpected value of type bool in list at element 2', + 'Unexpected value of type list in list at element 3']) + + self.assertInvalid("`[`") + self.assertInvalid("`[foo]`") + def test_NestedExpressions(self): """Test evaluating expressions with variable substitutions when the variables are expressions themselves.""" diff --git a/pxr/usd/sdf/variableExpression.cpp b/pxr/usd/sdf/variableExpression.cpp index 5b72efc8e6..d0cd77f9e7 100644 --- a/pxr/usd/sdf/variableExpression.cpp +++ b/pxr/usd/sdf/variableExpression.cpp @@ -59,7 +59,11 @@ bool SdfVariableExpression::IsValidVariableType(const VtValue& value) { using namespace Sdf_VariableExpressionImpl; - return GetValueType(value) != ValueType::Unknown; + + const VtValue coerced = CoerceIfUnsupportedValueType(value); + return + (coerced.IsEmpty() ? GetValueType(value) : GetValueType(coerced)) != + ValueType::Unknown; } SdfVariableExpression::operator bool() const diff --git a/pxr/usd/sdf/variableExpression.h b/pxr/usd/sdf/variableExpression.h index 15b97ee50c..356438edfd 100644 --- a/pxr/usd/sdf/variableExpression.h +++ b/pxr/usd/sdf/variableExpression.h @@ -29,6 +29,7 @@ #include "pxr/pxr.h" #include "pxr/usd/sdf/api.h" +#include "pxr/base/vt/array.h" #include "pxr/base/vt/dictionary.h" #include "pxr/base/vt/value.h" @@ -50,8 +51,7 @@ namespace Sdf_VariableExpressionImpl { /// Variable expressions are written in a custom language and /// represented in scene description as a string surrounded by backticks (`). /// These expressions may refer to "expression variables", which are key-value -/// pairs authored as layer metadata. For example, when evaluating an -/// expression like: +/// pairs provided by clients. For example, when evaluating an expression like: /// /// \code /// `"a_${NAME}_string"` @@ -60,10 +60,19 @@ namespace Sdf_VariableExpressionImpl { /// The "${NAME}" portion of the string with the value of expression variable /// "NAME". /// -/// Higher levels of the system (e.g., composition) are responsible for -/// examining fields that support variable expressions, evaluating them -/// with the appropriate variables (via this class) and consuming the -/// results. +/// Expression variables may be any of these supported types: +/// +/// - std::string +/// - int64_t (int is accepted but coerced to int64_t) +/// - bool +/// - VtArrays containing any of the above types. +/// - None (represented by an empty VtValue) +/// +/// Expression variables are typically authored in scene description as layer +/// metadata under the 'expressionVariables' field. Higher levels of the system +/// (e.g., composition) are responsible for examining fields that support +/// variable expressions, evaluating them with the appropriate variables (via +/// this class) and consuming the results. /// /// See \ref Sdf_Page_VariableExpressions "Variable Expressions" /// or more information on the expression language and areas of the system @@ -95,8 +104,11 @@ class SdfVariableExpression /// Returns true if \p value holds a type that is supported by /// variable expressions, false otherwise. If this function returns - /// true, \p value may be authored into the expression variables - /// dictionary. + /// true, \p value may be used for an expression variable supplied to + /// the Evaluate function. \p value may also be authored into the + /// 'expressionVariables' dictionary, unless it is an empty VtValue + /// representing the None value. See class documentation for list of + /// supported types. SDF_API static bool IsValidVariableType(const VtValue& value); @@ -122,6 +134,10 @@ class SdfVariableExpression SDF_API const std::vector& GetErrors() const; + /// \class EmptyList + /// A result value representing an empty list. + class EmptyList { }; + /// \class Result class Result { @@ -130,6 +146,9 @@ class SdfVariableExpression /// empty if the expression yielded no value. It may also be empty /// if errors occurred during evaluation. In this case, the errors /// field will be populated with error messages. + /// + /// If the value is not empty, it will contain one of the supported + /// types listed in the class documentation. VtValue value; /// Errors encountered while evaluating the expression. @@ -152,6 +171,12 @@ class SdfVariableExpression /// in the Result object will be an empty VtValue and error messages /// will be added to the errors field. /// + /// If the expression evaluates to an empty list, the value field + /// in the Result object will contain an EmptyList object instead + /// of an empty VtArray, as the expression language does not + /// provide syntax for specifying the expected element types in + /// an empty list. + /// /// If this object represents an invalid expression, calling this /// function will return a Result object with an empty value and the /// errors from GetErrors(). @@ -174,11 +199,23 @@ class SdfVariableExpression /// Result value will be set to an empty VtValue an error message /// indicating the unexpected type will be added to the Result's error /// list. Otherwise, the Result will be returned as-is. + /// + /// If the expression evaluates to an empty list and the ResultType + /// is a VtArray, the value in the Result object will be an empty + /// VtArray. This differs from Evaluate, which would return an + /// untyped EmptyList object instead. + /// + /// ResultType must be one of the supported types listed in the + /// class documentation. template Result EvaluateTyped(const VtDictionary& variables) const { Result r = Evaluate(variables); - if (!r.value.IsEmpty() && !r.value.IsHolding()) { + + if (VtIsArray::value && r.value.IsHolding()) { + r.value = VtValue(ResultType()); + } + else if (!r.value.IsEmpty() && !r.value.IsHolding()) { r.errors.push_back( _FormatUnexpectedTypeError(r.value, VtValue(ResultType()))); r.value = VtValue(); @@ -196,6 +233,22 @@ class SdfVariableExpression std::string _expressionStr; }; +inline bool +operator==( + const SdfVariableExpression::EmptyList&, + const SdfVariableExpression::EmptyList&) +{ + return true; +} + +inline bool +operator!=( + const SdfVariableExpression::EmptyList&, + const SdfVariableExpression::EmptyList&) +{ + return false; +} + PXR_NAMESPACE_CLOSE_SCOPE #endif diff --git a/pxr/usd/sdf/variableExpressionImpl.cpp b/pxr/usd/sdf/variableExpressionImpl.cpp index 8544f6e3b3..73db72f79d 100644 --- a/pxr/usd/sdf/variableExpressionImpl.cpp +++ b/pxr/usd/sdf/variableExpressionImpl.cpp @@ -24,8 +24,10 @@ #include "pxr/pxr.h" #include "pxr/usd/sdf/variableExpressionImpl.h" +#include "pxr/usd/sdf/variableExpression.h" #include "pxr/usd/sdf/variableExpressionParser.h" +#include "pxr/base/vt/array.h" #include "pxr/base/vt/typeHeaders.h" #include "pxr/base/vt/visitValue.h" @@ -33,20 +35,68 @@ #include "pxr/base/tf/stl.h" #include "pxr/base/tf/stringUtils.h" +#include + PXR_NAMESPACE_OPEN_SCOPE namespace Sdf_VariableExpressionImpl { +// Metafunctions describing supported expression variable value types. +template +using IsSupportedScalarType = std::integral_constant< + bool, + std::is_same::value + || std::is_same::value + || std::is_same::value +>; + +template +using IsSupportedListType = std::integral_constant< + bool, + std::is_same>::value + || std::is_same>::value + || std::is_same>::value +>; + class _TypeVisitor { public: - ValueType operator()(const std::string&) const { + ValueType operator()(const std::string&) const + { return ValueType::String; } + ValueType operator()(bool) const + { + return ValueType::Boolean; + } + + ValueType operator()(int64_t) const + { + return ValueType::Integer; + } + + ValueType operator()(const VtValue& v) const + { + if (v.IsEmpty()) { + return ValueType::None; + } + if (v.IsHolding()) { + return ValueType::List; + } + return ValueType::Unknown; + } + template - ValueType operator()(const T&) const { + std::enable_if_t::value, ValueType> + operator()(const T&) const { + return ValueType::List; + } + + template + std::enable_if_t::value, ValueType> + operator()(const T&) const { return ValueType::Unknown; } }; @@ -57,6 +107,47 @@ GetValueType(const VtValue& value) return VtVisitValue(value, _TypeVisitor()); } +std::string +GetValueTypeName(const VtValue& value) +{ + switch (GetValueType(value)) { + case ValueType::String: + return "string"; + case ValueType::Boolean: + return "bool"; + case ValueType::Integer: + return "int"; + case ValueType::List: + return "list"; + case ValueType::None: + return "None"; + case ValueType::Unknown: + break; + } + + return value.GetTypeName(); +} + +VtValue +CoerceIfUnsupportedValueType(const VtValue& value) +{ + // We do not use VtValue's built-in casting mechanism as we want to + // tightly control the coercions we allow in the expression language. + + // Coerce int -> int64. + if (value.IsHolding()) { + return VtValue(int64_t(value.UncheckedGet())); + } + + // Coerce VtArray -> VtArray. + if (value.IsHolding>()) { + const VtArray& intArray = value.UncheckedGet>(); + return VtValue(VtArray(intArray.begin(), intArray.end())); + } + + return VtValue(); +} + // ------------------------------------------------------------ EvalContext::EvalContext(const VtDictionary* variables) @@ -95,13 +186,19 @@ EvalContext::GetVariable(const std::string& var) return { EvalResult::NoValue(), false }; } + // Coerce the variable to a supported type if necessary. + const VtValue coercedValue = CoerceIfUnsupportedValueType(*value); + if (!coercedValue.IsEmpty()) { + value = &coercedValue; + } + // If the variable isn't a supported type, return an error. if (GetValueType(*value) == ValueType::Unknown) { return { EvalResult::Error({ TfStringPrintf( "Variable '%s' has unsupported type %s", - var.c_str(), value->GetTypeName().c_str()) }), + var.c_str(), GetValueTypeName(*value).c_str()) }), true }; } @@ -187,7 +284,7 @@ StringNode::Evaluate(EvalContext* ctx) const "String value required for substituting " "variable '%s', got %s.", variable.c_str(), - varResult.value.GetTypeName().c_str()) + GetValueTypeName(varResult.value).c_str()) }); } } @@ -235,6 +332,113 @@ VariableNode::Evaluate(EvalContext* ctx) const return varResult.first; } +// ------------------------------------------------------------ + +template +ConstantNode::ConstantNode(T value) + : _value(value) +{ +} + +template +EvalResult +ConstantNode::Evaluate(EvalContext* ctx) const +{ + return EvalResult::Value(_value); +} + +template class ConstantNode; +template class ConstantNode; + +// ------------------------------------------------------------ + +NoneNode::NoneNode() = default; + +EvalResult +NoneNode::Evaluate(EvalContext* ctx) const +{ + return EvalResult::NoValue(); +} + +// ------------------------------------------------------------ + +ListNode::ListNode(std::vector>&& elements) + : _elements(std::move(elements)) +{ +} + +class _ListVisitor +{ +public: + template + typename std::enable_if_t::value, bool> + operator()(T v) + { + if (list.IsEmpty()) { + list = VtArray(1, std::move(v)); + return true; + } + else if (list.IsHolding>()) { + list.UncheckedMutate>( + [&v](VtArray& arr) { arr.push_back(std::move(v)); }); + return true; + } + + return false; + } + + template + typename std::enable_if_t::value, bool> + operator()(T v) + { + return false; + } + + VtValue list; +}; + +EvalResult +ListNode::Evaluate(EvalContext* ctx) const +{ + _ListVisitor visitor; + std::vector errors; + + for (size_t i = 0; i < _elements.size(); ++i) { + const std::unique_ptr& element = _elements[i]; + + EvalResult r = element->Evaluate(ctx); + if (!r.errors.empty()) { + errors.insert(errors.end(), + std::make_move_iterator(r.errors.begin()), + std::make_move_iterator(r.errors.end())); + } + + if (r.value.IsEmpty()) { + continue; + } + + if (!VtVisitValue(r.value, visitor)) { + errors.push_back(TfStringPrintf( + "Unexpected value of type %s in list at element %zu", + GetValueTypeName(r.value).c_str(), i)); + } + } + + if (!errors.empty()) { + return EvalResult::Error(std::move(errors)); + } + + if (visitor.list.IsEmpty()) { + // The expression evaluated to an empty list, but we can't + // put an empty VtArray into the result because we don't know + // what type that VtArray ought to be holding. So instead, we + // return a special object that represents the empty list. + return EvalResult::Value(SdfVariableExpression::EmptyList()); + } + + return EvalResult::Value(std::move(visitor.list)); +} + } // end namespace Sdf_VariableExpressionImpl PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/usd/sdf/variableExpressionImpl.h b/pxr/usd/sdf/variableExpressionImpl.h index d74fe0750f..6aac1919d1 100644 --- a/pxr/usd/sdf/variableExpressionImpl.h +++ b/pxr/usd/sdf/variableExpressionImpl.h @@ -44,7 +44,11 @@ namespace Sdf_VariableExpressionImpl enum class ValueType { Unknown, - String + Boolean, + Integer, + String, + List, + None }; /// Returns the value type held by \p val. If \p val is empty or is holding @@ -53,6 +57,17 @@ enum class ValueType ValueType GetValueType(const VtValue& val); +/// Returns a descriptive name for the value type held by \p val. +std::string +GetValueTypeName(const VtValue& val); + +/// If \p val contains a type that may be converted to a supported value +/// type, perform the conversion and return the result. If \p val already +/// contains a supported value type or \p val cannot be converted, return an +/// empty VtValue. +VtValue +CoerceIfUnsupportedValueType(const VtValue& val); + /// \class EvalResult /// Contains the result of evaluating an expression. class EvalResult @@ -137,6 +152,46 @@ class VariableNode std::string _var; }; +/// \class ConstantNode +/// Expression node for simple constant values. +template +class ConstantNode + : public Node +{ +public: + ConstantNode(Type value); + EvalResult Evaluate(EvalContext* ctx) const override; + +private: + Type _value; +}; + +using IntegerNode = ConstantNode; +using BoolNode = ConstantNode; + +/// \class NoneNode +/// Expression node for special 'None' value. +class NoneNode + : public Node +{ +public: + NoneNode(); + EvalResult Evaluate(EvalContext* ctx) const override; +}; + +/// \class ListNode +/// Expression node for lists of values. +class ListNode + : public Node +{ +public: + ListNode(std::vector>&& elements); + EvalResult Evaluate(EvalContext *ctx) const override; + +private: + std::vector> _elements; +}; + } // end namespace Sdf_VariableExpressionImpl PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/usd/sdf/variableExpressionParser.cpp b/pxr/usd/sdf/variableExpressionParser.cpp index 45b3c1dc2b..1483816e93 100644 --- a/pxr/usd/sdf/variableExpressionParser.cpp +++ b/pxr/usd/sdf/variableExpressionParser.cpp @@ -78,6 +78,44 @@ class VariableNodeCreator std::string var; }; +template +class ConstantNodeCreator + : public NodeCreator +{ +public: + std::unique_ptr CreateNode() override + { + return std::make_unique>(value); + } + + Type value; +}; + +using IntegerNodeCreator = ConstantNodeCreator; +using BoolNodeCreator = ConstantNodeCreator; + +class NoneNodeCreator + : public NodeCreator +{ +public: + std::unique_ptr CreateNode() override + { + return std::make_unique(); + } +}; + +class ListNodeCreator + : public NodeCreator +{ +public: + std::unique_ptr CreateNode() final + { + return std::make_unique(std::move(elements)); + }; + + std::vector> elements; +}; + // Parser state ----------------------------------------------- // Objects responsible for keeping track of intermediate state as an // expression is being parsed. @@ -85,27 +123,79 @@ class VariableNodeCreator class ParserContext { public: + // Create and push a node creator of type CreatorType onto the stack, + // passing in any given args to CreatorType c'tor, and return it. + template + CreatorType* PushNodeCreator(const Args&... args) + { + _nodeStack.push_back(std::make_unique(args...)); + return static_cast(_nodeStack.back().get()); + } + + // Return pointer to the node creator on the top of the stack if + // it is an instance of CreatorType, otherwise return nullptr. template - CreatorType* GetNodeCreator() + CreatorType* GetExistingNodeCreator() { - if (CreatorType* existingCreator = - dynamic_cast(_nodeCreator.get())) { - return existingCreator; + if (!_nodeStack.empty()) { + if (CreatorType* existingCreator = + dynamic_cast(_nodeStack.back().get())) { + return existingCreator; + } } + return nullptr; + } - _nodeCreator = std::make_unique(); - return static_cast(_nodeCreator.get()); + // Return pointer to the node creator on the top of the stack if + // it is an instance of CreatorType, otherwise construct a new + // CreatorType, push it onto the stack, and return it. + template + CreatorType* GetNodeCreator() + { + CreatorType* creator = GetExistingNodeCreator(); + if (!creator) { + creator = PushNodeCreator(); + } + return creator; } - std::unique_ptr CreateExpressionNode() + // Pop the node creator from the top of the stack and use it to + // create an expression node. + std::unique_ptr CreateExpressionNode(std::string* errMsg) { - return _nodeCreator->CreateNode(); + if (!TF_VERIFY(!_nodeStack.empty()) || !TF_VERIFY(_nodeStack.back())) { + *errMsg = "Unknown error"; + return nullptr; + } + + std::unique_ptr creator = std::move(_nodeStack.back()); + _nodeStack.pop_back(); + + return creator->CreateNode(); } private: - std::unique_ptr _nodeCreator; + std::vector> _nodeStack; }; +// Parser utilities ----------------------------------------------- + +template +void _ThrowParseError(const Input& in, const std::string& msg) +{ + // XXX: + // As of pegtl 2.x, the commented out code below prepends the position + // into the exception's error string with no way to recover just the error + // itself. The c'tor that takes a std::vector avoids this, + // allowing us to format the position ourselves in our exception handler. + // + // pegtl 3.x adds API to parse_error to decompose the error message, + // so we could use that later. + + // throw parse_error(errorMsg, in); + throw parse_error(msg, std::vector{ in.position() }); +} + // Parser grammar ----------------------------------------------- // Parsing rules for the expression grammar. @@ -215,6 +305,92 @@ using SingleQuotedString = QuotedString<'\''>; // ---------------------------------------- +struct Integer + : seq< + opt>, + plus + > +{}; + +// ---------------------------------------- + +// We allow "True", "true", "False", "false" because these +// are the representations used in the two primary languages supported +// by USD -- C++ and Python -- and that correspondence may make it easier +// for users working in those languages while writing expressions. +struct BooleanTrue + : sor< + TAO_PEGTL_KEYWORD("True"), + TAO_PEGTL_KEYWORD("true") + > +{}; + +struct BooleanFalse + : sor< + TAO_PEGTL_KEYWORD("False"), + TAO_PEGTL_KEYWORD("false") + > +{}; + +struct Boolean + : sor< + BooleanTrue, + BooleanFalse + > +{}; + +// ---------------------------------------- + +struct None + : sor< + TAO_PEGTL_KEYWORD("None"), + TAO_PEGTL_KEYWORD("none") + > +{}; + +// ---------------------------------------- + +struct ScalarExpression + : sor< + Variable, + DoubleQuotedString, + SingleQuotedString, + Integer, + Boolean, + None + > +{}; + +// ---------------------------------------- + +struct ListStart + : one<'['> +{}; + +struct ListEnd + : one<']'> +{}; + +struct ListElement + : public ScalarExpression +{}; + +struct ListElements + : sor< + list, one<' '>>, + star> + > +{}; + +struct ListExpression + : if_must< + ListStart, + ListElements, + ListEnd> +{}; + +// ---------------------------------------- + struct ExpressionStart : string<'`'> {}; @@ -225,9 +401,8 @@ struct ExpressionEnd struct ExpressionBody : sor< - Variable, - DoubleQuotedString, - SingleQuotedString + ScalarExpression, + ListExpression > {}; @@ -294,6 +469,87 @@ struct Action } }; +template <> +struct Action +{ + template + static void apply(const ActionInput& in, ParserContext& context) + { + bool outOfRange = false; + const int64_t value = TfStringToInt64(in.string(), &outOfRange); + if (outOfRange) { + _ThrowParseError( + in, TfStringPrintf("Integer %s out of range.", + in.string().c_str())); + } + + context.GetNodeCreator()->value = value; + } +}; + +template <> +struct Action +{ + template + static void apply(const ActionInput& in, ParserContext& context) + { + context.GetNodeCreator()->value = true; + } +}; + +template <> +struct Action +{ + template + static void apply(const ActionInput& in, ParserContext& context) + { + context.GetNodeCreator()->value = false; + } +}; + +template <> +struct Action +{ + template + static void apply(const ActionInput& in, ParserContext& context) + { + context.GetNodeCreator(); + } +}; + +template<> +struct Action +{ + template + static void apply(const ActionInput& in, ParserContext& context) + { + context.PushNodeCreator(); + } +}; + +template<> +struct Action +{ + template + static void apply(const ActionInput& in, ParserContext& context) + { + std::string errMsg; + std::unique_ptr elemNode = + context.CreateExpressionNode(&errMsg); + if (!elemNode) { + _ThrowParseError(in, errMsg); + } + + ListNodeCreator* listCreator = + context.GetExistingNodeCreator(); + if (!listCreator) { + _ThrowParseError(in, "Unknown error"); + } + + listCreator->elements.push_back(std::move(elemNode)); + } +}; + // Parser error messages ---------------------------------------- template @@ -305,24 +561,17 @@ struct Errors template static void raise(const Input& in, States&&...) { - // XXX: - // This pegtl-provided example prepends the position into the - // exception's error string with no way to recover just the error - // itself. The c'tor that takes a std::vector avoids - // this, allowing us to format the position ourselves in our - // exception handler. - // - // pegtl 3.x adds API to parse_error to decompose the error message, - // so we could use that later. - // - // throw parse_error(errorMsg, in); - throw parse_error(errorMsg, std::vector{ in.position() }); + _ThrowParseError(in, errorMsg); } }; #define MATCH_ERROR(rule, msg) \ template <> const std::string Errors::errorMsg = msg; +// Should never hit this error because of how the rule is defined. +MATCH_ERROR(ListElements, ""); + +MATCH_ERROR(ListEnd, "Missing ending ']'"); MATCH_ERROR(ExpressionStart, "Expressions must begin with '`'"); MATCH_ERROR(ExpressionBody, "Unexpected expression"); MATCH_ERROR(ExpressionEnd, "Missing ending '`'"); @@ -374,7 +623,15 @@ Sdf_ParseVariableExpression(const std::string& expr) }; } - return { context.CreateExpressionNode(), {} }; + std::string errMsg; + std::unique_ptr exprNode = + context.CreateExpressionNode(&errMsg); + + if (!exprNode) { + return { nullptr, { std::move(errMsg) } }; + } + + return { std::move(exprNode), {} }; } bool diff --git a/pxr/usd/sdf/wrapVariableExpression.cpp b/pxr/usd/sdf/wrapVariableExpression.cpp index 120e75fc89..529dd9df0b 100644 --- a/pxr/usd/sdf/wrapVariableExpression.cpp +++ b/pxr/usd/sdf/wrapVariableExpression.cpp @@ -27,8 +27,10 @@ #include "pxr/base/tf/pyResultConversions.h" #include "pxr/base/tf/pyUtils.h" +#include "pxr/base/vt/value.h" #include +#include #include #include @@ -72,9 +74,10 @@ wrapVariableExpression() class_("Result", no_init) .add_property("value", - make_getter( - &This::Result::value, - return_value_policy())) + +[](const This::Result& r) { + return r.value.IsHolding() ? + object(list()) : object(r.value); + }) .add_property("errors", make_getter( &This::Result::errors, From 55a02f3b7e312f9487b2c40399322f180291de26 Mon Sep 17 00:00:00 2001 From: tcauchois Date: Thu, 3 Aug 2023 14:47:45 -0700 Subject: [PATCH 154/352] [usdImagingGL] Preserve UsdImagingGLEngine root xform/visibility across renderer change. (Internal change: 2289099) --- .../usdImaging/rootOverridesSceneIndex.cpp | 12 ++++++++++++ pxr/usdImaging/usdImaging/rootOverridesSceneIndex.h | 6 ++++++ pxr/usdImaging/usdImagingGL/engine.cpp | 10 +++++++--- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/pxr/usdImaging/usdImaging/rootOverridesSceneIndex.cpp b/pxr/usdImaging/usdImaging/rootOverridesSceneIndex.cpp index 3f4f7d6a54..0c458331e5 100644 --- a/pxr/usdImaging/usdImaging/rootOverridesSceneIndex.cpp +++ b/pxr/usdImaging/usdImaging/rootOverridesSceneIndex.cpp @@ -145,6 +145,12 @@ UsdImagingRootOverridesSceneIndex::SetRootTransform( _SendPrimsDirtied(entries); } +const GfMatrix4d& +UsdImagingRootOverridesSceneIndex::GetRootTransform() const +{ + return _rootOverlayInfo->transform; +} + void UsdImagingRootOverridesSceneIndex::SetRootVisibility( const bool visibility) @@ -164,6 +170,12 @@ UsdImagingRootOverridesSceneIndex::SetRootVisibility( _SendPrimsDirtied(entries); } +const bool +UsdImagingRootOverridesSceneIndex::GetRootVisibility() const +{ + return _rootOverlayInfo->visibility; +} + HdSceneIndexPrim UsdImagingRootOverridesSceneIndex::GetPrim( const SdfPath &primPath) const diff --git a/pxr/usdImaging/usdImaging/rootOverridesSceneIndex.h b/pxr/usdImaging/usdImaging/rootOverridesSceneIndex.h index db9e257791..864fceb4f5 100644 --- a/pxr/usdImaging/usdImaging/rootOverridesSceneIndex.h +++ b/pxr/usdImaging/usdImaging/rootOverridesSceneIndex.h @@ -59,9 +59,15 @@ class UsdImagingRootOverridesSceneIndex USDIMAGING_API void SetRootTransform(const GfMatrix4d &); + USDIMAGING_API + const GfMatrix4d& GetRootTransform() const; + USDIMAGING_API void SetRootVisibility(bool); + USDIMAGING_API + const bool GetRootVisibility() const; + protected: void _PrimsAdded( const HdSceneIndexBase&, diff --git a/pxr/usdImaging/usdImagingGL/engine.cpp b/pxr/usdImaging/usdImagingGL/engine.cpp index a3f59deaec..d73d1f83ba 100644 --- a/pxr/usdImaging/usdImagingGL/engine.cpp +++ b/pxr/usdImaging/usdImagingGL/engine.cpp @@ -999,7 +999,10 @@ UsdImagingGLEngine::_SetRenderDelegateAndRestoreState( bool rootVisibility = true; if (_GetUseSceneIndices()) { - // XXX(USD-7115): root transform, visibility... + if (_rootOverridesSceneIndex) { + rootTransform = _rootOverridesSceneIndex->GetRootTransform(); + rootVisibility = _rootOverridesSceneIndex->GetRootVisibility(); + } } else { if (_sceneDelegate) { rootTransform = _sceneDelegate->GetRootTransform(); @@ -1014,10 +1017,11 @@ UsdImagingGLEngine::_SetRenderDelegateAndRestoreState( // Reload saved state. if (_GetUseSceneIndices()) { - // XXX(USD-7115): root transform, visibility... + _rootOverridesSceneIndex->SetRootTransform(rootTransform); + _rootOverridesSceneIndex->SetRootVisibility(rootVisibility); } else { - _sceneDelegate->SetRootVisibility(rootVisibility); _sceneDelegate->SetRootTransform(rootTransform); + _sceneDelegate->SetRootVisibility(rootVisibility); } _selTracker->SetSelection(selection); _taskController->SetSelectionColor(_selectionColor); From 66e73871df68c30478a8dc8fd2e83bdea2485ddb Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Thu, 3 Aug 2023 22:03:03 -0700 Subject: [PATCH 155/352] Remove unused `boost/call_traits.h` header --- pxr/usd/sdf/accessorHelpers.h | 1 - 1 file changed, 1 deletion(-) diff --git a/pxr/usd/sdf/accessorHelpers.h b/pxr/usd/sdf/accessorHelpers.h index 014d2ed104..c11b260fe2 100644 --- a/pxr/usd/sdf/accessorHelpers.h +++ b/pxr/usd/sdf/accessorHelpers.h @@ -31,7 +31,6 @@ #include "pxr/usd/sdf/spec.h" #include "pxr/usd/sdf/types.h" -#include #include // This file defines macros intended to reduce the amount of boilerplate code From 2bb4736b0a9a1cfb372f2323df2363b55d9565bf Mon Sep 17 00:00:00 2001 From: Paul Molodowitch Date: Thu, 27 Apr 2023 14:44:16 -0700 Subject: [PATCH 156/352] [usdImagingGL] mark some tests as ptex-required specifically: - testUsdImagingGLInstancing_nestedInstance - testUsdImagingGLInstancing_SceneIndex_nestedInstance See discussion here: https://github.com/PixarAnimationStudios/USD/issues/2097#issuecomment-1396496008 --- pxr/usdImaging/usdImagingGL/CMakeLists.txt | 52 +++++++++++----------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/pxr/usdImaging/usdImagingGL/CMakeLists.txt b/pxr/usdImaging/usdImagingGL/CMakeLists.txt index ffdf9223a4..5d59c1d89c 100644 --- a/pxr/usdImaging/usdImagingGL/CMakeLists.txt +++ b/pxr/usdImaging/usdImagingGL/CMakeLists.txt @@ -1379,18 +1379,6 @@ pxr_register_test(testUsdImagingGLInstancing_nestedInstancedCubes TESTENV testUsdImagingGLInstancing ) -pxr_register_test(testUsdImagingGLInstancing_nestedInstance - COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdImagingGLBasicDrawing -offscreen -frameAll -lighting -stage nestedInstance.usda -write testUsdImagingGLInstancing_nestedInstance.png" - IMAGE_DIFF_COMPARE - testUsdImagingGLInstancing_nestedInstance.png - FAIL 0.02 - FAIL_PERCENT 0.005 - WARN 0.02 - WARN_PERCENT 0.0025 - EXPECTED_RETURN_CODE 0 - TESTENV testUsdImagingGLInstancing -) - pxr_register_test(testUsdImagingGLInstancing_ni_pi COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdImagingGLBasicDrawing -offscreen -frameAll -lighting -stage ni_pi.usda -write testUsdImagingGLInstancing_ni_pi.png" IMAGE_DIFF_COMPARE @@ -1483,20 +1471,6 @@ pxr_register_test(testUsdImagingGLInstancing_SceneIndex_nestedInstancedCubes USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX=true ) -pxr_register_test(testUsdImagingGLInstancing_SceneIndex_nestedInstance - COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdImagingGLBasicDrawing -offscreen -frameAll -lighting -stage nestedInstance.usda -write testUsdImagingGLInstancing_nestedInstance.png" - IMAGE_DIFF_COMPARE - testUsdImagingGLInstancing_nestedInstance.png - FAIL 0.02 - FAIL_PERCENT 0.005 - WARN 0.02 - WARN_PERCENT 0.0025 - EXPECTED_RETURN_CODE 0 - TESTENV testUsdImagingGLInstancing_SceneIndex - ENV - USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX=true -) - pxr_register_test(testUsdImagingGLInstancing_SceneIndex_ni_pi COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdImagingGLBasicDrawing -offscreen -frameAll -lighting -stage ni_pi.usda -write testUsdImagingGLInstancing_ni_pi.png" IMAGE_DIFF_COMPARE @@ -5022,6 +4996,18 @@ if (PTEX_FOUND AND ${PXR_ENABLE_PTEX_SUPPORT}) TESTENV testUsdImagingGLInstancing ) + pxr_register_test(testUsdImagingGLInstancing_nestedInstance + COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdImagingGLBasicDrawing -offscreen -frameAll -lighting -stage nestedInstance.usda -write testUsdImagingGLInstancing_nestedInstance.png" + IMAGE_DIFF_COMPARE + testUsdImagingGLInstancing_nestedInstance.png + FAIL 0.02 + FAIL_PERCENT 0.005 + WARN 0.02 + WARN_PERCENT 0.0025 + EXPECTED_RETURN_CODE 0 + TESTENV testUsdImagingGLInstancing + ) + pxr_register_test(testUsdImagingGLInstancing_SceneIndex_instance COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdImagingGLBasicDrawing -offscreen -frameAll -lighting -stage instance.usda -write testUsdImagingGLInstancing_instance.png" IMAGE_DIFF_COMPARE @@ -5058,6 +5044,20 @@ if (PTEX_FOUND AND ${PXR_ENABLE_PTEX_SUPPORT}) TESTENV testUsdImagingGLInstancing_SceneIndex ) + pxr_register_test(testUsdImagingGLInstancing_SceneIndex_nestedInstance + COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdImagingGLBasicDrawing -offscreen -frameAll -lighting -stage nestedInstance.usda -write testUsdImagingGLInstancing_nestedInstance.png" + IMAGE_DIFF_COMPARE + testUsdImagingGLInstancing_nestedInstance.png + FAIL 0.02 + FAIL_PERCENT 0.005 + WARN 0.02 + WARN_PERCENT 0.0025 + EXPECTED_RETURN_CODE 0 + TESTENV testUsdImagingGLInstancing_SceneIndex + ENV + USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX=true + ) + pxr_register_test(testUsdImagingGLBasicDrawingNonBindless_shaders COMMAND "${CMAKE_INSTALL_PREFIX}/tests/testUsdImagingGLBasicDrawing -lighting -offscreen -stage shaders.usd -frameAll -write testUsdImagingGLBasicDrawingNonBindless_shaders.png" IMAGE_DIFF_COMPARE From 328196ec708b78bf85a10ae836338e1d3c1ab871 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Mon, 13 Mar 2023 10:12:25 -0700 Subject: [PATCH 157/352] Provide an adapter for `std::reverse_iterator` to replace `boost::reverse_iterator` for proxy reference iterators --- pxr/base/tf/iterator.h | 144 ++++++++++++++++++++++++++++++++++++ pxr/usd/pcp/iterator.h | 9 +-- pxr/usd/sdf/childrenProxy.h | 5 +- pxr/usd/sdf/childrenView.h | 3 +- pxr/usd/sdf/listProxy.h | 5 +- pxr/usd/sdf/mapEditProxy.h | 6 +- 6 files changed, 156 insertions(+), 16 deletions(-) diff --git a/pxr/base/tf/iterator.h b/pxr/base/tf/iterator.h index 4a60f81a0d..b4d1ca3bf7 100644 --- a/pxr/base/tf/iterator.h +++ b/pxr/base/tf/iterator.h @@ -409,6 +409,150 @@ constexpr size_t TfArraySize(const T (&array)[N]) noexcept return N; } +/// A reverse iterator adapter for `std::reverse_iterator` that provides +/// an `operator->` compatible with proxy reference types. +/// This should only be used when the underlying iterator's reference +/// is a value type and should become unnecessary in newer compilers and C++20. +/// This implementation was written for use with random access iterators but +/// could be extended to bidirectional iterators if necessary. +template +class Tf_ProxyReferenceReverseIterator : + private std::reverse_iterator { + // private API for interacting with an STL reverse_iterator of the + // UnderlyingIterator + using ReverseIterator = std::reverse_iterator; + const ReverseIterator& _reverse_iterator() const { return *this; } + ReverseIterator& _reverse_iterator() { return *this; } + explicit Tf_ProxyReferenceReverseIterator(const ReverseIterator& it) + : ReverseIterator(it) {} + explicit Tf_ProxyReferenceReverseIterator(ReverseIterator&& it) + : ReverseIterator(it) {} +public: + using iterator_type = typename ReverseIterator::iterator_type; + using iterator_category = typename ReverseIterator::iterator_category; + using value_type = typename ReverseIterator::value_type; + using reference = typename ReverseIterator::reference; + using pointer = typename ReverseIterator::pointer; + using difference_type = typename ReverseIterator::difference_type; + + static_assert(!std::is_reference::value, + "Tf_ProxyReferenceReverseIterator should only be used " + "when the underlying iterator's reference type is a " + "proxy (MyTypeRef) and not a true reference (MyType&)." + "Use std::reverse_iterator instead."); + static_assert(std::is_same::value, + "Tf_ProxyReferenceReverseIterator must wrap a random " + "access iterator."); + + Tf_ProxyReferenceReverseIterator() = default; + explicit Tf_ProxyReferenceReverseIterator(UnderlyingIterator it) : + ReverseIterator(it) { + } + + // Operators and functions which can just use the underlying STL + // implementation + using ReverseIterator::base; + using ReverseIterator::operator*; + using ReverseIterator::operator[]; + + /// Customize operator-> to support proxied reference types + /// Compatible with the C++20 specification. + pointer operator->() const { return std::prev(base()).operator->(); } + + // Many methods can use the underlying STL implementation but need to + // avoid returning a `std::reverse_iterator` + Tf_ProxyReferenceReverseIterator& operator++() { + ++_reverse_iterator(); + return *this; + } + + Tf_ProxyReferenceReverseIterator operator++(int) { + Tf_ProxyReferenceReverseIterator result{_reverse_iterator()}; + ++_reverse_iterator(); + return result; + } + + Tf_ProxyReferenceReverseIterator& operator--() { + --_reverse_iterator(); + return *this; + } + + Tf_ProxyReferenceReverseIterator operator--(int) { + Tf_ProxyReferenceReverseIterator result{_reverse_iterator()}; + --_reverse_iterator(); + return result; + } + + Tf_ProxyReferenceReverseIterator operator+(difference_type increment) const { + return Tf_ProxyReferenceReverseIterator(_reverse_iterator() + increment); + } + + Tf_ProxyReferenceReverseIterator operator-(difference_type decrement) const { + return Tf_ProxyReferenceReverseIterator(_reverse_iterator() - decrement); + } + + template + difference_type operator-( + const Tf_ProxyReferenceReverseIterator& other) const { + return _reverse_iterator() - other._reverse_iterator(); + } + + Tf_ProxyReferenceReverseIterator& operator+=(difference_type increment) { + _reverse_iterator() += increment; + return *this; + } + + Tf_ProxyReferenceReverseIterator& operator-=(difference_type decrement) { + _reverse_iterator() -= decrement; + return *this; + } + + inline friend Tf_ProxyReferenceReverseIterator + operator+(const difference_type increment, + const Tf_ProxyReferenceReverseIterator& iterator) { + return Tf_ProxyReferenceReverseIterator( + increment + iterator._reverse_iterator()); + } + + // Comparison operators defer to the STL implementation + template + inline friend bool operator==(const Tf_ProxyReferenceReverseIterator& lhs, + const Tf_ProxyReferenceReverseIterator& rhs) { + return lhs._reverse_iterator() == rhs._reverse_iterator(); + } + + template + inline friend bool operator!=(const Tf_ProxyReferenceReverseIterator& lhs, + const Tf_ProxyReferenceReverseIterator& rhs) { + return lhs._reverse_iterator() != rhs._reverse_iterator(); + } + + template + inline friend bool operator<(const Tf_ProxyReferenceReverseIterator& lhs, + const Tf_ProxyReferenceReverseIterator& rhs) { + return lhs._reverse_iterator() < rhs._reverse_iterator(); + } + + template + inline friend bool operator>(const Tf_ProxyReferenceReverseIterator& lhs, + const Tf_ProxyReferenceReverseIterator& rhs) { + return lhs._reverse_iterator() > rhs._reverse_iterator(); + } + + template + inline friend bool operator<=(const Tf_ProxyReferenceReverseIterator& lhs, + const Tf_ProxyReferenceReverseIterator& rhs) { + return lhs._reverse_iterator() <= rhs._reverse_iterator(); + } + + template + inline friend bool operator>=(const Tf_ProxyReferenceReverseIterator& lhs, + const Tf_ProxyReferenceReverseIterator& rhs) { + return lhs._reverse_iterator() >= rhs._reverse_iterator(); + } +}; + PXR_NAMESPACE_CLOSE_SCOPE #endif // PXR_BASE_TF_ITERATOR_H diff --git a/pxr/usd/pcp/iterator.h b/pxr/usd/pcp/iterator.h index ca921146a6..6681fa057b 100644 --- a/pxr/usd/pcp/iterator.h +++ b/pxr/usd/pcp/iterator.h @@ -34,7 +34,6 @@ #include "pxr/base/tf/iterator.h" -#include #include PXR_NAMESPACE_OPEN_SCOPE @@ -187,12 +186,12 @@ class PcpNodeIterator /// order. /// class PcpNodeReverseIterator - : public boost::reverse_iterator + : public Tf_ProxyReferenceReverseIterator { public: PcpNodeReverseIterator() { } explicit PcpNodeReverseIterator(const PcpNodeIterator& iter) - : boost::reverse_iterator(iter) { } + : Tf_ProxyReferenceReverseIterator(iter) {} }; /// \class PcpPrimIterator @@ -344,12 +343,12 @@ class PcpPrimIterator /// weak-to-strong order. /// class PcpPrimReverseIterator - : public boost::reverse_iterator + : public Tf_ProxyReferenceReverseIterator { public: PcpPrimReverseIterator() { } explicit PcpPrimReverseIterator(const PcpPrimIterator& iter) - : boost::reverse_iterator(iter) { } + : Tf_ProxyReferenceReverseIterator(iter) { } PcpNodeRef GetNode() const { diff --git a/pxr/usd/sdf/childrenProxy.h b/pxr/usd/sdf/childrenProxy.h index d7110d4d82..651d1ed082 100644 --- a/pxr/usd/sdf/childrenProxy.h +++ b/pxr/usd/sdf/childrenProxy.h @@ -33,7 +33,6 @@ #include "pxr/base/tf/diagnostic.h" #include "pxr/base/tf/iterator.h" -#include #include #include #include @@ -207,9 +206,9 @@ class SdfChildrenProxy { public: typedef _ValueProxy reference; typedef _Iterator iterator; - typedef boost::reverse_iterator reverse_iterator; + typedef Tf_ProxyReferenceReverseIterator reverse_iterator; typedef _Iterator const_iterator; - typedef boost::reverse_iterator const_reverse_iterator; + typedef Tf_ProxyReferenceReverseIterator const_reverse_iterator; static const int CanSet = 1; static const int CanInsert = 2; diff --git a/pxr/usd/sdf/childrenView.h b/pxr/usd/sdf/childrenView.h index 81c9d9bae3..0990fee688 100644 --- a/pxr/usd/sdf/childrenView.h +++ b/pxr/usd/sdf/childrenView.h @@ -31,7 +31,6 @@ #include "pxr/usd/sdf/children.h" #include "pxr/base/tf/iterator.h" -#include #include #include @@ -381,7 +380,7 @@ class SdfChildrenView { public: typedef Sdf_ChildrenViewTraits _Traits; typedef typename _Traits::const_iterator const_iterator; - typedef boost::reverse_iterator const_reverse_iterator; + typedef Tf_ProxyReferenceReverseIterator const_reverse_iterator; typedef size_t size_type; typedef ptrdiff_t difference_type; diff --git a/pxr/usd/sdf/listProxy.h b/pxr/usd/sdf/listProxy.h index 220394d199..df58d850b0 100644 --- a/pxr/usd/sdf/listProxy.h +++ b/pxr/usd/sdf/listProxy.h @@ -35,7 +35,6 @@ #include "pxr/base/tf/diagnostic.h" #include "pxr/base/tf/errorMark.h" #include "pxr/base/tf/iterator.h" -#include #include #include @@ -298,8 +297,8 @@ class SdfListProxy { typedef _ItemProxy reference; typedef _Iterator iterator; typedef _Iterator const_iterator; - typedef boost::reverse_iterator reverse_iterator; - typedef boost::reverse_iterator const_reverse_iterator; + typedef Tf_ProxyReferenceReverseIterator reverse_iterator; + typedef Tf_ProxyReferenceReverseIterator const_reverse_iterator; /// Creates a default list proxy object for list operation vector specified /// \p op. This object evaluates to false in a boolean context and all diff --git a/pxr/usd/sdf/mapEditProxy.h b/pxr/usd/sdf/mapEditProxy.h index 8047a5ae7b..4bc7fd1c15 100644 --- a/pxr/usd/sdf/mapEditProxy.h +++ b/pxr/usd/sdf/mapEditProxy.h @@ -35,8 +35,8 @@ #include "pxr/base/vt/value.h" // for Vt_DefaultValueFactory #include "pxr/base/tf/diagnostic.h" +#include "pxr/base/tf/iterator.h" #include "pxr/base/tf/mallocTag.h" -#include #include #include @@ -363,8 +363,8 @@ class SdfMapEditProxy { typedef _Iterator iterator; typedef _Iterator const_iterator; - typedef boost::reverse_iterator reverse_iterator; - typedef boost::reverse_iterator const_reverse_iterator; + typedef Tf_ProxyReferenceReverseIterator reverse_iterator; + typedef Tf_ProxyReferenceReverseIterator const_reverse_iterator; explicit SdfMapEditProxy(const SdfSpecHandle& owner, const TfToken& field) : _editor(Sdf_CreateMapEditor(owner, field)) From 1c2f8fd8bccbfc9d153b50d6e5b0b85880797975 Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Wed, 1 Feb 2023 15:28:22 -0800 Subject: [PATCH 158/352] Replace `boost::iterator_adaptor` with explicitly specified iterator definition for `UsdNotice::ObjectsChanged::PathRange` --- pxr/usd/usd/notice.cpp | 4 +- pxr/usd/usd/notice.h | 59 ++++++++++++++++++++------ pxr/usdImaging/usdImaging/delegate.cpp | 2 +- 3 files changed, 50 insertions(+), 15 deletions(-) diff --git a/pxr/usd/usd/notice.cpp b/pxr/usd/usd/notice.cpp index 496788fc64..4b72291859 100644 --- a/pxr/usd/usd/notice.cpp +++ b/pxr/usd/usd/notice.cpp @@ -68,7 +68,7 @@ TfTokenVector UsdNotice::ObjectsChanged::PathRange::const_iterator::GetChangedFields() const { TfTokenVector fields; - for (const SdfChangeList::Entry* entry : base()->second) { + for (const SdfChangeList::Entry* entry : _underlyingIterator->second) { fields.reserve(fields.size() + entry->infoChanged.size()); std::transform( entry->infoChanged.begin(), entry->infoChanged.end(), @@ -83,7 +83,7 @@ UsdNotice::ObjectsChanged::PathRange::const_iterator::GetChangedFields() const bool UsdNotice::ObjectsChanged::PathRange::const_iterator::HasChangedFields() const { - for (const SdfChangeList::Entry* entry : base()->second) { + for (const SdfChangeList::Entry* entry : _underlyingIterator->second) { if (!entry->infoChanged.empty()) { return true; } diff --git a/pxr/usd/usd/notice.h b/pxr/usd/usd/notice.h index 12198a47c9..ae3a06035c 100644 --- a/pxr/usd/usd/notice.h +++ b/pxr/usd/usd/notice.h @@ -149,15 +149,38 @@ class UsdNotice { { public: /// \class iterator - class iterator : public boost::iterator_adaptor< - iterator, // crtp base, - _PathsToChangesMap::const_iterator, // base iterator - const SdfPath& // value type - > - { + class iterator { + using _UnderlyingIterator = _PathsToChangesMap::const_iterator; public: - iterator() - : iterator_adaptor_(base_type()) {} + using iterator_category = std::forward_iterator_tag; + using value_type = const SdfPath&; + using reference = const SdfPath&; + using pointer = const SdfPath*; + using difference_type = + typename _UnderlyingIterator::difference_type; + + iterator() = default; + reference operator*() const { return dereference(); } + pointer operator->() const { return &(dereference()); } + + iterator& operator++() { + ++_underlyingIterator; + return *this; + } + + iterator operator++(int) { + iterator result = *this; + ++_underlyingIterator; + return result; + } + + bool operator==(const iterator& other) const{ + return _underlyingIterator == other._underlyingIterator; + } + + bool operator!=(const iterator& other) const{ + return _underlyingIterator != other._underlyingIterator; + } /// Return the set of changed fields in layers that affected /// the object at the path specified by this iterator. See @@ -171,15 +194,27 @@ class UsdNotice { /// details. USD_API bool HasChangedFields() const; + /// Returns the underlying iterator + _UnderlyingIterator GetBase() const { + return _underlyingIterator; + } + + /// \deprecated Use GetBase() instead. + _UnderlyingIterator base() const { + return GetBase(); + } + private: friend class PathRange; - friend class boost::iterator_core_access; - iterator(base_type baseIter) - : iterator_adaptor_(baseIter) {} + explicit iterator(_UnderlyingIterator baseIter) + : _underlyingIterator(baseIter) {} + inline reference dereference() const { - return base()->first; + return _underlyingIterator->first; } + + _UnderlyingIterator _underlyingIterator; }; using const_iterator = iterator; diff --git a/pxr/usdImaging/usdImaging/delegate.cpp b/pxr/usdImaging/usdImaging/delegate.cpp index 19dc36a044..36623631ef 100644 --- a/pxr/usdImaging/usdImaging/delegate.cpp +++ b/pxr/usdImaging/usdImaging/delegate.cpp @@ -1194,7 +1194,7 @@ _HasConnectionChanged(const SdfPath &path, const PathRange &pathRange) { PathRange::const_iterator itr = pathRange.find(path); if (itr != pathRange.end()) { - for (const SdfChangeList::Entry *entry : itr.base()->second) { + for (const SdfChangeList::Entry *entry : itr.GetBase()->second) { if (entry->flags.didChangeAttributeConnection) { return true; } From 06d60112b59aeb86116e39e11c8bf3930754f7bf Mon Sep 17 00:00:00 2001 From: Matt Kuruc Date: Wed, 15 Feb 2023 13:02:44 -0800 Subject: [PATCH 159/352] Replace `boost::iterator_range` usage for ranges of `UsdPrim`s --- pxr/usd/usd/prim.h | 383 +++++++++++------- pxr/usd/usd/primData.h | 46 --- .../usd/testenv/testUsdPrimGetDescendants.cpp | 79 ++++ 3 files changed, 317 insertions(+), 191 deletions(-) diff --git a/pxr/usd/usd/prim.h b/pxr/usd/usd/prim.h index 9e8fdcb031..679ed3e1a4 100644 --- a/pxr/usd/usd/prim.h +++ b/pxr/usd/usd/prim.h @@ -43,8 +43,7 @@ #include "pxr/usd/sdf/path.h" -#include - +#include #include #include #include @@ -72,10 +71,10 @@ class UsdVariantSet; class SdfPayload; class UsdPrimSiblingIterator; -typedef boost::iterator_range UsdPrimSiblingRange; +class UsdPrimSiblingRange; class UsdPrimSubtreeIterator; -typedef boost::iterator_range UsdPrimSubtreeRange; +class UsdPrimSubtreeRange; /// \class UsdPrim /// @@ -2223,72 +2222,6 @@ class UsdPrim : public UsdObject _ProtoToInstancePathMap _GetProtoToInstancePathMap() const; }; -#ifdef doxygen -/// Forward iterator range of sibling ::UsdPrim s. This range type contains a -/// pair of UsdPrimSiblingIterator s, denoting a half-open range of UsdPrim -/// siblings. It provides a subset of container-like API, such as begin(), -/// end(), front(), empty(), etc. -class UsdPrimSiblingRange { -public: - /// Iterator type. - typedef UsdPrimSiblingIterator iterator; - /// Const iterator type. - typedef UsdPrimSiblingIterator const_iterator; - /// Iterator difference type. - typedef unspecified-integral-type difference_type; - /// Iterator value_type. - typedef iterator::value_type value_type; - /// Iterator reference_type. - typedef iterator::reference reference; - - /// Construct with a pair of iterators. - UsdPrimSiblingRange(UsdPrimSiblingIterator begin, - UsdPrimSiblingIterator end); - - /// Construct/convert from another compatible range type. - template - UsdPrimSiblingRange(const ForwardRange &r); - - /// Assign from another compatible range type. - template - UsdPrimSiblingRange &operator=(const ForwardRange &r); - - /// First iterator. - iterator begin() const; - - /// Past-the-end iterator. - iterator end() const; - - /// Return !empty(). - operator unspecified_bool_type() const; - - /// Equality compare. - bool equal(const iterator_range&) const; - - /// Return *begin(). This range must not be empty. - reference front() const; - - /// Advance this range's begin iterator. - iterator_range& advance_begin(difference_type n); - - /// Advance this range's end iterator. - iterator_range& advance_end(difference_type n); - - ; /// Return begin() == end(). - bool empty() const; - -private: - /// Equality comparison. - friend bool operator==(const UsdPrimSiblingRange &lhs, - const UsdPrimSiblingRange &rhs); - /// Inequality comparison. - friend bool operator!=(const UsdPrimSiblingRange &lhs, - const UsdPrimSiblingRange &rhs); -}; - -#else - - /// Forward traversal iterator of sibling ::UsdPrim s. This is a /// standard-compliant iterator that may be used with STL algorithms, etc. /// Filters according to a supplied predicate. @@ -2379,8 +2312,122 @@ class UsdPrimSiblingIterator { Usd_PrimFlagsPredicate _predicate; }; -// Typedef iterator range. -typedef boost::iterator_range UsdPrimSiblingRange; +/// Forward iterator range of sibling ::UsdPrim s. This range type contains a +/// pair of UsdPrimSiblingIterator s, denoting a half-open range of UsdPrim +/// siblings. It provides a subset of container-like API, such as begin(), +/// end(), front(), empty(), etc. +class UsdPrimSiblingRange { +public: + /// Iterator type. + typedef UsdPrimSiblingIterator iterator; + /// Const iterator type. + typedef UsdPrimSiblingIterator const_iterator; + /// Iterator difference type. + typedef std::ptrdiff_t difference_type; + /// Iterator value_type. + typedef iterator::value_type value_type; + /// Iterator reference_type. + typedef iterator::reference reference; + + UsdPrimSiblingRange() = default; + + /// Construct with a pair of iterators. + UsdPrimSiblingRange(UsdPrimSiblingIterator begin, + UsdPrimSiblingIterator end) : _begin(begin), + _end(end) {} + + /// First iterator. + iterator begin() const { return _begin; } + + /// First iterator. + const_iterator cbegin() const { return _begin; } + + /// Past-the-end iterator. + iterator end() const { return _end; } + + /// Past-the-end iterator. + const_iterator cend() const { return _end; } + + /// Return !empty(). + explicit operator bool() const { return !empty(); } + + /// Equality compare. + bool equal(const UsdPrimSiblingRange& other) const { + return _begin == other._begin && _end == other._end; + } + + /// Return *begin(). This range must not be empty. + reference front() const { + TF_DEV_AXIOM(!empty()); + return *begin(); + } + + /// Advance this range's begin iterator. + UsdPrimSiblingRange& advance_begin(difference_type n) { + std::advance(_begin, n); + return *this; + } + + /// Advance this range's end iterator. + UsdPrimSiblingRange& advance_end(difference_type n) { + std::advance(_end, n); + return *this; + } + + /// Return begin() == end(). + bool empty() const { return begin() == end(); } + +private: + /// Equality comparison. + friend bool operator==(const UsdPrimSiblingRange &lhs, + const UsdPrimSiblingRange &rhs) { + return lhs.equal(rhs); + } + + /// Equality comparison. + template + friend bool operator==(const UsdPrimSiblingRange& lhs, + const ForwardRange& rhs) { + static_assert( + std::is_same::value, + "rhs must be a forward iterator." + ); + return (std::distance(std::cbegin(lhs), std::cend(lhs)) == + std::distance(std::cbegin(rhs), std::cend(rhs))) && + std::equal(std::cbegin(lhs), std::cend(lhs), std::cbegin(rhs)); + } + + /// Equality comparison. + template + friend bool operator==(const ForwardRange& lhs, + const UsdPrimSiblingRange& rhs) { + return rhs == lhs; + } + + /// Inequality comparison. + friend bool operator!=(const UsdPrimSiblingRange &lhs, + const UsdPrimSiblingRange &rhs) { + return !lhs.equal(rhs); + } + + /// Inequality comparison. + template + friend bool operator!=(const ForwardRange& lhs, + const UsdPrimSiblingRange& rhs) { + return !(lhs == rhs); + } + + /// Inequality comparison. + template + friend bool operator!=(const UsdPrimSiblingRange& lhs, + const ForwardRange& rhs) { + return !(lhs == rhs); + } + + iterator _begin; + iterator _end; +}; // Inform TfIterator it should feel free to make copies of the range type. template <> @@ -2390,9 +2437,6 @@ template <> struct Tf_ShouldIterateOverCopy< const UsdPrimSiblingRange> : std::true_type {}; -#endif // doxygen - - UsdPrimSiblingRange UsdPrim::GetFilteredChildren(const Usd_PrimFlagsPredicate &pred) const { @@ -2427,72 +2471,6 @@ UsdPrim::_MakeSiblingRange(const Usd_PrimFlagsPredicate &pred) const { SiblingIterator(nullptr, SdfPath(), pred)); } -#ifdef doxygen - -/// Forward iterator range of sibling ::UsdPrim s. This range type contains a -/// pair of UsdPrimSubtreeIterator s, denoting a half-open range of UsdPrim -/// siblings. It provides a subset of container-like API, such as begin(), -/// end(), front(), empty(), etc. -class UsdPrimSubtreeRange { -public: - /// Iterator type. - typedef UsdPrimSubtreeIterator iterator; - /// Const iterator type. - typedef UsdPrimSubtreeIterator const_iterator; - /// Iterator difference type. - typedef unspecified-integral-type difference_type; - /// Iterator value_type. - typedef iterator::value_type value_type; - /// Iterator reference_type. - typedef iterator::reference reference; - - /// Construct with a pair of iterators. - UsdPrimSubtreeRange(UsdPrimSubtreeIterator begin, - UsdPrimSubtreeIterator end); - - /// Construct/convert from another compatible range type. - template - UsdPrimSubtreeRange(const ForwardRange &r); - - /// Assign from another compatible range type. - template - UsdPrimSubtreeRange &operator=(const ForwardRange &r); - - /// First iterator. - iterator begin() const; - - /// Past-the-end iterator. - iterator end() const; - - /// Return !empty(). - operator unspecified_bool_type() const; - - /// Equality compare. - bool equal(const iterator_range&) const; - - /// Return *begin(). This range must not be empty. - reference front() const; - - /// Advance this range's begin iterator. - iterator_range& advance_begin(difference_type n); - - /// Advance this range's end iterator. - iterator_range& advance_end(difference_type n); - - /// Return begin() == end(). - bool empty() const; - -private: - /// Equality comparison. - friend bool operator==(const UsdPrimSubtreeRange &lhs, - const UsdPrimSubtreeRange &rhs); - /// Inequality comparison. - friend bool operator!=(const UsdPrimSubtreeRange &lhs, - const UsdPrimSubtreeRange &rhs); -}; - -#else - /// Forward traversal iterator of sibling ::UsdPrim s. This is a /// standard-compliant iterator that may be used with STL algorithms, etc. /// Filters according to a supplied predicate. @@ -2591,8 +2569,125 @@ class UsdPrimSubtreeIterator { Usd_PrimFlagsPredicate _predicate; }; -// Typedef iterator range. -typedef boost::iterator_range UsdPrimSubtreeRange; +/// Forward iterator range of sibling ::UsdPrim s. This range type contains a +/// pair of UsdPrimSubtreeIterator s, denoting a half-open range of UsdPrim +/// siblings. It provides a subset of container-like API, such as begin(), +/// end(), front(), empty(), etc. +class UsdPrimSubtreeRange { +public: + /// Iterator type. + typedef UsdPrimSubtreeIterator iterator; + /// Const iterator type. + typedef UsdPrimSubtreeIterator const_iterator; + /// Iterator difference type. + typedef std::ptrdiff_t difference_type; + /// Iterator value_type. + typedef iterator::value_type value_type; + /// Iterator reference_type. + typedef iterator::reference reference; + + UsdPrimSubtreeRange() = default; + + /// Construct with a pair of iterators. + UsdPrimSubtreeRange(UsdPrimSubtreeIterator begin, + UsdPrimSubtreeIterator end) : _begin(begin), + _end(end) {} + + /// First iterator. + iterator begin() const { return _begin; } + + /// First iterator. + const_iterator cbegin() const { return _begin; } + + /// Past-the-end iterator. + iterator end() const { return _end; } + + /// Past-the-end iterator. + const_iterator cend() const { return _end; } + + /// Return !empty(). + explicit operator bool() const { + return !empty(); + } + + /// Equality compare. + bool equal(const UsdPrimSubtreeRange& other) const { + return _begin == other._begin && _end == other._end; + } + + /// Return *begin(). This range must not be empty. + reference front() const { + TF_DEV_AXIOM(!empty()); + return *begin(); + } + + /// Advance this range's begin iterator. + UsdPrimSubtreeRange& advance_begin(difference_type n) { + std::advance(_begin, n); + return *this; + } + + /// Advance this range's end iterator. + UsdPrimSubtreeRange& advance_end(difference_type n) { + std::advance(_end, n); + return *this; + } + + /// Return begin() == end(). + bool empty() const { return begin() == end(); } + +private: + /// Equality comparison. + friend bool operator==(const UsdPrimSubtreeRange &lhs, + const UsdPrimSubtreeRange &rhs) { + return lhs.equal(rhs); + } + + /// Equality comparison. + template + friend bool operator==(const UsdPrimSubtreeRange& lhs, + const ForwardRange& rhs) { + static_assert( + std::is_convertible< + typename decltype(std::cbegin(rhs))::iterator_category, + std::forward_iterator_tag>::value, + "rhs must be a forward iterator." + ); + return (std::distance(std::cbegin(lhs), std::cend(lhs)) == + std::distance(std::cbegin(rhs), std::cend(rhs))) && + std::equal(std::cbegin(lhs), std::cend(lhs), std::cbegin(rhs)); + } + + /// Equality comparison. + template + friend bool operator==(const ForwardRange& lhs, + const UsdPrimSubtreeRange& rhs) { + return rhs == lhs; + } + + /// Inequality comparison. + friend bool operator!=(const UsdPrimSubtreeRange &lhs, + const UsdPrimSubtreeRange &rhs) { + return !lhs.equal(rhs); + } + + /// Inequality comparison. + template + friend bool operator!=(const ForwardRange& lhs, + const UsdPrimSubtreeRange& rhs) { + return !(lhs == rhs); + } + + /// Inequality comparison. + template + friend bool operator!=(const UsdPrimSubtreeRange& lhs, + const ForwardRange& rhs) { + return !(lhs == rhs); + } + + iterator _begin; + iterator _end; +}; // Inform TfIterator it should feel free to make copies of the range type. template <> @@ -2602,8 +2697,6 @@ template <> struct Tf_ShouldIterateOverCopy< const UsdPrimSubtreeRange> : std::true_type {}; -#endif // doxygen - UsdPrimSubtreeRange UsdPrim::GetFilteredDescendants(const Usd_PrimFlagsPredicate &pred) const { diff --git a/pxr/usd/usd/primData.h b/pxr/usd/usd/primData.h index 3a5165c5fb..4bdba2bf8e 100644 --- a/pxr/usd/usd/primData.h +++ b/pxr/usd/usd/primData.h @@ -40,7 +40,6 @@ #include "pxr/usd/sdf/path.h" -#include #include #include @@ -305,19 +304,11 @@ class Usd_PrimData _flags[Usd_PrimClipsFlag] = hasClips; } - typedef boost::iterator_range< - class Usd_PrimDataSiblingIterator> SiblingRange; - inline class Usd_PrimDataSiblingIterator _ChildrenBegin() const; inline class Usd_PrimDataSiblingIterator _ChildrenEnd() const; - inline SiblingRange _GetChildrenRange() const; - - typedef boost::iterator_range< - class Usd_PrimDataSubtreeIterator> SubtreeRange; inline class Usd_PrimDataSubtreeIterator _SubtreeBegin() const; inline class Usd_PrimDataSubtreeIterator _SubtreeEnd() const; - inline SubtreeRange _GetSubtreeRange() const; // Data members. UsdStage *_stage; @@ -401,18 +392,6 @@ class Usd_PrimDataSiblingIterator { _UnderylingIterator _underlyingIterator = nullptr; }; -// Sibling range. -typedef boost::iterator_range< - class Usd_PrimDataSiblingIterator> Usd_PrimDataSiblingRange; - -// Inform TfIterator it should feel free to make copies of the range type. -template <> -struct Tf_ShouldIterateOverCopy< - Usd_PrimDataSiblingRange> : std::true_type {}; -template <> -struct Tf_ShouldIterateOverCopy< - const Usd_PrimDataSiblingRange> : std::true_type {}; - Usd_PrimDataSiblingIterator Usd_PrimData::_ChildrenBegin() const { @@ -425,13 +404,6 @@ Usd_PrimData::_ChildrenEnd() const return Usd_PrimDataSiblingIterator(0); } -Usd_PrimData::SiblingRange -Usd_PrimData::_GetChildrenRange() const -{ - return Usd_PrimData::SiblingRange(_ChildrenBegin(), _ChildrenEnd()); -} - - // Tree iterator class. class Usd_PrimDataSubtreeIterator { using _UnderlyingIterator = Usd_PrimData*; @@ -485,18 +457,6 @@ class Usd_PrimDataSubtreeIterator { _UnderlyingIterator _underlyingIterator = nullptr; }; -// Tree range. -typedef boost::iterator_range< - class Usd_PrimDataSubtreeIterator> Usd_PrimDataSubtreeRange; - -// Inform TfIterator it should feel free to make copies of the range type. -template <> -struct Tf_ShouldIterateOverCopy< - Usd_PrimDataSubtreeRange> : std::true_type {}; -template <> -struct Tf_ShouldIterateOverCopy< - const Usd_PrimDataSubtreeRange> : std::true_type {}; - Usd_PrimDataSubtreeIterator Usd_PrimData::_SubtreeBegin() const { @@ -510,12 +470,6 @@ Usd_PrimData::_SubtreeEnd() const return Usd_PrimDataSubtreeIterator(GetNextPrim()); } -Usd_PrimData::SubtreeRange -Usd_PrimData::_GetSubtreeRange() const -{ - return Usd_PrimData::SubtreeRange(_SubtreeBegin(), _SubtreeEnd()); -} - // Helpers for instance proxies. // Return true if the prim with prim data \p p and proxy prim path diff --git a/pxr/usd/usd/testenv/testUsdPrimGetDescendants.cpp b/pxr/usd/usd/testenv/testUsdPrimGetDescendants.cpp index 2881f44884..0c44cdda9f 100644 --- a/pxr/usd/usd/testenv/testUsdPrimGetDescendants.cpp +++ b/pxr/usd/usd/testenv/testUsdPrimGetDescendants.cpp @@ -33,6 +33,84 @@ PXR_NAMESPACE_USING_DIRECTIVE +static void +TestRangeEqualityOperators() +{ + const std::string layerFile = "test.usda"; + UsdStageRefPtr stage = UsdStage::Open(layerFile, UsdStage::LoadNone); + TF_AXIOM(stage->GetPseudoRoot().GetAllDescendants()); + TF_AXIOM(!stage->GetPseudoRoot().GetAllDescendants().empty()); + + // Test UsdPrimSubtreeRange equality operator + TF_AXIOM(UsdPrimSubtreeRange() == UsdPrimSubtreeRange()); + TF_AXIOM(stage->GetPseudoRoot().GetAllDescendants() == + stage->GetPseudoRoot().GetAllDescendants()); + + // Test UsdPrimSubtreeRange templated equality operator + TF_AXIOM(UsdPrimSubtreeRange() == std::vector()); + TF_AXIOM(std::vector() == UsdPrimSubtreeRange()); + { + const auto allDescendants = stage->GetPseudoRoot().GetAllDescendants(); + std::vector allPrims( + std::begin(allDescendants), + std::end(allDescendants) + ); + TF_AXIOM(!allPrims.empty()); + TF_AXIOM(stage->GetPseudoRoot().GetAllDescendants() == allPrims); + TF_AXIOM(allPrims == stage->GetPseudoRoot().GetAllDescendants()); + } + + // Test UsdPrimSubtreeRange inequality operator + TF_AXIOM(stage->GetPseudoRoot().GetAllDescendants() != + stage->GetPseudoRoot().GetFilteredDescendants(UsdPrimIsModel)); + + // Test UsdPrimSubtreeRange templated inequality operator + TF_AXIOM(stage->GetPseudoRoot().GetAllDescendants() != + std::vector()); + TF_AXIOM(std::vector() != + stage->GetPseudoRoot().GetAllDescendants()); + { + const auto allDescendants = stage->GetPseudoRoot().GetAllDescendants(); + std::vector allDescendantsPlusOne( + std::begin(allDescendants), + std::end(allDescendants) + ); + allDescendantsPlusOne.push_back(UsdPrim()); + TF_AXIOM(allDescendantsPlusOne.size() > 1); + TF_AXIOM(stage->GetPseudoRoot().GetAllDescendants() != + allDescendantsPlusOne); + TF_AXIOM(allDescendantsPlusOne != + stage->GetPseudoRoot().GetAllDescendants()); + } + { + const auto allDescendants = stage->GetPseudoRoot().GetAllDescendants(); + std::vector allDescendantsMinusOne( + std::begin(allDescendants), + std::end(allDescendants) + ); + TF_AXIOM(!allDescendantsMinusOne.empty()); + allDescendantsMinusOne.pop_back(); + TF_AXIOM(stage->GetPseudoRoot().GetAllDescendants() != + allDescendantsMinusOne); + TF_AXIOM(allDescendantsMinusOne != + stage->GetPseudoRoot().GetAllDescendants()); + } + { + const auto allDescendants = stage->GetPseudoRoot().GetAllDescendants(); + std::vector allDescendantsBackReplaced( + std::begin(allDescendants), + std::end(allDescendants) + ); + TF_AXIOM(!allDescendantsBackReplaced.empty()); + TF_AXIOM(allDescendantsBackReplaced.back() != UsdPrim()); + allDescendantsBackReplaced.back() = UsdPrim(); + TF_AXIOM(stage->GetPseudoRoot().GetAllDescendants() != + allDescendantsBackReplaced); + TF_AXIOM(allDescendantsBackReplaced != + stage->GetPseudoRoot().GetAllDescendants()); + } +} + static void TestGetDescendants() { @@ -249,6 +327,7 @@ TestGetDescendantsAsInstanceProxies() int main(int argc, char** argv) { + TestRangeEqualityOperators(); TestGetDescendants(); TestGetDescendantsAsInstanceProxies(); From 5ada2eba4a72f393149d3a54f035d46d79168767 Mon Sep 17 00:00:00 2001 From: Chad Dombrova Date: Sat, 5 Aug 2023 10:17:44 -0700 Subject: [PATCH 160/352] Remove change to .gitignore --- .gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 876d49c12d..571237db33 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ .p4* .DS_Store -.AppleDouble -*.pyc +.AppleDouble \ No newline at end of file From 4a480a9fbbe71e2b47dc54992f664fd2b488f3b7 Mon Sep 17 00:00:00 2001 From: Paul Molodowitch Date: Thu, 29 Jun 2023 13:50:17 -0700 Subject: [PATCH 161/352] [docs] convertDoxygen.py: print stack trace on errors if debug mode on --- docs/python/doxygenlib/cdUtils.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/python/doxygenlib/cdUtils.py b/docs/python/doxygenlib/cdUtils.py index dc37954c38..3343a0e499 100644 --- a/docs/python/doxygenlib/cdUtils.py +++ b/docs/python/doxygenlib/cdUtils.py @@ -32,7 +32,7 @@ import os import sys import inspect -import re +import traceback __debugMode = True @@ -43,7 +43,10 @@ def Error(msg): """Output a fatal error message and exit the program.""" - print("Error: %s" % msg) + print("Error: %s" % msg, flush=True) + if __debugMode: + traceback.print_stack() + sys.stderr.flush() sys.exit(1) def Warn(msg): From 4fce96b33327d856004204665141ee913498c2a4 Mon Sep 17 00:00:00 2001 From: Paul Molodowitch Date: Thu, 29 Jun 2023 14:12:57 -0700 Subject: [PATCH 162/352] [docs] raise cmake error if converting python docstrings fails --- cmake/macros/Public.cmake | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/cmake/macros/Public.cmake b/cmake/macros/Public.cmake index a1734b6a2a..9243f680c4 100644 --- a/cmake/macros/Public.cmake +++ b/cmake/macros/Public.cmake @@ -1270,12 +1270,18 @@ function(pxr_build_python_documentation) string(REPLACE ";" "," pxrPythonModulesStr "${pxrPythonModules}") # Run convertDoxygen on the module list, setting PYTHONPATH # to the install path for the USD Python modules - install(CODE "execute_process(\ - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/cmake \ - COMMAND ${PYTHON_EXECUTABLE} ${CONVERT_DOXYGEN_TO_PYTHON_DOCS_SCRIPT} \ - --package pxr --module ${pxrPythonModulesStr} \ - --inputIndex ${BUILT_XML_DOCS}/index.xml \ - --pythonPath ${CMAKE_INSTALL_PREFIX}/lib/python \ - --output ${INSTALL_PYTHON_PXR_ROOT})") + install(CODE "\ + execute_process(\ + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/cmake \ + RESULT_VARIABLE convert_doxygen_return_code + COMMAND ${PYTHON_EXECUTABLE} ${CONVERT_DOXYGEN_TO_PYTHON_DOCS_SCRIPT} \ + --package pxr --module ${pxrPythonModulesStr} \ + --inputIndex ${BUILT_XML_DOCS}/index.xml \ + --pythonPath ${CMAKE_INSTALL_PREFIX}/lib/python \ + --output ${INSTALL_PYTHON_PXR_ROOT}) + if (NOT \${convert_doxygen_return_code} EQUAL \"0\") + message( FATAL_ERROR \"Error generating python docstrings - ${CONVERT_DOXYGEN_TO_PYTHON_DOCS_SCRIPT} return code: \${convert_doxygen_return_code} \") + endif() + ") endfunction() # pxr_build_python_documentation \ No newline at end of file From 9a4c22932e62ea6d1c47bf2af3829f23820410bb Mon Sep 17 00:00:00 2001 From: Stephen Mackenzie Date: Wed, 19 Jul 2023 15:55:40 -0400 Subject: [PATCH 163/352] [docs] cdWriterDocstring - don't word-wrap inside CODE sections --- docs/python/doxygenlib/cdWriterDocstring.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/python/doxygenlib/cdWriterDocstring.py b/docs/python/doxygenlib/cdWriterDocstring.py index 0bf50695da..d80207d2d2 100644 --- a/docs/python/doxygenlib/cdWriterDocstring.py +++ b/docs/python/doxygenlib/cdWriterDocstring.py @@ -228,11 +228,17 @@ def __wordWrapDocString(self, lines): # following lines of a list item are indented at the same # level. We word wrap the text, but don't break long words # as we don't want to word wrap code sections. + # Take extra care with doxygen lifted CODE block lines. textWrapper = textwrap.TextWrapper(width=70, break_long_words=False) - newlines = list(map(textWrapper.fill, newlines)) + wrapped_lines = [] + for line in newlines: + if line.startswith("CODE_START"): # skip line wrapping on codeblock - manually unwrapped below + wrapped_lines.append(line) + else: + wrapped_lines.append(textWrapper.fill(line)) lines = [] inlistitem = False - for curline in newlines: + for curline in wrapped_lines: # the textwrap.fill call adds \n's at line breaks for line in curline.split('\n'): if line.startswith(" - "): From 4442b77c8712c127483ae383a6857fdc97588c47 Mon Sep 17 00:00:00 2001 From: Paul Molodowitch Date: Thu, 27 Jul 2023 13:37:30 -0700 Subject: [PATCH 164/352] [docs] py docstrings: use "classmethod" not "static" static is a C++ term, not a python one --- docs/python/doxygenlib/cdUtils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/python/doxygenlib/cdUtils.py b/docs/python/doxygenlib/cdUtils.py index dc37954c38..13fcddedcd 100644 --- a/docs/python/doxygenlib/cdUtils.py +++ b/docs/python/doxygenlib/cdUtils.py @@ -39,7 +39,7 @@ ATTR_NOT_IN_PYTHON = 'notinpython' ATTR_STATIC_METHOD = 'staticmethod' -LABEL_STATIC = '**static** ' +LABEL_STATIC = '**classmethod** ' def Error(msg): """Output a fatal error message and exit the program.""" From 730e526bb4889dd4741f3e216889ac4461fa3efe Mon Sep 17 00:00:00 2001 From: Paul Molodowitch Date: Tue, 25 Jul 2023 16:02:20 -0700 Subject: [PATCH 165/352] [docs] py docstrings: get rid of, ie "USD_API" type name prefixes ...when going from C++ to python --- docs/python/doxygenlib/cdWriterDocstring.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/python/doxygenlib/cdWriterDocstring.py b/docs/python/doxygenlib/cdWriterDocstring.py index 0bf50695da..8ba03a22b4 100644 --- a/docs/python/doxygenlib/cdWriterDocstring.py +++ b/docs/python/doxygenlib/cdWriterDocstring.py @@ -42,6 +42,11 @@ from .cdUtils import * + +API_RE_FIND = re.compile(r"""\b[A-Z]+_API(?:\s+|$)""") +API_RE_REPLACE = "" + + class Writer: """ Manage the formatting of Python docstrings and output file generation. @@ -483,6 +488,7 @@ def __convertTypeName(self, cppName): ret = ret.replace('boost::', '') ret = ret.replace('vector', 'sequence') ret = ret.replace('::', '.') + ret = API_RE_FIND.sub(API_RE_REPLACE, ret) ret = ret.strip() if ret.startswith(self.prefix): ret = ret[len(self.prefix):] From fe670a983dd6b0d9fe8004ce204555376dd029af Mon Sep 17 00:00:00 2001 From: klucknav Date: Tue, 8 Aug 2023 15:08:07 -0700 Subject: [PATCH 166/352] [hdPrman] RenderParam clean ups, no change of behavior (Internal change: 2289298) --- .../plugin/hdPrman/renderParam.cpp | 381 ++++++++++-------- 1 file changed, 202 insertions(+), 179 deletions(-) diff --git a/third_party/renderman-25/plugin/hdPrman/renderParam.cpp b/third_party/renderman-25/plugin/hdPrman/renderParam.cpp index ffa6cfd11d..d44b1b540f 100644 --- a/third_party/renderman-25/plugin/hdPrman/renderParam.cpp +++ b/third_party/renderman-25/plugin/hdPrman/renderParam.cpp @@ -1367,6 +1367,25 @@ _ToRtParamList(VtDictionary const& dict) return params; } +// TODO this is not a robust solution +static +RtUString +_GetOutputDisplayDriverType(const TfToken &name) +{ + // get output display driver type + // TODO this is not a robust solution + static const std::map extToDisplayDriver{ + { std::string("exr"), TfToken("openexr") }, + { std::string("tif"), TfToken("tiff") }, + { std::string("tiff"), TfToken("tiff") }, + { std::string("png"), TfToken("png") } + }; + + const std::string outputExt = TfGetExtension(name.GetString()); + const TfToken displayFormat = extToDisplayDriver.at(outputExt); + return RtUString(displayFormat.GetText()); +} + static HdPrman_RenderViewDesc _ComputeRenderViewDesc( @@ -1432,19 +1451,7 @@ _ComputeRenderViewDesc( HdPrmanExperimentalRenderSpecTokens->name)); displayDesc.name = RtUString(name.GetText()); - - // get output display driver type - // TODO this is not a robust solution - static const std::map extToDisplayDriver{ - { std::string("exr"), TfToken("openexr") }, - { std::string("tif"), TfToken("tiff") }, - { std::string("tiff"), TfToken("tiff") }, - { std::string("png"), TfToken("png") } - }; - - const std::string outputExt = TfGetExtension(name.GetString()); - const TfToken displayFormat = extToDisplayDriver.at(outputExt); - displayDesc.driver = RtUString(displayFormat.GetText()); + displayDesc.driver = _GetOutputDisplayDriverType(name); displayDesc.params = _ToRtParamList( VtDictionaryGet( @@ -1467,8 +1474,9 @@ _ComputeRenderViewDesc( // Forward declaration of helper to create Render Output in the RenderViewDesc static RtUString -_AddRenderOutput(RtUString aovName, HdFormat aovFormat, - const TfToken &dataType, RtUString sourceName, const RtParamList ¶ms, +_AddRenderOutput(RtUString aovName, + const TfToken &dataType, HdFormat aovFormat, + RtUString sourceName, const RtParamList ¶ms, std::vector *renderOutputDescs, std::vector *renderOutputIndices); @@ -1507,18 +1515,7 @@ _ComputeRenderViewDesc( HdPrman_RenderViewDesc::DisplayDesc displayDesc; displayDesc.name = RtUString(product.name.GetText()); displayDesc.params = _ToRtParamList(product.namespacedSettings); - - // get output display driver type - // TODO this is not a robust solution - static const std::map extToDisplayDriver{ - { std::string("exr"), TfToken("openexr") }, - { std::string("tif"), TfToken("tiff") }, - { std::string("tiff"), TfToken("tiff") }, - { std::string("png"), TfToken("png") } - }; - const std::string outputExt = TfGetExtension(product.name.GetString()); - const TfToken displayFormat = extToDisplayDriver.at(outputExt); - displayDesc.driver = RtUString(displayFormat.GetText()); + displayDesc.driver = _GetOutputDisplayDriverType(product.name); /* RenderVar */ for (const HdRenderSettings::RenderProduct::RenderVar &renderVar : @@ -1535,7 +1532,7 @@ _ComputeRenderViewDesc( displayDesc.renderOutputIndices.push_back(renderVarIndex); renderVarIndex++; - // Map source to Ri name. + // Map renderVar sourceName to Ri name. std::string varSourceName = (renderVar.sourceType == _tokens->lpe) ? _tokens->lpe.GetString() + ":" + renderVar.sourceName : renderVar.sourceName; @@ -1547,8 +1544,8 @@ _ComputeRenderViewDesc( // this function, we are instead relying on the indices stored above std::vector renderOutputIndices; _AddRenderOutput(sourceName, - HdFormatInvalid, // to use the renderVar.dataType renderVar.dataType, + HdFormatInvalid, // using renderVar.dataType sourceName, _ToRtParamList(renderVar.namespacedSettings), &renderViewDesc.renderOutputDescs, @@ -1598,7 +1595,7 @@ void HdPrman_RenderParam::_DestroyRiley() { if (_mgr) { - if(_riley) { + if (_riley) { // Riley/RIS crashes if SetOptions hasn't been called prior to // destroying the riley instance. if (!_initRileyOptions) { @@ -1926,8 +1923,7 @@ _Compose( } void -HdPrman_RenderParam::SetRenderSettingsPrimOptions( - RtParamList const ¶ms) +HdPrman_RenderParam::SetRenderSettingsPrimOptions(RtParamList const ¶ms) { _renderSettingsPrimOptions = params; } @@ -1990,8 +1986,7 @@ HdPrman_RenderParam::SetRileyOptions() } void -HdPrman_RenderParam::SetActiveIntegratorId( - const riley::IntegratorId id) +HdPrman_RenderParam::SetActiveIntegratorId(const riley::IntegratorId id) { _activeIntegratorId = id; @@ -2131,10 +2126,10 @@ HdPrman_RenderParam::_UpdateFramebufferClearValues( } return true; -} +} static riley::RenderOutputType -_ToRenderOutputTypeFromFormat(const HdFormat aovFormat) +_ToRenderOutputTypeFromHdFormat(const HdFormat aovFormat) { // Prman only supports float, color, and integer if(aovFormat == HdFormatFloat32) { @@ -2149,8 +2144,9 @@ _ToRenderOutputTypeFromFormat(const HdFormat aovFormat) } } +// If the aovFormat has 3 or 4 channels, make format Float32 static void -_FixOutputFormat(HdFormat* aovFormat) +_AdjustColorFormat(HdFormat* aovFormat) { // Prman always renders colors as float, so for types with 3 or 4 // components, always set the format in our framebuffer to float. @@ -2165,92 +2161,114 @@ _FixOutputFormat(HdFormat* aovFormat) } } +// Update the given Rman AOV and Source names +// - aovName: Map the given hdAovName to the Prman equivalent +// - SourceName: Add 'lpe:' prefix as needed static void -_GetAovName(const TfToken hdAovName, - bool isXPU, bool isLPE, - RtUString * rmanAovName, RtUString * rmanSourceName) +_UpdateRmanAovAndSourceName( + bool isXPU, bool isLPE, + const TfToken &hdAovName, + RtUString *rmanAovName, + RtUString *rmanSourceName) { - static const RtUString us_ci("ci"); static const RtUString us_st("__st"); static const RtUString us_primvars_st("primvars:st"); - if(!hdAovName.GetString().empty()) + // Initialize rmanAovName with the HdAovName + if (!hdAovName.GetString().empty()) { *rmanAovName = RtUString(hdAovName.GetText()); + } // If the sourceType hints that the source is an lpe, make sure // it starts with "lpe:" as required by prman. - if(isLPE) { - std::string sn = rmanSourceName->CStr(); - if(sn.find(RixStr.k_lpe.CStr()) == std::string::npos) - sn = "lpe:" + sn; + if (isLPE) { + std::string sn = (sn.find(RixStr.k_lpe.CStr()) == std::string::npos) + ? "lpe:" + std::string(rmanSourceName->CStr()) + : rmanSourceName->CStr(); *rmanSourceName = RtUString(sn.c_str()); } - // Map some standard hydra aov names to their equivalent prman names - if(hdAovName == HdAovTokens->color || - hdAovName.GetString() == us_ci.CStr()) { + // Update the Aov and Source names by mapping the HdAovName to an + // equivalent Prman name + if (hdAovName == HdAovTokens->color || hdAovName.GetString() == "ci") { *rmanAovName = RixStr.k_Ci; *rmanSourceName = RixStr.k_Ci; - } else if(hdAovName == HdAovTokens->depth) { + } else if (hdAovName == HdAovTokens->depth) { *rmanSourceName = RixStr.k_z; - } else if(hdAovName == HdAovTokens->normal) { + } else if (hdAovName == HdAovTokens->normal) { *rmanSourceName= RixStr.k_Nn; - } else if(hdAovName == HdAovTokens->primId) { + } else if (hdAovName == HdAovTokens->primId) { *rmanAovName = RixStr.k_id; *rmanSourceName = RixStr.k_id; - } else if(hdAovName == HdAovTokens->instanceId) { + } else if (hdAovName == HdAovTokens->instanceId) { *rmanAovName = RixStr.k_id2; *rmanSourceName = RixStr.k_id2; - } else if(hdAovName == HdAovTokens->elementId) { + } else if (hdAovName == HdAovTokens->elementId) { *rmanAovName = RixStr.k_faceindex; *rmanSourceName = RixStr.k_faceindex; - } else if(*rmanAovName == us_primvars_st) { + } else if (*rmanAovName == us_primvars_st) { *rmanSourceName = us_st; } // If no sourceName is specified, assume name is a standard prman aov - if(rmanSourceName->Empty()) { + if (rmanSourceName->Empty()) { *rmanSourceName = *rmanAovName; } // XPU is picky about AOV names, it wants only standard names - if(isXPU) { + if (isXPU) { *rmanAovName = *rmanSourceName; } } +// Return a RtParamList of the driver settings in the given aovSettings +// and update the Rman Aov and Source Names based on the aovSettings static RtParamList -_GetOutputParams(const HdAovSettingsMap& aovSettings, - bool isXPU, - RtUString* rmanAovName, - RtUString* rmanSourceName) +_GetOutputParamsAndUpdateRmanNames( + const HdAovSettingsMap &aovSettings, + bool isXPU, + RtUString *rmanAovName, + RtUString *rmanSourceName) { RtParamList params; - // Translate settings from HdAovSettingsMap to RtParamList - std::string sourceType; + bool isLPE = false; TfToken hdAovName(rmanAovName->CStr()); for (auto const& aovSetting : aovSettings) { const TfToken & settingName = aovSetting.first; const VtValue & settingVal = aovSetting.second; + + // Update hdAovName and rmanSourceName if authored in the aovSettingsMap if (settingName == _tokens->sourceName) { *rmanSourceName = RtUString(settingVal.GetWithDefault().c_str()); - } else if (settingName == _tokens->name) { + } + else if (settingName == _tokens->name) { hdAovName = settingVal.UncheckedGet(); - } else if (settingName == _tokens->sourceType) { - sourceType = settingVal.GetWithDefault().GetString(); - } else if (TfStringStartsWith(settingName.GetText(), - "driver:parameters:aov:")) { + } + + // Determine if the output is of type LPE or not + else if (settingName == _tokens->sourceType) { + const std::string sourceType = + settingVal.GetWithDefault().GetString(); + isLPE = (sourceType == RixStr.k_lpe.CStr()); + } + + // Gather all properties with the 'driver:parameters:aov' prefix + // into the RtParamList, updating the hdAovName if needed. + else if (TfStringStartsWith( + settingName.GetText(), "driver:parameters:aov:")) { RtUString name(TfStringGetSuffix(settingName, ':').c_str()); - if(name == RixStr.k_name) { + if (name == RixStr.k_name) { hdAovName = settingVal.UncheckedGet(); } else { _SetParamValue(name, settingVal, TfToken(), params); } } } - _GetAovName(hdAovName, isXPU, sourceType == RixStr.k_lpe.CStr(), - rmanAovName, rmanSourceName); + + _UpdateRmanAovAndSourceName( + isXPU, isLPE, hdAovName, rmanAovName, rmanSourceName); + return params; } @@ -2361,8 +2379,8 @@ static RtUString _AddRenderOutput( RtUString aovName, - HdFormat aovFormat, const TfToken &dataType, + HdFormat aovFormat, RtUString sourceName, const RtParamList& params, std::vector * renderOutputDescs, @@ -2372,13 +2390,13 @@ _AddRenderOutput( static RtUString const k_sampleCount("sampleCount"); static RtUString const k_none("none"); - // Get the Render Type from the given RtParamList - riley::RenderOutputType rt = _ToRenderOutputTypeFromFormat(aovFormat); - if(!dataType.IsEmpty()) { - rt = _ToRenderOutputType(dataType); - } + // Get the Render Type from the given dataType, or aovFormat + riley::RenderOutputType rType = (dataType.IsEmpty()) + ? _ToRenderOutputTypeFromHdFormat(aovFormat) + : _ToRenderOutputType(dataType); + // Make sure 'Ci' sources use the Color Output type if (sourceName == RixStr.k_Ci) { - rt = riley::RenderOutputType::k_Color; + rType = riley::RenderOutputType::k_Color; } // Get the rule, filter, and filterSize from the given RtParamList @@ -2399,28 +2417,27 @@ _AddRenderOutput( RtUString value; static const RtUString k_depth("depth"); // "cpuTime" and "sampleCount" should use rule "sum" - if(aovName == k_cpuTime || aovName == k_sampleCount) { + if (aovName == k_cpuTime || aovName == k_sampleCount) { rule = RixStr.k_sum; filter = RixStr.k_box; filterSize[0] = 1; filterSize[1] = 1; // "id", "id2", "z" and "depth" should use rule "zmin" - } else if(aovName == RixStr.k_id || aovName == RixStr.k_id2 || - aovName == RixStr.k_z || - aovName == k_depth || - rt == riley::RenderOutputType::k_Integer) { + } else if (aovName == RixStr.k_id || aovName == RixStr.k_id2 || + aovName == RixStr.k_z || aovName == k_depth || + rType == riley::RenderOutputType::k_Integer) { rule = RixStr.k_zmin; filter = RixStr.k_box; filterSize[0] = 1; filterSize[1] = 1; // If statistics are set, use that as the rule - } else if(params.GetString(RixStr.k_statistics, value) && + } else if (params.GetString(RixStr.k_statistics, value) && !value.Empty() && value != k_none) { rule = value; // Certain filter types need to be converted to rules - } else if(filter == RixStr.k_min || filter == RixStr.k_max || - filter == RixStr.k_zmin || filter == RixStr.k_zmax || - filter == RixStr.k_sum || filter == RixStr.k_average) { + } else if (filter == RixStr.k_min || filter == RixStr.k_max || + filter == RixStr.k_zmin || filter == RixStr.k_zmax || + filter == RixStr.k_sum || filter == RixStr.k_average) { rule = filter; filter = RixStr.k_box; filterSize[0] = 1; @@ -2440,10 +2457,11 @@ _AddRenderOutput( extraParams.SetFloatArray(RixStr.k_remap, remap, 3); } + // Create the RenderOutputDesc for this AOV { HdPrman_RenderViewDesc::RenderOutputDesc renderOutputDesc; renderOutputDesc.name = aovName; - renderOutputDesc.type = rt; + renderOutputDesc.type = rType; renderOutputDesc.sourceName = sourceName; renderOutputDesc.rule = rule; renderOutputDesc.filter = filter; @@ -2457,8 +2475,8 @@ _AddRenderOutput( // When a float4 color is requested, assume we require alpha as well. // This assumption is reflected in framebuffer.cpp HydraDspyData - int componentCount = HdGetComponentCount(aovFormat); - if (rt == riley::RenderOutputType::k_Color && componentCount == 4) { + const int componentCount = HdGetComponentCount(aovFormat); + if (rType == riley::RenderOutputType::k_Color && componentCount == 4) { HdPrman_RenderViewDesc::RenderOutputDesc renderOutputDesc; renderOutputDesc.name = RixStr.k_a; renderOutputDesc.type = riley::RenderOutputType::k_Float; @@ -2484,21 +2502,23 @@ _ComputeRenderOutputAndAovDescs( std::unordered_map sourceNames; for (const HdRenderPassAovBinding &aovBinding : aovBindings) { - TfToken dataType; - std::string sourceType; + + // RmanAovName RtUString rmanAovName(aovBinding.aovName.GetText()); - RtUString rmanSourceName; + // AovFormat HdFormat aovFormat = aovBinding.renderBuffer->GetFormat(); - _FixOutputFormat(&aovFormat); + _AdjustColorFormat(&aovFormat); + // Rman Aov and Source Names, and RenderOutputParams + RtUString rmanSourceName; RtParamList renderOutputParams = - _GetOutputParams(aovBinding.aovSettings, - isXpu, - &rmanAovName, - &rmanSourceName); - - if(!rmanSourceName.Empty()) { + _GetOutputParamsAndUpdateRmanNames( + aovBinding.aovSettings, + isXpu, + &rmanAovName, + &rmanSourceName); + if (!rmanSourceName.Empty()) { // This is a workaround for an issue where we get an // unexpected duplicate in the aovBindings sometimes, // where the second entry lacks a sourceName. @@ -2507,21 +2527,21 @@ _ComputeRenderOutputAndAovDescs( sourceNames[aovBinding.aovName] = rmanSourceName; } else { auto it = sourceNames.find(aovBinding.aovName); - if(it != sourceNames.end()) - { + if (it != sourceNames.end()) { rmanSourceName = it->second; } } - + // Create a RenderOutputDesc from the aovBinding RtUString rule = _AddRenderOutput(rmanAovName, + TfToken(), aovFormat, - dataType, rmanSourceName, - renderOutputParams, + renderOutputParams, renderOutputDescs, renderOutputIndices); + // Create a AovDesc from the aovBinding { HdPrmanFramebuffer::AovDesc aovDesc; aovDesc.name = aovBinding.aovName; @@ -2587,8 +2607,6 @@ HdPrman_RenderParam::CreateFramebufferAndRenderViewFromAovs( _framebuffer->CreateAovBuffers(aovDescs); - renderViewDesc.resolution = resolution; - RtParamList displayParams; static const RtUString us_hydra("hydra"); _CreateRileyDisplay(RixStr.k_framebuffer, @@ -2602,6 +2620,7 @@ HdPrman_RenderParam::CreateFramebufferAndRenderViewFromAovs( renderViewDesc.integratorId = GetActiveIntegratorId(); renderViewDesc.sampleFilterList = GetSampleFilterList(); renderViewDesc.displayFilterList = GetDisplayFilterList(); + renderViewDesc.resolution = resolution; GetRenderViewContext().CreateRenderView(renderViewDesc, riley); } @@ -2610,41 +2629,41 @@ void HdPrman_RenderParam::CreateRenderViewFromProducts( const VtArray& renderProducts, int frame) { - // Currently we're not supporting dspy edits in hdprman - // when using RenderMan dspy drivers, which are inteded for use - // in batch rendering, so bail here if riley has already been started, - // which means displays already exist. - if(renderProducts.empty() || - GetRenderViewContext().GetRenderViewId() != - riley::RenderViewId::InvalidId()) { + // Display edits are not currently supported in HdPrman + // RenderMan Display drivers are inteded for use in batch rendering, + // so bail here if Riley has already been started, since this means that + // the Displays already exist. + if (renderProducts.empty() || + GetRenderViewContext().GetRenderViewId() != + riley::RenderViewId::InvalidId()) { return; } - // Currently XPU only supports having one riley target and view. - // We loop over the render products here (a usd concept) - // and make a list of riley displays; - // a display roughly corresponds to a product. - // We also need to collect a list of all the outputs (aovs) used by - // all the displays. - // One target will be used for all displays. It needs to be - // created before the displays and takes a list of all possible outputs. - // Then displays are created, each referencing the target's id. - // Finally, a view is created, also referencing the target's id. - // In the future, when xpu supports it, we may want to change this to allow - // for a different target/view for each display. + // Currently XPU only supports having one Riley Target and View. + // Here we loop over the Render Products (a USD concept which corresponds + // to a Riley Display), make a list of Riley Displays, and collect a list + // of all the outputs (AOVs) used by the Displays. + // One Target will be used for all Displays, it needs to be created + // before the Displays, and takes a list of all possible outputs (AOVs). + // + // The View and Displays are created, each referencing the Target's id. + // + // XXX In the future, when xpu supports it, we may want to change this to + // allow for a different Target/View for each Display. HdPrman_RenderViewDesc renderViewDesc; - unsigned idx=0; + unsigned idx = 0; for (const HdRenderSettingsMap& renderProduct : renderProducts) { - TfToken productType; TfToken productName; + TfToken productType; std::string sourcePrimName; VtArray aovs; - // for each display setting - // productType or productName not guarunteed to exist - // order not guarunteed so must save relavant settings + // Note: + // - productType or productName are not guaranteed to exist + // - order of settings is not guaranteed so we save relevant settings + // to the driverParameters std::vector driverParameters; for (auto const& productSetting : renderProduct) { const TfToken& settingName = productSetting.first; @@ -2654,12 +2673,13 @@ HdPrman_RenderParam::CreateRenderViewFromProducts( } else if (settingName == HdPrmanRenderProductTokens->productName) { productName = settingVal.UncheckedGet(); } else if (settingName == HdPrmanRenderProductTokens->orderedVars) { - // Move Ci,a to front of aovs list VtArray orderedVars = settingVal.UncheckedGet>(); + + // Find Ci and a Outputs in the RenderVar list int Ci_idx = -1; int a_idx = -1; - for (size_t i=0; i < orderedVars.size(); ++i) { + for (size_t i = 0; i < orderedVars.size(); ++i) { std::string srcName; const HdAovSettingsMap &orderedVar = orderedVars[i]; auto it = @@ -2668,33 +2688,34 @@ HdPrman_RenderParam::CreateRenderViewFromProducts( srcName = it->second.UncheckedGet(); } if (Ci_idx < 0 && srcName == RixStr.k_Ci.CStr()) { - if(Ci_idx != -1) { + if (Ci_idx != -1) { TF_WARN("Multiple Ci outputs found\n"); } Ci_idx = i; - } else if(a_idx < 0 && srcName == RixStr.k_a.CStr()) { + } else if (a_idx < 0 && srcName == RixStr.k_a.CStr()) { a_idx = i; } - if(Ci_idx >= 0 && a_idx >= 0) { + if (Ci_idx >= 0 && a_idx >= 0) { break; } } + + // Populate the AOVs Array from the RenderVar list making sure + // that the Ci and a RenderVars are first. aovs.reserve(orderedVars.size()); - if(Ci_idx >= 0 && - Ci_idx < static_cast(orderedVars.size())) { + if (Ci_idx >= 0 && Ci_idx < static_cast(orderedVars.size())) { aovs.push_back(orderedVars[Ci_idx]); } - if(a_idx >= 0 && - a_idx < static_cast(orderedVars.size())) { + if (a_idx >= 0 && a_idx < static_cast(orderedVars.size())) { aovs.push_back(orderedVars[a_idx]); } - for( size_t i=0; i < orderedVars.size(); ++i) { - const int idx = static_cast(i); - if(idx != Ci_idx && idx != a_idx) { + for (size_t i = 0; i < orderedVars.size(); ++i) { + const int varIdx = static_cast(i); + if (varIdx != Ci_idx && varIdx != a_idx) { aovs.push_back(orderedVars[i]); } } - } else if(settingName == HdPrmanRenderProductTokens->sourcePrim) { + } else if (settingName == HdPrmanRenderProductTokens->sourcePrim) { const SdfPath sourcePrim = settingVal.UncheckedGet(); sourcePrimName = sourcePrim.GetName().c_str(); } else if (TfStringStartsWith(settingName.GetText(), @@ -2709,10 +2730,10 @@ HdPrman_RenderParam::CreateRenderViewFromProducts( // has been specified, only use it for products beyond the first // if it contains variables, so we don't just overwrite the first image. std::string outputName; - if(idx < _outputNames.size()) { + if (idx < _outputNames.size()) { outputName = _outputNames[idx]; - } else if(!_outputNames.empty() && - _outputNames[0].find('<') != std::string::npos) { + } else if (!_outputNames.empty() && + _outputNames[0].find('<') != std::string::npos) { outputName = _outputNames[0]; } @@ -2721,57 +2742,60 @@ HdPrman_RenderParam::CreateRenderViewFromProducts( // , , , , , : frame number, with padding // vars can also be dollar style, braces optional, eg. $F4 ${F4} $OS // or printf style formatting: %04d - if(!outputName.empty()) { - productName = TfToken(_ExpandVarsInProductName(outputName, - sourcePrimName, - frame)); + if (!outputName.empty()) { + productName = TfToken( + _ExpandVarsInProductName(outputName, sourcePrimName, frame)); } - // build display settings + // Build Display Settings ParamList using the driverParameters gathered + // above from the Render Product Settings RtParamList displayParams; for (const TfToken& paramName : driverParameters) { - const RtUString name(TfStringGetSuffix(paramName, ':').c_str()); auto val = renderProduct.find(paramName); - if(val != renderProduct.end()) { + if (val != renderProduct.end()) { + const RtUString name(TfStringGetSuffix(paramName, ':').c_str()); _SetParamValue(name, val->second, TfToken(), displayParams); } } - // Keep a list of the indices for the render outputs of this display. - // renderViewDesc.renderOutputDescs is a list of all outputs - // across all displays, so these are indices into that. + // Keep a list of the indices for the Render Outputs (AOVs/RenderVars) + // of this Display (RenderProduct) + // renderViewDesc.renderOutputDescs is a list of all Render Outputs + // across all Displays, these renderOutputIndices index into that list. std::vector renderOutputIndices; + for (const HdAovSettingsMap &aov : aovs) { - for( const HdAovSettingsMap &aovSettings : aovs) { + // DataType const TfToken dataType = - _Get(aovSettings, - HdPrmanAovSettingsTokens->dataType); - RtUString rmanSourceName = - _GetAsRtUString(aovSettings, - HdPrmanAovSettingsTokens->sourceName); - RtUString rmanAovName = rmanSourceName; + _Get(aov, HdPrmanAovSettingsTokens->dataType); + + // Format HdFormat aovFormat = - _Get(aovSettings, + _Get(aov, HdPrmanAovSettingsTokens->format, HdFormatFloat32); - const HdAovSettingsMap settings = - _Get(aovSettings, - HdPrmanAovSettingsTokens->aovSettings); - const VtValue clearValue = - _Get(aovSettings, - HdPrmanAovSettingsTokens->clearValue); + _AdjustColorFormat(&aovFormat); - _FixOutputFormat(&aovFormat); + // RmanSourceName + RtUString rmanSourceName = + _GetAsRtUString(aov, HdPrmanAovSettingsTokens->sourceName); + // RenderOutputParams and update the Rman Aov and Source Names + RtUString rmanAovName = rmanSourceName; + const HdAovSettingsMap aovSettings = + _Get(aov, + HdPrmanAovSettingsTokens->aovSettings); RtParamList renderOutputParams = - _GetOutputParams(settings, - IsXpu(), - &rmanAovName, - &rmanSourceName); + _GetOutputParamsAndUpdateRmanNames( + aovSettings, + IsXpu(), + &rmanAovName, + &rmanSourceName); + // Create the RenderOutputDesc for this AOV/RenderVar _AddRenderOutput(rmanAovName, - aovFormat, dataType, + aovFormat, rmanSourceName, renderOutputParams, &renderViewDesc.renderOutputDescs, @@ -2779,8 +2803,6 @@ HdPrman_RenderParam::CreateRenderViewFromProducts( } - renderViewDesc.resolution = resolution; - _CreateRileyDisplay(RtUString(productName.GetText()), RtUString(productType.GetText()), renderViewDesc, @@ -2792,6 +2814,7 @@ HdPrman_RenderParam::CreateRenderViewFromProducts( renderViewDesc.cameraId = GetCameraContext().GetCameraId(); renderViewDesc.integratorId = GetActiveIntegratorId(); + renderViewDesc.resolution = resolution; GetRenderViewContext().CreateRenderView(renderViewDesc, _riley); } From c78e990dda355f1d2099773f18f05bef483cff19 Mon Sep 17 00:00:00 2001 From: unhyperbolic Date: Tue, 8 Aug 2023 15:17:09 -0700 Subject: [PATCH 167/352] UsdImagingSceneIndices: renaming for greater consistency. Also increasing USDIMAGING_API_VERSION. (Internal change: 2289311) --- pxr/usdImaging/usdImaging/sceneIndices.cpp | 4 ++-- pxr/usdImaging/usdImaging/sceneIndices.h | 6 +++--- pxr/usdImaging/usdImaging/version.h | 3 ++- pxr/usdImaging/usdImagingGL/engine.cpp | 4 ++-- .../renderman-25/plugin/hdPrman/testenv/testHdPrman.cpp | 4 ++-- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/pxr/usdImaging/usdImaging/sceneIndices.cpp b/pxr/usdImaging/usdImaging/sceneIndices.cpp index d37b719cb5..f30d395575 100644 --- a/pxr/usdImaging/usdImaging/sceneIndices.cpp +++ b/pxr/usdImaging/usdImaging/sceneIndices.cpp @@ -73,8 +73,8 @@ _ExtentResolvingSceneIndexInputArgs() } UsdImagingSceneIndices -UsdImagingInstantiateSceneIndices( - const UsdImagingSceneIndicesCreateInfo &createInfo) +UsdImagingCreateSceneIndices( + const UsdImagingCreateSceneIndicesInfo &createInfo) { UsdImagingSceneIndices result; diff --git a/pxr/usdImaging/usdImaging/sceneIndices.h b/pxr/usdImaging/usdImaging/sceneIndices.h index c6f12edc02..c1e4401928 100644 --- a/pxr/usdImaging/usdImaging/sceneIndices.h +++ b/pxr/usdImaging/usdImaging/sceneIndices.h @@ -40,7 +40,7 @@ TF_DECLARE_REF_PTRS(UsdImagingSelectionSceneIndex); /// Info needed to create a chain of filtering scene indices (resolving /// e.g. USD native instancing) for clients to consume a UsdStage. -struct UsdImagingSceneIndicesCreateInfo +struct UsdImagingCreateSceneIndicesInfo { using SceneIndexAppendCallback = std::function< @@ -75,8 +75,8 @@ struct UsdImagingSceneIndices /// a UsdStage. USDIMAGING_API UsdImagingSceneIndices -UsdImagingInstantiateSceneIndices( - const UsdImagingSceneIndicesCreateInfo &createInfo); +UsdImagingCreateSceneIndices( + const UsdImagingCreateSceneIndicesInfo &createInfo); PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/usdImaging/usdImaging/version.h b/pxr/usdImaging/usdImaging/version.h index 3d2f0dacd3..fca0150a18 100644 --- a/pxr/usdImaging/usdImaging/version.h +++ b/pxr/usdImaging/usdImaging/version.h @@ -55,8 +55,9 @@ PXR_NAMESPACE_OPEN_SCOPE // materialId. // Version 19 - UsdImagingPrimAdapter::InvalidateImagingSubprim takes // invalidationType as argument. +// Version 20 - Adding UsdImagingCreateSceneIndices. -#define USD_IMAGING_API_VERSION 19 +#define USD_IMAGING_API_VERSION 20 PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/usdImaging/usdImagingGL/engine.cpp b/pxr/usdImaging/usdImagingGL/engine.cpp index d73d1f83ba..189ddbe995 100644 --- a/pxr/usdImaging/usdImagingGL/engine.cpp +++ b/pxr/usdImaging/usdImagingGL/engine.cpp @@ -1171,7 +1171,7 @@ UsdImagingGLEngine::_SetRenderDelegate( _renderDelegate.Get(), {&_hgiDriver}, renderInstanceId)); if (_GetUseSceneIndices()) { - UsdImagingSceneIndicesCreateInfo info; + UsdImagingCreateSceneIndicesInfo info; info.displayUnloadedPrimsWithBounds = _displayUnloadedPrimsWithBounds; info.overridesSceneIndexCallback = std::bind( @@ -1179,7 +1179,7 @@ UsdImagingGLEngine::_SetRenderDelegate( this, std::placeholders::_1); const UsdImagingSceneIndices sceneIndices = - UsdImagingInstantiateSceneIndices(info); + UsdImagingCreateSceneIndices(info); _stageSceneIndex = sceneIndices.stageSceneIndex; _selectionSceneIndex = sceneIndices.selectionSceneIndex; diff --git a/third_party/renderman-25/plugin/hdPrman/testenv/testHdPrman.cpp b/third_party/renderman-25/plugin/hdPrman/testenv/testHdPrman.cpp index 67dd258c23..0bcbd0a243 100644 --- a/third_party/renderman-25/plugin/hdPrman/testenv/testHdPrman.cpp +++ b/third_party/renderman-25/plugin/hdPrman/testenv/testHdPrman.cpp @@ -721,10 +721,10 @@ HydraSetupAndRender( std::unique_ptr hdUsdFrontend; if (TfGetEnvSetting(TEST_HD_PRMAN_ENABLE_SCENE_INDEX)) { - UsdImagingSceneIndicesCreateInfo createInfo; + UsdImagingCreateSceneIndicesInfo createInfo; createInfo.stage = stage; UsdImagingSceneIndices sceneIndices = - UsdImagingInstantiateSceneIndices(createInfo); + UsdImagingCreateSceneIndices(createInfo); sceneIndices.stageSceneIndex->SetTime(frameNum); hdRenderIndex->InsertSceneIndex( sceneIndices.finalSceneIndex, SdfPath::AbsoluteRootPath()); From 2136bf280d2b06fdeb06407cb592bb006c8306d6 Mon Sep 17 00:00:00 2001 From: sunyab Date: Tue, 8 Aug 2023 15:39:43 -0700 Subject: [PATCH 168/352] sdf: Add support for functions in the variable expression language This change adds infrastructure for parsing and evaluating functions as well as implementations for "if", comparison, and logic functions. (Internal change: 2289449) --- .../sdf/testenv/testSdfVariableExpression.py | 204 +++++++++++- pxr/usd/sdf/variableExpressionImpl.cpp | 315 +++++++++++++++++- pxr/usd/sdf/variableExpressionImpl.h | 151 +++++++++ pxr/usd/sdf/variableExpressionParser.cpp | 216 +++++++++++- 4 files changed, 862 insertions(+), 24 deletions(-) diff --git a/pxr/usd/sdf/testenv/testSdfVariableExpression.py b/pxr/usd/sdf/testenv/testSdfVariableExpression.py index 76c877e3d2..e1c2ea42bb 100644 --- a/pxr/usd/sdf/testenv/testSdfVariableExpression.py +++ b/pxr/usd/sdf/testenv/testSdfVariableExpression.py @@ -28,24 +28,36 @@ class TestSdfVariableExpression(unittest.TestCase): def assertEvaluates(self, e, exprVars, expected, expectedUsedVars=None): + def _GetFailedAssertMessage(): + return "Evaluating {} with vars {}".format(e, exprVars) + expr = Sdf.VariableExpression(e) - self.assertTrue(expr) + self.assertTrue(expr, _GetFailedAssertMessage()) result = expr.Evaluate(exprVars) - self.assertFalse(result.errors) - self.assertEqual(result.value, expected) + self.assertFalse(result.errors, _GetFailedAssertMessage()) + + self.assertEqual( + result.value, expected, _GetFailedAssertMessage()) if expectedUsedVars: - self.assertEqual(set(result.usedVariables), set(expectedUsedVars)) + self.assertEqual( + set(result.usedVariables), set(expectedUsedVars), + _GetFailedAssertMessage()) def assertEvaluationErrors(self, e, exprVars, expectedErrors): + def _GetFailedAssertMessage(): + return "Evaluating {} with vars {}".format(e, exprVars) + expr = Sdf.VariableExpression(e) - self.assertTrue(expr) + self.assertTrue(expr, _GetFailedAssertMessage()) result = expr.Evaluate(exprVars) - self.assertIsNone(result.value) - self.assertTrue(result.errors) - self.assertEqual(set(result.errors), set(expectedErrors)) + self.assertIsNone(result.value, _GetFailedAssertMessage()) + self.assertTrue(result.errors, _GetFailedAssertMessage()) + self.assertEqual( + set(result.errors), set(expectedErrors), + _GetFailedAssertMessage()) def assertValid(self, e): expr = Sdf.VariableExpression(e) @@ -361,6 +373,182 @@ def test_Lists(self): self.assertInvalid("`[`") self.assertInvalid("`[foo]`") + def test_If(self): + """Test if function.""" + self.assertInvalid("`if()`") + self.assertInvalid("`if(True)`") + + self.assertEvaluates("`if(True, 'true', 'false')`", {}, 'true') + self.assertEvaluates("`if(False, 'true', 'false')`", {}, 'false') + + self.assertEvaluates("`if(True, 'true')`", {}, 'true') + self.assertEvaluates("`if(False, 'true')`", {}, None) + + self.assertEvaluates("`if(${B}, 1, 0)`", {'B' : True}, 1) + self.assertEvaluates("`if(${B}, 1, 0)`", {'B' : False}, 0) + + self.assertEvaluates( + "`if(${B}, ${X}, ${Y})`", {'B' : True, 'X': 1, 'Y': 0}, 1) + self.assertEvaluates( + "`if(${B}, ${X}, ${Y})`", {'B' : False, 'X': 1, 'Y': 0}, 0) + + self.assertEvaluates( + "`if(${B}, if(${X}, 1, 2), if(${Y}, 3, 4))`", + {'B' : True, 'X': True, 'Y': True}, 1) + self.assertEvaluates( + "`if(${B}, if(${X}, 1, 2), if(${Y}, 3, 4))`", + {'B' : True, 'X': False, 'Y': True}, 2) + self.assertEvaluates( + "`if(${B}, if(${X}, 1, 2), if(${Y}, 3, 4))`", + {'B' : False, 'X': True, 'Y': True}, 3) + self.assertEvaluates( + "`if(${B}, if(${X}, 1, 2), if(${Y}, 3, 4))`", + {'B' : False, 'X': True, 'Y': False}, 4) + + self.assertEvaluationErrors( + "`if('non_bool', 1, 0)`", {}, + ['if: Condition must be a boolean value']) + self.assertEvaluationErrors( + "`if(${B}, 1, 0)`", {'B' : 'non_bool'}, + ['if: Condition must be a boolean value']) + + # Evaluation errors from subexpressions should be reported to clients. + self.assertEvaluationErrors( + "`if(eq(1, '1'), 1, 0)`", {}, + ['eq: Cannot compare values of type int and string']) + + def test_Comparisons(self): + """Test comparison functions: eq, neq, lt, leq, gt, geq""" + + def _Test(fnName, comparator): + def _MakeExpression(*operands): + operandStrs = [str(s) for s in operands] + x = "`{fnName}({operands})`".format( + fnName=fnName, operands=",".join(operandStrs)) + return x + + # All comparison functions take 2 arguments. + self.assertInvalid(_MakeExpression()) # e.g., "`eq()`" + self.assertInvalid(_MakeExpression(1)) # e.g., "`eq(1)`" + self.assertInvalid(_MakeExpression(1, 2, 3)) # e.g., "`eq(1,2,3)`" + + # Verify valid comparisons return the expected results. + # Note that comparing None values is only supported by the + # "eq" and "neq" functions. + testCases = [ + (0, 1), (1, 1), (1, 2), + (r"'a'", r"'a'"), (r"'a'", r"'b'"), (r"'b'", r"'c'"), + (True, True), (True, False), (False, True) + ] + + if fnName == "eq" or fnName == "neq": + testCases.append((None, None)) + + for testCase in testCases: + # e.g., check that "`eq(1, 1)`" evaluates to the same + # result as 1 == 1. + self.assertEvaluates( + _MakeExpression(*testCase), {}, comparator(*testCase)) + + # Verify that invalid comparisons return the expected errors. + testCases = [ + (0, r"'a'", + "{}: Cannot compare values of type int and string" + .format(fnName)), + (0, False, + "{}: Cannot compare values of type int and bool" + .format(fnName)), + (0, "None", + "{}: Cannot compare values of type int and None" + .format(fnName)), + (r"'a'", False, + "{}: Cannot compare values of type string and bool" + .format(fnName)), + (r"'a'", "None", + "{}: Cannot compare values of type string and None" + .format(fnName)), + (False, "None", + "{}: Cannot compare values of type bool and None" + .format(fnName)), + ] + + if fnName != "eq" and fnName != "neq": + testCases.append( + (None, None, + "{}: Comparison operation not supported for None" + .format(fnName))) + + for testCase in testCases: + self.assertEvaluationErrors( + "`{fn}({0},{1})`".format(fn=fnName, *testCase), {}, + [testCase[2]]) + + _Test("eq", lambda x,y: x == y) + _Test("neq", lambda x,y: x != y) + _Test("lt", lambda x,y: x < y) + _Test("leq", lambda x,y: x <= y) + _Test("gt", lambda x,y: x > y) + _Test("geq", lambda x,y: x >= y) + + def test_AndOr(self): + """Test logical and/or functions""" + + def _Test(fnName, comparator): + def _MakeExpression(*operands): + operandStrs = [str(s) for s in operands] + x = "`{fnName}({operands})`".format( + fnName=fnName, operands=",".join(operandStrs)) + return x + + # "and" / "or" both require at least 2 arguments. + self.assertInvalid(_MakeExpression()) + self.assertInvalid(_MakeExpression(True)) + + # Verify valid combinations return the the expected result. + testCases = [ + (True, True), + (True, False), + (False, False), + (True, True, True), + (True, True, False) + ] + + for testCase in testCases: + self.assertEvaluates( + _MakeExpression(*testCase), {}, comparator(testCase)) + + # Verify that invalid combinations return the expected errors. + testCases = [ + (True, 1, + "{}: Invalid type int for argument 1".format(fnName)), + (True, "'foo'", + "{}: Invalid type string for argument 1".format(fnName)), + (True, "None", + "{}: Invalid type None for argument 1".format(fnName)) + ] + + for testCase in testCases: + self.assertEvaluationErrors( + _MakeExpression(*testCase[0:2]), {}, [testCase[2]]) + + _Test("and", lambda l: all(l)) + _Test("or", lambda l: any(l)) + + def test_Not(self): + """Test logical not function.""" + self.assertInvalid("`not()`") + self.assertInvalid("`not(True, False)`") + + self.assertEvaluates("`not(True)`", {}, False) + self.assertEvaluates("`not(False)`", {}, True) + + self.assertEvaluationErrors( + "`not(1)`", {}, ["not: Invalid type int for argument"]) + self.assertEvaluationErrors( + "`not('foo')`", {}, ["not: Invalid type string for argument"]) + self.assertEvaluationErrors( + "`not(None)`", {}, ["not: Invalid type None for argument"]) + def test_NestedExpressions(self): """Test evaluating expressions with variable substitutions when the variables are expressions themselves.""" diff --git a/pxr/usd/sdf/variableExpressionImpl.cpp b/pxr/usd/sdf/variableExpressionImpl.cpp index 73db72f79d..08da339c0d 100644 --- a/pxr/usd/sdf/variableExpressionImpl.cpp +++ b/pxr/usd/sdf/variableExpressionImpl.cpp @@ -148,6 +148,45 @@ CoerceIfUnsupportedValueType(const VtValue& value) return VtValue(); } +// ------------------------------------------------------------ +// Helper functions for collecting or combining errors from one or +// more EvalResult objects into a single list. + +static bool +_CollectErrors( + std::vector* errors, + EvalResult* result) +{ + if (result->errors.empty()) { + return false; + } + + errors->insert( + errors->end(), + std::make_move_iterator(result->errors.begin()), + std::make_move_iterator(result->errors.end())); + return true; +} + +template +static bool +_CollectErrors( + std::vector* errors, + Result* result, Others*... others) +{ + // Bitwise-or is intentional to prevent short-circuiting. + return _CollectErrors(errors, result) | _CollectErrors(errors, others...); +} + +template +static std::vector +_CombineErrors(Results*... results) +{ + std::vector errors; + _CollectErrors(&errors, results...); + return errors; +} + // ------------------------------------------------------------ EvalContext::EvalContext(const VtDictionary* variables) @@ -404,13 +443,9 @@ ListNode::Evaluate(EvalContext* ctx) const std::vector errors; for (size_t i = 0; i < _elements.size(); ++i) { - const std::unique_ptr& element = _elements[i]; - - EvalResult r = element->Evaluate(ctx); - if (!r.errors.empty()) { - errors.insert(errors.end(), - std::make_move_iterator(r.errors.begin()), - std::make_move_iterator(r.errors.end())); + EvalResult r = _elements[i]->Evaluate(ctx); + if (_CollectErrors(&errors, &r)) { + continue; } if (r.value.IsEmpty()) { @@ -439,6 +474,272 @@ ListNode::Evaluate(EvalContext* ctx) const return EvalResult::Value(std::move(visitor.list)); } +// ------------------------------------------------------------ + +template +static std::string +_FormatFunctionError(const std::string& err) +{ + return TfStringPrintf( + "%s: %s", FunctionNode::GetFunctionName(), err.c_str()); +} + +// ------------------------------------------------------------ + +const char* +IfNode::GetFunctionName() +{ + return "if"; +} + +EvalResult +IfNode::_Evaluate( + EvalContext* ctx, + const std::unique_ptr& condition, + const std::unique_ptr& ifValue, + const std::unique_ptr& elseValue) +{ + EvalResult result = condition->Evaluate(ctx); + if (!result.errors.empty()) { + return EvalResult::Error(std::move(result.errors)); + } + + if (!result.value.IsHolding()) { + return EvalResult::Error({ + _FormatFunctionError("Condition must be a boolean value")}); + } + + return result.value.UncheckedGet() ? + ifValue->Evaluate(ctx) : + elseValue ? elseValue->Evaluate(ctx) : EvalResult::NoValue(); +} + +If2Node::If2Node( + std::unique_ptr&& condition, + std::unique_ptr&& ifValue) + : _condition(std::move(condition)) + , _ifValue(std::move(ifValue)) +{ +} + +EvalResult +If2Node::Evaluate(EvalContext* ctx) const +{ + return _Evaluate(ctx, _condition, _ifValue, nullptr); +} + +If3Node::If3Node( + std::unique_ptr&& condition, + std::unique_ptr&& ifValue, + std::unique_ptr&& elseValue) + : _condition(std::move(condition)) + , _ifValue(std::move(ifValue)) + , _elseValue(std::move(elseValue)) +{ +} + +EvalResult +If3Node::Evaluate(EvalContext* ctx) const +{ + return _Evaluate(ctx, _condition, _ifValue, _elseValue); +} + +// ------------------------------------------------------------ + +template class Comparator> +EvalResult +_Compare(const T& x, const T& y) +{ + return EvalResult::Value(Comparator()(x, y)); +} + +// Only allow equality comparisons for 'None' values. +template

      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 - double radius = 0.6 + double size = 1.2 double3 xformOp:translate = (0, 0.65, -3.85) token[] xformOpOrder = ["xformOp:translate"] } - def Sphere "DiffuseSphere" ( + def Cube "DiffuseCube" ( prepend apiSchemas = ["MaterialBindingAPI"] ) { rel material:binding = - double radius = 0.5 + double size = 1 double3 xformOp:translate = (-2.5, 0.55, 3.5) token[] xformOpOrder = ["xformOp:translate"] } @@ -116,7 +116,7 @@ def Scope "Material" uniform token info:id = "PxrSurface" color3f inputs:specularEdgeColor = (1, 1, 1) color3f inputs:specularFaceColor = (1, 1, 1) - float inputs:specularRoughness = 0.1 + float inputs:specularRoughness = 0.01 token outputs:out } } @@ -140,6 +140,9 @@ def Scope "Render" def RenderSettings "RenderSettings" { token outputs:ri:integrator.connect = + float ri:Ri:PixelVariance = 0.0 + int ri:hider:minsamples = 32 + int ri:hider:maxsamples = 32 } def PxrDirectLighting "DirectLightingIntegrator" diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleAndDisplayFilters/baseline/both.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleAndDisplayFilters/baseline/both.png index f3f0d9f62e02cd4c3382f844c22bb5aed0919c6a..2afc553948a112c45e3f3996c4a990c1fbce6f45 100644 GIT binary patch literal 16105 zcmeIZI^3K4WfPlQ~zt62CZgNHff~N$EveMe#>HCX%2~QL<3wL3C+U)8NRmf*m zgrPPLQ%K{?>sGTgii%~Aiyvn*vx`#If~7S5&+l`+R{Z|--b2nfE>vUKQ2Yy-P~Xez z$7HfJuUI8Of@>)UD}R*m>@)-f4?aLm0OaCtaJLBF%l_}z|I0E!d6^JoLmfWj{+*7* zwi(alq|FhJ3RJ~QuXgK7gogy|ky(n=J%V`M^qqXrla*g-k6f_Wig;%k*-EY0Bt?>a z*ayiL-n^h?k;Lxgbr$A$^0wWz7GBS<3yZRZC0>G73(f`37bjv$x>WXEU#EWy%6}A- z7Z`R~DME6y$FFMX8@J0=M>k6q)&SCA>b-kPjv>~jp;(U$T@G+TPbx#3u5=7N({k8A zRN|3>wi=iHQ_)#1T}T-Z>g!o&^3|NMhVcDgNH&JBJ_`XVO31lvm*Sp=sEg)&q%kG^ z-LgJ$*`lOeg_2VM9F;~}LRwNf^Yn3^^wL5lx)}29p z{*zLz;hIUc4vimEzV+v#{rs4elHy;TU5q`ZR_w&1?TSnywHaOXU1j=kRr%h?{*~>D z7}htoeGqfFH)kwMz)8v)BBL>>th6C_M=w-8{;yKkYBXkC*F^{7mShJlw-zS0bD#WvgdsNm?C*Tu-!GCClQo>~g3lZM z{>dWGnA#8ysdi=k%YY#cyF{Z%!9TDxz370j`E%68ChmhS^lF~Sszz^<` zSXD>^esVcP{=vU-(|R){r-JgdSD&lS`yfB;d>;CF;CEvwGLi2Y+NZfqrin7XVaJ&< z#0d@Pv;M(eh2;QYpCwO?iAm2Y)cD3ll8WuO^AYB!cyj_H(Tf|fS-H%p-I?D%n81L-AKCSI(I^U#a-p{&PW0z&& z=^3r=hpUli1t&N38=UlQ{MGmcgpoG0GB~V686G!*9@Jf(;SqbFaF%kXlog-dvVZfy&4eqwV_-)j zcv0u@{7?)!`vcp=(g)#;W#siATbzzFQhuRxf7N17kLQ6l0Q2)a!rq8$`e1_Bz+byf zZ~B+T9~8g;e>W6s2cyTH6^ZSuI%KvZj~~xLt^@Tbzr1uJ@|wNc{n8Kd4ZLDGO@@0- zE7GWU_}DhBanw%C=;hykAFxP)VtM_>T}zTW3dMU)SN$(g|GJ>2?S>zG;@OUxZf&taY49jnH|W$C-OSb#)($3gV0GmKWu89Wj!l^E)sEZ`wU|Dv~G2g zBAZL=ix&rcn~-i<3N!s54s|tmEskmb^-g&VVZ^(ee4e^iaI6;ls3Bv)dv?^IyY#4U;HgMY<`}XGaUTYcy zuX|kd{C(#>sed}(?z%1E^GNhl(L}~tdD*IeJ@2dk2g>ELY4OgdUNsV}oa_?CF;ZjQ z>{}er>q3(0p5Y0epQ-u9%7O};qYTS*E#C#y5d2p(cJ7v`+;%a%v5#o+yY~SQVf&^v zB1QE4_R03;JKcQEM6`%~GT=I=2VQN_RA8V=7^n03EUES{YMK?eMGD;NgW=UY#k(TO zt&O?0r&7tIy74}F{3$f2hNJ6KzX@r3X8VS%k3-v@;=g!pe}65W=;~-@aDly!fi0oc zhI;-owtWBlC5t-KNokuaJM}ns+vUv*0S!vaI)Hed8^ zZt1Z)Eryuv0V|>_`$O>;nr-!-Pjxi)2jSJkJh;Dfz?$#s_)pPorP=Z24U8;WDA8Sm zXetuGpl^X|J2ffa(NsLJCQT0Y+~oKCaD1`!6i=|1YsMgKys9B;=S6Hs3IG=kH}M&> zDE?w?w@5N4pv$^VX8LZcW351Wu!g+VEqLUDC+!&K-$8nxOw={MP>ZNUHNkR2cf~v8 z)`{809SpJLX(O)Cq3*{hiJ=|(6Q%1`)B-@5$9LTf4-J6N0iQ>KLNtq1albQFa@WBaU_h+s6nL3E-Y7+%r=qya#~HbN zejgz1L4pr$hDIyNZ?}rmY?>N0YWmR*Oi~6X&0=WkdYw;9sZR!2`TcVC(}xC=8($g$ zudwttu(G)ffd-ny?&a%m z*dV9hgvD=m@0F+<1LpMzP2m%!RElp4vPp3u`p6XcDfl^}P9NK92C%i#b4gtMh4Y(W zxC#)km4o29t8#mCG%i8=3abLR90hOQoY48{42G2IqD|=nO;JL)YC!Aut+xmGvwHwX zU7pMM@es|ps<=Ot-pZqW)qJp8+<0sQewqa!Od#ga?@+i9;P;o+L{$6TffYGp!Rw%D zDxa-@g(NOIPs!ijbzEw=7k^d{TLCdpq-|!{SCh=}o<;r+xc|w*UeJ#}4)(^W=IcR$ z4Y!?t%QsS+@*_7H3Zv_cG%cbDnQ~Sat3RN`=g;ujp|m|Fqm%{A;_~KgnpKy+BmXI( z?3jYr%rd;aRXe7gB;VrrBJ;l|B~SRqNQxPfSY1lDP+39Wx?_EUu|dp!`FxVvw<32- zCeHS~`&MB$GPoT6sA58UjRA1*MD9dtB9#!}OY^U{?&ZncLT~XArv1PsbT9jc0E^Ql z-j+x0+{+`iMrx8Jz_=#w#SQ@C%~|)fO>DF~{H5^XY>PCZ_eVF&)ql9$Ch=V@T;`iZ zeML9-Cf0|t!9dO`T#pgRFtY{ozfoPBBHaCf^`U-=S1tz_37Nhcn{Q%^6n^b|Z+QOR zEtUU-;FWWfN26^(B5!^mb9sv2qXYDOwC1z~ulYKq)^TsB7jUtF|M+d#vewKSv^RMz zjw%CH%w_f={u2W+2OsXqxcHx~{9Qxy(SC?rm&Nh?f6qs|LgD2f9|dO6Wq+pyRV+oz z*E*4z07)ghW}^CZAjojbv(IFj(0Sg3aOXcE-D^er#^sIgp2E7sRl$78flb2e8&NAfuLAwT-94|4Gi4_ zfXfx>k(Nwg$=Q!1WEhRV4D3osD*cuugi1hqQMUg*ZLDtoSP=dt_x($fk0rGFmSDgU z{{um3AaoY^j8I6Eo$!;1U{|aGHpjUSV)u6VTn$v=3Y8~3U}l(67kq)4hH#mxf9ctN zeA{#MbcS2|PH8E`0hi&4;r=uZ$>Rq+ZeT`N-QRQWg~vO5$`T-avLs^jkFyGvFP_=14EFe)OQ;3ba%h0j6gy4c zHJ7m$Qdp-`V6}*AZew4~?yL1|>r^{~t=g}_2&Q1M++zU-nimgGfigmF(07y$cCnwu z?9Xf%9`;R_N?dVbOYg|=_S3_jL?xzt5-sgy3!MRkAkk#H?>(A0n7Z<-xReW3{Qe>Z zvbB33_UTHMhVr+zg;GTwwzVoK3~;?LY>>>KJXAdlKWZB~A}eehR(tTfGE%cBPus%2 z9*P#+okQ8qXMGI-a!^Q)M8Ia+a_jMSnH;lW1C^&HQHd|2p$yx+F(*hI-sDb^^BPUD z2!=IWPWrM0i1;jeO3VIgzNa0U9DJ9A75}#=2Ya?@c5}{=WqM=Nn^a$$%;|K8OXmld zeJXZO;ISSbN#a{v4r@$$77uP8(u((UnMzQ0^i;}^(G1>ZxPkbFW8V`0=|qhj2Ar?- zPX}k#?)>5mTn5%CgE@XL}Ck4X)doUOS~bym?kbs>V^5=yo|ZrJyxbvDJz!E=G6V+R;&{69278=Ulr=DF&c6tfZ13%fx&k3 zOgb6Su)vKl1E>TP0{lF1<%c(}2j4uMbVqd6$iHv)Eg5cX}MPPo_bk_`*rnm(hbP& zGc?7p3u@blA3r^UqcT)@w(7AF;cZ%xQDIe)oy$>9?U6jnAI9nQ-)sKNe| zD-p+K;}E0y!OA5{&Ip>1%}w!xl~;5(!u0OKQVq}#Wgz}a zIjh7=r`3ic!TX^>GhmXQN}AX|9UX434WdE<4} zfjC*Ie=C#>Z;iRP_dPYgsb~RZyU0AfE_wFXB)vJ35%1-;R#?I%7I7oJNA|(_p>M!m zbZ20~48_PHCJy|g5v0uy>qmrc?6K*Cp=Sa=fU zseumKOMWSF@_BVJ>ghRgr3g8()9Mrc=Xvc}Jo0+{CwL9(ekSw$ka-SIF_Bbk|s|_M~ z3UZ#T6`GJ@?T758M6KhmuP+dN8}8fZJ2sn_ecQ%F6CV%fe~U@K-|in7;PNLd^D+|h z9Mp$8s>uGq(*K-f1qdS{=Aa8zwWLUC%Lub-{i74Dh^7FGq4%Qo@K@Ck&&huV@kmO2 z2VZ;nY)*{|akv^|Z2nK(VWlFy)Bb$&XKM0IMN9_$oaYM@^xZgD0WZy7l|A3cpc&Pw zvQoYAdmhx^qhRg2n-_Elzl)pApz0e6$GIyNhGBN37_wsh!ZVZ=#4zLQ*kmZqb&by$ zSm;?HYbJ(-vDb0y?hmqfiWhqQ%n;H2HyHJ#D>F?z!R6mCWGe<`<%427U)i;A-+p&P z!T621pV%3ODNNwFW+~oFs$ah%u5FJN=h631$P&tptQ&R%*GEVdnu~3!HsmmW27z8h zwBpa3@tO|qa^GPM{c$N2NZ9cK%cj@NK6`CQ26q|>=3!t%PF~+ojIk;B+;-3qFr?}gYMZ9e{_qAj6jxXepT57xAQ z4D}W#Ei3!v^VP;6{$d~Du`ptNs36m!Jme|+PuSjzq*RYgQVKk&Pih;UVdeX{#}p&E z4&&SKAmwjIZ|TiaiyN;2vBJ`V0g zr}YJ51?S)3(AE5SKQvp3FN0d`!@!-bG6!B+d0(M+-5xP*9kJ)V(jQJ@BJW{rt2Uj} zaT|xskPDi}OMeML>P*qerCY&m;V<4qhN`Rq3+9BC=S=Gowl(s6pX1+CtHv+i>>Vp8 zs5SG2o&TIbANbG&jyX;L@~5b9k}MgZ7AV!eou*`!6z>M;#nTPdtWb{Y1;aScc|7^@ zB2KBdRAC_XR9@4VKJM$Gjn`Afv+wkUVRSB{&cZo;kf3h~C>Y`*rCgprsqMM25}wO^ zrIg`GU~PpqZea4g>6Gzp9>#>cnS>DEyabqy3#t=}xH=0`Yvv86q7w(H3zgE8d&Iw} z_Ia!0S?@R{#)U@Kr7~mrP-f4Tv(f`xusT+~33j64#LmM9;QtNRhsuga>LeACiJ&w&#-UNT)^VOtVqc=D}Ngf%<$ir2w$Fkj&4 zr<~azeZ2LvZ;B3_C@U)i{yCcy=C_7u!CDt)7kKwixd!+%^xFjV4;97;GdD-?ky+>{v2~c406?26;IwP9-9f7KSM2m5cU$~hq@dcrwC&O{s+xyOnE;Uy@6Ct^jC5qAUj z$XWGJhJ(c%EVxtn@-p7Idfnc67WYDBx0Qz~aG*H<`&19Y3EOy!x4`B`A@7Z*YI0tI zaH~9S(Q2^%!t`ckiLQQ5U=WU_N51m@Q2MeazQpw`;5DXP4S(qJ@Mg6YQYVt7OgF7Q zSbV*sa)%2Z9FYymP$}c4@i!^Z$?$*U{CFgd39zMQ&vJ5GM8M@`|G)Jz;ur3defHi4 zYdb@*o571Eybl^w=`&A>1YcMVM8N_HO)_Uk+>0mDq~OCrYW zK-<&UJwB1eg=Mv`tRHa)3ELQvj5|OX)CR#cg&X;<;qMctldYrM57Ef*v6xg7V5KpxRXqI$gBpyjI^F|s zxrsFtY*gMFX!>0FoN#xxf-vuZ#O~O7?xb?yvwP(uk|>M5T~&?45ptuMQfbV^>K0b* zBGWIGjP38bd!`va#x9L^gZQN&VH%I(%>a?tKHZfH(To}Aq-OPg8{c(wY8F=RK|f+! z)EkfLXW=k|ntacwYb82q-5jgAK6KGbWv)&-zy*hdwYxDeDvp)p7JV*!zvwq(6xE+c ze`CgF6qU;#lX-J~6zOH-)+n79`A)u>&@9iN+b#jT54#ib&S$e~ejmku)^y^=$&~E* zfUYvdGtnw*X=B-vT9OfQb>SOZZ6LCnb0qgnC6UjRG^|}*q(twIQqd>uQla*z`0e+& ziW)EML`BA7S)TU{Qd8_^2%#5Ry`1HT+s+W{6dvDoC!h841cb9t;YF#h8V(O|4!Oz) z2Q(F&{qSp$un*t>`41zsU_M~1&$(jTHS@$O!6zOou%0bQ{q^ThjtO~%;hq?HbOK@` z|D;Sjzm_>6VM7l$cq)jm%0D}G!8mDd?gyCEellaJ>O8u~gGuKr!YFdRZ_Ww$Z0Xjk zGW+Rn>4SijwvDWWrJp4E!y_&^X_Fw$!Di^ZR0K<{@N|=xp)}*HWeS*At7x2;kh?M9 z7Z*y2x#_`~vIy>sL0J|hVCT1<_a1UG;=Ho^)@K*b)PPe}Ehh`y!Xyne8GL+BI6qs* zN2&iAo#HV_(f#%9>_2Vi-^*l0VSP9B7kDlgO|TL3VUIK8B>~)1`W?H@xmJo<_&l4e zId~qh&oqs_ztgeE>u~M;g!zx}$%B%e%+Cbz&vPKESTa@?dn|zws7Q(Ko9aMLUq?M{ zV1_y`q1^oVoLmn|QYUr8TCm2S5--6kY#LHQw{@6}o8{E+8YrJg8{0?l`?o2b=q_5V?KCIn-o;J^kSV@6} zJ(&2<;R{1xlQxC(adM{7xC6?!p_%?%yc|bV8ttn_+Gv${{gK;b0<;_=T={FW_(W5)}NwxoI_gsn7Dtp2c*^oE!ArMo_*59*(zPf7 ztns%e(%Ff~BLr1+4nuLSGjNY%u1zK7Gf5(+vwhdc6f6 zXHNygk$jFh>(5~?el1!YMo(XeH%&tI(t?)rdodiERwRE945djCMP3rp<$aFTHL~WR zz5?aE9@V<`eq>V@3=NaeX^l6yNl=tj_lN-pV>zbM1}n zeikOxZre9sne65*j?3l-zpGkmW7j>m^-AfX9i$p;s=L@DwA|#@{E*a^3ilHeh5}^d zA5jZ%oe~YV&JKswGu0s;`$x9xo|l>1zaRWaK)@XPUoU`MMaYr8&FNdJ()t#h`x)MQ zyl3yz%a5gFFRzD72Uer|7T|%`FKdZW0uCS7=O19Ef1LBf7(&eE<(?Dj%)Cvb>F@&N zDUtj-`8AhI%XaN8g8D40$X~lNMtb!8@bGCyy+h%ejd^HHFZHZ>&X-e7-v$Sv_^Wi- zb>W+4qbrO16JS8-D5WW?4V{SIEoOBv_kzvPq!*)>EPScdB( zn^x`2eBYnrWjuR#?MqKhmS;H6*||(JNdS24wF@Lo`>mQ+r9aogiDJ|;7K$|ne@9y)+n2*2`J%I2=2~x{p=8{g>oOR0`*K+|_cAT5wKgH{z$?`fNgK z5!+~Sq z43e*FHp$wBb-w$Vw|m|U3!Q-2=h+83(qv;*=k^%pTG-l(HE81Til5<0wSIIBZE>lg zQek0F?$*GjIFqkO*$%1gpha^eb7S>$ZN@?8tb}Q^;o6EF5$t;{#k{)~6e@@8%bjlB zsDlLE)5L?NwSrPIBV)jtcd?ILwF<{hbfVh{hr%nl9z?y_Hj;ChK5IOU)7`rLGr1Hi z^h^)C@25Vz%qhIjJ)OH=yW@#tUrjzB%zI%i<=i?tf6oE_fJyHTH&-Q8S(Z(uY#5`7 z3TK)#v#4g+>lIg(aGpJ1Z<@yFwcROffk zUpy~2TH93+UyaJTuY%t>-`EV^j&##198Pl913UVL?x%KnzUCBp6ez#7dbRYqfZAOD zP6Yjp~ z&_4VG?%`bYFmP-+!n`@djG-Jm$qkdA%1ji2N*-7?m1S<4VP2RYXbKaS&)2J%NF{B_ zM=BcEf;iJMVJ8eGbtg*sn}z*8f2u9PTKe3JB;r5Isy2ZTof-COx!n21S+eEb8nX8i z8$C7iw1yw`$o$H<ce%MxD-T46{dO_B| z?Qi9qDLKy$O7r60d>q^Uak0T*qCA8&w8GKx*JkkfJUA1;)2?kzLoledlGEXjx7Ij^=3!b@OwJDmey zr`<#3)n*IcgNp;jO}X&v@}jFy%T11lBw8zvbZ6?G(PLuSE?7_4tWEU7EIVZ)4r^}! zNzQF9!}DgHnWb>A;OFbV)`^wb(gu zsiG5ey%;vlMBfMCx2hpbev1b84M#>(cYT|T^=ihp6enB%n5hO*mz18o|6mw%YEN&l z)upZ2t9lm^S%$G4oaW%i?|1YrmOH{#bu{BFUk^p)Ehyb|I`b(pV1MgmaBR$ZMUYQu ztV76B;SY(-3C}2(V3z}#_c2H(> z+)u7BJfYCCwEi69OA|0{aF+j1KEPg$5YfTpP^g3ZjK0LxBgAnIHle{wd`1b#Zz~UJ zwx-FLnms+0;3kqMiQ*%r^##@!cqL&Mt^l~;h)&sFxKxCK2~&eG2I^IDxvnOK?SYvb zY!8PdqA6!IwveG7>B%d-S44vn)s)?;GRIE*^dg>YTs4JrcHd!< z8mI6qKVUbF^y91jyDI-Lqh2*Ai(E*`yIogjDYvnF%i7CrQ*3?hedW`Vj`Q1}-9Il_ ziaDuE;@evBJIjYK^q&mfW$o(H>{3qM_bTKhc53cP9T`S^%S}Zx4}}-L0xeO)2j*bU z6KC=JIB$F;#d9^d)7IRz{I#w+h|JCmIkMOmsxwek_O${tUl?jZ%*|q*I0RA1OvfG# zUbC1WH>*O${q-3l-dH;Gt7;5t?$%KqgZ6o%4gJ&FgRA*Ko$A8NY>6q0=Wm-M~s7oL+GZiZAbnL2ITA2o9( z!NwJjE-$yQ6UrmWoz<0-p6K8^%MW)6c_+q_^U@gXJyf(wO2M!fY-Zv z{TlxSgX*Y9AUE7+f1%)0u>xDY8U+4HOPI>Q5r<)EeXF-A{q@jw1lPr_L%9#(C$vRg zOzT;^<o>D*5o~f&$RVj-mc&yf$?T#(GMWvf+DL&T6jY%>EWZ-4 z*M)S>H=VonG92Pe?-4ASJ-U87NWO*OUv3*b8(!ZdzUe~Wg5cRbUXi23&K1vXRy5O} zJD=qm=x>~EGIPOZw*L`t+hEN=s!wAYIx)wLZakp)#fLRkD+-lK5{&o;kK9e%M=N$x z@WVJk+n3crr8zTmR@`@|=C5Gi)Q!5K=HTO^&0Z^K+9?>?>0sk2vxn%ViS`ftds)6s z1U=G(5_3J9213L7)$|Z&Ry#y=OMVA;ArFuRNK1>*IGW{q-8N3_JD9SiGUwjgds?fK z%UvEL1M_}=$u96up!H}+`DpAsZ=&LsS{Geh)*ve-rBPR0Fe8!I>Dm!?C?o50HK{G| z3Ie%0k*UnY``f1_>x`2Z{yCdXqHNP%Fv^!F#FkpRIIOo#xdhoa(bGegJcgOVA8Lc~1 z%smBiX{!v5Dq(~3Aordo{>pr^w{H7^Uoe)Te&S469ik8o97To6&!)tzbrs^KGi0&( z`~1BeuV~|7-$lA<6=jVL8b*U5S>TSyj@cq`+I&u!tgfFEzbT!AEX}Be*n;D0Ug4|4 z0i(){y@`ttZEw59R_gE$;SEJ=p5mCu#~CoFwWJM*UjD$vl@kO>Acn)-*j?g_>Kl$W z1Z_WWAk|t8I9;b=#H)kMp-@H|DMp|ffVF@bs2RZrh>HUAu zXLxi(S8N$qBzIX?9nZqQiLAR`r$Ml~icV77%8IulwJ?vu9Gb)a?j4`wqTO!kQH}f^ z^pBFhhgYTUia)s#k=)>c+LP0{w`8#S%{1(|vLj?$%D;&}uyHC!G-?4b(pP@Us(kpD=hiEC z3UQ}NkPNXwQr~Bw@&$vb#UAAh%cSnwS4r}nkdZCp!VC!MVLJ7~#)cTZTu{t_YcN(T z@ll^FwtoRZB4^YUA51sAXnw$xMP|ysFR<(S$WSry8fjT}4>cYcVE3y@&k8IKOHBR5 zeNNT8ZT0Lltqa zSOPsh2K`i0!8PJv&iSV@w5f=zVx543`8zCC8R(Upp{<0~dAkUik5X1z9ms1rGtZ1x zckC8b8>>({@yl>eeHhAJr51ynZfy;$%e?emzJH}loVJY>Q<8ub;6g*XK%l%nCSKrG zVsVw-;6gO5ssJ>FAA15H$ffzF>*mXYsG|IBQ`D5(H~Tc?b6;P}&N8hg9UH1XT+{19p&XNx@9WeZX1E_gAai)^pm432KWjCinbP?J2*> zIf9eHh+>hobX}bUMRJUP`atV=f6r=%x2pSBfCqn7Qm7nC0m=nZSqG_$ z)6|fvvIiZZ%d8~}Pmnn(s|R2h2`03ZDo)m~^2XecCIV!sxHs^JYy*j|6}cHrQ_Ya8 za|#I?DmAwu2E~6`6|tVz%PF6t^((LHjZS>K4K62JJKaUcz>hN& zZe~c;OeH${=f0`$_|IwycUwB-tE$z%5u3V?4URq5^aDT-GvG^`)j4&`Wt_Nm9{ zhHvf3)0VbnzofSG(HYD@Jw2KtTCw|nH|0DX41{BJ!>XZmbyrBSI-JP#e@Rf+9VCc5 zoQ=HH+bOgVDdFH`^QNlq$^HTSOmS1X!FQS{?^u+XtQk12209>2io(KJN@O%-ml6~} zpyV*tz>IXvczX5+|-Spr3r28)5}C!1B<>efl71g+*=$ z@w8j25rRqf?GE_NK9399N_o<{gQ?@(eSutPauT#0{>EpeCT~LsKcP?X5s%_m`BbQ> zpXEF1jSn)E#z~6+oIVNrj9(2Q;I+P8az1YEiv1u%>SGu%66PFYb{tF6WT1P=@A0w#Rv} zzZjiDhJt=AVcem>83=!eB#OdcA@|JflMJj}5mIG6OB@(87D-k64ke4SOMYLJsr@o3 z2YZ&W2%2I;Q4eNHj!G$EEM^D6Uq+I0cyDJR(0sIB4K3#!R}7l^#X#s46Y);h zfI1FV7r<55RX3FJMz-JpyO4q3QlZoR!JF~29$@C1uEcPN?ZZH_7t3qi-eg%3o!&Eh zO|pwctl_cCAh! zJ(5m7{ok*y7CTE`P#!7}pE>*{N3s0P&`;NwUybPN_yfDfqTIaFW|RoQhN6ShOCCFS zD!cewNGT2UJ0uu0Er=Rv4epRMCHYVFEIWD2@&$G2Sgc<>z!3jN$+KwV|6PG1>%#hi zS$NXdhwhtt+s4(F@hC~uclJft>OKXHGr1#Z_}>q|w*xvFZaPxH46PHoR{xzS65D|& zDaG_JiB}{0z-aR`Up+#wfvB{3=;pyH@u7o7C@DCKEv7`YCY}x%9F}Mxo)>-~HuQOs zb>4Kyk#(yT7^^7nAfy3ijZz1DZ2Hu#F4f7)dwAyDR)}+$GMZ1^ZE<7G`ugw#VUU{* zkR!-Tyw&)Mg|#bX6~l(69DS1{tmWH)d53Ih)u0-PnAEHb5?9$b`K22OXy8<_!Nx}| zZv3=f-WL3FKwW3`LGY`C@WgK8?=w-d9vRLL>6beX0)SRXf$qsKa$qBow^atq#*}gG zs#RydfRMor75Aj2I|pKFUxb{MO)wD5YN(>M1Q6-HGt)mDypMuF+z0@ByF*-<74L8O z!0HY%m$#DDoujYECLMgD1$_=8<&G+`vLNQq_*fTMU~^y3IQBzT;Ky>oi`7c;AUt5Z z6$T*HDxg1G0wHW0%3jG$cL1u4pFTJR;;03G^{iu+^{)+G@0}qzHY*+kDpE1}RaK?k z9?-m;9j2YG9@Ci)!DOIEYkgUl9#&!>5y+&nh#89j*dB{f%`mX)jy${9oq~K_ zvubdg_qSMC&(#dm_Xw7;rlYo*pe`-jqvr20g4B2*jl5eJeP#4=P1Z^%0^$M$BR1Vv z)j(o)r~Ek=>A(ZyJpNgIk3Ca|u^Ul3XrIF@5y3GSA+;^4S#%N!fG~_VDfmE12|?cF z83>PBPJUD=M@4Bw$ZND3C4;olM=cFB~Um}%FV9~k^E`?Ks!xR zXntJ#)FZmzD{oYV30%9o>_miOA<*dt3XFU()y1V-doH`BvP0=rHZtAXT%o)ravJGS z*%tfQ@c3uzk6CFuc2oOMUANDY%UL>@+tudFsu@jOEVeFNxsvtVkhjXK22vPX2ZV8!ns|W3@ zAyw;pM;p3xQ9z6BR=IZiJ6V+ZcH|`pUEtYbXf+zw9s^{qy`w)SJo`tDP+9}msW2Y{ zt)T-R({)P@!S;3dW3KV>^_ao<7s9NB7~*!eZJ)UAcR-fuqM?_He_M%y6gr1jH&t_j z3YR=ShC;k;K~)uM?i7vSu`l*(&{>N}QB$c=7v7u}BTrgzZ@^y?BtYqfD ztp!1Lg(qt$&~zk^A(g121AAaAL$#=T@^W(_h{`}wm}AG9Pqp+fol&>Pf{4HI z==OTc#4%N{ZUE2*PN1Hk%|-(;;H~tAlYB4J`t7{B<~V1!;>!CxHPPY6Ty~ z9U1a*O@H+U0+!3Bl>$jz+=Q5|r=Z zgv!3dc9bAc_!piV1JKm9xPTG8I{TpIVC-#zV5=NXAVyX>Nz)h%U(wEt27@W~IP2nn zR{I@f$WbjfRsWtkdO%4@&t@v}mIDgH6TESp?y-sLVj>DnxtPaQpXoX%(}ud+eqP~2 zrel;Z{C@bPKxwPHLxJ$mq(gf%k;!IXiv13V_l?N*q**#pe?;^JUe3P3?P}%NJX%O^ zK4EF8?o*nop1%X4QgquHdfWe!(Ozh60{TB1%~pgK$k4=ztY5OM4^R4NI{iV6&y@e145k)cUfzd_v2{5pWi4f3{pt{L^e(yDDLhWT8cXqmlSs>UNkN4Qi@xF0L39_AS8GC zyU+9L`4{dNNzTdH%x8Ay+G}QKXA`fZrGkS+frWyCf}{FQQ4a+L)e!l5i;0T-Mn_;u z4*BuQ>z%1D3JUJfzt@W_4qQqU6j~HjMLC0@!m~~1Oa_%=>IYEhTNKDl?L@bU;pzE& zM}P{$S$(oyMxF-$xE+7y*=hg!bA~JbLgK1zNZZ^du5^GF?%7X_CvcgVsIaoad3>RH%YWOr zJrWU~+na0G!gqz!Me`1UcJxHnQoL8o!7@ZBbNnQI>yp6>5@D-Pm$lbdxe|-vweHr1 z_W|6gcRa7}XKn*e)8#~?f4Cq4ThAP|)au>stZiYIG3w$lWi@ zchx=nlBUk)G91OeXhT8jm4#VQeAXZO{rPzGoH7UP=)TV3{^-SM{7k3>NV4nZXeT=P zW3(Dw8x3+SvB{0w#b!~_VQRN$)R3Dq*td`56G>uw zW9{hWh&Vb+CZ$%V2>4Z;dLd83U&?U~w+ibGI2#m$6tEJ=GJ|PkIr47yR+qQWpC8sF z^FTHGG^^3Hr&!lODywIjEsK*P}teb9)3ZCU>2f)K z+nM%hjuZLx>rc4hzB@lV*R>r+I>66PMq-@IVh=vUJEui}gTm(=&xo$T@4CGjDEqVs z6bk!aw~48U@7IGcY zb38mR^g6srjm~KLIqUV4Hfb}K@QGAK1~F+Y!=i0kgJSnj@Z7c!AoOU2@M-V}m>uz^ zpzci7rUt|b_+hjHz4wHV?*~3Lgc^P8N3O?P{=Yrysr_ruJAT70lH<$p)RVAFE}VfC zD){{0KimBe*sgIWEpk->6yt00IyU@Zjb=-0H263z%o|JJ3v%Dci^w4bM4!v*U|zeS5J{|&!)aum z-g`g9j{`X5y4xUJgA50V9PR!PpUV!v9h4E|6WRM#WgcgZ`~O~#k3A19JTg+2^V>w* zc&01vXkTOm9FEhxBmjiMdqQ(8t2t<#a3*I^S+8LmPl&^T&YyxC1mng}Mk03yirS2= zx&|7aq^kFYZgOv)pYzsn?-56dt|z`>U+KnVP=u&~fa^ev<-t=4d*;23&86uUBFR1} zK2%!(BJ3jKM-(XR?)p|zM~AcxfXaIL04uQ49OP-G(q6bM$Z*1?Lh!V5-AoqI^!Gu^ zGWMNi&5=lKDW>jy>WMn3VmVim=Y|<|*J*FHRCU?uXmFx}Krk|V%;=J5!mnR)9A)6g zu)r!IkP<&tgyE=V-kC8GuXA#tuSlgoMhc}o%}U8_s+DD9W!$#|9mGr4^Jhy0qW__) z{soU_G%)vBd%W_?x_i36TDx8l1|KXM~2t@Iz&V?iB&j1S1lgvTfWn{ah;=^c2^PW+KJ zgb0S7>@XW)Mu#B>LdkDBm;2#Puk|m!3BtZGs;G}lR)=t_dupWqz`sT`aR3(=Iy|mX~oX?H0Jq5hl%8NqWulX1LlBM3_M1jJ*cB(Eqic5h&cTR#h{%o1wAu{cPLcsbS6xcf0)N4QUrBBxX-b5Tg|{0 zk!)PMQ+YpHL^BGSDzeU*xyv->*3QqTFZlp+Vc;DGcFc^H zG2}e{YnllQv!-F*uB?S*0VI@AD`mfBB@TXKGZ9B^t&5yJ#q+%T#w|Sc&w3wjhF3%P zfE=|j;)$%Vd!t1u6DR#Fm9H>#X2A3DhLphzI$S6Q@5L>AUfW2`Le8)h+}m@?uqOE8 z+nUzI`naewokub#O>UhEJdokvn8Q`jd1H;tH4Xj~eW^x5bOCq(geY_2t$`vQva zCGq{g!$x9@ehNI<_KyluMrcldu5QdWT~($I*nZvdo>(H%KN9vb_v$%MWe*7E04%2A zfY8VHJ)+xx6dKCP`CU(CzPJA<6a#xHx_>*+LusmR!BSlb>4fzs|ArE%R()vDy9@L^ zAvgLj8WV!|=l7<-EI&yYn?JfSb%c9a$Ga@U7gQv$AZB~hmvjFTo=*$6MPEjm+ZMdh z#M&};NKK9K>%BNNin-ozhbP6qkwsdxMx;k&PhCpT7;3(AS)fPuk?AhCxy*P;7a*{o zPyLk;iSCu6KF4v9FZD2I;s|_0{Aw6fOE?H{5q+#Vcq|8h@diI#>0UTOt*1F=!?Y#w zE-4`0!1uocSc;G130l7F3n+%HA~I(w(x%gew8ie`oA6X}<#Pv&!10pj=kLDtm&$U` zAyDGtsNFzQ_b3%C_m!EY{72dv&-&T*s9F)v)*^?Bq$UzbUZ&5azS}C_G=XU}`0jhw zhW%&c`yaJiuRLM(0g{St7G|vbM`qX90d>?7nvE>BXw_Y8ms^Q$FVH@Vc;A45vxckgmC_`njKz7S(d=&nDTIkBK8ZUcWs@@bw7 zg6DT{vlqUmnN{4p%)ggVv!_#jx;H&yjUy2oAdeJX9B}>mlT!p!uHlkSyQnMI+*a%j zrS&u&Le|wfR+>WfB=U=xe&?l4P{Z=?7r{%a4bOvX3h<9hTb^%I0WPZa?d4>P&fidr zZthbLP;v$rNg#M_cO9X>{qSk=7Hz-Cmkv^spe`bD+jiIJTNt1}kY{uNHm|($J>vkR zf2msi-HMo#a(0@X;|0?=omJt+Ae`wK-pd4}0rHXRjfnP%JiP)ems6uFD&EYih2TY^ zrvbk5bQ1n|Hr~BNRE}$(FKb9s9Y}Kgzw!N#cXq3-6s;`|PB<_+h63L#&fsDZC1~C;02?#8`A|a<(5?DHgNs zhyN9s@y#u#v9yPjq%1|$S}~BG0nLz;=`S3DMcr{2sLWzcM@B0pqH?@O3Wb==`QgXC z+oN#YVQGAfqeI*vS(#%FXykeBk7_F_q>HRH z&fa4b%9}H3C#UQUFAzZRZYmxMW0~8GOoRLdEIqirn1AD2`p;$2s*`Dw%6r}#b@TTF z$>?T2ix1S{KJqUfSnafmt!+W{!iVbLkVekoBPA?iH&iB~+>T>TYefcrLT-h>HhFwt zff2X!J^P{lM))Ds3->2H0T|-i%5`+;FKa(C|9669u*Wq_@mGKb{xV)gzZx?Ty+**& zZ5jZn@W=iRn8$Re;&W5F)ZbCnjDrAn7T56<4HGfXS!MfeqvR zu|MmLjlHDPw$ih-#lK`i?u=Tr!V#mO+o|DxM zN7H`i(8?o9Ax_(}EbnRa-t7CS>Lj|wVfX2x1)aNT>qaFNtH z8R{)PdmcoSU7_7>Dn@+ZKim7 zbji2NY+Us8_ypl(7gUEo#Rc&r$e(&8*P5E%&hd}QIK|>Vd)@8_9s)##Rs7Ghy=@AI zY(%W}y{lbcix{#<%51nI7qBFlMlczV6b)KeaE3_Lb%vb^kTiQgCLyaY4mN1>jQ-fg6Ed+xEt77UTa53AYTYJR0Kd|`e-I!aoA1U-@)i1%*p2Igs`yPmp{ zgsMC8nO4}G=R;DiD!n~j?k*VBZJOa*$As0|W(I`}j?FUeJhVyzOk*&%j@x7v8WehO z`onhby$#`2ZQkCuLX(v|Yu)MqIzdAtan#9JD<+95tJip#0yJ&0uqc<@8*rwGl~pgm z2{%4t<`4Z|C%RW%KJy&JP!<~Ao}3ZKVG32hnk>_XkfJRi_lO3zzqftiL1$Zg4a?Ko z9%(tN|CuSEG?@SAfUXyw1u7qzP2uGR7Sc8D5@dXv$bC3jd^C{j@&9|i=(t@ND$1{x zGYs!rr!nlH9< zt&^SzuPb^`<|cH+3sf-l&R7%b1%rG z$@j2TXHE^?B#M7Q1O8@cX!Hzx*>kvxWRu{cMn`|i_18%$uH@2`j^$4K96iV?fzF20 z^3z~dAYcWi3YIb-4n5s9W~{v*1g*@Dk$DUF(<`=MCG>@5vOh`~>Y2A@Zs&*Xr{XI$ zHDv|0((m3NK7F1qii;C}6?izL@pF3auOd0Q;&b{!Qk(m1TlnOi#=_oS%+fc_ zrl$l2xEvkHCg^eZBnpG!9H016HbE5@H;$hFV8C;}@Qnq^B8D$-S|?q(WjcP|Cv#nMSEqoNJ)|oZ+gq1NubgYeo;_6Vd)M9`&vW2G zF~s=9B_$qqkIzUqQ};!d26$SgXgzeu$~W>&9H1ZcsXvN!)|e2R>e=tle#54!>#`oX zB~YZsmKvO%d8gpTah&nG-oxoOtcTQ){#jKyMWqw603RcXfE^<__N`(n(&dBqPpJho zhb=+;`6q3*!#r3&-LYbulQrybP>l%X#pu(HrHaOxG4Md_58Y#ALihD@640;|W4j1atR z-_EEe>Aq{P6T^3tTPJEPV4<;Z<4uiNxrj-*6cvrxEG(-}u)}SaIw>@Ez>@s6Y?fLC z?t#9(Pf9Wt-K*Fq+56Ciq?af*IdxtuqXaT*e^e0JJlP<|V_TOp`3FL}4(<8J-cax>+okOKg}@I9d*lx=8TxcZvd$GcPQA zYc-C!SUsRbNN`-vi14M(H5$;adxGk?c)P}LQxr^72oV|10dDn!p7kJ9R_3=&e1)$Q zKRK;sg>g7pDs}z}!pfFvuYH%#G-#=@8*|e!AtKPmE3v<)J{)0p&m4GxgA6}EzpCU| z0larSM&7QgG2+rYX``jZnG-#-kw)u?Qhgh`Zm{XCf@z(sD>i1&u6)a3m*^sC`zrD6 zs~KLVn|s*$N!F%5vRtbJn1w#KuWN@~=v~k`%(hGnvV}5RExay(Ihod|Q3|WmEK+>Z znU3%NVZ=|JK@dSS9sCD+r{8jJ{O#6nUr)b3xK%NX(ae7*2X;7al_$5s{zzOtN65VqV#dpS+|azwKmwo6 z*6Y>mtgDtCPXlz@+`u=+9gRKuTlo*V8f#8HD;ESlocd0>6TFBY>TX)YpK2%0%KFK1$SzF2Q?T3o{IP<T|?Vj=Dt!Z|E>#yNFa6ktO@A8yIkK?kw4Jv z5Pz`{k%ZsLdZU-ET(*E&uC^{uDne%5-_(r7zt}(3ql5u8yh5{y2CIS`%w(~rGruWh z8UxrUz}pG7H^;EiZOd+NH&Mm0j{O54H91PgoCMj4lrA-iYqKCT9>NGWSkt4@%tX?p z`(SUh8oXJs_fR)lDp&LKEH)!l^N-hT`8WiZmS-LHr|7atf#;%3O z1A2u0X`Cc%nkch`jM7PSuph=+9iL;VG#e+6(x>Ug45ldte%Q5Ljw5fRq{-&M zrM-m4nfzm%CWq$fwhprvSEh93N>xlpZ&cd>MJu$;=7W>guX$3?UWYjp94HTG8~Iy+ zEd$?Q2eu|;ySM-C;gE^wLku2;a1&fK)Ynp06JKDL6KsB52>o>o(j#!(VG@853~FcH z3>NJDXieJAU%31+CrOgfePks459%&OZlYG6GFT=LvsUmt$imV|)Zq5}{$Quq@kWTk zYDIHARHRoIszw$x%vl?}u_jooMvAI-M&k>(MD6q7t5ar&HzE|;ulz|Yhfve=Af4=sCM6ry5&z&u1QFk9NIp~qH(%1sY(lMK0ZRL$ zmAoN-N4GMCAgNmGLiH!@dXDGBtPxtNEe#<@Pb4<3G2-82fgD=ogR{a(@*=uN>g~O^i z?1e>F?jk~OpBy*w^zJI(atb(=TX*S>TT&#CWFq!X6yM0*Y~I*rgX$-tyj~? z*|=u4(l7Ti;;U|FKTJu&3*=Pf_T^9^+R1aJl;*R$0I191PSxn42uAeMzR=MKODah6 zT2=>J%Zr0Wx~uQgQB)VNa3dzSCw2vl?Om&5y*SVTE@0mXW}qL5CvSMaUcVv<3eZX; z6+mbQIbbt2?WmrH_`ilTf`RNZr+wn!vInb}DFp1#3?S@r7NQj!6nOWroZ}hBi@`p* zjJ`N!=SZGax1>R1hmN0U!4q##^#QhH@FyMGY4zakvol)eVuk&(EEm;tI9u{QI)lgE zPZO$uD=`K#w3)j-V@U)=tOQ?gpMjvOJukk_XdSeg#gAiP;{~K-K0Q` z2XcQ)gf!J#wp?#3C~7sRYO1WYlLQYGz182MEq3>?G3y-NqTdp+>ZZY6#Kh0GLIUx$ z_j>fW_gS9ym=RPA8H_`vPn3$5wsfezR#!RceO8Hr{vI=q3^F zwGzvjWq&g07B?YX#o8XAs$A?p21|Ri;*IIHEumM1X$afs@q)J}f_ z*#I6(*!LW-0=Z7<;K$*-C%X7Hk&0X>5S;>0Nq=-WB$NH)b?INo6+hd%MFR|CRZ;T; z4e8w>lSJF7I3KFBaSLCAPP5w$*TTb`>KKk~*ta$p?&C3u~Q8e)5eV!3d(t`eOAH?HKCiC9Q z`9<74Z$9f&dPqh?p{kI4MyQiDngGvHvB0?TFEfpUOq|J8;a4@iZaQ!hV+q0IJebND zD8u7i<_dfu64rYAFx$a>UgRbz6ND(h7I}(EaHV7zTzW|<605gERGuf1L;jT4jCNFz zvjJ?cZEpp~Rv$Ui0dq{5+#gMcfFs47rt5h)P~#21p8_=!`VR$B1qC^$G$LD-Td#tR zMiOYGlofTuo%qmH&sVvMhbNLEI1yvRV%806(o6|`C;6hNrc6Z!OgSQkMplr%Zf0Zx z(v-CRG+T*XJRW3C<(>JE0Ic*?&qc?q(bCsRd(#@F#fIQ>V|PAa4@-(0Hu6b76;xaM zou3AbGi9i$oTw1sSI_C{7{B-o4PY@ougcu#34V-2;tdRxBO+C-CtAqF_xeBoaRBEI`@u~@=4@q|vSSfZ_5A|#jS zv}2kPN5O7vj;CD7D#J|t^D}LECD0_~RMT^Udd_U&^JzO7L#v`hZI=2={vOPBO*jMC zN{$V?n2Y7zXCm~WElgZ>$<+D;AHynR@j+U5)f^rSN5+*+A*ujudQwOSB5Taamfz!XTF4V0&+}k2iOi z!ooROk@7_t$*&Au-r)PJGD-5#dX86Ldif`?3Id1RHHodoGRRHk@=m%S?*Bn^XsRv( zXowM!uLzRlfk{64lGsFFGZxy{j-9b>o7z{vz$DJ3P5rY*(?%{1fN5RfOUtj{u+-?R z@IB0x9dg7Rox47$RmP~w!}ss3S3f!OE55USS4b!nI%Acy!_}SWNLSQPUlX6}yT^Iw z%h6U>YV7$`4VziJwAs)9q1Hy|cWuer_!?}bmDG44g==!`Q>6DFKEqDtH#Lxo@mEtq zmr)x8kG_QG;Hx%qO-IN5GD9PJHb?BP3-_fiU$B*QRB<5aJ~Kn}l^i{7#{(AFT~`sp zWr*;~65E>ggC5ZU$(g-#^@!_ZHS6^6f;+NZ&f}O|k zs#7uojn|ctMZNibtCb^8{A@ns^4;=!_DP?+JFc~W6LVN}8lY=q6Hxo`c)DPu13ikg zzc*e^K{>9n6SpR|ReOoGVe+#wQ+egc>_w7l)!tNP1$O#%uwh2}BzoeK7&J8vAZBtC zzJ)g1qS;@a@WJPKwihq9aIGy{Hqk(=-~$?Q0ZO{=1rgDspg=vJaKyQvXLIaqw9S=Y zA(wKEqpnlt7uQf!=(17Zj3mM-sdlA>mR`o0cB)%HQ~64ubExA@L}J1eGb>e=VZ-9D zxT%mTOx3aaOq$RKzmlHMeg-Ci8l196!c#*HY938{zn6%VKf^Nd1O6sX1~vv3*Ew6n zCr(?w*_o(Mw75iJl+svjR;*vFzjbBDSzCQ3ePoe%t$e`?G;AIIExcQ(URh99AH~y0PIsx=#6A;4~CtUxt(efuc+W z%bL_u$(Q7d_bVSlJA-61?nSF_L-IoY?N)dOofZ&h6_lyn7jf?%ve4vCuT4MDYNY7V zjmwHa6$G0_JZh4juz-rZJz7c(w+rJXteGh;jTVJ)pWngzAWR5PyqpM+^s@~jLiUr> z9e;Tiz9J{%Pv#sM&Hhm^h6!cf9<$kUc2#O`O`gdz($;%3lEP=d)O+N&-a7^r@$@N* z^DFl%^iB+|D8Yr!2haa3lY#)YMH&ct2MmuI(k9fHyq9w6VcxC+`2u@vZHQItODD#f zMz&82BihYg+hDFYx_+E>Ku#X@B!n23p-|`s#DxkOazUcj3&uI;7TXcx*ILAi)|!rV zazjQgv{OEYG~e$=2iG|GgA8VlQ{NOB!66euO|jfa(tJU+n;Js$U@x*qi*9K&ZR}ouK-MU3sSC#nVMqBK_x;8XeH)XB7c8_7< zy8ByG{y*cU#%)+$uI`)Tg*34>1DlEyy*2tdk_&F+D>w#d$7OwoOWQQaFbU*-P5^x} z+JzGQ^_VwQg3Epn^b5Z?zm?9OlR&)g4uwMxpYAP47-zMx<0;}(hm7WqNLK>Fs%6!h zT}IhO9vf17Y1&rQnM;MNd~SDymXq19Z)KiddSempzz2z-M@6l7S;FapvTw&YI_oaqU}$(oKJZoL0CyX=&CXIZb<6VWt- zjMHsXGKuh@s~r)E)Yj4VI9_eSP&D2*l|QI?70R*Pb}oyH_i8B-@^$$&T^s;thxC)e zjC99tIVdIZ=s9y&tN|%!Gn3|B56t$)1+ljc1O+p;W>n?E7v9LpgRMx-{mG3S>lQss z9TUlo^;c>rpnAScY&y+<@(9!ybjPSmKVjeS5dFEqYo)9QKqQ>A03JLr*zQ>zQ75#%0t-22U~*0H&-m2vX6iRd%=&p%GIy zo`K5rUwPA9v)uroBe3c3IjnYzi>z&i6Chx8y=>d^J9G-3yT_L~0gOXbP$wG7rt^aQ z&E9URM3tJEv2b#Qv$^vZ79!sL7i-Dy~gr{BW#Rg@km_A z%<$(Ip8qE4$cNTFEB2KW%QNGM)Osa&p5HTUPv#W%r!|dHE0F(i@UBo`8Twg&UYC0T zhL)&!(6rw$t@CS`VUXX`qPyrzY~1)r-8rN{I>Ld0__fLA9c3;|mIDY#+B&C39Q-+; zY;F4B%2flicN%v_y=B*VH!hMT{MqU5l_FGy+1<4@)~1q1B}AwtuTR6MKbvYkLx#4~ z6$G)ei@u({h->2B=xK)bu1zio`)6xE@zy=3kwye`$82wSl@0~xC9;TjT*|7^WHSoP zvM-exgu0qYWWClU9`%6EBpPBQW-)j_VFQTrwkgRpJV%1)x!MDo zDiy~q*!k3^?I2r!`mk|*!=c}*zPb5ilVa#`p>x@P{P5f$WwlW5_`u1aPPITTLnm+W zpM-tyM%$b_oa!IS6aWRs2+uce1b}_Z$x|MdB&WfXFKcqTbvb}2&HL*p3A`RpJrzA6 zc(xu>8P<3DW9JLqZ=1udCh7x5Tf0Ft!cXsO--6N}ieyz2ncI0)aw1-4EN2jD&>7!z zOcL~-m=j+xuBz<=RYhi{o?Y%s22o3~wgtJuM1*hMyLS|H*Uycs_-Ge*1KrYn^ryAC zY>iBrnf4oQ^%=D8bDO4a+Y(8bufM3h{p;bR;&}7e@D9%R_-zw$_Ol^pHK&eCp@qq{ z;kLFxS6W%$X^H%VJ zzxagqNZ({!HywV}40{j^q|wp~>`k`UL50ENY; zpl8@rU+T!WS_@9xxLOx&`*D)`u*mkiHz;2i5nGmTW6b?BhnH#Gx-GtFB8=@NARdIs zz|tmyh@spf#R$B(jnKR7Zn}BZCp+y{0pyvRNG^V_l2PV=y-^kPCOh2g)glP5lQJJB z%QY>Nd0rR}-#;IuyU*S>jrEmsaUdrFk<_bb+o>1Jul-b%%=u;`m%Bt(=QRDXA%+A{ zvb0ZAmTDfgUDR{kc5Qud;otX*{+3jyq*TG|Po4O?jKT_&mEBSl4zqjBV}!Yy<{Of* zu#{&;5UqOE?f9zfb84J?0o?EMa=n2?+OVe-d*`(&3NE<;-BnLwhN?eD#c5EET5B5d zqgIA)(n^QM&(LCvas&1@283we%JXH9K;Sl;=}2bWL@&nDlOkwq7B|wTe|){|{q!yc zI$EbZyY$f_PH22q1Erb6+)9b3Gy>V@Q|Eh+q#pt?t7iHp&)#JFqWaZ^7uA|OGq_U(I7(-kyQFHUFmBt-Db%K9UiB_92SzP$F1EbM^vlysxn(6@{UgbgDWl)} zVW6u$RoE}ee1Nrj`TI3YoB6-sKo>^DXQl0;(3{&k29ePDPQ$5qq3S>*_8Lnbeo(>8 zhQ+Pqo94@=Zue!)mKA61jv&uZLkzwKu7{}P(0oNr5jr+k1`EjLmmJCNrVaq<@{%(A8dLd;lHL?&5XH6 zS+R0JhM(2-5(94@-P=2h)4~Yi6jNbY)OKIC99TC*GtUi}1Hb)@eiy#9x%Nt&;XITm4pP$2 zzDIJPCEI02MVH|jS$X{IfM8mt!gBMvDqdAE^||R{%gS!Y{G&`v9@;NT?9Cpk0O0^e z3w!>Z0HmWsE=Vu9VY`=~Y|#}K#M&@M5B|(iQ0GSx+6p2orJurjC&1)a^gs=uyF`)u@%wU%(koQI0ou_Uj7ncS zyp;N%>0&S^+{X=a`6PE52PIRpstvSD{e-q= z(H@ggXf+#;9XL6!uGl|NLX8#Q5oH{;QdRXRY^t}ZC=SJmMi(kqihL`yb@g(>Ntxa$ z;X9?AiR`hQDIR7nc)ql*HS2v2ac&xO;d-BQHDd9WD2`-+-%JLp?aL4eLxpEa?m?g0_dWz1k1T4##vDv;h$thFb_E(=%A7cb;`ave9^{kIex4xx1 zyR56VRw)@#V(ZLhZT2HYB$Wz7jY|@YRi_@b`JvGjRv!A7{}XPuZ&g}tAh(gLc&GDcjc$=bt6{B>7{*&tG>Pw$L)7wF->b&rNLP_CYq2yQzK%=|lDt zjTe+odECpcdIb4s3A5Mo>|d1;niyuO&U7DIQOFUc;m@J3QYt(}cEsCcDG89}HcyoD zN%AR&pNmh)SoCUcC8Pj31t7kC>(O7eoC)9BPjR85K-4rNY0bj2Y(OgJXVKZjm%9== za?3DvKQmLo)2odn0mZ7U;gX{p&BGOnx2A&%zFuxgr4zf5;$d_K-ex6TcrypRC0}kG zJLla^!^}dh(FnU>VtAQ*V@L%7n~dY+U$X2KJWgV&#*zOWOih%xeBTe~sP_FB5NG2n z@EY*mv<+S5;Dh+ah;_eqN%iAry6bV*`zqh_&*l;Oi84ghVt;AND#Xs>YQ!U<43)|d z&zwaw_g4FkPab=t$fA|Oz(!K*0*L`og%BF6vc#L8i+{_Rk_!wZb1`~hRu*PzcH?Gd zs6Dmr!yAYgPFV@ytSSXls$OeX;9R6pa7t?uV}w^7{i`+UyZ!p)La-iC77wfP6;Kou z8T8Yds%{aL6hsd{$4$KDWOvu+T39tM;ZN>lx?d+?Qo-X27&6)vD%jkw6l`JyPV8ds z{DzT668|uHw4MNBr|9)bNdx^S$Uz0ytrL%scW^1JOw|Aggx;kvg0+e zWN1{2ec)G&@*jPiI(pB5>?5tIzjWsNsT%$bL+-i%>X2D{N2aF_%A-eTdZ|tT*c}*5 zX=7JtM3Oq1r4%?O$>RL6U>`p&g!(V@vWO&{B%;@#O?n*y={2S2&DM6PDBXhxK@VZLUSD-u83UH2MZ>7l!a)f3$y0P?>@VJv=;pN{=)?-4W zx*i%TqDv>?`&6*Jsu#f=f7^DB7!Ymved{o!*+?r%O~FJECwhd_2l3d0KSN|xdC2%* zJl5nkv->`Hq7Zc=DG8-Lfhi=W9dG{V*v38lo&?IAIUm{kt>KJBBZ37?qd4duBr7$0 zI=^JP)=g0`b^-CS>wdW)CLBBZ4KHe2)}(1PT< z&!EnW-yC!7IuS;_wIZQ)kC@2b<+_>uj@6s2RQfTQG+}ZNfuaKMfIIrc6nxQ`KpWh$ z_maXfDkDx~n{?M3UB$ySBqA?9l0aq>th&=7X2hRW)nZE7f|}6&;Ryq42x76E~a= zIkl#%XimLB`o6yGzbXN;I0RMgzj;C^Rd`0&Cy9px65M}|1ZQ$4Db;?`fi#Ttmzn@0+PJMhwSyI$o z3n)qh%o%0w2upsY&XZ#49@{g{@IEPp64}4 zcO2gP&CmL!qrI(L+s3_GHvND^8(%d((ayaf33{6p7dPH(Nlr+|Z{@9jX*rkhkE36b z6)2+7XoFJ^913weufBVI7vWWTIVdKq!ZPxAjO?yUz-BA%iMxW+E7QqcoRV};fX^En zkJ4hp0=vx5-)e##*I|TXCN9p+x?^Xe6L}Fxwlc4a9LZ{mnS>ZsY3Z&HzFETzwt_Z$ zNQhzW$CeBv4Mj0*hcC~3`<+KizlP~9;ii7xR`C|4&Q4q;s`{kBg8$w*%E`ea#y05X z;1T6s@i5`}4UXejFaEV82|7_ixpno|NSH~^L+2a8#ideGGl!MzvLx6`9Y+TbWyb<> zB2BQPViKwr?!EE?n#YJ#Vj2E*nOLH9mgOIGA5~Y7W|^w85%jIdpqBc-BOAQ0K1ir3 z%Tn68r}@VSR}H#X`U;@O2=Ep%_y)NpX+1a%^~t%BvFkMxPxv`DCJbc<`+Kisa3GYB z_boJY3snUU9KLVR%%y_vWe2cu+)LKgE~3ccIUA+B*usG zUmH_SDK7kKZazQS{K9s}+$#PTxL=yQXxAgYn^!WN{HqPoQb9|Gd3oAk1r$BRof3!NN=@ z##+AP>-oqYg#(GHYm@KbU*zP36$KfcjAN5)_F?1ApFhH0MotW6%L_U2i!capjO>*R zA{CZ6GnL#a!@pP2wNL*9eQ{hTq0M02yzZ-6A+$)Cy_o+$pv}p!@uJ~8I)WR z{r{WMEyTm5NpbI0VkCH#!w1EX`Qf100YmK5%Y*Kzd%tQkjHD6ygF8O?Fgq? z=s%*i;PHb4^(_fuz~D*^J%%r+JV3RQzlan`fC4Yk^i=x7Qh(DI~%g$$c!_@?oRK( zA*oacj9gGFUXQkQ zoIJa`v2tg7?-rtC<&D7Hi%}zmEQ<-{h;hmzIhqCc39FQE#Huyo6rm;d z7-wpQ{{+xZ!t|;~aQ*iN-Ahj#6zlqLaU6dXRig=Y=NkB3Sp!jjfVww zk}6e_3W-KiPk_cx4i0^Mq|Z#en{&ynM4~v&atn6I&eM9L#s@sZ&u{*5Sz0JHwj`DU z79mMQ;zenK4Udp{_RNUufxmVZDmAbE3DHOLZNTB7!{@}TVd+4O4RSt! zXLB*3s7%B1&SfrK%GLJ)&-@IOR())AmCKjPT=Ru6@ zfm8>{xflG~wsP-Ep;^8B4ncEAZw#C3?OS3Z1>*w;1OA<}BLD3{*Nx49Vs?5Z(U1fg z-nj2$HmDSDhmlDwxz+(^2omE&ng;lp)BY@##;=w1#B0wy1pm80J2U%tR)>O8LvrBY zHf<@wK;f~cfdrw~A)|{*vQfB1--8!6dt&0R1F;bbgN0H)9&@tIxe3H~7bLn+eDW=@ z{G;lhqyIe+BSv8NJZOeK@M(jb-%~Oj5pDngI*P?i`Tj`I6ief@Du3q9X61%R5 z+^EC|2yWm9rm|!WJ9)$mhJo6%l#YZvh2_^>7XBTqA*HVk$E=gt`Hin6Yl2A&B}qay zXvojgLSNbnf;|L97>-Tf^3B@!&kkhYacaGyr&n$x514|E|DR1g>kK?3W6R+`1+!Od z^4L7pwLYaHaC?$S*T++fPS^A^&EL9u(}|9%x3j@TLc_M%D|KeY8a)<|A}iNhZYX0N^Z&z4al6y4md2wt)ph#Myo;xj+-J=F<_l^TGc+tqI-IMMBo;Y4 zkn=M>B!yvDR)V4DicFP+L5RLUguQWIrd#IkN&LL zh7T_8f9INiJ?}nfp%^2BgX70jNe27!j=ei{heywXdzN;J6)2@@m|B}Jet2lfV_$LL zu_d4_XTU>DfHf%t189R50|Rh-7z2X?sPG*X9u1Sx1VJ!2T>Q`f=v`RYrD><$fDQuk MboFyt=akR{0DHDrjsO4v diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleAndDisplayFilters/baseline/both_sphereAsMesh.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewSampleAndDisplayFilters/baseline/both_sphereAsMesh.png deleted file mode 100644 index 3724bc21d87b58427b5621c48e87fc3fe4588046..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18371 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 literal 92015 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 aIorW%hAUp-s`XkR;HRf$M64iO3;jRW2BdBP diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/secondFilter_modified_sphereAsMesh.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/secondFilter_modified_sphereAsMesh.png deleted file mode 100644 index f8e1a01df5ece747dedba89d51457e8bff3d791c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90465 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

    d*^ilm7-1 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 JJRT0qJ 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

WaGv~$|YWbm&l4TIG{O~yWFm2OD6 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 literal 91793 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 &8*2xsB$kP-S~yOUfy7sz8BIg83!(KY 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

UW;_**GQEaT@CwxBrgM09gO~T2ni70 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 bnA%dY={&!o!^Zxl0xoAKH)Pf6->&}`;GCZQ diff --git a/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/firstFilter_sphereAsMesh.png b/pxr/usdImaging/bin/testusdview/testenv/testUsdviewDisplayFilterEdits/baseline/firstFilter_sphereAsMesh.png deleted file mode 100644 index 630e688fd2bccc5f88e4af82fb0a16426e302a10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87781 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%0DXnkK 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