Shaders
displacenoise shader
/*-______________________________________________________________________
**
** displacenoise shader... dsward@webnation.com
** VIDI Presenter 3D Repository - http://www.webnation.com
**
** offsetX, offsetY, offsetZ = offset in the noise lattice
** scaleX, scaleY, scaleZ = scale in the noise lattice
** scaleRed, scaleGreen, scaleBlue = displacement scale channels
** Km = displacement maximum
**
** To match Km, set scaleRed + scaleGreen + scaleBlue = 3
** ______________________________________________________________________
*/
displacement
displacenoise (float noiseType = 3,
offsetX = 0.0,
offsetY = 0.0,
offsetZ = 0.0,
scaleX = 1.0,
scaleY = 1.0,
scaleZ = 1.0,
scaleRed = 1.0,
scaleGreen = 1.0,
scaleBlue = 1.0,
Km = 1.0; )
{
point noiseAt;
color noisy = 0;
float amplitude = 0;
P = transform("object", P);
N = transform("object", N + point "object" (0,0,0));
if (noiseType <= 0) noiseAt = (t, 0, 0);
if (noiseType == 1) noiseAt = (s, 0, 0);
if (noiseType == 2) noiseAt = (s, t, 0);
if (noiseType >= 3) noiseAt = P;
setxcomp(noiseAt, (xcomp(noiseAt) + offsetX) * scaleX);
setycomp(noiseAt, (ycomp(noiseAt) + offsetY) * scaleY);
setzcomp(noiseAt, (zcomp(noiseAt) + offsetZ) * scaleZ);
noisy = color noise (noiseAt);
amplitude = comp(noisy, 0) * scaleRed;
amplitude += comp(noisy, 1) * scaleGreen;
amplitude += comp(noisy, 2) * scaleBlue;
if (amplitude != 0.0)
{
amplitude = amplitude / 3.0;
}
amplitude *= Km;
P += normalize(N) * amplitude;
P = transform("object", "current", P);
N = calculatenormal(P);
}
Copyright © 1997 by
WebNation
All trademarks are the property of their respective holders