-
Notifications
You must be signed in to change notification settings - Fork 0
/
AFM_SHADER.converted.osl
41 lines (40 loc) · 1.06 KB
/
AFM_SHADER.converted.osl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//OSL script generated by OSL_Generator version=0.2a
shader AFM (
float Zshift = 0.0,
float Z_factor = 3.0,
float rr[5] = {0, 0.143382, 0.378752, 0.739012, 1},
float gg[5] = {0, 0.00099481, 0.00735294, 0.582986, 1},
float bb[5] = {0, 0, 0, 0, 1},
float hh[5] = {0, 0.6183, 4.5699, 10.6183, 15},
output color Color = 0
)
{ int arlength = arraylength(rr);
float delta = 0;
float dz = 0;
float r = 0;
float g = 0;
float b = 0;
float Z_nm = (P[2] / Z_factor) * 100 - Zshift; /* from internal blender coords to nm. Inversion of the formula used in the data importer */
if (Z_nm<=hh[1] ) {
r=rr[1];
g=gg[1];
b=bb[1];
}
for (int i = 2;i <= arlength-1; ++i) {
if (Z_nm>hh[i-1] && Z_nm<=hh[i])
{ delta = (hh[i]-hh[i-1]);
dz = Z_nm-hh[i-1];
r = dz * ( rr[i] -rr[i-1] ) / delta + rr[i-1];
g = dz * ( gg[i] -gg[i-1] ) / delta + gg[i-1];
b = dz * ( bb[i] -bb[i-1] ) / delta + bb[i-1];
break;
}
}
if (Z_nm>=hh[arlength])
{ r = rr[arlength];
g = gg[arlength];
b = bb[arlength];
}
color C = color ("rgb", r,g,b);
Color= C;
}