]> git.mxchange.org Git - simgear.git/commitdiff
Move Noise from scene/material to scene/util
authorFrederic Bouvier <fredfgfs01@free.fr>
Sun, 5 Feb 2012 22:25:02 +0000 (23:25 +0100)
committerFrederic Bouvier <fredfgfs01@free.fr>
Sun, 4 Mar 2012 19:21:46 +0000 (20:21 +0100)
simgear/scene/material/CMakeLists.txt
simgear/scene/material/Noise.cxx [deleted file]
simgear/scene/material/Noise.hxx [deleted file]
simgear/scene/util/Noise.cxx [new file with mode: 0644]
simgear/scene/util/Noise.hxx [new file with mode: 0644]
simgear/scene/util/StateAttributeFactory.cxx

index 3527a1420c28d51cc5d699d0c48041e1d5ea75c6..ccd0b2792c3be7469ba819ae08c8bfa505f822a8 100644 (file)
@@ -4,7 +4,6 @@ set(HEADERS
     EffectCullVisitor.hxx
     EffectGeode.hxx
     GLPredicate.hxx
-    Noise.hxx
     Pass.hxx
     Technique.hxx
     TextureBuilder.hxx
@@ -20,7 +19,6 @@ set(SOURCES
     EffectCullVisitor.cxx
     EffectGeode.cxx
     GLPredicate.cxx
-    Noise.cxx
     Pass.cxx
     Technique.cxx
     TextureBuilder.cxx
diff --git a/simgear/scene/material/Noise.cxx b/simgear/scene/material/Noise.cxx
deleted file mode 100644 (file)
index 23ecd79..0000000
+++ /dev/null
@@ -1,287 +0,0 @@
-/* OpenSceneGraph example, osgshaders.
-*
-*  Permission is hereby granted, free of charge, to any person obtaining a copy
-*  of this software and associated documentation files (the "Software"), to deal
-*  in the Software without restriction, including without limitation the rights
-*  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-*  copies of the Software, and to permit persons to whom the Software is
-*  furnished to do so, subject to the following conditions:
-*
-*  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-*  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-*  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-*  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-*  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-*  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-*  THE SOFTWARE.
-*/
-
-/************************************************************************
- *                                                                      *
- *                   Copyright (C) 2002  3Dlabs Inc. Ltd.               *
- *                                                                      *
- ************************************************************************/
-
-#include <math.h>
-#include <stdlib.h>
-
-/* Coherent noise function over 1, 2 or 3 dimensions */
-/* (copyright Ken Perlin) */
-
-#define MAXB 0x100
-#define N 0x1000
-#define NP 12   /* 2^N */
-#define NM 0xfff
-
-#define s_curve(t) ( t * t * (3. - 2. * t) )
-#define lerp(t, a, b) ( a + t * (b - a) )
-#define setup(i,b0,b1,r0,r1)\
-        t = vec[i] + N;\
-        b0 = ((int)t) & BM;\
-        b1 = (b0+1) & BM;\
-        r0 = t - (int)t;\
-        r1 = r0 - 1.;
-#define at2(rx,ry) ( rx * q[0] + ry * q[1] )
-#define at3(rx,ry,rz) ( rx * q[0] + ry * q[1] + rz * q[2] )
-
-static void initNoise(void);
-
-static int p[MAXB + MAXB + 2];
-static double g3[MAXB + MAXB + 2][3];
-static double g2[MAXB + MAXB + 2][2];
-static double g1[MAXB + MAXB + 2];
-
-int start;
-int B;
-int BM;
-
-
-void SetNoiseFrequency(int frequency)
-{
-        start = 1;
-        B = frequency;
-        BM = B-1;
-}
-
-double noise1(double arg)
-{
-   int bx0, bx1;
-   double rx0, rx1, sx, t, u, v, vec[1];
-
-   vec[0] = arg;
-   if (start) {
-      start = 0;
-      initNoise();
-   }
-
-   setup(0,bx0,bx1,rx0,rx1);
-
-   sx = s_curve(rx0);
-   u = rx0 * g1[ p[ bx0 ] ];
-   v = rx1 * g1[ p[ bx1 ] ];
-
-   return(lerp(sx, u, v));
-}
-
-double noise2(double vec[2])
-{
-   int bx0, bx1, by0, by1, b00, b10, b01, b11;
-   double rx0, rx1, ry0, ry1, *q, sx, sy, a, b, t, u, v;
-   int i, j;
-
-   if (start) {
-      start = 0;
-      initNoise();
-   }
-
-   setup(0, bx0,bx1, rx0,rx1);
-   setup(1, by0,by1, ry0,ry1);
-
-   i = p[ bx0 ];
-   j = p[ bx1 ];
-
-   b00 = p[ i + by0 ];
-   b10 = p[ j + by0 ];
-   b01 = p[ i + by1 ];
-   b11 = p[ j + by1 ];
-
-   sx = s_curve(rx0);
-   sy = s_curve(ry0);
-
-   q = g2[ b00 ] ; u = at2(rx0,ry0);
-   q = g2[ b10 ] ; v = at2(rx1,ry0);
-   a = lerp(sx, u, v);
-
-   q = g2[ b01 ] ; u = at2(rx0,ry1);
-   q = g2[ b11 ] ; v = at2(rx1,ry1);
-   b = lerp(sx, u, v);
-
-   return lerp(sy, a, b);
-}
-
-double noise3(double vec[3])
-{
-   int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11;
-   double rx0, rx1, ry0, ry1, rz0, rz1, *q, sy, sz, a, b, c, d, t, u, v;
-   int i, j;
-
-   if (start) {
-      start = 0;
-      initNoise();
-   }
-
-   setup(0, bx0,bx1, rx0,rx1);
-   setup(1, by0,by1, ry0,ry1);
-   setup(2, bz0,bz1, rz0,rz1);
-
-   i = p[ bx0 ];
-   j = p[ bx1 ];
-
-   b00 = p[ i + by0 ];
-   b10 = p[ j + by0 ];
-   b01 = p[ i + by1 ];
-   b11 = p[ j + by1 ];
-
-   t  = s_curve(rx0);
-   sy = s_curve(ry0);
-   sz = s_curve(rz0);
-
-   q = g3[ b00 + bz0 ] ; u = at3(rx0,ry0,rz0);
-   q = g3[ b10 + bz0 ] ; v = at3(rx1,ry0,rz0);
-   a = lerp(t, u, v);
-
-   q = g3[ b01 + bz0 ] ; u = at3(rx0,ry1,rz0);
-   q = g3[ b11 + bz0 ] ; v = at3(rx1,ry1,rz0);
-   b = lerp(t, u, v);
-
-   c = lerp(sy, a, b);
-
-   q = g3[ b00 + bz1 ] ; u = at3(rx0,ry0,rz1);
-   q = g3[ b10 + bz1 ] ; v = at3(rx1,ry0,rz1);
-   a = lerp(t, u, v);
-
-   q = g3[ b01 + bz1 ] ; u = at3(rx0,ry1,rz1);
-   q = g3[ b11 + bz1 ] ; v = at3(rx1,ry1,rz1);
-   b = lerp(t, u, v);
-
-   d = lerp(sy, a, b);
-
-   //fprintf(stderr, "%f\n", lerp(sz, c, d));
-
-   return lerp(sz, c, d);
-}
-
-void normalize2(double v[2])
-{
-   double s;
-
-   s = sqrt(v[0] * v[0] + v[1] * v[1]);
-   v[0] = v[0] / s;
-   v[1] = v[1] / s;
-}
-
-void normalize3(double v[3])
-{
-   double s;
-
-   s = sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
-   v[0] = v[0] / s;
-   v[1] = v[1] / s;
-   v[2] = v[2] / s;
-}
-
-void initNoise(void)
-{
-   int i, j, k;
-
-   srand(30757);
-   for (i = 0 ; i < B ; i++) {
-      p[i] = i;
-      g1[i] = (double)((rand() % (B + B)) - B) / B;
-
-      for (j = 0 ; j < 2 ; j++)
-         g2[i][j] = (double)((rand() % (B + B)) - B) / B;
-      normalize2(g2[i]);
-
-      for (j = 0 ; j < 3 ; j++)
-         g3[i][j] = (double)((rand() % (B + B)) - B) / B;
-      normalize3(g3[i]);
-   }
-
-   while (--i) {
-      k = p[i];
-      p[i] = p[j = rand() % B];
-      p[j] = k;
-   }
-
-   for (i = 0 ; i < B + 2 ; i++) {
-      p[B + i] = p[i];
-      g1[B + i] = g1[i];
-      for (j = 0 ; j < 2 ; j++)
-         g2[B + i][j] = g2[i][j];
-      for (j = 0 ; j < 3 ; j++)
-         g3[B + i][j] = g3[i][j];
-   }
-}
-
-/* --- My harmonic summing functions - PDB --------------------------*/
-
-/*
-   In what follows "alpha" is the weight when the sum is formed.
-   Typically it is 2, As this approaches 1 the function is noisier.
-   "beta" is the harmonic scaling/spacing, typically 2.
-*/
-
-double PerlinNoise1D(double x,double alpha,double beta,int n)
-{
-   int i;
-   double val,sum = 0;
-   double p,scale = 1;
-
-   p = x;
-   for (i=0;i<n;i++) {
-      val = noise1(p);
-      sum += val / scale;
-      scale *= alpha;
-      p *= beta;
-   }
-   return(sum);
-}
-
-double PerlinNoise2D(double x,double y,double alpha,double beta,int n)
-{
-   int i;
-   double val,sum = 0;
-   double p[2],scale = 1;
-
-   p[0] = x;
-   p[1] = y;
-   for (i=0;i<n;i++) {
-      val = noise2(p);
-      sum += val / scale;
-      scale *= alpha;
-      p[0] *= beta;
-      p[1] *= beta;
-   }
-   return(sum);
-}
-
-double PerlinNoise3D(double x,double y,double z,double alpha,double beta,int n)
-{
-   int i;
-   double val,sum = 0;
-   double p[3],scale = 1;
-
-   p[0] = x;
-   p[1] = y;
-   p[2] = z;
-   for (i=0;i<n;i++) {
-      val = noise3(p);
-      sum += val / scale;
-      scale *= alpha;
-      p[0] *= beta;
-      p[1] *= beta;
-      p[2] *= beta;
-   }
-   return(sum);
-}
diff --git a/simgear/scene/material/Noise.hxx b/simgear/scene/material/Noise.hxx
deleted file mode 100644 (file)
index 33716c9..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*-c++-*-
-*
-*  OpenSceneGraph example, osgshaders.
-*
-*  Permission is hereby granted, free of charge, to any person obtaining a copy
-*  of this software and associated documentation files (the "Software"), to deal
-*  in the Software without restriction, including without limitation the rights
-*  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-*  copies of the Software, and to permit persons to whom the Software is
-*  furnished to do so, subject to the following conditions:
-*
-*  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-*  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-*  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-*  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-*  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-*  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-*  THE SOFTWARE.
-*/
-
-
-/************************************************************************
- *                                                                      *
- *                   Copyright (C) 2002  3Dlabs Inc. Ltd.               *
- *                                                                      *
- ***********************************************************************/
-
-#ifndef __ogl2_demo_h__
-#define __ogl2_demo_h__
-
-
-extern void SetNoiseFrequency(int frequency);
-
-extern double noise1(double arg);
-extern double noise2(double vec[2]);
-extern double noise3(double vec[3]);
-extern void normalize2(double vec[2]);
-extern void normalize3(double vec[3]);
-
-/*
-   In what follows "alpha" is the weight when the sum is formed.
-   Typically it is 2, As this approaches 1 the function is noisier.
-   "beta" is the harmonic scaling/spacing, typically 2.
-*/
-
-extern double PerlinNoise1D(double x,double alpha, double beta, int n);
-extern double PerlinNoise2D(double x,double y,double alpha, double beta, int n);
-extern double PerlinNoise3D(double x,double y,double z,double alpha, double beta, int n);
-
-
-#endif // __ogl2_demo_h__
diff --git a/simgear/scene/util/Noise.cxx b/simgear/scene/util/Noise.cxx
new file mode 100644 (file)
index 0000000..23ecd79
--- /dev/null
@@ -0,0 +1,287 @@
+/* OpenSceneGraph example, osgshaders.
+*
+*  Permission is hereby granted, free of charge, to any person obtaining a copy
+*  of this software and associated documentation files (the "Software"), to deal
+*  in the Software without restriction, including without limitation the rights
+*  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+*  copies of the Software, and to permit persons to whom the Software is
+*  furnished to do so, subject to the following conditions:
+*
+*  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+*  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+*  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+*  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+*  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+*  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+*  THE SOFTWARE.
+*/
+
+/************************************************************************
+ *                                                                      *
+ *                   Copyright (C) 2002  3Dlabs Inc. Ltd.               *
+ *                                                                      *
+ ************************************************************************/
+
+#include <math.h>
+#include <stdlib.h>
+
+/* Coherent noise function over 1, 2 or 3 dimensions */
+/* (copyright Ken Perlin) */
+
+#define MAXB 0x100
+#define N 0x1000
+#define NP 12   /* 2^N */
+#define NM 0xfff
+
+#define s_curve(t) ( t * t * (3. - 2. * t) )
+#define lerp(t, a, b) ( a + t * (b - a) )
+#define setup(i,b0,b1,r0,r1)\
+        t = vec[i] + N;\
+        b0 = ((int)t) & BM;\
+        b1 = (b0+1) & BM;\
+        r0 = t - (int)t;\
+        r1 = r0 - 1.;
+#define at2(rx,ry) ( rx * q[0] + ry * q[1] )
+#define at3(rx,ry,rz) ( rx * q[0] + ry * q[1] + rz * q[2] )
+
+static void initNoise(void);
+
+static int p[MAXB + MAXB + 2];
+static double g3[MAXB + MAXB + 2][3];
+static double g2[MAXB + MAXB + 2][2];
+static double g1[MAXB + MAXB + 2];
+
+int start;
+int B;
+int BM;
+
+
+void SetNoiseFrequency(int frequency)
+{
+        start = 1;
+        B = frequency;
+        BM = B-1;
+}
+
+double noise1(double arg)
+{
+   int bx0, bx1;
+   double rx0, rx1, sx, t, u, v, vec[1];
+
+   vec[0] = arg;
+   if (start) {
+      start = 0;
+      initNoise();
+   }
+
+   setup(0,bx0,bx1,rx0,rx1);
+
+   sx = s_curve(rx0);
+   u = rx0 * g1[ p[ bx0 ] ];
+   v = rx1 * g1[ p[ bx1 ] ];
+
+   return(lerp(sx, u, v));
+}
+
+double noise2(double vec[2])
+{
+   int bx0, bx1, by0, by1, b00, b10, b01, b11;
+   double rx0, rx1, ry0, ry1, *q, sx, sy, a, b, t, u, v;
+   int i, j;
+
+   if (start) {
+      start = 0;
+      initNoise();
+   }
+
+   setup(0, bx0,bx1, rx0,rx1);
+   setup(1, by0,by1, ry0,ry1);
+
+   i = p[ bx0 ];
+   j = p[ bx1 ];
+
+   b00 = p[ i + by0 ];
+   b10 = p[ j + by0 ];
+   b01 = p[ i + by1 ];
+   b11 = p[ j + by1 ];
+
+   sx = s_curve(rx0);
+   sy = s_curve(ry0);
+
+   q = g2[ b00 ] ; u = at2(rx0,ry0);
+   q = g2[ b10 ] ; v = at2(rx1,ry0);
+   a = lerp(sx, u, v);
+
+   q = g2[ b01 ] ; u = at2(rx0,ry1);
+   q = g2[ b11 ] ; v = at2(rx1,ry1);
+   b = lerp(sx, u, v);
+
+   return lerp(sy, a, b);
+}
+
+double noise3(double vec[3])
+{
+   int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11;
+   double rx0, rx1, ry0, ry1, rz0, rz1, *q, sy, sz, a, b, c, d, t, u, v;
+   int i, j;
+
+   if (start) {
+      start = 0;
+      initNoise();
+   }
+
+   setup(0, bx0,bx1, rx0,rx1);
+   setup(1, by0,by1, ry0,ry1);
+   setup(2, bz0,bz1, rz0,rz1);
+
+   i = p[ bx0 ];
+   j = p[ bx1 ];
+
+   b00 = p[ i + by0 ];
+   b10 = p[ j + by0 ];
+   b01 = p[ i + by1 ];
+   b11 = p[ j + by1 ];
+
+   t  = s_curve(rx0);
+   sy = s_curve(ry0);
+   sz = s_curve(rz0);
+
+   q = g3[ b00 + bz0 ] ; u = at3(rx0,ry0,rz0);
+   q = g3[ b10 + bz0 ] ; v = at3(rx1,ry0,rz0);
+   a = lerp(t, u, v);
+
+   q = g3[ b01 + bz0 ] ; u = at3(rx0,ry1,rz0);
+   q = g3[ b11 + bz0 ] ; v = at3(rx1,ry1,rz0);
+   b = lerp(t, u, v);
+
+   c = lerp(sy, a, b);
+
+   q = g3[ b00 + bz1 ] ; u = at3(rx0,ry0,rz1);
+   q = g3[ b10 + bz1 ] ; v = at3(rx1,ry0,rz1);
+   a = lerp(t, u, v);
+
+   q = g3[ b01 + bz1 ] ; u = at3(rx0,ry1,rz1);
+   q = g3[ b11 + bz1 ] ; v = at3(rx1,ry1,rz1);
+   b = lerp(t, u, v);
+
+   d = lerp(sy, a, b);
+
+   //fprintf(stderr, "%f\n", lerp(sz, c, d));
+
+   return lerp(sz, c, d);
+}
+
+void normalize2(double v[2])
+{
+   double s;
+
+   s = sqrt(v[0] * v[0] + v[1] * v[1]);
+   v[0] = v[0] / s;
+   v[1] = v[1] / s;
+}
+
+void normalize3(double v[3])
+{
+   double s;
+
+   s = sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
+   v[0] = v[0] / s;
+   v[1] = v[1] / s;
+   v[2] = v[2] / s;
+}
+
+void initNoise(void)
+{
+   int i, j, k;
+
+   srand(30757);
+   for (i = 0 ; i < B ; i++) {
+      p[i] = i;
+      g1[i] = (double)((rand() % (B + B)) - B) / B;
+
+      for (j = 0 ; j < 2 ; j++)
+         g2[i][j] = (double)((rand() % (B + B)) - B) / B;
+      normalize2(g2[i]);
+
+      for (j = 0 ; j < 3 ; j++)
+         g3[i][j] = (double)((rand() % (B + B)) - B) / B;
+      normalize3(g3[i]);
+   }
+
+   while (--i) {
+      k = p[i];
+      p[i] = p[j = rand() % B];
+      p[j] = k;
+   }
+
+   for (i = 0 ; i < B + 2 ; i++) {
+      p[B + i] = p[i];
+      g1[B + i] = g1[i];
+      for (j = 0 ; j < 2 ; j++)
+         g2[B + i][j] = g2[i][j];
+      for (j = 0 ; j < 3 ; j++)
+         g3[B + i][j] = g3[i][j];
+   }
+}
+
+/* --- My harmonic summing functions - PDB --------------------------*/
+
+/*
+   In what follows "alpha" is the weight when the sum is formed.
+   Typically it is 2, As this approaches 1 the function is noisier.
+   "beta" is the harmonic scaling/spacing, typically 2.
+*/
+
+double PerlinNoise1D(double x,double alpha,double beta,int n)
+{
+   int i;
+   double val,sum = 0;
+   double p,scale = 1;
+
+   p = x;
+   for (i=0;i<n;i++) {
+      val = noise1(p);
+      sum += val / scale;
+      scale *= alpha;
+      p *= beta;
+   }
+   return(sum);
+}
+
+double PerlinNoise2D(double x,double y,double alpha,double beta,int n)
+{
+   int i;
+   double val,sum = 0;
+   double p[2],scale = 1;
+
+   p[0] = x;
+   p[1] = y;
+   for (i=0;i<n;i++) {
+      val = noise2(p);
+      sum += val / scale;
+      scale *= alpha;
+      p[0] *= beta;
+      p[1] *= beta;
+   }
+   return(sum);
+}
+
+double PerlinNoise3D(double x,double y,double z,double alpha,double beta,int n)
+{
+   int i;
+   double val,sum = 0;
+   double p[3],scale = 1;
+
+   p[0] = x;
+   p[1] = y;
+   p[2] = z;
+   for (i=0;i<n;i++) {
+      val = noise3(p);
+      sum += val / scale;
+      scale *= alpha;
+      p[0] *= beta;
+      p[1] *= beta;
+      p[2] *= beta;
+   }
+   return(sum);
+}
diff --git a/simgear/scene/util/Noise.hxx b/simgear/scene/util/Noise.hxx
new file mode 100644 (file)
index 0000000..33716c9
--- /dev/null
@@ -0,0 +1,51 @@
+/* -*-c++-*-
+*
+*  OpenSceneGraph example, osgshaders.
+*
+*  Permission is hereby granted, free of charge, to any person obtaining a copy
+*  of this software and associated documentation files (the "Software"), to deal
+*  in the Software without restriction, including without limitation the rights
+*  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+*  copies of the Software, and to permit persons to whom the Software is
+*  furnished to do so, subject to the following conditions:
+*
+*  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+*  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+*  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+*  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+*  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+*  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+*  THE SOFTWARE.
+*/
+
+
+/************************************************************************
+ *                                                                      *
+ *                   Copyright (C) 2002  3Dlabs Inc. Ltd.               *
+ *                                                                      *
+ ***********************************************************************/
+
+#ifndef __ogl2_demo_h__
+#define __ogl2_demo_h__
+
+
+extern void SetNoiseFrequency(int frequency);
+
+extern double noise1(double arg);
+extern double noise2(double vec[2]);
+extern double noise3(double vec[3]);
+extern void normalize2(double vec[2]);
+extern void normalize3(double vec[3]);
+
+/*
+   In what follows "alpha" is the weight when the sum is formed.
+   Typically it is 2, As this approaches 1 the function is noisier.
+   "beta" is the harmonic scaling/spacing, typically 2.
+*/
+
+extern double PerlinNoise1D(double x,double alpha, double beta, int n);
+extern double PerlinNoise2D(double x,double y,double alpha, double beta, int n);
+extern double PerlinNoise3D(double x,double y,double z,double alpha, double beta, int n);
+
+
+#endif // __ogl2_demo_h__
index 016eb441771f53d92c53e630c6654027afb4da4a..5232511769a2b6cd1cccd093a99e9598d3c67251 100644 (file)
@@ -32,7 +32,7 @@
 
 #include <osg/Image>
 
-#include <simgear/scene/material/Noise.hxx>
+#include "Noise.hxx"
 
 using namespace osg;