using System.Collections.Generic;
namespace NBShader
{
///
/// Hard-coded catalog of raw shader feature keywords managed by the NBShader runtime tier system.
/// Keywords not listed here are never changed by .
///
public static class NBShaderFeatureCatalog
{
///
/// Shader name used by NBShader materials.
///
public const string ShaderName = "Effects/NBShader";
///
/// Default file name for optional NBShader runtime settings assets.
/// User projects decide how those assets are loaded at runtime.
///
public const string RuntimeSettingsAssetName = "NBShaderFeatureRuntimeSettings";
///
/// Raw shader_feature keywords currently managed by NBShader tiering. The '_' placeholder and
/// multi_compile keywords are intentionally excluded.
///
public static readonly string[] RawKeywords =
{
"NB_DEBUG_DISSOLVE",
"NB_DEBUG_DISTORT",
"NB_DEBUG_FRESNEL",
"NB_DEBUG_MASK",
"NB_DEBUG_PNOISE",
"NB_DEBUG_VERTEX_OFFSET",
"VFX_SIX_WAY_ABSORPTION",
"_ALPHAMODULATE_ON",
"_ALPHAPREMULTIPLY_ON",
"_ALPHATEST_ON",
"_CHROMATIC_ABERRATION",
"_COLORMAPBLEND",
"_COLOR_RAMP",
"_COLOR_RAMP_MAP",
"_DEPTH_DECAL",
"_DEPTH_OUTLINE",
"_DISSOLVE",
"_DISSOLVE_MASK",
"_DISSOLVE_RAMP",
"_DISSOLVE_RAMP_MAP",
"_DISTANCE_FADE",
"_DISTORT_REFRACTION",
"_EMISSION",
"_FLIPBOOKBLENDING_ON",
"_FRESNEL",
"_FX_LIGHT_MODE_BLINN_PHONG",
"_FX_LIGHT_MODE_HALF_LAMBERT",
"_FX_LIGHT_MODE_PBR",
"_FX_LIGHT_MODE_SIX_WAY",
"_FX_LIGHT_MODE_UNLIT",
"_HOUDINI_VAT_DYNAMIC_REMESH",
"_HOUDINI_VAT_PARTICLE_SPRITE",
"_HOUDINI_VAT_RIGIDBODY",
"_HOUDINI_VAT_SOFTBODY",
"_MASKMAP_ON",
"_MASKMAP2_ON",
"_MASKMAP3_ON",
"_MATCAP",
"_NOISEMAP",
"_NOISE_MASKMAP",
"_NORMALMAP",
"_OVERRIDE_Z",
"_PARALLAX_MAPPING",
"_PARCUSTOMDATA_ON",
"_PROGRAM_NOISE",
"_PROGRAM_NOISE_SIMPLE",
"_PROGRAM_NOISE_VORONOI",
"_SCREEN_DISTORT_MODE",
"_SCRIPTABLETIME",
"_SHARED_UV",
"_SOFTPARTICLES_ON",
"_SPECULAR_COLOR",
"_STENCIL_WITHOUT_PLAYER",
"_TYFLOW_VAT_ABSOLUTE",
"_TYFLOW_VAT_RELATIVE",
"_TYFLOW_VAT_SKIN_PR",
"_TYFLOW_VAT_SKIN_PRSAVE",
"_TYFLOW_VAT_SKIN_PRSXYZ",
"_TYFLOW_VAT_SKIN_R",
"_UNSCALETIME",
"_VAT",
"_VAT_HOUDINI",
"_VAT_TYFLOW",
"_VERTEX_OFFSET",
"_VERTEX_OFFSET_MASKMAP"
};
internal static readonly HashSet RawKeywordSet = new HashSet(RawKeywords);
///
/// Returns true when the keyword is explicitly managed by the NBShader feature tier system.
/// Catalog-external keywords must be ignored by tier application and build stripping.
///
public static bool IsManagedKeyword(string keyword)
{
return !string.IsNullOrEmpty(keyword) && RawKeywordSet.Contains(keyword);
}
}
}