public void MetallicSmoothness() { using (var gradation = new MagickImage(linearGradationPath)) using (var msmap = MagickImageUtility.GenerateMetallicSmoothness(gradation, false, gradation, false)) { Assert.AreEqual(ColorSpace.sRGB, msmap.ColorSpace); Assert.True(msmap.HasAlpha); var pixels = msmap.GetPixels(); for (int x = 0; x < 256; x++) { var v = pixels.GetValue(x, 0); Assert.AreEqual(4, v.Length); Assert.AreEqual(257 * x, v[0]); // 257 * 255 = 65535 Assert.AreEqual(0, v[1]); Assert.AreEqual(0, v[2]); Assert.AreEqual(257 * x, v[3]); } msmap.Write(msMapPath, MagickFormat.Png32); } using (var msmap = new MagickImage(msMapPath)) { Assert.AreEqual(ColorSpace.sRGB, msmap.ColorSpace); Assert.True(msmap.HasAlpha); var pixels = msmap.GetPixels(); for (int x = 0; x < 256; x++) { var v = pixels.GetValue(x, 0); Assert.AreEqual(4, v.Length); Assert.AreEqual(257 * x, v[0]); // 257 * 255 = 65535 Assert.AreEqual(0, v[1]); Assert.AreEqual(0, v[2]); Assert.AreEqual(257 * x, v[3]); } } }
/// <summary> /// Generate and save MSMap. /// </summary> /// <param name="destPath">File path to save.</param> internal void GenerateMetallicSmoothness(string destPath) { using (var metallic = metallicMap ? MagickImageUtility.GetMagickImage(metallicMap) : new MagickImage(MagickColors.White, 2, 2)) using (var smoothness = smoothnessMap ? MagickImageUtility.GetMagickImage(smoothnessMap) : new MagickImage(MagickColors.White, 2, 2)) using (var msMap = MagickImageUtility.GenerateMetallicSmoothness(metallic, false, smoothness, invertSmoothness && smoothnessMap)) { MagickImageUtility.SaveAsAsset(destPath, msMap, MagickFormat.Png32, false); } }