Example #1
0
        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);
            }
                );
        }