Commit 164d3ee7 authored by Paolo Berto Durante's avatar Paolo Berto Durante

updated to v0.3 (new NSI dynamic library)

parent 82ed8bb2
# HydraNSI Change Log
## v0.3 — July 22, 2018
- Lifted minimum 3Delight NSI version needed for HydraNSI to v13.4.15 which is using the new (and first) dynamic rendering API.
- Now using the new NSI::DynamicAPI: everything in HydraNSI is now updated to use the shared NSI::Context. This will facilitate building 3rd-party apps that use the HydraNSI delegate simply by including the NSI header file (1 file, nsi.h) and linking dynamically to the NSI library. As a corollary, this would allow to write other Hydra "heads" in NSI.
## v0.2 — July 19, 2018
- Support for orientation (winding order): now most USD and ABC files will have correct orientation when rendering.
- Complete support for subdivision surfaces (catmull-clark) and related attributes (corner/crease vertices & sharpness).
- Refactored code for curves and shader assigned to curves.
- Re-factored code for curves and shader assigned to curves.
- Added support for displayColor on points.
- Added support for displayColor on curves.
- Added support for point widths.
- Added support for curve points widths.
- Points now are shaded with a higher reflect roughness.
- Added support for visibility changes from usdview gui.
- Hierarchical visibility works aswell as selective visibility at the same level.
- Hierarchical visibility works as well as selective visibility at the same level.
- Removed some useless code and comments (which came from copy & paste of hdEmree).
- Handle curves with less than four control points as linearcurves in NSI. Otherwise they are cubic.
- Handle curves with less than four control points as "linearcurves" in NSI. Otherwise they are cubic.
- Fixed a coding error in HdNSIRendePass.
- Improved shader construction.
- Refactored hdNSIRenderPass so that each instance has its display handle.
- Re-factored hdNSIRenderPass so that each instance has its display handle.
- Added CHANGELOG.md
......
......@@ -27,7 +27,7 @@ NSI (Nodal Scene Interface) is a simple and flexible scene description API which
HydraNSI can be easily compiled as a plug-in part of the USD toolset. It can naturally be used by any current and future application that implements the USD API as a data model, and which uses Hydra for visualization. As a practical example, it can be added to the USD viewing utility **usdview**.
## Demo Video
## Demo Videos
![Demo Video](https://gitlab.com/3DelightOpenSource/HydraNSI/uploads/683abdd0535432b4483ff9135833ebcf/out.mp4)
......@@ -35,10 +35,12 @@ And other 8 videos here:
https://gitlab.com/3DelightOpenSource/HydraNSI/wikis/Videos
## Building
> This code was tested with Pixar USD version 0.8.5a and 3Delight NSI v13.4.11
> This code was tested with Pixar USD version 0.8.5a.
> The minimum 3Delight NSI version needed is **v13.4.15**.
Once you are able to build Pixar USD, building HydraNSI is very easy:
Once you are able to build Pixar USD, building HydraNSI is very easy:
1. Add the hdNSI folder to your USD distribution, the injection point being:
......@@ -83,8 +85,8 @@ Currently HydraNSI supports the following:
- Lighting:
- Head light: a directional light that uses a *directionalLight* emitter which shines from the camera pov. It is always active. Note that in NSI directional lights are actual environment lights: when an angle of 0 degrees is specified they behave directionally. See nsi.pdf for more informations.
- Omni environment: this is another directional light that uses another *directionalLight* emitter. It is used when a file texture is *not* set to be used for environment in the configuration (see below). As per above this is an environment light, though when an angle of 360 degrees it behaves like a uniform environment.
- HDRI environment: this is a small shading network using *uvCoordEnvironment --> file --> dlEnvironmentShape* which allows to optionally use a HDRI file texture for image-based lighting. It can be enabled via environment variable. Use the HDNSI_ENV_LIGHT_IMAGE environment variable pointing at the file location on disk (.tdl, .exr and .hdr formats are accepted). For more info see: https://gitlab.com/3DelightOpenSource/HydraNSI/blob/master/hdNSI/config.cpp. HDRI environment can be created by using data from http://gl.ict.usc.edu/Data/HighResProbes and then process them as tiled mipmaps using the follwing command: *tdlmake -envlatl filename.exr filename.tdl.tif*
- Procedural Sky environment: this is a small shading network using *dlSky --> dlEnvironmentShape* which uses a HDRI procedural sky (Hosek-Wilkie model) for (procedual) image-based lighting. It is enabled by default and can be disabled by setting the HDNSI_ENV_USE_SKY environment variable set to. For more info see: https://gitlab.com/3DelightOpenSource/HydraNSI/blob/master/hdNSI/config.cpp.
- HDRI environment: this is a small shading network using *uvCoordEnvironment --> file --> dlEnvironmentShape* which allows to optionally use a HDRI file texture for image-based lighting. It can be enabled via environment variable. Use the HDNSI_ENV_LIGHT_IMAGE environment variable pointing at the file location on disk (.tdl, .exr and .hdr formats are accepted). For more info see: https://gitlab.com/3DelightOpenSource/HydraNSI/blob/master/hdNSI/config.cpp. HDRI environment can be created by using data from http://gl.ict.usc.edu/Data/HighResProbes and then process them as tiled mipmaps using the following command: *tdlmake -envlatl filename.exr filename.tdl.tif*
- Procedural Sky environment: this is a small shading network using *dlSky --> dlEnvironmentShape* which uses a HDRI procedural sky (Hosek-Wilkie model) for (procedural) image-based lighting. It is enabled by default and can be disabled by setting the HDNSI_ENV_USE_SKY environment variable set to. For more info see: https://gitlab.com/3DelightOpenSource/HydraNSI/blob/master/hdNSI/config.cpp.
## Testing
......@@ -109,7 +111,7 @@ From an environment where both `usdview` and the NSI command-line renderer `rend
## A note about Alembic files and primitive variables
When reading Alembic files in usdview some variables that control the color and width of primitives will not be read even if the attribute naming matches the USD one. The USD Alembic plug-in reader should be improved by the USD team so to handle proper support of such primitive variables, it could additionally recognize typical primitive variables of DCC Apps (for example in Houdini Cd, width and pscale are standard names and if present they could be converted on-the-fly to the USE respective ones). Feel free to push Pixar in improving their Alembic plug-in.
When reading Alembic files in usdview some variables that control the color and width of primitives will not be read even if the attribute naming matches the USD one. The USD Alembic plug-in reader should be improved by the USD team so to handle proper support of such primitive variables, it could additionally recognize typical primitive variables of DCC Apps (for example in Houdini *Cd*, *width* and *pscale* are standard names and if present they could be converted on-the-fly to the USD respective ones). Feel free to push Pixar in improving their Alembic plug-in.
## Future
......@@ -117,7 +119,7 @@ When reading Alembic files in usdview some variables that control the color and
We are looking for community contributions to implement the following:
- add **usdShade** schema support for 3Delight OSL materials: [Issue #1](https://gitlab.com/3DelightOpenSource/HydraNSI/issues/1)
- add **usdLux** schema support for 3delight OSL lights: [Issue #2](https://gitlab.com/3DelightOpenSource/HydraNSI/issues/2)
- add **usdLux** schema support for 3Delight OSL lights: [Issue #2](https://gitlab.com/3DelightOpenSource/HydraNSI/issues/2)
- add upcoming **usdVolume** schema support for 3Delight OpenVDB volumes: [Issue #3](https://gitlab.com/3DelightOpenSource/HydraNSI/issues/3)
- add OSL matching shaders for **UsdPreviewSurface**: [issue #4](https://gitlab.com/3DelightOpenSource/HydraNSI/issues/4)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment