float wood_grad(float x, float y, float r) {
return(mod(hypot(x, y), r) / r);
}
shader wood_texture (
point coords = P,
float ring_size = 1.0,
float yOffset = 0,
float xOffset = 0,
float zDecay = 0,
float noiseAmp = 1.0,
int orientation = 0,
output color wood = color(0.0, 0.0, 0.0)) {
int x_coord = 2;
int y_coord = 0;
int z_coord = 1;
if(orientation == 1) {
x_coord = 1;
y_coord = 0;
z_coord = 2;
}
if(orientation == 2) {
x_coord = 2;
y_coord = 1;
z_coord = 0;
}
float rNoise = noise(P) * noiseAmp;
float x = coords[x_coord];
float y = coords[y_coord];
float z = coords[z_coord];
float r = ring_size * 0.1 + rNoise - z * zDecay * 0.01;
wood = clamp(wood_grad(x + xOffset, y + yOffset, r), 0.2, 0.8);
}
you can find this on my site:
http://scripts.franciscocharrua.com/osl/blender-2.72/wood/