File: dented.sl

package info (click to toggle)
vtk9 9.5.2%2Bdfsg3-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 205,984 kB
  • sloc: cpp: 2,336,570; ansic: 327,116; python: 111,200; yacc: 4,104; java: 3,977; sh: 3,032; xml: 2,771; perl: 2,189; lex: 1,787; makefile: 181; javascript: 165; objc: 153; tcl: 59
file content (25 lines) | stat: -rw-r--r-- 732 bytes parent folder | download | duplicates (5)
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
/* Listing 16.16  Displacement shader to dent a surface*/
/*
 * dented(): Create a worn surface.
 */
displacement
dented (float   Km      = 1.0 )
{
        float   size      = 1.0,
                magnitude = 0.0,
                i;
        point P2;
        normal Ndiff;

        P2 = transform("shader", P);
        for (i = 0; i < 6.0; i += 1.0) {
                /* Calculate a simple fractal 1/f noise function */
                magnitude += abs(.5 - noise(P2 * size)) / size;
                size *= 2.0;
        }
        Ndiff = normalize(N) - normalize(Ng);
        P2 = P - normalize(N) * (magnitude * magnitude * magnitude) * Km;

        /* correct the normal */
        N = normalize(calculatenormal (P2)) + Ndiff;
}