using Godot;

namespace Rokojori
{  
  // Generated by ShaderClassGenerator 

  public class GPUFoliageShaderShader
  { 
    public static readonly CachedResource<Shader> shader = new CachedResource<Shader>( 
      "res://addons/rokojori_action_library/Runtime/Rendering/Assets/Foliage/GPUFoliageShader.gdshader"
    );    

    public static readonly Vector3PropertyName cameraPosition = Vector3PropertyName.Create( "cameraPosition" );
    public static readonly FloatPropertyName yaw = FloatPropertyName.Create( "yaw" );
    public static readonly FloatPropertyName cellSize = FloatPropertyName.Create( "cellSize" );
    public static readonly IntPropertyName width = IntPropertyName.Create( "width" );
    public static readonly IntPropertyName height = IntPropertyName.Create( "height" );
    public static readonly Sampler2DPropertyName positionVariance = Sampler2DPropertyName.Create( "positionVariance" );
    public static readonly Vector3PropertyName maxPositionOffset = Vector3PropertyName.Create( "maxPositionOffset" );
    public static readonly Vector3PropertyName positionOffset = Vector3PropertyName.Create( "positionOffset" );
    public static readonly Vector2PropertyName positionUvScale = Vector2PropertyName.Create( "positionUVScale" );
    public static readonly Vector2PropertyName positionUvOffset = Vector2PropertyName.Create( "positionUVOffset" );
    public static readonly FloatPropertyName heightOffset = FloatPropertyName.Create( "heightOffset" );
    public static readonly Sampler2DPropertyName heightMap = Sampler2DPropertyName.Create( "heightMap" );
    public static readonly FloatPropertyName minHeight = FloatPropertyName.Create( "minHeight" );
    public static readonly FloatPropertyName maxHeight = FloatPropertyName.Create( "maxHeight" );
    public static readonly Sampler2DPropertyName rotationVariance = Sampler2DPropertyName.Create( "rotationVariance" );
    public static readonly Vector3PropertyName minRotation = Vector3PropertyName.Create( "minRotation" );
    public static readonly Vector3PropertyName maxRotation = Vector3PropertyName.Create( "maxRotation" );
    public static readonly Vector2PropertyName rotationUvScale = Vector2PropertyName.Create( "rotationUVScale" );
    public static readonly Vector2PropertyName rotationUvOffset = Vector2PropertyName.Create( "rotationUVOffset" );
    public static readonly Sampler2DPropertyName scaleVariance = Sampler2DPropertyName.Create( "scaleVariance" );
    public static readonly FloatPropertyName scaleVarianceContrastScale = FloatPropertyName.Create( "scaleVarianceContrastScale" );
    public static readonly FloatPropertyName scaleVarianceContrastCenter = FloatPropertyName.Create( "scaleVarianceContrastCenter" );
    public static readonly Vector3PropertyName minScale = Vector3PropertyName.Create( "minScale" );
    public static readonly Vector3PropertyName maxScale = Vector3PropertyName.Create( "maxScale" );
    public static readonly FloatPropertyName uniScaleMin = FloatPropertyName.Create( "uniScaleMin" );
    public static readonly FloatPropertyName uniScaleMax = FloatPropertyName.Create( "uniScaleMax" );
    public static readonly Vector2PropertyName uniScaleUvOffset = Vector2PropertyName.Create( "uniScaleUVOffset" );
    public static readonly Vector2PropertyName scaleUvScale = Vector2PropertyName.Create( "scaleUVScale" );
    public static readonly Vector2PropertyName scaleUvOffset = Vector2PropertyName.Create( "scaleUVOffset" );
    public static readonly FloatPropertyName occupancyAmount = FloatPropertyName.Create( "occupancyAmount" );
    public static readonly FloatPropertyName occupancyPower = FloatPropertyName.Create( "occupancyPower" );
    public static readonly FloatPropertyName occupancyTreshold = FloatPropertyName.Create( "occupancyTreshold" );
    public static readonly FloatPropertyName occupancyHideOffset = FloatPropertyName.Create( "occupancyHideOffset" );
    public static readonly FloatPropertyName occupancyHideScale = FloatPropertyName.Create( "occupancyHideScale" );
    public static readonly Sampler2DPropertyName occupancyVariance = Sampler2DPropertyName.Create( "occupancyVariance" );
    public static readonly Vector2PropertyName occupancyUvScale = Vector2PropertyName.Create( "occupancyUVScale" );
    public static readonly Vector2PropertyName occupancyUvOffset = Vector2PropertyName.Create( "occupancyUVOffset" );
    public static readonly FloatPropertyName hideStart = FloatPropertyName.Create( "hideStart" );
    public static readonly FloatPropertyName hideMax = FloatPropertyName.Create( "hideMax" );
    public static readonly FloatPropertyName hideOffset = FloatPropertyName.Create( "hideOffset" );
    public static readonly FloatPropertyName discardTreshold = FloatPropertyName.Create( "discardTreshold" );
    public static readonly FloatPropertyName discardOffset = FloatPropertyName.Create( "discardOffset" );
    public static readonly Sampler2DPropertyName coverageMap = Sampler2DPropertyName.Create( "coverageMap" );
    public static readonly Sampler2DPropertyName colorMap = Sampler2DPropertyName.Create( "colorMap" );
    public static readonly Vector2PropertyName mapSize = Vector2PropertyName.Create( "mapSize" );
    public static readonly Vector2PropertyName mapCenter = Vector2PropertyName.Create( "mapCenter" );

  }

  [Tool]
  public partial class GPUFoliageShaderMaterial:CustomMaterial
  {
    
    
    public readonly CustomMaterialProperty<Vector3> cameraPosition;
    public readonly CustomMaterialProperty<float> yaw;
    public readonly CustomMaterialProperty<float> cellSize;
    public readonly CustomMaterialProperty<int> width;
    public readonly CustomMaterialProperty<int> height;
    public readonly CustomMaterialProperty<Texture2D> positionVariance;
    public readonly CustomMaterialProperty<Vector3> maxPositionOffset;
    public readonly CustomMaterialProperty<Vector3> positionOffset;
    public readonly CustomMaterialProperty<Vector2> positionUvScale;
    public readonly CustomMaterialProperty<Vector2> positionUvOffset;
    public readonly CustomMaterialProperty<float> heightOffset;
    public readonly CustomMaterialProperty<Texture2D> heightMap;
    public readonly CustomMaterialProperty<float> minHeight;
    public readonly CustomMaterialProperty<float> maxHeight;
    public readonly CustomMaterialProperty<Texture2D> rotationVariance;
    public readonly CustomMaterialProperty<Vector3> minRotation;
    public readonly CustomMaterialProperty<Vector3> maxRotation;
    public readonly CustomMaterialProperty<Vector2> rotationUvScale;
    public readonly CustomMaterialProperty<Vector2> rotationUvOffset;
    public readonly CustomMaterialProperty<Texture2D> scaleVariance;
    public readonly CustomMaterialProperty<float> scaleVarianceContrastScale;
    public readonly CustomMaterialProperty<float> scaleVarianceContrastCenter;
    public readonly CustomMaterialProperty<Vector3> minScale;
    public readonly CustomMaterialProperty<Vector3> maxScale;
    public readonly CustomMaterialProperty<float> uniScaleMin;
    public readonly CustomMaterialProperty<float> uniScaleMax;
    public readonly CustomMaterialProperty<Vector2> uniScaleUvOffset;
    public readonly CustomMaterialProperty<Vector2> scaleUvScale;
    public readonly CustomMaterialProperty<Vector2> scaleUvOffset;
    public readonly CustomMaterialProperty<float> occupancyAmount;
    public readonly CustomMaterialProperty<float> occupancyPower;
    public readonly CustomMaterialProperty<float> occupancyTreshold;
    public readonly CustomMaterialProperty<float> occupancyHideOffset;
    public readonly CustomMaterialProperty<float> occupancyHideScale;
    public readonly CustomMaterialProperty<Texture2D> occupancyVariance;
    public readonly CustomMaterialProperty<Vector2> occupancyUvScale;
    public readonly CustomMaterialProperty<Vector2> occupancyUvOffset;
    public readonly CustomMaterialProperty<float> hideStart;
    public readonly CustomMaterialProperty<float> hideMax;
    public readonly CustomMaterialProperty<float> hideOffset;
    public readonly CustomMaterialProperty<float> discardTreshold;
    public readonly CustomMaterialProperty<float> discardOffset;
    public readonly CustomMaterialProperty<Texture2D> coverageMap;
    public readonly CustomMaterialProperty<Texture2D> colorMap;
    public readonly CustomMaterialProperty<Vector2> mapSize;
    public readonly CustomMaterialProperty<Vector2> mapCenter;

    public GPUFoliageShaderMaterial()
    {
      Shader = GPUFoliageShaderShader.shader.Get();

      cameraPosition = new CustomMaterialProperty<Vector3>( this, GPUFoliageShaderShader.cameraPosition );
      yaw = new CustomMaterialProperty<float>( this, GPUFoliageShaderShader.yaw );
      cellSize = new CustomMaterialProperty<float>( this, GPUFoliageShaderShader.cellSize );
      width = new CustomMaterialProperty<int>( this, GPUFoliageShaderShader.width );
      height = new CustomMaterialProperty<int>( this, GPUFoliageShaderShader.height );
      positionVariance = new CustomMaterialProperty<Texture2D>( this, GPUFoliageShaderShader.positionVariance );
      maxPositionOffset = new CustomMaterialProperty<Vector3>( this, GPUFoliageShaderShader.maxPositionOffset );
      positionOffset = new CustomMaterialProperty<Vector3>( this, GPUFoliageShaderShader.positionOffset );
      positionUvScale = new CustomMaterialProperty<Vector2>( this, GPUFoliageShaderShader.positionUvScale );
      positionUvOffset = new CustomMaterialProperty<Vector2>( this, GPUFoliageShaderShader.positionUvOffset );
      heightOffset = new CustomMaterialProperty<float>( this, GPUFoliageShaderShader.heightOffset );
      heightMap = new CustomMaterialProperty<Texture2D>( this, GPUFoliageShaderShader.heightMap );
      minHeight = new CustomMaterialProperty<float>( this, GPUFoliageShaderShader.minHeight );
      maxHeight = new CustomMaterialProperty<float>( this, GPUFoliageShaderShader.maxHeight );
      rotationVariance = new CustomMaterialProperty<Texture2D>( this, GPUFoliageShaderShader.rotationVariance );
      minRotation = new CustomMaterialProperty<Vector3>( this, GPUFoliageShaderShader.minRotation );
      maxRotation = new CustomMaterialProperty<Vector3>( this, GPUFoliageShaderShader.maxRotation );
      rotationUvScale = new CustomMaterialProperty<Vector2>( this, GPUFoliageShaderShader.rotationUvScale );
      rotationUvOffset = new CustomMaterialProperty<Vector2>( this, GPUFoliageShaderShader.rotationUvOffset );
      scaleVariance = new CustomMaterialProperty<Texture2D>( this, GPUFoliageShaderShader.scaleVariance );
      scaleVarianceContrastScale = new CustomMaterialProperty<float>( this, GPUFoliageShaderShader.scaleVarianceContrastScale );
      scaleVarianceContrastCenter = new CustomMaterialProperty<float>( this, GPUFoliageShaderShader.scaleVarianceContrastCenter );
      minScale = new CustomMaterialProperty<Vector3>( this, GPUFoliageShaderShader.minScale );
      maxScale = new CustomMaterialProperty<Vector3>( this, GPUFoliageShaderShader.maxScale );
      uniScaleMin = new CustomMaterialProperty<float>( this, GPUFoliageShaderShader.uniScaleMin );
      uniScaleMax = new CustomMaterialProperty<float>( this, GPUFoliageShaderShader.uniScaleMax );
      uniScaleUvOffset = new CustomMaterialProperty<Vector2>( this, GPUFoliageShaderShader.uniScaleUvOffset );
      scaleUvScale = new CustomMaterialProperty<Vector2>( this, GPUFoliageShaderShader.scaleUvScale );
      scaleUvOffset = new CustomMaterialProperty<Vector2>( this, GPUFoliageShaderShader.scaleUvOffset );
      occupancyAmount = new CustomMaterialProperty<float>( this, GPUFoliageShaderShader.occupancyAmount );
      occupancyPower = new CustomMaterialProperty<float>( this, GPUFoliageShaderShader.occupancyPower );
      occupancyTreshold = new CustomMaterialProperty<float>( this, GPUFoliageShaderShader.occupancyTreshold );
      occupancyHideOffset = new CustomMaterialProperty<float>( this, GPUFoliageShaderShader.occupancyHideOffset );
      occupancyHideScale = new CustomMaterialProperty<float>( this, GPUFoliageShaderShader.occupancyHideScale );
      occupancyVariance = new CustomMaterialProperty<Texture2D>( this, GPUFoliageShaderShader.occupancyVariance );
      occupancyUvScale = new CustomMaterialProperty<Vector2>( this, GPUFoliageShaderShader.occupancyUvScale );
      occupancyUvOffset = new CustomMaterialProperty<Vector2>( this, GPUFoliageShaderShader.occupancyUvOffset );
      hideStart = new CustomMaterialProperty<float>( this, GPUFoliageShaderShader.hideStart );
      hideMax = new CustomMaterialProperty<float>( this, GPUFoliageShaderShader.hideMax );
      hideOffset = new CustomMaterialProperty<float>( this, GPUFoliageShaderShader.hideOffset );
      discardTreshold = new CustomMaterialProperty<float>( this, GPUFoliageShaderShader.discardTreshold );
      discardOffset = new CustomMaterialProperty<float>( this, GPUFoliageShaderShader.discardOffset );
      coverageMap = new CustomMaterialProperty<Texture2D>( this, GPUFoliageShaderShader.coverageMap );
      colorMap = new CustomMaterialProperty<Texture2D>( this, GPUFoliageShaderShader.colorMap );
      mapSize = new CustomMaterialProperty<Vector2>( this, GPUFoliageShaderShader.mapSize );
      mapCenter = new CustomMaterialProperty<Vector2>( this, GPUFoliageShaderShader.mapCenter );
    }

  }

}