public static glTF_VCI_Material glTF_VCAST_vci_material_unity_Deserializevci_materials_ITEM(JsonNode parsed) { var value = new glTF_VCI_Material(); foreach (var kv in parsed.ObjectItems()) { var key = kv.Key.GetString(); if (key == "name") { value.name = kv.Value.GetString(); continue; } if (key == "shader") { value.shader = kv.Value.GetString(); continue; } if (key == "renderQueue") { value.renderQueue = kv.Value.GetInt32(); continue; } if (key == "floatProperties") { value.floatProperties = glTF_VCAST_vci_material_unity_Deserializevci_materials__floatProperties(kv.Value); continue; } if (key == "vectorProperties") { value.vectorProperties = glTF_VCAST_vci_material_unity_Deserializevci_materials__vectorProperties(kv.Value); continue; } if (key == "textureProperties") { value.textureProperties = glTF_VCAST_vci_material_unity_Deserializevci_materials__textureProperties(kv.Value); continue; } if (key == "keywordMap") { value.keywordMap = glTF_VCAST_vci_material_unity_Deserializevci_materials__keywordMap(kv.Value); continue; } if (key == "tagMap") { value.tagMap = glTF_VCAST_vci_material_unity_Deserializevci_materials__tagMap(kv.Value); continue; } } return(value); }
public static void Serialize_vci_materials_ITEM(JsonFormatter f, glTF_VCI_Material value) { f.BeginMap(); if (!string.IsNullOrEmpty(value.name)) { f.Key("name"); f.Value(value.name); } if (!string.IsNullOrEmpty(value.shader)) { f.Key("shader"); f.Value(value.shader); } if (true) { f.Key("renderQueue"); f.Value(value.renderQueue); } if (value.floatProperties != null) { f.Key("floatProperties"); Serialize_vci_materials__floatProperties(f, value.floatProperties); } if (value.vectorProperties != null) { f.Key("vectorProperties"); Serialize_vci_materials__vectorProperties(f, value.vectorProperties); } if (value.textureProperties != null) { f.Key("textureProperties"); Serialize_vci_materials__textureProperties(f, value.textureProperties); } if (value.keywordMap != null) { f.Key("keywordMap"); Serialize_vci_materials__keywordMap(f, value.keywordMap); } if (value.tagMap != null) { f.Key("tagMap"); Serialize_vci_materials__tagMap(f, value.tagMap); } f.EndMap(); }
public static glTF_VCI_Material CreateFromMaterial(Material m, List <Texture> textures) { var material = new glTF_VCI_Material { name = m.name, shader = m.shader.name, renderQueue = m.renderQueue, }; if (!VRMExtensionShaders.Contains(m.shader.name)) { material.shader = VRM_USE_GLTFSHADER; return(material); } var prop = PreShaderPropExporter.GetPropsForSupportedShader(m.shader.name); if (prop == null) { Debug.LogWarningFormat("Fail to export shader: {0}", m.shader.name); } else { foreach (var keyword in m.shaderKeywords) { material.keywordMap.Add(keyword, m.IsKeywordEnabled(keyword)); } // get properties //material.SetProp(prop); foreach (var kv in prop.Properties) { switch (kv.ShaderPropertyType) { case ShaderPropertyType.Color: { var value = m.GetColor(kv.Key).ToArray(); material.vectorProperties.Add(kv.Key, value); } break; case ShaderPropertyType.Range: case ShaderPropertyType.Float: { var value = m.GetFloat(kv.Key); material.floatProperties.Add(kv.Key, value); } break; case ShaderPropertyType.TexEnv: { var texture = m.GetTexture(kv.Key); if (texture != null) { var value = textures.IndexOf(texture); if (value == -1) { Debug.LogFormat("not found {0}", texture.name); } else { material.textureProperties.Add(kv.Key, value); } } // offset & scaling var offset = m.GetTextureOffset(kv.Key); var scaling = m.GetTextureScale(kv.Key); material.vectorProperties.Add(kv.Key, new float[] { offset.x, offset.y, scaling.x, scaling.y }); } break; case ShaderPropertyType.Vector: { var value = m.GetVector(kv.Key).ToArray(); material.vectorProperties.Add(kv.Key, value); } break; default: throw new NotImplementedException(); } } } foreach (var tag in TAGS) { var value = m.GetTag(tag, false); if (!String.IsNullOrEmpty(value)) { material.tagMap.Add(tag, value); } } return(material); }