using Godot;

namespace Rokojori
{  
  // Generated by ShaderClassGenerator 

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

    public static readonly IntPropertyName shapeType = IntPropertyName.Create( "shapeType" );
    public static readonly FloatPropertyName shapeScale = FloatPropertyName.Create( "shapeScale" );
    public static readonly FloatPropertyName minShapeDistance = FloatPropertyName.Create( "minShapeDistance" );
    public static readonly FloatPropertyName maxShapeDistance = FloatPropertyName.Create( "maxShapeDistance" );
    public static readonly FloatPropertyName minShapeDistanceColor = FloatPropertyName.Create( "minShapeDistanceColor" );
    public static readonly FloatPropertyName maxShapeDistanceColor = FloatPropertyName.Create( "maxShapeDistanceColor" );
    public static readonly FloatPropertyName shapeColorDistortion = FloatPropertyName.Create( "shapeColorDistortion" );
    public static readonly FloatPropertyName shapeAlphaDistortion = FloatPropertyName.Create( "shapeAlphaDistortion" );
    public static readonly Vector4PropertyName innerHsl = Vector4PropertyName.Create( "innerHSL" );
    public static readonly Vector4PropertyName outerHsl = Vector4PropertyName.Create( "outerHSL" );
    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 SDFTypeFlareMultiplyMaterial:BaseFlareMaterial
  {
    
    
    public readonly CustomMaterialProperty<int> shapeType;
    public readonly CustomMaterialProperty<float> shapeScale;
    public readonly CustomMaterialProperty<float> minShapeDistance;
    public readonly CustomMaterialProperty<float> maxShapeDistance;
    public readonly CustomMaterialProperty<float> minShapeDistanceColor;
    public readonly CustomMaterialProperty<float> maxShapeDistanceColor;
    public readonly CustomMaterialProperty<float> shapeColorDistortion;
    public readonly CustomMaterialProperty<float> shapeAlphaDistortion;
    public readonly CustomMaterialProperty<Vector4> innerHsl;
    public readonly CustomMaterialProperty<Vector4> outerHsl;

    public SDFTypeFlareMultiplyMaterial()
    {
      ///*
      Shader = SDFTypeFlareMultiplyShader.shader.Get();
      //*/ 

      shapeType = new CustomMaterialProperty<int>( this, SDFTypeFlareMultiplyShader.shapeType );
      shapeScale = new CustomMaterialProperty<float>( this, SDFTypeFlareMultiplyShader.shapeScale );
      minShapeDistance = new CustomMaterialProperty<float>( this, SDFTypeFlareMultiplyShader.minShapeDistance );
      maxShapeDistance = new CustomMaterialProperty<float>( this, SDFTypeFlareMultiplyShader.maxShapeDistance );
      minShapeDistanceColor = new CustomMaterialProperty<float>( this, SDFTypeFlareMultiplyShader.minShapeDistanceColor );
      maxShapeDistanceColor = new CustomMaterialProperty<float>( this, SDFTypeFlareMultiplyShader.maxShapeDistanceColor );
      shapeColorDistortion = new CustomMaterialProperty<float>( this, SDFTypeFlareMultiplyShader.shapeColorDistortion );
      shapeAlphaDistortion = new CustomMaterialProperty<float>( this, SDFTypeFlareMultiplyShader.shapeAlphaDistortion );
      innerHsl = new CustomMaterialProperty<Vector4>( this, SDFTypeFlareMultiplyShader.innerHsl );
      outerHsl = new CustomMaterialProperty<Vector4>( this, SDFTypeFlareMultiplyShader.outerHsl );
    }

  }

}