using Godot;

namespace Rokojori
{  
  // Generated by ShaderClassGenerator 

  public class TextureTypeFlareSubtractShader
  { 
    ///*
    public static readonly CachedResource<Shader> shader = new CachedResource<Shader>( 
      "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/TextureType/Variants/TextureTypeFlareSubtract.gdshader"
    );  
    //*/  

    public static readonly Sampler2DPropertyName texture = Sampler2DPropertyName.Create( "texture" );
    public static readonly FloatPropertyName textureUvScale = FloatPropertyName.Create( "textureUVScale" );
    public static readonly BoolPropertyName textureRepeat = BoolPropertyName.Create( "textureRepeat" );
    public static readonly Sampler2DPropertyName textureMask = Sampler2DPropertyName.Create( "textureMask" );
    public static readonly FloatPropertyName textureMaskUvScale = FloatPropertyName.Create( "textureMaskUVScale" );
    public static readonly BoolPropertyName textureMaskRepeat = BoolPropertyName.Create( "textureMaskRepeat" );
    public static readonly ColorPropertyName color = ColorPropertyName.Create( "color" );
    public static readonly FloatPropertyName opacity = FloatPropertyName.Create( "opacity" );
    public static readonly Sampler2DPropertyName opacityCurve = Sampler2DPropertyName.Create( "opacityCurve" );
    public static readonly FloatPropertyName minHueRandom = FloatPropertyName.Create( "minHueRandom" );
    public static readonly FloatPropertyName maxHueRandom = FloatPropertyName.Create( "maxHueRandom" );
    public static readonly FloatPropertyName shapeNoiseAmount = FloatPropertyName.Create( "shapeNoiseAmount" );
    public static readonly FloatPropertyName shapeNoiseScale = FloatPropertyName.Create( "shapeNoiseScale" );
    public static readonly FloatPropertyName sizeX = FloatPropertyName.Create( "sizeX" );
    public static readonly FloatPropertyName sizeY = FloatPropertyName.Create( "sizeY" );
    public static readonly FloatPropertyName worldSizeScale = FloatPropertyName.Create( "worldSizeScale" );
    public static readonly FloatPropertyName screenSizeScale = FloatPropertyName.Create( "screenSizeScale" );
    public static readonly FloatPropertyName worldSizeVsScreenSize = FloatPropertyName.Create( "worldSize_vs_screenSize" );
    public static readonly FloatPropertyName randomScaleMin = FloatPropertyName.Create( "randomScaleMin" );
    public static readonly FloatPropertyName randomScaleMax = FloatPropertyName.Create( "randomScaleMax" );
    public static readonly FloatPropertyName extension = FloatPropertyName.Create( "extension" );
    public static readonly FloatPropertyName rotation = FloatPropertyName.Create( "rotation" );
    public static readonly FloatPropertyName rotationOverX = FloatPropertyName.Create( "rotationOverX" );
    public static readonly FloatPropertyName rotationOverY = FloatPropertyName.Create( "rotationOverY" );
    public static readonly FloatPropertyName rotationPerLayer = FloatPropertyName.Create( "rotationPerLayer" );
    public static readonly Vector2PropertyName screenOffset = Vector2PropertyName.Create( "screenOffset" );
    public static readonly Vector2PropertyName screenOffsetScale = Vector2PropertyName.Create( "screenOffsetScale" );
    public static readonly Vector2PropertyName screenOffsetLayerSpread = Vector2PropertyName.Create( "screenOffsetLayerSpread" );
    public static readonly IntPropertyName chromaticAberationMode = IntPropertyName.Create( "chromaticAberationMode" );
    public static readonly FloatPropertyName chromaticAberationAmount = FloatPropertyName.Create( "chromaticAberationAmount" );
    public static readonly IntPropertyName chromaticAberationSteps = IntPropertyName.Create( "chromaticAberationSteps" );
    public static readonly Vector2PropertyName chromaticAberationDirection = Vector2PropertyName.Create( "chromaticAberationDirection" );
    public static readonly FloatPropertyName chromaticAberationDirectionTowardsCenter = FloatPropertyName.Create( "chromaticAberationDirectionTowardsCenter" );
    public static readonly FloatPropertyName chromaticAberationCenterScale = FloatPropertyName.Create( "chromaticAberationCenterScale" );
    public static readonly FloatPropertyName chromaticAberationCenterOffset = FloatPropertyName.Create( "chromaticAberationCenterOffset" );
    public static readonly Vector3PropertyName chromaticAberationShifts = Vector3PropertyName.Create( "chromaticAberationShifts" );
    public static readonly FloatPropertyName chromaticAberationSmear = FloatPropertyName.Create( "chromaticAberationSmear" );
    public static readonly IntPropertyName fadingMode = IntPropertyName.Create( "fadingMode" );
    public static readonly Sampler2DPropertyName fading = Sampler2DPropertyName.Create( "fading" );
    public static readonly Sampler2DPropertyName opacityFading = Sampler2DPropertyName.Create( "opacityFading" );
    public static readonly Sampler2DPropertyName sizeXfading = Sampler2DPropertyName.Create( "sizeXfading" );
    public static readonly Sampler2DPropertyName sizeYfading = Sampler2DPropertyName.Create( "sizeYfading" );
    public static readonly FloatPropertyName fadingPower = FloatPropertyName.Create( "fadingPower" );
    public static readonly FloatPropertyName opacityFadingPower = FloatPropertyName.Create( "opacityFadingPower" );
    public static readonly FloatPropertyName sizeXfadingPower = FloatPropertyName.Create( "sizeXfadingPower" );
    public static readonly FloatPropertyName sizeYfadingPower = FloatPropertyName.Create( "sizeYfadingPower" );
    public static readonly IntPropertyName occlusionMode = IntPropertyName.Create( "occlusionMode" );
    public static readonly FloatPropertyName occlusionZOffset = FloatPropertyName.Create( "occlusionZOffset" );
    public static readonly IntPropertyName occlusionTestMaxSteps = IntPropertyName.Create( "occlusionTestMaxSteps" );
    public static readonly FloatPropertyName occlusionTestStepStride = FloatPropertyName.Create( "occlusionTestStepStride" );
    public static readonly FloatPropertyName occlusionTestViewDependingScaleAmount = FloatPropertyName.Create( "occlusionTest_ViewDependingScaleAmount" );
    public static readonly FloatPropertyName occlusionTestViewDependingDistance = FloatPropertyName.Create( "occlusionTest_ViewDependingDistance" );
    public static readonly FloatPropertyName occlusionToSize = FloatPropertyName.Create( "occlusionToSize" );

  }

  [Tool]
  public partial class TextureTypeFlareSubtractMaterial:BaseFlareMaterial
  {
    
    
    public readonly CustomMaterialProperty<Texture2D> texture;
    public readonly CustomMaterialProperty<float> textureUvScale;
    public readonly CustomMaterialProperty<bool> textureRepeat;
    public readonly CustomMaterialProperty<Texture2D> textureMask;
    public readonly CustomMaterialProperty<float> textureMaskUvScale;
    public readonly CustomMaterialProperty<bool> textureMaskRepeat;

    public TextureTypeFlareSubtractMaterial()
    {
      ///*
      Shader = TextureTypeFlareSubtractShader.shader.Get();
      //*/ 

      texture = new CustomMaterialProperty<Texture2D>( this, TextureTypeFlareSubtractShader.texture );
      textureUvScale = new CustomMaterialProperty<float>( this, TextureTypeFlareSubtractShader.textureUvScale );
      textureRepeat = new CustomMaterialProperty<bool>( this, TextureTypeFlareSubtractShader.textureRepeat );
      textureMask = new CustomMaterialProperty<Texture2D>( this, TextureTypeFlareSubtractShader.textureMask );
      textureMaskUvScale = new CustomMaterialProperty<float>( this, TextureTypeFlareSubtractShader.textureMaskUvScale );
      textureMaskRepeat = new CustomMaterialProperty<bool>( this, TextureTypeFlareSubtractShader.textureMaskRepeat );
    }

  }

}