using Godot;

namespace Rokojori
{  
  // Generated by ShaderClassGenerator 

  public class EllipseFlareMixShader
  { 
    public static readonly CachedResource<Shader> shader = new CachedResource<Shader>( 
      "res://addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/EllipseFlare/EllipseFlareMix.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 EllipseFlareMixMaterial: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 EllipseFlareMixMaterial()
    {
      Shader = EllipseFlareMixShader.shader.Get();

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

  }

}