using UnityEngine; using static Misaki.HdrpToon.UTSPropertyName; namespace Misaki.HdrpToon.Editor { internal static class MaterialHelpers { public static ShadingMode GetShadingMode(this Material material) { if (!material.HasProperty(SurfaceOptions.SHADING_MODE)) { return ShadingMode.Standard; } return (ShadingMode)material.GetInteger(SurfaceOptions.SHADING_MODE); } public static PBRMode GetPBRMode(this Material material) { if (!material.HasProperty(SurfaceOptions.PBR_MODE)) { return PBRMode.Off; } return (PBRMode)material.GetInteger(SurfaceOptions.PBR_MODE); } public static MaterialType GetMaterialType(this Material material) { if (!material.HasProperty(SurfaceOptions.MATERIAL_TYPE)) { return MaterialType.Standard; } return (MaterialType)material.GetInteger(SurfaceOptions.MATERIAL_TYPE); } public static bool HasFeature(this Material material, SurfaceFeature feature) { if (!material.HasProperty(SurfaceOptions.SURFACE_FEATURE)) { return false; } var value = (SurfaceFeature)material.GetInteger(SurfaceOptions.SURFACE_FEATURE); return (value & feature) != 0; } public static bool IsHairBlendingTarget(this Material material) { return material.GetShaderPassEnabled(UTSPassName.HAIR_BLENDING_TARGET_PASS_NAME); } } }