提交 a0df210f 编写于 作者: D Don McCurdy

GLTFLoader: Explicitly clone ShaderMaterial properties.

上级 a2ed7c0f
......@@ -451,6 +451,32 @@ THREE.GLTFLoader = ( function () {
name: EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,
specularGlossinessParams: [
'color',
'map',
'lightMap',
'lightMapIntensity',
'aoMap',
'aoMapIntensity',
'emissive',
'emissiveIntensity',
'emissiveMap',
'bumpMap',
'bumpScale',
'normalMap',
'displacementMap',
'displacementScale',
'displacementBias',
'specularMap',
'specular',
'glossinessMap',
'glossiness',
'alphaMap',
'envMap',
'envMapIntensity',
'refractionRatio',
],
getMaterialType: function () {
return THREE.ShaderMaterial;
......@@ -629,6 +655,24 @@ THREE.GLTFLoader = ( function () {
},
cloneMaterial: function ( source ) {
var target = source.clone();
target.isGLTFSpecularGlossinessMaterial = true;
var params = this.specularGlossinessParams;
for ( var i = 0; i < params.length; i ++ ) {
target[ params[ i ] ] = source[ params[ i ] ];
}
return target;
},
// Here's based on refreshUniformsCommon() and refreshUniformsStandard() in WebGLRenderer.
refreshUniforms: function ( renderer, scene, camera, geometry, material, group ) {
......@@ -1799,6 +1843,7 @@ THREE.GLTFLoader = ( function () {
var scope = this;
var json = this.json;
var extensions = this.extensions;
return this._withDependencies( [
......@@ -1838,7 +1883,16 @@ THREE.GLTFLoader = ( function () {
if ( useVertexColors || useFlatShading ) {
material = material.clone();
if ( material.isGLTFSpecularGlossinessMaterial ) {
var specGlossExtension = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ];
material = specGlossExtension.cloneMaterial( material );
} else {
material = material.clone();
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册