Cycles: svn merge -r41225:41232 ^/trunk/blender
[blender.git] / intern / cycles / kernel / osl / nodes / node_stucci_texture.osl
1 /*
2  * Copyright 2011, Blender Foundation.
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  */
18
19 #include "stdosl.h"
20 #include "node_texture.h"
21
22 /* Stucci */
23
24 shader node_stucci_texture(
25         string Type = "Plastic",
26         string Basis = "Perlin",
27         int Hard = 0,
28         float Turbulence = 1.0,
29         float Size = 0.25,
30         point Vector = P,
31         output float Fac = 0.0)
32 {
33         float size = nonzero(Size, 1e-5);
34         point p = Vector/size;
35
36         float b2 = noise_basis_hard(p, Basis, Hard);
37         float ofs = Turbulence/200.0;
38
39         if(Type != "Plastic")
40                 ofs *= b2*b2;
41         
42         Fac = noise_basis_hard(point(p[0], p[1], p[2]+ofs), Basis, Hard);
43
44         if(Type == "Wall Out")
45                 Fac = 1.0 - Fac;
46         
47         Fac = max(Fac, 0.0);
48 }
49