- Home /
Custom shader - Material doesn't have a color property '_Color'
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!
Answer by spraycanmansam · Mar 15, 2014 at 08:33 PM
Try changing both your _EdgeColor and _Color from 'samplerColor' to 'half3'.
I found that compiler errors wouldn't show in the console for this. But if I selected the shader and looked in the properties panel, it would show compiler errors. So that's something to be aware of.
Your answer
Follow this Question
Related Questions
Drag and Drop No Longer Working for Shader Properties 1 Answer
IClone character hair issue 2 Answers
MaterialPropertyBlock causes Z-fighting sprites 0 Answers
Layered Texture not working properly 0 Answers
A Shader to Duplicate and Flip a texture 0 Answers