fix ExportMetallicSmoothnessOcclusion

#836
This commit is contained in:
ousttrue
2021-04-02 13:47:23 +09:00
parent 7db6ea3d20
commit d76031588b
2 changed files with 24 additions and 10 deletions

View File

@@ -10,7 +10,8 @@ using UnityEditor;
namespace UniGLTF
{
/// <summary>
/// glTF にエクスポートする Texture2D を蓄えて index を確定させる
/// glTF にエクスポートする Texture2D を蓄えて index を確定させる
/// Exporter の最後でまとめて Texture2D から bytes 列を得て出力する。
/// </summary>
public class TextureExporter
{
@@ -160,11 +161,11 @@ namespace UniGLTF
}
// cache
if (m_exportMap.TryGetValue(new ExportKey(metallicSmoothTexture, glTFTextureTypes.OcclusionMetallicRoughness), out var index))
if (metallicSmoothTexture != null && m_exportMap.TryGetValue(new ExportKey(metallicSmoothTexture, glTFTextureTypes.OcclusionMetallicRoughness), out var index))
{
return index;
}
if (m_exportMap.TryGetValue(new ExportKey(occlusionTexture, glTFTextureTypes.OcclusionMetallicRoughness), out index))
if (occlusionTexture != null && m_exportMap.TryGetValue(new ExportKey(occlusionTexture, glTFTextureTypes.OcclusionMetallicRoughness), out index))
{
return index;
}
@@ -176,8 +177,11 @@ namespace UniGLTF
var texture2D = OcclusionMetallicRoughnessConverter.Export(metallicSmoothTexture, smoothness, occlusionTexture);
Exported.Add(texture2D);
m_exportMap.Add(new ExportKey(metallicSmoothTexture, glTFTextureTypes.OcclusionMetallicRoughness), index);
if (occlusionTexture != metallicSmoothTexture && occlusionTexture != null)
if (metallicSmoothTexture != null)
{
m_exportMap.Add(new ExportKey(metallicSmoothTexture, glTFTextureTypes.OcclusionMetallicRoughness), index);
}
if (occlusionTexture != null && occlusionTexture != metallicSmoothTexture)
{
m_exportMap.Add(new ExportKey(occlusionTexture, glTFTextureTypes.OcclusionMetallicRoughness), index);
}

View File

@@ -54,14 +54,24 @@ namespace UniGLTF
[Test]
public void ExportMetallicSmoothnessOcclusion_Test()
{
var exporter = new TextureExporter();
var metallic = new Texture2D(4, 4, TextureFormat.ARGB32, false, true);
var occlusion = new Texture2D(4, 4, TextureFormat.ARGB32, false, true);
Assert.AreEqual(-1, exporter.ExportMetallicSmoothnessOcclusion(null, 0, null));
Assert.AreEqual(0, exporter.ExportMetallicSmoothnessOcclusion(null, 0, occlusion));
Assert.AreEqual(0, exporter.ExportMetallicSmoothnessOcclusion(metallic, 0, null));
Assert.AreEqual(0, exporter.ExportMetallicSmoothnessOcclusion(metallic, 0, occlusion));
{
var exporter = new TextureExporter();
Assert.AreEqual(-1, exporter.ExportMetallicSmoothnessOcclusion(null, 0, null));
}
{
var exporter = new TextureExporter();
Assert.AreEqual(0, exporter.ExportMetallicSmoothnessOcclusion(null, 0, occlusion));
Assert.AreEqual(1, exporter.ExportMetallicSmoothnessOcclusion(metallic, 0, null));
}
{
var exporter = new TextureExporter();
Assert.AreEqual(0, exporter.ExportMetallicSmoothnessOcclusion(metallic, 0, occlusion));
Assert.AreEqual(0, exporter.ExportMetallicSmoothnessOcclusion(null, 0, occlusion));
Assert.AreEqual(0, exporter.ExportMetallicSmoothnessOcclusion(metallic, 0, null));
}
}
}
}