Ejemplo n.º 1
0
        static void SetupMaterialWithBlendMode(Material material, SDFBlendMode blendMode)
        {
            switch (blendMode)
            {
            case SDFBlendMode.Cutout:
                material.SetInt("_SrcBlend", (int)BlendMode.One);
                material.SetInt("_DstBlend", (int)BlendMode.Zero);
                material.SetInt("_ZWrite", 1);
                material.EnableKeyword("_ALPHATEST_ON");
                material.DisableKeyword("_ALPHABLEND_ON");
                material.DisableKeyword("_ALPHAPREMULTIPLY_ON");
                material.renderQueue = 2450;
                break;

            case SDFBlendMode.Fade:
                material.SetInt("_SrcBlend", (int)BlendMode.SrcAlpha);
                material.SetInt("_DstBlend", (int)BlendMode.OneMinusSrcAlpha);
                material.SetInt("_ZWrite", 0);
                material.DisableKeyword("_ALPHATEST_ON");
                material.EnableKeyword("_ALPHABLEND_ON");
                material.DisableKeyword("_ALPHAPREMULTIPLY_ON");
                material.renderQueue = 3000;
                break;

            case SDFBlendMode.Transparent:
                material.SetInt("_SrcBlend", (int)BlendMode.One);
                material.SetInt("_DstBlend", (int)BlendMode.OneMinusSrcAlpha);
                material.SetInt("_ZWrite", 0);
                material.DisableKeyword("_ALPHATEST_ON");
                material.DisableKeyword("_ALPHABLEND_ON");
                material.EnableKeyword("_ALPHAPREMULTIPLY_ON");
                material.renderQueue = 3000;
                break;
            }
        }
Ejemplo n.º 2
0
        void BlendModePopup()
        {
            MaterialProperty blendMode = Get(SP.Mode);

            EditorGUI.showMixedValue = blendMode.hasMixedValue;
            SDFBlendMode mode = (SDFBlendMode)blendMode.floatValue;

            EditorGUI.BeginChangeCheck();
            mode = (SDFBlendMode)EditorGUILayout.Popup("Rendering Mode", (int)mode, Styles.blendNames);
            if (EditorGUI.EndChangeCheck())
            {
                editor.RegisterPropertyChangeUndo("Rendering Mode");
                blendMode.floatValue = (float)mode;
            }
            if (mode != SDFBlendMode.Cutout && !isUI)
            {
                editor.ShaderProperty(Get(SP.SemitransparentShadows), "Semitransp. Shadows");
            }
            EditorGUI.showMixedValue = false;
        }