refreshUniformsPhysical method
void
refreshUniformsPhysical(
- Map<
String, dynamic> uniforms, - Material material,
- 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'] );
}
}