Skip to content

Commit

Permalink
Merge pull request #398 from GPUOpen-LibrariesAndSDKs/develop
Browse files Browse the repository at this point in the history
Merge Develop to master for version 2.0
  • Loading branch information
bsavery authored Nov 17, 2020
2 parents 6a737b3 + afb2885 commit b19ddf6
Show file tree
Hide file tree
Showing 198 changed files with 15,188 additions and 4,584 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
build/*
pxr/imaging/plugin/hdRpr/python/__pycache__/
6 changes: 6 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,9 @@
[submodule "deps/RPR"]
path = deps/RPR
url = https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderSDK
[submodule "deps/MaterialX"]
path = deps/MaterialX
url = https://github.com/materialx/MaterialX
[submodule "deps/ghc_filesystem"]
path = deps/ghc_filesystem
url = https://github.com/gulrak/filesystem
75 changes: 74 additions & 1 deletion CHANGELOG.MD
Original file line number Diff line number Diff line change
@@ -1,4 +1,77 @@
# Change Log

## Version 2.0
### New Features:
- The new plug-in version incorporates version 2.0 of our Radeon™ ProRender system and brings about the significant changes and enhancements:
Hardware-accelerated ray tracing on AMD Radeon™ RX 6000 series GPUs.
- Better scaling across multiple devices: the use of two or more GPUs gives a better performance improvement with Radeon ProRender 2.0 than with Radeon ProRender 1.0 in most cases.
- Less noise for a given amount of render samples. Using the same number of samples as with Radeon ProRender 1.0 may be slower in some scenes, but noise will be significantly lower.
- RPR 2.0 is the default render mode called “Full”. Users who wish to use RPR 1.0 can set the render quality mode to “Legacy”.
- A new setting for texture cache has been added to the RPR menu in Houdini. The specified folder will cache textures for rendering, and can be cleaned up by the user if it becomes too large.
- MaterialX networks can now be attached to an object. To use them, we have added an RPR Material Library LOP node. Add this node and select a MaterialX file and specify the surface shader to use.
- User customizable LPE outputs have been added.
- OpenColorIO support has been added, allowing to control textures colorspace and the rendering colorspace.
- Support of Houdini 18.5 and USD 20.11 has been added.
- The installer for Houdini is now an executable `activateHoudiniPlugin`.
- A rendering setting has been added to change noise “seed” to vary noise across frames.
- Support of Varying or Vertex primitive variables has been added.
- An “RPR Standard Render Vars” node in Houdini for AOVs has been added in the tab menu for nodes.


### Issues Fixed:
- Using the Uber shader with “Metalness” reflection mode now matches the Disney shader PBR standard more closely. Among other improvements, the USD Preview Surface node respects the “Specular” parameter better.
- Motion Blur, particularly for rotation, is now more correct.
- Depth of field was not respecting camera sensor size and focal length correctly — fixed.
- UVs with USD meshes using geomSubset — fixed.
- Some issues with textures embedded in USDZ files have been fixed.
- The visibility of mesh instances has been fixed.
- A mesh primitive was not always marked as dirty when the material changes or the geomSubset changes — fixed.
- .rpr export node to work with non-ASCII characters — fixed.
- An issue of locking with no lights in the scene has been fixed.
- Various issues with checking and preventing memory leaks have been fixed.
- Selection of instances in the viewport has been fixed: the objectID AOV is correct now.
- A crash when AOVs are resized in Houdini has been fixed.
- A crash when getting volume data directly from Houdini has been fixed.
- .rpr file export has been improved, and a HDA node to enable it in Houdini has been added.
- Rendered .rpr files exported from Houdini were flipped vertically — fixed.
- Issues have been fixed to compile on Ubuntu 20.04.
- Motion Blur was changed in USD 19.11 leading to incorrect (to little) motion blur effect. This is fixed to match the USD behavior.

### Known Issues:
- RPR 2.0 has some forthcoming features. If these are needed, use the Legacy render mode:
- Heterogenous volumes;
- Adaptive sampling;
- Adaptive subdivision.
- The first render on macOS® with RPR 2.0 can take a few minutes to start, while the kernels are being compiled.


## 1.3 Release

hdRpr installation scheme was changed - there is no more need to copy hdRpr package directly into Houdini. More info [here](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/pull/285).

### New features
* Parallelize texture loading ([PR #307](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/pull/307))
* Expose RPR-native materials ([PR #301](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/pull/301))
* Add RPR 2.0 (Northstar) support ([PR #297](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/pull/297))
* Add UsdRenderVar support (raw AOVs only) ([PR #300](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/pull/300))
* Add UDIM support (Northstar only) ([PR #298](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/pull/298))
* Improve AOV system ([PR #295](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/pull/295))
* Expose shadow and reflection catcher controls ([PR #294](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/pull/294))
* Expose caustics control ([PR #291](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/pull/291))
* Add render mode render setting ([PR #289](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/pull/289))
* Optimize batch rendering ([PR #288](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/pull/288))
* BasisCurves bezier support ([PR #282](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/pull/282))
* Speed up basis curves creation ([PR #302](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/pull/302))
* Add RIF-based tone mapping filter ([PR #283](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/pull/283))

### Fixes
* Fixed depth of field ([PR #319](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/pull/319))
* Fixed normal input of AI denoise filter ([PR #305](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/pull/305))
* Fixed dome light visibility ([PR #292](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/pull/292))
* Now UV primvar name is queried from the bound material ([PR #296](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/pull/296))
* Use specular workflow on refractive materials for UsdPreviewSurface ([PR #299](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/pull/299))


## 1.2 Release
### New features
- Volume rework ([PR #268](https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderUSD/pull/268))
Expand Down Expand Up @@ -63,4 +136,4 @@
## 1.0 Release
- Denoiser support
- Full Spectrum Rendering modes on Windows and Ubuntu
- Support for USDPreviewSurface, USD lights, and Volumes
- Support for USDPreviewSurface, USD lights, and Volumes
17 changes: 5 additions & 12 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,6 @@ set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/defaults
${CMAKE_SOURCE_DIR}/cmake/macros)

include(Options)

if(RPR_BUILD_AS_HOUDINI_PLUGIN)
include(Houdini)
endif(RPR_BUILD_AS_HOUDINI_PLUGIN)

include(ProjectDefaults)
include(Packages)

Expand All @@ -34,12 +29,10 @@ include(Public)

set(CMAKE_CXX_STANDARD 14)

include_directories(${USD_INCLUDE_DIR})
link_directories(${USD_LIBRARY_DIR})
include_directories(${RPR_INCLUDE_DIR})
link_directories(${RPR_LIBRARY_DIR})

add_subdirectory(pxr/imaging/plugin/hdRpr)
add_subdirectory(deps)
add_subdirectory(pxr/imaging)

# install(FILES README.md DESTINATION .)
# install(FILES LICENSE.md DESTINATION .)
install(FILES README.md DESTINATION .)
install(FILES INSTALL.md DESTINATION .)
install(FILES LICENSE.md DESTINATION .)
67 changes: 48 additions & 19 deletions INSTALL.md
Original file line number Diff line number Diff line change
@@ -1,37 +1,66 @@
## Installation from a package

### Automatic installation
### Houdini plugin

Installed [**Python**](https://www.python.org/downloads/) with PATH environment variable setup is required for automatic installation.
#### Manual

> If you do not want to install python, but you have already installed Houdini with a working license, you can use hython from the Houdini package. Follow instructions under [Others](#others) subsection.
Add a new Houdini package with such configuration json:
```
{
"env":[
{
"RPR":"path-to-the-package"
},
{
"HOUDINI_PATH":"$RPR/houdini"
},
{
"PATH":"$RPR/lib"
},
{
"PYTHONPATH":"$RPR/lib/python"
}
]
}
```
where `path-to-the-package` depends on where do you unzip hdRpr package and should point to the directory that contains INSTALL.md (this file)

#### Windows
More info here https://www.sidefx.com/docs/houdini/ref/plugins.html

Run **install.bat**
#### Automatic

#### Others
`activateHoudiniPlugin` executable can do the same for you automatically - it will try to find your houdini preference dir and add hdRpr package that will point to the current directory.

Use the installer script **install.py**. From a terminal run:
```
python install.py
```
And follow the instructions from the script
### Usdview plugin

Here and next, HDRPR_PACKAGE_DIR is a path to the root of the package.

* Set `RPR` environment variable to `HDRPR_PACKAGE_DIR`
* Add `HDRPR_PACKAGE_DIR/plugin` path entry to the `PXR_PLUGINPATH_NAME` environment variable
* Add `HDRPR_PACKAGE_DIR/lib/python` path entry to the `PYTHONPATH` environment variable
* Windows only: add the `HDRPR_PACKAGE_DIR/lib` path entry to the `PATH` environment variable

### Manual
OR

Copy content of hdRpr*.tar.gz to houdini installation directory.
Default destination path looks like:
* **Windows** `C:\Program Files\Side Effects Software\Houdini 18.0.287`
* **Ubuntu** `/opt/hfs18.0`
* **macOS** `/Applications/Houdini/Current/Frameworks/Houdini.framework/Versions/Current`
You can copy hdRpr package directories (lib and plugin) directly to the root of your USD package.

## Installation from sources

Run following command in configured cmake project:
1. Configure cmake project (more info about it in README.md)

```
cd RadeonProRenderUSD
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=package ..
```
cmake --build . --config Release --target INSTALL

2. Build cmake project
```
cmake --build . --config Release --target install
```

3. Follow instructions from "Installation from package" for either "Houdini plugin" or "Usdview plugin" depending on how you configured the project on step 1.

## Feedback

Expand Down
40 changes: 11 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,29 +42,22 @@ Cloning into 'RadeonProRenderUSD'...

##### Required Components

##### UsdView plugin Components
##### USD Component

As many USD users get the USD libraries from different places, or compile their own, we tried to keep this as flexible as possible. You can download USD to build yourself from [GitHub](https://www.github.com/PixarAnimationStudios/USD). UsdView plugin is build by default (```RPR_BUILD_AS_HOUDINI_PLUGIN=FALSE```).
Provide USD in one of two ways:

| Dependency Name | Description | Version |
| ------------------ |----------------------------------------------------------------------- | ------- |
| USD_ROOT | USD directory with include and lib dirs | 20.02 |

##### Houdini plugin Components
* An installation of USD. Define pxr_DIR to point to it when running cmake, if required. You can download USD to build yourself from [GitHub](https://www.github.com/PixarAnimationStudios/USD).
* The USD which is provided with Houdini. The HFS environment variable should point to the Houdini installation (the correct way is to run cmake from Houdini's `Command Line Tools` or by sourcing `houdini_setup`). You can download Houdini installer from [Downloads | SideFX](https://www.sidefx.com/download).

To build houdini plugin set cmake flag ```RPR_BUILD_AS_HOUDINI_PLUGIN=TRUE```. `HOUDINI_ROOT` is the directory containing the `houdini_setup` file. You can download Houdini installer from [Daily Builds | SideFX](https://www.sidefx.com/download/daily-builds/#category-gold).
##### MaterialX Component

| Dependency Name | Description | Version |
| ------------------ |----------------------------------------------------------------------- | ------- |
| HOUDINI_ROOT | Houdini toolkit directory | 18 |
By default, MaterialX library will be compiled from the sources located under a MaterialX submodule `deps/MaterialX`.
You can override this behavior by providing a complete build of MaterialX to cmake. Please note, on Linux for Houdini plugin, MaterialX should be compiled with `-D_GLIBCXX_USE_CXX11_ABI=0` definition as it is required by Houdini.

##### Optional Components

##### OpenVDB

Support for OpenVDB is disabled by default, and can optionally be enabled by
specifying the cmake flag ```RPR_ENABLE_OPENVDB_SUPPORT=TRUE```.

**Following dependency required only for usdview plugin, houdini is shipped with own build of openvdb**

| Dependency Name | Description | Version |
Expand All @@ -83,9 +76,8 @@ then you need to specify ```RPR_SDK_PLATFORM=centos6``` cmake flag
```
mkdir build
cd build
cmake -DUSD_ROOT=/data/usd_build -DCMAKE_INSTALL_PREFIX=/data/usd_build ..
make
make install
cmake -Dpxr_DIR=/data/usd_build -DCMAKE_INSTALL_PREFIX=/data/usd_build ..
cmake --build . --config Release --target install
```

Supported Platforms
Expand All @@ -97,21 +89,11 @@ Supported Platforms
Try it out
-----------------------------

Set the environment variables specified by the script when it finishes and
launch ```usdview``` with a sample asset.

```
> usdview extras/usd/tutorials/convertingLayerFormats/Sphere.usda
```

And select RPR as the render delegate.
Follow instruction from INSTALL.md to activate the plugin.
Launch either usdview or Houdini's Solaris viewport and select RPR as the render delegate.

#### Environment Variables

* `PXR_PLUGINPATH_NAME`

If you want the RPR menu added to USDView (allows selecting device, and render quality). Set it to ``` PXR_PLUGINPATH_NAME=${USD_ROOT}/lib/python/rpr ```, where USD_ROOT is your USD install directory.

* `HDRPR_ENABLE_TRACING`

Instruct Radeon ProRender to generate trace files for debugging purposes. The tracing will record all RPR commands with a memory dump of the data used. By default, RPR tracing is disabled. To enable it set `HDRPR_ENABLE_TRACING` to 1.
Expand Down
40 changes: 0 additions & 40 deletions cmake/defaults/Houdini.cmake

This file was deleted.

5 changes: 2 additions & 3 deletions cmake/defaults/Options.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,9 @@ option(PXR_ENABLE_PYTHON_SUPPORT "Enable Python based components for USD" ON)
option(PXR_USE_PYTHON_3 "Build Python bindings for Python 3" OFF)
option(PXR_ENABLE_NAMESPACES "Enable C++ namespaces." ON)

option(PXR_SYMLINK_HEADER_FILES "Symlink the header files from, ie, pxr/base/lib/tf to CMAKE_DIR/pxr/base/tf, instead of copying; ensures that you may edit the header file in either location, and improves experience in IDEs which find normally the \"copied\" header, ie, CLion; has no effect on windows" OFF)
option(RPR_ENABLE_VULKAN_INTEROP_SUPPORT OFF "Build hdRpr with Vulkan interop support. Requires Vulkan cmake package")

option(RPR_BUILD_AS_HOUDINI_PLUGIN "Build RadeonProRender Houdini plugin" OFF)
option(RPR_ENABLE_OPENVDB_SUPPORT "Enable OpenVDB" ${RPR_BUILD_AS_HOUDINI_PLUGIN})
option(PXR_SYMLINK_HEADER_FILES "Symlink the header files from, ie, pxr/base/lib/tf to CMAKE_DIR/pxr/base/tf, instead of copying; ensures that you may edit the header file in either location, and improves experience in IDEs which find normally the \"copied\" header, ie, CLion; has no effect on windows" OFF)

# Precompiled headers are a win on Windows, not on gcc.
set(pxr_enable_pch "OFF")
Expand Down
Loading

0 comments on commit b19ddf6

Please sign in to comment.