public static void LoadMaterials(List <Material> materials) { lib = materials.ToDictionary( kv => kv.Id, kv => kv ); matLib = materials.ToDictionary( kv => kv.Id, kv => { var mat = new UnityEngine.Material(UnityEngine.Shader.Find("Universal Render Pipeline/Lit")); mat.name = kv.Name; mat.color = new UnityEngine.Color( kv.Color.Red / 255f, kv.Color.Green / 255f, kv.Color.Blue / 255f, (100 - kv.Transparency) / 100f ); if (mat.name.Contains("Glass")) { mat.color = new UnityEngine.Color( 185 / 255f, 185 / 255f, 224 / 255f, 10 / 255f ); } if (kv.Transparency > 0) { mat.SetFloat("_Surface", 1); mat.SetFloat("_Blend", 0); mat.SetOverrideTag("RenderType", "Transparent"); mat.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha); mat.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); mat.SetInt("_ZWrite", 0); mat.DisableKeyword("_ALPHAPREMULTIPLY_ON"); mat.renderQueue = (int)UnityEngine.Rendering.RenderQueue.Transparent; mat.SetShaderPassEnabled("ShadowCaster", false); } mat.SetFloat("_Metallic", (float)kv.Shininess / byte.MaxValue); mat.SetFloat("_Smoothness", (float)kv.Smoothness / byte.MaxValue); return(mat); } ); }