|
@@ -7,671 +7,672 @@ import { BackSide } from "../../constants";
|
|
|
* i.e. uniforms refresh before material is being rendered
|
|
|
*/
|
|
|
|
|
|
-var _properties;
|
|
|
-
|
|
|
function WebGLMaterials( properties ) {
|
|
|
|
|
|
- _properties = properties;
|
|
|
-
|
|
|
-}
|
|
|
+ function refreshUniforms( uniforms, material, environment, pixelRatio, height ) {
|
|
|
|
|
|
-WebGLMaterials.prototype.refreshUniforms = function ( uniforms, material, environment, pixelRatio, height ) {
|
|
|
+ if ( material.isMeshBasicMaterial ) {
|
|
|
|
|
|
- if ( material.isMeshBasicMaterial ) {
|
|
|
+ refreshUniformsCommon( uniforms, material );
|
|
|
|
|
|
- refreshUniformsCommon( uniforms, material );
|
|
|
+ } else if ( material.isMeshLambertMaterial ) {
|
|
|
|
|
|
- } else if ( material.isMeshLambertMaterial ) {
|
|
|
+ refreshUniformsCommon( uniforms, material );
|
|
|
+ refreshUniformsLambert( uniforms, material );
|
|
|
|
|
|
- refreshUniformsCommon( uniforms, material );
|
|
|
- refreshUniformsLambert( uniforms, material );
|
|
|
+ } else if ( material.isMeshToonMaterial ) {
|
|
|
|
|
|
- } else if ( material.isMeshToonMaterial ) {
|
|
|
+ refreshUniformsCommon( uniforms, material );
|
|
|
+ refreshUniformsToon( uniforms, material );
|
|
|
|
|
|
- refreshUniformsCommon( uniforms, material );
|
|
|
- refreshUniformsToon( uniforms, material );
|
|
|
+ } else if ( material.isMeshPhongMaterial ) {
|
|
|
|
|
|
- } else if ( material.isMeshPhongMaterial ) {
|
|
|
+ refreshUniformsCommon( uniforms, material );
|
|
|
+ refreshUniformsPhong( uniforms, material );
|
|
|
|
|
|
- refreshUniformsCommon( uniforms, material );
|
|
|
- refreshUniformsPhong( uniforms, material );
|
|
|
+ } else if ( material.isMeshStandardMaterial ) {
|
|
|
|
|
|
- } else if ( material.isMeshStandardMaterial ) {
|
|
|
+ refreshUniformsCommon( uniforms, material, environment );
|
|
|
|
|
|
- refreshUniformsCommon( uniforms, material, environment );
|
|
|
+ if ( material.isMeshPhysicalMaterial ) {
|
|
|
|
|
|
- if ( material.isMeshPhysicalMaterial ) {
|
|
|
+ refreshUniformsPhysical( uniforms, material, environment );
|
|
|
|
|
|
- refreshUniformsPhysical( uniforms, material, environment );
|
|
|
+ } else {
|
|
|
|
|
|
- } else {
|
|
|
+ refreshUniformsStandard( uniforms, material, environment );
|
|
|
|
|
|
- refreshUniformsStandard( uniforms, material, environment );
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ } else if ( material.isMeshMatcapMaterial ) {
|
|
|
|
|
|
- } else if ( material.isMeshMatcapMaterial ) {
|
|
|
+ refreshUniformsCommon( uniforms, material );
|
|
|
+ refreshUniformsMatcap( uniforms, material );
|
|
|
|
|
|
- refreshUniformsCommon( uniforms, material );
|
|
|
- refreshUniformsMatcap( uniforms, material );
|
|
|
+ } else if ( material.isMeshDepthMaterial ) {
|
|
|
|
|
|
- } else if ( material.isMeshDepthMaterial ) {
|
|
|
+ refreshUniformsCommon( uniforms, material );
|
|
|
+ refreshUniformsDepth( uniforms, material );
|
|
|
|
|
|
- refreshUniformsCommon( uniforms, material );
|
|
|
- refreshUniformsDepth( uniforms, material );
|
|
|
+ } else if ( material.isMeshDistanceMaterial ) {
|
|
|
|
|
|
- } else if ( material.isMeshDistanceMaterial ) {
|
|
|
+ refreshUniformsCommon( uniforms, material );
|
|
|
+ refreshUniformsDistance( uniforms, material );
|
|
|
|
|
|
- refreshUniformsCommon( uniforms, material );
|
|
|
- refreshUniformsDistance( uniforms, material );
|
|
|
+ } else if ( material.isMeshNormalMaterial ) {
|
|
|
|
|
|
- } else if ( material.isMeshNormalMaterial ) {
|
|
|
+ refreshUniformsCommon( uniforms, material );
|
|
|
+ refreshUniformsNormal( uniforms, material );
|
|
|
|
|
|
- refreshUniformsCommon( uniforms, material );
|
|
|
- refreshUniformsNormal( uniforms, material );
|
|
|
+ } else if ( material.isLineBasicMaterial ) {
|
|
|
|
|
|
- } else if ( material.isLineBasicMaterial ) {
|
|
|
+ refreshUniformsLine( uniforms, material );
|
|
|
|
|
|
- refreshUniformsLine( uniforms, material );
|
|
|
+ if ( material.isLineDashedMaterial ) {
|
|
|
|
|
|
- if ( material.isLineDashedMaterial ) {
|
|
|
+ refreshUniformsDash( uniforms, material );
|
|
|
|
|
|
- refreshUniformsDash( uniforms, material );
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ } else if ( material.isPointsMaterial ) {
|
|
|
|
|
|
- } else if ( material.isPointsMaterial ) {
|
|
|
+ refreshUniformsPoints( uniforms, material, pixelRatio, height );
|
|
|
|
|
|
- refreshUniformsPoints( uniforms, material, pixelRatio, height );
|
|
|
+ } else if ( material.isSpriteMaterial ) {
|
|
|
|
|
|
- } else if ( material.isSpriteMaterial ) {
|
|
|
+ refreshUniformsSprites( uniforms, material );
|
|
|
|
|
|
- refreshUniformsSprites( uniforms, material );
|
|
|
+ } else if ( material.isShadowMaterial ) {
|
|
|
|
|
|
- } else if ( material.isShadowMaterial ) {
|
|
|
+ uniforms.color.value.copy( material.color );
|
|
|
+ uniforms.opacity.value = material.opacity;
|
|
|
|
|
|
- uniforms.color.value.copy( material.color );
|
|
|
- uniforms.opacity.value = material.opacity;
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ if ( material.isShaderMaterial ) {
|
|
|
|
|
|
- if ( material.isShaderMaterial ) {
|
|
|
+ material.uniformsNeedUpdate = false; // #15581
|
|
|
|
|
|
- material.uniformsNeedUpdate = false; // #15581
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|
|
|
-};
|
|
|
+ function refreshUniformsCommon( uniforms, material, environment ) {
|
|
|
|
|
|
-function refreshUniformsCommon( uniforms, material, environment ) {
|
|
|
+ uniforms.opacity.value = material.opacity;
|
|
|
|
|
|
- uniforms.opacity.value = material.opacity;
|
|
|
+ if ( material.color ) {
|
|
|
|
|
|
- if ( material.color ) {
|
|
|
+ uniforms.diffuse.value.copy( material.color );
|
|
|
|
|
|
- uniforms.diffuse.value.copy( material.color );
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ if ( material.emissive ) {
|
|
|
+
|
|
|
+ uniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );
|
|
|
|
|
|
- if ( material.emissive ) {
|
|
|
+ }
|
|
|
|
|
|
- uniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );
|
|
|
+ if ( material.map ) {
|
|
|
|
|
|
- }
|
|
|
+ uniforms.map.value = material.map;
|
|
|
|
|
|
- if ( material.map ) {
|
|
|
+ }
|
|
|
|
|
|
- uniforms.map.value = material.map;
|
|
|
+ if ( material.alphaMap ) {
|
|
|
|
|
|
- }
|
|
|
+ uniforms.alphaMap.value = material.alphaMap;
|
|
|
|
|
|
- if ( material.alphaMap ) {
|
|
|
+ }
|
|
|
|
|
|
- uniforms.alphaMap.value = material.alphaMap;
|
|
|
+ if ( material.specularMap ) {
|
|
|
|
|
|
- }
|
|
|
+ uniforms.specularMap.value = material.specularMap;
|
|
|
|
|
|
- if ( material.specularMap ) {
|
|
|
+ }
|
|
|
|
|
|
- uniforms.specularMap.value = material.specularMap;
|
|
|
+ var envMap = material.envMap || environment;
|
|
|
|
|
|
- }
|
|
|
+ if ( envMap ) {
|
|
|
|
|
|
- var envMap = material.envMap || environment;
|
|
|
+ uniforms.envMap.value = envMap;
|
|
|
|
|
|
- if ( envMap ) {
|
|
|
+ uniforms.flipEnvMap.value = envMap.isCubeTexture ? - 1 : 1;
|
|
|
|
|
|
- uniforms.envMap.value = envMap;
|
|
|
+ uniforms.reflectivity.value = material.reflectivity;
|
|
|
+ uniforms.refractionRatio.value = material.refractionRatio;
|
|
|
|
|
|
- uniforms.flipEnvMap.value = envMap.isCubeTexture ? - 1 : 1;
|
|
|
+ uniforms.maxMipLevel.value = properties.get( envMap ).__maxMipLevel;
|
|
|
|
|
|
- uniforms.reflectivity.value = material.reflectivity;
|
|
|
- uniforms.refractionRatio.value = material.refractionRatio;
|
|
|
+ }
|
|
|
|
|
|
- uniforms.maxMipLevel.value = _properties.get( envMap ).__maxMipLevel;
|
|
|
+ if ( material.lightMap ) {
|
|
|
|
|
|
- }
|
|
|
+ uniforms.lightMap.value = material.lightMap;
|
|
|
+ uniforms.lightMapIntensity.value = material.lightMapIntensity;
|
|
|
|
|
|
- if ( material.lightMap ) {
|
|
|
+ }
|
|
|
|
|
|
- uniforms.lightMap.value = material.lightMap;
|
|
|
- uniforms.lightMapIntensity.value = material.lightMapIntensity;
|
|
|
+ if ( material.aoMap ) {
|
|
|
|
|
|
- }
|
|
|
+ uniforms.aoMap.value = material.aoMap;
|
|
|
+ uniforms.aoMapIntensity.value = material.aoMapIntensity;
|
|
|
|
|
|
- if ( material.aoMap ) {
|
|
|
+ }
|
|
|
|
|
|
- uniforms.aoMap.value = material.aoMap;
|
|
|
- uniforms.aoMapIntensity.value = material.aoMapIntensity;
|
|
|
+ // uv repeat and offset setting priorities
|
|
|
+ // 1. color map
|
|
|
+ // 2. specular map
|
|
|
+ // 3. normal map
|
|
|
+ // 4. bump map
|
|
|
+ // 5. alpha map
|
|
|
+ // 6. emissive map
|
|
|
|
|
|
- }
|
|
|
+ var uvScaleMap;
|
|
|
|
|
|
- // uv repeat and offset setting priorities
|
|
|
- // 1. color map
|
|
|
- // 2. specular map
|
|
|
- // 3. normal map
|
|
|
- // 4. bump map
|
|
|
- // 5. alpha map
|
|
|
- // 6. emissive map
|
|
|
+ if ( material.map ) {
|
|
|
|
|
|
- var uvScaleMap;
|
|
|
+ uvScaleMap = material.map;
|
|
|
|
|
|
- if ( material.map ) {
|
|
|
+ } else if ( material.specularMap ) {
|
|
|
|
|
|
- uvScaleMap = material.map;
|
|
|
+ uvScaleMap = material.specularMap;
|
|
|
|
|
|
- } else if ( material.specularMap ) {
|
|
|
+ } else if ( material.displacementMap ) {
|
|
|
|
|
|
- uvScaleMap = material.specularMap;
|
|
|
+ uvScaleMap = material.displacementMap;
|
|
|
|
|
|
- } else if ( material.displacementMap ) {
|
|
|
+ } else if ( material.normalMap ) {
|
|
|
|
|
|
- uvScaleMap = material.displacementMap;
|
|
|
+ uvScaleMap = material.normalMap;
|
|
|
|
|
|
- } else if ( material.normalMap ) {
|
|
|
+ } else if ( material.bumpMap ) {
|
|
|
|
|
|
- uvScaleMap = material.normalMap;
|
|
|
+ uvScaleMap = material.bumpMap;
|
|
|
|
|
|
- } else if ( material.bumpMap ) {
|
|
|
+ } else if ( material.roughnessMap ) {
|
|
|
|
|
|
- uvScaleMap = material.bumpMap;
|
|
|
+ uvScaleMap = material.roughnessMap;
|
|
|
|
|
|
- } else if ( material.roughnessMap ) {
|
|
|
+ } else if ( material.metalnessMap ) {
|
|
|
|
|
|
- uvScaleMap = material.roughnessMap;
|
|
|
+ uvScaleMap = material.metalnessMap;
|
|
|
|
|
|
- } else if ( material.metalnessMap ) {
|
|
|
+ } else if ( material.alphaMap ) {
|
|
|
|
|
|
- uvScaleMap = material.metalnessMap;
|
|
|
+ uvScaleMap = material.alphaMap;
|
|
|
|
|
|
- } else if ( material.alphaMap ) {
|
|
|
+ } else if ( material.emissiveMap ) {
|
|
|
|
|
|
- uvScaleMap = material.alphaMap;
|
|
|
+ uvScaleMap = material.emissiveMap;
|
|
|
|
|
|
- } else if ( material.emissiveMap ) {
|
|
|
+ }
|
|
|
|
|
|
- uvScaleMap = material.emissiveMap;
|
|
|
+ if ( uvScaleMap !== undefined ) {
|
|
|
|
|
|
- }
|
|
|
+ // backwards compatibility
|
|
|
+ if ( uvScaleMap.isWebGLRenderTarget ) {
|
|
|
|
|
|
- if ( uvScaleMap !== undefined ) {
|
|
|
+ uvScaleMap = uvScaleMap.texture;
|
|
|
|
|
|
- // backwards compatibility
|
|
|
- if ( uvScaleMap.isWebGLRenderTarget ) {
|
|
|
+ }
|
|
|
|
|
|
- uvScaleMap = uvScaleMap.texture;
|
|
|
+ if ( uvScaleMap.matrixAutoUpdate === true ) {
|
|
|
|
|
|
- }
|
|
|
+ uvScaleMap.updateMatrix();
|
|
|
|
|
|
- if ( uvScaleMap.matrixAutoUpdate === true ) {
|
|
|
+ }
|
|
|
|
|
|
- uvScaleMap.updateMatrix();
|
|
|
+ uniforms.uvTransform.value.copy( uvScaleMap.matrix );
|
|
|
|
|
|
}
|
|
|
|
|
|
- uniforms.uvTransform.value.copy( uvScaleMap.matrix );
|
|
|
+ // uv repeat and offset setting priorities for uv2
|
|
|
+ // 1. ao map
|
|
|
+ // 2. light map
|
|
|
|
|
|
- }
|
|
|
+ var uv2ScaleMap;
|
|
|
|
|
|
- // uv repeat and offset setting priorities for uv2
|
|
|
- // 1. ao map
|
|
|
- // 2. light map
|
|
|
+ if ( material.aoMap ) {
|
|
|
|
|
|
- var uv2ScaleMap;
|
|
|
+ uv2ScaleMap = material.aoMap;
|
|
|
|
|
|
- if ( material.aoMap ) {
|
|
|
+ } else if ( material.lightMap ) {
|
|
|
|
|
|
- uv2ScaleMap = material.aoMap;
|
|
|
+ uv2ScaleMap = material.lightMap;
|
|
|
|
|
|
- } else if ( material.lightMap ) {
|
|
|
+ }
|
|
|
|
|
|
- uv2ScaleMap = material.lightMap;
|
|
|
+ if ( uv2ScaleMap !== undefined ) {
|
|
|
|
|
|
- }
|
|
|
+ // backwards compatibility
|
|
|
+ if ( uv2ScaleMap.isWebGLRenderTarget ) {
|
|
|
|
|
|
- if ( uv2ScaleMap !== undefined ) {
|
|
|
+ uv2ScaleMap = uv2ScaleMap.texture;
|
|
|
|
|
|
- // backwards compatibility
|
|
|
- if ( uv2ScaleMap.isWebGLRenderTarget ) {
|
|
|
+ }
|
|
|
|
|
|
- uv2ScaleMap = uv2ScaleMap.texture;
|
|
|
+ if ( uv2ScaleMap.matrixAutoUpdate === true ) {
|
|
|
|
|
|
- }
|
|
|
+ uv2ScaleMap.updateMatrix();
|
|
|
|
|
|
- if ( uv2ScaleMap.matrixAutoUpdate === true ) {
|
|
|
+ }
|
|
|
|
|
|
- uv2ScaleMap.updateMatrix();
|
|
|
+ uniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );
|
|
|
|
|
|
}
|
|
|
|
|
|
- uniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );
|
|
|
-
|
|
|
}
|
|
|
|
|
|
-}
|
|
|
+ function refreshUniformsLine( uniforms, material ) {
|
|
|
+
|
|
|
+ uniforms.diffuse.value.copy( material.color );
|
|
|
+ uniforms.opacity.value = material.opacity;
|
|
|
|
|
|
-function refreshUniformsLine( uniforms, material ) {
|
|
|
+ }
|
|
|
|
|
|
- uniforms.diffuse.value.copy( material.color );
|
|
|
- uniforms.opacity.value = material.opacity;
|
|
|
+ function refreshUniformsDash( uniforms, material ) {
|
|
|
|
|
|
-}
|
|
|
+ uniforms.dashSize.value = material.dashSize;
|
|
|
+ uniforms.totalSize.value = material.dashSize + material.gapSize;
|
|
|
+ uniforms.scale.value = material.scale;
|
|
|
|
|
|
-function refreshUniformsDash( uniforms, material ) {
|
|
|
+ }
|
|
|
|
|
|
- uniforms.dashSize.value = material.dashSize;
|
|
|
- uniforms.totalSize.value = material.dashSize + material.gapSize;
|
|
|
- uniforms.scale.value = material.scale;
|
|
|
+ function refreshUniformsPoints( uniforms, material, pixelRatio, height ) {
|
|
|
|
|
|
-}
|
|
|
+ uniforms.diffuse.value.copy( material.color );
|
|
|
+ uniforms.opacity.value = material.opacity;
|
|
|
+ uniforms.size.value = material.size * pixelRatio;
|
|
|
+ uniforms.scale.value = height * 0.5;
|
|
|
|
|
|
-function refreshUniformsPoints( uniforms, material, pixelRatio, height ) {
|
|
|
+ if ( material.map ) {
|
|
|
|
|
|
- uniforms.diffuse.value.copy( material.color );
|
|
|
- uniforms.opacity.value = material.opacity;
|
|
|
- uniforms.size.value = material.size * pixelRatio;
|
|
|
- uniforms.scale.value = height * 0.5;
|
|
|
+ uniforms.map.value = material.map;
|
|
|
|
|
|
- if ( material.map ) {
|
|
|
+ }
|
|
|
|
|
|
- uniforms.map.value = material.map;
|
|
|
+ if ( material.alphaMap ) {
|
|
|
|
|
|
- }
|
|
|
+ uniforms.alphaMap.value = material.alphaMap;
|
|
|
|
|
|
- if ( material.alphaMap ) {
|
|
|
+ }
|
|
|
|
|
|
- uniforms.alphaMap.value = material.alphaMap;
|
|
|
+ // uv repeat and offset setting priorities
|
|
|
+ // 1. color map
|
|
|
+ // 2. alpha map
|
|
|
|
|
|
- }
|
|
|
+ var uvScaleMap;
|
|
|
|
|
|
- // uv repeat and offset setting priorities
|
|
|
- // 1. color map
|
|
|
- // 2. alpha map
|
|
|
+ if ( material.map ) {
|
|
|
|
|
|
- var uvScaleMap;
|
|
|
+ uvScaleMap = material.map;
|
|
|
|
|
|
- if ( material.map ) {
|
|
|
+ } else if ( material.alphaMap ) {
|
|
|
|
|
|
- uvScaleMap = material.map;
|
|
|
+ uvScaleMap = material.alphaMap;
|
|
|
|
|
|
- } else if ( material.alphaMap ) {
|
|
|
+ }
|
|
|
|
|
|
- uvScaleMap = material.alphaMap;
|
|
|
+ if ( uvScaleMap !== undefined ) {
|
|
|
|
|
|
- }
|
|
|
+ if ( uvScaleMap.matrixAutoUpdate === true ) {
|
|
|
|
|
|
- if ( uvScaleMap !== undefined ) {
|
|
|
+ uvScaleMap.updateMatrix();
|
|
|
|
|
|
- if ( uvScaleMap.matrixAutoUpdate === true ) {
|
|
|
+ }
|
|
|
|
|
|
- uvScaleMap.updateMatrix();
|
|
|
+ uniforms.uvTransform.value.copy( uvScaleMap.matrix );
|
|
|
|
|
|
}
|
|
|
|
|
|
- uniforms.uvTransform.value.copy( uvScaleMap.matrix );
|
|
|
-
|
|
|
}
|
|
|
|
|
|
-}
|
|
|
+ function refreshUniformsSprites( uniforms, material ) {
|
|
|
+
|
|
|
+ uniforms.diffuse.value.copy( material.color );
|
|
|
+ uniforms.opacity.value = material.opacity;
|
|
|
+ uniforms.rotation.value = material.rotation;
|
|
|
|
|
|
-function refreshUniformsSprites( uniforms, material ) {
|
|
|
+ if ( material.map ) {
|
|
|
|
|
|
- uniforms.diffuse.value.copy( material.color );
|
|
|
- uniforms.opacity.value = material.opacity;
|
|
|
- uniforms.rotation.value = material.rotation;
|
|
|
+ uniforms.map.value = material.map;
|
|
|
|
|
|
- if ( material.map ) {
|
|
|
+ }
|
|
|
|
|
|
- uniforms.map.value = material.map;
|
|
|
+ if ( material.alphaMap ) {
|
|
|
|
|
|
- }
|
|
|
+ uniforms.alphaMap.value = material.alphaMap;
|
|
|
|
|
|
- if ( material.alphaMap ) {
|
|
|
+ }
|
|
|
|
|
|
- uniforms.alphaMap.value = material.alphaMap;
|
|
|
+ // uv repeat and offset setting priorities
|
|
|
+ // 1. color map
|
|
|
+ // 2. alpha map
|
|
|
|
|
|
- }
|
|
|
+ var uvScaleMap;
|
|
|
|
|
|
- // uv repeat and offset setting priorities
|
|
|
- // 1. color map
|
|
|
- // 2. alpha map
|
|
|
+ if ( material.map ) {
|
|
|
|
|
|
- var uvScaleMap;
|
|
|
+ uvScaleMap = material.map;
|
|
|
|
|
|
- if ( material.map ) {
|
|
|
+ } else if ( material.alphaMap ) {
|
|
|
|
|
|
- uvScaleMap = material.map;
|
|
|
+ uvScaleMap = material.alphaMap;
|
|
|
|
|
|
- } else if ( material.alphaMap ) {
|
|
|
+ }
|
|
|
|
|
|
- uvScaleMap = material.alphaMap;
|
|
|
+ if ( uvScaleMap !== undefined ) {
|
|
|
|
|
|
- }
|
|
|
+ if ( uvScaleMap.matrixAutoUpdate === true ) {
|
|
|
|
|
|
- if ( uvScaleMap !== undefined ) {
|
|
|
+ uvScaleMap.updateMatrix();
|
|
|
|
|
|
- if ( uvScaleMap.matrixAutoUpdate === true ) {
|
|
|
+ }
|
|
|
|
|
|
- uvScaleMap.updateMatrix();
|
|
|
+ uniforms.uvTransform.value.copy( uvScaleMap.matrix );
|
|
|
|
|
|
}
|
|
|
|
|
|
- uniforms.uvTransform.value.copy( uvScaleMap.matrix );
|
|
|
-
|
|
|
}
|
|
|
|
|
|
-}
|
|
|
+ function refreshUniformsFog( uniforms, fog ) {
|
|
|
|
|
|
-WebGLMaterials.prototype.refreshUniformsFog = function ( uniforms, fog ) {
|
|
|
+ uniforms.fogColor.value.copy( fog.color );
|
|
|
|
|
|
- uniforms.fogColor.value.copy( fog.color );
|
|
|
+ if ( fog.isFog ) {
|
|
|
|
|
|
- if ( fog.isFog ) {
|
|
|
+ uniforms.fogNear.value = fog.near;
|
|
|
+ uniforms.fogFar.value = fog.far;
|
|
|
|
|
|
- uniforms.fogNear.value = fog.near;
|
|
|
- uniforms.fogFar.value = fog.far;
|
|
|
+ } else if ( fog.isFogExp2 ) {
|
|
|
|
|
|
- } else if ( fog.isFogExp2 ) {
|
|
|
+ uniforms.fogDensity.value = fog.density;
|
|
|
|
|
|
- uniforms.fogDensity.value = fog.density;
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|
|
|
-};
|
|
|
+ function refreshUniformsLambert( uniforms, material ) {
|
|
|
|
|
|
-function refreshUniformsLambert( uniforms, material ) {
|
|
|
+ if ( material.emissiveMap ) {
|
|
|
|
|
|
- if ( material.emissiveMap ) {
|
|
|
+ uniforms.emissiveMap.value = material.emissiveMap;
|
|
|
|
|
|
- uniforms.emissiveMap.value = material.emissiveMap;
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|
|
|
-}
|
|
|
+ function refreshUniformsPhong( uniforms, material ) {
|
|
|
|
|
|
-function refreshUniformsPhong( uniforms, material ) {
|
|
|
+ uniforms.specular.value.copy( material.specular );
|
|
|
+ uniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )
|
|
|
|
|
|
- uniforms.specular.value.copy( material.specular );
|
|
|
- uniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )
|
|
|
+ if ( material.emissiveMap ) {
|
|
|
|
|
|
- if ( material.emissiveMap ) {
|
|
|
+ uniforms.emissiveMap.value = material.emissiveMap;
|
|
|
|
|
|
- uniforms.emissiveMap.value = material.emissiveMap;
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ if ( material.bumpMap ) {
|
|
|
|
|
|
- if ( material.bumpMap ) {
|
|
|
+ uniforms.bumpMap.value = material.bumpMap;
|
|
|
+ uniforms.bumpScale.value = material.bumpScale;
|
|
|
+ if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;
|
|
|
|
|
|
- uniforms.bumpMap.value = material.bumpMap;
|
|
|
- uniforms.bumpScale.value = material.bumpScale;
|
|
|
- if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ if ( material.normalMap ) {
|
|
|
|
|
|
- if ( material.normalMap ) {
|
|
|
+ uniforms.normalMap.value = material.normalMap;
|
|
|
+ uniforms.normalScale.value.copy( material.normalScale );
|
|
|
+ if ( material.side === BackSide ) uniforms.normalScale.value.negate();
|
|
|
|
|
|
- uniforms.normalMap.value = material.normalMap;
|
|
|
- uniforms.normalScale.value.copy( material.normalScale );
|
|
|
- if ( material.side === BackSide ) uniforms.normalScale.value.negate();
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ if ( material.displacementMap ) {
|
|
|
|
|
|
- if ( material.displacementMap ) {
|
|
|
+ uniforms.displacementMap.value = material.displacementMap;
|
|
|
+ uniforms.displacementScale.value = material.displacementScale;
|
|
|
+ uniforms.displacementBias.value = material.displacementBias;
|
|
|
|
|
|
- uniforms.displacementMap.value = material.displacementMap;
|
|
|
- uniforms.displacementScale.value = material.displacementScale;
|
|
|
- uniforms.displacementBias.value = material.displacementBias;
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|
|
|
-}
|
|
|
+ function refreshUniformsToon( uniforms, material ) {
|
|
|
|
|
|
-function refreshUniformsToon( uniforms, material ) {
|
|
|
+ uniforms.specular.value.copy( material.specular );
|
|
|
+ uniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )
|
|
|
|
|
|
- uniforms.specular.value.copy( material.specular );
|
|
|
- uniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )
|
|
|
+ if ( material.gradientMap ) {
|
|
|
|
|
|
- if ( material.gradientMap ) {
|
|
|
+ uniforms.gradientMap.value = material.gradientMap;
|
|
|
|
|
|
- uniforms.gradientMap.value = material.gradientMap;
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ if ( material.emissiveMap ) {
|
|
|
|
|
|
- if ( material.emissiveMap ) {
|
|
|
+ uniforms.emissiveMap.value = material.emissiveMap;
|
|
|
|
|
|
- uniforms.emissiveMap.value = material.emissiveMap;
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ if ( material.bumpMap ) {
|
|
|
|
|
|
- if ( material.bumpMap ) {
|
|
|
+ uniforms.bumpMap.value = material.bumpMap;
|
|
|
+ uniforms.bumpScale.value = material.bumpScale;
|
|
|
+ if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;
|
|
|
|
|
|
- uniforms.bumpMap.value = material.bumpMap;
|
|
|
- uniforms.bumpScale.value = material.bumpScale;
|
|
|
- if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ if ( material.normalMap ) {
|
|
|
|
|
|
- if ( material.normalMap ) {
|
|
|
+ uniforms.normalMap.value = material.normalMap;
|
|
|
+ uniforms.normalScale.value.copy( material.normalScale );
|
|
|
+ if ( material.side === BackSide ) uniforms.normalScale.value.negate();
|
|
|
|
|
|
- uniforms.normalMap.value = material.normalMap;
|
|
|
- uniforms.normalScale.value.copy( material.normalScale );
|
|
|
- if ( material.side === BackSide ) uniforms.normalScale.value.negate();
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ if ( material.displacementMap ) {
|
|
|
|
|
|
- if ( material.displacementMap ) {
|
|
|
+ uniforms.displacementMap.value = material.displacementMap;
|
|
|
+ uniforms.displacementScale.value = material.displacementScale;
|
|
|
+ uniforms.displacementBias.value = material.displacementBias;
|
|
|
|
|
|
- uniforms.displacementMap.value = material.displacementMap;
|
|
|
- uniforms.displacementScale.value = material.displacementScale;
|
|
|
- uniforms.displacementBias.value = material.displacementBias;
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|
|
|
-}
|
|
|
+ function refreshUniformsStandard( uniforms, material, environment ) {
|
|
|
|
|
|
-function refreshUniformsStandard( uniforms, material, environment ) {
|
|
|
+ uniforms.roughness.value = material.roughness;
|
|
|
+ uniforms.metalness.value = material.metalness;
|
|
|
|
|
|
- uniforms.roughness.value = material.roughness;
|
|
|
- uniforms.metalness.value = material.metalness;
|
|
|
+ if ( material.roughnessMap ) {
|
|
|
|
|
|
- if ( material.roughnessMap ) {
|
|
|
+ uniforms.roughnessMap.value = material.roughnessMap;
|
|
|
|
|
|
- uniforms.roughnessMap.value = material.roughnessMap;
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ if ( material.metalnessMap ) {
|
|
|
|
|
|
- if ( material.metalnessMap ) {
|
|
|
+ uniforms.metalnessMap.value = material.metalnessMap;
|
|
|
|
|
|
- uniforms.metalnessMap.value = material.metalnessMap;
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ if ( material.emissiveMap ) {
|
|
|
|
|
|
- if ( material.emissiveMap ) {
|
|
|
+ uniforms.emissiveMap.value = material.emissiveMap;
|
|
|
|
|
|
- uniforms.emissiveMap.value = material.emissiveMap;
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ if ( material.bumpMap ) {
|
|
|
|
|
|
- if ( material.bumpMap ) {
|
|
|
+ uniforms.bumpMap.value = material.bumpMap;
|
|
|
+ uniforms.bumpScale.value = material.bumpScale;
|
|
|
+ if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;
|
|
|
|
|
|
- uniforms.bumpMap.value = material.bumpMap;
|
|
|
- uniforms.bumpScale.value = material.bumpScale;
|
|
|
- if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ if ( material.normalMap ) {
|
|
|
|
|
|
- if ( material.normalMap ) {
|
|
|
+ uniforms.normalMap.value = material.normalMap;
|
|
|
+ uniforms.normalScale.value.copy( material.normalScale );
|
|
|
+ if ( material.side === BackSide ) uniforms.normalScale.value.negate();
|
|
|
|
|
|
- uniforms.normalMap.value = material.normalMap;
|
|
|
- uniforms.normalScale.value.copy( material.normalScale );
|
|
|
- if ( material.side === BackSide ) uniforms.normalScale.value.negate();
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ if ( material.displacementMap ) {
|
|
|
|
|
|
- if ( material.displacementMap ) {
|
|
|
+ uniforms.displacementMap.value = material.displacementMap;
|
|
|
+ uniforms.displacementScale.value = material.displacementScale;
|
|
|
+ uniforms.displacementBias.value = material.displacementBias;
|
|
|
|
|
|
- uniforms.displacementMap.value = material.displacementMap;
|
|
|
- uniforms.displacementScale.value = material.displacementScale;
|
|
|
- uniforms.displacementBias.value = material.displacementBias;
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ if ( material.envMap || environment ) {
|
|
|
|
|
|
- if ( material.envMap || environment ) {
|
|
|
+ //uniforms.envMap.value = material.envMap; // part of uniforms common
|
|
|
+ uniforms.envMapIntensity.value = material.envMapIntensity;
|
|
|
|
|
|
- //uniforms.envMap.value = material.envMap; // part of uniforms common
|
|
|
- uniforms.envMapIntensity.value = material.envMapIntensity;
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|
|
|
-}
|
|
|
+ function refreshUniformsPhysical( uniforms, material, environment ) {
|
|
|
|
|
|
-function refreshUniformsPhysical( uniforms, material, environment ) {
|
|
|
+ refreshUniformsStandard( uniforms, material, environment );
|
|
|
|
|
|
- refreshUniformsStandard( uniforms, material, environment );
|
|
|
+ uniforms.reflectivity.value = material.reflectivity; // also part of uniforms common
|
|
|
|
|
|
- uniforms.reflectivity.value = material.reflectivity; // also part of uniforms common
|
|
|
+ uniforms.clearcoat.value = material.clearcoat;
|
|
|
+ uniforms.clearcoatRoughness.value = material.clearcoatRoughness;
|
|
|
+ if ( material.sheen ) uniforms.sheen.value.copy( material.sheen );
|
|
|
|
|
|
- uniforms.clearcoat.value = material.clearcoat;
|
|
|
- uniforms.clearcoatRoughness.value = material.clearcoatRoughness;
|
|
|
- if ( material.sheen ) uniforms.sheen.value.copy( material.sheen );
|
|
|
+ if ( material.clearcoatMap ) {
|
|
|
|
|
|
- if ( material.clearcoatMap ) {
|
|
|
+ uniforms.clearcoatMap.value = material.clearcoatMap;
|
|
|
|
|
|
- uniforms.clearcoatMap.value = material.clearcoatMap;
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ if ( material.clearcoatRoughnessMap ) {
|
|
|
|
|
|
- if ( material.clearcoatRoughnessMap ) {
|
|
|
+ uniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;
|
|
|
|
|
|
- uniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ if ( material.clearcoatNormalMap ) {
|
|
|
|
|
|
- if ( material.clearcoatNormalMap ) {
|
|
|
+ uniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );
|
|
|
+ uniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;
|
|
|
|
|
|
- uniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );
|
|
|
- uniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;
|
|
|
+ if ( material.side === BackSide ) {
|
|
|
|
|
|
- if ( material.side === BackSide ) {
|
|
|
+ uniforms.clearcoatNormalScale.value.negate();
|
|
|
|
|
|
- uniforms.clearcoatNormalScale.value.negate();
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|
|
|
+ uniforms.transparency.value = material.transparency;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
- uniforms.transparency.value = material.transparency;
|
|
|
+ function refreshUniformsMatcap( uniforms, material ) {
|
|
|
|
|
|
-}
|
|
|
+ if ( material.matcap ) {
|
|
|
|
|
|
-function refreshUniformsMatcap( uniforms, material ) {
|
|
|
+ uniforms.matcap.value = material.matcap;
|
|
|
|
|
|
- if ( material.matcap ) {
|
|
|
+ }
|
|
|
|
|
|
- uniforms.matcap.value = material.matcap;
|
|
|
+ if ( material.bumpMap ) {
|
|
|
|
|
|
- }
|
|
|
+ uniforms.bumpMap.value = material.bumpMap;
|
|
|
+ uniforms.bumpScale.value = material.bumpScale;
|
|
|
+ if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;
|
|
|
|
|
|
- if ( material.bumpMap ) {
|
|
|
+ }
|
|
|
|
|
|
- uniforms.bumpMap.value = material.bumpMap;
|
|
|
- uniforms.bumpScale.value = material.bumpScale;
|
|
|
- if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;
|
|
|
+ if ( material.normalMap ) {
|
|
|
|
|
|
- }
|
|
|
+ uniforms.normalMap.value = material.normalMap;
|
|
|
+ uniforms.normalScale.value.copy( material.normalScale );
|
|
|
+ if ( material.side === BackSide ) uniforms.normalScale.value.negate();
|
|
|
|
|
|
- if ( material.normalMap ) {
|
|
|
+ }
|
|
|
|
|
|
- uniforms.normalMap.value = material.normalMap;
|
|
|
- uniforms.normalScale.value.copy( material.normalScale );
|
|
|
- if ( material.side === BackSide ) uniforms.normalScale.value.negate();
|
|
|
+ if ( material.displacementMap ) {
|
|
|
|
|
|
- }
|
|
|
+ uniforms.displacementMap.value = material.displacementMap;
|
|
|
+ uniforms.displacementScale.value = material.displacementScale;
|
|
|
+ uniforms.displacementBias.value = material.displacementBias;
|
|
|
|
|
|
- if ( material.displacementMap ) {
|
|
|
-
|
|
|
- uniforms.displacementMap.value = material.displacementMap;
|
|
|
- uniforms.displacementScale.value = material.displacementScale;
|
|
|
- uniforms.displacementBias.value = material.displacementBias;
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|
|
|
-}
|
|
|
+ function refreshUniformsDepth( uniforms, material ) {
|
|
|
|
|
|
-function refreshUniformsDepth( uniforms, material ) {
|
|
|
+ if ( material.displacementMap ) {
|
|
|
|
|
|
- if ( material.displacementMap ) {
|
|
|
+ uniforms.displacementMap.value = material.displacementMap;
|
|
|
+ uniforms.displacementScale.value = material.displacementScale;
|
|
|
+ uniforms.displacementBias.value = material.displacementBias;
|
|
|
|
|
|
- uniforms.displacementMap.value = material.displacementMap;
|
|
|
- uniforms.displacementScale.value = material.displacementScale;
|
|
|
- uniforms.displacementBias.value = material.displacementBias;
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|
|
|
-}
|
|
|
+ function refreshUniformsDistance( uniforms, material ) {
|
|
|
+
|
|
|
+ if ( material.displacementMap ) {
|
|
|
|
|
|
-function refreshUniformsDistance( uniforms, material ) {
|
|
|
+ uniforms.displacementMap.value = material.displacementMap;
|
|
|
+ uniforms.displacementScale.value = material.displacementScale;
|
|
|
+ uniforms.displacementBias.value = material.displacementBias;
|
|
|
|
|
|
- if ( material.displacementMap ) {
|
|
|
+ }
|
|
|
|
|
|
- uniforms.displacementMap.value = material.displacementMap;
|
|
|
- uniforms.displacementScale.value = material.displacementScale;
|
|
|
- uniforms.displacementBias.value = material.displacementBias;
|
|
|
+ uniforms.referencePosition.value.copy( material.referencePosition );
|
|
|
+ uniforms.nearDistance.value = material.nearDistance;
|
|
|
+ uniforms.farDistance.value = material.farDistance;
|
|
|
|
|
|
}
|
|
|
|
|
|
- uniforms.referencePosition.value.copy( material.referencePosition );
|
|
|
- uniforms.nearDistance.value = material.nearDistance;
|
|
|
- uniforms.farDistance.value = material.farDistance;
|
|
|
+ function refreshUniformsNormal( uniforms, material ) {
|
|
|
|
|
|
-}
|
|
|
+ if ( material.bumpMap ) {
|
|
|
|
|
|
-function refreshUniformsNormal( uniforms, material ) {
|
|
|
+ uniforms.bumpMap.value = material.bumpMap;
|
|
|
+ uniforms.bumpScale.value = material.bumpScale;
|
|
|
+ if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;
|
|
|
|
|
|
- if ( material.bumpMap ) {
|
|
|
+ }
|
|
|
|
|
|
- uniforms.bumpMap.value = material.bumpMap;
|
|
|
- uniforms.bumpScale.value = material.bumpScale;
|
|
|
- if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;
|
|
|
+ if ( material.normalMap ) {
|
|
|
|
|
|
- }
|
|
|
+ uniforms.normalMap.value = material.normalMap;
|
|
|
+ uniforms.normalScale.value.copy( material.normalScale );
|
|
|
+ if ( material.side === BackSide ) uniforms.normalScale.value.negate();
|
|
|
|
|
|
- if ( material.normalMap ) {
|
|
|
+ }
|
|
|
|
|
|
- uniforms.normalMap.value = material.normalMap;
|
|
|
- uniforms.normalScale.value.copy( material.normalScale );
|
|
|
- if ( material.side === BackSide ) uniforms.normalScale.value.negate();
|
|
|
+ if ( material.displacementMap ) {
|
|
|
|
|
|
- }
|
|
|
+ uniforms.displacementMap.value = material.displacementMap;
|
|
|
+ uniforms.displacementScale.value = material.displacementScale;
|
|
|
+ uniforms.displacementBias.value = material.displacementBias;
|
|
|
|
|
|
- if ( material.displacementMap ) {
|
|
|
-
|
|
|
- uniforms.displacementMap.value = material.displacementMap;
|
|
|
- uniforms.displacementScale.value = material.displacementScale;
|
|
|
- uniforms.displacementBias.value = material.displacementBias;
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|
|
|
+ return {
|
|
|
+ refreshUniforms: refreshUniforms,
|
|
|
+ refreshUniformsFog: refreshUniformsFog
|
|
|
+ };
|
|
|
+
|
|
|
}
|
|
|
|
|
|
export { WebGLMaterials };
|