Strange behaviour on material blending

Hi everybody,

i’m using three to create a “print” simulator where i can configure the paper, the print and the finishing.

I’m aware that three does not support multi materials on the same object because of a WebGL limitation, therefore i have used SceneUtil createMultiMaterialObject to duplicate the mesh several times and create as many layer as i need.

I have configured the materials as follow:

  • Paper: MeshStandardMaterial with white color and texture map
  • 2 Print layers: MeshStandardMaterial with white color and texture map with MultiplyBlending in order to recreate the effect that different paper create on ink.
  • Finishing layer: MeshStandardMaterial with black color and alpha map using AdditiveBlending with metalness and roughness settings in order to recreate the glossy effect.

Here there is a simple stackblitz to show: Three JS Blending Strange Behaviour - StackBlitz
The demo starts with just the paper layer active, there are buttons to enable/disable other layers and other buttons that load sample textures.

AFAIK the blending should not change anything if you multiply white color or add black color, but in the demo you can see that the model goes darker at every layer that use multiplyBlending and brighter with the additiveBlending one.

How can i avoid this “darker” and “brighter” at every layer?

Thanks!