|
@@ -6,6 +6,7 @@ import {
|
|
|
BufferGeometry,
|
|
|
ClampToEdgeWrapping,
|
|
|
Color,
|
|
|
+ ColorManagement,
|
|
|
DirectionalLight,
|
|
|
DoubleSide,
|
|
|
FileLoader,
|
|
@@ -25,6 +26,7 @@ import {
|
|
|
LinearFilter,
|
|
|
LinearMipmapLinearFilter,
|
|
|
LinearMipmapNearestFilter,
|
|
|
+ LinearSRGBColorSpace,
|
|
|
Loader,
|
|
|
LoaderUtils,
|
|
|
Material,
|
|
@@ -545,7 +547,7 @@ class GLTFLightsExtension {
|
|
|
|
|
|
const color = new Color( 0xffffff );
|
|
|
|
|
|
- if ( lightDef.color !== undefined ) color.fromArray( lightDef.color );
|
|
|
+ if ( lightDef.color !== undefined ) color.setRGB( ...lightDef.color, LinearSRGBColorSpace );
|
|
|
|
|
|
const range = lightDef.range !== undefined ? lightDef.range : 0;
|
|
|
|
|
@@ -663,7 +665,7 @@ class GLTFMaterialsUnlitExtension {
|
|
|
|
|
|
const array = metallicRoughness.baseColorFactor;
|
|
|
|
|
|
- materialParams.color.fromArray( array );
|
|
|
+ materialParams.color.setRGB( ...array, LinearSRGBColorSpace );
|
|
|
materialParams.opacity = array[ 3 ];
|
|
|
|
|
|
}
|
|
@@ -939,7 +941,7 @@ class GLTFMaterialsSheenExtension {
|
|
|
|
|
|
if ( extension.sheenColorFactor !== undefined ) {
|
|
|
|
|
|
- materialParams.sheenColor.fromArray( extension.sheenColorFactor );
|
|
|
+ materialParams.sheenColor.setRGB( ...extension.sheenColorFactor, LinearSRGBColorSpace );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -1077,7 +1079,7 @@ class GLTFMaterialsVolumeExtension {
|
|
|
materialParams.attenuationDistance = extension.attenuationDistance || Infinity;
|
|
|
|
|
|
const colorArray = extension.attenuationColor || [ 1, 1, 1 ];
|
|
|
- materialParams.attenuationColor = new Color( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ] );
|
|
|
+ materialParams.attenuationColor = new Color().setRGB( ...colorArray, LinearSRGBColorSpace );
|
|
|
|
|
|
return Promise.all( pending );
|
|
|
|
|
@@ -1180,7 +1182,7 @@ class GLTFMaterialsSpecularExtension {
|
|
|
}
|
|
|
|
|
|
const colorArray = extension.specularColorFactor || [ 1, 1, 1 ];
|
|
|
- materialParams.specularColor = new Color( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ] );
|
|
|
+ materialParams.specularColor = new Color().setRGB( ...colorArray, LinearSRGBColorSpace );
|
|
|
|
|
|
if ( extension.specularColorTexture !== undefined ) {
|
|
|
|
|
@@ -3386,7 +3388,7 @@ class GLTFParser {
|
|
|
|
|
|
const array = metallicRoughness.baseColorFactor;
|
|
|
|
|
|
- materialParams.color.fromArray( array );
|
|
|
+ materialParams.color.setRGB( array[ 0 ], array[ 1 ], array[ 2 ], LinearSRGBColorSpace );
|
|
|
materialParams.opacity = array[ 3 ];
|
|
|
|
|
|
}
|
|
@@ -3478,7 +3480,7 @@ class GLTFParser {
|
|
|
|
|
|
if ( materialDef.emissiveFactor !== undefined && materialType !== MeshBasicMaterial ) {
|
|
|
|
|
|
- materialParams.emissive = new Color().fromArray( materialDef.emissiveFactor );
|
|
|
+ materialParams.emissive = new Color().setRGB( ...materialDef.emissiveFactor, LinearSRGBColorSpace );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -4559,6 +4561,12 @@ function addPrimitiveAttributes( geometry, primitiveDef, parser ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ if ( ColorManagement.workingColorSpace !== LinearSRGBColorSpace && 'COLOR_0' in attributes ) {
|
|
|
+
|
|
|
+ console.warn( `THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${ColorManagement.workingColorSpace}" not supported.` );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
assignExtrasToUserData( geometry, primitiveDef );
|
|
|
|
|
|
computeBounds( geometry, primitiveDef, parser );
|