Skip to content

Commit 022f7ef

Browse files
committed
Merge release v0.8.2
2 parents 4967755 + fd764b6 commit 022f7ef

File tree

1,106 files changed

+48103
-13044
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,106 files changed

+48103
-13044
lines changed

BUILDING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ This plugin is compatible with Alembic 1.5.2. The additional dependencies that m
152152

153153
| Dependency Name | Description | Version |
154154
| ------------------ |----------------------------------------------------------------------- | ------- |
155-
| ALEMBIC_LOCATION | The location of [Alembic](https://https://github.com/alembic/alembic) | 1.5.2 |
155+
| ALEMBIC_DIR | The location of [Alembic](https://https://github.com/alembic/alembic) | 1.5.2 |
156156
| OPENEXR_LOCATION | The location of [OpenEXR](http://www.openexr.com) | 2.2.0 |
157157

158158
Support for Alembic files using the HDF5 backend is enabled by default but can be

CHANGELOG.md

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,150 @@
11
# Change Log
22

3+
## [0.8.2] - 2017-12-01
4+
5+
Release 0.8.2 increments the file format version for .usdc files. New .usdc
6+
files created in this release will not be readable by earlier releases. See
7+
below for more details.
8+
9+
### Added
10+
- SdfCopySpec for copying scene description specs in layers.
11+
- Usd.GetVersion() for retrieving USD version in Python (Issue #306)
12+
- UsdProperty::FlattenTo for copying a UsdProperty's resolved metadata/values.
13+
- IsTyped and IsConcrete schema queries on UsdSchemaRegistry and UsdSchemaBase.
14+
- UsdCollectionAPI schema for representing collections of objects. This schema
15+
is more expressive than UsdGeomCollectionAPI and can represent large numbers
16+
of objects compactly.
17+
- Utility functions in UsdUtils for determining compact representations of
18+
objects for UsdCollectionAPI.
19+
- UsdUtilsCoalescingDiagnosticDelegate, a Tf diagnostic delegate that provides
20+
condensed output for diagnostic messages.
21+
- UsdUtilsFlattenLayerStack for flattening a UsdStage's layer stack into a
22+
single layer, as well as a --flattenLayerStack option to usdcat.
23+
- Support for named clip sets for clip stitching API in UsdUtils.
24+
- Schema for cards rendering in UsdGeomModelAPI and imaging support. This
25+
provides a lightweight way to collapse model hierarchies into simple
26+
geometry for visualization of large scenes.
27+
- Ability to encode familyType on owners of families of UsdGeomSubsets.
28+
- Size properties for UsdLuxDiskLight, UsdLuxSphereLight, and UsdLuxRectLight.
29+
(Issue #290)
30+
- Support for computing bounding boxes for UsdGeomPointInstancer instances
31+
using UsdGeomBBoxCache.
32+
- Support for residual GPU computations in Hydra.
33+
- Sheer display mode in Hydra, a 'see-through' display mode akin to the
34+
mesh being covered in a sheer mesh fabric instead of its regular surface.
35+
Implemented as a regular grid stipple pattern of the surface at 20% opacity.
36+
- Testing framework for usdview.
37+
- PxrUsdMayaXformStack for representing transform stacks in the Maya plugin.
38+
- Support for exporting Maya instancers to UsdGeomPointInstancers in the Maya
39+
plugin.
40+
- Support for exporting groups of objects with the same material binding as
41+
collections encoded with UsdCollectionAPI in the Maya plugin.
42+
- Support for vec4 primvars in the Katana plugin.
43+
- Support for point instancers with varying topology that don't have authored
44+
velocities in the Katana plugin.
45+
- Support for importing collections encoded with new UsdCollectionAPI schema
46+
in the Katana plugin.
47+
- Support for overriding data on a subset of point instancer instances in
48+
the Houdini plugin.
49+
50+
### Changed
51+
- Build system now checks that the compiler being used supports 64-bit builds.
52+
- Tf diagnostic warnings and status messages issued in secondary threads are
53+
no longer printed to the terminal.
54+
- Multiple delegates may now be registered with the Tf diagnostic system.
55+
- SdfLayer::RemoveInertSceneDescription removes inert overs in variants.
56+
- When saving a new .usdc file over an existing file, data is first saved to a
57+
temporary file then renamed to the destination file. This provides some
58+
protection for other processes that were reading the old file.
59+
- Compression for structural sections in .usdc files is now enabled by default.
60+
New .usdc files will be marked as version 0.4.0 instead of 0.3.0 to
61+
accommodate a bug fix described below. This means that any new .usdc files
62+
created in this release will not be readable by previous USD releases.
63+
64+
Users can disable the compression functionality by setting the environment
65+
variable `USD_WRITE_NEW_USDC_FILES_AS_VERSION` to "0.0.1". This will ensure
66+
new .usdc files will be readable in older releases.
67+
68+
- UsdStage now uses the composed layer offset instead of its inverse when
69+
mapping times in layers to the stage. For example, to shift the time samples
70+
in a referenced layer stack forward by 10, users previously authored an
71+
offset of -10. Under the new behavior, users need to author an offset of 10
72+
instead.
73+
74+
Users can revert to the old behavior by setting the environment variable
75+
`USD_USE_INVERSE_LAYER_OFFSET` to 1. This will be deprecated in a future
76+
release.
77+
78+
- UsdStage now allows a prim to be loaded without loading its descendants via
79+
a new UsdLoadPolicy argument supplied to UsdStage::Load and LoadAndUnload.
80+
- UsdInherits, UsdSpecializes, and UsdReferences now map non-root prim paths
81+
to the namespace of the edit target.
82+
- UsdAttribute::GetTimeSamplesInInterval now supports open/finite end points.
83+
- UsdClipsAPI now authors the dictionary-style clips metadata introduced in
84+
release 0.7.6 by default.
85+
- Schemas may now define fallback values for the majority of metadata fields,
86+
including custom metadata fields.
87+
- Schemas may now have more than 256 tokens defined.
88+
- usdedit now checks `USD_EDITOR` environment variable first when determining
89+
which editor to use.
90+
- Ongoing refactoring to move code from hd to hdSt in preparation for material
91+
support in Hydra and use of Hydra in other renderer backends.
92+
- Several performance optimizations in Hydra and UsdImaging.
93+
- usdview now uses a new JSON-based format for its settings file. Settings
94+
files from older releases will be ignored.
95+
- Several changes to provide better support for Viewport 2.0 in Maya plugin.
96+
- Enum attributes in Maya now have their integer values exported to USD
97+
instead of their descriptive names.
98+
- Improved attribute transfer on USD Unpack node in Houdini plugin.
99+
- usdvisible and usdactive attributes in Houdini plugin are now integers
100+
instead of strings.
101+
- Several changes to Houdini plugin for compatibility with Houdini 16.5
102+
and improved HDK usage.
103+
104+
### Deprecated
105+
- UsdGeomCollectionAPI, in favor of new UsdCollectionAPI.
106+
107+
### Removed
108+
- TfDiagnosticNotice. The Tf diagnostic system no longer emits notices;
109+
consumers relying on these notices should use diagnostic delegates instead.
110+
- UsdGeomPointInstancer prototypeDrawMode attribute. Consumers should use
111+
the new drawMode attributes on UsdGeomModelAPI instead.
112+
113+
### Fixed
114+
- Issue where users were forced to define certain preprocessor macros in
115+
order to build code against USD. In particular, an issue introduced in 0.8.1
116+
caused users who did not #define PXR_ENABLE_PYTHON_SUPPORT to run into odd
117+
errors at runtime. (Issue #304)
118+
- Bug that caused invalid .usdc files to be written. This affected all files
119+
with version 0.3.0; however, this file version was not enabled by default in
120+
release 0.8.1 and would only affect users who had explicitly enabled the
121+
new version via the `USD_WRITE_NEW_USDC_FILES_AS_VERSION` environment setting.
122+
- Precision loss when writing time sample times to .usda files.
123+
- Performance issue in UsdStage where memory would still be consumed by
124+
child prims after their parent prim had been deactivated.
125+
- Bug that caused UsdStage::ExpandPopulationMask to add invalid paths.
126+
- Bug that caused UsdObject::GetMetadata to not fill in resolved paths for
127+
asset-valued metadata.
128+
- Bug where layer offsets were incorrectly applied when authoring time samples.
129+
- Bug in UsdUtilsStageCache that led to crashes during static destruction.
130+
- Unpickable objects now act as occluders during picking in Hydra.
131+
- Bug that caused usdview to stop drawing after "Reopen Stage" or "Open Stage".
132+
- Bug that caused usdview to not play all frames if the step size was changed.
133+
(Issue #321)
134+
- Several performance and UI issues in usdview.
135+
- Crash in Maya plugin with nested assemblies and variant set selections.
136+
(Issue #288)
137+
- Bug in Maya plugin where exporting over a previously-imported layer failed.
138+
- Bug in Maya plugin that caused lights to flip between directional and
139+
non-directional in legacy viewport.
140+
- Various issues that prevented UsdKatana Python module from being imported.
141+
(Issue #323)
142+
- Material bindings above point instancer prototypes are now preserved in
143+
the Katana plugin.
144+
- Reworked how USD masters/sources are built in the Katana plugin so
145+
that material bindings use the correct Katana paths.
146+
- Hang in Houdini plugin when importing from variant paths. (Issue #309)
147+
3148
## [0.8.1] - 2017-10-02
4149

5150
### Added

CMakeLists.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,17 @@ else()
66
cmake_minimum_required(VERSION 2.8.8)
77
endif()
88

9+
if (NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
10+
if (WIN32)
11+
message(FATAL_ERROR "Compiler does not support 64-bit builds. "
12+
"If you are using Visual Studio, make sure you are in the "
13+
"x64 command prompt and have specified the Win64 cmake "
14+
"generator (e.g., -G \"Visual Studio 14 2015 Win64\")")
15+
else()
16+
message(FATAL_ERROR "Compiler does not support 64-bit builds.")
17+
endif()
18+
endif()
19+
920
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/defaults
1021
${CMAKE_SOURCE_DIR}/cmake/modules
1122
${CMAKE_SOURCE_DIR}/cmake/macros)

build_scripts/build_usd.py

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,12 @@ def GetVisualStudioCompilerAndVersion():
9999

100100
MSVC_2017_COMPILER_VERSION = (19, 10, 00000)
101101

102+
def GetCPUCount():
103+
try:
104+
return multiprocessing.cpu_count()
105+
except NotImplementedError:
106+
return 1
107+
102108
def Run(cmd):
103109
"""Run the specified command in a subprocess."""
104110
PrintInfo('Running "{cmd}"'.format(cmd=cmd))
@@ -209,7 +215,7 @@ def RunCMake(context, force, extraArgs = None):
209215
extraArgs=(" ".join(extraArgs) if extraArgs else "")))
210216
Run("cmake --build . --config Release --target install -- {multiproc}"
211217
.format(multiproc=("/M:{procs}" if Windows() else "-j{procs}")
212-
.format(procs=multiprocessing.cpu_count())))
218+
.format(procs=context.numJobs)))
213219

214220
def PatchFile(filename, patches):
215221
"""Applies patches to the specified file. patches is a list of tuples
@@ -378,10 +384,13 @@ def InstallBoost(context, force):
378384
Run('{bootstrap} --prefix="{instDir}"'
379385
.format(bootstrap=bootstrap, instDir=context.instDir))
380386

387+
# b2 supports at most -j64 and will error if given a higher value.
388+
num_procs = min(64, context.numJobs)
389+
381390
b2_settings = [
382391
'--prefix="{instDir}"'.format(instDir=context.instDir),
383392
'--build-dir="{buildDir}"'.format(buildDir=context.buildDir),
384-
'-j{procs}'.format(procs=multiprocessing.cpu_count()),
393+
'-j{procs}'.format(procs=num_procs),
385394
'address-model=64',
386395
'link=shared',
387396
'runtime-link=shared',
@@ -463,7 +472,7 @@ def InstallTBB_LinuxOrMacOS(context, force):
463472
with CurrentWorkingDirectory(DownloadURL(TBB_URL, context, force)):
464473
# TBB does not support out-of-source builds in a custom location.
465474
Run('make -j{procs}'
466-
.format(procs=multiprocessing.cpu_count()))
475+
.format(procs=context.numJobs))
467476

468477
CopyFiles(context, "build/*_release/libtbb*.*", "lib")
469478
CopyDirectory(context, "include/serial", "include/serial")
@@ -495,7 +504,7 @@ def InstallJPEG_Lib(context, force):
495504
'--disable-static --enable-shared'
496505
.format(instDir=context.instDir))
497506
Run('make -j{procs} install'
498-
.format(procs=multiprocessing.cpu_count()))
507+
.format(procs=context.numJobs))
499508

500509
JPEG = Dependency("JPEG", InstallJPEG, "include/jpeglib.h")
501510

@@ -596,7 +605,7 @@ def InstallGLEW_LinuxOrMacOS(context, force):
596605
with CurrentWorkingDirectory(DownloadURL(GLEW_URL, context, force)):
597606
Run('make GLEW_DEST="{instDir}" -j{procs} install'
598607
.format(instDir=context.instDir,
599-
procs=multiprocessing.cpu_count()))
608+
procs=context.numJobs))
600609

601610
GLEW = Dependency("GLEW", InstallGLEW, "include/GL/glew.h")
602611

@@ -742,7 +751,7 @@ def GetPySideInstructions():
742751
############################################################
743752
# HDF5
744753

745-
HDF5_URL = "http://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.0-patch1/src/hdf5-1.10.0-patch1.zip"
754+
HDF5_URL = "https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.0-patch1/src/hdf5-1.10.0-patch1.zip"
746755

747756
def InstallHDF5(context, force):
748757
with CurrentWorkingDirectory(DownloadURL(HDF5_URL, context, force)):
@@ -903,6 +912,10 @@ def InstallUSD(context):
903912
help="Suppress all output except for error messages")
904913

905914
group = parser.add_argument_group(title="Build Options")
915+
group.add_argument("-j", "--jobs", type=int, default=GetCPUCount(),
916+
help=("Number of build jobs to run in parallel. "
917+
"(default: # of processors [{0}])"
918+
.format(GetCPUCount())))
906919
group.add_argument("--build", type=str,
907920
help=("Build directory for USD and 3rd-party dependencies "
908921
"(default: <install_dir>/build)"))
@@ -1052,6 +1065,9 @@ def __init__(self, args):
10521065
# CMake generator
10531066
self.cmakeGenerator = args.generator
10541067

1068+
# Number of jobs
1069+
self.numJobs = args.jobs
1070+
10551071
# Build type
10561072
self.buildShared = (args.build_type == SHARED_LIBS)
10571073
self.buildMonolithic = (args.build_type == MONOLITHIC_LIB)
@@ -1107,6 +1123,10 @@ def ForceBuildDependency(self, dep):
11071123
context = InstallContext(args)
11081124
verbosity = args.verbosity
11091125

1126+
if context.numJobs <= 0:
1127+
PrintError("Number of jobs must be greater than 0")
1128+
sys.exit(1)
1129+
11101130
# Augment PATH on Windows so that 3rd-party dependencies can find libraries
11111131
# they depend on. In particular, this is needed for building IlmBase/OpenEXR.
11121132
extraPaths = []

cmake/defaults/CXXDefaults.cmake

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,6 @@ elseif(MSVC)
3333
include(msvcdefaults)
3434
endif()
3535

36-
# We don't use this prefix in the open source build
37-
# because CMake bakes out full paths.
38-
_add_define(BUILD_COMPONENT_SRC_PREFIX="")
39-
4036
_add_define(GL_GLEXT_PROTOTYPES)
4137
_add_define(GLX_GLXEXT_PROTOTYPES)
4238

@@ -48,13 +44,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
4844
_add_define(LINUX)
4945
endif()
5046

51-
if(CMAKE_BUILD_TYPE STREQUAL "Release")
52-
_add_define(BUILD_OPTLEVEL_OPT)
53-
elseif(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
54-
_add_define(BUILD_OPTLEVEL_OPT)
55-
elseif(CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
56-
_add_define(BUILD_OPTLEVEL_OPT)
57-
elseif(CMAKE_BUILD_TYPE STREQUAL "Debug")
47+
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
5848
_add_define(BUILD_OPTLEVEL_DEV)
5949
endif()
6050

@@ -85,6 +75,13 @@ else()
8575
message(STATUS "C++ namespaces disabled.")
8676
endif()
8777

78+
# Set Python configuration
79+
if (PXR_ENABLE_PYTHON_SUPPORT)
80+
set(PXR_PYTHON_SUPPORT_ENABLED "1")
81+
else()
82+
set(PXR_PYTHON_SUPPORT_ENABLED "0")
83+
endif()
84+
8885
# XXX: This is a workaround for an issue in which Python headers unequivocally
8986
# redefine macros defined in standard library headers. This behavior
9087
# prevents users from running strict builds with PXR_STRICT_BUILD_MODE

cmake/defaults/Options.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#
2424
option(PXR_STRICT_BUILD_MODE "Turn on additional warnings. Enforce all warnings as errors." OFF)
2525
option(PXR_VALIDATE_GENERATED_CODE "Validate script generated code" OFF)
26+
option(PXR_HEADLESS_TEST_MODE "Disallow GUI based tests, useful for running under headless CI systems." OFF)
2627
option(PXR_BUILD_TESTS "Build tests" ON)
2728
option(PXR_BUILD_IMAGING "Build imaging components" ON)
2829
option(PXR_BUILD_EMBREE_PLUGIN "Build embree imaging plugin" OFF)

cmake/defaults/Packages.cmake

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ set(PXR_THREAD_LIBS "${CMAKE_THREAD_LIBS_INIT}")
3939

4040
if(PXR_ENABLE_PYTHON_SUPPORT)
4141
# --Python. We are generally but not completely 2.6 compliant.
42-
add_definitions(-DPXR_PYTHON_SUPPORT_ENABLED)
4342
find_package(PythonInterp 2.7 REQUIRED)
4443
find_package(PythonLibs 2.7 REQUIRED)
4544

cmake/defaults/Version.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,4 @@
2424
# Versioning information
2525
set(PXR_MAJOR_VERSION "0")
2626
set(PXR_MINOR_VERSION "8")
27-
set(PXR_PATCH_VERSION "1")
27+
set(PXR_PATCH_VERSION "2")

cmake/defaults/clangdefaults.cmake

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,7 @@
2424

2525
include(gccclangshareddefaults)
2626

27-
# Defining TF_NO_GNU_EXT disables using the gnu hash_set and hash_map
28-
# containers on platforms where we can't. The implementation will
29-
# substitute C++11 containers with equivalent semantics in this case.
30-
set(_PXR_CXX_FLAGS "${_PXR_GCC_CLANG_SHARED_CXX_FLAGS} -DTF_NO_GNU_EXT")
27+
set(_PXR_CXX_FLAGS "${_PXR_GCC_CLANG_SHARED_CXX_FLAGS}")
3128

3229
# clang annoyingly warns about the -pthread option if it's only linking.
3330
if(CMAKE_USE_PTHREADS_INIT)

cmake/defaults/msvcdefaults.cmake

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,6 @@ _add_define("_SCL_SECURE_NO_WARNINGS")
7777
# will conflict with std::min() and std::max().
7878
_add_define("NOMINMAX")
7979

80-
# Defining TF_NO_GNU_EXT disables using the gnu hash_set and hash_map
81-
# containers on platforms where we can't. The implementation will
82-
# substitute C++11 containers with equivalent semantics in this case.
83-
_add_define("TF_NO_GNU_EXT")
84-
8580
# Needed to prevent YY files trying to include unistd.h
8681
# (which doesn't exist on Windows)
8782
_add_define("YY_NO_UNISTD_H")

cmake/macros/Public.cmake

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -560,7 +560,7 @@ endfunction() # pxr_install_test_dir
560560
function(pxr_register_test TEST_NAME)
561561
if (PXR_BUILD_TESTS)
562562
cmake_parse_arguments(bt
563-
"PYTHON;REQUIRES_DISPLAY;REQUIRES_SHARED_LIBS;REQUIRES_PYTHON_MODULES"
563+
"PYTHON;REQUIRES_SHARED_LIBS;REQUIRES_PYTHON_MODULES"
564564
"CUSTOM_PYTHON;COMMAND;STDOUT_REDIRECT;STDERR_REDIRECT;DIFF_COMPARE;POST_COMMAND;POST_COMMAND_STDOUT_REDIRECT;POST_COMMAND_STDERR_REDIRECT;PRE_COMMAND;PRE_COMMAND_STDOUT_REDIRECT;PRE_COMMAND_STDERR_REDIRECT;FILES_EXIST;FILES_DONT_EXIST;CLEAN_OUTPUT;EXPECTED_RETURN_CODE;TESTENV"
565565
"ENV;PRE_PATH;POST_PATH"
566566
${ARGN}
@@ -602,10 +602,6 @@ function(pxr_register_test TEST_NAME)
602602
set(testWrapperCmd ${testWrapperCmd} --stderr-redirect=${bt_STDERR_REDIRECT})
603603
endif()
604604

605-
if (bt_REQUIRES_DISPLAY)
606-
set(testWrapperCmd ${testWrapperCmd} --requires-display)
607-
endif()
608-
609605
if (bt_PRE_COMMAND_STDOUT_REDIRECT)
610606
set(testWrapperCmd ${testWrapperCmd} --pre-command-stdout-redirect=${bt_PRE_COMMAND_STDOUT_REDIRECT})
611607
endif()

0 commit comments

Comments
 (0)