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); } }
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; }
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; } }