From 5c638c4d7b59316917e4bfbfb0c97e02aaa8d63d Mon Sep 17 00:00:00 2001 From: Don McCurdy Date: Wed, 9 Aug 2023 04:05:17 -0400 Subject: [PATCH] MMDLoader: Apply color management to textures. (#26554) --- examples/jsm/loaders/MMDLoader.js | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/examples/jsm/loaders/MMDLoader.js b/examples/jsm/loaders/MMDLoader.js index 00b336c4787741..1b0c2dad972cf6 100644 --- a/examples/jsm/loaders/MMDLoader.js +++ b/examples/jsm/loaders/MMDLoader.js @@ -27,6 +27,7 @@ import { Skeleton, SkinnedMesh, SrcAlphaFactor, + SRGBColorSpace, TextureLoader, Uint16BufferAttribute, Vector3, @@ -1133,17 +1134,18 @@ class MaterialBuilder { * MMDToonMaterial doesn't have ambient. Set it to emissive instead. * It'll be too bright if material has map texture so using coef 0.2. */ - params.diffuse = new Color().fromArray( material.diffuse ); + params.diffuse = new Color().setRGB( + material.diffuse[ 0 ], + material.diffuse[ 1 ], + material.diffuse[ 2 ], + SRGBColorSpace + ); params.opacity = material.diffuse[ 3 ]; - params.specular = new Color().fromArray( material.specular ); + params.specular = new Color().setRGB( ...material.specular, SRGBColorSpace ); params.shininess = material.shininess; - params.emissive = new Color().fromArray( material.ambient ); + params.emissive = new Color().setRGB( ...material.ambient, SRGBColorSpace ); params.transparent = params.opacity !== 1.0; - params.diffuse.convertSRGBToLinear(); - params.specular.convertSRGBToLinear(); - params.emissive.convertSRGBToLinear(); - // params.fog = true; @@ -1452,6 +1454,7 @@ class MaterialBuilder { t.flipY = false; t.wrapS = RepeatWrapping; t.wrapT = RepeatWrapping; + t.colorSpace = SRGBColorSpace; for ( let i = 0; i < texture.readyCallbacks.length; i ++ ) {