refreshUniformsCommon method

void refreshUniformsCommon(
  1. Map<String, dynamic> uniforms,
  2. Material material
)

Implementation

void refreshUniformsCommon(Map<String, dynamic> uniforms, Material material) {
  uniforms["opacity"]["value"] = material.opacity;

  uniforms["diffuse"]["value"].setFrom(material.color);

  if (material.emissive != null) {
    uniforms["emissive"]["value"]..setFrom(material.emissive)..scale(material.emissiveIntensity);
  }

  if (material.map != null) {
    uniforms["map"]["value"] = material.map;
  }

  if (material.alphaMap != null) {
    uniforms["alphaMap"]["value"] = material.alphaMap;
  }

  if (material.bumpMap != null) {
    uniforms["bumpMap"]["value"] = material.bumpMap;
    uniforms["bumpScale"]["value"] = material.bumpScale;
    if (material.side == BackSide) uniforms["bumpScale"]["value"] *= -1;
  }

  if (material.displacementMap != null) {
    uniforms["displacementMap"]["value"] = material.displacementMap;
    uniforms["displacementScale"]["value"] = material.displacementScale;
    uniforms["displacementBias"]["value"] = material.displacementBias;
  }

  if (material.emissiveMap != null) {
    uniforms["emissiveMap"]["value"] = material.emissiveMap;
  }

  if (material.normalMap != null) {
    uniforms["normalMap"]["value"] = material.normalMap;
    uniforms["normalScale"]["value"].setFrom(material.normalScale);
    if (material.side == BackSide) uniforms["normalScale"]["value"].negate();
  }

  if (material.specularMap != null) {
    uniforms["specularMap"]["value"] = material.specularMap;
  }

  if (material.alphaTest > 0) {
    uniforms["alphaTest"]["value"] = material.alphaTest;
  }

  final envMap = properties.get(material)["envMap"];

  if (envMap != null) {
    uniforms["envMap"]["value"] = envMap;
    uniforms["flipEnvMapX"]["value"] = (envMap.type == "CubeTexture" && envMap.isRenderTargetTexture == false) ? -1 : 1;
    uniforms["flipEnvMapY"]["value"] = (envMap.type == "CubeTexture" && envMap.isRenderTargetTexture == false && kIsWeb) ? 1 : -1;
    uniforms["reflectivity"]["value"] = material.reflectivity;
    uniforms["ior"]["value"] = material.ior;
    uniforms["refractionRatio"]["value"] = material.refractionRatio;
  }

  if (material.lightMap != null) {
    uniforms["lightMap"]["value"] = material.lightMap;

    // artist-friendly light intensity scaling factor
    final scaleFactor = (renderer.physicallyCorrectLights != true) ? math.pi : 1;

    uniforms["lightMapIntensity"]["value"] = material.lightMapIntensity! * scaleFactor;
  }

  if (material.aoMap != null) {
    uniforms["aoMap"]["value"] = material.aoMap;
    uniforms["aoMapIntensity"]["value"] = material.aoMapIntensity;
  }

  // uv repeat and offset setting priorities
  // 1. color map
  // 2. specular map
  // 3. displacementMap map
  // 4. normal map
  // 5. bump map
  // 6. roughnessMap map
  // 7. metalnessMap map
  // 8. alphaMap map
  // 9. emissiveMap map
  // 10. clearcoat map
  // 11. clearcoat normal map
  // 12. clearcoat roughnessMap map

  Texture? uvScaleMap;

  if (material.map != null) {
    uvScaleMap = material.map;
  } else if (material.specularMap != null) {
    uvScaleMap = material.specularMap;
  } else if (material.displacementMap != null) {
    uvScaleMap = material.displacementMap;
  } else if (material.normalMap != null) {
    uvScaleMap = material.normalMap;
  } else if (material.bumpMap != null) {
    uvScaleMap = material.bumpMap;
  } else if (material.roughnessMap != null) {
    uvScaleMap = material.roughnessMap;
  } else if (material.metalnessMap != null) {
    uvScaleMap = material.metalnessMap;
  } else if (material.alphaMap != null) {
    uvScaleMap = material.alphaMap;
  } else if (material.emissiveMap != null) {
    uvScaleMap = material.emissiveMap;
  } else if (material.clearcoatMap != null) {
    uvScaleMap = material.clearcoatMap;
  } else if (material.clearcoatNormalMap != null) {
    uvScaleMap = material.clearcoatNormalMap;
  } else if (material.clearcoatRoughnessMap != null) {
    uvScaleMap = material.clearcoatRoughnessMap;
  } else if (material.specularIntensityMap != null) {
    uvScaleMap = material.specularIntensityMap;
  } else if (material.specularColorMap != null) {
    uvScaleMap = material.specularColorMap;
  } else if (material.transmissionMap != null) {
    uvScaleMap = material.transmissionMap;
  } else if (material.thicknessMap != null) {
    uvScaleMap = material.thicknessMap;
  } else if (material.sheenColorMap != null) {
    uvScaleMap = material.sheenColorMap;
  } else if (material.sheenRoughnessMap != null) {
    uvScaleMap = material.sheenRoughnessMap;
  }

  if (uvScaleMap != null) {
    // backwards compatibility
    if (uvScaleMap.isWebGLRenderTarget) {
      //uvScaleMap = uvScaleMap.texture;
    }

    if (uvScaleMap.matrixAutoUpdate == true) {
      uvScaleMap.updateMatrix();
    }

    uniforms["uvTransform"]["value"].setFrom(uvScaleMap.matrix);
  }

  // uv repeat and offset setting priorities for uv2
  // 1. ao map
  // 2. light map

  Texture? uv2ScaleMap;

  if (material.aoMap != null) {
    uv2ScaleMap = material.aoMap;
  }
  else if (material.lightMap != null) {
    uv2ScaleMap = material.lightMap;
  }

  if (uv2ScaleMap != null) {
    // backwards compatibility
    if (uv2ScaleMap.isWebGLRenderTarget) {
      //uv2ScaleMap = uv2ScaleMap.texture;
    }

    if (uv2ScaleMap.matrixAutoUpdate == true) {
      uv2ScaleMap.updateMatrix();
    }

    uniforms["uv2Transform"]["value"].setFrom(uv2ScaleMap.matrix);
  }
}