refreshUniformsPhysical method

void refreshUniformsPhysical(
  1. Map<String, dynamic> uniforms,
  2. Material material,
  3. RenderTarget? transmissionRenderTarget
)

Implementation

void refreshUniformsPhysical(Map<String, dynamic> uniforms,Material material, RenderTarget? transmissionRenderTarget) {
  uniforms["ior"]["value"] = material.ior; // also part of uniforms common

  if (material.sheen > 0) {
    uniforms["sheenColor"]["value"].setFrom(material.sheenColor).multiplyScalar( material.sheen );

    uniforms["sheenRoughness"]["value"] = material.sheenRoughness;

    if (material.sheenColorMap != null) {
      uniforms["sheenColorMap"]["value"] = material.sheenColorMap;
      refreshTransformUniform( material.sheenColorMap!, uniforms['sheenColorMapTransform'] );
    }

    if (material.sheenRoughnessMap != null) {
      uniforms["sheenRoughnessMap"]["value"] = material.sheenRoughnessMap;
      refreshTransformUniform( material.sheenRoughnessMap!, uniforms['sheenRoughnessMapTransform'] );
    }
  }

  if (material.clearcoat > 0) {
    uniforms["clearcoat"]["value"] = material.clearcoat;
    uniforms["clearcoatRoughness"]["value"] = material.clearcoatRoughness;

    if (material.clearcoatMap != null) {
      uniforms["clearcoatMap"]["value"] = material.clearcoatMap;
      refreshTransformUniform( material.clearcoatMap!, uniforms['clearcoatMapTransform'] );
    }

    if (material.clearcoatRoughnessMap != null) {
      uniforms["clearcoatRoughnessMap"]["value"] = material.clearcoatRoughnessMap;
      refreshTransformUniform( material.clearcoatRoughnessMap!, uniforms['clearcoatRoughnessMapTransform'] );
    }

    if (material.clearcoatNormalMap != null) {
      uniforms["clearcoatNormalMap"]["value"] = material.clearcoatNormalMap;
      refreshTransformUniform( material.clearcoatNormalMap!, uniforms['clearcoatNormalMapTransform'] );
      uniforms["clearcoatNormalScale"]["value"].setFrom(material.clearcoatNormalScale);
      if (material.side == BackSide) {
        uniforms["clearcoatNormalScale"]["value"].negate();
      }
    }
  }

		if (material is MeshPhysicalMaterial &&  material.dispersion > 0 ) {
			uniforms['dispersion']['value'] = material.dispersion;
		}

		if (material is MeshPhysicalMaterial && material.iridescence > 0 ) {
			uniforms['iridescence']['value'] = material.iridescence;
			uniforms['iridescenceIOR']['value'] = material.iridescenceIOR;
			uniforms['iridescenceThicknessMinimum']['value'] = material.iridescenceThicknessRange[ 0 ];
			uniforms['iridescenceThicknessMaximum']['value'] = material.iridescenceThicknessRange[ 1 ];

			if ( material.iridescenceMap != null) {
				uniforms['iridescenceMap']['value'] = material.iridescenceMap;
				refreshTransformUniform( material.iridescenceMap!, uniforms['iridescenceMapTransform'] );
			}

			if ( material.iridescenceThicknessMap != null) {
				uniforms['iridescenceThicknessMap']['value'] = material.iridescenceThicknessMap;
				refreshTransformUniform( material.iridescenceThicknessMap!, uniforms['iridescenceThicknessMapTransform'] );
			}
		}

  if (material.transmission > 0) {
    uniforms["transmission"]["value"] = material.transmission;
    uniforms["transmissionSamplerMap"]["value"] = transmissionRenderTarget?.texture;
    uniforms["transmissionSamplerSize"]["value"].setValues(transmissionRenderTarget?.width.toDouble() ?? 0.0, transmissionRenderTarget?.height.toDouble() ?? 0.0);

    if (material.transmissionMap != null) {
      uniforms["transmissionMap"]["value"] = material.transmissionMap;
      refreshTransformUniform( material.transmissionMap, uniforms['transmissionMapTransform'] );
    }

    uniforms["thickness"]["value"] = material.thickness;

    if (material.thicknessMap != null) {
      uniforms["thicknessMap"]["value"] = material.thicknessMap;
      refreshTransformUniform( material.thicknessMap!, uniforms['thicknessMapTransform'] );
    }

    uniforms["attenuationDistance"]["value"] = material.attenuationDistance;
    uniforms["attenuationColor"]["value"].setFrom(material.attenuationColor);
  }

		if (material is MeshPhysicalMaterial && material.anisotropy > 0 ) {
			uniforms['anisotropyVector']['value'].setValues( material.anisotropy * math.cos( material.anisotropyRotation ), material.anisotropy * math.sin( material.anisotropyRotation ) );
			if ( material.anisotropyMap != null) {
				uniforms['anisotropyMap']['value'] = material.anisotropyMap;
				refreshTransformUniform( material.anisotropyMap!, uniforms['anisotropyMapTransform'] );
			}
		}

  uniforms["specularIntensity"]["value"] = material.specularIntensity;
  uniforms["attenuationColor"]["value"].setFrom(material.attenuationColor);
  if (material.specularColorMap != null) {
    uniforms["specularColorMap"]["value"] = material.specularColorMap;
    refreshTransformUniform( material.specularColorMap!, uniforms['specularColorMapTransform'] );
  }
  if (material.specularIntensityMap != null) {
    uniforms["specularIntensityMap"]["value"] = material.specularIntensityMap;
    refreshTransformUniform( material.specularIntensityMap!, uniforms['specularIntensityMapTransform'] );
  }
}