using Godot;

namespace Rokojori
{  
  // Generated by ShaderClassGenerator 

  public class CCHairScissorShader
  { 
    public static readonly CachedResource<Shader> shader = new CachedResource<Shader>( 
      "res://addons/rokojori_action_library/Runtime/Reallusion/Shaders/Hair/Variants/CCHairScissor.gdshader"
    );    

    public static readonly BoolPropertyName enabled = BoolPropertyName.Create( "enabled" );
    public static readonly ColorPropertyName albedo = ColorPropertyName.Create( "albedo" );
    public static readonly Sampler2DPropertyName textureAlbedo = Sampler2DPropertyName.Create( "texture_albedo" );
    public static readonly Vector3PropertyName hslOffset = Vector3PropertyName.Create( "hslOffset" );
    public static readonly Sampler2DPropertyName textureBlend = Sampler2DPropertyName.Create( "texture_blend" );
    public static readonly FloatPropertyName blendAmount = FloatPropertyName.Create( "blendAmount" );
    public static readonly FloatPropertyName naturalColors = FloatPropertyName.Create( "naturalColors" );
    public static readonly Sampler2DPropertyName textureOpacity = Sampler2DPropertyName.Create( "texture_opacity" );
    public static readonly FloatPropertyName opacity = FloatPropertyName.Create( "opacity" );
    public static readonly FloatPropertyName opacityGamma = FloatPropertyName.Create( "opacityGamma" );
    public static readonly FloatPropertyName alphaScissorTreshold = FloatPropertyName.Create( "alphaScissorTreshold" );
    public static readonly Sampler2DPropertyName rootMap = Sampler2DPropertyName.Create( "rootMap" );
    public static readonly Sampler2DPropertyName flowMap = Sampler2DPropertyName.Create( "flowMap" );
    public static readonly Sampler2DPropertyName idMap = Sampler2DPropertyName.Create( "idMap" );
    public static readonly FloatPropertyName diffuseStrength = FloatPropertyName.Create( "diffuseStrength" );
    public static readonly FloatPropertyName vertexColorStrength = FloatPropertyName.Create( "vertexColorStrength" );
    public static readonly ColorPropertyName vertexGreyToColor = ColorPropertyName.Create( "vertexGreyToColor" );
    public static readonly BoolPropertyName activateHairColor = BoolPropertyName.Create( "activateHairColor" );
    public static readonly FloatPropertyName baseColorMapStrength = FloatPropertyName.Create( "baseColorMapStrength" );
    public static readonly ColorPropertyName strandRootColor = ColorPropertyName.Create( "strandRootColor" );
    public static readonly FloatPropertyName strandRootStrength = FloatPropertyName.Create( "strandRootStrength" );
    public static readonly ColorPropertyName strandEndColor = ColorPropertyName.Create( "strandEndColor" );
    public static readonly FloatPropertyName strandEndStrength = FloatPropertyName.Create( "strandEndStrength" );
    public static readonly FloatPropertyName strandGamma = FloatPropertyName.Create( "strandGamma" );
    public static readonly FloatPropertyName maximumHighlightAmount = FloatPropertyName.Create( "maximumHighlightAmount" );
    public static readonly FloatPropertyName highlightFadeOutStart = FloatPropertyName.Create( "highlightFadeOutStart" );
    public static readonly FloatPropertyName highlightFadeOutEnd = FloatPropertyName.Create( "highlightFadeOutEnd" );
    public static readonly FloatPropertyName highlightFadeOutPower = FloatPropertyName.Create( "highlightFadeOutPower" );
    public static readonly FloatPropertyName highlightFadeOutAmount = FloatPropertyName.Create( "highlightFadeOutAmount" );
    public static readonly ColorPropertyName highlightAColor = ColorPropertyName.Create( "highlightAColor" );
    public static readonly FloatPropertyName highlightAStrength = FloatPropertyName.Create( "highlightAStrength" );
    public static readonly Vector3PropertyName highlightARange = Vector3PropertyName.Create( "highlightARange" );
    public static readonly FloatPropertyName highlightAOverlapEnd = FloatPropertyName.Create( "highlightAOverlapEnd" );
    public static readonly FloatPropertyName highlightAInvert = FloatPropertyName.Create( "highlightAInvert" );
    public static readonly ColorPropertyName highlightBColor = ColorPropertyName.Create( "highlightBColor" );
    public static readonly FloatPropertyName highlightBStrength = FloatPropertyName.Create( "highlightBStrength" );
    public static readonly Vector3PropertyName highlightBRange = Vector3PropertyName.Create( "highlightBRange" );
    public static readonly FloatPropertyName highlightBOverlapEnd = FloatPropertyName.Create( "highlightBOverlapEnd" );
    public static readonly FloatPropertyName highlightBInvert = FloatPropertyName.Create( "highlightBInvert" );
    public static readonly FloatPropertyName roughness = FloatPropertyName.Create( "roughness" );
    public static readonly FloatPropertyName roughnessOffset = FloatPropertyName.Create( "roughnessOffset" );
    public static readonly Sampler2DPropertyName textureRoughness = Sampler2DPropertyName.Create( "texture_roughness" );
    public static readonly FloatPropertyName metallic = FloatPropertyName.Create( "metallic" );
    public static readonly FloatPropertyName metallicOffset = FloatPropertyName.Create( "metallicOffset" );
    public static readonly Sampler2DPropertyName textureMetallic = Sampler2DPropertyName.Create( "texture_metallic" );
    public static readonly FloatPropertyName specular = FloatPropertyName.Create( "specular" );
    public static readonly FloatPropertyName specularOpacityAmount = FloatPropertyName.Create( "specularOpacityAmount" );
    public static readonly FloatPropertyName specularOpacityGamma = FloatPropertyName.Create( "specularOpacityGamma" );
    public static readonly FloatPropertyName anisotropyRatio = FloatPropertyName.Create( "anisotropy_ratio" );
    public static readonly Sampler2DPropertyName textureEmission = Sampler2DPropertyName.Create( "texture_emission" );
    public static readonly ColorPropertyName emission = ColorPropertyName.Create( "emission" );
    public static readonly FloatPropertyName emissionEnergy = FloatPropertyName.Create( "emission_energy" );
    public static readonly ColorPropertyName backlight = ColorPropertyName.Create( "backlight" );
    public static readonly FloatPropertyName albedoToBacklightAmount = FloatPropertyName.Create( "albedoToBacklightAmount" );
    public static readonly Sampler2DPropertyName textureBacklight = Sampler2DPropertyName.Create( "texture_backlight" );
    public static readonly FloatPropertyName subsurfaceScatteringStrength = FloatPropertyName.Create( "subsurface_scattering_strength" );
    public static readonly Sampler2DPropertyName textureAmbientOcclusion = Sampler2DPropertyName.Create( "texture_ambient_occlusion" );
    public static readonly FloatPropertyName aoLightAffect = FloatPropertyName.Create( "ao_light_affect" );
    public static readonly FloatPropertyName ambientOcclusion = FloatPropertyName.Create( "ambientOcclusion" );
    public static readonly FloatPropertyName aoGamma = FloatPropertyName.Create( "aoGamma" );
    public static readonly FloatPropertyName rootOcclusionAmount = FloatPropertyName.Create( "rootOcclusionAmount" );
    public static readonly FloatPropertyName rootOcclusionRange = FloatPropertyName.Create( "rootOcclusionRange" );
    public static readonly FloatPropertyName endOcclusionAmount = FloatPropertyName.Create( "endOcclusionAmount" );
    public static readonly FloatPropertyName endOcclusionRange = FloatPropertyName.Create( "endOcclusionRange" );
    public static readonly FloatPropertyName rootBasedOcclusion = FloatPropertyName.Create( "rootBasedOcclusion" );

  }

  [Tool]
  public partial class CCHairScissorMaterial:CustomMaterial
  {
    
    
    public readonly CustomMaterialProperty<bool> enabled;
    public readonly CustomMaterialProperty<Color> albedo;
    public readonly CustomMaterialProperty<Texture2D> textureAlbedo;
    public readonly CustomMaterialProperty<Vector3> hslOffset;
    public readonly CustomMaterialProperty<Texture2D> textureBlend;
    public readonly CustomMaterialProperty<float> blendAmount;
    public readonly CustomMaterialProperty<float> naturalColors;
    public readonly CustomMaterialProperty<Texture2D> textureOpacity;
    public readonly CustomMaterialProperty<float> opacity;
    public readonly CustomMaterialProperty<float> opacityGamma;
    public readonly CustomMaterialProperty<float> alphaScissorTreshold;
    public readonly CustomMaterialProperty<Texture2D> rootMap;
    public readonly CustomMaterialProperty<Texture2D> flowMap;
    public readonly CustomMaterialProperty<Texture2D> idMap;
    public readonly CustomMaterialProperty<float> diffuseStrength;
    public readonly CustomMaterialProperty<float> vertexColorStrength;
    public readonly CustomMaterialProperty<Color> vertexGreyToColor;
    public readonly CustomMaterialProperty<bool> activateHairColor;
    public readonly CustomMaterialProperty<float> baseColorMapStrength;
    public readonly CustomMaterialProperty<Color> strandRootColor;
    public readonly CustomMaterialProperty<float> strandRootStrength;
    public readonly CustomMaterialProperty<Color> strandEndColor;
    public readonly CustomMaterialProperty<float> strandEndStrength;
    public readonly CustomMaterialProperty<float> strandGamma;
    public readonly CustomMaterialProperty<float> maximumHighlightAmount;
    public readonly CustomMaterialProperty<float> highlightFadeOutStart;
    public readonly CustomMaterialProperty<float> highlightFadeOutEnd;
    public readonly CustomMaterialProperty<float> highlightFadeOutPower;
    public readonly CustomMaterialProperty<float> highlightFadeOutAmount;
    public readonly CustomMaterialProperty<Color> highlightAColor;
    public readonly CustomMaterialProperty<float> highlightAStrength;
    public readonly CustomMaterialProperty<Vector3> highlightARange;
    public readonly CustomMaterialProperty<float> highlightAOverlapEnd;
    public readonly CustomMaterialProperty<float> highlightAInvert;
    public readonly CustomMaterialProperty<Color> highlightBColor;
    public readonly CustomMaterialProperty<float> highlightBStrength;
    public readonly CustomMaterialProperty<Vector3> highlightBRange;
    public readonly CustomMaterialProperty<float> highlightBOverlapEnd;
    public readonly CustomMaterialProperty<float> highlightBInvert;
    public readonly CustomMaterialProperty<float> roughness;
    public readonly CustomMaterialProperty<float> roughnessOffset;
    public readonly CustomMaterialProperty<Texture2D> textureRoughness;
    public readonly CustomMaterialProperty<float> metallic;
    public readonly CustomMaterialProperty<float> metallicOffset;
    public readonly CustomMaterialProperty<Texture2D> textureMetallic;
    public readonly CustomMaterialProperty<float> specular;
    public readonly CustomMaterialProperty<float> specularOpacityAmount;
    public readonly CustomMaterialProperty<float> specularOpacityGamma;
    public readonly CustomMaterialProperty<float> anisotropyRatio;
    public readonly CustomMaterialProperty<Texture2D> textureEmission;
    public readonly CustomMaterialProperty<Color> emission;
    public readonly CustomMaterialProperty<float> emissionEnergy;
    public readonly CustomMaterialProperty<Color> backlight;
    public readonly CustomMaterialProperty<float> albedoToBacklightAmount;
    public readonly CustomMaterialProperty<Texture2D> textureBacklight;
    public readonly CustomMaterialProperty<float> subsurfaceScatteringStrength;
    public readonly CustomMaterialProperty<Texture2D> textureAmbientOcclusion;
    public readonly CustomMaterialProperty<float> aoLightAffect;
    public readonly CustomMaterialProperty<float> ambientOcclusion;
    public readonly CustomMaterialProperty<float> aoGamma;
    public readonly CustomMaterialProperty<float> rootOcclusionAmount;
    public readonly CustomMaterialProperty<float> rootOcclusionRange;
    public readonly CustomMaterialProperty<float> endOcclusionAmount;
    public readonly CustomMaterialProperty<float> endOcclusionRange;
    public readonly CustomMaterialProperty<float> rootBasedOcclusion;

    public CCHairScissorMaterial()
    {
      Shader = CCHairScissorShader.shader.Get();

      enabled = new CustomMaterialProperty<bool>( this, CCHairScissorShader.enabled );
      albedo = new CustomMaterialProperty<Color>( this, CCHairScissorShader.albedo );
      textureAlbedo = new CustomMaterialProperty<Texture2D>( this, CCHairScissorShader.textureAlbedo );
      hslOffset = new CustomMaterialProperty<Vector3>( this, CCHairScissorShader.hslOffset );
      textureBlend = new CustomMaterialProperty<Texture2D>( this, CCHairScissorShader.textureBlend );
      blendAmount = new CustomMaterialProperty<float>( this, CCHairScissorShader.blendAmount );
      naturalColors = new CustomMaterialProperty<float>( this, CCHairScissorShader.naturalColors );
      textureOpacity = new CustomMaterialProperty<Texture2D>( this, CCHairScissorShader.textureOpacity );
      opacity = new CustomMaterialProperty<float>( this, CCHairScissorShader.opacity );
      opacityGamma = new CustomMaterialProperty<float>( this, CCHairScissorShader.opacityGamma );
      alphaScissorTreshold = new CustomMaterialProperty<float>( this, CCHairScissorShader.alphaScissorTreshold );
      rootMap = new CustomMaterialProperty<Texture2D>( this, CCHairScissorShader.rootMap );
      flowMap = new CustomMaterialProperty<Texture2D>( this, CCHairScissorShader.flowMap );
      idMap = new CustomMaterialProperty<Texture2D>( this, CCHairScissorShader.idMap );
      diffuseStrength = new CustomMaterialProperty<float>( this, CCHairScissorShader.diffuseStrength );
      vertexColorStrength = new CustomMaterialProperty<float>( this, CCHairScissorShader.vertexColorStrength );
      vertexGreyToColor = new CustomMaterialProperty<Color>( this, CCHairScissorShader.vertexGreyToColor );
      activateHairColor = new CustomMaterialProperty<bool>( this, CCHairScissorShader.activateHairColor );
      baseColorMapStrength = new CustomMaterialProperty<float>( this, CCHairScissorShader.baseColorMapStrength );
      strandRootColor = new CustomMaterialProperty<Color>( this, CCHairScissorShader.strandRootColor );
      strandRootStrength = new CustomMaterialProperty<float>( this, CCHairScissorShader.strandRootStrength );
      strandEndColor = new CustomMaterialProperty<Color>( this, CCHairScissorShader.strandEndColor );
      strandEndStrength = new CustomMaterialProperty<float>( this, CCHairScissorShader.strandEndStrength );
      strandGamma = new CustomMaterialProperty<float>( this, CCHairScissorShader.strandGamma );
      maximumHighlightAmount = new CustomMaterialProperty<float>( this, CCHairScissorShader.maximumHighlightAmount );
      highlightFadeOutStart = new CustomMaterialProperty<float>( this, CCHairScissorShader.highlightFadeOutStart );
      highlightFadeOutEnd = new CustomMaterialProperty<float>( this, CCHairScissorShader.highlightFadeOutEnd );
      highlightFadeOutPower = new CustomMaterialProperty<float>( this, CCHairScissorShader.highlightFadeOutPower );
      highlightFadeOutAmount = new CustomMaterialProperty<float>( this, CCHairScissorShader.highlightFadeOutAmount );
      highlightAColor = new CustomMaterialProperty<Color>( this, CCHairScissorShader.highlightAColor );
      highlightAStrength = new CustomMaterialProperty<float>( this, CCHairScissorShader.highlightAStrength );
      highlightARange = new CustomMaterialProperty<Vector3>( this, CCHairScissorShader.highlightARange );
      highlightAOverlapEnd = new CustomMaterialProperty<float>( this, CCHairScissorShader.highlightAOverlapEnd );
      highlightAInvert = new CustomMaterialProperty<float>( this, CCHairScissorShader.highlightAInvert );
      highlightBColor = new CustomMaterialProperty<Color>( this, CCHairScissorShader.highlightBColor );
      highlightBStrength = new CustomMaterialProperty<float>( this, CCHairScissorShader.highlightBStrength );
      highlightBRange = new CustomMaterialProperty<Vector3>( this, CCHairScissorShader.highlightBRange );
      highlightBOverlapEnd = new CustomMaterialProperty<float>( this, CCHairScissorShader.highlightBOverlapEnd );
      highlightBInvert = new CustomMaterialProperty<float>( this, CCHairScissorShader.highlightBInvert );
      roughness = new CustomMaterialProperty<float>( this, CCHairScissorShader.roughness );
      roughnessOffset = new CustomMaterialProperty<float>( this, CCHairScissorShader.roughnessOffset );
      textureRoughness = new CustomMaterialProperty<Texture2D>( this, CCHairScissorShader.textureRoughness );
      metallic = new CustomMaterialProperty<float>( this, CCHairScissorShader.metallic );
      metallicOffset = new CustomMaterialProperty<float>( this, CCHairScissorShader.metallicOffset );
      textureMetallic = new CustomMaterialProperty<Texture2D>( this, CCHairScissorShader.textureMetallic );
      specular = new CustomMaterialProperty<float>( this, CCHairScissorShader.specular );
      specularOpacityAmount = new CustomMaterialProperty<float>( this, CCHairScissorShader.specularOpacityAmount );
      specularOpacityGamma = new CustomMaterialProperty<float>( this, CCHairScissorShader.specularOpacityGamma );
      anisotropyRatio = new CustomMaterialProperty<float>( this, CCHairScissorShader.anisotropyRatio );
      textureEmission = new CustomMaterialProperty<Texture2D>( this, CCHairScissorShader.textureEmission );
      emission = new CustomMaterialProperty<Color>( this, CCHairScissorShader.emission );
      emissionEnergy = new CustomMaterialProperty<float>( this, CCHairScissorShader.emissionEnergy );
      backlight = new CustomMaterialProperty<Color>( this, CCHairScissorShader.backlight );
      albedoToBacklightAmount = new CustomMaterialProperty<float>( this, CCHairScissorShader.albedoToBacklightAmount );
      textureBacklight = new CustomMaterialProperty<Texture2D>( this, CCHairScissorShader.textureBacklight );
      subsurfaceScatteringStrength = new CustomMaterialProperty<float>( this, CCHairScissorShader.subsurfaceScatteringStrength );
      textureAmbientOcclusion = new CustomMaterialProperty<Texture2D>( this, CCHairScissorShader.textureAmbientOcclusion );
      aoLightAffect = new CustomMaterialProperty<float>( this, CCHairScissorShader.aoLightAffect );
      ambientOcclusion = new CustomMaterialProperty<float>( this, CCHairScissorShader.ambientOcclusion );
      aoGamma = new CustomMaterialProperty<float>( this, CCHairScissorShader.aoGamma );
      rootOcclusionAmount = new CustomMaterialProperty<float>( this, CCHairScissorShader.rootOcclusionAmount );
      rootOcclusionRange = new CustomMaterialProperty<float>( this, CCHairScissorShader.rootOcclusionRange );
      endOcclusionAmount = new CustomMaterialProperty<float>( this, CCHairScissorShader.endOcclusionAmount );
      endOcclusionRange = new CustomMaterialProperty<float>( this, CCHairScissorShader.endOcclusionRange );
      rootBasedOcclusion = new CustomMaterialProperty<float>( this, CCHairScissorShader.rootBasedOcclusion );
    }

  }

}