#include "rmannotes.sl" surface surf2_2() { color surface_color, layer_color; color surface_opac, layer_opac; float ss, tt; point Nf, V; float Ka, Kd, Ks, roughness; color specularcolor; Nf = faceforward(normalize(N), I); V = -normalize(I); /* background layer (layer 0) */ surface_color = color (0.3, 0.15, 0.1); surface_opac = Os; Ka = 0; Kd = 0.9; Ks = 0.1; roughness = 0.15; specularcolor = 1; surface_color = surface_color * (Ka * ambient() + Kd * diffuse(Nf)) + specularcolor * Ks * specular(Nf, V, roughness); /* 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)); Ka = 0.5; Kd = 0.2; Ks = 1; roughness = 0.08; specularcolor = color (1,1,.5); layer_color = layer_color * (Ka * ambient() + Kd * diffuse(Nf)) + specularcolor * Ks * specular(Nf, V, roughness); surface_color = blend(surface_color, layer_color, layer_opac); surface_opac = union(surface_opac, layer_opac); /* output */ Oi = surface_opac; Ci = surface_color * surface_opac; }