#include "rmannotes.sl" surface surf2_1(float Ka = 0.5, Kd = 0.5, Ks = 0.5, roughness = 0.15; color specularcolor = 1) { color surface_color, layer_color; color surface_opac, layer_opac; float ss, tt; point Nf, V; /* background layer (layer 0) */ surface_color = color (0.3, 0.15, 0.1); surface_opac = Os; /* layer #1 */ ss = repeat(s, 12); tt = repeat(t, 12); layer_color = color (1, 0.95, 0.1); layer_opac = union(pulse(0.35, 0.65, 0.02, ss), pulse(0.35, 0.65, 0.02, tt)); surface_color = blend(surface_color, layer_color, layer_opac); surface_opac = union(surface_opac, layer_opac); /* illum for all layers */ Nf = faceforward(normalize(N), I); V = -normalize(I); surface_color = surface_color * (Ka * ambient() + Kd * diffuse(Nf)) + specularcolor * Ks * specular(Nf, V, roughness); /* output */ Oi = surface_opac; Ci = surface_color * surface_opac; }