Skip to content

Commit

Permalink
Merge release v19.01
Browse files Browse the repository at this point in the history
  • Loading branch information
pixar-oss committed Dec 12, 2018
2 parents 6c50b29 + 79f095a commit 1845291
Show file tree
Hide file tree
Showing 607 changed files with 20,172 additions and 9,311 deletions.
126 changes: 126 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,131 @@
# Change Log

## [19.01] - 2018-12-14

### Added
USD:
- usdresolve utility for checking the results of asset resolution at the
command line. (PR #609)
- SdfFileFormat::FindAllFileFormats and FindAllFileFormatExtensions
for querying available file formats. (PR #532)
- Option to UsdGeomBBoxCache to ignore visibility.

Imaging:
- Render settings API to HdRenderDelegate. ("Enable Tiny Prim Culling" is the
first example for Hydra GL)
- Support for UDIM textures in Hydra GL. (PR #597)
- Blending controls to HdRenderPassState for initial transparency support in
Hydra GL.
- Ability to specify backend when starting usdview via "--renderer" parameter.
- Optional "Draw Mode" column to prim browser in usdview that provides control
of model draw modes. (texture cards, bbox, etc.)

Houdini plugin:
- Optional layer scale, layer offset, and target prim parameters to the
USD Reference ROP.
- Option on USD Output ROP to use or ignore obj-level transforms.
- Support for exporting ramp parameters in OSL shader networks.

Katana plugin:
- "info.usd.outputSession" attribute authored by PxrUsdIn. This is a sibling
to "info.usd.session" but is not affected by the translation of PxrUsdIn's
old "variants" parameter into session data. It acts as a more stable session
cache key for external apps to use.
- "forceArrayForSingleValue" parameter that allows PxrUsdInAttributeSet to
author 1-length arrays.

Maya plugin:
- Support for instancing USD reference assemblies in instancers.

### Changed
Build:
- Symbols for wrapping functions are no longer exported from modules
to avoid issues with using RTLD_GLOBAL in Python. (Issue #641)
- Updated minimum required version of GLEW to 2.0.0.

USD:
- Numerous fixes and cleanup changes throughout to improve performance,
remove dead code, convert code to more modern patterns, and remove
unneeded uses of boost.
- Replaced safe-bool idiom with explicit bool operator in several places.
- Improved performance of setting and erasing time samples in .usda
layers from linear complexity to logarithmic.
- Improved error messages when attempting to read a .usdz files using
compression or encryption.
- Various improvements to UsdSkel documentation and API.
- Changed scene description name for UsdSkelBindingAPI from "BindingAPI"
to "SkelBindingAPI" to distinguish it from other binding API schemas.

Imaging:
- Several improvements to the handling of AOVs in Hydra.
- Simplified class hierarchy in usdImagingGL. The primary API entry point
is now UsdImagingGLEngine.
- Better performance for animated textures and large numbers of invisible
prims in Hydra.
- Optimized batch removal of prims in Hydra and UsdImaging.
- Better handling of edits made in the interpreter in usdview.
- Mesh normals are suppressed when the subdivision scheme is something
other than "none".
- The default stb-based image reader now extracts gamma information from
.png images.
- Functionality specific to the prim browser in usdview have been moved
to a browser-specific menu bar with "Navigation" and "Show" menus.
- Property browser in usdview now shows resolved material bindings and
inherited primvars.

Maya plugin:
- The name of the scope for exported material prims can now be customized
in the UI or via the "materialsScopeName" parameter to usdExport. The
default scope name is "Looks", matching the previous behavior.
- Refactoring and cleanup in preparation for shading export support.

### Removed
Build:
- Build-time dependency on Python. (Issue #605, PR #615)

Imaging:
- HdSceneTask in favor of HdTask.
- UsdImagingGL and UsdImagingGLHdEngine.

### Fixed
USD:
- Incorrect composition error in cases involving internal sub-root references
and variants. (Issue #677)
- Regression that caused prims to sometimes be composed incorrectly.
- Missing symbol exports that could cause build errors on Windows.
(PR #623, Issue #703, #704, #705)
- Incorrect type validation and conversion when authoring metadata via Python
that could lead to invalid scene description. (Issue #529)
- Various issues in usdzip and related usdUtils API when processing references
for packaging into a .usdz file.

Imaging:
- Batch aggregation for prims with face-varying primvars.
- Drawing coord initialization of instance primvar slots.
- Deep batch validation only happens when needed, improving performance.
- Crash in cases where a prim is removed from a stage and a collection
targeting that prim is updated in the same round of changes. (PR #685)
- Crash when reading half-float .exr images in the OpenImageIO plugin.
(Issue #581)
- Incorrect handling of edits to material bindings.

Houdini plugin:
- Issue where visibility and purpose attributes weren't properly inherited
on import. (Issue #649)
- Crash when running ginfo on a USD file. (Issue #673, PR #674)
- Issue where imported string attribute values could be incorrect. (Issue #653)

Katana plugin:
- Issues with reading UsdGeomPointInstancers
- Regression in instance transform computation with masked instances.
- Prototype transforms are cleared out on the Katana side since they are
folded in when computing instance transforms.

Maya plugin:
- Reference assemblies weren't being drawn in "playback" representation.
(Issue #675)
- Issue where HdImagingShape prevented nodes from being reordered.

## [18.11] - 2018-10-10

### Added
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ may be disabled at build-time, for further details see [Advanced Build Configura
| Name | Version | Optional |
| ---- | ------- | :------: |
| [OpenSubdiv](https://github.com/PixarAnimationStudios/OpenSubdiv) | 3.0.5 (Linux/OS X), 3.2.0 (Windows) | |
| [GLEW](http://glew.sourceforge.net/) | 1.10.0 | x |
| [GLEW](http://glew.sourceforge.net/) | 2.0.0 | x |
| [OpenEXR](http://www.openexr.com) | 2.2.0 | |
| [OpenImageIO](https://sites.google.com/site/openimageio/home) | 1.5.11 | x |
| [OSL (OpenShadingLanguage)](https://github.com/imageworks/OpenShadingLanguage) | 1.5.12 | x |
Expand Down
16 changes: 8 additions & 8 deletions build_scripts/build_usd.py
Original file line number Diff line number Diff line change
Expand Up @@ -446,13 +446,13 @@ def InstallZlib(context, force, buildArgs):
# boost

if Linux():
BOOST_URL = "http://downloads.sourceforge.net/project/boost/boost/1.55.0/boost_1_55_0.tar.gz"
BOOST_URL = "https://downloads.sourceforge.net/project/boost/boost/1.55.0/boost_1_55_0.tar.gz"
BOOST_VERSION_FILE = "include/boost/version.hpp"
elif MacOS():
BOOST_URL = "http://downloads.sourceforge.net/project/boost/boost/1.61.0/boost_1_61_0.tar.gz"
BOOST_URL = "https://downloads.sourceforge.net/project/boost/boost/1.61.0/boost_1_61_0.tar.gz"
BOOST_VERSION_FILE = "include/boost/version.hpp"
elif Windows():
BOOST_URL = "http://downloads.sourceforge.net/project/boost/boost/1.61.0/boost_1_61_0.tar.gz"
BOOST_URL = "https://downloads.sourceforge.net/project/boost/boost/1.61.0/boost_1_61_0.tar.gz"
# The default installation of boost on Windows puts headers in a versioned
# subdirectory, which we have to account for here. In theory, specifying
# "layout=system" would make the Windows install match Linux/MacOS, but that
Expand All @@ -461,7 +461,7 @@ def InstallZlib(context, force, buildArgs):

# On Visual Studio 2017 we need at least boost 1.65.1
if IsVisualStudio2017OrGreater():
BOOST_URL = "http://downloads.sourceforge.net/project/boost/boost/1.65.1/boost_1_65_1.tar.gz"
BOOST_URL = "https://downloads.sourceforge.net/project/boost/boost/1.65.1/boost_1_65_1.tar.gz"
BOOST_VERSION_FILE = "include/boost-1_65_1/boost/version.hpp"


Expand Down Expand Up @@ -579,7 +579,7 @@ def InstallTBB_LinuxOrMacOS(context, force, buildArgs):
if Windows():
JPEG_URL = "https://github.com/libjpeg-turbo/libjpeg-turbo/archive/1.5.1.zip"
else:
JPEG_URL = "http://www.ijg.org/files/jpegsrc.v9b.tar.gz"
JPEG_URL = "https://www.ijg.org/files/jpegsrc.v9b.tar.gz"

def InstallJPEG(context, force, buildArgs):
if Windows():
Expand All @@ -606,7 +606,7 @@ def InstallJPEG_Lib(context, force, buildArgs):
############################################################
# TIFF

TIFF_URL = "http://download.osgeo.org/libtiff/tiff-4.0.7.zip"
TIFF_URL = "https://download.osgeo.org/libtiff/tiff-4.0.7.zip"

def InstallTIFF(context, force, buildArgs):
with CurrentWorkingDirectory(DownloadURL(TIFF_URL, context, force)):
Expand All @@ -628,7 +628,7 @@ def InstallTIFF(context, force, buildArgs):
############################################################
# PNG

PNG_URL = "http://downloads.sourceforge.net/project/libpng/libpng16/older-releases/1.6.29/libpng-1.6.29.tar.gz"
PNG_URL = "https://downloads.sourceforge.net/project/libpng/libpng16/older-releases/1.6.29/libpng-1.6.29.tar.gz"

def InstallPNG(context, force, buildArgs):
with CurrentWorkingDirectory(DownloadURL(PNG_URL, context, force)):
Expand Down Expand Up @@ -660,7 +660,7 @@ def InstallOpenEXR(context, force, buildArgs):
# GLEW

if Windows():
GLEW_URL = "http://downloads.sourceforge.net/project/glew/glew/2.0.0/glew-2.0.0-win32.zip"
GLEW_URL = "https://downloads.sourceforge.net/project/glew/glew/2.0.0/glew-2.0.0-win32.zip"
else:
# Important to get source package from this URL and NOT github. This package
# contains pre-generated code that the github repo does not.
Expand Down
4 changes: 2 additions & 2 deletions cmake/defaults/Version.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,5 @@
#
# Versioning information
set(PXR_MAJOR_VERSION "0")
set(PXR_MINOR_VERSION "18")
set(PXR_PATCH_VERSION "11")
set(PXR_MINOR_VERSION "19")
set(PXR_PATCH_VERSION "1")
42 changes: 20 additions & 22 deletions cmake/macros/Private.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -46,18 +46,16 @@ function(_copy_headers LIBRARY_NAME)
foreach (f ${_args_FILES})
set(infile "${CMAKE_CURRENT_SOURCE_DIR}/${f}")
set(outfile "${header_dest_dir}/${f}")
list(APPEND files_copied ${outfile})
get_filename_component(dir_to_create "${outfile}" PATH)
add_custom_command(
OUTPUT ${outfile}
COMMAND
"${PYTHON_EXECUTABLE}"
"${PROJECT_SOURCE_DIR}/cmake/macros/copyHeaderForBuild.py"
"${infile}"
"${outfile}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${dir_to_create}"
COMMAND ${CMAKE_COMMAND} -Dinfile="${infile}" -Doutfile="${outfile}" -P "${PROJECT_SOURCE_DIR}/cmake/macros/copyHeaderForBuild.cmake"
MAIN_DEPENDENCY "${infile}"
COMMENT "Copying ${f} ..."
VERBATIM
)
)
list(APPEND files_copied ${outfile})
endforeach()
endif()

Expand Down Expand Up @@ -106,7 +104,7 @@ endfunction() # _plugInfo_subst
function(_pxrDoxyConfig_subst)
configure_file(${CMAKE_SOURCE_DIR}/pxr/usd/lib/usd/Doxyfile.in
${CMAKE_BINARY_DIR}/Doxyfile
)
)
endfunction()

# Install compiled python files alongside the python object,
Expand All @@ -128,7 +126,7 @@ function(_install_python LIBRARY_NAME)
set(files_copied "")
foreach(file ${ip_FILES})
set(filesToInstall "")
set(installDest
set(installDest
"${libPythonPrefix}/pxr/${LIBRARY_INSTALLNAME}")

# Only attempt to compile .py files. Files like plugInfo.json may also
Expand Down Expand Up @@ -165,7 +163,7 @@ function(_install_python LIBRARY_NAME)
message(FATAL_ERROR "Cannot have non-Python file ${file} in PYTHON_FILES.")
endif()

# Note that we always install under lib/python/pxr, even if we are in
# Note that we always install under lib/python/pxr, even if we are in
# the third_party project. This means the import will always look like
# 'from pxr import X'. We need to do this per-loop iteration because
# the installDest may be different due to the presence of subdirs.
Expand Down Expand Up @@ -205,7 +203,7 @@ function(_install_resource_files NAME pluginInstallPrefix pluginToLibraryPath)
_get_resources_dir(${pluginInstallPrefix} ${NAME} resourcesPath)

foreach(resourceFile ${ARGN})
# A resource file may be specified like <src file>:<dst file> to
# A resource file may be specified like <src file>:<dst file> to
# indicate that it should be installed to a different location in
# the resources area. Check if this is the case.
string(REPLACE ":" ";" resourceFile "${resourceFile}")
Expand All @@ -222,7 +220,7 @@ function(_install_resource_files NAME pluginInstallPrefix pluginToLibraryPath)

get_filename_component(dirPath ${resourceDestFile} PATH)
get_filename_component(destFileName ${resourceDestFile} NAME)

# plugInfo.json go through an initial template substitution step files
# install it from the binary (gen) directory specified by the full
# path. Otherwise, use the original relative path which is relative to
Expand Down Expand Up @@ -320,15 +318,15 @@ function(_get_install_dir path out)
endfunction() # get_install_dir

function(_get_resources_dir_name output)
set(${output}
resources
set(${output}
resources
PARENT_SCOPE)
endfunction() # _get_resources_dir_name

function(_get_resources_dir pluginsPrefix pluginName output)
_get_resources_dir_name(resourcesDir)
set(${output}
${pluginsPrefix}/${pluginName}/${resourcesDir}
set(${output}
${pluginsPrefix}/${pluginName}/${resourcesDir}
PARENT_SCOPE)
endfunction() # _get_resources_dir

Expand Down Expand Up @@ -643,7 +641,7 @@ function(_pxr_install_rpath rpathRef NAME)
endforeach()

set_target_properties(${NAME}
PROPERTIES
PROPERTIES
INSTALL_RPATH_USE_LINK_PATH TRUE
INSTALL_RPATH "${final}"
)
Expand Down Expand Up @@ -913,7 +911,7 @@ function(_pxr_python_module NAME)
# Install .ui files.
if (args_PYSIDE_UI_FILES)
_install_pyside_ui_files(${LIBRARY_NAME} ${args_PYSIDE_UI_FILES})
endif()
endif()

# If no C++ files then we're done.
if (NOT args_CPPFILES)
Expand All @@ -935,7 +933,7 @@ function(_pxr_python_module NAME)

# Convert the name of the library into the python module name
# , e.g. _tf.so -> Tf. This is later used to determine the eventual
# install location as well as for inclusion into the __init__.py's
# install location as well as for inclusion into the __init__.py's
# __all__ list.
_get_python_module_name(${LIBRARY_NAME} pyModuleName)

Expand All @@ -945,7 +943,7 @@ function(_pxr_python_module NAME)
)

# Always install under the 'pxr' module, rather than base on the
# project name. This makes importing consistent, e.g.
# project name. This makes importing consistent, e.g.
# 'from pxr import X'. Additionally, python libraries always install
# into the default lib install, not into the third_party subdirectory
# or similar.
Expand Down Expand Up @@ -1027,7 +1025,7 @@ function(_pxr_python_module NAME)
LIBRARY DESTINATION ${libInstallPrefix}
RUNTIME DESTINATION ${libInstallPrefix}
)

if(NOT "${PXR_PREFIX}" STREQUAL "")
if(args_PRECOMPILED_HEADERS)
_pxr_enable_precompiled_header(${LIBRARY_NAME}
Expand Down Expand Up @@ -1190,7 +1188,7 @@ function(_pxr_library NAME)
#
# If we're building a monolithic library or individual static libraries,
# these libraries are not separately loadable at runtime. In these cases,
# we don't need to specify the library's location, so we leave
# we don't need to specify the library's location, so we leave
# pluginToLibraryPath empty.
if(";${PXR_CORE_LIBS};" MATCHES ";${NAME};")
if (NOT _building_monolithic AND NOT args_TYPE STREQUAL "STATIC")
Expand Down
29 changes: 29 additions & 0 deletions cmake/macros/copyHeaderForBuild.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#
# Copyright 2018 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(TO_NATIVE_PATH ${infile} INFILE)
file(TO_NATIVE_PATH ${outfile} OUTFILE)

file(READ "${INFILE}" _tmp_file_content)
file(WRITE "${OUTFILE}" "\#line 1 ${infile}\n")
file(APPEND "${OUTFILE}" "${_tmp_file_content}")
Loading

0 comments on commit 1845291

Please sign in to comment.