wood osl

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/

i like learn a use it , i don’t know how do it