Inconsistent lighting with PBRMaterial with scene environmentTexture

Giving the scene an environment texture which has a very low level (potentially even 0) will still fully illuminate PBR materials with metallic=0. On the opposite side, metallic=1 will properly appear dark due to its reflectivity. Is there some way for the environment texture’s level to be applied to the PBR materials that aren’t reflective? There is PBRMaterial.environmentIntensity, but I was hoping for something that wouldn’t have to be assigned on a per-material basis.

Example link below. Note that commenting out lines 4-6 will make both spheres black, which is also what I’d expect if environmentTexture’s level is 0.

scene.environmentIntensity = 0.01; is what you are looking for as it will impact both specular and diffuse.

scene.environmentIntensity = 0.01;

1 Like

Is there a way to simultaneously make the skybox object use the same intensity? I’m okay even if this is a material property and not a global setting.

Setting skybox.material.environmentIntensity = 0.01; doesn’t seem to do anything like PBRMaterial does.

Using both scene.environmentTexture.level = x; and scene.environmentIntensity = x; will result in the reflections effectively using intensity = x^2;.

You can force the material of the skybox to be pbr as well https://www.babylonjs-playground.com/#ZEP6EV#2

1 Like