I’m trying to make a custom shader to do some coloring and later transparency based on the rim (fake fresnel effects).

Thus far I have this:

Shader "Custom/Fresnel" {
  Properties {
    _EdgeColor ("Edge Color", Color) = (1.0, 0.0, 1.0, 0.0)
    _Color ("Color", Color) = (0.0, 1.0, 0.0, 0.0)
  }
  SubShader {
    Tags { "RenderType" = "Opaque" }
    CGPROGRAM
    #pragma surface surf Lambert
    #pragma target 3.0
    
    samplerColor _EdgeColor;
    samplerColor _Color;

    struct Input {
      float3 viewDir;
    };
    
    void surf (Input IN, inout SurfaceOutput o) {
      half rim = dot(normalize(IN.viewDir), o.Normal);
      o.Albedo = _EdgeColor * rim + _Color * (1.0 - rim);
    }
    ENDCG
  }
  Fallback "Diffuse"
}

The problem is I get the following errors:

Material doesn't have a color property '_EdgeColor'
UnityEditor.DockArea:OnGUI()
Material doesn't have a color property '_Color'
UnityEditor.DockArea:OnGUI()

I’ve made a new material, and set its shader to my custom shader, and two color pickers show up, one for each. Do I need to write a custom lighting model or something?

Thanks!

Try changing both your _EdgeColor and _Color from ‘samplerColor’ to ‘half3’.