Beispiel #1
0
 public override void AssignNewShaderToMaterial(Material material, Shader oldShader, Shader newShader)
 {
     if (newShader.name.Contains("Unlit"))
     {
         material.SetFloat("_LightingEnabled", 0f);
     }
     else
     {
         material.SetFloat("_LightingEnabled", 1f);
     }
     if (material.HasProperty("_Emission"))
     {
         material.SetColor("_EmissionColor", material.GetColor("_Emission"));
     }
     base.AssignNewShaderToMaterial(material, oldShader, newShader);
     if (oldShader == null || !oldShader.name.Contains("Legacy Shaders/"))
     {
         StandardParticlesShaderGUI.SetupMaterialWithBlendMode(material, (StandardParticlesShaderGUI.BlendMode)material.GetFloat("_Mode"));
     }
     else
     {
         StandardParticlesShaderGUI.BlendMode blendMode = StandardParticlesShaderGUI.BlendMode.Opaque;
         if (oldShader.name.Contains("/Transparent/Cutout/"))
         {
             blendMode = StandardParticlesShaderGUI.BlendMode.Cutout;
         }
         else if (oldShader.name.Contains("/Transparent/"))
         {
             blendMode = StandardParticlesShaderGUI.BlendMode.Fade;
         }
         material.SetFloat("_Mode", (float)blendMode);
         this.MaterialChanged(material);
     }
 }
Beispiel #2
0
 private void BlendModePopup()
 {
     EditorGUI.showMixedValue = this.blendMode.hasMixedValue;
     StandardParticlesShaderGUI.BlendMode blendMode = (StandardParticlesShaderGUI.BlendMode) this.blendMode.floatValue;
     EditorGUI.BeginChangeCheck();
     blendMode = (StandardParticlesShaderGUI.BlendMode)EditorGUILayout.Popup(StandardParticlesShaderGUI.Styles.renderingMode, (int)blendMode, StandardParticlesShaderGUI.Styles.blendNames, new GUILayoutOption[0]);
     if (EditorGUI.EndChangeCheck())
     {
         this.m_MaterialEditor.RegisterPropertyChangeUndo("Rendering Mode");
         this.blendMode.floatValue = (float)blendMode;
     }
     EditorGUI.showMixedValue = false;
 }
Beispiel #3
0
        public static void SetupMaterialWithBlendMode(Material material, StandardParticlesShaderGUI.BlendMode blendMode)
        {
            switch (blendMode)
            {
            case StandardParticlesShaderGUI.BlendMode.Opaque:
                material.SetOverrideTag("RenderType", "");
                material.SetInt("_BlendOp", 0);
                material.SetInt("_SrcBlend", 1);
                material.SetInt("_DstBlend", 0);
                material.SetInt("_ZWrite", 1);
                material.DisableKeyword("_ALPHATEST_ON");
                material.DisableKeyword("_ALPHABLEND_ON");
                material.DisableKeyword("_ALPHAPREMULTIPLY_ON");
                material.DisableKeyword("_ALPHAMODULATE_ON");
                material.renderQueue = -1;
                break;

            case StandardParticlesShaderGUI.BlendMode.Cutout:
                material.SetOverrideTag("RenderType", "TransparentCutout");
                material.SetInt("_BlendOp", 0);
                material.SetInt("_SrcBlend", 1);
                material.SetInt("_DstBlend", 0);
                material.SetInt("_ZWrite", 1);
                material.EnableKeyword("_ALPHATEST_ON");
                material.DisableKeyword("_ALPHABLEND_ON");
                material.DisableKeyword("_ALPHAPREMULTIPLY_ON");
                material.DisableKeyword("_ALPHAMODULATE_ON");
                material.renderQueue = 2450;
                break;

            case StandardParticlesShaderGUI.BlendMode.Fade:
                material.SetOverrideTag("RenderType", "Transparent");
                material.SetInt("_BlendOp", 0);
                material.SetInt("_SrcBlend", 5);
                material.SetInt("_DstBlend", 10);
                material.SetInt("_ZWrite", 0);
                material.DisableKeyword("_ALPHATEST_ON");
                material.EnableKeyword("_ALPHABLEND_ON");
                material.DisableKeyword("_ALPHAPREMULTIPLY_ON");
                material.DisableKeyword("_ALPHAMODULATE_ON");
                material.renderQueue = 3000;
                break;

            case StandardParticlesShaderGUI.BlendMode.Transparent:
                material.SetOverrideTag("RenderType", "Transparent");
                material.SetInt("_BlendOp", 0);
                material.SetInt("_SrcBlend", 1);
                material.SetInt("_DstBlend", 10);
                material.SetInt("_ZWrite", 0);
                material.DisableKeyword("_ALPHATEST_ON");
                material.DisableKeyword("_ALPHABLEND_ON");
                material.EnableKeyword("_ALPHAPREMULTIPLY_ON");
                material.DisableKeyword("_ALPHAMODULATE_ON");
                material.renderQueue = 3000;
                break;

            case StandardParticlesShaderGUI.BlendMode.Additive:
                material.SetOverrideTag("RenderType", "Transparent");
                material.SetInt("_BlendOp", 0);
                material.SetInt("_SrcBlend", 5);
                material.SetInt("_DstBlend", 1);
                material.SetInt("_ZWrite", 0);
                material.DisableKeyword("_ALPHATEST_ON");
                material.EnableKeyword("_ALPHABLEND_ON");
                material.DisableKeyword("_ALPHAPREMULTIPLY_ON");
                material.DisableKeyword("_ALPHAMODULATE_ON");
                material.renderQueue = 3000;
                break;

            case StandardParticlesShaderGUI.BlendMode.Subtractive:
                material.SetOverrideTag("RenderType", "Transparent");
                material.SetInt("_BlendOp", 2);
                material.SetInt("_SrcBlend", 5);
                material.SetInt("_DstBlend", 1);
                material.SetInt("_ZWrite", 0);
                material.DisableKeyword("_ALPHATEST_ON");
                material.EnableKeyword("_ALPHABLEND_ON");
                material.DisableKeyword("_ALPHAPREMULTIPLY_ON");
                material.DisableKeyword("_ALPHAMODULATE_ON");
                material.renderQueue = 3000;
                break;

            case StandardParticlesShaderGUI.BlendMode.Modulate:
                material.SetOverrideTag("RenderType", "Transparent");
                material.SetInt("_BlendOp", 0);
                material.SetInt("_SrcBlend", 2);
                material.SetInt("_DstBlend", 10);
                material.SetInt("_ZWrite", 0);
                material.DisableKeyword("_ALPHATEST_ON");
                material.DisableKeyword("_ALPHABLEND_ON");
                material.DisableKeyword("_ALPHAPREMULTIPLY_ON");
                material.EnableKeyword("_ALPHAMODULATE_ON");
                material.renderQueue = 3000;
                break;
            }
        }