surface
bulb(
	float Ks = 1.0,
		Ka = 0.1,
		Kd = 0.3,
		Ksilh = 0.05,
		roughness = 0.1,
		silhrough = 0.55;
	color specularcolor = 1)

{
	normal Nf = faceforward(normalize(N), I);
	vector i = -normalize(I);

	Oi = Os;
	//diffuse lighting
	color dc = Ks*diffuse(Nf);
	float df = (comp(dc,0.0) + comp(dc,1.0) + comp(dc,2.0))/3.0;
	Ci = Kd*0.4;
	if(df > 0.12)
		Ci = Kd*0.4;
	if(df > 0.2)
		Ci = Kd;

	//specular highlight
	color sc = Ks*specular(Nf, i, roughness);
	float sf = (comp(sc,0.0) + comp(sc,1.0) + comp(sc,2.0))/3.0;
	if(sf > 0.12)
		Ci = Ks*0.4;
	if(sf > 0.2)
		Ci = Ks;

	// outline
	if(i.Nf < 0.3) {
		Ci = Ci*0;
		Oi = 1;
	}
}
