add shader.name check

This commit is contained in:
ousttrue 2020-05-20 17:07:16 +09:00
parent 517168298b
commit 2fce44159d
3 changed files with 44 additions and 7 deletions

View File

@ -1,8 +1,5 @@
using System;
using System.Collections.Generic;
using UniGLTF.UniUnlit;
using UniGLTF.UniUnlit;
using UnityEngine;
using UnityEngine.Rendering;
namespace UniGLTF
@ -185,7 +182,7 @@ namespace UniGLTF
static void Export_TextureTransform(Material m, glTFTextureInfo textureInfo, string propertyName)
{
if( textureInfo != null && m.HasProperty(propertyName))
if (textureInfo != null && m.HasProperty(propertyName))
{
var offset = m.GetTextureOffset(propertyName);
var scale = m.GetTextureScale(propertyName);
@ -202,6 +199,21 @@ namespace UniGLTF
}
}
public static bool UseUnlit(string shaderName)
{
switch (shaderName)
{
case "Unlit/Color":
case "Unlit/Texture":
case "Unlit/Transparent":
case "Unlit/Transparent Cutout":
case "UniGLTF/UniUnlit":
return true;
}
return false;
}
protected virtual glTFMaterial CreateMaterial(Material m)
{
switch (m.shader.name)

View File

@ -112,10 +112,35 @@ namespace VRM
yield return Validation.Error("ReduceBlendshapeSize is need VRMBlendShapeProxy, you need to convert to VRM once.");
}
if (Source.GetComponentsInChildren<Renderer>().All(x => !x.gameObject.activeInHierarchy))
var renderers = Source.GetComponentsInChildren<Renderer>();
if (renderers.All(x => !x.gameObject.activeInHierarchy))
{
yield return Validation.Error("No active mesh");
}
var materials = renderers.SelectMany(x => x.sharedMaterials).Distinct();
foreach (var material in materials)
{
if (material.shader.name == "Standard")
{
// standard
continue;
}
if (MaterialExporter.UseUnlit(material.shader.name))
{
// unlit
continue;
}
if (VRMMaterialExporter.VRMExtensionShaders.Contains(material.shader.name))
{
// VRM supported
continue;
}
yield return Validation.Warning(string.Format("unknown material '{0}' is used. this will export as `Standard` fallback", material.shader.name));
}
}
public void InitializeFrom(GameObject go)

View File

@ -101,7 +101,7 @@ namespace VRM
}
#region CreateFromMaterial
private static readonly string[] VRMExtensionShaders = new string[]
public static readonly string[] VRMExtensionShaders = new string[]
{
"VRM/UnlitTransparentZWrite",
"VRM/MToon"