UniVRM/Assets/VRM/Runtime/IO/VRMMaterialDescriptorGenerator.cs
Masataka SUMI 2c4803b3eb rename
2021-09-28 19:02:41 +09:00

49 lines
1.3 KiB
C#

using UniGLTF;
using UnityEngine;
using VRMShaders;
namespace VRM
{
public sealed class VRMMaterialDescriptorGenerator : IMaterialDescriptorGenerator
{
readonly glTF_VRM_extensions m_vrm;
public VRMMaterialDescriptorGenerator(glTF_VRM_extensions vrm)
{
m_vrm = vrm;
}
public MaterialDescriptor Get(GltfData data, int i)
{
MaterialDescriptor matDesc;
// legacy "VRM/UnlitTransparentZWrite"
if (VRMUnlitTransparentZWriteMaterialImporter.TryCreateParam(data, m_vrm, i, out matDesc))
{
return matDesc;
}
// mtoon
if (VRMMToonMaterialImporter.TryCreateParam(data, m_vrm, i, out matDesc))
{
return matDesc;
}
// unlit
if (GltfUnlitMaterialImporter.TryCreateParam(data, i, out matDesc))
{
return matDesc;
}
// pbr
if (GltfPbrMaterialImporter.TryCreateParam(data, i, out matDesc))
{
return matDesc;
}
// fallback
Debug.LogWarning($"fallback");
return new MaterialDescriptor(GltfMaterialDescriptorGenerator.GetMaterialName(i, null), GltfPbrMaterialImporter.ShaderName);
}
}
}