|
@@ -1339,6 +1339,12 @@ function WebGLRenderer( parameters ) {
|
|
|
let program = materialProperties.program;
|
|
|
let programChange = true;
|
|
|
|
|
|
+ // always update environment and fog - changing these trigger an initMaterial call, but it's possible that the program doesn't change
|
|
|
+
|
|
|
+ materialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;
|
|
|
+ materialProperties.fog = scene.fog;
|
|
|
+ materialProperties.envMap = cubemaps.get( material.envMap || materialProperties.environment );
|
|
|
+
|
|
|
if ( program === undefined ) {
|
|
|
|
|
|
// new material
|
|
@@ -1355,11 +1361,7 @@ function WebGLRenderer( parameters ) {
|
|
|
|
|
|
} else if ( parameters.shaderID !== undefined ) {
|
|
|
|
|
|
- // same glsl and uniform list, envMap still needs the update here to avoid a frame-late effect
|
|
|
-
|
|
|
- const environment = material.isMeshStandardMaterial ? scene.environment : null;
|
|
|
- materialProperties.envMap = cubemaps.get( material.envMap || environment );
|
|
|
-
|
|
|
+ // same glsl and uniform list
|
|
|
return;
|
|
|
|
|
|
} else {
|
|
@@ -1395,10 +1397,6 @@ function WebGLRenderer( parameters ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
- materialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;
|
|
|
- materialProperties.fog = scene.fog;
|
|
|
- materialProperties.envMap = cubemaps.get( material.envMap || materialProperties.environment );
|
|
|
-
|
|
|
// store the light setup it was created for
|
|
|
|
|
|
materialProperties.needsLights = materialNeedsLights( material );
|