/*Wooksang's regular_pattern shader for Digital lighting*/ #include "rmannotes.sl" surface pattern_ilumination(float freq = 6, cont = 10,fuzz=0.5 ; float Ks = 0.4, Kd=0.6, Ka = 0.1,roughness=0.1; color specularcolor = 1;) { /*basic setting*/ color surface_color, layer_color; float surface_opac, layer_opac; float ss, tt; vector V; normal Nf; Nf=faceforward(normalize(N),I); V=-normalize(I); /* background layer (layer 0) */ surface_color = texture("background.tx",s,t); surface_opac = 1; /* layer #1 */ ss = repeat(s, freq); tt = repeat(t, freq); layer_color = color (1, 1, 1); layer_opac = pulse(0.4*noise(s*50,t*50),0.5*noise(s*50,t*50),fuzz, ss); surface_color = blend(surface_color, layer_color, layer_opac); /*layer #2*/ layer_color = color (0, 0, 0); layer_opac = pulse(0.7*noise(s*50,t*50),0.9*noise(s*50,t*50),fuzz, ss*0.5); surface_color = blend(surface_color, layer_color, layer_opac); /*layer #3*/ layer_color = color (1, 0, 0); layer_opac = 1-abs(snoise(P*10))*cont; layer_opac = layer_opac*0.5; surface_color = blend(surface_color, layer_color, layer_opac); /* output */ Oi=Os; Ci=surface_color*(Ka*ambient()+Kd*diffuse(Nf))+specularcolor*Ks*specular(Nf,V,roughness); }