using Godot;

namespace Rokojori
{  
  // Generated by ShaderClassGenerator 

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

    public static readonly ColorPropertyName albedo = ColorPropertyName.Create( "albedo" );
    public static readonly Sampler2DPropertyName textureAlbedo = Sampler2DPropertyName.Create( "texture_albedo" );
    public static readonly Sampler2DPropertyName textureAlbedoNoise = Sampler2DPropertyName.Create( "texture_albedoNoise" );
    public static readonly FloatPropertyName albedoNoise = FloatPropertyName.Create( "albedoNoise" );
    public static readonly FloatPropertyName albedoNoiseOffset = FloatPropertyName.Create( "albedoNoiseOffset" );
    public static readonly FloatPropertyName albedoNoiseUvScale = FloatPropertyName.Create( "albedoNoiseUVScale" );
    public static readonly FloatPropertyName albedoNoiseToRoughness = FloatPropertyName.Create( "albedoNoiseToRoughness" );
    public static readonly FloatPropertyName roughness = FloatPropertyName.Create( "roughness" );
    public static readonly FloatPropertyName roughnessOffset = FloatPropertyName.Create( "roughnessOffset" );
    public static readonly FloatPropertyName roughnessOverwriteAmount = FloatPropertyName.Create( "roughnessOverwriteAmount" );
    public static readonly FloatPropertyName roughnessOverwriteValue = FloatPropertyName.Create( "roughnessOverwriteValue" );
    public static readonly Sampler2DPropertyName textureRoughness = Sampler2DPropertyName.Create( "texture_roughness" );
    public static readonly FloatPropertyName specular = FloatPropertyName.Create( "specular" );
    public static readonly Sampler2DPropertyName textureSpecular = Sampler2DPropertyName.Create( "texture_specular" );
    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 textureAmbientOcclusion = Sampler2DPropertyName.Create( "texture_ambient_occlusion" );
    public static readonly FloatPropertyName aoLightAffect = FloatPropertyName.Create( "ao_light_affect" );
    public static readonly Sampler2DPropertyName microNormalTexture = Sampler2DPropertyName.Create( "microNormalTexture" );
    public static readonly Sampler2DPropertyName microNormalMaskTexture = Sampler2DPropertyName.Create( "microNormalMaskTexture" );
    public static readonly FloatPropertyName microNormalScale = FloatPropertyName.Create( "microNormalScale" );
    public static readonly FloatPropertyName subsurfaceScatteringStrength = FloatPropertyName.Create( "subsurface_scattering_strength" );
    public static readonly Sampler2DPropertyName textureSubsurfaceScattering = Sampler2DPropertyName.Create( "texture_subsurface_scattering" );
    public static readonly BoolPropertyName transmissionEnabled = BoolPropertyName.Create( "transmissionEnabled" );
    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 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 CCSkinTransmissiveMaterial:CustomMaterial
  {
    
    
    public readonly CustomMaterialProperty<Color> albedo;
    public readonly CustomMaterialProperty<Texture2D> textureAlbedo;
    public readonly CustomMaterialProperty<Texture2D> textureAlbedoNoise;
    public readonly CustomMaterialProperty<float> albedoNoise;
    public readonly CustomMaterialProperty<float> albedoNoiseOffset;
    public readonly CustomMaterialProperty<float> albedoNoiseUvScale;
    public readonly CustomMaterialProperty<float> albedoNoiseToRoughness;
    public readonly CustomMaterialProperty<float> roughness;
    public readonly CustomMaterialProperty<float> roughnessOffset;
    public readonly CustomMaterialProperty<float> roughnessOverwriteAmount;
    public readonly CustomMaterialProperty<float> roughnessOverwriteValue;
    public readonly CustomMaterialProperty<Texture2D> textureRoughness;
    public readonly CustomMaterialProperty<float> specular;
    public readonly CustomMaterialProperty<Texture2D> textureSpecular;
    public readonly CustomMaterialProperty<Texture2D> textureNormal;
    public readonly CustomMaterialProperty<float> normalScale;
    public readonly CustomMaterialProperty<float> rim;
    public readonly CustomMaterialProperty<float> rimTint;
    public readonly CustomMaterialProperty<Texture2D> textureAmbientOcclusion;
    public readonly CustomMaterialProperty<float> aoLightAffect;
    public readonly CustomMaterialProperty<Texture2D> microNormalTexture;
    public readonly CustomMaterialProperty<Texture2D> microNormalMaskTexture;
    public readonly CustomMaterialProperty<float> microNormalScale;
    public readonly CustomMaterialProperty<float> subsurfaceScatteringStrength;
    public readonly CustomMaterialProperty<Texture2D> textureSubsurfaceScattering;
    public readonly CustomMaterialProperty<bool> transmissionEnabled;
    public readonly CustomMaterialProperty<Color> transmittanceColor;
    public readonly CustomMaterialProperty<float> transmittanceDepth;
    public readonly CustomMaterialProperty<Texture2D> textureSubsurfaceTransmittance;
    public readonly CustomMaterialProperty<float> transmittanceBoost;
    public readonly CustomMaterialProperty<Vector3> uv1Scale;
    public readonly CustomMaterialProperty<Vector3> uv1Offset;
    public readonly CustomMaterialProperty<Vector3> uv2Scale;
    public readonly CustomMaterialProperty<Vector3> uv2Offset;

    public CCSkinTransmissiveMaterial()
    {
      Shader = CCSkinTransmissiveShader.shader.Get();

      albedo = new CustomMaterialProperty<Color>( this, CCSkinTransmissiveShader.albedo );
      textureAlbedo = new CustomMaterialProperty<Texture2D>( this, CCSkinTransmissiveShader.textureAlbedo );
      textureAlbedoNoise = new CustomMaterialProperty<Texture2D>( this, CCSkinTransmissiveShader.textureAlbedoNoise );
      albedoNoise = new CustomMaterialProperty<float>( this, CCSkinTransmissiveShader.albedoNoise );
      albedoNoiseOffset = new CustomMaterialProperty<float>( this, CCSkinTransmissiveShader.albedoNoiseOffset );
      albedoNoiseUvScale = new CustomMaterialProperty<float>( this, CCSkinTransmissiveShader.albedoNoiseUvScale );
      albedoNoiseToRoughness = new CustomMaterialProperty<float>( this, CCSkinTransmissiveShader.albedoNoiseToRoughness );
      roughness = new CustomMaterialProperty<float>( this, CCSkinTransmissiveShader.roughness );
      roughnessOffset = new CustomMaterialProperty<float>( this, CCSkinTransmissiveShader.roughnessOffset );
      roughnessOverwriteAmount = new CustomMaterialProperty<float>( this, CCSkinTransmissiveShader.roughnessOverwriteAmount );
      roughnessOverwriteValue = new CustomMaterialProperty<float>( this, CCSkinTransmissiveShader.roughnessOverwriteValue );
      textureRoughness = new CustomMaterialProperty<Texture2D>( this, CCSkinTransmissiveShader.textureRoughness );
      specular = new CustomMaterialProperty<float>( this, CCSkinTransmissiveShader.specular );
      textureSpecular = new CustomMaterialProperty<Texture2D>( this, CCSkinTransmissiveShader.textureSpecular );
      textureNormal = new CustomMaterialProperty<Texture2D>( this, CCSkinTransmissiveShader.textureNormal );
      normalScale = new CustomMaterialProperty<float>( this, CCSkinTransmissiveShader.normalScale );
      rim = new CustomMaterialProperty<float>( this, CCSkinTransmissiveShader.rim );
      rimTint = new CustomMaterialProperty<float>( this, CCSkinTransmissiveShader.rimTint );
      textureAmbientOcclusion = new CustomMaterialProperty<Texture2D>( this, CCSkinTransmissiveShader.textureAmbientOcclusion );
      aoLightAffect = new CustomMaterialProperty<float>( this, CCSkinTransmissiveShader.aoLightAffect );
      microNormalTexture = new CustomMaterialProperty<Texture2D>( this, CCSkinTransmissiveShader.microNormalTexture );
      microNormalMaskTexture = new CustomMaterialProperty<Texture2D>( this, CCSkinTransmissiveShader.microNormalMaskTexture );
      microNormalScale = new CustomMaterialProperty<float>( this, CCSkinTransmissiveShader.microNormalScale );
      subsurfaceScatteringStrength = new CustomMaterialProperty<float>( this, CCSkinTransmissiveShader.subsurfaceScatteringStrength );
      textureSubsurfaceScattering = new CustomMaterialProperty<Texture2D>( this, CCSkinTransmissiveShader.textureSubsurfaceScattering );
      transmissionEnabled = new CustomMaterialProperty<bool>( this, CCSkinTransmissiveShader.transmissionEnabled );
      transmittanceColor = new CustomMaterialProperty<Color>( this, CCSkinTransmissiveShader.transmittanceColor );
      transmittanceDepth = new CustomMaterialProperty<float>( this, CCSkinTransmissiveShader.transmittanceDepth );
      textureSubsurfaceTransmittance = new CustomMaterialProperty<Texture2D>( this, CCSkinTransmissiveShader.textureSubsurfaceTransmittance );
      transmittanceBoost = new CustomMaterialProperty<float>( this, CCSkinTransmissiveShader.transmittanceBoost );
      uv1Scale = new CustomMaterialProperty<Vector3>( this, CCSkinTransmissiveShader.uv1Scale );
      uv1Offset = new CustomMaterialProperty<Vector3>( this, CCSkinTransmissiveShader.uv1Offset );
      uv2Scale = new CustomMaterialProperty<Vector3>( this, CCSkinTransmissiveShader.uv2Scale );
      uv2Offset = new CustomMaterialProperty<Vector3>( this, CCSkinTransmissiveShader.uv2Offset );
    }

  }

}