What's the difference between MeshStandardNodeMaterial and StandardNodeMaterial


I know the NodeMaterial system isn’t officially released yet, and is being implemented properly for the new WebGPU renderer, but that’s probably still a year away to be production ready (let alone being supported by major browsers).

I’ve posted a bug report that mask doesn’t render correctly when using MeshStandardNodeMaterial. It was answered that using StandardNodeMaterial will fix it (which it does), but the StandardNodeMaterial doesn’t seem to support a custom environment map. I’ve been using MeshStandardNodeMaterial a while now coming from the normal material system where the default material is the PBR supported (none Node) MeshStandardMaterial.

So what is the purpose of MeshStandardNodeMaterial compared to StandardNodeMaterial?

It was once investigated whether all built-in materials could be represented as node materials or not without breaking code. MeshStandardNodeMaterial is such an experimental counterpart to MeshStandardMaterial, see here.

The actual or original node material is StandardNodeMaterial (like BasicNodeMaterial, PhongNodeMaterial and SpriteNodeMaterial) which is just a wrapper around the StandardNode.

The example webgl_materials_envmaps_pmrem_nodes shows how to use StandardNodeMaterial with a HDR env map.


Thanks for the explanation! So the conclusion is that I shouldn’t use MeshStandardNodeMaterial as it is considered experimental, if I can do the things I need using StandardNodeMaterial?

Well, the entire node material system is experimental^^. But I would recommend to use StandardNodeMaterial since MeshStandardNodeMaterial was intended for a specific use case.

BTW: For the new WebGPURenderer, node materials will be the standard.