File: dented.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 (25 lines) | stat: -rw-r--r-- 609 bytes parent folder | download | duplicates (11)
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;
}