Blend BSDF

Description

../../../_images/blend.jpg

Example of blend BSDF between a metal and diffuse clay

BSDF This special BSDF does blends, or linear combinations, of other BSDFs, following a user-defined blend function varying between 0 and 1. This is often used for mixing BSDFs (for instance, with a constant blend ratio) or for continuously varying between BSDFs across the surface.

For instance, if five child BSDFs are defined, they will correspond to blend function values of 0, 0.25, 0.5, 0.75 and 1 respectively. Other blend function values interpolate linearly between the two nearest BSDFs.

Note

Before Ocean 2017 R2, this BSDF had a forcestep parameter. When set to true, the resulting BSDF was not blended but switched when the blend function reached threshold values. This is now achieved with a Switch BSDF

Children Nodes

Scalar shader blend

The blend function defining the BSDF mix, between 0 (first bsdf) and 1 (last bsdf)

bsdf user-defined

First BSDF

bsdf user-defined

Second BSDF

bsdf user-defined

Parameters

none

Ocean XML 6.1 example

<bsdf type="blend" name="bsdf">
     <bsdf type="reflective" name="bsdf1" rereflections="true">
             <roughness type="phong" name="roughness">
                     <scalarshader type="uniform" name="exponent" value="500"/>
             </roughness>
             <intlaw type="cfresnel" name="intlaw">
                     <dielectricfunc type="linked" name="dielectricfunc" target="ocean-metals::Ti"/>
             </intlaw>
     </bsdf>
     <bsdf type="oren_nayar" name="bsdf2">
             <filtershader type="uniform" name="diffuse">
                     <spectrum type="tabulated" name="spectrum">
                              3.8e-07        0.2     4.37143e-07     0.25    4.94286e-07     0.3     5.51429e-07     0.35    6.08571e-07     0.5     6.65714e-07     0.6     7.22857e-07     0.7     7.8e-07 0.7
                     </spectrum>
             </filtershader>
             <scalarshader type="uniform" name="sigma" value="1"/>
     </bsdf>
     <scalarshader type="texture" name="blend">
             <prm channel="G"/>
             <prm scale="1"/>
             <prm offset="0"/>
             <prm greypt="0.5"/>
             <prm uvscale="1"/>
             <image type="file" name="image" path="gradient.png"/>
     </scalarshader>
</bsdf>