/*Wooksang's construction_line shader*/ #include "rmannotes.sl" surface construction_red_line( float Ks = 0.1, Kd=0.4, Ka = 0.1,roughness=0.1; color first = color(1,1,1); color second = color(1,0,0); color specularcolor = 1;) { /*basic setting*/ color surface_color, layer_color; color surface_opac, layer_opac; float r,freq=5,f; vector V; normal Nf; point QQ; Nf=faceforward(normalize(N),I); V=-normalize(I); surface_color =first; /* Layer #2 */ layer_color = second; QQ = transform("object", P); QQ += noise(QQ*2+2)*0.5; r = distance (point (0,ycomp(QQ),zcomp(QQ)),point(1,1,1)); r = repeat(r+snoise(r*2),freq); layer_opac = step(0.5,r)-step(0.7,r); surface_color = blend(surface_color, layer_color, layer_opac); /* output */ Ci=surface_color*(Ka*ambient()+Kd*diffuse(Nf))+specularcolor*Ks*specular(Nf,V,roughness); }