File: bozo.sl

package info (click to toggle)
vtk6 6.3.0%2Bdfsg2-8.1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 118,972 kB
  • sloc: cpp: 1,442,790; ansic: 113,395; python: 72,383; tcl: 46,998; xml: 8,119; yacc: 4,525; java: 4,239; perl: 3,108; lex: 1,694; sh: 1,093; asm: 154; makefile: 68; objc: 17
file content (35 lines) | stat: -rw-r--r-- 867 bytes parent folder | download | duplicates (16)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/* Perlin's "Bozo's Donut"
 * Perlin, Ken, "An Image Synthesizer", SIGGRAPH '85
 */


surface
bozo(
    float k             = 4,      /* noise amplification */
          Ka            = 1,
          Kd            = 0.5,
          Ks            = 0.5,
          roughness     = 0.1;
    color specularcolor = 1
)
{
    normal Nf = faceforward(normalize(N),I);
    vector V = normalize(-I);
    color cc;
    float i;

    cc = color noise(k*P) ;

    /* map ranges of noise values into different colors */
    for ( i=0.0; i<3.0; i+=1.0) {
        if (comp(cc,i) < 0.3) setcomp(cc,i,0.3);
        else
            if (comp(cc,i) < 0.6) setcomp(cc,i,0.6);
            else setcomp(cc,i,1.0);
    }

    /* specular reflection model */
    Oi = Os;
    Ci = Os * (Cs * (Ka * ambient() + cc * Kd * diffuse(Nf))
        + specularcolor * Ks * specular(Nf,V,roughness));
}