HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
UT_XNoise.h
Go to the documentation of this file.
1 #ifndef __UT_XNoise__
2 #define __UT_XNoise__
3 
4 #include "UT_API.h"
5 #include <VM/VM_SIMD.h>
6 #include <SYS/SYS_Types.h>
7 
9 {
10 public:
11  ///
12  /// Initialises the noise function. Must be called before invoking any
13  /// other functions.
14  ///
15  static void initNoise();
16 
17  ///
18  /// The internal permutation and random tables and size. We can pass this
19  /// buffer to OpenCL functions in $SHS/ocl/include/xnoise.h.
20  static void *data();
21  ///
22  /// size of data() in bytes.
23  ///
24  static size_t dataSize();
25 
26  ///
27  /// Noise function naming schemes:
28  /// noise(Output dim)D(Input dim)D[Periodic]
29  ///
30  static fpreal32
31  noise1D1D(fpreal32 x);
32  static fpreal32
33  noise1D1DP(fpreal32 x,
34  uint32 const xp);
35  static fpreal32
36  noise1D1D(fpreal32& dx,
37  fpreal32 x);
38  static fpreal32
39  noise1D1DP(fpreal32& dx,
40  fpreal32 x,
41  uint32 const xp);
42  static fpreal32
44  static fpreal32
45  noise1D2DP(fpreal32 x, fpreal32 y,
46  uint32 const xp, uint32 const yp);
47  static fpreal32
48  noise1D2D(fpreal32& dx, fpreal32& dy,
49  fpreal32 x, fpreal32 y);
50  static fpreal32
51  noise1D2DP(fpreal32& dx, fpreal32& dy,
52  fpreal32 x, fpreal32 y,
53  uint32 const xp, uint32 const yp);
54  static fpreal32
56  static fpreal32
57  noise1D3DP(fpreal32 x, fpreal32 y, fpreal32 z,
58  uint32 const xp, uint32 const yp, uint32 const zp);
59  static fpreal32
60  noise1D3D(fpreal32& dx, fpreal32& dy, fpreal32& dz,
61  fpreal32 x, fpreal32 y, fpreal32 z);
62  static fpreal32
63  noise1D3DP(fpreal32& dx, fpreal32& dy, fpreal32& dz,
64  fpreal32 x, fpreal32 y, fpreal32 z,
65  uint32 const xp, uint32 const yp, uint32 const zp);
66  static fpreal32
68  static fpreal32
69  noise1D4DP(fpreal32 x, fpreal32 y, fpreal32 z, fpreal32 w,
70  uint32 const xp, uint32 const yp, uint32 const zp, uint32 const wp);
71  static fpreal32
72  noise1D4D(fpreal32& dx, fpreal32& dy, fpreal32& dz, fpreal32& dw,
73  fpreal32 x, fpreal32 y, fpreal32 z, fpreal32 w);
74  static fpreal32
75  noise1D4DP(fpreal32& dx, fpreal32& dy, fpreal32& dz, fpreal32& dw,
77  uint32 const xp, uint32 const yp, uint32 const zp, uint32 const wp);
78  static void
79  noise3D1D(fpreal32 f[3],
80  fpreal32 x);
81  static void
82  noise3D1DP(fpreal32 f[3],
83  fpreal32 x,
84  uint32 const xp);
85  static void
86  noise3D1D(fpreal32 f[3],
87  fpreal32 dx[3],
88  fpreal32 x);
89  static void
90  noise3D1DP(fpreal32 f[3],
91  fpreal32 dx[3],
92  fpreal32 x,
93  uint32 const xp);
94  static void
95  noise3D2D(fpreal32 f[3],
96  fpreal32 x, fpreal32 y);
97  static void
98  noise3D2DP(fpreal32 f[3],
99  fpreal32 x, fpreal32 y,
100  uint32 const xp, uint32 const yp);
101  static void
102  noise3D2D(fpreal32 f[3],
103  fpreal32 dx[3], fpreal32 dy[3],
104  fpreal32 x, fpreal32 y);
105  static void
106  noise3D2DP(fpreal32 f[3],
107  fpreal32 dx[3], fpreal32 dy[3],
108  fpreal32 x, fpreal32 y,
109  uint32 const xp, uint32 const yp);
110  static void
111  noise3D3D(fpreal32 f[3],
112  fpreal32 x, fpreal32 y, fpreal32 z);
113  static void
114  noise3D3DP(fpreal32 f[3],
115  fpreal32 x, fpreal32 y, fpreal32 z,
116  uint32 const xp, uint32 const yp, uint32 const zp);
117  static void
118  noise3D3D(fpreal32 f[3],
119  fpreal32 dx[3], fpreal32 dy[3], fpreal32 dz[3],
120  fpreal32 x, fpreal32 y, fpreal32 z);
121  static void
122  noise3D3DP(fpreal32 f[3],
123  fpreal32 dx[3], fpreal32 dy[3], fpreal32 dz[3],
124  fpreal32 x, fpreal32 y, fpreal32 z,
125  uint32 const xp, uint32 const yp, uint32 const zp);
126  static void
127  noise3D4D(fpreal32 f[3],
128  fpreal32 x, fpreal32 y, fpreal32 z, fpreal32 w);
129  static void
130  noise3D4DP(fpreal32 f[3],
131  fpreal32 x, fpreal32 y, fpreal32 z, fpreal32 w,
132  uint32 const xp, uint32 const yp, uint32 const zp, uint32 const wp);
133  static void
134  noise3D4D(fpreal32 f[3],
135  fpreal32 dx[3], fpreal32 dy[3], fpreal32 dz[3], fpreal32 dw[3],
136  fpreal32 x, fpreal32 y, fpreal32 z, fpreal32 w);
137  static void
138  noise3D4DP(fpreal32 f[3],
139  fpreal32 dx[3], fpreal32 dy[3], fpreal32 dz[3], fpreal32 dw[3],
140  fpreal32 x, fpreal32 y, fpreal32 z, fpreal32 w,
141  uint32 const xp, uint32 const yp, uint32 const zp, uint32 const wp);
142  static fpreal64
143  noise1D1D(fpreal64 x);
144  static fpreal64
145  noise1D1DP(fpreal64 x,
146  uint64 const xp);
147  static fpreal64
148  noise1D1D(fpreal64& dx,
149  fpreal64 x);
150  static fpreal64
151  noise1D1DP(fpreal64& dx,
152  fpreal64 x,
153  uint64 const xp);
154  static fpreal64
156  static fpreal64
157  noise1D2DP(fpreal64 x, fpreal64 y,
158  uint64 const xp, uint64 const yp);
159  static fpreal64
160  noise1D2D(fpreal64& dx, fpreal64& dy,
161  fpreal64 x, fpreal64 y);
162  static fpreal64
163  noise1D2DP(fpreal64& dx, fpreal64& dy,
164  fpreal64 x, fpreal64 y,
165  uint64 const xp, uint64 const yp);
166  static fpreal64
168  static fpreal64
169  noise1D3DP(fpreal64 x, fpreal64 y, fpreal64 z,
170  uint64 const xp, uint64 const yp, uint64 const zp);
171  static fpreal64
172  noise1D3D(fpreal64& dx, fpreal64& dy, fpreal64& dz,
173  fpreal64 x, fpreal64 y, fpreal64 z);
174  static fpreal64
175  noise1D3DP(fpreal64& dx, fpreal64& dy, fpreal64& dz,
176  fpreal64 x, fpreal64 y, fpreal64 z,
177  uint64 const xp, uint64 const yp, uint64 const zp);
178  static fpreal64
180  static fpreal64
181  noise1D4DP(fpreal64 x, fpreal64 y, fpreal64 z, fpreal64 w,
182  uint64 const xp, uint64 const yp, uint64 const zp, uint64 const wp);
183  static fpreal64
184  noise1D4D(fpreal64& dx, fpreal64& dy, fpreal64& dz, fpreal64& dw,
185  fpreal64 x, fpreal64 y, fpreal64 z, fpreal64 w);
186  static fpreal64
187  noise1D4DP(fpreal64& dx, fpreal64& dy, fpreal64& dz, fpreal64& dw,
188  fpreal64 x, fpreal64 y, fpreal64 z, fpreal64 w,
189  uint64 const xp, uint64 const yp, uint64 const zp, uint64 const wp);
190  static void
191  noise3D1D(fpreal64 f[3],
192  fpreal64 x);
193  static void
194  noise3D1DP(fpreal64 f[3],
195  fpreal64 x,
196  uint64 const xp);
197  static void
198  noise3D1D(fpreal64 f[3],
199  fpreal64 dx[3],
200  fpreal64 x);
201  static void
202  noise3D1DP(fpreal64 f[3],
203  fpreal64 dx[3],
204  fpreal64 x,
205  uint64 const xp);
206  static void
207  noise3D2D(fpreal64 f[3],
208  fpreal64 x, fpreal64 y);
209  static void
210  noise3D2DP(fpreal64 f[3],
211  fpreal64 x, fpreal64 y,
212  uint64 const xp, uint64 const yp);
213  static void
214  noise3D2D(fpreal64 f[3],
215  fpreal64 dx[3], fpreal64 dy[3],
216  fpreal64 x, fpreal64 y);
217  static void
218  noise3D2DP(fpreal64 f[3],
219  fpreal64 dx[3], fpreal64 dy[3],
220  fpreal64 x, fpreal64 y,
221  uint64 const xp, uint64 const yp);
222  static void
223  noise3D3D(fpreal64 f[3],
224  fpreal64 x, fpreal64 y, fpreal64 z);
225  static void
226  noise3D3DP(fpreal64 f[3],
227  fpreal64 x, fpreal64 y, fpreal64 z,
228  uint64 const xp, uint64 const yp, uint64 const zp);
229  static void
230  noise3D3D(fpreal64 f[3],
231  fpreal64 dx[3], fpreal64 dy[3], fpreal64 dz[3],
232  fpreal64 x, fpreal64 y, fpreal64 z);
233  static void
234  noise3D3DP(fpreal64 f[3],
235  fpreal64 dx[3], fpreal64 dy[3], fpreal64 dz[3],
236  fpreal64 x, fpreal64 y, fpreal64 z,
237  uint64 const xp, uint64 const yp, uint64 const zp);
238  static void
239  noise3D4D(fpreal64 f[3],
240  fpreal64 x, fpreal64 y, fpreal64 z, fpreal64 w);
241  static void
242  noise3D4DP(fpreal64 f[3],
243  fpreal64 x, fpreal64 y, fpreal64 z, fpreal64 w,
244  uint64 const xp, uint64 const yp, uint64 const zp, uint64 const wp);
245  static void
246  noise3D4D(fpreal64 f[3],
247  fpreal64 dx[3], fpreal64 dy[3], fpreal64 dz[3], fpreal64 dw[3],
248  fpreal64 x, fpreal64 y, fpreal64 z, fpreal64 w);
249  static void
250  noise3D4DP(fpreal64 f[3],
251  fpreal64 dx[3], fpreal64 dy[3], fpreal64 dz[3], fpreal64 dw[3],
252  fpreal64 x, fpreal64 y, fpreal64 z, fpreal64 w,
253  uint64 const xp, uint64 const yp, uint64 const zp, uint64 const wp);
254 
255  static v4uf
256  noise1D1D(v4uf x);
257  static v4uf
258  noise1D1DP(v4uf x,
259  v4uu const xp);
260  static v4uf
261  noise1D1D(v4uf& dx,
262  v4uf x);
263  static v4uf
264  noise1D1DP(v4uf& dx,
265  v4uf x,
266  v4uu const xp);
267  static void
268  noise3D1D(v4uf f[3],
269  v4uf x);
270  static void
271  noise3D1DP(v4uf f[3],
272  v4uf x,
273  v4uu const xp);
274  static void
275  noise3D1D(v4uf f[3],
276  v4uf dx[3],
277  v4uf x);
278  static void
279  noise3D1DP(v4uf f[3],
280  v4uf dx[3],
281  v4uf x,
282  v4uu const xp);
283 
284  // Curlnoise functions
285  // 2D curlnoise from scalar noise
286  static void curlnoise2D2D(fpreal32 f[3], fpreal32 x, fpreal32 y);
287  static void curlnoise2D2D(fpreal64 f[3], fpreal64 x, fpreal64 y);
288  //static void curlnoise2D2D(v4uf n[3], const v4uf& x, const v4uf& y);
289  static void curlnoise2D3D(fpreal32 f[3], const fpreal32 x[3]);
290  static void curlnoise2D3D(fpreal64 f[3], const fpreal64 x[3]);
291  // 3D curlnoise from vector noise
292  static void curlnoise3D3D(fpreal32 f[3], const fpreal32 x[3]);
293  static void curlnoise3D3D(fpreal64 f[3], const fpreal64 x[3]);
294  static void curlnoise3D4D(fpreal32 f[3], const fpreal32 x[4]);
295  static void curlnoise3D4D(fpreal64 f[3], const fpreal64 x[4]);
296 };
297 
298 #endif // !__UT_XNoise__
void curlnoise2D2D(T f[2], T x, T y)
T noise1D2D(T x, T y)
GLboolean * data
Definition: glcorearb.h:131
GLdouble GLdouble GLdouble z
Definition: glcorearb.h:848
#define UT_API
Definition: UT_API.h:14
GLint y
Definition: glcorearb.h:103
unsigned long long uint64
Definition: SYS_Types.h:117
float fpreal32
Definition: SYS_Types.h:200
double fpreal64
Definition: SYS_Types.h:201
T noise1D4D(T x, T y, T z, T w)
void curlnoise2D3D(T f[2], T x, T y, T z)
GLfloat f
Definition: glcorearb.h:1926
void noise3D4D(T f[3], T x, T y, T z, T w)
Definition: VM_SIMD.h:48
Definition: VM_SIMD.h:188
GLint GLenum GLint x
Definition: glcorearb.h:409
void noise3D2D(T f[3], T x, T y)
void curlnoise3D4D(T f[3], T x, T y, T z, T w)
void curlnoise3D3D(T f[3], T x, T y, T z)
unsigned int uint32
Definition: SYS_Types.h:40
GLubyte GLubyte GLubyte GLubyte w
Definition: glcorearb.h:857
T noise1D3D(T x, T y, T z)
void noise3D3D(T f[3], T x, T y, T z)