using Godot;

namespace Rokojori
{  
  // Generated by ShaderClassGenerator 

  public class CCPBROpacityShader
  { 
    public static readonly CachedResource<Shader> shader = new CachedResource<Shader>( 
      "res://addons/rokojori_action_library/Runtime/Reallusion/Shaders/CCPBROpacity.gdshader"
    );    

    public static readonly ColorPropertyName albedo = ColorPropertyName.Create( "albedo" );
    public static readonly Sampler2DPropertyName textureAlbedo = Sampler2DPropertyName.Create( "texture_albedo" );
    public static readonly Vector2IPropertyName albedoTextureSize = Vector2IPropertyName.Create( "albedo_texture_size" );
    public static readonly FloatPropertyName pointSize = FloatPropertyName.Create( "point_size" );
    public static readonly Sampler2DPropertyName textureOpacity = Sampler2DPropertyName.Create( "texture_opacity" );
    public static readonly FloatPropertyName opacity = FloatPropertyName.Create( "opacity" );
    public static readonly FloatPropertyName roughness = FloatPropertyName.Create( "roughness" );
    public static readonly Sampler2DPropertyName textureMetallic = Sampler2DPropertyName.Create( "texture_metallic" );
    public static readonly Vector4PropertyName metallicTextureChannel = Vector4PropertyName.Create( "metallic_texture_channel" );
    public static readonly Sampler2DPropertyName textureRoughness = Sampler2DPropertyName.Create( "texture_roughness" );
    public static readonly FloatPropertyName specular = FloatPropertyName.Create( "specular" );
    public static readonly FloatPropertyName metallic = FloatPropertyName.Create( "metallic" );
    public static readonly Sampler2DPropertyName textureEmission = Sampler2DPropertyName.Create( "texture_emission" );
    public static readonly ColorPropertyName emission = ColorPropertyName.Create( "emission" );
    public static readonly FloatPropertyName emissionEnergy = FloatPropertyName.Create( "emission_energy" );
    public static readonly Sampler2DPropertyName textureNormal = Sampler2DPropertyName.Create( "texture_normal" );
    public static readonly FloatPropertyName normalScale = FloatPropertyName.Create( "normal_scale" );
    public static readonly FloatPropertyName rim = FloatPropertyName.Create( "rim" );
    public static readonly FloatPropertyName rimTint = FloatPropertyName.Create( "rim_tint" );
    public static readonly Sampler2DPropertyName textureRim = Sampler2DPropertyName.Create( "texture_rim" );
    public static readonly FloatPropertyName clearcoat = FloatPropertyName.Create( "clearcoat" );
    public static readonly FloatPropertyName clearcoatRoughness = FloatPropertyName.Create( "clearcoat_roughness" );
    public static readonly Sampler2DPropertyName textureClearcoat = Sampler2DPropertyName.Create( "texture_clearcoat" );
    public static readonly Sampler2DPropertyName textureAmbientOcclusion = Sampler2DPropertyName.Create( "texture_ambient_occlusion" );
    public static readonly Vector4PropertyName aoTextureChannel = Vector4PropertyName.Create( "ao_texture_channel" );
    public static readonly FloatPropertyName aoLightAffect = FloatPropertyName.Create( "ao_light_affect" );
    public static readonly FloatPropertyName subsurfaceScatteringStrength = FloatPropertyName.Create( "subsurface_scattering_strength" );
    public static readonly Sampler2DPropertyName textureSubsurfaceScattering = Sampler2DPropertyName.Create( "texture_subsurface_scattering" );
    public static readonly ColorPropertyName transmittanceColor = ColorPropertyName.Create( "transmittance_color" );
    public static readonly FloatPropertyName transmittanceDepth = FloatPropertyName.Create( "transmittance_depth" );
    public static readonly Sampler2DPropertyName textureSubsurfaceTransmittance = Sampler2DPropertyName.Create( "texture_subsurface_transmittance" );
    public static readonly FloatPropertyName transmittanceBoost = FloatPropertyName.Create( "transmittance_boost" );
    public static readonly ColorPropertyName backlight = ColorPropertyName.Create( "backlight" );
    public static readonly Sampler2DPropertyName textureBacklight = Sampler2DPropertyName.Create( "texture_backlight" );
    public static readonly Sampler2DPropertyName textureHeightmap = Sampler2DPropertyName.Create( "texture_heightmap" );
    public static readonly FloatPropertyName heightmapScale = FloatPropertyName.Create( "heightmap_scale" );
    public static readonly IntPropertyName heightmapMinLayers = IntPropertyName.Create( "heightmap_min_layers" );
    public static readonly IntPropertyName heightmapMaxLayers = IntPropertyName.Create( "heightmap_max_layers" );
    public static readonly Vector2PropertyName heightmapFlip = Vector2PropertyName.Create( "heightmap_flip" );
    public static readonly Vector3PropertyName uv1Scale = Vector3PropertyName.Create( "uv1_scale" );
    public static readonly Vector3PropertyName uv1Offset = Vector3PropertyName.Create( "uv1_offset" );
    public static readonly Vector3PropertyName uv2Scale = Vector3PropertyName.Create( "uv2_scale" );
    public static readonly Vector3PropertyName uv2Offset = Vector3PropertyName.Create( "uv2_offset" );

  }

  [Tool]
  public partial class CCPBROpacityMaterial:CustomMaterial
  {
    
    
    public readonly CustomMaterialProperty<Color> albedo;
    public readonly CustomMaterialProperty<Texture2D> textureAlbedo;
    public readonly CustomMaterialProperty<Vector2I> albedoTextureSize;
    public readonly CustomMaterialProperty<float> pointSize;
    public readonly CustomMaterialProperty<Texture2D> textureOpacity;
    public readonly CustomMaterialProperty<float> opacity;
    public readonly CustomMaterialProperty<float> roughness;
    public readonly CustomMaterialProperty<Texture2D> textureMetallic;
    public readonly CustomMaterialProperty<Vector4> metallicTextureChannel;
    public readonly CustomMaterialProperty<Texture2D> textureRoughness;
    public readonly CustomMaterialProperty<float> specular;
    public readonly CustomMaterialProperty<float> metallic;
    public readonly CustomMaterialProperty<Texture2D> textureEmission;
    public readonly CustomMaterialProperty<Color> emission;
    public readonly CustomMaterialProperty<float> emissionEnergy;
    public readonly CustomMaterialProperty<Texture2D> textureNormal;
    public readonly CustomMaterialProperty<float> normalScale;
    public readonly CustomMaterialProperty<float> rim;
    public readonly CustomMaterialProperty<float> rimTint;
    public readonly CustomMaterialProperty<Texture2D> textureRim;
    public readonly CustomMaterialProperty<float> clearcoat;
    public readonly CustomMaterialProperty<float> clearcoatRoughness;
    public readonly CustomMaterialProperty<Texture2D> textureClearcoat;
    public readonly CustomMaterialProperty<Texture2D> textureAmbientOcclusion;
    public readonly CustomMaterialProperty<Vector4> aoTextureChannel;
    public readonly CustomMaterialProperty<float> aoLightAffect;
    public readonly CustomMaterialProperty<float> subsurfaceScatteringStrength;
    public readonly CustomMaterialProperty<Texture2D> textureSubsurfaceScattering;
    public readonly CustomMaterialProperty<Color> transmittanceColor;
    public readonly CustomMaterialProperty<float> transmittanceDepth;
    public readonly CustomMaterialProperty<Texture2D> textureSubsurfaceTransmittance;
    public readonly CustomMaterialProperty<float> transmittanceBoost;
    public readonly CustomMaterialProperty<Color> backlight;
    public readonly CustomMaterialProperty<Texture2D> textureBacklight;
    public readonly CustomMaterialProperty<Texture2D> textureHeightmap;
    public readonly CustomMaterialProperty<float> heightmapScale;
    public readonly CustomMaterialProperty<int> heightmapMinLayers;
    public readonly CustomMaterialProperty<int> heightmapMaxLayers;
    public readonly CustomMaterialProperty<Vector2> heightmapFlip;
    public readonly CustomMaterialProperty<Vector3> uv1Scale;
    public readonly CustomMaterialProperty<Vector3> uv1Offset;
    public readonly CustomMaterialProperty<Vector3> uv2Scale;
    public readonly CustomMaterialProperty<Vector3> uv2Offset;

    public CCPBROpacityMaterial()
    {
      Shader = CCPBROpacityShader.shader.Get();

      albedo = new CustomMaterialProperty<Color>( this, CCPBROpacityShader.albedo );
      textureAlbedo = new CustomMaterialProperty<Texture2D>( this, CCPBROpacityShader.textureAlbedo );
      albedoTextureSize = new CustomMaterialProperty<Vector2I>( this, CCPBROpacityShader.albedoTextureSize );
      pointSize = new CustomMaterialProperty<float>( this, CCPBROpacityShader.pointSize );
      textureOpacity = new CustomMaterialProperty<Texture2D>( this, CCPBROpacityShader.textureOpacity );
      opacity = new CustomMaterialProperty<float>( this, CCPBROpacityShader.opacity );
      roughness = new CustomMaterialProperty<float>( this, CCPBROpacityShader.roughness );
      textureMetallic = new CustomMaterialProperty<Texture2D>( this, CCPBROpacityShader.textureMetallic );
      metallicTextureChannel = new CustomMaterialProperty<Vector4>( this, CCPBROpacityShader.metallicTextureChannel );
      textureRoughness = new CustomMaterialProperty<Texture2D>( this, CCPBROpacityShader.textureRoughness );
      specular = new CustomMaterialProperty<float>( this, CCPBROpacityShader.specular );
      metallic = new CustomMaterialProperty<float>( this, CCPBROpacityShader.metallic );
      textureEmission = new CustomMaterialProperty<Texture2D>( this, CCPBROpacityShader.textureEmission );
      emission = new CustomMaterialProperty<Color>( this, CCPBROpacityShader.emission );
      emissionEnergy = new CustomMaterialProperty<float>( this, CCPBROpacityShader.emissionEnergy );
      textureNormal = new CustomMaterialProperty<Texture2D>( this, CCPBROpacityShader.textureNormal );
      normalScale = new CustomMaterialProperty<float>( this, CCPBROpacityShader.normalScale );
      rim = new CustomMaterialProperty<float>( this, CCPBROpacityShader.rim );
      rimTint = new CustomMaterialProperty<float>( this, CCPBROpacityShader.rimTint );
      textureRim = new CustomMaterialProperty<Texture2D>( this, CCPBROpacityShader.textureRim );
      clearcoat = new CustomMaterialProperty<float>( this, CCPBROpacityShader.clearcoat );
      clearcoatRoughness = new CustomMaterialProperty<float>( this, CCPBROpacityShader.clearcoatRoughness );
      textureClearcoat = new CustomMaterialProperty<Texture2D>( this, CCPBROpacityShader.textureClearcoat );
      textureAmbientOcclusion = new CustomMaterialProperty<Texture2D>( this, CCPBROpacityShader.textureAmbientOcclusion );
      aoTextureChannel = new CustomMaterialProperty<Vector4>( this, CCPBROpacityShader.aoTextureChannel );
      aoLightAffect = new CustomMaterialProperty<float>( this, CCPBROpacityShader.aoLightAffect );
      subsurfaceScatteringStrength = new CustomMaterialProperty<float>( this, CCPBROpacityShader.subsurfaceScatteringStrength );
      textureSubsurfaceScattering = new CustomMaterialProperty<Texture2D>( this, CCPBROpacityShader.textureSubsurfaceScattering );
      transmittanceColor = new CustomMaterialProperty<Color>( this, CCPBROpacityShader.transmittanceColor );
      transmittanceDepth = new CustomMaterialProperty<float>( this, CCPBROpacityShader.transmittanceDepth );
      textureSubsurfaceTransmittance = new CustomMaterialProperty<Texture2D>( this, CCPBROpacityShader.textureSubsurfaceTransmittance );
      transmittanceBoost = new CustomMaterialProperty<float>( this, CCPBROpacityShader.transmittanceBoost );
      backlight = new CustomMaterialProperty<Color>( this, CCPBROpacityShader.backlight );
      textureBacklight = new CustomMaterialProperty<Texture2D>( this, CCPBROpacityShader.textureBacklight );
      textureHeightmap = new CustomMaterialProperty<Texture2D>( this, CCPBROpacityShader.textureHeightmap );
      heightmapScale = new CustomMaterialProperty<float>( this, CCPBROpacityShader.heightmapScale );
      heightmapMinLayers = new CustomMaterialProperty<int>( this, CCPBROpacityShader.heightmapMinLayers );
      heightmapMaxLayers = new CustomMaterialProperty<int>( this, CCPBROpacityShader.heightmapMaxLayers );
      heightmapFlip = new CustomMaterialProperty<Vector2>( this, CCPBROpacityShader.heightmapFlip );
      uv1Scale = new CustomMaterialProperty<Vector3>( this, CCPBROpacityShader.uv1Scale );
      uv1Offset = new CustomMaterialProperty<Vector3>( this, CCPBROpacityShader.uv1Offset );
      uv2Scale = new CustomMaterialProperty<Vector3>( this, CCPBROpacityShader.uv2Scale );
      uv2Offset = new CustomMaterialProperty<Vector3>( this, CCPBROpacityShader.uv2Offset );
    }

  }

}