示例#1
0
        public static void SetMaterialBlendMode(Material material, KamakuraBlendMode mode, bool adjustRenderQueue, string srcBlendKey = DefaultSrcBlendKey, string dstBlendKey = DefaultDstBlendKey)
        {
            switch (mode)
            {
            case KamakuraBlendMode.Default:
            case KamakuraBlendMode.Opaque:
            {
                material.SetInt(srcBlendKey, (int)UnityEngine.Rendering.BlendMode.One);
                material.SetInt(dstBlendKey, (int)UnityEngine.Rendering.BlendMode.Zero);
                if (adjustRenderQueue)
                {
                    material.SetOverrideTag("RenderType", "Opaque");
                    material.renderQueue = kSolidQueue;
                }
            }
            break;

            case KamakuraBlendMode.Additive:
            {
                material.SetInt(srcBlendKey, (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
                material.SetInt(dstBlendKey, (int)UnityEngine.Rendering.BlendMode.One);
                if (adjustRenderQueue)
                {
                    material.SetOverrideTag("RenderType", "TransparentCutout");
                    material.renderQueue = kAlphaTestQueue;
                }
            }
            break;

            case KamakuraBlendMode.Transparent:
            {
                material.SetInt(srcBlendKey, (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
                material.SetInt(dstBlendKey, (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
                if (adjustRenderQueue)
                {
                    material.SetOverrideTag("RenderType", "TransparentCutout");
                    material.renderQueue = kAlphaTestQueue;
                }
            }
            break;

            case KamakuraBlendMode.Multiply:
            {
                material.SetInt(srcBlendKey, (int)UnityEngine.Rendering.BlendMode.Zero);
                material.SetInt(dstBlendKey, (int)UnityEngine.Rendering.BlendMode.SrcColor);
                if (adjustRenderQueue)
                {
                    material.SetOverrideTag("RenderType", "TransparentCutout");
                    material.renderQueue = kAlphaTestQueue;
                }
            }
            break;
            }
        }
示例#2
0
        public MaterialKamakuraBlendModeDrawer(string srcBlendKey, string dstBlendKey, float defaultBlendMode, float enumMask, float adjustRenderQueue)
        {
            this.srcBlendKey      = srcBlendKey;
            this.dstBlendKey      = dstBlendKey;
            this.enumMask         = (int)enumMask;
            this.defaultBlendMode = (KamakuraBlendMode)(int)defaultBlendMode;
            this.enumValues       = System.Enum.GetValues(typeof(KamakuraBlendMode)).Cast <int>().Where(t => (this.enumMask & t) != 0).ToArray();
            var labels = from num in enumValues select((KamakuraBlendMode)num).ToString();

            this.labels            = labels.ToArray();
            this.adjustRenderQueue = adjustRenderQueue != 0f;
        }