@@ -637,7 +637,7 @@ THREE.WebGLRenderer = function ( parameters ) {
637637
638638 _gl . bindBuffer ( _gl . ARRAY_BUFFER , buffers . normal ) ;
639639
640- if ( material . type !== 'MeshPhongMaterial' && material . shading === THREE . FlatShading ) {
640+ if ( material . type !== 'MeshPhongMaterial' && material . type !== 'MeshStandardMaterial' && material . shading === THREE . FlatShading ) {
641641
642642 for ( var i = 0 , l = object . count * 3 ; i < l ; i += 9 ) {
643643
@@ -1573,6 +1573,7 @@ THREE.WebGLRenderer = function ( parameters ) {
15731573
15741574 if ( material instanceof THREE . ShaderMaterial ||
15751575 material instanceof THREE . MeshPhongMaterial ||
1576+ material instanceof THREE . MeshStandardMaterial ||
15761577 material . envMap ) {
15771578
15781579 if ( p_uniforms . cameraPosition !== undefined ) {
@@ -1587,6 +1588,7 @@ THREE.WebGLRenderer = function ( parameters ) {
15871588 if ( material instanceof THREE . MeshPhongMaterial ||
15881589 material instanceof THREE . MeshLambertMaterial ||
15891590 material instanceof THREE . MeshBasicMaterial ||
1591+ material instanceof THREE . MeshStandardMaterial ||
15901592 material instanceof THREE . ShaderMaterial ||
15911593 material . skinning ) {
15921594
@@ -1665,6 +1667,7 @@ THREE.WebGLRenderer = function ( parameters ) {
16651667
16661668 if ( material instanceof THREE . MeshPhongMaterial ||
16671669 material instanceof THREE . MeshLambertMaterial ||
1670+ material instanceof THREE . MeshStandardMaterial ||
16681671 material . lights ) {
16691672
16701673 if ( _lightsNeedUpdate ) {
@@ -1690,7 +1693,8 @@ THREE.WebGLRenderer = function ( parameters ) {
16901693
16911694 if ( material instanceof THREE . MeshBasicMaterial ||
16921695 material instanceof THREE . MeshLambertMaterial ||
1693- material instanceof THREE . MeshPhongMaterial ) {
1696+ material instanceof THREE . MeshPhongMaterial ||
1697+ material instanceof THREE . MeshStandardMaterial ) {
16941698
16951699 refreshUniformsCommon ( m_uniforms , material ) ;
16961700
@@ -1715,6 +1719,10 @@ THREE.WebGLRenderer = function ( parameters ) {
17151719
17161720 refreshUniformsPhong ( m_uniforms , material ) ;
17171721
1722+ } else if ( material instanceof THREE . MeshStandardMaterial ) {
1723+
1724+ refreshUniformsStandard ( m_uniforms , material ) ;
1725+
17181726 } else if ( material instanceof THREE . MeshDepthMaterial ) {
17191727
17201728 m_uniforms . mNear . value = camera . near ;
@@ -1932,6 +1940,74 @@ THREE.WebGLRenderer = function ( parameters ) {
19321940
19331941 }
19341942
1943+ function refreshUniformsStandard ( uniforms , material ) {
1944+
1945+ uniforms . roughness . value = material . roughness ;
1946+ //uniforms.reflectivity.value = material.reflectivity; // part of uniforms common
1947+ uniforms . metalness . value = material . metalness ;
1948+
1949+ if ( material . roughnessMap ) {
1950+
1951+ uniforms . roughnessMap . value = material . roughnessMap ;
1952+
1953+ }
1954+
1955+ if ( material . reflectivityMap ) {
1956+
1957+ uniforms . reflectivityMap . value = material . reflectivityMap ;
1958+
1959+ }
1960+
1961+ if ( material . metalnessMap ) {
1962+
1963+ uniforms . metalnessMap . value = material . metalnessMap ;
1964+
1965+ }
1966+
1967+ if ( material . lightMap ) {
1968+
1969+ uniforms . lightMap . value = material . lightMap ;
1970+ uniforms . lightMapIntensity . value = material . lightMapIntensity ;
1971+
1972+ }
1973+
1974+ if ( material . emissiveMap ) {
1975+
1976+ uniforms . emissiveMap . value = material . emissiveMap ;
1977+
1978+ }
1979+
1980+ if ( material . bumpMap ) {
1981+
1982+ uniforms . bumpMap . value = material . bumpMap ;
1983+ uniforms . bumpScale . value = material . bumpScale ;
1984+
1985+ }
1986+
1987+ if ( material . normalMap ) {
1988+
1989+ uniforms . normalMap . value = material . normalMap ;
1990+ uniforms . normalScale . value . copy ( material . normalScale ) ;
1991+
1992+ }
1993+
1994+ if ( material . displacementMap ) {
1995+
1996+ uniforms . displacementMap . value = material . displacementMap ;
1997+ uniforms . displacementScale . value = material . displacementScale ;
1998+ uniforms . displacementBias . value = material . displacementBias ;
1999+
2000+ }
2001+
2002+ if ( material . envMap ) {
2003+
2004+ //uniforms.envMap.value = material.envMap; // part of uniforms common
2005+ uniforms . envMapIntensity . value = material . envMapIntensity ;
2006+
2007+ }
2008+
2009+ }
2010+
19352011 function refreshUniformsLights ( uniforms , lights ) {
19362012
19372013 uniforms . ambientLightColor . value = lights . ambient ;
0 commit comments