EmissiveTexture -> StandardMaterial vs PBRMaterial

Hey guys. Can someone explain me how emissiveTexture works and why it is different effect and setup in Standard vs PBR

For emissiveTexture to have effect on the model in PBRMaterial, I need to set emissiveColor to white.
In StandardMaterial, I cannot put emissiveColor to white because then emissiveColor have priority over emissiveTexture and the model is white. So in Standard I need to set emissiveTexture to black, to make it work.

Why these two are not following the same principle?

Here is a playground to play with it.
https://www.babylonjs-playground.com/#XJ5F42

Thanks

Standard will add emissiveTexture with emissiveColor and add the outcome at the end

for PBR I let @Evgeni_Popov or @sebavan to comment

For the standard material, the emissive color is considered as a source of light. So, when also using an emissive texture, both contribution are added to the final color, something like finalColor += emissiveColor + emissiveColorFromTexture.

In PBR however, the emissiveColor is used as a blending factor when also using an emissive texture, something like finalColor += emissiveColor * emissiveColorFromTexture.

Maybe @sebavan could shed some light on why there is this difference between the standard and PBR material.

It is what happens with the PBR material, actually. With the standard material, both values are added instead.

1 Like

I did a typo I wanted to say emissivecolor is added to emissivetexture :slight_smile:

2 Likes

Emissive in PBR has been done to match the GLTF model which allows a factor to modify the result of the texture for animation purpose for instance.

3 Likes