...
- Find the displacement bound in the PrmanObjectStatements node under "primAttributes.displacementbound"
- Set "Sphere" to a value greater than zero, something large enough to encapsulate your displacement but small enough that you won't cause the renderer to think that surface extends beyond it's intended final bound. If the bounds are too small you will see clipping or missing pieces. If too large, it may displace the object before it's necessary. We will automatically tighten those bounds afterwards to be more efficient. So better to err on too large than too small. A value of 0 (zero) disables displacement for the object.
Note that a too large bound may cause the initial tessellation to happen early but this bounding box is then tightened afterwards. A too small bound will result in clipping or artifacts. RenderMan will print a warning for bounds that are too large or too small by a minimum factor of 10 to help you adjust
Below is a typical network for adding displacement to your object:
- Create a Network Material
- Make a port for the Bxdf or surface shading using Add Terminal in the node
- Create a second port for Displacement using the same menu
- A PrmanShadingNode is used as the surfaceShader, typically PxrSurface type
- A second PrmanShadingNode is a PxrDisplace type
- A pattern out (float for scalar displacement or RGB for vector) is connected to the displacementShader
Render to see your result. Be sure you have a MaterialAssign after the Merge node with the correct CEL path to your object(s) and the network material location set to the NetworkMaterial