Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/kernel/shaders/node_texture.h')
-rw-r--r--intern/cycles/kernel/shaders/node_texture.h210
1 files changed, 105 insertions, 105 deletions
diff --git a/intern/cycles/kernel/shaders/node_texture.h b/intern/cycles/kernel/shaders/node_texture.h
index 88305fb320f..e1f3b900ee5 100644
--- a/intern/cycles/kernel/shaders/node_texture.h
+++ b/intern/cycles/kernel/shaders/node_texture.h
@@ -18,148 +18,148 @@
color cellnoise_color(point p)
{
- float r = cellnoise(p);
- float g = cellnoise(point(p[1], p[0], p[2]));
- float b = cellnoise(point(p[1], p[2], p[0]));
+ float r = cellnoise(p);
+ float g = cellnoise(point(p[1], p[0], p[2]));
+ float b = cellnoise(point(p[1], p[2], p[0]));
- return color(r, g, b);
+ return color(r, g, b);
}
void voronoi(point p, float e, float da[4], point pa[4])
{
- /* returns distances in da and point coords in pa */
- int xx, yy, zz, xi, yi, zi;
-
- xi = (int)floor(p[0]);
- yi = (int)floor(p[1]);
- zi = (int)floor(p[2]);
-
- da[0] = 1e10;
- da[1] = 1e10;
- da[2] = 1e10;
- da[3] = 1e10;
-
- for (xx = xi - 1; xx <= xi + 1; xx++) {
- for (yy = yi - 1; yy <= yi + 1; yy++) {
- for (zz = zi - 1; zz <= zi + 1; zz++) {
- point ip = point(xx, yy, zz);
- point vp = (point)cellnoise_color(ip);
- point pd = p - (vp + ip);
- float d = dot(pd, pd);
-
- vp += point(xx, yy, zz);
-
- if (d < da[0]) {
- da[3] = da[2];
- da[2] = da[1];
- da[1] = da[0];
- da[0] = d;
-
- pa[3] = pa[2];
- pa[2] = pa[1];
- pa[1] = pa[0];
- pa[0] = vp;
- }
- else if (d < da[1]) {
- da[3] = da[2];
- da[2] = da[1];
- da[1] = d;
-
- pa[3] = pa[2];
- pa[2] = pa[1];
- pa[1] = vp;
- }
- else if (d < da[2]) {
- da[3] = da[2];
- da[2] = d;
-
- pa[3] = pa[2];
- pa[2] = vp;
- }
- else if (d < da[3]) {
- da[3] = d;
- pa[3] = vp;
- }
- }
- }
- }
+ /* returns distances in da and point coords in pa */
+ int xx, yy, zz, xi, yi, zi;
+
+ xi = (int)floor(p[0]);
+ yi = (int)floor(p[1]);
+ zi = (int)floor(p[2]);
+
+ da[0] = 1e10;
+ da[1] = 1e10;
+ da[2] = 1e10;
+ da[3] = 1e10;
+
+ for (xx = xi - 1; xx <= xi + 1; xx++) {
+ for (yy = yi - 1; yy <= yi + 1; yy++) {
+ for (zz = zi - 1; zz <= zi + 1; zz++) {
+ point ip = point(xx, yy, zz);
+ point vp = (point)cellnoise_color(ip);
+ point pd = p - (vp + ip);
+ float d = dot(pd, pd);
+
+ vp += point(xx, yy, zz);
+
+ if (d < da[0]) {
+ da[3] = da[2];
+ da[2] = da[1];
+ da[1] = da[0];
+ da[0] = d;
+
+ pa[3] = pa[2];
+ pa[2] = pa[1];
+ pa[1] = pa[0];
+ pa[0] = vp;
+ }
+ else if (d < da[1]) {
+ da[3] = da[2];
+ da[2] = da[1];
+ da[1] = d;
+
+ pa[3] = pa[2];
+ pa[2] = pa[1];
+ pa[1] = vp;
+ }
+ else if (d < da[2]) {
+ da[3] = da[2];
+ da[2] = d;
+
+ pa[3] = pa[2];
+ pa[2] = vp;
+ }
+ else if (d < da[3]) {
+ da[3] = d;
+ pa[3] = vp;
+ }
+ }
+ }
+ }
}
/* Noise Bases */
float safe_noise(point p, string type)
{
- float f = 0.0;
+ float f = 0.0;
- /* Perlin noise in range -1..1 */
- if (type == "signed")
- f = noise("perlin", p);
+ /* Perlin noise in range -1..1 */
+ if (type == "signed")
+ f = noise("perlin", p);
- /* Perlin noise in range 0..1 */
- else
- f = noise(p);
+ /* Perlin noise in range 0..1 */
+ else
+ f = noise(p);
- /* can happen for big coordinates, things even out to 0.5 then anyway */
- if (!isfinite(f))
- return 0.5;
+ /* can happen for big coordinates, things even out to 0.5 then anyway */
+ if (!isfinite(f))
+ return 0.5;
- return f;
+ return f;
}
/* Turbulence */
float noise_turbulence(point p, float details, int hard)
{
- float fscale = 1.0;
- float amp = 1.0;
- float sum = 0.0;
- int i, n;
+ float fscale = 1.0;
+ float amp = 1.0;
+ float sum = 0.0;
+ int i, n;
- float octaves = clamp(details, 0.0, 16.0);
- n = (int)octaves;
+ float octaves = clamp(details, 0.0, 16.0);
+ n = (int)octaves;
- for (i = 0; i <= n; i++) {
- float t = safe_noise(fscale * p, "unsigned");
+ for (i = 0; i <= n; i++) {
+ float t = safe_noise(fscale * p, "unsigned");
- if (hard)
- t = fabs(2.0 * t - 1.0);
+ if (hard)
+ t = fabs(2.0 * t - 1.0);
- sum += t * amp;
- amp *= 0.5;
- fscale *= 2.0;
- }
+ sum += t * amp;
+ amp *= 0.5;
+ fscale *= 2.0;
+ }
- float rmd = octaves - floor(octaves);
+ float rmd = octaves - floor(octaves);
- if (rmd != 0.0) {
- float t = safe_noise(fscale * p, "unsigned");
+ if (rmd != 0.0) {
+ float t = safe_noise(fscale * p, "unsigned");
- if (hard)
- t = fabs(2.0 * t - 1.0);
+ if (hard)
+ t = fabs(2.0 * t - 1.0);
- float sum2 = sum + t * amp;
+ float sum2 = sum + t * amp;
- sum *= ((float)(1 << n) / (float)((1 << (n + 1)) - 1));
- sum2 *= ((float)(1 << (n + 1)) / (float)((1 << (n + 2)) - 1));
+ sum *= ((float)(1 << n) / (float)((1 << (n + 1)) - 1));
+ sum2 *= ((float)(1 << (n + 1)) / (float)((1 << (n + 2)) - 1));
- return (1.0 - rmd) * sum + rmd * sum2;
- }
- else {
- sum *= ((float)(1 << n) / (float)((1 << (n + 1)) - 1));
- return sum;
- }
+ return (1.0 - rmd) * sum + rmd * sum2;
+ }
+ else {
+ sum *= ((float)(1 << n) / (float)((1 << (n + 1)) - 1));
+ return sum;
+ }
}
/* Utility */
float nonzero(float f, float eps)
{
- float r;
+ float r;
- if (abs(f) < eps)
- r = sign(f) * eps;
- else
- r = f;
+ if (abs(f) < eps)
+ r = sign(f) * eps;
+ else
+ r = f;
- return r;
+ return r;
}