/* rect.sl * * generate rectangle with specified sides * */ #include "rmannotes.sl" surface my_patt( float freq = 1, angle = 0; float Ka = 0.5, Kd = 0.5, Ks = 0.5, roughness = 0.1; color specularcolor = 1) { color surface_color, layer_color; float layer_opac1, layer_opac2, layer_opac3,layer_opac; float fuzz = 0.025; color red = color (1,0,0); float left, right, top, bottom; point p1, p2; color white = color (1,1,1); float half_width; float d, ss , tt; color blue = color (0,0,1); point center; float radius; point Nf = faceforward(normalize(N),I); point V = normalize(-I); surface_color = Cs; /* sqaure*/ layer_color = red; /* creates red looking star in middle of ring*/ rotate2d(s, t, radians(angle),.5 ,.5, ss, tt); ss = repeat(s, freq); tt = repeat(t, freq); layer_color = red; left = 0.41; right = 0.61; /* rectangle sides */ top = 0.41; bottom = 0.61; layer_opac1 = pulse(left, right, fuzz, ss) * (pulse(top, bottom, fuzz, tt)); surface_color = mix(surface_color, layer_color, layer_opac1); ss = repeat(s, freq); tt = repeat(t, freq); layer_color = white; center = (.5, .36, 0); /* location of center of disk */ radius = 0.11; /* radius of disk */ d = distance(center, (ss, tt, 0)); layer_opac2 = 1 - smoothstep(radius - fuzz, radius, d); surface_color = mix(surface_color, layer_color, layer_opac2); ss = repeat(s, freq); tt = repeat(t, freq); layer_color = white; center = (.5, .64, 0); /* location of center of disk */ radius = 0.11; /* radius of disk */ d = distance(center, (ss, tt, 0)); layer_opac2 = 1 - smoothstep(radius - fuzz, radius, d); surface_color = mix(surface_color, layer_color, layer_opac2); ss = repeat(s, freq); tt = repeat(t, freq); layer_color = white; center = (.64, .5, 0); /* location of center of disk */ radius = 0.11; /* radius of disk */ d = distance(center, (ss, tt, 0)); layer_opac2 = 1 - smoothstep(radius - fuzz, radius, d); surface_color = mix(surface_color, layer_color, layer_opac2); ss = repeat(s, freq); tt = repeat(t, freq); layer_color = white; center = (.36, .5, 0); /* location of center of disk */ radius = 0.11; /* radius of disk */ d = distance(center, (ss, tt, 0)); layer_opac2 = 1 - smoothstep(radius - fuzz, radius, d); surface_color = mix(surface_color, layer_color, layer_opac2); /*--------------------------------------------------------------*/ /*creates the blue pattern all it is is 4 circles that are intersected with one circle in origin*/ ss = repeat(s, freq); tt = repeat(t, freq); layer_color = blue; center = (0.5, 0.5, 0); /* location of center of disk */ radius = 0.5; /* radius of disk */ d = distance(center, (ss,tt, 0)); layer_opac1 = 1 - smoothstep(radius - fuzz, radius, d); ss = repeat(s, freq); tt = repeat(t, freq); layer_color = blue; center = (0, 0, 0); /* location of center of disk */ radius = 0.5; /* radius of disk */ d = distance(center, (ss,tt, 0)); layer_opac2 = 1 - smoothstep(radius - fuzz, radius, d); layer_opac2 = intersection(layer_opac1,layer_opac2); surface_color = mix(surface_color, layer_color, layer_opac2); ss = repeat(s, freq); tt = repeat(t, freq); layer_color = blue; center = (0, 1, 0); /* location of center of disk */ radius = 0.5; /* radius of disk */ d = distance(center, (ss,tt, 0)); layer_opac2 = 1 - smoothstep(radius - fuzz, radius, d); ss = repeat(s, freq); tt = repeat(t, freq); layer_color = blue; center = (0.5, 0.5, 0); /* location of center of disk */ radius = 0.5; /* radius of disk */ d = distance(center, (ss,tt, 0)); layer_opac1 = 1 - smoothstep(radius - fuzz, radius, d); layer_opac2 = intersection(layer_opac1,layer_opac2); surface_color = mix(surface_color, layer_color, layer_opac2); ss = repeat(s, freq); tt = repeat(t, freq); layer_color = blue; center = (1, 1, 0); /* location of center of disk */ radius = 0.5; /* radius of disk */ d = distance(center, (ss,tt, 0)); layer_opac2 = 1 - smoothstep(radius - fuzz, radius, d); ss = repeat(s, freq); tt = repeat(t, freq); layer_color = blue; center = (0.5, 0.5, 0); /* location of center of disk */ radius = 0.5; /* radius of disk */ d = distance(center, (ss,tt, 0)); layer_opac1 = 1 - smoothstep(radius - fuzz, radius, d); layer_opac2 = intersection(layer_opac1,layer_opac2); surface_color = mix(surface_color, layer_color, layer_opac2); ss = repeat(s, freq); tt = repeat(t, freq); layer_color = blue; center = (1, 0, 0); /* location of center of disk */ radius = 0.5; /* radius of disk */ d = distance(center, (ss,tt, 0)); layer_opac2 = 1 - smoothstep(radius - fuzz, radius, d); ss = repeat(s, freq); tt = repeat(t, freq); layer_color = blue; center = (0.5, 0.5, 0); /* location of center of disk */ radius = 0.5; /* radius of disk */ d = distance(center, (ss,tt, 0)); layer_opac1 = 1 - smoothstep(radius - fuzz, radius, d); layer_opac2 = intersection(layer_opac1,layer_opac2); surface_color = mix(surface_color, layer_color, layer_opac2); /* --------------------------------------------------------*/ /* this creates center blue ring*/ ss = repeat(s, freq); tt = repeat(t, freq); layer_color = blue; center = (0.5, 0.5, 0); /* position of ring */ radius = 0.2; /* radius of ring */ half_width = 0.02; /* 1/2 width of ring */ d = distance(center, (ss,tt, 0)); layer_opac = pulse(radius - half_width, radius + half_width, fuzz, d); surface_color = mix(surface_color, layer_color, layer_opac); /* start weird in the corner*/ surface_color = mix(surface_color, layer_color, layer_opac); Oi = Os ; Ci = Os * (surface_color * (Ka *ambient() + Kd *diffuse(Nf)) + specularcolor * Ks * specular(Nf,V,roughness)); }