diff --git a/Assets/VRMShaders/GLTF/IO/Editor/EditorTextureSerializer.cs b/Assets/VRMShaders/GLTF/IO/Editor/EditorTextureSerializer.cs index 0314c451c..3e5134b74 100644 --- a/Assets/VRMShaders/GLTF/IO/Editor/EditorTextureSerializer.cs +++ b/Assets/VRMShaders/GLTF/IO/Editor/EditorTextureSerializer.cs @@ -19,7 +19,7 @@ namespace VRMShaders /// * TextureImporter の maxSize /// /// - public bool CanExportAsEditorAssetFile(Texture texture) + public bool CanExportAsEditorAssetFile(Texture texture, ColorSpace exportColorSpace) { if (texture is Texture2D texture2D && !string.IsNullOrEmpty(UnityEditor.AssetDatabase.GetAssetPath(texture2D))) { @@ -42,14 +42,14 @@ namespace VRMShaders return false; } - public (byte[] bytes, string mime) ExportBytesWithMime(Texture2D texture, ColorSpace textureColorSpace) + public (byte[] bytes, string mime) ExportBytesWithMime(Texture2D texture, ColorSpace exportColorSpace) { - if (CanExportAsEditorAssetFile(texture) && TryGetBytesWithMime(texture, out byte[] bytes, out string mime)) + if (CanExportAsEditorAssetFile(texture, exportColorSpace) && TryGetBytesWithMime(texture, out byte[] bytes, out string mime)) { return (bytes, mime); } - return m_runtimeSerializer.ExportBytesWithMime(texture, textureColorSpace); + return m_runtimeSerializer.ExportBytesWithMime(texture, exportColorSpace); } /// diff --git a/Assets/VRMShaders/GLTF/IO/Runtime/ITextureSerializer.cs b/Assets/VRMShaders/GLTF/IO/Runtime/ITextureSerializer.cs index ac26d6c74..de5e77554 100644 --- a/Assets/VRMShaders/GLTF/IO/Runtime/ITextureSerializer.cs +++ b/Assets/VRMShaders/GLTF/IO/Runtime/ITextureSerializer.cs @@ -10,16 +10,17 @@ namespace UniGLTF /// /// Texture をファイルのバイト列そのまま出力してよいかどうか判断する。 /// + /// exportColorSpace はその Texture2D がアサインされる glTF プロパティの仕様が定める色空間を指定する。 /// Runtime 出力では常に false が望ましい。 /// - bool CanExportAsEditorAssetFile(Texture texture); + bool CanExportAsEditorAssetFile(Texture texture, ColorSpace exportColorSpace); /// /// Texture2D から実際のバイト列を取得する。 /// - /// textureColorSpace はその Texture2D がアサインされる glTF プロパティの仕様が定める色空間を指定する。 + /// exportColorSpace はその Texture2D がアサインされる glTF プロパティの仕様が定める色空間を指定する。 /// 具体的には Texture2D をコピーする際に、コピー先の Texture2D の色空間を決定するために使用する。 /// - (byte[] bytes, string mime) ExportBytesWithMime(Texture2D texture, ColorSpace textureColorSpace); + (byte[] bytes, string mime) ExportBytesWithMime(Texture2D texture, ColorSpace exportColorSpace); } } diff --git a/Assets/VRMShaders/GLTF/IO/Runtime/RuntimeTextureSerializer.cs b/Assets/VRMShaders/GLTF/IO/Runtime/RuntimeTextureSerializer.cs index 0126c5395..d90f830b0 100644 --- a/Assets/VRMShaders/GLTF/IO/Runtime/RuntimeTextureSerializer.cs +++ b/Assets/VRMShaders/GLTF/IO/Runtime/RuntimeTextureSerializer.cs @@ -6,12 +6,12 @@ namespace UniGLTF { public sealed class RuntimeTextureSerializer : ITextureSerializer { - public bool CanExportAsEditorAssetFile(Texture texture) + public bool CanExportAsEditorAssetFile(Texture texture, ColorSpace exportColorSpace) { return false; } - public (byte[] bytes, string mime) ExportBytesWithMime(Texture2D texture, ColorSpace textureColorSpace) + public (byte[] bytes, string mime) ExportBytesWithMime(Texture2D texture, ColorSpace exportColorSpace) { try { @@ -24,7 +24,7 @@ namespace UniGLTF { // Failed, because texture is compressed. // ex. ".DDS" file, or Compression is enabled in Texture Import Settings. - return CopyTextureAndGetBytesWithMime(texture, textureColorSpace); + return CopyTextureAndGetBytesWithMime(texture, exportColorSpace); } } catch (ArgumentException ex) @@ -35,7 +35,7 @@ namespace UniGLTF Debug.LogWarning(ex); // 単純に EncodeToPNG できないため、コピーしてから EncodeToPNG する。 - return CopyTextureAndGetBytesWithMime(texture, textureColorSpace); + return CopyTextureAndGetBytesWithMime(texture, exportColorSpace); } } diff --git a/Assets/VRMShaders/GLTF/IO/Runtime/TextureExporter.cs b/Assets/VRMShaders/GLTF/IO/Runtime/TextureExporter.cs index 5688362c4..69d45553a 100644 --- a/Assets/VRMShaders/GLTF/IO/Runtime/TextureExporter.cs +++ b/Assets/VRMShaders/GLTF/IO/Runtime/TextureExporter.cs @@ -78,7 +78,7 @@ namespace VRMShaders // get Texture2D index = m_exported.Count; var texture2D = src as Texture2D; - if (m_textureSerializer.CanExportAsEditorAssetFile(texture2D)) + if (m_textureSerializer.CanExportAsEditorAssetFile(texture2D, ColorSpace.sRGB)) { // do nothing } @@ -114,7 +114,7 @@ namespace VRMShaders index = m_exported.Count; var texture2d = src as Texture2D; - if (m_textureSerializer.CanExportAsEditorAssetFile(texture2d)) + if (m_textureSerializer.CanExportAsEditorAssetFile(texture2d, ColorSpace.Linear)) { // do nothing } @@ -193,7 +193,7 @@ namespace VRMShaders // get Texture2D index = m_exported.Count; var texture2D = src as Texture2D; - if (m_textureSerializer.CanExportAsEditorAssetFile(texture2D)) + if (m_textureSerializer.CanExportAsEditorAssetFile(texture2D, ColorSpace.Linear)) { // EditorAsset を使うので変換不要 }