Vector Displacement

 

Arnold allows shaders to displace vertices in a polymesh node. The vertices are displaced in the direction and magnitude of the vector returned by the shader.

In this example shader, we compute a nonlinear displacement based on a noise function. This can displace along the normal of a surface like a traditional noise displacement shader, but it also has the option of blooming out the peaks and valleys of the displacement.

 

This is done by computing a noise function and its delta in the direction of two surface derivatives. This delta determines the amount the derivatives would be deflected by the displacement. By repeatedly deflecting the derivatives, we create a non-linear displacement that arcs out from the surface. This is equivalent to displacing the surface, computing the normal, and displacing again repeatedly.

Here is an animation showing the effect: vimeo / download.

Source Code

 

And here is the .ass file that uses this shader:

 

Some examples of looks that can be obtained with this shader, along with the shader settings from the .ass file:

Lumpy Nodules

 

Pomegranate

 

Cauliflower

 

Brain Coral

  • No labels