static void MigrateDecalRenderQueue(Material material, HDShaderUtils.ShaderID id) { const string kSupportDecals = "_SupportDecals"; // Take the opportunity to remove _SupportDecals from Unlit as it is not suppose to be here if (HDShaderUtils.IsUnlitHDRPShader(material.shader)) { var serializedMaterial = new SerializedObject(material); if (TryFindProperty(serializedMaterial, kSupportDecals, SerializedType.Integer, out var property, out _, out _)) { RemoveSerializedInt(serializedMaterial, kSupportDecals); serializedMaterial.ApplyModifiedProperties(); } } if (material.HasProperty(kSupportDecals)) { bool supportDecal = material.GetFloat(kSupportDecals) > 0.0f; if (supportDecal) { // Update material render queue to be in Decal render queue based on the value of decal property (see HDRenderQueue.cs) if (material.renderQueue == ((int)UnityEngine.Rendering.RenderQueue.Geometry)) { material.renderQueue = (int)UnityEngine.Rendering.RenderQueue.Geometry + 225; } else if (material.renderQueue == ((int)UnityEngine.Rendering.RenderQueue.AlphaTest)) { material.renderQueue = (int)UnityEngine.Rendering.RenderQueue.AlphaTest + 25; } } } HDShaderUtils.ResetMaterialKeywords(material); }
bool IsUnlitShader() { var mat = m_OverrideMaterial.objectReferenceValue as Material; return(HDShaderUtils.IsUnlitHDRPShader(mat?.shader)); }