using Godot;

namespace Rokojori
{  
  // Generated by ShaderClassGenerator 

  public class EllipseFlareAddShader
  { 
    public static readonly CachedResource<Shader> shader = new CachedResource<Shader>( 
      "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/EllipseFlare/EllipseFlareAdd.gdshader"
    );    

    public static readonly ColorPropertyName color = ColorPropertyName.Create( "color" );
    public static readonly FloatPropertyName alphaScale = FloatPropertyName.Create( "alphaScale" );
    public static readonly FloatPropertyName circleAmount = FloatPropertyName.Create( "circleAmount" );
    public static readonly FloatPropertyName circleDistortion = FloatPropertyName.Create( "circleDistortion" );
    public static readonly FloatPropertyName ellipseAmount = FloatPropertyName.Create( "ellipseAmount" );
    public static readonly FloatPropertyName ellipseDistortion = FloatPropertyName.Create( "ellipseDistortion" );
    public static readonly Vector2PropertyName ellipseScale = Vector2PropertyName.Create( "ellipseScale" );
    public static readonly FloatPropertyName addVsMax = FloatPropertyName.Create( "add_vs_max" );
    public static readonly Vector4PropertyName centerHsl = Vector4PropertyName.Create( "centerHSL" );
    public static readonly Vector4PropertyName outsideHsl = Vector4PropertyName.Create( "outsideHSL" );
    public static readonly FloatPropertyName sizeX = FloatPropertyName.Create( "sizeX" );
    public static readonly FloatPropertyName sizeY = FloatPropertyName.Create( "sizeY" );
    public static readonly FloatPropertyName scaleAll = FloatPropertyName.Create( "scaleAll" );
    public static readonly FloatPropertyName worldSizeVsScreenSize = FloatPropertyName.Create( "worldSize_vs_screenSize" );
    public static readonly BoolPropertyName usSpectralsNoise = BoolPropertyName.Create( "usSpectralsNoise" );
    public static readonly Vector3PropertyName spectralsAmount = Vector3PropertyName.Create( "spectralsAmount" );
    public static readonly FloatPropertyName nonSpectralAmount = FloatPropertyName.Create( "nonSpectralAmount" );
    public static readonly Vector3PropertyName spectralsSize = Vector3PropertyName.Create( "spectralsSize" );
    public static readonly Vector3PropertyName spectralsSharpness = Vector3PropertyName.Create( "spectralsSharpness" );
    public static readonly Vector3PropertyName spectralsFrequency = Vector3PropertyName.Create( "spectralsFrequency" );
    public static readonly Vector3PropertyName spectralsSpeed = Vector3PropertyName.Create( "spectralsSpeed" );
    public static readonly Sampler2DPropertyName fading = Sampler2DPropertyName.Create( "fading" );
    public static readonly Sampler2DPropertyName sizeXfading = Sampler2DPropertyName.Create( "sizeXfading" );
    public static readonly Sampler2DPropertyName sizeYfading = Sampler2DPropertyName.Create( "sizeYfading" );
    public static readonly BoolPropertyName useQuickOcclusionTest = BoolPropertyName.Create( "useQuickOcclusionTest" );
    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" );

  }

  [Tool]
  public partial class EllipseFlareAddMaterial:CustomMaterial
  {
    
    
    public readonly CustomMaterialProperty<Color> color;
    public readonly CustomMaterialProperty<float> alphaScale;
    public readonly CustomMaterialProperty<float> circleAmount;
    public readonly CustomMaterialProperty<float> circleDistortion;
    public readonly CustomMaterialProperty<float> ellipseAmount;
    public readonly CustomMaterialProperty<float> ellipseDistortion;
    public readonly CustomMaterialProperty<Vector2> ellipseScale;
    public readonly CustomMaterialProperty<float> addVsMax;
    public readonly CustomMaterialProperty<Vector4> centerHsl;
    public readonly CustomMaterialProperty<Vector4> outsideHsl;
    public readonly CustomMaterialProperty<float> sizeX;
    public readonly CustomMaterialProperty<float> sizeY;
    public readonly CustomMaterialProperty<float> scaleAll;
    public readonly CustomMaterialProperty<float> worldSizeVsScreenSize;
    public readonly CustomMaterialProperty<bool> usSpectralsNoise;
    public readonly CustomMaterialProperty<Vector3> spectralsAmount;
    public readonly CustomMaterialProperty<float> nonSpectralAmount;
    public readonly CustomMaterialProperty<Vector3> spectralsSize;
    public readonly CustomMaterialProperty<Vector3> spectralsSharpness;
    public readonly CustomMaterialProperty<Vector3> spectralsFrequency;
    public readonly CustomMaterialProperty<Vector3> spectralsSpeed;
    public readonly CustomMaterialProperty<Texture2D> fading;
    public readonly CustomMaterialProperty<Texture2D> sizeXfading;
    public readonly CustomMaterialProperty<Texture2D> sizeYfading;
    public readonly CustomMaterialProperty<bool> useQuickOcclusionTest;
    public readonly CustomMaterialProperty<float> occlusionZOffset;
    public readonly CustomMaterialProperty<int> occlusionTestMaxSteps;
    public readonly CustomMaterialProperty<float> occlusionTestStepStride;
    public readonly CustomMaterialProperty<float> occlusionTestViewDependingScaleAmount;
    public readonly CustomMaterialProperty<float> occlusionTestViewDependingDistance;

    public EllipseFlareAddMaterial()
    {
      Shader = EllipseFlareAddShader.shader.Get();

      color = new CustomMaterialProperty<Color>( this, EllipseFlareAddShader.color );
      alphaScale = new CustomMaterialProperty<float>( this, EllipseFlareAddShader.alphaScale );
      circleAmount = new CustomMaterialProperty<float>( this, EllipseFlareAddShader.circleAmount );
      circleDistortion = new CustomMaterialProperty<float>( this, EllipseFlareAddShader.circleDistortion );
      ellipseAmount = new CustomMaterialProperty<float>( this, EllipseFlareAddShader.ellipseAmount );
      ellipseDistortion = new CustomMaterialProperty<float>( this, EllipseFlareAddShader.ellipseDistortion );
      ellipseScale = new CustomMaterialProperty<Vector2>( this, EllipseFlareAddShader.ellipseScale );
      addVsMax = new CustomMaterialProperty<float>( this, EllipseFlareAddShader.addVsMax );
      centerHsl = new CustomMaterialProperty<Vector4>( this, EllipseFlareAddShader.centerHsl );
      outsideHsl = new CustomMaterialProperty<Vector4>( this, EllipseFlareAddShader.outsideHsl );
      sizeX = new CustomMaterialProperty<float>( this, EllipseFlareAddShader.sizeX );
      sizeY = new CustomMaterialProperty<float>( this, EllipseFlareAddShader.sizeY );
      scaleAll = new CustomMaterialProperty<float>( this, EllipseFlareAddShader.scaleAll );
      worldSizeVsScreenSize = new CustomMaterialProperty<float>( this, EllipseFlareAddShader.worldSizeVsScreenSize );
      usSpectralsNoise = new CustomMaterialProperty<bool>( this, EllipseFlareAddShader.usSpectralsNoise );
      spectralsAmount = new CustomMaterialProperty<Vector3>( this, EllipseFlareAddShader.spectralsAmount );
      nonSpectralAmount = new CustomMaterialProperty<float>( this, EllipseFlareAddShader.nonSpectralAmount );
      spectralsSize = new CustomMaterialProperty<Vector3>( this, EllipseFlareAddShader.spectralsSize );
      spectralsSharpness = new CustomMaterialProperty<Vector3>( this, EllipseFlareAddShader.spectralsSharpness );
      spectralsFrequency = new CustomMaterialProperty<Vector3>( this, EllipseFlareAddShader.spectralsFrequency );
      spectralsSpeed = new CustomMaterialProperty<Vector3>( this, EllipseFlareAddShader.spectralsSpeed );
      fading = new CustomMaterialProperty<Texture2D>( this, EllipseFlareAddShader.fading );
      sizeXfading = new CustomMaterialProperty<Texture2D>( this, EllipseFlareAddShader.sizeXfading );
      sizeYfading = new CustomMaterialProperty<Texture2D>( this, EllipseFlareAddShader.sizeYfading );
      useQuickOcclusionTest = new CustomMaterialProperty<bool>( this, EllipseFlareAddShader.useQuickOcclusionTest );
      occlusionZOffset = new CustomMaterialProperty<float>( this, EllipseFlareAddShader.occlusionZOffset );
      occlusionTestMaxSteps = new CustomMaterialProperty<int>( this, EllipseFlareAddShader.occlusionTestMaxSteps );
      occlusionTestStepStride = new CustomMaterialProperty<float>( this, EllipseFlareAddShader.occlusionTestStepStride );
      occlusionTestViewDependingScaleAmount = new CustomMaterialProperty<float>( this, EllipseFlareAddShader.occlusionTestViewDependingScaleAmount );
      occlusionTestViewDependingDistance = new CustomMaterialProperty<float>( this, EllipseFlareAddShader.occlusionTestViewDependingDistance );
    }

  }

}