|
@@ -542,12 +542,12 @@ class FBXTreeParser {
|
|
|
|
|
|
if ( materialNode.Diffuse ) {
|
|
if ( materialNode.Diffuse ) {
|
|
|
|
|
|
- parameters.color = new Color().fromArray( materialNode.Diffuse.value );
|
|
|
|
|
|
+ parameters.color = new Color().fromArray( materialNode.Diffuse.value ).convertSRGBToLinear();
|
|
|
|
|
|
} else if ( materialNode.DiffuseColor && ( materialNode.DiffuseColor.type === 'Color' || materialNode.DiffuseColor.type === 'ColorRGB' ) ) {
|
|
} else if ( materialNode.DiffuseColor && ( materialNode.DiffuseColor.type === 'Color' || materialNode.DiffuseColor.type === 'ColorRGB' ) ) {
|
|
|
|
|
|
// The blender exporter exports diffuse here instead of in materialNode.Diffuse
|
|
// The blender exporter exports diffuse here instead of in materialNode.Diffuse
|
|
- parameters.color = new Color().fromArray( materialNode.DiffuseColor.value );
|
|
|
|
|
|
+ parameters.color = new Color().fromArray( materialNode.DiffuseColor.value ).convertSRGBToLinear();
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -559,12 +559,12 @@ class FBXTreeParser {
|
|
|
|
|
|
if ( materialNode.Emissive ) {
|
|
if ( materialNode.Emissive ) {
|
|
|
|
|
|
- parameters.emissive = new Color().fromArray( materialNode.Emissive.value );
|
|
|
|
|
|
+ parameters.emissive = new Color().fromArray( materialNode.Emissive.value ).convertSRGBToLinear();
|
|
|
|
|
|
} else if ( materialNode.EmissiveColor && ( materialNode.EmissiveColor.type === 'Color' || materialNode.EmissiveColor.type === 'ColorRGB' ) ) {
|
|
} else if ( materialNode.EmissiveColor && ( materialNode.EmissiveColor.type === 'Color' || materialNode.EmissiveColor.type === 'ColorRGB' ) ) {
|
|
|
|
|
|
// The blender exporter exports emissive color here instead of in materialNode.Emissive
|
|
// The blender exporter exports emissive color here instead of in materialNode.Emissive
|
|
- parameters.emissive = new Color().fromArray( materialNode.EmissiveColor.value );
|
|
|
|
|
|
+ parameters.emissive = new Color().fromArray( materialNode.EmissiveColor.value ).convertSRGBToLinear();
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -600,12 +600,12 @@ class FBXTreeParser {
|
|
|
|
|
|
if ( materialNode.Specular ) {
|
|
if ( materialNode.Specular ) {
|
|
|
|
|
|
- parameters.specular = new Color().fromArray( materialNode.Specular.value );
|
|
|
|
|
|
+ parameters.specular = new Color().fromArray( materialNode.Specular.value ).convertSRGBToLinear();
|
|
|
|
|
|
} else if ( materialNode.SpecularColor && materialNode.SpecularColor.type === 'Color' ) {
|
|
} else if ( materialNode.SpecularColor && materialNode.SpecularColor.type === 'Color' ) {
|
|
|
|
|
|
// The blender exporter exports specular color here instead of in materialNode.Specular
|
|
// The blender exporter exports specular color here instead of in materialNode.Specular
|
|
- parameters.specular = new Color().fromArray( materialNode.SpecularColor.value );
|
|
|
|
|
|
+ parameters.specular = new Color().fromArray( materialNode.SpecularColor.value ).convertSRGBToLinear();
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1153,7 +1153,7 @@ class FBXTreeParser {
|
|
|
|
|
|
if ( lightAttribute.Color !== undefined ) {
|
|
if ( lightAttribute.Color !== undefined ) {
|
|
|
|
|
|
- color = new Color().fromArray( lightAttribute.Color.value );
|
|
|
|
|
|
+ color = new Color().fromArray( lightAttribute.Color.value ).convertSRGBToLinear();
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1469,7 +1469,7 @@ class FBXTreeParser {
|
|
|
|
|
|
if ( r !== 0 || g !== 0 || b !== 0 ) {
|
|
if ( r !== 0 || g !== 0 || b !== 0 ) {
|
|
|
|
|
|
- const color = new Color( r, g, b );
|
|
|
|
|
|
+ const color = new Color( r, g, b ).convertSRGBToLinear();
|
|
sceneGraph.add( new AmbientLight( color, 1 ) );
|
|
sceneGraph.add( new AmbientLight( color, 1 ) );
|
|
|
|
|
|
}
|
|
}
|
|
@@ -2217,6 +2217,12 @@ class GeometryParser {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ for ( let i = 0, c = new Color(); i < buffer.length; i += 4 ) {
|
|
|
|
+
|
|
|
|
+ c.fromArray( buffer, i ).convertSRGBToLinear().toArray( buffer, i );
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
return {
|
|
return {
|
|
dataSize: 4,
|
|
dataSize: 4,
|
|
buffer: buffer,
|
|
buffer: buffer,
|