You might have better luck with this using stylesheets. They're a little awkward to use, but they'll allow you to be a little more specific about your shader overrides when using object instancing.
First you need to set up your material so that anything you want to vary is given a Parameter VOP that's then connected to something in your material network. For example, if you want to control the bias of a Mix VOP, either promote the “bias” parameter or create a Parameter VOP, name it anything (let's just use “bias”) and make sure the signature is set to Float.
Next, you need to go to the Data Tree window (New Pane Tab Type > Inspectors > Data Tree) to get the Material Style Sheets view. From there, you can create a new stylesheet on your Instance object. Right-click the stylesheet in the Data View and select “Add Style” if there isn't one by default. Then right-click the Style that's generated and add three things:
- a Target (set type to Point Instances)
- an Override (set type to Set Material, and the Override Value to your shader)
- an Override Script (set type to Material Parameter, set Override Type to Attribute Binding, set Override Value to whatever attribute you want to drive the bias… in your case it's pscale)
This will bind your pscale value directly to the bias of your Mix VOP, per-instance. Stylesheets also have the advantage of being compatible with some third-party render engines, whereas the old school `instancepoint()` expression is not compatible with anything but Mantra.
Attaching a scene file for reference.