Browse Source

MeshPhysicalMaterial: Renamed attenuationColor to attenuation. (#22206)

Mr.doob 4 years ago
parent
commit
6249aaa1b5

+ 1 - 1
examples/jsm/loaders/GLTFLoader.js

@@ -814,7 +814,7 @@ class GLTFMaterialsVolumeExtension {
 		materialParams.attenuationDistance = extension.attenuationDistance || 0;
 
 		const colorArray = extension.attenuationColor || [ 1, 1, 1 ];
-		materialParams.attenuationColor = new Color( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ] );
+		materialParams.attenuation = new Color( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ] );
 
 		return Promise.all( pending );
 

+ 1 - 1
src/loaders/MaterialLoader.js

@@ -84,8 +84,8 @@ class MaterialLoader extends Loader {
 		if ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;
 		if ( json.transmission !== undefined ) material.transmission = json.transmission;
 		if ( json.thickness !== undefined ) material.thickness = json.thickness;
+		if ( json.attenuation !== undefined && material.attenuation !== undefined ) material.attenuation.setHex( json.attenuation );
 		if ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance;
-		if ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor );
 		if ( json.fog !== undefined ) material.fog = json.fog;
 		if ( json.flatShading !== undefined ) material.flatShading = json.flatShading;
 		if ( json.blending !== undefined ) material.blending = json.blending;

+ 1 - 1
src/materials/Material.js

@@ -270,8 +270,8 @@ class Material extends EventDispatcher {
 		if ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;
 		if ( this.thickness !== undefined ) data.thickness = this.thickness;
 		if ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;
+		if ( this.attenuation !== undefined ) data.attenuation = this.attenuation.getHex();
 		if ( this.attenuationDistance !== undefined ) data.attenuationDistance = this.attenuationDistance;
-		if ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();
 
 		if ( this.size !== undefined ) data.size = this.size;
 		if ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;

+ 3 - 3
src/materials/MeshPhysicalMaterial.js

@@ -22,8 +22,8 @@ import * as MathUtils from '../math/MathUtils.js';
  *
  *  thickness: <float>,
  *  thicknessMap: new THREE.Texture( <Image> ),
+ *  attenuation: <Color>,
  *  attenuationDistance: <float>,
- *  attenuationColor: <Color>,
  *
  *  specularIntensity: <float>,
  *  specularIntensityhMap: new THREE.Texture( <Image> ),
@@ -76,8 +76,8 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
 
 		this.thickness = 0.01;
 		this.thicknessMap = null;
+		this.attenuation = new Color( 1, 1, 1 );
 		this.attenuationDistance = 0.0;
-		this.attenuationColor = new Color( 1, 1, 1 );
 
 		this.specularIntensity = 1.0;
 		this.specularIntensityMap = null;
@@ -123,8 +123,8 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
 
 		this.thickness = source.thickness;
 		this.thicknessMap = source.thicknessMap;
+		this.attenuation.copy( source.attenuation );
 		this.attenuationDistance = source.attenuationDistance;
-		this.attenuationColor.copy( source.attenuationColor );
 
 		this.specularIntensity = source.specularIntensity;
 		this.specularIntensityMap = source.specularIntensityMap;

+ 1 - 1
src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js

@@ -23,7 +23,7 @@ export default /* glsl */`
 	vec3 transmission = transmissionFactor * getIBLVolumeRefraction(
 		normal, v, roughnessFactor, material.diffuseColor, material.specularColor,
 		pos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,
-		attenuationColor, attenuationDistance );
+		attenuation, attenuationDistance );
 
 	totalDiffuse = mix( totalDiffuse, transmission, transmissionFactor );
 #endif

+ 1 - 1
src/renderers/shaders/ShaderLib.js

@@ -303,8 +303,8 @@ ShaderLib.physical = {
 			transmissionSamplerMap: { value: null },
 			thickness: { value: 0 },
 			thicknessMap: { value: null },
+			attenuation: { value: new Color( 0x000000 ) },
 			attenuationDistance: { value: 0 },
-			attenuationColor: { value: new Color( 0x000000 ) },
 			specularIntensity: { value: 0 },
 			specularIntensityMap: { value: null },
 			specularTint: { value: new Color( 1, 1, 1 ) },

+ 1 - 1
src/renderers/shaders/ShaderLib/meshphysical_frag.glsl.js

@@ -16,7 +16,7 @@ uniform float opacity;
 #ifdef USE_TRANSMISSION
 	uniform float transmission;
 	uniform float thickness;
-	uniform vec3 attenuationColor;
+	uniform vec3 attenuation;
 	uniform float attenuationDistance;
 #endif
 

+ 1 - 1
src/renderers/webgl/WebGLMaterials.js

@@ -622,8 +622,8 @@ function WebGLMaterials( properties ) {
 
 		}
 
+		uniforms.attenuation.value.copy( material.attenuation );
 		uniforms.attenuationDistance.value = material.attenuationDistance;
-		uniforms.attenuationColor.value.copy( material.attenuationColor );
 
 		uniforms.specularIntensity.value = material.specularIntensity;
 		uniforms.specularTint.value.copy( material.specularTint );