function loadSpecularGlossiness(loader, specularGlossinessInfo, frameState) {
  const {
    diffuseTexture,
    specularGlossinessTexture,
    diffuseFactor,
    specularFactor,
    glossinessFactor,
  } = specularGlossinessInfo;

  const specularGlossiness = new SpecularGlossiness();
  if (defined(diffuseTexture)) {
    specularGlossiness.diffuseTexture = loadTexture(
      loader,
      diffuseTexture,
      frameState,
    );
  }
  if (defined(specularGlossinessTexture)) {
    specularGlossiness.specularGlossinessTexture = loadTexture(
      loader,
      specularGlossinessTexture,
      frameState,
    );
  }
  specularGlossiness.diffuseFactor = fromArray(Cartesian4, diffuseFactor);
  specularGlossiness.specularFactor = fromArray(Cartesian3, specularFactor);
  specularGlossiness.glossinessFactor = glossinessFactor;

  return specularGlossiness;
}
Load textures and parse factors for the KHR_materials_pbrSpecularGlossiness extension
@param {GltfLoader} loader
@param {object} specularGlossinessInfo The contents of the KHR_materials_pbrSpecularGlossiness extension in the parsed glTF JSON
@param {FrameState} frameState
@returns {ModelComponents.SpecularGlossiness}
@private