您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
81 行
3.3 KiB
81 行
3.3 KiB
using System.Linq;
|
|
using NUnit.Framework;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace VRMShaders
|
|
{
|
|
public sealed class CopyTextureTests
|
|
{
|
|
private static string AssetPath = "Assets/VRMShaders/GLTF/IO/Tests";
|
|
|
|
private static readonly Color32 Black = new Color32(0, 0, 0, 255);
|
|
private static readonly Color32 Gray = new Color32(127, 127, 127, 255);
|
|
private static readonly Color32 White = new Color32(255, 255, 255, 255);
|
|
|
|
private static readonly Color32[] PngTextureValues = new Color32[]
|
|
{
|
|
White, White, White, White,
|
|
Gray, Gray, Gray, Gray,
|
|
Gray, Gray, Gray, Gray,
|
|
Black, Black, Black, Black,
|
|
};
|
|
|
|
// DDSは圧縮で微妙に色が変わるので単色にした
|
|
private static readonly Color32[] DdsTextureValues = new Color32[]
|
|
{
|
|
Gray, Gray, Gray, Gray,
|
|
Gray, Gray, Gray, Gray,
|
|
Gray, Gray, Gray, Gray,
|
|
Gray, Gray, Gray, Gray,
|
|
};
|
|
|
|
[Test]
|
|
public void CopyFromNonReadableSRgbPng()
|
|
{
|
|
var nonReadableTex = AssetDatabase.LoadAssetAtPath<Texture2D>($"{AssetPath}/4x4_non_readable.png");
|
|
Assert.False(nonReadableTex.isReadable);
|
|
var copiedTex = TextureConverter.CopyTexture(nonReadableTex, ColorSpace.sRGB, true, null);
|
|
var pixels = copiedTex.GetPixels32(miplevel: 0);
|
|
Assert.AreEqual(pixels.Length, PngTextureValues.Length);
|
|
for (var idx = 0; idx < pixels.Length; ++idx)
|
|
{
|
|
Assert.AreEqual(PngTextureValues[idx], pixels[idx]);
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void CopyFromNonReadableSRgbDds()
|
|
{
|
|
var compressedTex = AssetDatabase.LoadAssetAtPath<Texture2D>($"{AssetPath}/4x4_non_readable_compressed.dds");
|
|
Assert.False(compressedTex.isReadable);
|
|
var copiedTex = TextureConverter.CopyTexture(compressedTex, ColorSpace.sRGB, true, null);
|
|
var pixels = copiedTex.GetPixels32(miplevel: 0);
|
|
Assert.AreEqual(pixels.Length, DdsTextureValues.Length);
|
|
for (var idx = 0; idx < pixels.Length; ++idx)
|
|
{
|
|
Assert.AreEqual(DdsTextureValues[idx], pixels[idx]);
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void CopyAttributes()
|
|
{
|
|
var src = AssetDatabase.LoadAssetAtPath<Texture2D>($"{AssetPath}/4x4_non_readable.png");
|
|
var dst = TextureConverter.CopyTexture(src, ColorSpace.sRGB, false, null);
|
|
Assert.AreEqual(src.name, dst.name);
|
|
Assert.AreEqual(src.anisoLevel, dst.anisoLevel);
|
|
Assert.AreEqual(src.filterMode, dst.filterMode);
|
|
Assert.AreEqual(src.mipMapBias, dst.mipMapBias);
|
|
Assert.AreEqual(src.wrapMode, dst.wrapMode);
|
|
Assert.AreEqual(src.wrapModeU, dst.wrapModeU);
|
|
Assert.AreEqual(src.wrapModeV, dst.wrapModeV);
|
|
Assert.AreEqual(src.wrapModeW, dst.wrapModeW);
|
|
Assert.AreEqual(src.mipmapCount, dst.mipmapCount);
|
|
Assert.AreEqual(src.width, dst.width);
|
|
Assert.AreEqual(src.height, dst.height);
|
|
Assert.AreEqual(src.format, dst.format);
|
|
Assert.AreEqual(src.imageContentsHash, dst.imageContentsHash);
|
|
}
|
|
}
|
|
}
|