using Godot;

namespace Rokojori
{  
  // Generated by ShaderClassGenerator 

  public class BaseFlareShader
  { 
    /*
    public static readonly CachedResource<Shader> shader = new CachedResource<Shader>( 
      "C:/rokojori/godot-projects/winter-tales/addons/rokojori_action_library/Runtime/Shading/Shaders/Flares/BaseFlare/BaseFlare.gdshader"
    );  
    */  

    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 BaseFlareMaterial:CustomMaterial
  {
    
    
    public readonly CustomMaterialProperty<Color> color;
    public readonly CustomMaterialProperty<float> opacity;
    public readonly CustomMaterialProperty<Texture2D> opacityCurve;
    public readonly CustomMaterialProperty<float> minHueRandom;
    public readonly CustomMaterialProperty<float> maxHueRandom;
    public readonly CustomMaterialProperty<float> shapeNoiseAmount;
    public readonly CustomMaterialProperty<float> shapeNoiseScale;
    public readonly CustomMaterialProperty<float> sizeX;
    public readonly CustomMaterialProperty<float> sizeY;
    public readonly CustomMaterialProperty<float> worldSizeScale;
    public readonly CustomMaterialProperty<float> screenSizeScale;
    public readonly CustomMaterialProperty<float> worldSizeVsScreenSize;
    public readonly CustomMaterialProperty<float> randomScaleMin;
    public readonly CustomMaterialProperty<float> randomScaleMax;
    public readonly CustomMaterialProperty<float> extension;
    public readonly CustomMaterialProperty<float> rotation;
    public readonly CustomMaterialProperty<float> rotationOverX;
    public readonly CustomMaterialProperty<float> rotationOverY;
    public readonly CustomMaterialProperty<float> rotationPerLayer;
    public readonly CustomMaterialProperty<Vector2> screenOffset;
    public readonly CustomMaterialProperty<Vector2> screenOffsetScale;
    public readonly CustomMaterialProperty<Vector2> screenOffsetLayerSpread;
    public readonly CustomMaterialProperty<int> chromaticAberationMode;
    public readonly CustomMaterialProperty<float> chromaticAberationAmount;
    public readonly CustomMaterialProperty<int> chromaticAberationSteps;
    public readonly CustomMaterialProperty<Vector2> chromaticAberationDirection;
    public readonly CustomMaterialProperty<float> chromaticAberationDirectionTowardsCenter;
    public readonly CustomMaterialProperty<float> chromaticAberationCenterScale;
    public readonly CustomMaterialProperty<float> chromaticAberationCenterOffset;
    public readonly CustomMaterialProperty<Vector3> chromaticAberationShifts;
    public readonly CustomMaterialProperty<float> chromaticAberationSmear;
    public readonly CustomMaterialProperty<int> fadingMode;
    public readonly CustomMaterialProperty<Texture2D> fading;
    public readonly CustomMaterialProperty<Texture2D> opacityFading;
    public readonly CustomMaterialProperty<Texture2D> sizeXfading;
    public readonly CustomMaterialProperty<Texture2D> sizeYfading;
    public readonly CustomMaterialProperty<float> fadingPower;
    public readonly CustomMaterialProperty<float> opacityFadingPower;
    public readonly CustomMaterialProperty<float> sizeXfadingPower;
    public readonly CustomMaterialProperty<float> sizeYfadingPower;
    public readonly CustomMaterialProperty<int> occlusionMode;
    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 readonly CustomMaterialProperty<float> occlusionToSize;

    public BaseFlareMaterial()
    {
      /*
      Shader = BaseFlareShader.shader.Get();
      */ 

      color = new CustomMaterialProperty<Color>( this, BaseFlareShader.color );
      opacity = new CustomMaterialProperty<float>( this, BaseFlareShader.opacity );
      opacityCurve = new CustomMaterialProperty<Texture2D>( this, BaseFlareShader.opacityCurve );
      minHueRandom = new CustomMaterialProperty<float>( this, BaseFlareShader.minHueRandom );
      maxHueRandom = new CustomMaterialProperty<float>( this, BaseFlareShader.maxHueRandom );
      shapeNoiseAmount = new CustomMaterialProperty<float>( this, BaseFlareShader.shapeNoiseAmount );
      shapeNoiseScale = new CustomMaterialProperty<float>( this, BaseFlareShader.shapeNoiseScale );
      sizeX = new CustomMaterialProperty<float>( this, BaseFlareShader.sizeX );
      sizeY = new CustomMaterialProperty<float>( this, BaseFlareShader.sizeY );
      worldSizeScale = new CustomMaterialProperty<float>( this, BaseFlareShader.worldSizeScale );
      screenSizeScale = new CustomMaterialProperty<float>( this, BaseFlareShader.screenSizeScale );
      worldSizeVsScreenSize = new CustomMaterialProperty<float>( this, BaseFlareShader.worldSizeVsScreenSize );
      randomScaleMin = new CustomMaterialProperty<float>( this, BaseFlareShader.randomScaleMin );
      randomScaleMax = new CustomMaterialProperty<float>( this, BaseFlareShader.randomScaleMax );
      extension = new CustomMaterialProperty<float>( this, BaseFlareShader.extension );
      rotation = new CustomMaterialProperty<float>( this, BaseFlareShader.rotation );
      rotationOverX = new CustomMaterialProperty<float>( this, BaseFlareShader.rotationOverX );
      rotationOverY = new CustomMaterialProperty<float>( this, BaseFlareShader.rotationOverY );
      rotationPerLayer = new CustomMaterialProperty<float>( this, BaseFlareShader.rotationPerLayer );
      screenOffset = new CustomMaterialProperty<Vector2>( this, BaseFlareShader.screenOffset );
      screenOffsetScale = new CustomMaterialProperty<Vector2>( this, BaseFlareShader.screenOffsetScale );
      screenOffsetLayerSpread = new CustomMaterialProperty<Vector2>( this, BaseFlareShader.screenOffsetLayerSpread );
      chromaticAberationMode = new CustomMaterialProperty<int>( this, BaseFlareShader.chromaticAberationMode );
      chromaticAberationAmount = new CustomMaterialProperty<float>( this, BaseFlareShader.chromaticAberationAmount );
      chromaticAberationSteps = new CustomMaterialProperty<int>( this, BaseFlareShader.chromaticAberationSteps );
      chromaticAberationDirection = new CustomMaterialProperty<Vector2>( this, BaseFlareShader.chromaticAberationDirection );
      chromaticAberationDirectionTowardsCenter = new CustomMaterialProperty<float>( this, BaseFlareShader.chromaticAberationDirectionTowardsCenter );
      chromaticAberationCenterScale = new CustomMaterialProperty<float>( this, BaseFlareShader.chromaticAberationCenterScale );
      chromaticAberationCenterOffset = new CustomMaterialProperty<float>( this, BaseFlareShader.chromaticAberationCenterOffset );
      chromaticAberationShifts = new CustomMaterialProperty<Vector3>( this, BaseFlareShader.chromaticAberationShifts );
      chromaticAberationSmear = new CustomMaterialProperty<float>( this, BaseFlareShader.chromaticAberationSmear );
      fadingMode = new CustomMaterialProperty<int>( this, BaseFlareShader.fadingMode );
      fading = new CustomMaterialProperty<Texture2D>( this, BaseFlareShader.fading );
      opacityFading = new CustomMaterialProperty<Texture2D>( this, BaseFlareShader.opacityFading );
      sizeXfading = new CustomMaterialProperty<Texture2D>( this, BaseFlareShader.sizeXfading );
      sizeYfading = new CustomMaterialProperty<Texture2D>( this, BaseFlareShader.sizeYfading );
      fadingPower = new CustomMaterialProperty<float>( this, BaseFlareShader.fadingPower );
      opacityFadingPower = new CustomMaterialProperty<float>( this, BaseFlareShader.opacityFadingPower );
      sizeXfadingPower = new CustomMaterialProperty<float>( this, BaseFlareShader.sizeXfadingPower );
      sizeYfadingPower = new CustomMaterialProperty<float>( this, BaseFlareShader.sizeYfadingPower );
      occlusionMode = new CustomMaterialProperty<int>( this, BaseFlareShader.occlusionMode );
      occlusionZOffset = new CustomMaterialProperty<float>( this, BaseFlareShader.occlusionZOffset );
      occlusionTestMaxSteps = new CustomMaterialProperty<int>( this, BaseFlareShader.occlusionTestMaxSteps );
      occlusionTestStepStride = new CustomMaterialProperty<float>( this, BaseFlareShader.occlusionTestStepStride );
      occlusionTestViewDependingScaleAmount = new CustomMaterialProperty<float>( this, BaseFlareShader.occlusionTestViewDependingScaleAmount );
      occlusionTestViewDependingDistance = new CustomMaterialProperty<float>( this, BaseFlareShader.occlusionTestViewDependingDistance );
      occlusionToSize = new CustomMaterialProperty<float>( this, BaseFlareShader.occlusionToSize );
    }

  }

}