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’.