refreshUniformsCommon method
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;
refreshTransformUniform( material.map, uniforms['mapTransform'] );
}
if (material.alphaMap != null) {
uniforms["alphaMap"]["value"] = material.alphaMap;
refreshTransformUniform( material.alphaMap!, uniforms['alphaMapTransform'] );
}
if (material.bumpMap != null) {
uniforms["bumpMap"]["value"] = material.bumpMap;
refreshTransformUniform( material.bumpMap!, uniforms['bumpMapTransform'] );
uniforms["bumpScale"]["value"] = material.bumpScale;
if (material.side == BackSide) uniforms["bumpScale"]["value"] *= -1;
}
if (material.displacementMap != null) {
uniforms["displacementMap"]["value"] = material.displacementMap;
refreshTransformUniform( material.displacementMap!, uniforms['displacementMapTransform'] );
uniforms["displacementScale"]["value"] = material.displacementScale;
uniforms["displacementBias"]["value"] = material.displacementBias;
}
if (material.emissiveMap != null) {
uniforms["emissiveMap"]["value"] = material.emissiveMap;
refreshTransformUniform( material.emissiveMap!, uniforms['emissiveMapTransform'] );
}
if (material.normalMap != null) {
uniforms["normalMap"]["value"] = material.normalMap;
refreshTransformUniform( material.normalMap!, uniforms['normalMapTransform'] );
uniforms["normalScale"]["value"].setFrom(material.normalScale);
if (material.side == BackSide) uniforms["normalScale"]["value"].negate();
}
if (material.specularMap != null) {
uniforms["specularMap"]["value"] = material.specularMap;
refreshTransformUniform( material.specularMap!, uniforms['specularMapTransform'] );
}
if (material.alphaTest > 0) {
uniforms["alphaTest"]["value"] = material.alphaTest;
}
final materialProperties = properties.get( material );
final envMap = materialProperties['envMap'];
final envMapRotation = materialProperties['envMapRotation'] ?? Euler();
if (envMap != null) {
uniforms["envMap"]["value"] = envMap;
_e1.copy( envMapRotation );
// accommodate left-handed frame
_e1.x *= - 1; _e1.y *= - 1; _e1.z *= - 1;
if ( envMap is CubeTexture && envMap is! WebGL3DRenderTarget) {
// environment maps which are not cube render targets or PMREMs follow a different convention
_e1.y *= - 1;
_e1.z *= - 1;
}
uniforms['envMapRotation']?['value'].setFromMatrix4( _m1.makeRotationFromEuler( _e1 ) );
uniforms["flipEnvMap"]?["value"] = (envMap is CubeTexture && envMap is! WebGL3DRenderTarget) ? -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;
uniforms["lightMapIntensity"]["value"] = material.lightMapIntensity!;
refreshTransformUniform( material.lightMap!, uniforms['lightMapTransform'] );
}
if (material.aoMap != null) {
uniforms["aoMap"]["value"] = material.aoMap;
uniforms["aoMapIntensity"]["value"] = material.aoMapIntensity;
refreshTransformUniform( material.aoMap!, uniforms['aoMapTransform'] );
}
}