diff --git a/com.unity.toonshader/Editor/Converter/FromUTS2/BuiltInUTS2toIntegratedConverter.cs b/com.unity.toonshader/Editor/Converter/FromUTS2/BuiltInUTS2toIntegratedConverter.cs index db6ef932c..f9db27afa 100644 --- a/com.unity.toonshader/Editor/Converter/FromUTS2/BuiltInUTS2toIntegratedConverter.cs +++ b/com.unity.toonshader/Editor/Converter/FromUTS2/BuiltInUTS2toIntegratedConverter.cs @@ -415,7 +415,7 @@ void ConvertBuiltInUTS2Materials( string[] guids) UTS3GUI.MaterialSetInt(material, UTS3GUI.ShaderPropTransparentEnabled, 1); } - UTS3GUI.SetupTransparentMode(material, transparentMode); + UTS3GUI.SetupTransparentModeForOutline(material, transparentMode); SetCullingMode(material); int autoRenderQueue = renderQueueInMaterial == -1 ? 1:0; diff --git a/com.unity.toonshader/Editor/UTS3GUI.cs b/com.unity.toonshader/Editor/UTS3GUI.cs index 507580779..6e50e7176 100644 --- a/com.unity.toonshader/Editor/UTS3GUI.cs +++ b/com.unity.toonshader/Editor/UTS3GUI.cs @@ -48,19 +48,6 @@ internal static RenderPipeline currentRenderPipeline { } } - internal static string srpDefaultLightModeName { - get { - const string legacyDefaultLightModeName = "Always"; - - if (currentRenderPipeline == RenderPipeline.Legacy) { - return legacyDefaultLightModeName; // default. - } - - return ToonConstants.SHADER_LIGHT_MODE_NAME_FOR_OUTLINE; - } - } - - internal void RenderingPerChennelsSetting(Material material) { if (currentRenderPipeline == RenderPipeline.HDRP) { RenderingPerChennelsSettingHDRP(material); @@ -1198,7 +1185,7 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro break; } - SetupTransparentMode(material, transparencyEnabled == UTS_TransparentMode.On); + SetupTransparentModeForOutline(material, transparencyEnabled == UTS_TransparentMode.On); ShaderPropertiesGUI(materialEditor, material, props); @@ -2093,22 +2080,28 @@ void GUI_Emissive(Material material) { - internal static void SetupTransparentMode(Material material, bool isTransparent) { - string srpDefaultLightModeTag = material.GetTag("LightMode", false, srpDefaultLightModeName); + internal static void SetupTransparentModeForOutline(Material material, bool isTransparent) { + + +#if URP_IS_INSTALLED_FOR_UTS || HDRP_IS_INSTALLED_FOR_UTS + string srpDefaultLightModeTag = material.GetTag("LightMode", false, ToonConstants.SHADER_LIGHT_MODE_NAME_FOR_OUTLINE); - if (srpDefaultLightModeTag != srpDefaultLightModeName) + if (srpDefaultLightModeTag != ToonConstants.SHADER_LIGHT_MODE_NAME_FOR_OUTLINE) return; +#endif - const string srpDefaultColorMask = "_SPRDefaultUnlitColorMask"; - const string srpDefaultCullMode = "_SRPDefaultUnlitColMode"; + const string OUTLINE_COLOR_MASK = "_SPRDefaultUnlitColorMask"; + const string OUTLINE_CULL_MODE = "_SRPDefaultUnlitColMode"; if (isTransparent) { - material.SetShaderPassEnabled(srpDefaultLightModeName, true); - MaterialSetInt(material, srpDefaultColorMask, 0); - MaterialSetInt(material, srpDefaultCullMode, (int)CullingMode.Backface); +#if URP_IS_INSTALLED_FOR_UTS || HDRP_IS_INSTALLED_FOR_UTS + material.SetShaderPassEnabled(ToonConstants.SHADER_LIGHT_MODE_NAME_FOR_OUTLINE, true); +#endif + MaterialSetInt(material, OUTLINE_COLOR_MASK, 0); //Don't write to the render target + MaterialSetInt(material, OUTLINE_CULL_MODE, (int)CullingMode.Backface); } else { - MaterialSetInt(material, srpDefaultColorMask, 15); - MaterialSetInt(material, srpDefaultCullMode, (int)CullingMode.Frontface); + MaterialSetInt(material, OUTLINE_COLOR_MASK, 15); //0xFF: presumably write to RGBA channels ? + MaterialSetInt(material, OUTLINE_CULL_MODE, (int)CullingMode.Frontface); } }