From 5adce2dbe832cca9b49d69f65f0ddbdd8425f5f8 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Wed, 31 Mar 2021 14:19:49 +0900 Subject: [PATCH] =?UTF-8?q?VRMShaders=20=E3=81=AB=E3=83=86=E3=82=B9?= =?UTF-8?q?=E3=83=88=E7=A7=BB=E5=8B=95=E3=80=82IsReadable=3Dfalse=20?= =?UTF-8?q?=E3=81=AE=E3=81=A8=E3=81=8D=E3=81=AB=E3=82=B3=E3=83=94=E3=83=BC?= =?UTF-8?q?=E3=81=97=E3=81=AA=E3=81=84=E3=81=A8=E3=82=A8=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E3=81=AB=E3=81=AA=E3=82=8B=E3=83=86=E3=82=B9=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IO/TextureIO/GltfTextureExporter.cs | 2 +- Assets/UniGLTF/Tests/Resources.meta | 8 ++ Assets/UniGLTF/Tests/Resources/4x4.png | Bin 0 -> 560 bytes Assets/UniGLTF/Tests/Resources/4x4.png.meta | 88 +++++++++++++++++ Assets/UniGLTF/Tests/UniGLTF/Resources.meta | 8 ++ .../UniGLTF/Tests/UniGLTF/Resources/4x4.png | Bin 0 -> 560 bytes .../Tests/UniGLTF/Resources/4x4.png.meta | 88 +++++++++++++++++ .../Tests/UniGLTF/Resources/4x4compressed.DDS | Bin 0 -> 152 bytes .../UniGLTF/Resources/4x4compressed.DDS.meta | 19 ++++ Assets/UniGLTF/Tests/UniGLTF/TextureTests.cs | 91 +++-------------- Assets/VRMShaders/Tests.meta | 8 ++ .../Tests/MetallicRoughnessConverterTests.cs | 93 ++++++++++++++++++ .../MetallicRoughnessConverterTests.cs.meta | 11 +++ .../VRMShaders/Tests/VRMShaders.Tests.asmdef | 18 ++++ .../Tests/VRMShaders.Tests.asmdef.meta | 7 ++ 15 files changed, 360 insertions(+), 81 deletions(-) create mode 100644 Assets/UniGLTF/Tests/Resources.meta create mode 100644 Assets/UniGLTF/Tests/Resources/4x4.png create mode 100644 Assets/UniGLTF/Tests/Resources/4x4.png.meta create mode 100644 Assets/UniGLTF/Tests/UniGLTF/Resources.meta create mode 100644 Assets/UniGLTF/Tests/UniGLTF/Resources/4x4.png create mode 100644 Assets/UniGLTF/Tests/UniGLTF/Resources/4x4.png.meta create mode 100644 Assets/UniGLTF/Tests/UniGLTF/Resources/4x4compressed.DDS create mode 100644 Assets/UniGLTF/Tests/UniGLTF/Resources/4x4compressed.DDS.meta create mode 100644 Assets/VRMShaders/Tests.meta create mode 100644 Assets/VRMShaders/Tests/MetallicRoughnessConverterTests.cs create mode 100644 Assets/VRMShaders/Tests/MetallicRoughnessConverterTests.cs.meta create mode 100644 Assets/VRMShaders/Tests/VRMShaders.Tests.asmdef create mode 100644 Assets/VRMShaders/Tests/VRMShaders.Tests.asmdef.meta diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/TextureIO/GltfTextureExporter.cs b/Assets/UniGLTF/Runtime/UniGLTF/IO/TextureIO/GltfTextureExporter.cs index 179a3be26..7ef729c71 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/IO/TextureIO/GltfTextureExporter.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/TextureIO/GltfTextureExporter.cs @@ -13,7 +13,7 @@ namespace UniGLTF /// /// /// - static (byte[] bytes, string mine) GetBytesWithMime(Texture2D texture) + public static (byte[] bytes, string mine) GetBytesWithMime(Texture2D texture) { #if UNITY_EDITOR var path = UnityPath.FromAsset(texture); diff --git a/Assets/UniGLTF/Tests/Resources.meta b/Assets/UniGLTF/Tests/Resources.meta new file mode 100644 index 000000000..c6b5a4bfd --- /dev/null +++ b/Assets/UniGLTF/Tests/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ee977e7fc2164bd408c27953f01dd8f1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/UniGLTF/Tests/Resources/4x4.png b/Assets/UniGLTF/Tests/Resources/4x4.png new file mode 100644 index 0000000000000000000000000000000000000000..732ecd83ab3dde5a56c9f8cb8fd1e2c9daf4f72c GIT binary patch literal 560 zcmV-00?+-4P)EX>4Tx04R}tkv&MmP!xqvQ%glE4t5YJn4vmZ5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`o12rOimr&?r8EJaJd5vJ?WAmIg+22P%HxPXY@^ZVDJ{`TXW~uKF8?;kfm8I-v9@P zz*vd0*FE0d+da2`d)o8+0XEZek5q5Bk^lez32;bRa{vG?BLDy{BLR4&KXw2B00(qQ zO+^Rg10Mwj5@xRntpET38FWQhbVF}#ZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b y02xU{K~xCWV_-l6jP>>Pa1IlS%>V!Y;T!;1j0As$a4%f|0000EX>4Tx04R}tkv&MmP!xqvQ%glE4t5YJn4vmZ5EXHhDi*;)X)CnqVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`o12rOimr&?r8EJaJd5vJ?WAmIg+22P%HxPXY@^ZVDJ{`TXW~uKF8?;kfm8I-v9@P zz*vd0*FE0d+da2`d)o8+0XEZek5q5Bk^lez32;bRa{vG?BLDy{BLR4&KXw2B00(qQ zO+^Rg10Mwj5@xRntpET38FWQhbVF}#ZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b y02xU{K~xCWV_-l6jP>>Pa1IlS%>V!Y;T!;1j0As$a4%f|0000930A0KU|?Vu;9_6_(jd$M#Ed}948)`W1)yS(ewT<4Lu~pu1ROAg|NlQM5&Hi> U!}q-$PN58;4DYMoSA!G*00Phr@&Et; literal 0 HcmV?d00001 diff --git a/Assets/UniGLTF/Tests/UniGLTF/Resources/4x4compressed.DDS.meta b/Assets/UniGLTF/Tests/UniGLTF/Resources/4x4compressed.DDS.meta new file mode 100644 index 000000000..ef44f51d6 --- /dev/null +++ b/Assets/UniGLTF/Tests/UniGLTF/Resources/4x4compressed.DDS.meta @@ -0,0 +1,19 @@ +fileFormatVersion: 2 +guid: e1e26504b87027940bfbd21ea1327ff6 +IHVImageFormatImporter: + externalObjects: {} + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + isReadable: 0 + sRGBTexture: 1 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/UniGLTF/Tests/UniGLTF/TextureTests.cs b/Assets/UniGLTF/Tests/UniGLTF/TextureTests.cs index c99e97696..938359013 100644 --- a/Assets/UniGLTF/Tests/UniGLTF/TextureTests.cs +++ b/Assets/UniGLTF/Tests/UniGLTF/TextureTests.cs @@ -31,93 +31,24 @@ namespace UniGLTF Assert.AreEqual(glFilter.LINEAR_MIPMAP_LINEAR, sampler.minFilter); Assert.AreEqual(glFilter.LINEAR_MIPMAP_LINEAR, sampler.magFilter); } - } - public class MetallicRoughnessConverterTests - { + [Test] - public void ExportingColorTest() + public void NotReadable() { - { - var smoothness = 1.0f; - Assert.That( - OcclusionMetallicRoughnessConverter.ExportPixel(new Color32(255, 255, 255, 255), smoothness, default), - // r <- 0 : (Unused) - // g <- 0 : ((1 - src.a(as float) * smoothness) ^ 2)(as uint8) - // b <- 255 : Same metallic (src.r) - // a <- 255 : (Unused) - Is.EqualTo(new Color32(0, 0, 255, 255))); - } - - { - var smoothness = 0.5f; - Assert.That( - OcclusionMetallicRoughnessConverter.ExportPixel(new Color32(255, 255, 255, 255), smoothness, default), - // r <- 0 : (Unused) - // g <- 63 : ((1 - src.a(as float) * smoothness) ^ 2)(as uint8) - // b <- 255 : Same metallic (src.r) - // a <- 255 : (Unused) - Is.EqualTo(new Color32(0, 127, 255, 255))); - } - - { - var smoothness = 0.0f; - Assert.That( - OcclusionMetallicRoughnessConverter.ExportPixel(new Color32(255, 255, 255, 255), smoothness, default), - // r <- 0 : (Unused) - // g <- 255 : ((1 - src.a(as float) * smoothness) ^ 2)(as uint8) - // b <- 255 : Same metallic (src.r) - // a <- 255 : (Unused) - Is.EqualTo(new Color32(0, 255, 255, 255))); - } + var readonlyTexture = Resources.Load("4x4"); + Assert.False(readonlyTexture.isReadable); + var (bytes, mime) = GltfTextureExporter.GetBytesWithMime(readonlyTexture); + Assert.NotNull(bytes); } [Test] - public void ImportingColorTest() + public void Compressed() { - { - var roughnessFactor = 1.0f; - Assert.That( - OcclusionMetallicRoughnessConverter.ImportPixel(new Color32(255, 255, 255, 255), 1.0f, roughnessFactor, default), - // r <- 255 : Same metallic (src.r) - // g <- 0 : (Unused) - // b <- 0 : (Unused) - // a <- 0 : ((1 - sqrt(src.g(as float) * roughnessFactor)))(as uint8) - Is.EqualTo(new Color32(255, 0, 0, 0))); - } - - { - var roughnessFactor = 1.0f; - Assert.That( - OcclusionMetallicRoughnessConverter.ImportPixel(new Color32(255, 128, 255, 255), 1.0f, roughnessFactor, default), - // r <- 255 : Same metallic (src.r) - // g <- 0 : (Unused) - // b <- 0 : (Unused) - // a <- 128 : ((1 - sqrt(src.g(as float) * roughnessFactor)))(as uint8) - Is.EqualTo(new Color32(255, 0, 0, 127))); // smoothness 0.5 * src.a 1.0 - } - - { - var roughnessFactor = 0.5f; - Assert.That( - OcclusionMetallicRoughnessConverter.ImportPixel(new Color32(255, 255, 255, 255), 1.0f, roughnessFactor, default), - // r <- 255 : Same metallic (src.r) - // g <- 0 : (Unused) - // b <- 0 : (Unused) - // a <- 74 : ((1 - sqrt(src.g(as float) * roughnessFactor)))(as uint8) - Is.EqualTo(new Color32(255, 0, 0, 127))); - } - - { - var roughnessFactor = 0.0f; - Assert.That( - OcclusionMetallicRoughnessConverter.ImportPixel(new Color32(255, 255, 255, 255), 1.0f, roughnessFactor, default), - // r <- 255 : Same metallic (src.r) - // g <- 0 : (Unused) - // b <- 0 : (Unused) - // a <- 255 : ((1 - sqrt(src.g(as float) * roughnessFactor)))(as uint8) - Is.EqualTo(new Color32(255, 0, 0, 255))); - } + var readonlyTexture = Resources.Load("4x4compressed"); + Assert.False(readonlyTexture.isReadable); + var (bytes, mime) = GltfTextureExporter.GetBytesWithMime(readonlyTexture); + Assert.NotNull(bytes); } } } diff --git a/Assets/VRMShaders/Tests.meta b/Assets/VRMShaders/Tests.meta new file mode 100644 index 000000000..918f681e5 --- /dev/null +++ b/Assets/VRMShaders/Tests.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7b9c0681fd83aa3439d3221de54fdacf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/VRMShaders/Tests/MetallicRoughnessConverterTests.cs b/Assets/VRMShaders/Tests/MetallicRoughnessConverterTests.cs new file mode 100644 index 000000000..1f79152f9 --- /dev/null +++ b/Assets/VRMShaders/Tests/MetallicRoughnessConverterTests.cs @@ -0,0 +1,93 @@ +using NUnit.Framework; +using UnityEngine; + +namespace VRMShaders +{ + public class MetallicRoughnessConverterTests + { + [Test] + public void ExportingColorTest() + { + { + var smoothness = 1.0f; + Assert.That( + OcclusionMetallicRoughnessConverter.ExportPixel(new Color32(255, 255, 255, 255), smoothness, default), + // r <- 0 : (Unused) + // g <- 0 : ((1 - src.a(as float) * smoothness) ^ 2)(as uint8) + // b <- 255 : Same metallic (src.r) + // a <- 255 : (Unused) + Is.EqualTo(new Color32(0, 0, 255, 255))); + } + + { + var smoothness = 0.5f; + Assert.That( + OcclusionMetallicRoughnessConverter.ExportPixel(new Color32(255, 255, 255, 255), smoothness, default), + // r <- 0 : (Unused) + // g <- 63 : ((1 - src.a(as float) * smoothness) ^ 2)(as uint8) + // b <- 255 : Same metallic (src.r) + // a <- 255 : (Unused) + Is.EqualTo(new Color32(0, 127, 255, 255))); + } + + { + var smoothness = 0.0f; + Assert.That( + OcclusionMetallicRoughnessConverter.ExportPixel(new Color32(255, 255, 255, 255), smoothness, default), + // r <- 0 : (Unused) + // g <- 255 : ((1 - src.a(as float) * smoothness) ^ 2)(as uint8) + // b <- 255 : Same metallic (src.r) + // a <- 255 : (Unused) + Is.EqualTo(new Color32(0, 255, 255, 255))); + } + } + + [Test] + public void ImportingColorTest() + { + { + var roughnessFactor = 1.0f; + Assert.That( + OcclusionMetallicRoughnessConverter.ImportPixel(new Color32(255, 255, 255, 255), 1.0f, roughnessFactor, default), + // r <- 255 : Same metallic (src.r) + // g <- 0 : (Unused) + // b <- 0 : (Unused) + // a <- 0 : ((1 - sqrt(src.g(as float) * roughnessFactor)))(as uint8) + Is.EqualTo(new Color32(255, 0, 0, 0))); + } + + { + var roughnessFactor = 1.0f; + Assert.That( + OcclusionMetallicRoughnessConverter.ImportPixel(new Color32(255, 128, 255, 255), 1.0f, roughnessFactor, default), + // r <- 255 : Same metallic (src.r) + // g <- 0 : (Unused) + // b <- 0 : (Unused) + // a <- 128 : ((1 - sqrt(src.g(as float) * roughnessFactor)))(as uint8) + Is.EqualTo(new Color32(255, 0, 0, 127))); // smoothness 0.5 * src.a 1.0 + } + + { + var roughnessFactor = 0.5f; + Assert.That( + OcclusionMetallicRoughnessConverter.ImportPixel(new Color32(255, 255, 255, 255), 1.0f, roughnessFactor, default), + // r <- 255 : Same metallic (src.r) + // g <- 0 : (Unused) + // b <- 0 : (Unused) + // a <- 74 : ((1 - sqrt(src.g(as float) * roughnessFactor)))(as uint8) + Is.EqualTo(new Color32(255, 0, 0, 127))); + } + + { + var roughnessFactor = 0.0f; + Assert.That( + OcclusionMetallicRoughnessConverter.ImportPixel(new Color32(255, 255, 255, 255), 1.0f, roughnessFactor, default), + // r <- 255 : Same metallic (src.r) + // g <- 0 : (Unused) + // b <- 0 : (Unused) + // a <- 255 : ((1 - sqrt(src.g(as float) * roughnessFactor)))(as uint8) + Is.EqualTo(new Color32(255, 0, 0, 255))); + } + } + } +} diff --git a/Assets/VRMShaders/Tests/MetallicRoughnessConverterTests.cs.meta b/Assets/VRMShaders/Tests/MetallicRoughnessConverterTests.cs.meta new file mode 100644 index 000000000..a8f006ef3 --- /dev/null +++ b/Assets/VRMShaders/Tests/MetallicRoughnessConverterTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 98670a2a3852f3f40a7f9cbd5791e506 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/VRMShaders/Tests/VRMShaders.Tests.asmdef b/Assets/VRMShaders/Tests/VRMShaders.Tests.asmdef new file mode 100644 index 000000000..18b3c3304 --- /dev/null +++ b/Assets/VRMShaders/Tests/VRMShaders.Tests.asmdef @@ -0,0 +1,18 @@ +{ + "name": "VRMShaders.Tests", + "references": [ + "VRMShaders" + ], + "optionalUnityReferences": [ + "TestAssemblies" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": false, + "defineConstraints": [] +} \ No newline at end of file diff --git a/Assets/VRMShaders/Tests/VRMShaders.Tests.asmdef.meta b/Assets/VRMShaders/Tests/VRMShaders.Tests.asmdef.meta new file mode 100644 index 000000000..320d01208 --- /dev/null +++ b/Assets/VRMShaders/Tests/VRMShaders.Tests.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0e517ae7a2a124241a6da9588530ce79 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: