-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Explicit unicode support for windows #1580
Explicit unicode support for windows #1580
Conversation
92a0c61
to
4326340
Compare
I just updated the PR by replacing the |
4326340
to
e001b6c
Compare
Filed as internal issue #USD-6819 |
Hey Aloys -- I'm getting back to this one now. Was there more you wanted to do here or do you feel this is ready to go? |
Hi Alex, I believe this PR is good to go, it has been used for some time now and no regression was reported until now... |
…support for Windows. See #1580 (Internal change: 2188891)
commit 8f842146f69d51608dccefdc78afb128da392537 Author: tcauchois <tcauchois@users.noreply.github.com> Date: Tue Oct 5 16:49:21 2021 -0700 [hd, hdSt, usdImaging] Change the format of UsdImagingDelegate::Get("/PointInstancer", "rotate") to VtArray<GfQuath>, to match SamplePrimvar; change expected hydra quaternion layout for "rotate" from (r,i,j,k) to (i,j,k,r). Quaternions in USD are stored as GfQuath arrays, with (i,j,k,r) component layout. Before this change, UsdImagingDelegate::SamplePrimvar() would return an array of GfQuath for the "rotate" primvar on a point instancer; however, UsdImagingDelegate::Get() would convert the quaternions to GfVec4f format, with (r,i,j,k) component layout. The main motivation for this change was to resolve the API incompatibility, by having Get() return an array of GfQuath as well. In order to not need to rewrite the array in processing, this code also adds half vector and quaternion support to HdVtBufferSource and hdStorm; GfQuath is now interpreted as a 4-component vector of halfs-floats, and hydra can transport this data all the way to the GPU. This saves us the array copy, and also saves us some GPU memory and bandwidth since the data is sent packed. hdStorm half support is implemented with GL_HALF_FLOAT for vertex attributes. For other binding points, like SSBOs, the half floats are sent as uint[] and unpacked by the generated HdGet_ functions. Ext-computation output to half-float vectors is also supported. hdStorm only supports half2 and half4; half1 and half3 are omitted since they are more complicated to index into. (Internal change: 2192012) commit f83be08b7e7479ff9372a93abed5e5c1d70f875e Author: sunyab <sunyab@users.noreply.github.com> Date: Tue Oct 5 16:16:49 2021 -0700 Fixes for Docker image used for PyPI generation - Pin the manylinux image to a specific tag. This avoids mysterious segfaults that occurred when trying to use the generated PyPI packages outside of the docker container. (The segfaults appear to be due to some kind of missing symbol error in TBB, but I haven't dug much further. I also did not bisect the manylinux images to determine the last one that did not have this issue) - Remove CMake build step. The manylinux image used here has CMake 3.20 installed, so we don't need to build CMake ourselves. This avoids an "expired certificate" error when trying to download the CMake source via wget. Fixes #1644 (Internal change: 2191996) commit 69e341791632b867c1c216fdd8e8d33db9185fa8 Author: stevelavietes <stevelavietes@users.noreply.github.com> Date: Tue Oct 5 14:25:58 2021 -0700 fallback case for HdSceneIndexAdapterSceneDelegate::Get when known cases (or requested primvar datasource) is not present (Internal change: 2191962) commit 22853b19d5c8fe6aec775c1b1bbbbc2bc59b83cc Author: sunyab <sunyab@users.noreply.github.com> Date: Mon Oct 4 12:10:49 2021 -0700 Update download locations in build_usd.py to avoid issues due to Let's Encrypt root certificate expiration on systems with OpenSSL version 1.0.2. This change updates build_usd.py to download library sources from alternate locations that are not affected by the certificate issues. These are still "official" locations listed on the websites for these libraries. (Internal change: 2191554) commit 243d9d12e6309aa61deabd61969caa09fe466030 Author: spiffmon <spiffmon@users.noreply.github.com> Date: Fri Oct 1 23:15:24 2021 -0700 This test update got stuck in the default changelist when submitting change 2191223 (Internal change: 2191246) commit 335363e8cb6df435989d7af518757f7881bd92fa Author: spiffmon <spiffmon@users.noreply.github.com> Date: Thu Sep 30 16:06:06 2021 -0700 Add some needful validations to usdchecker: - No Boundables under Gprims - No non-container Connectables under anything other than a connectable container - All textures that feed UsdPreviewSurface's _normal_ input should be recognizably linear encoding for 8 bit images, which should also set inputs:scale and inputs:bias appropriately. We cannot properly recognize linear 8-bit images without a plugin to perform image loading and interrogation, which will come in a followup change. So, for now, we formulate the linearity check as a warning rather than an error. - Require more stage metadata Issuing warnings required some boilerplate for introducing the concept to the Rules and ComplianceChecker, and updating the two calling clients. Also cleaned up and corrected some flat-out wrong rule descriptions, comments, and logic: - The check for authored upAxis = 'Y' for consumer content was not actually validating the data was authored, so in most installations it wasn't actually checking anything - Texture asset checks were only being performed on Shader prims, but they are legal for all content classes on other Connectable prims such as Materials, so we now test all Connectable prims. - Provide scene paths in error messages wherever relevant - Make the texture check sensitive to consumer content mode and whether asset is a usdz package, since they affect what formats are legal. - Changed format of "--dumpRules" to provide the rule names, so that error messages referring to rules by name are more useful. TO DO: - complianceChecker logic really needs more unit testing for new checks - More asset level checks (such as rel and conn target encapsulation) and model hierarchy checks would be useful. - PrimEncapsulationChecker should validate that Connectable containers that enforce encapsulation actually do encapsuate their networks. (Internal change: 2191223) commit d1aa521f6fbe48db1d4973c398d2611746d34ae1 Author: sunyab <sunyab@users.noreply.github.com> Date: Thu Sep 30 10:55:24 2021 -0700 Fix bug in build_usd.py where the script was not checking if the "use_cxx11_abi" argument was present. This argument is Linux-specific and is not defined on Windows/macOS. (Internal change: 2191163) commit 0cbebd0e18ba626e42d59c38e167bd434aa03ade Author: sunyab <sunyab@users.noreply.github.com> Date: Wed Sep 29 21:14:49 2021 -0700 Disable tests that use special test-only plugins on static library builds. The build system currently does not support this. (Internal change: 2190992) commit 2edb141396a4d5decd0fbb97d3c534a32e29c728 Author: sunyab <sunyab@users.noreply.github.com> Date: Wed Sep 29 01:11:22 2021 -0700 Avoid calling ArResolver::OpenAsset multiple times when opening a .usd layer. This change adds private API to the .usda and .usdc file formats to read from a given ArAsset. The .usd file format now calls OpenAsset itself to retrieve the ArAsset and then passes it directly to the file formats. Fixes #1613 (Internal change: 2190915) commit f482550ecc87d5b7df7dc672af6206ac4e97e55a Author: sunyab <sunyab@users.noreply.github.com> Date: Wed Sep 29 01:10:50 2021 -0700 Add UsdResolverExample UsdResolverExample provides a sample ArResolver implementation that supports URI asset paths of the form: asset:<asset_name>/<path_to_file> This example is meant to demonstrate how one could implement a URI resolver for USD and also illustrate concepts like the use of resolver contexts to drive resolution behavior. See overview.dox for more information. (Internal change: 2190914) commit 326b63ef6e121b3d3b345e3ad64954f907049b96 Author: klucknav <klucknav@users.noreply.github.com> Date: Wed Sep 29 01:10:22 2021 -0700 [hdSt] Make sure all sizes of domelight textures supported in Storm. (Internal change: 2190881) commit b6b4e7c56f55274e0f43c876b9803b067bc2adf3 Author: sunyab <sunyab@users.noreply.github.com> Date: Wed Sep 29 01:10:07 2021 -0700 [ar 2.0] Enable Ar 2.0 by default Ar 1.0 is now deprecated and will be removed in an upcoming release. If necessary, users can revert to Ar 1.0 by specifying PXR_USE_AR_2=OFF when running CMake. (Internal change: 2190873) commit 2628628445f82448e909936ed67567158caaf6de Author: sunyab <sunyab@users.noreply.github.com> Date: Wed Sep 29 01:09:52 2021 -0700 [ar 2.0] Add default implementation for ArResolver::GetExtension (Internal change: 2190866) commit c6aa60fd820b2daa4ba7b0490b3322f9c310fc79 Author: clach <clach@users.noreply.github.com> Date: Wed Sep 29 01:09:13 2021 -0700 [hdPrman] Adds functionality in hdPrman when processing primvars for a gprim to check for a "dummy" node "PrimvarPass", which can hold primvar opinions expressed by the material. These opinions will not override any primvars already set. This is currently used in MatfiltConvertPreviewMaterial to add the "displacementbound:sphere" primvar with a value of 1 to UsdPreviewSurface materials. This primvar should only have an effect is displacement is present. (Internal change: 2190862) commit fb1b8a7c3ce2160e40e110d2f47b03673a4e30fd Author: tallytalwar <tallytalwar@users.noreply.github.com> Date: Wed Sep 29 01:08:16 2021 -0700 Include MeshLightAPI and VolumeLightAPI in light sdr def - Updated UsdLux discovery to add specific APISchemas like MeshLightAPI and VolumeLightAPI for sdr representation - Updated lightDefParser to Parse nodes associated with MeshLightAPI and VolumeLightAPI with their respective shaderId (MeshLight, VolumeLight) as identifiers. - Updated testUsdLuxLight to include logic for above. - Updated MeshLightAPI and VolumeLightAPI schemas to include light:shaderId - regen usdRiPxr schemas using updated args files for PxrMeshLight to use MeshLight and not the deprecated GeometryLight. - Note that the PxrMeshLightAPI auto applied to both UsdLuxMeshLightAPI and UsdLuxVolumeLightAPI, as that is how its used for renderman's purposes. (Internal change: 2190853) commit 7a059235ca0ff5cfb1425ffdbdcf01d8facd5275 Author: davidgyu <davidgyu@users.noreply.github.com> Date: Wed Sep 29 01:07:42 2021 -0700 [HdSt] Moved barycentric coord generation to codeGen This is preparation for using built-in barycentric coords when suported by the the graphics back end.. (Internal change: 2190848) commit ed9fe492c103cae8d0eec76e7f25f96f815a1f02 Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Wed Sep 29 01:07:07 2021 -0700 Adding the lightFilter:shaderId attribute to the UsdLuxLightFilter schema along with the functions for getting the appropriate shader ID for a list of render contexts from a light filter. This is the exact same API as exists on UsdLuxLightAPI for getting a light's shader ID. Also update UsdImaging to use UsdLuxLightFilter::GetShaderId to get the identifier for a light filter node in the material networks produced for GetMaterialResource (Internal change: 2190754) commit 7d781f8942e4d0a1b8a4bbb060c714021d72650b Author: sunyab <sunyab@users.noreply.github.com> Date: Wed Sep 29 01:06:47 2021 -0700 Avoid opening .usdz asset twice when loading .usdz layer Previously, the .usdz asset would be opened once to determine the primary layer in the archive and then again when the actually reading that layer from the archive. Usd_UsdzFileFormat now uses an ArResolverScopedCache to ensure that the .usdz asset will be opened just once. Fixes #1613 (Internal change: 2190719) commit d40019721010974eba8bacf5ea7966810b2d3a48 Author: sunyab <sunyab@users.noreply.github.com> Date: Wed Sep 29 01:06:07 2021 -0700 Fix bug in ArchGetStackFrames on Windows and macOS where invalid stack frame pointers would be copied if the number of frames to skip was greater than the number of frames in the backtrace. This was exposed by the test cases for the new exception code in Tf. The tests were updated to print out the stack trace contained in the exception for debugging. (Internal change: 2190718) commit 1f2c05d312d70038d7e0b18acd2768f45bb6aa0a Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Wed Sep 29 01:05:52 2021 -0700 Simplifying and optimizing UsdPrim::HasAPI now that we know API schemas will not inherit from other API schemas. (Internal change: 2190700) commit a0f37664fe8df024e3d92f272b9adb7a0b9adce9 Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Wed Sep 29 01:05:19 2021 -0700 usdGenSchema no longer allows API schemas that inherit from other API schemas. (Internal change: 2190699) commit ac735bdaf2dcd60ab3c43b3c9e5465a28567ea10 Author: gitamohr <gitamohr@users.noreply.github.com> Date: Wed Sep 29 01:05:02 2021 -0700 tf: Add test to CMakeLists, missed in prior change. (Internal change: 2190698) commit cce114070361c3443a80929b9dc655d9342e4748 Author: gitamohr <gitamohr@users.noreply.github.com> Date: Wed Sep 29 01:04:36 2021 -0700 usd: Add usd/errors.{cpp,h} and UsdExpiredPrimAccessError, an exception thrown by the Usd core if code accesses an expired or null prim object. (Internal change: 2190686) commit 1fa12e1c60336cee23a5e8816772449d76ca8fdb Author: andrewbutts <andrewbutts@users.noreply.github.com> Date: Wed Sep 29 00:58:44 2021 -0700 Let hdSt draw BasisCurves that don't completely cover the supplied points or other primvars. If the client supplies a primvar that doesn't meet one of the size criteria, a fallback primvar value is used instead. Previously, the valid authored size options were: a) Size 1 b) Size equal to the number of elements implied by the topology and primvar class specifier (varying or vertex) c) Size less than the number of vertices, provided there are curve indices supplied Now, we adjust (b) for curves with curveIndices. If a client supplies indices (which specify a specific point index for each vert, in arbitrary order, with multiples, and possibly not covering the whole points array), primvars larger than numVerts are now permitted, and the primvar is truncated according to the primvar size implied by the topology and indices. Varying primvars of unexpected size are still counted invalid. Vertex primvars of unexpected size and lacking indices are also still counted invalid, as this is more likely an authoring mistake than an intentional sparsification as would be the case with indices. This strictly increases the configurations that are valid. This change does not tackle deindexing or compacting large primvars which are only sparsely used, because at the moment we have no mechanism in place for aliasing point IDs for drawn points. (Internal change: 2190663) commit eab641c266a87975dab6870708320dbd845bb5ca Author: sunyab <sunyab@users.noreply.github.com> Date: Wed Sep 29 00:58:32 2021 -0700 [ar 2.0] Add more docs for CreateIdentifier and IsContextDependentPath (Internal change: 2190662) commit 0b5e117c9af4f3e65caf5605a6818d6eb906fbcf Author: sunyab <sunyab@users.noreply.github.com> Date: Wed Sep 29 00:58:12 2021 -0700 Add option to build_usd.py to control libstdc++ ABI Users can now specify "--use-cpp11-abi={0, 1}" to set the _GLIBCXX_USE_CXX11_ABI define to the given value when building USD and its dependencies. This allows users to override their compiler's default ABI setting, which may be necessary to match other libraries that link against USD. There should be no difference in behavior if this option is not specified. By default, build_usd.py will not define this macro one way or another to allow the compiler to use its own default setting. Fixes #1609 (Internal change: 2190658) commit 7b8d6befba7fd823899c6dda18cbb33c8f500f64 Author: sunyab <sunyab@users.noreply.github.com> Date: Wed Sep 29 00:57:57 2021 -0700 Change default prefix for libraries to "libusd_" on Linux and macOS and "usd_" on Windows. This is to avoid name collisions with other libraries that may also use generic names like "trace" or "js". The previous behavior may be restored by specifying -DPXR_LIB_PREFIX="lib" or "" when running CMake. Fixes #1615 (Internal change: 2190561) commit c299ff75aac862a102a260fe144c6e670c3fe31f Author: davidgyu <davidgyu@users.noreply.github.com> Date: Wed Sep 29 00:57:12 2021 -0700 [HdSt] Consolidated edge param calculations This removes some duplicated shader code. (Internal change: 2190506) commit ee79bb2fa1de9d3ef72e74d301b11f15e79b2213 Author: davidgyu <davidgyu@users.noreply.github.com> Date: Wed Sep 29 00:56:49 2021 -0700 [HgiVulkan] Use shaderc to compile GLSL to SPIR-V Updated HgiVulkan to use the shaderc compiler interface to access the GLSL to SPIR-V compiler. Using this higher level interface allows for a simpler implementation as well as a simpler and more portable build configuration. (Internal change: 2190456) commit 5d7a13bce182933670cb719bf63b66fa2d5df553 Author: clach <clach@users.noreply.github.com> Date: Wed Sep 29 00:52:22 2021 -0700 [hdPrman] In RtxHioImagePlugin, adds function to convert various texture formats to type float, so they can be passed to Renderman. Fixes #1313 (Internal change: 2190386) commit d04cd7e5e8a2d9ddb69a48d6cb1ab5879ca0c74a Author: davidgyu <davidgyu@users.noreply.github.com> Date: Wed Sep 29 00:52:10 2021 -0700 [HdSt] Implemented IsValid() for HdStUdimTextureObject This matches the test condition used for ptex texture objects, and also fixes a comment. (Internal change: 2190360) commit 1635222affdbe342636db71297077768858b63b9 Author: tcauchois <tcauchois@users.noreply.github.com> Date: Tue Sep 28 13:18:32 2021 -0700 [hd] In SceneIndexAdapter, add a 1-entry LRU cache for locators -> dirty bits translation. HdDirtyBitTranslator attempts to optimize the locator to dirty bit translation process, but it was still showing up in traces specifically when we invalidate the whole scene (due to, e.g., root level xform or visibility controls). In those cases, we'll have 100k calls in a row translating a single locator to a single dirty bit. Adding an LRU cache to the translator vastly speeds up those invalidations, without really affecting typical frame-advance invalidations (which are more heterogenous). Note: currently, the cache only applies to rprims. (Internal change: 2190309) commit 6cdb0759522507017511bc0b2e5fb0bc26c91d8d Author: tcauchois <tcauchois@users.noreply.github.com> Date: Tue Sep 28 13:17:15 2021 -0700 [hd] Break apart display style scene delegate calls. (Internal change: 2190306) commit 759c3833cc4c0b4da5ebf27df33c1043eef4f31a Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Tue Sep 28 13:14:39 2021 -0700 Adding lights prefix to LightAPI's filters relationship. (Internal change: 2190281) commit 2a2d380fbb5b510847febbc9a57327ed71249451 Author: gitamohr <gitamohr@users.noreply.github.com> Date: Tue Sep 28 13:14:32 2021 -0700 tf: Support TfBaseException in Tf_TerminateHandler. (Internal change: 2190201) commit d58984f7dd0f8f7a13233b6077cd6a24d86ff8d2 Author: gitamohr <gitamohr@users.noreply.github.com> Date: Tue Sep 28 13:14:24 2021 -0700 tf: Add basic exception support. (Internal change: 2190157) (Internal change: 2190292) commit af1c2ae25d5ec2332b5b12cd31c783f3855de2e6 Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Tue Sep 28 10:15:49 2021 -0700 Additional schema adjustments to UsdLux - Added materialSyncMode attribute to LightAPI and overrides to its default value in MeshLightAPI and VolumeLightAPI - Added an authored default extent to PortalLight matching its behavior as a unit rectangle in the XY plane. - Added default values for the light:shaderId attribute for all built-in canonical lights which match the light's type name. (Internal change: 2190129) commit f9572734a6a52d141efaecd287259ee491b54058 Author: tallytalwar <tallytalwar@users.noreply.github.com> Date: Tue Sep 28 10:02:34 2021 -0700 Update usdRiPxr schemas to reflect updates in renderman lightfilter args files for sdrDefinitionName using ri:lightFilter:* instead of ri:light. Sdr Background and Reasoning: We decided that it make sense for sdr node's context (pxr/usd/sdr/shaderNode.h#53-66) to be used for sdrDefinitionName. Reasoning for lightFilter and not lightfilter, that is the context token we have settled on in hdprman code: third_party/renderman-24/plugin/rmanArgsParser/rmanArgsParser.cpp#292 (Internal change: 2190122) commit e5229ba486acb0a91f68fad9a3f451ef26f9b4a4 Author: tcauchois <tcauchois@users.noreply.github.com> Date: Tue Sep 28 10:02:12 2021 -0700 [usdImaging] Early-out of UsdImagingDelegate::Sync if the list of sync paths is empty. (Internal change: 2190112) commit f3ebcb27352973a519ae74d8189cbccc613b123f Author: stevelavietes <stevelavietes@users.noreply.github.com> Date: Tue Sep 28 09:37:06 2021 -0700 - moves renderIndexPrepSceneIndex functionality into sceneIndexAdapterSceneDelegate for efficiency - disables HdFlatteningSceneIndex for now (Internal change: 2190082) commit f48dd0603dae8be775b941a46649b092dd501fb6 Author: tallytalwar <tallytalwar@users.noreply.github.com> Date: Tue Sep 28 09:35:41 2021 -0700 UpdateSchemaWithSdrNode now adds shaderId attrSpec with default value corresponding to sdrNode identifier - usdgenschemafromsdr is updated such that schemaConfig now provides a renderContext ("ri" for renderman nodes as an example), this is then passed down to UsdUtilsUpdateSchemaWithSdrNode which uses this information along with SdrShaderNode's context field to create an attribute spec for shaderId and assigns it the shader's identifier as a default value. - cleaned usage of string constants in usdgenschemafromsdr Note that we need to provide identifier (overrideIdentifier parameter) to be used for sdrNodes which are queried using explicit asset paths. This should only be used when clients know the identifier being passed is the true identifier which sdr Runtime will provide when querying using GetShaderNodeByNameAndType, etc. This change also updates the usdRiPxr schemas by appropriately running the updated usdgenschemafromsdr on the "updated" rman schemaConfig.json files. - also updates these schema to reflect changes from usdLux sdr nodes only having core types properties and shadowAPI and shapingAPI properties. (Internal change: 2190059) commit 9793abb56d4604c23753350794a07c4c3e71728c Merge: c1efe0bb5 e001b6c12 Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Tue Sep 28 09:35:08 2021 -0700 Merge pull request #1580 from aloysbaillet/win32-utf8-support Explicit unicode support for windows (Internal change: 2190048) commit c1efe0bb52914cbd9664f2bbea224b101ad8a6d7 Author: gitamohr <gitamohr@users.noreply.github.com> Date: Thu Sep 23 16:27:16 2021 -0700 arch: Simplify crash message, also add argument to skip unknown frames when printing stack traces. (Internal change: 2190014) commit e0da0a7f55c26fb4acd7717c431e7ab3755ca710 Author: tcauchois <tcauchois@users.noreply.github.com> Date: Thu Sep 23 16:26:10 2021 -0700 [usdImaging] Fix GprimAdapter::_AddRprim material resolution order to be consistent with other functions. In GetMaterialId (on instancers and gprims) and GprimAdapter::UpdateForTime, we consider the local material binding to take precedence over the instancer material binding. This is consistent with the basic USD rules, where more local material assignments take precedence. However, this was flipped in _AddRprim, which would preferentially take the instancer material binding. For many scene structures, this wasn't causing issues, since only one of the material bindings would be non-empty; or they would point to the same path, which is sketchy but worked in practice. However, this specifically fixes a bug concerning scenes where a point instancer prototype is marked as instanceable, and the material bound to the prototype is inside the instance; in this case, the old code would have a disagreement about whether the material was named /World/path/to/material or /Prototype_N/path/to/material, and so the relationship in hydra would be broken. Fixes #1626 (Internal change: 2190000) commit 2c060ecbc0018af88ad72d670a4558435336a76d Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Thu Sep 23 16:25:45 2021 -0700 Updates to the SdrShaderNodes that are generated for concrete UsdLux types 1. SdrShaderNodes are only generated for concrete UsdLux library light types. We no longer generate nodes for the empty UsdLuxLightFilter and therefore any light filters. 2. ShadowAPI and ShapingAPI input attributes are now included in every light type's shader node. 3. The shader nodes for these lights will no longer include inputs that come from auto-applied API schemas (like the auto applied rman API schemas). (Internal change: 2189986) commit 82981a9328725cf2f719fd4f28c905bcc89a84c8 Author: comand <comand@users.noreply.github.com> Date: Thu Sep 23 00:34:50 2021 -0700 Remove lone use of boost::format from pxr. (Internal change: 2189856) commit 04fe0da60ae8afcf520162bb9eb037bd5acdc5b4 Author: gitamohr <gitamohr@users.noreply.github.com> Date: Thu Sep 23 00:33:39 2021 -0700 hio: Just return nullptr instead of creating a static const null shared_ptr and returning that. Creating the static const shared_ptr generates a lot of extra code that we don't need. (Internal change: 2189642) commit 3e6caf17e8ed43fa061d3f479db5aedb32a201b5 Author: sunyab <sunyab@users.noreply.github.com> Date: Thu Sep 23 00:32:46 2021 -0700 [ar 2.0] Make ArResolver::GetModificationTimestamp optional ArResolver now provides a default implementation for ArResolver::GetModificationTimestamp that just returns an invalid ArTimestamp. SdfLayer no longer requires a layer to have a valid timestamp. Previously SdfLayer would issue a coding error and fail if a timestamp could not be retrieved, even if the layer itself was opened and read successfully. The timestamp was used by SdfLayer::Reload to determine if a layer had been changed externally and needed to be reloaded. SdfLayer::Reload will now consider any layer with an invalid timestamp and any layer with external asset dependencies with invalid timestamps as "dirtied" and will always reload that layer. (Internal change: 2189596) (Internal change: 2189952) commit a4647187e1a5fca05f7344214ebf6ec3ed041ac7 Author: clach <clach@users.noreply.github.com> Date: Thu Sep 23 00:32:29 2021 -0700 Adds "displacementbound:sphere" primvar (with value of 1) to meshes in HdPrman if they do not already have it, allowing displacement to be seen if mesh is using a UsdPreviewSurface material with displacement. (Internal change: 2189573) commit 31a6180a6005e6038a691df999bd8c8705d06474 Author: clach <clach@users.noreply.github.com> Date: Thu Sep 23 00:32:15 2021 -0700 [hdPrman] Fixes bug when checking for "displacement" input param on UsdPreviewSurface node. Only add PxrDisplace node when value of displacement param is not 0. (Internal change: 2189570) commit de1bcf044b9a9251ccd46b0cab6ec7fdd6edd381 Author: tallytalwar <tallytalwar@users.noreply.github.com> Date: Thu Sep 23 00:31:11 2021 -0700 Allows for shader writers to explicitly provide the Sdf type associated with SdrProperty - This can be provided by setting the sdrUsdDefinitionType field in the shader to the appropriate sdf type. - Note that there is an assumption that the default value set on the such a property is in accordance with the SdfValueTypeName set in SdrUsdDefinitionType metadata. Hence we wll try to cast the VtValue to the appropriate sdf type. - Introduces _sdfTypeDefaultValue member on SdrShaderProperty which is set in _ConformSdfTypeDefaultValue. GetDefaultValueAsSdfType() can be used to access this value. Note that GetDefaultValueAsSdfType on the base NdrProperty returns an empty VtValue, in allignment with the implementation of NdrProperty::GetTypeAsSdfType - GetDefaultValue() returns the parsed sdr default value, though some minimal conformance check and correction are applied as part of _ConformSdrDefaultValue. - XXX: Note that for backwards compatibility we currently override the value of _defaultValue with _sdfTypeDefaultValue and this specific code is guarded by an envSetting. Once all appropriate code sites for GetDefaultValue are updated to use GetSdfTypeDefaultValue, this envSettings and the backward compatibility code should be removed. - Included a test in schema gen through sdr to use this feature. (Internal change: 2189531) (Internal change: 2189658) commit 8690742e53c79738ad3c175eb2581d54d70055ce Merge: 237f3d7fd 73cd8cd60 Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Thu Sep 23 00:31:05 2021 -0700 Merge pull request #1625 from kcoley/dev_usd_compliancechecker_and_usdtransform2d complianceChecker.py returns false error for not recognizing the UsdTransform2d node (Internal change: 2189454) commit 237f3d7fd17584008babd105889376e24aa7bed1 Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Thu Sep 23 00:30:40 2021 -0700 Adding the MeshLightAPI and VolumeLightAPI schema classes to UsdLux. (Internal change: 2189453) commit 141b2b95f4c1e39f4d58d33a968705000fefb401 Author: blevin <blevin@users.noreply.github.com> Date: Thu Sep 23 00:28:40 2021 -0700 HdPrman now supports additional clip planes. (Internal change: 2189427) commit c4efe02226134deaf61c27d8b1cf8d9a60016907 Author: davidgyu <davidgyu@users.noreply.github.com> Date: Thu Sep 23 00:27:52 2021 -0700 [HgiMetal] Check buffer storage mode before blit sync Added a check of the storage mode of the source cpuBuffer before executing synchronizeResource. Contribution: Jon Creighton (Internal change: 2189421) commit 6b4aaf919daf8652955ac1c5319b258cf5ff1c34 Author: tcauchois <tcauchois@users.noreply.github.com> Date: Thu Sep 23 00:19:21 2021 -0700 [usdImaging] Fix a possible crash when invalidating items, then deleting them, then drawing. UsdImagingDelegate uses _dirtyCachePaths to maintain a list of prims to call UpdateForTime on, based on recent invalidation. When prims in the underlying stage are deleted, we don't prune this list (for efficiency of removes), which means that it's possible for _dirtyCachePaths to point to nonexistent prims. Previously, this would trip an assert; this CL relaxes the assert. (Internal change: 2189221) commit 21eb93f3d87fb88b783cec14b0a28160283a4076 Author: clach <clach@users.noreply.github.com> Date: Thu Sep 23 00:14:49 2021 -0700 Add support for UsdPreviewSurface's displacement in HdPrman. Modifies MatfiltConvertPreviewMaterial() to check if the UsdPreviewSurface node has displacement set, and if so, inserts a PxrDisplace terminal node. (Internal change: 2189084) commit 57bd3b2926128b69e00ccc13e85fcb5ccf301798 Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Thu Sep 23 00:12:17 2021 -0700 Registering USD extent computations for the boundable lights, namely CylinderLight, DiskLight, RectLight, SphereLight. This skips PortalLight which has no parameters that contribute to bounds computations. (Internal change: 2189066) commit 0a875ff71509c5308c7472a741e749abc40cd9cc Author: sunyab <sunyab@users.noreply.github.com> Date: Thu Sep 23 00:08:03 2021 -0700 Fix regression introduced in change 2188569 Per comments in the file, we need to make sure that _assetModificationTime is reset to an empty VtValue in SdfLayer::SetIdentifier if the resolver returns an invalid ArTimestamp since this indicates the layer hasn't been serialized to its new location yet. Prior to the above change, ArResolver would have just returned an empty VtValue in this case. (Internal change: 2189050) (Internal change: 2189055) commit 64ad38717b0374b5ec7e06fb96b79b5424cde413 Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Fri Sep 17 23:30:08 2021 -0700 hdPrman should use RtxHioImage for lightColorMap. We want the ability to pass asset paths that refer to things other than .tex files on disk to prman for the lightColorMap property on lights. We can do this by using the RtxHioImage rtxplugin but there are three complications: 1) We must distinguish (at least) .tex files. Users will not be able to read them via HioImage so these asset paths must be passed directly (without using rtxplugin). 2) Unlike other textures, lightColorMap textures should not be flipped vertically. 3) Only image assets should use RtxHioImage. This change changes hdPrman/light.cpp to use the RtxHioImage plugin with flipping disabled for resolved asset paths that don't have a .tex extension for the texture:file input. It also changes material.cpp to use the RtxHioImage plugin for resolved asset paths that don't have a .tex extension, and are either image assets on disk or for a light's texture:file input. This is a heuristic: an unresolved asset path is probably (?) a relative path for RMAN_TEXTUREPATH to find, and a resolved asset path that has the "tex" extension could really only be a .tex file on disk. If the resolved asset is on disk then we can check to see if it's an image. If it's for a light's texture:file we know its an image and it must not be flipped. This change adds a new TfDebug code, HDPRMAN_IMAGE_ASSET_RESOLVE, that prints resolved image asset paths. It's now used for lightColorMap, assets in materials, and material filters. (Internal change: 2189040) commit 5d0b89cecd786115cfff83098b32ba3603214cbe Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Fri Sep 17 23:29:11 2021 -0700 Trace HioImageRegistry::_ConstructImage(). Added TRACE_FUNCTION to the method to keep an eye on its possible non-negligible cost. (Internal change: 2189037) commit 0885d20ebb6c363d7880a8e20e454dfe0d6b426e Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Fri Sep 17 23:28:45 2021 -0700 Add flipped flag to RtxHioImage plugin. The plugin will normally flip images vertically on load. This change allows the client to send a "flipped=false" argument to prevent that. Texture maps on lights should not be flipped. (Internal change: 2189036) commit 8f9bb9563980b41e7695148b63bf09f7abd38a41 Author: gitamohr <gitamohr@users.noreply.github.com> Date: Fri Sep 17 23:28:16 2021 -0700 hio: Update stb_image code to latest versions, enable UTF-8 filename support for Windows. See #1580 (Internal change: 2188891) commit cbb7f3832e86e669ab202e28ca2feec59df6e158 Author: sunyab <sunyab@users.noreply.github.com> Date: Fri Sep 17 23:26:58 2021 -0700 [ar 2.0] Add ArFilesystemAsset::GetModificationTimestamp This is a convenience method that resolver implementations can use to retrieve a modification timestamp for a file on disk. Updated callers that were using ArchGetModificationTime directly to use this new method. (Internal change: 2188869) commit bb8c7c626b77cd71166003dd6fd4a477ff5d1dc6 Author: clach <clach@users.noreply.github.com> Date: Fri Sep 17 23:17:55 2021 -0700 Adds support for UsdUvTexture's "sourceColorSpace" input and fixes UsdPreviewSurface's normal mapping in HdPrman. When MatfiltConvertPreviewMaterial() finds a UsdUvTexture node, we now check for a sourceColorSpace input token and pass it to the texture loader. HdPrman and Storm both check for a sourceColorSpace string. MatfiltConvertPreviewMaterial() is also modified to ensure the "normal" input signal is passed properly. (Internal change: 2188716) commit bfb41b839a583772ac58dfe273ab593de90c7f8a Author: tcauchois <tcauchois@users.noreply.github.com> Date: Fri Sep 17 23:17:25 2021 -0700 [Hd] Performance improvements for HdRenderIndexPrepSceneIndex. (Internal change: 2188699) (Internal change: 2189212) commit 6c89bf909c42a5a4b32177ca2693a0c349999334 Author: tcauchois <tcauchois@users.noreply.github.com> Date: Fri Sep 17 23:16:43 2021 -0700 [usdImaging] Let usdImaging manage delegate sync. usdImaging changetracking is good enough now that we don't need the sync request vector to call UpdateForTime. (Internal change: 2188698) commit 07d456fd95b3222b1435feae5fd9addf506c07fb Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Fri Sep 17 23:16:08 2021 -0700 Deleting UsdLuxLight and UsdLuxLightPortal. (Internal change: 2188607) commit d43f0724d241cc4eb3a8a4d0e51a29206e434e8a Author: sunyab <sunyab@users.noreply.github.com> Date: Fri Sep 17 23:10:38 2021 -0700 [ar 2.0] Require Unix time for asset modification times ArResolver implementations were previously free to use any object to represent an asset's modification time as long as that object could be equality-compared to determine if an asset had been modified. This provided maximum flexibility. However, with the introduction of URI resolvers in Ar 2.0, clients may now be working in environments with multiple active resolver implementations. In these cases, allowing each implementation to use different objects for timestamps would restrict the ability to compare timestamps from different assets, e.g. to determine if one asset had been more recently modified than another. This is not something the USD core currently does, but could be useful in various pipeline use cases. To enable these comparisons, Ar now requires asset modification times to be represented using Unix time. This change modifies ArResolver::GetModificationTimestamp to return a new ArTimestamp object which documents this requirement. Client code in the core has been updated to accommodate this API change. (Internal change: 2188569) commit 87b25a1972c09728588e5c7d9591b63699ec40b7 Author: tcauchois <tcauchois@users.noreply.github.com> Date: Fri Sep 17 23:09:17 2021 -0700 [hd] Performance fix for HdFlatteningSceneIndex xform computation. 1.) If the xform is fully composed, don't bother looking up the parent prim. 2.) If the xform is fully composed, cache it instead of returning with nothing cached. (Internal change: 2188429) commit 8947ffd04e3014f16daedeeed234437ab5ffdce4 Author: tcauchois <tcauchois@users.noreply.github.com> Date: Fri Sep 17 23:07:03 2021 -0700 [Hd] PrimDataSourceOverlayCache: don't use a per-prim TBB datastructure. PrimDataSourceOverlayCache holds, per-prim, a series of attributes that have been computed and added to that prim. Those new attributes are currently living inside a tbb::concurrent_unordered_map, but it turns out this is super expensive. It's also not needed in current uses of the PrimDataSourceOverlayCache, since hydra has a (mostly) strong guarantee of only one thread accessing each prim. We'll need to revisit this if we add hierarchical computations to PrimDataSourceOverlayCache, but at that point we have many solutions that aren't as expensive as a TBB datastructure. (Internal change: 2188421) commit f89af062a0cf332da7557dbcea4da17d58754e0c Author: tcauchois <tcauchois@users.noreply.github.com> Date: Fri Sep 17 23:06:16 2021 -0700 [usdImaging] Delete PrimvarDescCache::Extract and ::GarbageCollect, and UsdImagingDelegate::PostSyncCleanup. This whole codepath wasn't being used, since we never extract things from the desc cache anymore; we only use Find(). (Internal change: 2188420) commit 6d317699a389dd5c560873c5791870173b4649f0 Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Fri Sep 17 23:04:38 2021 -0700 Updating BoundableLightBase to inherit from Boundable and NonboundableLightBase to inherit from Xformable. This completely removes any dependencies on the UsdLuxLight schema class which can be deleted following this change. (Internal change: 2188389) commit dcb16701a0e034af123cd1b14179c5abd6bb739b Author: blevin <blevin@users.noreply.github.com> Date: Fri Sep 17 23:04:09 2021 -0700 usdview hard-codes 1024 samples for HdPrman (Internal change: 2188127) commit 7743b25909e40fcf5471d87bca356ae0a6fb9d2b Author: tcauchois <tcauchois@users.noreply.github.com> Date: Fri Sep 17 23:03:33 2021 -0700 [Hd] Speed up HdLegacyPrimSceneIndex::DirtyPrims. Skip looking up the legacy datasource if the locator's not relevant. (Internal change: 2188041) commit 16790cd84a68a220dd759d638a3d24bdfbc6f1f3 Author: tcauchois <tcauchois@users.noreply.github.com> Date: Fri Sep 17 23:03:09 2021 -0700 [usdImaging] Add a trace to UsdImagingDelegate::Sync. (Internal change: 2188040) commit 11a6c0071e284e27e3d332047d9027a6c36275f6 Author: blevin <blevin@users.noreply.github.com> Date: Fri Sep 17 23:02:23 2021 -0700 Fix HdPrman's fallback maxSamples to match the RenderMan fallback (64). (Internal change: 2188006) commit c5a31418a53d25ca4bccbe8947e17e51e2445978 Author: blevin <blevin@users.noreply.github.com> Date: Fri Sep 17 23:01:10 2021 -0700 Adjust HdPrman's fallback volume shader to match Storm's. Visually, this fallback approximates something like smoke: - low albedo - isotropic (i.e. scattering has no directional bias) - single-scatter integration is often sufficient (Internal change: 2187915) commit 0507b1582041096e32613ef9201b500d94a51ee4 Author: tallytalwar <tallytalwar@users.noreply.github.com> Date: Fri Sep 17 22:57:51 2021 -0700 Update ConnectableAPIBehavior and UsdGeomBoundableComputeExtent to not clear the entire cache every time new plugins are registered UsdShadeConnectableAPIBehavior: - On a new plugins registered notice, erase the entries in _primTypeIdCache which have a null behavior registered, since newly-registered plugins may provide valid behavior for these primTypeId entries. Note that we retain entries which have valid connectableAPIBehavior defined. - Update the _GetBehaviorForPrimTypeId to also cache primTypeId for which no behavior is found. - Added a test which checks the state of behavior cache before and after new plugins have been registered. - Re-orgs testUsdShadeConnectableAPIBehavior resource directory UsdGeomBoundableComputeExtent: - Erase the entries in _registry which have a null ComputeExtentFunction registered, since newly-registered plugins may provide a valid computeExtentFunction for these type entries. Note that we retain entries which have valid ComputeExtentFunction defined. (Internal change: 2187908) commit c8c8b0232835a31094a436726d6189642e91c93d Author: stevelavietes <stevelavietes@users.noreply.github.com> Date: Fri Sep 17 22:54:12 2021 -0700 Only advertise volumeFieldBinding as data source name for volumes within dataSourceLegacyPrim This only affected cases which rely on advertised names to know what to query, It revealed a case where a scene delegate could crash if non-existent volume field data was requested for all gprims (fixed separately) (Internal change: 2187718) commit da65150d59ee0d04ea1bc040b2af17fdab03ad93 Author: stevelavietes <stevelavietes@users.noreply.github.com> Date: Fri Sep 17 22:52:46 2021 -0700 HdRenderIndex::GetSceneDelegateForRprim falls back to back-end adapting scene delegate when a prim doesn't contain a "delegate" data source. (Internal change: 2187715) commit 2dc2bf134f92a4521cdb5518a63dad9825b3e6ee Author: jewalker <jewalker@users.noreply.github.com> Date: Fri Sep 17 22:49:40 2021 -0700 Extracted the euler filtering portion of GfRotation:DecomposeRotation Pulled out the portion of GfRotation::DecomposeRotation that is responsible for making sure that a given rotation is the closest possible rotation to a hint rotation into a standalone function called ClosestSolution. (Internal change: 2187674) commit 7888d5ba664817d6689167fdc2782407d314f3fc Author: jewalker <jewalker@users.noreply.github.com> Date: Fri Sep 17 22:45:17 2021 -0700 Replace Gf::_PiShift with a simpler and more correct algorithm The original Gf::_PiShift algorithm tried to calculate the result in as few operations as possible, however the algorithm is slightly confusing and is incorrect in a few cases (it sometimes doesn't return a value within Pi of the hint). Replacing with a simpler iterative algorithm. (Internal change: 2187673) commit 429819564f12cff5469b24019b3a691dfa0a0f84 Author: jewalker <jewalker@users.noreply.github.com> Date: Fri Sep 17 22:40:41 2021 -0700 Replace use of NULL with nullptr in GfRotation (Internal change: 2187672) commit 5c29d519e6292d3b522c917fbf0298e00c9816c1 Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Fri Sep 17 22:31:31 2021 -0700 HasConnectableAPI() now does a full search. Previously this function (on UsdShadeConnectableAPI) would only check a cache. If the type hadn't been cached already then the function would return false even if it would've been true after caching. Now we do the full search algorithm from GetBehavior() to fill the cache if necessary so clients are no longer on the hook to call GetBehavior() (indirectly) to get the right results. The change moves the code from GetBehavior() into another function and has GetBehavior(), GetBehaviorForType() (which HasConnectableAPI() calls), and GetBehaviorForPrimTypeId() call the new function. Please note that this makes GetBehaviorForPrimTypeId() and GetBehaviorForType() significantly more expensive if the result isn't cached. This is necessary to get the correct answer. testUsdShadeConnectableAPIBehavior was changed to reflect the new behavior. One part of a test became redundant and was removed while parts of two other tests that depend on the new behavior were enabled. A type lookup bug was also fixed; this bug prevented a couple of tests from checking what they were intended to check. (Internal change: 2187449) commit d0a35fd5f4ebbbbb60c527cd36a22fd53f358ec9 Author: tallytalwar <tallytalwar@users.noreply.github.com> Date: Fri Sep 17 22:31:10 2021 -0700 Regen usdRiPxr/pxUsdRiPxr schemas using the updated schemaBase metadata from args files. (Internal change: 2187265) commit a26ea21208fafc4de1a5e48970cbbfdc6b43e049 Author: stevelavietes <stevelavietes@users.noreply.github.com> Date: Fri Sep 17 14:30:00 2021 -0700 HdDataSourceLegacyPrim::GetNames advertises "material" as a possible child data source for lights (This makes GetMaterialResource results inspectable for legacy scene delegate lights.) (Internal change: 2187069) commit 85c5f6e612b4369bfb4b26031079626abaa3262b Author: tcauchois <tcauchois@users.noreply.github.com> Date: Fri Sep 17 13:46:28 2021 -0700 [hd] Re-enable Scene Index Emulation. Scene Index Emulation is a major new imaging feature. It was originally turned on in CL 2185534, but due to some performance issues it was disabled in CL 2186347. We've addressed many of the performance issues now, so we're re-enabling it. We expect to continue working on performance after this CL, though. (Internal change: 2187040) commit db0633d7044dc56d42b030a3e89cd7cbc58f04a9 Author: sunyab <sunyab@users.noreply.github.com> Date: Fri Sep 17 13:45:07 2021 -0700 Tweaks for specifying build variants in build_usd.py - Restored default build variant to 'release'. This was changed to 'relwithdebinfo' in change 2184287 but in hindsight it seems a little odd for the default to not be 'release' and produce a potentially much larger build due to the inclusion of the debugging info. - Removed individual build variant flags to minimize the (growing) number of command line arguments to the build script. Users now specify the build variant with: '--build-variant {debug, release, relwithdebug}' - Small refactor to provide more readable description in summary and remove unnecessary function. (Internal change: 2186949) commit b6a2fbf1d15b716803ffdc7b2b62b4ba79bda401 Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Fri Sep 17 13:43:58 2021 -0700 Updates in usdLux to replace references to UsdLuxLight. The Ndr discovery plugin and parser for lights now finds all types that derive from the BoundableLIghtBase and NonboundableLightBase types. Light tests now use the UsdLux.LightAPI object. (Internal change: 2186931) commit 66c6acd1e6a201e71c8dd3fe797b1750afd1f194 Author: tallytalwar <tallytalwar@users.noreply.github.com> Date: Fri Sep 17 13:43:41 2021 -0700 Document sdr property metadata to SdrProperty spec metadata translations (Internal change: 2186888) commit 2152151a61a6ad122d57af83ece46e922f43fa97 Author: klucknav <klucknav@users.noreply.github.com> Date: Fri Sep 17 13:35:58 2021 -0700 [hdx] built-in lights in HdPrman Extending the HdxTaskController to add the built-in lights regardless of backend. (Internal change: 2186877) commit 73cd8cd60662bbb88da88a7f8a15b3fcf0add1c6 Author: Kacey Coley <kcoley@g.clemson.edu> Date: Thu Sep 16 15:41:31 2021 -0700 Add UsdTransform2d as a shader id option commit 562750fc25f24b404bd38798582be55e33eb7dfb Author: tcauchois <tcauchois@users.noreply.github.com> Date: Sun Sep 12 23:42:03 2021 -0700 [hd] Streamline HdFlatteningSceneIndex PrimsAdded and PrimsDirtied calls. - When we get an Added/Dirtied for primPath and invalidate its subtree, don't generate a dirty notice for primPath since that's redundant. - The wrapper invalidation now takes a locator set, and we filter for relevancy against a locator set. This reduces the number of times we translate back and forth. - If we're invalidating a subtree and a prim doesn't have any cached data, don't invalidate its children, on the assumption that they didn't reference this prim for their value computations. (This particularly helps avoid large invalidations before the scene is populated). (Internal change: 2186846) commit d9b0f28ef2fc4b9876d29863b792ae356fa97874 Author: tcauchois <tcauchois@users.noreply.github.com> Date: Sun Sep 12 23:41:58 2021 -0700 [hd] Speed up scene index emulation teardown. Special case scene index prim removal for the case of path == "/". (Internal change: 2186837) commit 8ffa7e00c75eccec9cfa88743203856c686abb34 Author: sunyab <sunyab@users.noreply.github.com> Date: Sun Sep 12 23:41:31 2021 -0700 Fixed bug that could cause UsdNotice::ObjectsChanged notice emitted after a call to UsdStage::Reload to contain pointers to destroyed objects, leading to invalid memory accesses when calling certain methods on the notice. Change 2175340 added a batching mechanism for processing changes in UsdStage, primarily to allow stage changes that occurred during a call to UsdStage::Reload to be combined into a single round of notification. These changes could be due to a resolver change, or layers being reloaded. In the latter case, UsdStage::_HandleLayersDidChange would save pointers to data in the SdfNotice::LayersDidChange notice it received so they could be included in the ObjectsChanged notice emitted in _ProcessPendingChanges. However, _ProcessPendingChanges would be called *after* the LayersDidChange notice went out of scope, leaving the pointers in the ObjectsChanged notice dangling. This fix makes UsdStage::_HandleLayersDidChange process and send out the ObjectsChanged notice immediately to ensure the LayersDidChange notice is alive when the ObjectsChanged notice is sent. This should still result in a single round of notifications if UsdStage::Reload causes resolver change and layer reloads, since the layer reloads happen after the resolver changes are processed. Fixes #1605 (Internal change: 2186836) commit 055fce522d53b6afca3c3ff43d528baf7e492ce5 Author: tcauchois <tcauchois@users.noreply.github.com> Date: Sun Sep 12 23:41:18 2021 -0700 [hd] Speed up UsdImagingDelegate::Sync() when some of the request paths are not present. In scene index emulation, UsdImagingDelegate::Sync() can receive prim paths of other delegates. If we discover these, we want to continue to the next prim path as soon as possible. Previously, the first thing we did with these paths was to convert index -> cache path, and then check if the prim info was present. However, if the prim info isn't present, the index->cache path map entry won't be present, and we'll do an SdfPath::ReplacePrefix before discovering that the primInfo map is empty. Now, we directly look at the index -> cache path table, skipping the ReplacePrefix. If we don't find the path translation entry, we know the prim info doesn't exist, since the two datastructures are maintained in parallel. (Internal change: 2186829) commit b89fa3b377a1231b1a0a284e59279538ca98420f Author: spiffmon <spiffmon@users.noreply.github.com> Date: Sun Sep 12 23:40:32 2021 -0700 Remove a vestigial call to UsdAttribute::Get(). This may have been an early attempt to deal with "blocked" values, but it is now documented that HasAuthoredValue() will return false if an attribute is blocked. (Internal change: 2186825) commit c1c251e6e855302dc153711c75f615784e973dcc Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Sun Sep 12 23:40:10 2021 -0700 Updating the usdRi lights - PxParticleLight, PxVoxelLight, PxrAovLight, and PxrEnvDayLight - to inherit from NonboundableLightBase This just updates the schemas for these lights but not the script that generates the schemas (which is a separate task). The reason for updating these schemas manually is it a necessary step towards deleting the UsdLuxLight base schema. (Internal change: 2186771) commit 4f4a4edbcdb9aaf0eaf96fd97b617f140dd9d377 Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Sun Sep 12 23:39:49 2021 -0700 Changing the built-in UsdLuxLights to inherit from the correct UsdLuxBoundableLightBase or UsdNonboundableLightBase instead of UsdLuxLight. Inherits from BoundableLightBase - CylinderLight, DiskLight, PortalLight, RectLight, and SphereLight. Inherits from NonboundableLightBase - DistantLight, DomeLight, and GeometryLight (deprecated) PluginLight is special and inherits directly from Xformable and has a built-in LightAPI. This change also deprecates GeometryLight. Note that all lights do still inherit from UsdLuxLight as the two base classes still do. This will be changed in the near future to completely remove UsdLuxLight. (Internal change: 2186770) commit cdaaa65433b4a63d32c14eb35980118f7ae94023 Merge: 8bbca3646 f85afd68b Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Sun Sep 12 23:39:40 2021 -0700 Merge pull request #1608 from marktucker/dev_instancer_update_optimization Improve UsdImagingDelegate performance when editing many instances of the same prototype (Internal change: 2186726) commit 8bbca3646e084ae8e856cb894f8992647e64a5f4 Author: sunyab <sunyab@users.noreply.github.com> Date: Sun Sep 12 23:39:22 2021 -0700 [ar 2.0] Rework test to avoid path comparison issues on Windows The test now creates resolver context objects for comparison in exactly the same way as the underlying resolver implementation. This fixes testArURIResolver_CPP on Windows. (Internal change: 2186719) commit ad29720dbb5e120e12986d8a62875da74c45b142 Author: stevelavietes <stevelavietes@users.noreply.github.com> Date: Sun Sep 12 23:39:07 2021 -0700 Removes topology caching from prim-level data source to shared amongst children of new "mesh" and "basisCurves" data sources and schemas. By having meshTopology and geomSubsets as children of the prim-level container data source, we had multiple existing HdSceneDelegate calls repeatedly querying for meshToplogy. The existing solution cached topology data sources as member variables of the prim-level HdLegacyPrimDataSource. This increased memory usage. By introducing an additional level of nesting ("mesh" and "basisCurves" container data sources), we can share the result of a single call to GetMeshTopology among data sources beneath. This lives as long as any of those data sources instances are alive rather than the lifetime of the prim. (Internal change: 2186684) (Internal change: 2186820) commit 14e9246c222607ebfe43250a0acd259a39964181 Author: jloy <jloy@users.noreply.github.com> Date: Sun Sep 12 23:39:02 2021 -0700 sdf: remove unused variable (Internal change: 2186636) commit 747ca6b4eb750764b5c09fd0de9fc6de2d5155f5 Author: adamrwoodbury <adamrwoodbury@users.noreply.github.com> Date: Sun Sep 12 23:38:33 2021 -0700 Remove UsdGeomImageable::ComputeVisibility overload that takes a parentVisibility parameter. It was originally added in change 1930290 but was unused, outside of tests. (Internal change: 2186609) commit ac104480f52172ba99c7e0aaa4cddd7cf8b934c3 Author: jloy <jloy@users.noreply.github.com> Date: Sun Sep 12 23:38:30 2021 -0700 sdf: fix docs for Sdf_RelationshipTargetListEditor (Internal change: 2186517) commit f48d431ab8232832f58669a43be1d0ceb7492afa Author: sunyab <sunyab@users.noreply.github.com> Date: Sun Sep 12 23:38:17 2021 -0700 Workaround error when building OpenColorIO on Windows under the RelWithDebInfo configuration in build_usd.py. (Internal change: 2186512) commit 333403fb9e1a7c15942f8f667533740cbbefa498 Author: blevin <blevin@users.noreply.github.com> Date: Sun Sep 12 23:37:38 2021 -0700 Improve Storm's 1st order approximations of the basic UsdLux area lights. SphereLight, DiskLight, RectLight, DistantLight, and CylinderLight now provide an approximation of the direct lighting response of their path-traced area light forms, including controls for: - intensity, exposure, color temperature - diffuse and scalar multipliers - geometric controls, normalization, and directionality - cone angle and cosine focus Visibility on these lights also now works. A major difference is that previously these lights did not attenuate with distance; now they do. As a result, tests that used UsdLux lights with Storm have been updated to produce similar visual results in-camera. (Internal change: 2186473) commit 903cec115af663eb5c29ffb5a10e5bac0bfa6b61 Author: tallytalwar <tallytalwar@users.noreply.github.com> Date: Sun Sep 12 23:35:52 2021 -0700 Update usdRiPxr schemas to include PxrCameraProjectionAPI This PxrCameraProjectionAPI schema provides connectibilityBehavior and is auto applied (ONLY) to UsdGeomCamera. Note that other Renderman camera properties will be generated via usdgenschemafromsdr off the PRManCamera.args file in subsequent change(s). Concrete Light schemas are also updated to have LightAPI schema applied, resulting in exclusion of the properties previously implicitly added because "Light" inheritance. This change also adds a simple overview.dox describing the usdRiPxr codeless schemas. (Internal change: 2186471) commit 4e3e575c41765119f55b268eda1fd1bebf5e3366 Author: adamrwoodbury <adamrwoodbury@users.noreply.github.com> Date: Sun Sep 12 23:22:03 2021 -0700 Add ComputeEffectiveVisibility and GetPurposeVisibilityAttr methods to UsdGeomImageable. This provides the UsdGeom reference implementation for purpose visibility. (Internal change: 2186434) commit 4361f9fe40c71f0ff4c038e4c638a8299619ef57 Author: tcauchois <tcauchois@users.noreply.github.com> Date: Sun Sep 12 23:21:07 2021 -0700 [hd] Temporarily disable scene index emulation. Scene index emulation is a significant new imaging feature that was enabled by changing a config flag in CL 2185534. This CL is turning off emulation by reverting the config flag, for the sake of stability. However, the plan is to re-enable the config flag as soon as we have a few performance fixes in. (Internal change: 2186347) commit 5f05017a37cc31e6dddaf3dbf1481b2e69a7bb97 Author: tcauchois <tcauchois@users.noreply.github.com> Date: Fri Sep 3 15:38:00 2021 -0700 [hd] GetInstanceIndices() in emulation speedups. - Pull a datasource access out of an inner loop. - Be careful not to break VtArray sharing. (Internal change: 2186217) commit 3b92fbec5bdef975e56dfecc3d98ed3519671170 Author: tcauchois <tcauchois@users.noreply.github.com> Date: Fri Sep 3 15:37:42 2021 -0700 [hd] GetInstanceIndices() speedup: cache the top level instancer topology datasource. This change caches the Hd_InstancerTopologyDataSource, primarily so we can cache the result of GetInstancerPrototypes and the translation of said value to a VtArray. Those two operations can end up being surprisingly expensive, since if we do them once per prototype rprim we end up with O(#prototypes^2) SdfPath copies and some of our scenes are very highly instanced. Caching with an atomic guarantees we get some caching and answers are always correct, but if there's contention in _GetInstancerTopologyDataSource we can end up doing duplicate work. In some unscientific testing, this version is a bit slower than synchronizing on a mutex (1.3x on one of our highly instanced sets); but it benefits from not having a std::mutex per prim, which would cost a lot of memory. With this change, the runtime of GetInstanceIndices() is once again reasonable and no longer the tall nail in our traces. (Internal change: 2186216) commit 2607698851e3891b28516aec20b4742daa0281d6 Author: tallytalwar <tallytalwar@users.noreply.github.com> Date: Fri Sep 3 15:37:19 2021 -0700 Import distutils.utils in the function instead of for the entire python module. (Internal change: 2186215) commit 824a754331c442339d6014b287a6ebd47556aac2 Author: tallytalwar <tallytalwar@users.noreply.github.com> Date: Fri Sep 3 15:37:10 2021 -0700 Fix UsdPhysics python to work with windows py38+ __init__.py should be using the code introduced with change 2161883 (Internal change: 2186043) commit b5db0b845e2dae46469cb8beebeecead79680604 Author: tcauchois <tcauchois@users.noreply.github.com> Date: Fri Sep 3 15:37:04 2021 -0700 [hd] Speed up GetInstanceIndices in emulation. GetInstanceIndices was implemented naively in emulation, construcing the whole instancer topology for each prototype. For highly branched instancers, this can explode the runtime of this call. The fix is simply to make the pull of instance index buffers lazy (i.e. push the scene delegate access one level down in the hierarchy). (Internal change: 2186008) commit 0f3143f450333feb51ce63031b739f1ca1fb2a6e Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Fri Sep 3 15:33:27 2021 -0700 Extend check for valid lights to include non light prims with LightAPI applied in HdPrman (Internal change: 2186005) commit ae24c13d1562c89ba13ecdc716ca200c885dfad0 Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Fri Sep 3 15:33:22 2021 -0700 Making the light:shaderId attribute in UsdLuxLightAPI uniform (Internal change: 2186003) commit 694f04a053a258aea8cf9b6ca80e4054c7ad797d Author: sunyab <sunyab@users.noreply.github.com> Date: Fri Sep 3 15:33:16 2021 -0700 Restore commented-out check now that the hang in NdrRegistry that required this workaround has been fixed. (Internal change: 2185904) commit 6aa319ee565873b0bd29bbdcd420cfe6c349a3c6 Author: sunyab <sunyab@users.noreply.github.com> Date: Fri Sep 3 15:27:33 2021 -0700 Fix possible deadlock with Python GIL in NdrRegistry NdrRegistry::GetNodesByFamily could wind up calling into Python from worker threads when loading plugins. This would cause a deadlock on the Python GIL if this method were originally called from Python. This changes fixes the issue by releasing the GIL during the parallel portion of the method. (Internal change: 2185903) commit 5478ea54b56f32204323e9e290ddf61c082d9940 Author: pixar-oss <pixar-oss@users.noreply.github.com> Date: Fri Sep 3 15:27:23 2021 -0700 Adding support to UsdImaging for new LightAPI features. 1. Updated the materialParamUtils to take a list of render contexts (as provided through render delegates' GetMaterialRenderContexts) when creating a material network for a prim. For prim's that implement UsdLuxLightAPI …
…rAnimationStudios#1580 (presumably by accident). Add a FILE_SHARE_READ flag to the CreateFile call that is used to open a symlink location on Windows. This failure was manifesting as a rare intermittent failure to properly resolve a file path inside a symlinked directory on Windows when running many simultaneous processes reading and writing USD files inside this symlinked directory.
…rAnimationStudios#1580 (presumably by accident). Add a FILE_SHARE_READ flag to the CreateFile call that is used to open a symlink location on Windows. This failure was manifesting as a rare intermittent failure to properly resolve a file path inside a symlinked directory on Windows when running many simultaneous processes reading and writing USD files inside this symlinked directory.
Description of Change(s)
This change adds explicit windows support for UTF-8 characters in file paths.
As discussed in #1443 these changes are not necessary if the calling executable is patched to use the UTF-8 code page on recent versions of Windows (see https://docs.microsoft.com/en-us/windows/apps/design/globalizing/use-utf8-code-page for details).
Unfortunately these changes are necessary for applications that need to be used without changing the OS default settings.
Fixes Issue(s)