Procedural bumpmapping

I materiale-definitioner kan man nu angive en funktion ℝ3×ℝ3 → ℝ3 i Scheme, som via callback manipulerer en overflades normalvektor. Dermed er det muligt at lave bumpmapping på overflader, som ikke har veldefinerede (u,v) mappings.

Nedenstående funktion har som argumenter et overfladepunkt P og en normal N i dette punkt. Den returnerer blot N forskudt med lidt Perlin-støj i P for at give ovenstående materiale.

; Perlin perturb (define (perturb-noise P N) (v+ N (vscale (noise3d (vscale P 5) 0.001) 0.1))))