HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
UT_PNoise.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * NAME: UT_PNoise.h ( UT Library, C++)
7  *
8  * COMMENTS: New, nicely bounded noise functions.
9  * Allows for periodicity of noise as well.
10  */
11 
12 #ifndef __UT_PNoise__
13 #define __UT_PNoise__
14 
15 #include "UT_API.h"
16 
17 #include <VM/VM_SIMD.h>
18 #include <SYS/SYS_Types.h>
19 
20 #include "UT_VectorTypes.h"
21 
23 {
24 public:
25  static void initNoise();
26 
27  // Duplicated verbatim for fpreal64 and v4uf
28 
29  // Noise
30  static fpreal32 at1D(fpreal32 const x);
31  static fpreal32 at2D(fpreal32 const x, fpreal32 const y);
32  static fpreal32 at3D(fpreal32 const x, fpreal32 const y, fpreal32 const z);
33  static fpreal32 at4D(fpreal32 const x, fpreal32 const y, fpreal32 const z, fpreal32 const w);
34 
35  // Noise, Derivatives
36  static fpreal32 at1D(fpreal32& dfdx, fpreal32 const x);
37  static fpreal32 at2D(fpreal32& dfdx, fpreal32& dfdy,
38  fpreal32 const x, fpreal32 const y);
39  static fpreal32 at3D(fpreal32& dfdx, fpreal32& dfdy, fpreal32& dfdz,
40  fpreal32 const x, fpreal32 const y, fpreal32 const z);
41  static fpreal32 at4D(fpreal32& dfdx, fpreal32& dfdy, fpreal32& dfdz, fpreal32& dfdw,
42  fpreal32 const x, fpreal32 const y, fpreal32 const z, fpreal32 const w);
43 
44  // Noise, Vector
45  static void at1D(fpreal32 f[3], fpreal32 const x);
46  static void at2D(fpreal32 f[3],
47  fpreal32 const x, fpreal32 const y);
48  static void at3D(fpreal32 f[3],
49  fpreal32 const x, fpreal32 const y, fpreal32 const z);
50  static void at4D(fpreal32 f[3],
51  fpreal32 const x, fpreal32 const y, fpreal32 const z, fpreal32 const w);
52 
53  // Noise, Vector, with derivatives
54  static void at1D(fpreal32 f[3],
55  fpreal32 dfdx[3],
56  fpreal32 const x);
57  static void at2D(fpreal32 f[3],
58  fpreal32 dfdx[3], fpreal32 dfdy[3],
59  fpreal32 const x, fpreal32 const y);
60  static void at3D(fpreal32 f[3],
61  fpreal32 dfdx[3], fpreal32 dfdy[3], fpreal32 dfdz[3],
62  fpreal32 const x, fpreal32 const y, fpreal32 const z);
63  static void at4D(fpreal32 f[3],
64  fpreal32 dfdx[3], fpreal32 dfdy[3], fpreal32 dfdz[3], fpreal32 dfdw[3],
65  fpreal32 const x, fpreal32 const y, fpreal32 const z, fpreal32 const w);
66 
67  // Periodic Noise
68  static fpreal32 at1DP(fpreal32 const x,
69  uint32 const px);
70  static fpreal32 at2DP(fpreal32 const x, fpreal32 const y,
71  uint32 const px, uint32 const py);
72  static fpreal32 at3DP(fpreal32 const x, fpreal32 const y, fpreal32 const z,
73  uint32 const px, uint32 const py, uint32 const pz);
74  static fpreal32 at4DP(fpreal32 const x, fpreal32 const y, fpreal32 const z, fpreal32 const w,
75  uint32 const px, uint32 const py, uint32 const pz, uint32 const pw);
76 
77  // Periodic Noise, Derivatives
78  static fpreal32 at1DP(fpreal32& dfdx, fpreal32 const x,
79  uint32 const px);
80  static fpreal32 at2DP(fpreal32& dfdx, fpreal32& dfdy,
81  fpreal32 const x, fpreal32 const y,
82  uint32 const px, uint32 const py);
83  static fpreal32 at3DP(fpreal32& dfdx, fpreal32& dfdy, fpreal32& dfdz,
84  fpreal32 const x, fpreal32 const y, fpreal32 const z,
85  uint32 const px, uint32 const py, uint32 const pz);
86  static fpreal32 at4DP(fpreal32& dfdx, fpreal32& dfdy, fpreal32& dfdz, fpreal32& dfdw,
87  fpreal32 const x, fpreal32 const y, fpreal32 const z, fpreal32 const w,
88  uint32 const px, uint32 const py, uint32 const pz, uint32 const pw);
89 
90  // Periodic Noise, Vector
91  static void at1DP(fpreal32 f[3], fpreal32 const x,
92  uint32 const px);
93  static void at2DP(fpreal32 f[3],
94  fpreal32 const x, fpreal32 const y,
95  uint32 const px, uint32 const py);
96  static void at3DP(fpreal32 f[3],
97  fpreal32 const x, fpreal32 const y, fpreal32 const z,
98  uint32 const px, uint32 const py, uint32 const pz);
99  static void at4DP(fpreal32 f[3],
100  fpreal32 const x, fpreal32 const y, fpreal32 const z, fpreal32 const w,
101  uint32 const px, uint32 const py, uint32 const pz, uint32 const pw);
102 
103  // Periodic Noise, Vector, with derivatives
104  static void at1DP(fpreal32 f[3],
105  fpreal32 dfdx[3],
106  fpreal32 const x,
107  uint32 const px);
108  static void at2DP(fpreal32 f[3],
109  fpreal32 dfdx[3], fpreal32 dfdy[3],
110  fpreal32 const x, fpreal32 const y,
111  uint32 const px, uint32 const py);
112  static void at3DP(fpreal32 f[3],
113  fpreal32 dfdx[3], fpreal32 dfdy[3], fpreal32 dfdz[3],
114  fpreal32 const x, fpreal32 const y, fpreal32 const z,
115  uint32 const px, uint32 const py, uint32 const pz);
116  static void at4DP(fpreal32 f[3],
117  fpreal32 dfdx[3], fpreal32 dfdy[3], fpreal32 dfdz[3], fpreal32 dfdw[3],
118  fpreal32 const x, fpreal32 const y, fpreal32 const z, fpreal32 const w,
119  uint32 const px, uint32 const py, uint32 const pz, uint32 const pw);
120 
121  // Flowat
122 
123  // There is no 1D flow at.
124  static fpreal32 flowat2D(fpreal32 const x, fpreal32 const y, fpreal32 const flow);
125  static fpreal32 flowat3D(fpreal32 const x, fpreal32 const y, fpreal32 const z, fpreal32 const flow);
126  static fpreal32 flowat4D(fpreal32 const x, fpreal32 const y, fpreal32 const z, fpreal32 const w, fpreal32 const flow);
127 
128  // Flowat, Vector
129  static void flowat2D(fpreal32 f[3],
130  fpreal32 const x, fpreal32 const y,
131  fpreal32 const flow);
132  static void flowat3D(fpreal32 f[3],
133  fpreal32 const x, fpreal32 const y, fpreal32 const z,
134  fpreal32 const flow);
135  static void flowat4D(fpreal32 f[3],
136  fpreal32 const x, fpreal32 const y, fpreal32 const z, fpreal32 const w,
137  fpreal32 const flow);
138 
139  // Periodic Flowat
140  static fpreal32 flowat2DP(fpreal32 const x, fpreal32 const y,
141  uint32 const px, uint32 const py,
142  fpreal32 const flow);
143  static fpreal32 flowat3DP(fpreal32 const x, fpreal32 const y, fpreal32 const z,
144  uint32 const px, uint32 const py, uint32 const pz,
145  fpreal32 const flow);
146  static fpreal32 flowat4DP(fpreal32 const x, fpreal32 const y, fpreal32 const z, fpreal32 const w,
147  uint32 const px, uint32 const py, uint32 const pz, uint32 const pw,
148  fpreal32 const flow);
149 
150  // Periodic Flowat, Vectorial
151  static void flowat2DP(fpreal32 f[3],
152  fpreal32 const x, fpreal32 const y,
153  uint32 const px, uint32 const py,
154  fpreal32 const flow);
155  static void flowat3DP(fpreal32 f[3],
156  fpreal32 const x, fpreal32 const y, fpreal32 const z,
157  uint32 const px, uint32 const py, uint32 const pz,
158  fpreal32 const flow);
159  static void flowat4DP(fpreal32 f[3],
160  fpreal32 const x, fpreal32 const y, fpreal32 const z, fpreal32 const w,
161  uint32 const px, uint32 const py, uint32 const pz, uint32 const pw,
162  fpreal32 const flow);
163 
164  // Curlat functions
165 
166  static void curlnoise2D2D(fpreal32 f[3],
167  fpreal32 const x,
168  fpreal32 const y);
169  static void curlnoise2D3D(fpreal32 f[3],
170  fpreal32 const x,
171  fpreal32 const y,
172  fpreal32 const z);
173  static void curlnoise3D3D(fpreal32 f[3],
174  fpreal32 const x,
175  fpreal32 const y,
176  fpreal32 const z);
177  static void curlnoise3D4D(fpreal32 f[3],
178  fpreal32 const x,
179  fpreal32 const y,
180  fpreal32 const z,
181  fpreal32 const w);
182 
183 
184  // Legacy compatibility
185 
186  // Noise
187  static inline fpreal32 noise1D(fpreal32 const x)
188  {
189  return at1D(x);
190  }
191  static inline fpreal32 noise2D(fpreal32 const x, fpreal32 const y)
192  {
193  return at2D(x, y);
194  }
195  static inline fpreal32 noise2D(fpreal32 const x[2])
196  {
197  return at2D(x[0], x[1]);
198  }
199  static inline fpreal32 noise3D(fpreal32 const x[3])
200  {
201  return at3D(x[0], x[1], x[2]);
202  }
203  static inline fpreal32 noise4D(fpreal32 const x[4])
204  {
205  return at4D(x[0], x[1], x[2], x[3]);
206  }
207  // Noise, Derivatives
208  static inline void noise1D(fpreal32 &n, fpreal32 &dndx, fpreal32 const x)
209  {
210  n = at1D(dndx, x);
211  }
212  static inline void noise2D(fpreal32 &n, fpreal32 &dndx, fpreal32 &dndy, const fpreal32 x[2])
213  {
214  n = at2D(dndx, dndy, x[0], x[1]);
215  }
216  static inline void noise2D(fpreal32 &n, fpreal32 dndx[2], const fpreal32 x[2])
217  {
218  n = at2D(dndx[0], dndx[1], x[0], x[1]);
219  }
220  static inline void noise2D(fpreal32 &n, fpreal32 &dndx, fpreal32 &dndy,
221  fpreal32 const x, fpreal32 const y)
222  {
223  n = at2D(dndx, dndy, x, y);
224  }
225  static inline void noise3D(fpreal32 &n, fpreal32 dndx[3], const fpreal32 x[3])
226  {
227  n = at3D(dndx[0], dndx[1], dndx[2],
228  x[0], x[1], x[2]);
229  }
230  static inline void noise3D(fpreal32 &n, fpreal32 &dndx,
231  fpreal32 &dndy, fpreal32 &dndz,
232  const fpreal32 x[3])
233  {
234  n = at3D( dndx, dndy, dndz, x[0], x[1], x[2]);
235  }
236  static inline void noise4D(fpreal32 &n, fpreal32 dndx[4],
237  const fpreal32 x[4])
238  {
239  n = at4D(dndx[0], dndx[1], dndx[2], dndx[3],
240  x[0], x[1], x[2], x[3]);
241  }
242  static inline void noise4D(fpreal32 &n, fpreal32 &dndx,
243  fpreal32 &dndy, fpreal32 &dndz, fpreal32 &dndw,
244  const fpreal32 x[4])
245  {
246  n = at4D(dndx, dndy, dndz, dndw, x[0], x[1], x[2], x[3]);
247  }
248  // Periodic Noise
249  static inline fpreal32 noise1D(fpreal32 const x, uint32 const px)
250  {
251  return at1DP(x, px);
252  }
253  static inline fpreal32 noise2D(fpreal32 const x[2], uint32 const per[2])
254  {
255  return at2DP(x[0], x[1], per[0], per[1]);
256  }
257  static inline fpreal32 noise2D(fpreal32 const x, fpreal32 const y,
258  uint32 const px, uint32 const py)
259  {
260  return at2DP(x, y, px, py);
261  }
262  static inline fpreal32 noise3D(fpreal32 const x[3], uint32 const per[3])
263  {
264  return at3DP(x[0], x[1], x[2],
265  per[0], per[1], per[2]);
266  }
267  static inline fpreal32 noise4D(fpreal32 const x[4], uint32 const per[4])
268  {
269  return at4DP(x[0], x[1], x[2], x[3],
270  per[0], per[1], per[2], per[3]);
271  }
272  // Noise, Vector
273  static inline void noise1D(fpreal32 f[3], fpreal32 const x)
274  {
275  at1D(f, x);
276  }
277  static inline void noise2D(fpreal32 f[3],
278  fpreal32 const x, fpreal32 const y)
279  {
280  at2D(f, x, y);
281  }
282  static inline void noise2D(fpreal32 f[3], fpreal32 const x[2])
283  {
284  at2D(f, x[0], x[1]);
285  }
286  static inline void noise3D(fpreal32 f[3], fpreal32 const x[3])
287  {
288  at3D(f, x[0], x[1], x[2]);
289  }
290  static inline void noise4D(fpreal32 f[3], fpreal32 const x[4])
291  {
292  at4D(f, x[0], x[1], x[2], x[3]);
293  }
294  // Noise, Vector, Derivative
295  static inline void noise1D(fpreal32 f[3], fpreal32 dfdx[3], fpreal32 const x)
296  {
297  at1D(f, dfdx, x);
298  }
299  static inline void noise2D(fpreal32 f[3], fpreal32 dfdx[3], fpreal32 dfdy[3], fpreal32 const x[2])
300  {
301  at2D(f, dfdx, dfdy,
302  x[0], x[1]);
303  }
304  static inline void noise2D(fpreal32 f[3],
305  fpreal32 dfdx[3], fpreal32 dfdy[3],
306  fpreal32 const x, fpreal32 y)
307  {
308  at2D(f, dfdx, dfdy, x, y);
309  }
310  static inline void noise3D(fpreal32 f[3], fpreal32 dfdx[3], fpreal32 dfdy[3], fpreal32 dfdz[3], fpreal32 const x[3])
311  {
312  at3D(f, dfdx, dfdy, dfdz,
313  x[0], x[1], x[2]);
314  }
315  static inline void noise4D(fpreal32 f[3], fpreal32 dfdx[3], fpreal32 dfdy[3], fpreal32 dfdz[3], fpreal32 dfdw[3], fpreal32 const x[4])
316  {
317  at4D(f, dfdx, dfdy, dfdz, dfdw,
318  x[0], x[1], x[2], x[3]);
319  }
320  // Periodic Noise, Vector
321  static inline void noise1D(fpreal32 f[3], fpreal32 const x, uint32 const px)
322  {
323  at1DP(f, x, px);
324  }
325  static inline void noise2D(fpreal32 f[3],
326  fpreal32 const x, fpreal32 const y,
327  uint32 const px, uint32 const py)
328  {
329  at2DP(f, x, y, px, py);
330  }
331  static inline void noise2D(fpreal32 f[3], fpreal32 const x[2], uint32 const per[2])
332  {
333  at2DP(f, x[0], x[1],
334  per[0], per[1]);
335  }
336  static inline void noise3D(fpreal32 f[3], fpreal32 const x[3], uint32 const per[3])
337  {
338  at3DP(f, x[0], x[1], x[2],
339  per[0], per[1], per[2]);
340  }
341  static inline void noise4D(fpreal32 f[3], fpreal32 const x[4], uint32 const per[4])
342  {
343  at4DP(f, x[0], x[1], x[2], x[3],
344  per[0], per[1], per[2], per[3]);
345  }
346 
347  // Flow noise
348 
349  static inline fpreal32 flownoise2D(fpreal32 const x, fpreal32 const y,
350  fpreal32 const flow)
351  {
352  return flowat2D(x, y, flow);
353  }
354  static inline fpreal32 flownoise2D(fpreal32 const x[2], fpreal32 const flow)
355  {
356  return flowat2D(x[0], x[1], flow);
357  }
358  static inline fpreal32 flownoise3D(fpreal32 const x[3], fpreal32 const flow)
359  {
360  return flowat3D(x[0], x[1], x[2], flow);
361  }
362  static inline fpreal32 flownoise4D(fpreal32 const x[4], fpreal32 const flow)
363  {
364  return flowat4D(x[0], x[1], x[2], x[3], flow);
365  }
366 
367  // Flow noise, Periodic
368  static inline fpreal32 flownoise2D(fpreal32 const x[2], uint32 const per[2],
369  fpreal32 const flow)
370  {
371  return flowat2DP(x[0], x[1], per[0], per[1], flow);
372  }
373  static inline fpreal32 flownoise2D(fpreal32 const x, fpreal32 y,
374  uint32 const px, uint32 const py,
375  fpreal32 const flow)
376  {
377  return flowat2DP(x, y, px, py, flow);
378  }
379  static inline fpreal32 flownoise3D(fpreal32 const x[3], uint32 const per[3],
380  fpreal32 const flow)
381  {
382  return flowat3DP(x[0], x[1], x[2],
383  per[0], per[1], per[2], flow);
384  }
385  static inline fpreal32 flownoise4D(fpreal32 const x[4], uint32 const per[4],
386  fpreal32 const flow)
387  {
388  return flowat4DP(x[0], x[1], x[2], x[3],
389  per[0], per[1], per[2], per[3],
390  flow);
391  }
392  // Flow noise, Vector
393  static inline void flownoise2D(fpreal32 f[3],
394  fpreal32 const x, fpreal32 const y,
395  fpreal32 const flow)
396  {
397  flowat2D(f, x, y, flow);
398  }
399  static inline void flownoise2D(fpreal32 f[3],
400  fpreal32 const x[2], fpreal32 const flow)
401  {
402  flowat2D(f, x[0], x[1], flow);
403  }
404  static inline void flownoise3D(fpreal32 f[3],
405  fpreal32 const x[3], fpreal32 const flow)
406  {
407  flowat3D(f, x[0], x[1], x[2], flow);
408  }
409  static inline void flownoise4D(fpreal32 f[3],
410  fpreal32 const x[4], fpreal32 const flow)
411  {
412  flowat4D(f, x[0], x[1], x[2], x[3], flow);
413  }
414  // Flow noise, Vector, Periodic
415  static inline void flownoise2D(fpreal32 f[3],
416  fpreal32 const x, fpreal32 const y,
417  uint32 const px, uint32 const py,
418  fpreal32 const flow)
419  {
420  flowat2DP(f, x, y, px, py, flow);
421  }
422  static inline void flownoise2D(fpreal32 f[3],
423  fpreal32 const x[2], uint32 const period[2],
424  fpreal32 const flow)
425  {
426  flowat2DP(f, x[0], x[1], period[0], period[1], flow);
427  }
428  static inline void flownoise3D(fpreal32 f[3],
429  fpreal32 const x[3], uint32 const period[3],
430  fpreal32 const flow)
431  {
432  flowat3DP(f, x[0], x[1], x[2],
433  period[0], period[1], period[2], flow);
434  }
435  static inline void flownoise4D(fpreal32 f[3],
436  fpreal32 const x[4], uint32 const period[4],
437  fpreal32 const flow)
438  {
439  flowat4DP(f, x[0], x[1], x[2], x[3],
440  period[0], period[1], period[2], period[3], flow);
441  }
442 
443  static inline void curlnoise2D3D(fpreal32 f[3], const fpreal32 x[3])
444  {
445  curlnoise2D3D(f, x[0], x[1], x[2]);
446  }
447  static inline void curlnoise3D3D(fpreal32 f[3], const fpreal32 x[3])
448  {
449  curlnoise3D3D(f, x[0], x[1], x[2]);
450  }
451  static inline void curlnoise3D4D(fpreal32 f[3], const fpreal32 x[4])
452  {
453  curlnoise3D4D(f, x[0], x[1], x[2], x[3]);
454  }
455 
456  // Noise
457  static fpreal64 at1D(fpreal64 const x);
458  static fpreal64 at2D(fpreal64 const x, fpreal64 const y);
459  static fpreal64 at3D(fpreal64 const x, fpreal64 const y, fpreal64 const z);
460  static fpreal64 at4D(fpreal64 const x, fpreal64 const y, fpreal64 const z, fpreal64 const w);
461 
462  // Noise, Derivatives
463  static fpreal64 at1D(fpreal64& dfdx, fpreal64 const x);
464  static fpreal64 at2D(fpreal64& dfdx, fpreal64& dfdy,
465  fpreal64 const x, fpreal64 const y);
466  static fpreal64 at3D(fpreal64& dfdx, fpreal64& dfdy, fpreal64& dfdz,
467  fpreal64 const x, fpreal64 const y, fpreal64 const z);
468  static fpreal64 at4D(fpreal64& dfdx, fpreal64& dfdy, fpreal64& dfdz, fpreal64& dfdw,
469  fpreal64 const x, fpreal64 const y, fpreal64 const z, fpreal64 const w);
470 
471  // Noise, Vector
472  static void at1D(fpreal64 f[3], fpreal64 const x);
473  static void at2D(fpreal64 f[3],
474  fpreal64 const x, fpreal64 const y);
475  static void at3D(fpreal64 f[3],
476  fpreal64 const x, fpreal64 const y, fpreal64 const z);
477  static void at4D(fpreal64 f[3],
478  fpreal64 const x, fpreal64 const y, fpreal64 const z, fpreal64 const w);
479 
480  // Noise, Vector, with derivatives
481  static void at1D(fpreal64 f[3],
482  fpreal64 dfdx[3],
483  fpreal64 const x);
484  static void at2D(fpreal64 f[3],
485  fpreal64 dfdx[3], fpreal64 dfdy[3],
486  fpreal64 const x, fpreal64 const y);
487  static void at3D(fpreal64 f[3],
488  fpreal64 dfdx[3], fpreal64 dfdy[3], fpreal64 dfdz[3],
489  fpreal64 const x, fpreal64 const y, fpreal64 const z);
490  static void at4D(fpreal64 f[3],
491  fpreal64 dfdx[3], fpreal64 dfdy[3], fpreal64 dfdz[3], fpreal64 dfdw[3],
492  fpreal64 const x, fpreal64 const y, fpreal64 const z, fpreal64 const w);
493 
494  // Periodic Noise
495  static fpreal64 at1DP(fpreal64 const x,
496  uint64 const px);
497  static fpreal64 at2DP(fpreal64 const x, fpreal64 const y,
498  uint64 const px, uint64 const py);
499  static fpreal64 at3DP(fpreal64 const x, fpreal64 const y, fpreal64 const z,
500  uint64 const px, uint64 const py, uint64 const pz);
501  static fpreal64 at4DP(fpreal64 const x, fpreal64 const y, fpreal64 const z, fpreal64 const w,
502  uint64 const px, uint64 const py, uint64 const pz, uint64 const pw);
503 
504  // Periodic Noise, Derivatives
505  static fpreal64 at1DP(fpreal64& dfdx, fpreal64 const x,
506  uint64 const px);
507  static fpreal64 at2DP(fpreal64& dfdx, fpreal64& dfdy,
508  fpreal64 const x, fpreal64 const y,
509  uint64 const px, uint64 const py);
510  static fpreal64 at3DP(fpreal64& dfdx, fpreal64& dfdy, fpreal64& dfdz,
511  fpreal64 const x, fpreal64 const y, fpreal64 const z,
512  uint64 const px, uint64 const py, uint64 const pz);
513  static fpreal64 at4DP(fpreal64& dfdx, fpreal64& dfdy, fpreal64& dfdz, fpreal64& dfdw,
514  fpreal64 const x, fpreal64 const y, fpreal64 const z, fpreal64 const w,
515  uint64 const px, uint64 const py, uint64 const pz, uint64 const pw);
516 
517  // Periodic Noise, Vector
518  static void at1DP(fpreal64 f[3], fpreal64 const x,
519  uint64 const px);
520  static void at2DP(fpreal64 f[3],
521  fpreal64 const x, fpreal64 const y,
522  uint64 const px, uint64 const py);
523  static void at3DP(fpreal64 f[3],
524  fpreal64 const x, fpreal64 const y, fpreal64 const z,
525  uint64 const px, uint64 const py, uint64 const pz);
526  static void at4DP(fpreal64 f[3],
527  fpreal64 const x, fpreal64 const y, fpreal64 const z, fpreal64 const w,
528  uint64 const px, uint64 const py, uint64 const pz, uint64 const pw);
529 
530  // Periodic Noise, Vector, with derivatives
531  static void at1DP(fpreal64 f[3],
532  fpreal64 dfdx[3],
533  fpreal64 const x,
534  uint64 const px);
535  static void at2DP(fpreal64 f[3],
536  fpreal64 dfdx[3], fpreal64 dfdy[3],
537  fpreal64 const x, fpreal64 const y,
538  uint64 const px, uint64 const py);
539  static void at3DP(fpreal64 f[3],
540  fpreal64 dfdx[3], fpreal64 dfdy[3], fpreal64 dfdz[3],
541  fpreal64 const x, fpreal64 const y, fpreal64 const z,
542  uint64 const px, uint64 const py, uint64 const pz);
543  static void at4DP(fpreal64 f[3],
544  fpreal64 dfdx[3], fpreal64 dfdy[3], fpreal64 dfdz[3], fpreal64 dfdw[3],
545  fpreal64 const x, fpreal64 const y, fpreal64 const z, fpreal64 const w,
546  uint64 const px, uint64 const py, uint64 const pz, uint64 const pw);
547 
548  // Flowat
549 
550  // There is no 1D flow at.
551  static fpreal64 flowat2D(fpreal64 const x, fpreal64 const y, fpreal64 const flow);
552  static fpreal64 flowat3D(fpreal64 const x, fpreal64 const y, fpreal64 const z, fpreal64 const flow);
553  static fpreal64 flowat4D(fpreal64 const x, fpreal64 const y, fpreal64 const z, fpreal64 const w, fpreal64 const flow);
554 
555  // Flowat, Vector
556  static void flowat2D(fpreal64 f[3],
557  fpreal64 const x, fpreal64 const y,
558  fpreal64 const flow);
559  static void flowat3D(fpreal64 f[3],
560  fpreal64 const x, fpreal64 const y, fpreal64 const z,
561  fpreal64 const flow);
562  static void flowat4D(fpreal64 f[3],
563  fpreal64 const x, fpreal64 const y, fpreal64 const z, fpreal64 const w,
564  fpreal64 const flow);
565 
566  // Periodic Flowat
567  static fpreal64 flowat2DP(fpreal64 const x, fpreal64 const y,
568  uint64 const px, uint64 const py,
569  fpreal64 const flow);
570  static fpreal64 flowat3DP(fpreal64 const x, fpreal64 const y, fpreal64 const z,
571  uint64 const px, uint64 const py, uint64 const pz,
572  fpreal64 const flow);
573  static fpreal64 flowat4DP(fpreal64 const x, fpreal64 const y, fpreal64 const z, fpreal64 const w,
574  uint64 const px, uint64 const py, uint64 const pz, uint64 const pw,
575  fpreal64 const flow);
576 
577  // Periodic Flowat, Vectorial
578  static void flowat2DP(fpreal64 f[3],
579  fpreal64 const x, fpreal64 const y,
580  uint64 const px, uint64 const py,
581  fpreal64 const flow);
582  static void flowat3DP(fpreal64 f[3],
583  fpreal64 const x, fpreal64 const y, fpreal64 const z,
584  uint64 const px, uint64 const py, uint64 const pz,
585  fpreal64 const flow);
586  static void flowat4DP(fpreal64 f[3],
587  fpreal64 const x, fpreal64 const y, fpreal64 const z, fpreal64 const w,
588  uint64 const px, uint64 const py, uint64 const pz, uint64 const pw,
589  fpreal64 const flow);
590 
591  // Curlat functions
592 
593  static void curlnoise2D2D(fpreal64 f[3],
594  fpreal64 const x,
595  fpreal64 const y);
596  static void curlnoise2D3D(fpreal64 f[3],
597  fpreal64 const x,
598  fpreal64 const y,
599  fpreal64 const z);
600  static void curlnoise3D3D(fpreal64 f[3],
601  fpreal64 const x,
602  fpreal64 const y,
603  fpreal64 const z);
604  static void curlnoise3D4D(fpreal64 f[3],
605  fpreal64 const x,
606  fpreal64 const y,
607  fpreal64 const z,
608  fpreal64 const w);
609 
610 
611  // Legacy compatibility
612 
613  // Noise
614  static inline fpreal64 noise1D(fpreal64 const x)
615  {
616  return at1D(x);
617  }
618  static inline fpreal64 noise2D(fpreal64 const x, fpreal64 const y)
619  {
620  return at2D(x, y);
621  }
622  static inline fpreal64 noise2D(fpreal64 const x[2])
623  {
624  return at2D(x[0], x[1]);
625  }
626  static inline fpreal64 noise3D(fpreal64 const x[3])
627  {
628  return at3D(x[0], x[1], x[2]);
629  }
630  static inline fpreal64 noise4D(fpreal64 const x[4])
631  {
632  return at4D(x[0], x[1], x[2], x[3]);
633  }
634  // Noise, Derivatives
635  static inline void noise1D(fpreal64 &n, fpreal64 &dndx, fpreal64 const x)
636  {
637  n = at1D(dndx, x);
638  }
639  static inline void noise2D(fpreal64 &n, fpreal64 &dndx, fpreal64 &dndy, const fpreal64 x[2])
640  {
641  n = at2D(dndx, dndy, x[0], x[1]);
642  }
643  static inline void noise2D(fpreal64 &n, fpreal64 dndx[2], const fpreal64 x[2])
644  {
645  n = at2D(dndx[0], dndx[1], x[0], x[1]);
646  }
647  static inline void noise2D(fpreal64 &n, fpreal64 &dndx, fpreal64 &dndy,
648  fpreal64 const x, fpreal64 const y)
649  {
650  n = at2D(dndx, dndy, x, y);
651  }
652  static inline void noise3D(fpreal64 &n, fpreal64 dndx[3], const fpreal64 x[3])
653  {
654  n = at3D(dndx[0], dndx[1], dndx[2],
655  x[0], x[1], x[2]);
656  }
657  static inline void noise3D(fpreal64 &n, fpreal64 &dndx,
658  fpreal64 &dndy, fpreal64 &dndz,
659  const fpreal64 x[3])
660  {
661  n = at3D( dndx, dndy, dndz, x[0], x[1], x[2]);
662  }
663  static inline void noise4D(fpreal64 &n, fpreal64 dndx[4],
664  const fpreal64 x[4])
665  {
666  n = at4D(dndx[0], dndx[1], dndx[2], dndx[3],
667  x[0], x[1], x[2], x[3]);
668  }
669  static inline void noise4D(fpreal64 &n, fpreal64 &dndx,
670  fpreal64 &dndy, fpreal64 &dndz, fpreal64 &dndw,
671  const fpreal64 x[4])
672  {
673  n = at4D(dndx, dndy, dndz, dndw, x[0], x[1], x[2], x[3]);
674  }
675  // Periodic Noise
676  static inline fpreal64 noise1D(fpreal64 const x, uint64 const px)
677  {
678  return at1DP(x, px);
679  }
680  static inline fpreal64 noise2D(fpreal64 const x[2], uint64 const per[2])
681  {
682  return at2DP(x[0], x[1], per[0], per[1]);
683  }
684  static inline fpreal64 noise2D(fpreal64 const x, fpreal64 const y,
685  uint64 const px, uint64 const py)
686  {
687  return at2DP(x, y, px, py);
688  }
689  static inline fpreal64 noise3D(fpreal64 const x[3], uint64 const per[3])
690  {
691  return at3DP(x[0], x[1], x[2],
692  per[0], per[1], per[2]);
693  }
694  static inline fpreal64 noise4D(fpreal64 const x[4], uint64 const per[4])
695  {
696  return at4DP(x[0], x[1], x[2], x[3],
697  per[0], per[1], per[2], per[3]);
698  }
699  // Noise, Vector
700  static inline void noise1D(fpreal64 f[3], fpreal64 const x)
701  {
702  at1D(f, x);
703  }
704  static inline void noise2D(fpreal64 f[3],
705  fpreal64 const x, fpreal64 const y)
706  {
707  at2D(f, x, y);
708  }
709  static inline void noise2D(fpreal64 f[3], fpreal64 const x[2])
710  {
711  at2D(f, x[0], x[1]);
712  }
713  static inline void noise3D(fpreal64 f[3], fpreal64 const x[3])
714  {
715  at3D(f, x[0], x[1], x[2]);
716  }
717  static inline void noise4D(fpreal64 f[3], fpreal64 const x[4])
718  {
719  at4D(f, x[0], x[1], x[2], x[3]);
720  }
721  // Noise, Vector, Derivative
722  static inline void noise1D(fpreal64 f[3], fpreal64 dfdx[3], fpreal64 const x)
723  {
724  at1D(f, dfdx, x);
725  }
726  static inline void noise2D(fpreal64 f[3], fpreal64 dfdx[3], fpreal64 dfdy[3], fpreal64 const x[2])
727  {
728  at2D(f, dfdx, dfdy,
729  x[0], x[1]);
730  }
731  static inline void noise2D(fpreal64 f[3],
732  fpreal64 dfdx[3], fpreal64 dfdy[3],
733  fpreal64 const x, fpreal64 y)
734  {
735  at2D(f, dfdx, dfdy, x, y);
736  }
737  static inline void noise3D(fpreal64 f[3], fpreal64 dfdx[3], fpreal64 dfdy[3], fpreal64 dfdz[3], fpreal64 const x[3])
738  {
739  at3D(f, dfdx, dfdy, dfdz,
740  x[0], x[1], x[2]);
741  }
742  static inline void noise4D(fpreal64 f[3], fpreal64 dfdx[3], fpreal64 dfdy[3], fpreal64 dfdz[3], fpreal64 dfdw[3], fpreal64 const x[4])
743  {
744  at4D(f, dfdx, dfdy, dfdz, dfdw,
745  x[0], x[1], x[2], x[3]);
746  }
747  // Periodic Noise, Vector
748  static inline void noise1D(fpreal64 f[3], fpreal64 const x, uint64 const px)
749  {
750  at1DP(f, x, px);
751  }
752  static inline void noise2D(fpreal64 f[3],
753  fpreal64 const x, fpreal64 const y,
754  uint64 const px, uint64 const py)
755  {
756  at2DP(f, x, y, px, py);
757  }
758  static inline void noise2D(fpreal64 f[3], fpreal64 const x[2], uint64 const per[2])
759  {
760  at2DP(f, x[0], x[1],
761  per[0], per[1]);
762  }
763  static inline void noise3D(fpreal64 f[3], fpreal64 const x[3], uint64 const per[3])
764  {
765  at3DP(f, x[0], x[1], x[2],
766  per[0], per[1], per[2]);
767  }
768  static inline void noise4D(fpreal64 f[3], fpreal64 const x[4], uint64 const per[4])
769  {
770  at4DP(f, x[0], x[1], x[2], x[3],
771  per[0], per[1], per[2], per[3]);
772  }
773 
774  // Flow noise
775 
776  static inline fpreal64 flownoise2D(fpreal64 const x, fpreal64 const y,
777  fpreal64 const flow)
778  {
779  return flowat2D(x, y, flow);
780  }
781  static inline fpreal64 flownoise2D(fpreal64 const x[2], fpreal64 const flow)
782  {
783  return flowat2D(x[0], x[1], flow);
784  }
785  static inline fpreal64 flownoise3D(fpreal64 const x[3], fpreal64 const flow)
786  {
787  return flowat3D(x[0], x[1], x[2], flow);
788  }
789  static inline fpreal64 flownoise4D(fpreal64 const x[4], fpreal64 const flow)
790  {
791  return flowat4D(x[0], x[1], x[2], x[3], flow);
792  }
793 
794  // Flow noise, Periodic
795  static inline fpreal64 flownoise2D(fpreal64 const x[2], uint64 const per[2],
796  fpreal64 const flow)
797  {
798  return flowat2DP(x[0], x[1], per[0], per[1], flow);
799  }
800  static inline fpreal64 flownoise2D(fpreal64 const x, fpreal64 y,
801  uint64 const px, uint64 const py,
802  fpreal64 const flow)
803  {
804  return flowat2DP(x, y, px, py, flow);
805  }
806  static inline fpreal64 flownoise3D(fpreal64 const x[3], uint64 const per[3],
807  fpreal64 const flow)
808  {
809  return flowat3DP(x[0], x[1], x[2],
810  per[0], per[1], per[2], flow);
811  }
812  static inline fpreal64 flownoise4D(fpreal64 const x[4], uint64 const per[4],
813  fpreal64 const flow)
814  {
815  return flowat4DP(x[0], x[1], x[2], x[3],
816  per[0], per[1], per[2], per[3],
817  flow);
818  }
819  // Flow noise, Vector
820  static inline void flownoise2D(fpreal64 f[3],
821  fpreal64 const x, fpreal64 const y,
822  fpreal64 const flow)
823  {
824  flowat2D(f, x, y, flow);
825  }
826  static inline void flownoise2D(fpreal64 f[3],
827  fpreal64 const x[2], fpreal64 const flow)
828  {
829  flowat2D(f, x[0], x[1], flow);
830  }
831  static inline void flownoise3D(fpreal64 f[3],
832  fpreal64 const x[3], fpreal64 const flow)
833  {
834  flowat3D(f, x[0], x[1], x[2], flow);
835  }
836  static inline void flownoise4D(fpreal64 f[3],
837  fpreal64 const x[4], fpreal64 const flow)
838  {
839  flowat4D(f, x[0], x[1], x[2], x[3], flow);
840  }
841  // Flow noise, Vector, Periodic
842  static inline void flownoise2D(fpreal64 f[3],
843  fpreal64 const x, fpreal64 const y,
844  uint64 const px, uint64 const py,
845  fpreal64 const flow)
846  {
847  flowat2DP(f, x, y, px, py, flow);
848  }
849  static inline void flownoise2D(fpreal64 f[3],
850  fpreal64 const x[2], uint64 const period[2],
851  fpreal64 const flow)
852  {
853  flowat2DP(f, x[0], x[1], period[0], period[1], flow);
854  }
855  static inline void flownoise3D(fpreal64 f[3],
856  fpreal64 const x[3], uint64 const period[3],
857  fpreal64 const flow)
858  {
859  flowat3DP(f, x[0], x[1], x[2],
860  period[0], period[1], period[2], flow);
861  }
862  static inline void flownoise4D(fpreal64 f[3],
863  fpreal64 const x[4], uint64 const period[4],
864  fpreal64 const flow)
865  {
866  flowat4DP(f, x[0], x[1], x[2], x[3],
867  period[0], period[1], period[2], period[3], flow);
868  }
869 
870  static inline void curlnoise2D3D(fpreal64 f[3], const fpreal64 x[3])
871  {
872  curlnoise2D3D(f, x[0], x[1], x[2]);
873  }
874  static inline void curlnoise3D3D(fpreal64 f[3], const fpreal64 x[3])
875  {
876  curlnoise3D3D(f, x[0], x[1], x[2]);
877  }
878  static inline void curlnoise3D4D(fpreal64 f[3], const fpreal64 x[4])
879  {
880  curlnoise3D4D(f, x[0], x[1], x[2], x[3]);
881  }
882 
883  // Noise
884  static v4uf at1D(v4uf const x);
885  static v4uf at2D(v4uf const x, v4uf const y);
886  static v4uf at3D(v4uf const x, v4uf const y, v4uf const z);
887  static v4uf at4D(v4uf const x, v4uf const y, v4uf const z, v4uf const w);
888 
889  // Noise, Derivatives
890  static v4uf at1D(v4uf& dfdx, v4uf const x);
891  static v4uf at2D(v4uf& dfdx, v4uf& dfdy,
892  v4uf const x, v4uf const y);
893  static v4uf at3D(v4uf& dfdx, v4uf& dfdy, v4uf& dfdz,
894  v4uf const x, v4uf const y, v4uf const z);
895  static v4uf at4D(v4uf& dfdx, v4uf& dfdy, v4uf& dfdz, v4uf& dfdw,
896  v4uf const x, v4uf const y, v4uf const z, v4uf const w);
897 
898  // Noise, Vector
899  static void at1D(v4uf f[3], v4uf const x);
900  static void at2D(v4uf f[3],
901  v4uf const x, v4uf const y);
902  static void at3D(v4uf f[3],
903  v4uf const x, v4uf const y, v4uf const z);
904  static void at4D(v4uf f[3],
905  v4uf const x, v4uf const y, v4uf const z, v4uf const w);
906 
907  // Noise, Vector, with derivatives
908  static void at1D(v4uf f[3],
909  v4uf dfdx[3],
910  v4uf const x);
911  static void at2D(v4uf f[3],
912  v4uf dfdx[3], v4uf dfdy[3],
913  v4uf const x, v4uf const y);
914  static void at3D(v4uf f[3],
915  v4uf dfdx[3], v4uf dfdy[3], v4uf dfdz[3],
916  v4uf const x, v4uf const y, v4uf const z);
917  static void at4D(v4uf f[3],
918  v4uf dfdx[3], v4uf dfdy[3], v4uf dfdz[3], v4uf dfdw[3],
919  v4uf const x, v4uf const y, v4uf const z, v4uf const w);
920 
921  // Periodic Noise
922  static v4uf at1DP(v4uf const x,
923  v4ui const px);
924  static v4uf at2DP(v4uf const x, v4uf const y,
925  v4ui const px, v4ui const py);
926  static v4uf at3DP(v4uf const x, v4uf const y, v4uf const z,
927  v4ui const px, v4ui const py, v4ui const pz);
928  static v4uf at4DP(v4uf const x, v4uf const y, v4uf const z, v4uf const w,
929  v4ui const px, v4ui const py, v4ui const pz, v4ui const pw);
930 
931  // Periodic Noise, Derivatives
932  static v4uf at1DP(v4uf& dfdx, v4uf const x,
933  v4ui const px);
934  static v4uf at2DP(v4uf& dfdx, v4uf& dfdy,
935  v4uf const x, v4uf const y,
936  v4ui const px, v4ui const py);
937  static v4uf at3DP(v4uf& dfdx, v4uf& dfdy, v4uf& dfdz,
938  v4uf const x, v4uf const y, v4uf const z,
939  v4ui const px, v4ui const py, v4ui const pz);
940  static v4uf at4DP(v4uf& dfdx, v4uf& dfdy, v4uf& dfdz, v4uf& dfdw,
941  v4uf const x, v4uf const y, v4uf const z, v4uf const w,
942  v4ui const px, v4ui const py, v4ui const pz, v4ui const pw);
943 
944  // Periodic Noise, Vector
945  static void at1DP(v4uf f[3], v4uf const x,
946  v4ui const px);
947  static void at2DP(v4uf f[3],
948  v4uf const x, v4uf const y,
949  v4ui const px, v4ui const py);
950  static void at3DP(v4uf f[3],
951  v4uf const x, v4uf const y, v4uf const z,
952  v4ui const px, v4ui const py, v4ui const pz);
953  static void at4DP(v4uf f[3],
954  v4uf const x, v4uf const y, v4uf const z, v4uf const w,
955  v4ui const px, v4ui const py, v4ui const pz, v4ui const pw);
956 
957  // Periodic Noise, Vector, with derivatives
958  static void at1DP(v4uf f[3],
959  v4uf dfdx[3],
960  v4uf const x,
961  v4ui const px);
962  static void at2DP(v4uf f[3],
963  v4uf dfdx[3], v4uf dfdy[3],
964  v4uf const x, v4uf const y,
965  v4ui const px, v4ui const py);
966  static void at3DP(v4uf f[3],
967  v4uf dfdx[3], v4uf dfdy[3], v4uf dfdz[3],
968  v4uf const x, v4uf const y, v4uf const z,
969  v4ui const px, v4ui const py, v4ui const pz);
970  static void at4DP(v4uf f[3],
971  v4uf dfdx[3], v4uf dfdy[3], v4uf dfdz[3], v4uf dfdw[3],
972  v4uf const x, v4uf const y, v4uf const z, v4uf const w,
973  v4ui const px, v4ui const py, v4ui const pz, v4ui const pw);
974 
975  // Flowat
976 
977  // There is no 1D flow at.
978  static v4uf flowat2D(v4uf const x, v4uf const y, v4uf const flow);
979  static v4uf flowat3D(v4uf const x, v4uf const y, v4uf const z, v4uf const flow);
980  static v4uf flowat4D(v4uf const x, v4uf const y, v4uf const z, v4uf const w, v4uf const flow);
981 
982  // Flowat, Vector
983  static void flowat2D(v4uf f[3],
984  v4uf const x, v4uf const y,
985  v4uf const flow);
986  static void flowat3D(v4uf f[3],
987  v4uf const x, v4uf const y, v4uf const z,
988  v4uf const flow);
989  static void flowat4D(v4uf f[3],
990  v4uf const x, v4uf const y, v4uf const z, v4uf const w,
991  v4uf const flow);
992 
993  // Periodic Flowat
994  static v4uf flowat2DP(v4uf const x, v4uf const y,
995  v4ui const px, v4ui const py,
996  v4uf const flow);
997  static v4uf flowat3DP(v4uf const x, v4uf const y, v4uf const z,
998  v4ui const px, v4ui const py, v4ui const pz,
999  v4uf const flow);
1000  static v4uf flowat4DP(v4uf const x, v4uf const y, v4uf const z, v4uf const w,
1001  v4ui const px, v4ui const py, v4ui const pz, v4ui const pw,
1002  v4uf const flow);
1003 
1004  // Periodic Flowat, Vectorial
1005  static void flowat2DP(v4uf f[3],
1006  v4uf const x, v4uf const y,
1007  v4ui const px, v4ui const py,
1008  v4uf const flow);
1009  static void flowat3DP(v4uf f[3],
1010  v4uf const x, v4uf const y, v4uf const z,
1011  v4ui const px, v4ui const py, v4ui const pz,
1012  v4uf const flow);
1013  static void flowat4DP(v4uf f[3],
1014  v4uf const x, v4uf const y, v4uf const z, v4uf const w,
1015  v4ui const px, v4ui const py, v4ui const pz, v4ui const pw,
1016  v4uf const flow);
1017 
1018  // Curlat functions
1019 
1020  static void curlnoise2D2D(v4uf f[3],
1021  v4uf const x,
1022  v4uf const y);
1023  static void curlnoise2D3D(v4uf f[3],
1024  v4uf const x,
1025  v4uf const y,
1026  v4uf const z);
1027  static void curlnoise3D3D(v4uf f[3],
1028  v4uf const x,
1029  v4uf const y,
1030  v4uf const z);
1031  static void curlnoise3D4D(v4uf f[3],
1032  v4uf const x,
1033  v4uf const y,
1034  v4uf const z,
1035  v4uf const w);
1036 
1037 
1038  // Legacy compatibility
1039 
1040  // Noise
1041  static inline v4uf noise1D(v4uf const x)
1042  {
1043  return at1D(x);
1044  }
1045  static inline v4uf noise2D(v4uf const x, v4uf const y)
1046  {
1047  return at2D(x, y);
1048  }
1049  static inline v4uf noise2D(v4uf const x[2])
1050  {
1051  return at2D(x[0], x[1]);
1052  }
1053  static inline v4uf noise3D(v4uf const x[3])
1054  {
1055  return at3D(x[0], x[1], x[2]);
1056  }
1057  static inline v4uf noise4D(v4uf const x[4])
1058  {
1059  return at4D(x[0], x[1], x[2], x[3]);
1060  }
1061  // Noise, Derivatives
1062  static inline void noise1D(v4uf &n, v4uf &dndx, v4uf const x)
1063  {
1064  n = at1D(dndx, x);
1065  }
1066  static inline void noise2D(v4uf &n, v4uf &dndx, v4uf &dndy, const v4uf x[2])
1067  {
1068  n = at2D(dndx, dndy, x[0], x[1]);
1069  }
1070  static inline void noise2D(v4uf &n, v4uf dndx[2], const v4uf x[2])
1071  {
1072  n = at2D(dndx[0], dndx[1], x[0], x[1]);
1073  }
1074  static inline void noise2D(v4uf &n, v4uf &dndx, v4uf &dndy,
1075  v4uf const x, v4uf const y)
1076  {
1077  n = at2D(dndx, dndy, x, y);
1078  }
1079  static inline void noise3D(v4uf &n, v4uf dndx[3], const v4uf x[3])
1080  {
1081  n = at3D(dndx[0], dndx[1], dndx[2],
1082  x[0], x[1], x[2]);
1083  }
1084  static inline void noise3D(v4uf &n, v4uf &dndx,
1085  v4uf &dndy, v4uf &dndz,
1086  const v4uf x[3])
1087  {
1088  n = at3D( dndx, dndy, dndz, x[0], x[1], x[2]);
1089  }
1090  static inline void noise4D(v4uf &n, v4uf dndx[4],
1091  const v4uf x[4])
1092  {
1093  n = at4D(dndx[0], dndx[1], dndx[2], dndx[3],
1094  x[0], x[1], x[2], x[3]);
1095  }
1096  static inline void noise4D(v4uf &n, v4uf &dndx,
1097  v4uf &dndy, v4uf &dndz, v4uf &dndw,
1098  const v4uf x[4])
1099  {
1100  n = at4D(dndx, dndy, dndz, dndw, x[0], x[1], x[2], x[3]);
1101  }
1102  // Periodic Noise
1103  static inline v4uf noise1D(v4uf const x, v4ui const px)
1104  {
1105  return at1DP(x, px);
1106  }
1107  static inline v4uf noise2D(v4uf const x[2], v4ui const per[2])
1108  {
1109  return at2DP(x[0], x[1], per[0], per[1]);
1110  }
1111  static inline v4uf noise2D(v4uf const x, v4uf const y,
1112  v4ui const px, v4ui const py)
1113  {
1114  return at2DP(x, y, px, py);
1115  }
1116  static inline v4uf noise3D(v4uf const x[3], v4ui const per[3])
1117  {
1118  return at3DP(x[0], x[1], x[2],
1119  per[0], per[1], per[2]);
1120  }
1121  static inline v4uf noise4D(v4uf const x[4], v4ui const per[4])
1122  {
1123  return at4DP(x[0], x[1], x[2], x[3],
1124  per[0], per[1], per[2], per[3]);
1125  }
1126  // Noise, Vector
1127  static inline void noise1D(v4uf f[3], v4uf const x)
1128  {
1129  at1D(f, x);
1130  }
1131  static inline void noise2D(v4uf f[3],
1132  v4uf const x, v4uf const y)
1133  {
1134  at2D(f, x, y);
1135  }
1136  static inline void noise2D(v4uf f[3], v4uf const x[2])
1137  {
1138  at2D(f, x[0], x[1]);
1139  }
1140  static inline void noise3D(v4uf f[3], v4uf const x[3])
1141  {
1142  at3D(f, x[0], x[1], x[2]);
1143  }
1144  static inline void noise4D(v4uf f[3], v4uf const x[4])
1145  {
1146  at4D(f, x[0], x[1], x[2], x[3]);
1147  }
1148  // Noise, Vector, Derivative
1149  static inline void noise1D(v4uf f[3], v4uf dfdx[3], v4uf const x)
1150  {
1151  at1D(f, dfdx, x);
1152  }
1153  static inline void noise2D(v4uf f[3], v4uf dfdx[3], v4uf dfdy[3], v4uf const x[2])
1154  {
1155  at2D(f, dfdx, dfdy,
1156  x[0], x[1]);
1157  }
1158  static inline void noise2D(v4uf f[3],
1159  v4uf dfdx[3], v4uf dfdy[3],
1160  v4uf const x, v4uf y)
1161  {
1162  at2D(f, dfdx, dfdy, x, y);
1163  }
1164  static inline void noise3D(v4uf f[3], v4uf dfdx[3], v4uf dfdy[3], v4uf dfdz[3], v4uf const x[3])
1165  {
1166  at3D(f, dfdx, dfdy, dfdz,
1167  x[0], x[1], x[2]);
1168  }
1169  static inline void noise4D(v4uf f[3], v4uf dfdx[3], v4uf dfdy[3], v4uf dfdz[3], v4uf dfdw[3], v4uf const x[4])
1170  {
1171  at4D(f, dfdx, dfdy, dfdz, dfdw,
1172  x[0], x[1], x[2], x[3]);
1173  }
1174  // Periodic Noise, Vector
1175  static inline void noise1D(v4uf f[3], v4uf const x, v4ui const px)
1176  {
1177  at1DP(f, x, px);
1178  }
1179  static inline void noise2D(v4uf f[3],
1180  v4uf const x, v4uf const y,
1181  v4ui const px, v4ui const py)
1182  {
1183  at2DP(f, x, y, px, py);
1184  }
1185  static inline void noise2D(v4uf f[3], v4uf const x[2], v4ui const per[2])
1186  {
1187  at2DP(f, x[0], x[1],
1188  per[0], per[1]);
1189  }
1190  static inline void noise3D(v4uf f[3], v4uf const x[3], v4ui const per[3])
1191  {
1192  at3DP(f, x[0], x[1], x[2],
1193  per[0], per[1], per[2]);
1194  }
1195  static inline void noise4D(v4uf f[3], v4uf const x[4], v4ui const per[4])
1196  {
1197  at4DP(f, x[0], x[1], x[2], x[3],
1198  per[0], per[1], per[2], per[3]);
1199  }
1200 
1201  // Flow noise
1202 
1203  static inline v4uf flownoise2D(v4uf const x, v4uf const y,
1204  v4uf const flow)
1205  {
1206  return flowat2D(x, y, flow);
1207  }
1208  static inline v4uf flownoise2D(v4uf const x[2], v4uf const flow)
1209  {
1210  return flowat2D(x[0], x[1], flow);
1211  }
1212  static inline v4uf flownoise3D(v4uf const x[3], v4uf const flow)
1213  {
1214  return flowat3D(x[0], x[1], x[2], flow);
1215  }
1216  static inline v4uf flownoise4D(v4uf const x[4], v4uf const flow)
1217  {
1218  return flowat4D(x[0], x[1], x[2], x[3], flow);
1219  }
1220 
1221  // Flow noise, Periodic
1222  static inline v4uf flownoise2D(v4uf const x[2], v4ui const per[2],
1223  v4uf const flow)
1224  {
1225  return flowat2DP(x[0], x[1], per[0], per[1], flow);
1226  }
1227  static inline v4uf flownoise2D(v4uf const x, v4uf y,
1228  v4ui const px, v4ui const py,
1229  v4uf const flow)
1230  {
1231  return flowat2DP(x, y, px, py, flow);
1232  }
1233  static inline v4uf flownoise3D(v4uf const x[3], v4ui const per[3],
1234  v4uf const flow)
1235  {
1236  return flowat3DP(x[0], x[1], x[2],
1237  per[0], per[1], per[2], flow);
1238  }
1239  static inline v4uf flownoise4D(v4uf const x[4], v4ui const per[4],
1240  v4uf const flow)
1241  {
1242  return flowat4DP(x[0], x[1], x[2], x[3],
1243  per[0], per[1], per[2], per[3],
1244  flow);
1245  }
1246  // Flow noise, Vector
1247  static inline void flownoise2D(v4uf f[3],
1248  v4uf const x, v4uf const y,
1249  v4uf const flow)
1250  {
1251  flowat2D(f, x, y, flow);
1252  }
1253  static inline void flownoise2D(v4uf f[3],
1254  v4uf const x[2], v4uf const flow)
1255  {
1256  flowat2D(f, x[0], x[1], flow);
1257  }
1258  static inline void flownoise3D(v4uf f[3],
1259  v4uf const x[3], v4uf const flow)
1260  {
1261  flowat3D(f, x[0], x[1], x[2], flow);
1262  }
1263  static inline void flownoise4D(v4uf f[3],
1264  v4uf const x[4], v4uf const flow)
1265  {
1266  flowat4D(f, x[0], x[1], x[2], x[3], flow);
1267  }
1268  // Flow noise, Vector, Periodic
1269  static inline void flownoise2D(v4uf f[3],
1270  v4uf const x, v4uf const y,
1271  v4ui const px, v4ui const py,
1272  v4uf const flow)
1273  {
1274  flowat2DP(f, x, y, px, py, flow);
1275  }
1276  static inline void flownoise2D(v4uf f[3],
1277  v4uf const x[2], v4ui const period[2],
1278  v4uf const flow)
1279  {
1280  flowat2DP(f, x[0], x[1], period[0], period[1], flow);
1281  }
1282  static inline void flownoise3D(v4uf f[3],
1283  v4uf const x[3], v4ui const period[3],
1284  v4uf const flow)
1285  {
1286  flowat3DP(f, x[0], x[1], x[2],
1287  period[0], period[1], period[2], flow);
1288  }
1289  static inline void flownoise4D(v4uf f[3],
1290  v4uf const x[4], v4ui const period[4],
1291  v4uf const flow)
1292  {
1293  flowat4DP(f, x[0], x[1], x[2], x[3],
1294  period[0], period[1], period[2], period[3], flow);
1295  }
1296 
1297  static inline void curlnoise2D3D(v4uf f[3], const v4uf x[3])
1298  {
1299  curlnoise2D3D(f, x[0], x[1], x[2]);
1300  }
1301  static inline void curlnoise3D3D(v4uf f[3], const v4uf x[3])
1302  {
1303  curlnoise3D3D(f, x[0], x[1], x[2]);
1304  }
1305  static inline void curlnoise3D4D(v4uf f[3], const v4uf x[4])
1306  {
1307  curlnoise3D4D(f, x[0], x[1], x[2], x[3]);
1308  }
1309 };
1310 
1311 #endif
1312 
static void noise1D(v4uf f[3], v4uf dfdx[3], v4uf const x)
Definition: UT_PNoise.h:1149
static void noise4D(v4uf f[3], v4uf const x[4], v4ui const per[4])
Definition: UT_PNoise.h:1195
void curlnoise2D2D(T f[2], T x, T y)
static v4uf noise3D(v4uf const x[3], v4ui const per[3])
Definition: UT_PNoise.h:1116
static v4uf noise1D(v4uf const x, v4ui const px)
Definition: UT_PNoise.h:1103
static void noise3D(fpreal32 f[3], fpreal32 const x[3])
Definition: UT_PNoise.h:286
static void noise2D(fpreal64 f[3], fpreal64 dfdx[3], fpreal64 dfdy[3], fpreal64 const x, fpreal64 y)
Definition: UT_PNoise.h:731
static void noise3D(v4uf f[3], v4uf dfdx[3], v4uf dfdy[3], v4uf dfdz[3], v4uf const x[3])
Definition: UT_PNoise.h:1164
static v4uf noise4D(v4uf const x[4], v4ui const per[4])
Definition: UT_PNoise.h:1121
static fpreal64 noise2D(fpreal64 const x[2])
Definition: UT_PNoise.h:622
static fpreal64 flownoise4D(fpreal64 const x[4], fpreal64 const flow)
Definition: UT_PNoise.h:789
static void flownoise4D(v4uf f[3], v4uf const x[4], v4uf const flow)
Definition: UT_PNoise.h:1263
static void flownoise2D(fpreal64 f[3], fpreal64 const x[2], fpreal64 const flow)
Definition: UT_PNoise.h:826
static void noise2D(fpreal64 f[3], fpreal64 const x, fpreal64 const y, uint64 const px, uint64 const py)
Definition: UT_PNoise.h:752
static fpreal32 noise4D(fpreal32 const x[4])
Definition: UT_PNoise.h:203
static void noise2D(fpreal64 f[3], fpreal64 const x, fpreal64 const y)
Definition: UT_PNoise.h:704
static void noise1D(v4uf f[3], v4uf const x)
Definition: UT_PNoise.h:1127
static void noise3D(fpreal64 &n, fpreal64 &dndx, fpreal64 &dndy, fpreal64 &dndz, const fpreal64 x[3])
Definition: UT_PNoise.h:657
static v4uf noise2D(v4uf const x, v4uf const y)
Definition: UT_PNoise.h:1045
static fpreal32 flownoise4D(fpreal32 const x[4], uint32 const per[4], fpreal32 const flow)
Definition: UT_PNoise.h:385
static fpreal32 flownoise4D(fpreal32 const x[4], fpreal32 const flow)
Definition: UT_PNoise.h:362
static void noise3D(v4uf &n, v4uf dndx[3], const v4uf x[3])
Definition: UT_PNoise.h:1079
static fpreal32 noise3D(fpreal32 const x[3])
Definition: UT_PNoise.h:199
static v4uf flownoise4D(v4uf const x[4], v4ui const per[4], v4uf const flow)
Definition: UT_PNoise.h:1239
static void noise3D(fpreal32 f[3], fpreal32 const x[3], uint32 const per[3])
Definition: UT_PNoise.h:336
static void noise2D(v4uf f[3], v4uf const x, v4uf const y)
Definition: UT_PNoise.h:1131
static void noise2D(v4uf &n, v4uf &dndx, v4uf &dndy, const v4uf x[2])
Definition: UT_PNoise.h:1066
static void noise2D(v4uf f[3], v4uf dfdx[3], v4uf dfdy[3], v4uf const x[2])
Definition: UT_PNoise.h:1153
GLdouble GLdouble GLdouble z
Definition: glcorearb.h:848
static void noise2D(v4uf f[3], v4uf const x, v4uf const y, v4ui const px, v4ui const py)
Definition: UT_PNoise.h:1179
static fpreal64 flownoise4D(fpreal64 const x[4], uint64 const per[4], fpreal64 const flow)
Definition: UT_PNoise.h:812
static void curlnoise3D3D(v4uf f[3], const v4uf x[3])
Definition: UT_PNoise.h:1301
static v4uf flownoise2D(v4uf const x, v4uf y, v4ui const px, v4ui const py, v4uf const flow)
Definition: UT_PNoise.h:1227
static v4uf flownoise3D(v4uf const x[3], v4ui const per[3], v4uf const flow)
Definition: UT_PNoise.h:1233
static void noise3D(v4uf f[3], v4uf const x[3])
Definition: UT_PNoise.h:1140
static void noise1D(fpreal64 f[3], fpreal64 const x)
Definition: UT_PNoise.h:700
#define UT_API
Definition: UT_API.h:14
static void noise1D(v4uf f[3], v4uf const x, v4ui const px)
Definition: UT_PNoise.h:1175
static void flownoise2D(fpreal64 f[3], fpreal64 const x, fpreal64 const y, fpreal64 const flow)
Definition: UT_PNoise.h:820
GLint y
Definition: glcorearb.h:103
static void flownoise3D(v4uf f[3], v4uf const x[3], v4ui const period[3], v4uf const flow)
Definition: UT_PNoise.h:1282
static fpreal32 flownoise3D(fpreal32 const x[3], uint32 const per[3], fpreal32 const flow)
Definition: UT_PNoise.h:379
static void noise3D(fpreal64 f[3], fpreal64 dfdx[3], fpreal64 dfdy[3], fpreal64 dfdz[3], fpreal64 const x[3])
Definition: UT_PNoise.h:737
static fpreal32 noise1D(fpreal32 const x)
Definition: UT_PNoise.h:187
unsigned long long uint64
Definition: SYS_Types.h:117
float fpreal32
Definition: SYS_Types.h:200
static fpreal64 noise3D(fpreal64 const x[3], uint64 const per[3])
Definition: UT_PNoise.h:689
static fpreal32 flownoise2D(fpreal32 const x, fpreal32 const y, fpreal32 const flow)
Definition: UT_PNoise.h:349
static void flownoise4D(fpreal64 f[3], fpreal64 const x[4], uint64 const period[4], fpreal64 const flow)
Definition: UT_PNoise.h:862
static void flownoise2D(fpreal32 f[3], fpreal32 const x, fpreal32 const y, fpreal32 const flow)
Definition: UT_PNoise.h:393
static void noise2D(fpreal32 &n, fpreal32 &dndx, fpreal32 &dndy, const fpreal32 x[2])
Definition: UT_PNoise.h:212
static v4uf flownoise3D(v4uf const x[3], v4uf const flow)
Definition: UT_PNoise.h:1212
static void flownoise2D(fpreal32 f[3], fpreal32 const x[2], fpreal32 const flow)
Definition: UT_PNoise.h:399
static void flownoise2D(fpreal64 f[3], fpreal64 const x, fpreal64 const y, uint64 const px, uint64 const py, fpreal64 const flow)
Definition: UT_PNoise.h:842
static void noise2D(fpreal64 f[3], fpreal64 dfdx[3], fpreal64 dfdy[3], fpreal64 const x[2])
Definition: UT_PNoise.h:726
double fpreal64
Definition: SYS_Types.h:201
static fpreal32 noise1D(fpreal32 const x, uint32 const px)
Definition: UT_PNoise.h:249
static fpreal64 noise2D(fpreal64 const x[2], uint64 const per[2])
Definition: UT_PNoise.h:680
static void flownoise2D(fpreal32 f[3], fpreal32 const x, fpreal32 const y, uint32 const px, uint32 const py, fpreal32 const flow)
Definition: UT_PNoise.h:415
static fpreal32 flownoise2D(fpreal32 const x[2], fpreal32 const flow)
Definition: UT_PNoise.h:354
static void noise2D(fpreal32 &n, fpreal32 &dndx, fpreal32 &dndy, fpreal32 const x, fpreal32 const y)
Definition: UT_PNoise.h:220
static void noise2D(fpreal32 f[3], fpreal32 const x, fpreal32 const y, uint32 const px, uint32 const py)
Definition: UT_PNoise.h:325
void curlnoise2D3D(T f[2], T x, T y, T z)
static void noise4D(fpreal64 f[3], fpreal64 const x[4])
Definition: UT_PNoise.h:717
static v4uf flownoise2D(v4uf const x, v4uf const y, v4uf const flow)
Definition: UT_PNoise.h:1203
GLdouble n
Definition: glcorearb.h:2008
GLfloat f
Definition: glcorearb.h:1926
static void noise3D(v4uf &n, v4uf &dndx, v4uf &dndy, v4uf &dndz, const v4uf x[3])
Definition: UT_PNoise.h:1084
static void curlnoise3D3D(fpreal32 f[3], const fpreal32 x[3])
Definition: UT_PNoise.h:447
static fpreal64 flownoise2D(fpreal64 const x[2], uint64 const per[2], fpreal64 const flow)
Definition: UT_PNoise.h:795
static void noise4D(fpreal32 &n, fpreal32 &dndx, fpreal32 &dndy, fpreal32 &dndz, fpreal32 &dndw, const fpreal32 x[4])
Definition: UT_PNoise.h:242
static fpreal32 noise4D(fpreal32 const x[4], uint32 const per[4])
Definition: UT_PNoise.h:267
static void curlnoise2D3D(v4uf f[3], const v4uf x[3])
Definition: UT_PNoise.h:1297
static fpreal64 noise1D(fpreal64 const x)
Definition: UT_PNoise.h:614
static void noise2D(fpreal32 f[3], fpreal32 const x, fpreal32 const y)
Definition: UT_PNoise.h:277
Definition: VM_SIMD.h:48
static fpreal64 noise4D(fpreal64 const x[4])
Definition: UT_PNoise.h:630
static void noise3D(fpreal64 &n, fpreal64 dndx[3], const fpreal64 x[3])
Definition: UT_PNoise.h:652
static fpreal64 flownoise2D(fpreal64 const x[2], fpreal64 const flow)
Definition: UT_PNoise.h:781
static void noise2D(fpreal64 &n, fpreal64 dndx[2], const fpreal64 x[2])
Definition: UT_PNoise.h:643
static v4uf noise2D(v4uf const x[2], v4ui const per[2])
Definition: UT_PNoise.h:1107
static void noise1D(fpreal32 f[3], fpreal32 const x)
Definition: UT_PNoise.h:273
Definition: VM_SIMD.h:188
static void flownoise2D(fpreal64 f[3], fpreal64 const x[2], uint64 const period[2], fpreal64 const flow)
Definition: UT_PNoise.h:849
static void noise2D(fpreal64 f[3], fpreal64 const x[2], uint64 const per[2])
Definition: UT_PNoise.h:758
static v4uf noise4D(v4uf const x[4])
Definition: UT_PNoise.h:1057
static void noise1D(fpreal64 f[3], fpreal64 dfdx[3], fpreal64 const x)
Definition: UT_PNoise.h:722
static void noise4D(v4uf &n, v4uf &dndx, v4uf &dndy, v4uf &dndz, v4uf &dndw, const v4uf x[4])
Definition: UT_PNoise.h:1096
static fpreal64 noise2D(fpreal64 const x, fpreal64 const y)
Definition: UT_PNoise.h:618
static void noise4D(v4uf f[3], v4uf const x[4])
Definition: UT_PNoise.h:1144
static void noise2D(fpreal32 f[3], fpreal32 dfdx[3], fpreal32 dfdy[3], fpreal32 const x, fpreal32 y)
Definition: UT_PNoise.h:304
static void noise4D(fpreal32 f[3], fpreal32 const x[4], uint32 const per[4])
Definition: UT_PNoise.h:341
static void flownoise3D(fpreal64 f[3], fpreal64 const x[3], fpreal64 const flow)
Definition: UT_PNoise.h:831
static v4uf noise2D(v4uf const x, v4uf const y, v4ui const px, v4ui const py)
Definition: UT_PNoise.h:1111
static void noise2D(fpreal32 &n, fpreal32 dndx[2], const fpreal32 x[2])
Definition: UT_PNoise.h:216
static void noise1D(fpreal32 &n, fpreal32 &dndx, fpreal32 const x)
Definition: UT_PNoise.h:208
static void curlnoise3D3D(fpreal64 f[3], const fpreal64 x[3])
Definition: UT_PNoise.h:874
static v4uf noise2D(v4uf const x[2])
Definition: UT_PNoise.h:1049
static void noise4D(v4uf &n, v4uf dndx[4], const v4uf x[4])
Definition: UT_PNoise.h:1090
static fpreal64 noise3D(fpreal64 const x[3])
Definition: UT_PNoise.h:626
GLint GLenum GLint x
Definition: glcorearb.h:409
static void curlnoise3D4D(v4uf f[3], const v4uf x[4])
Definition: UT_PNoise.h:1305
static void noise2D(v4uf f[3], v4uf const x[2], v4ui const per[2])
Definition: UT_PNoise.h:1185
static fpreal64 flownoise2D(fpreal64 const x, fpreal64 const y, fpreal64 const flow)
Definition: UT_PNoise.h:776
static fpreal64 flownoise2D(fpreal64 const x, fpreal64 y, uint64 const px, uint64 const py, fpreal64 const flow)
Definition: UT_PNoise.h:800
static void noise2D(v4uf &n, v4uf &dndx, v4uf &dndy, v4uf const x, v4uf const y)
Definition: UT_PNoise.h:1074
IFDmantra py
Definition: HDK_Image.dox:266
static void noise1D(fpreal32 f[3], fpreal32 dfdx[3], fpreal32 const x)
Definition: UT_PNoise.h:295
static void noise2D(v4uf f[3], v4uf const x[2])
Definition: UT_PNoise.h:1136
static void flownoise4D(fpreal32 f[3], fpreal32 const x[4], uint32 const period[4], fpreal32 const flow)
Definition: UT_PNoise.h:435
static void noise4D(fpreal32 &n, fpreal32 dndx[4], const fpreal32 x[4])
Definition: UT_PNoise.h:236
static fpreal64 flownoise3D(fpreal64 const x[3], uint64 const per[3], fpreal64 const flow)
Definition: UT_PNoise.h:806
static void curlnoise2D3D(fpreal32 f[3], const fpreal32 x[3])
Definition: UT_PNoise.h:443
static fpreal32 noise2D(fpreal32 const x[2])
Definition: UT_PNoise.h:195
static void flownoise3D(fpreal32 f[3], fpreal32 const x[3], fpreal32 const flow)
Definition: UT_PNoise.h:404
static fpreal64 flownoise3D(fpreal64 const x[3], fpreal64 const flow)
Definition: UT_PNoise.h:785
static void flownoise2D(v4uf f[3], v4uf const x[2], v4uf const flow)
Definition: UT_PNoise.h:1253
static fpreal32 noise2D(fpreal32 const x, fpreal32 const y, uint32 const px, uint32 const py)
Definition: UT_PNoise.h:257
void curlnoise3D4D(T f[3], T x, T y, T z, T w)
static void noise2D(fpreal32 f[3], fpreal32 const x[2], uint32 const per[2])
Definition: UT_PNoise.h:331
static void flownoise3D(fpreal32 f[3], fpreal32 const x[3], uint32 const period[3], fpreal32 const flow)
Definition: UT_PNoise.h:428
static void noise2D(v4uf &n, v4uf dndx[2], const v4uf x[2])
Definition: UT_PNoise.h:1070
static void noise3D(fpreal64 f[3], fpreal64 const x[3])
Definition: UT_PNoise.h:713
static fpreal32 flownoise3D(fpreal32 const x[3], fpreal32 const flow)
Definition: UT_PNoise.h:358
void curlnoise3D3D(T f[3], T x, T y, T z)
static void noise1D(fpreal64 f[3], fpreal64 const x, uint64 const px)
Definition: UT_PNoise.h:748
static fpreal64 noise1D(fpreal64 const x, uint64 const px)
Definition: UT_PNoise.h:676
static void noise2D(fpreal32 f[3], fpreal32 dfdx[3], fpreal32 dfdy[3], fpreal32 const x[2])
Definition: UT_PNoise.h:299
static fpreal32 flownoise2D(fpreal32 const x[2], uint32 const per[2], fpreal32 const flow)
Definition: UT_PNoise.h:368
static void flownoise4D(fpreal32 f[3], fpreal32 const x[4], fpreal32 const flow)
Definition: UT_PNoise.h:409
static void noise4D(fpreal32 f[3], fpreal32 dfdx[3], fpreal32 dfdy[3], fpreal32 dfdz[3], fpreal32 dfdw[3], fpreal32 const x[4])
Definition: UT_PNoise.h:315
static void noise3D(fpreal32 &n, fpreal32 &dndx, fpreal32 &dndy, fpreal32 &dndz, const fpreal32 x[3])
Definition: UT_PNoise.h:230
static v4uf flownoise2D(v4uf const x[2], v4uf const flow)
Definition: UT_PNoise.h:1208
unsigned int uint32
Definition: SYS_Types.h:40
static v4uf flownoise4D(v4uf const x[4], v4uf const flow)
Definition: UT_PNoise.h:1216
static void noise4D(v4uf f[3], v4uf dfdx[3], v4uf dfdy[3], v4uf dfdz[3], v4uf dfdw[3], v4uf const x[4])
Definition: UT_PNoise.h:1169
static void noise4D(fpreal64 f[3], fpreal64 const x[4], uint64 const per[4])
Definition: UT_PNoise.h:768
static void curlnoise3D4D(fpreal64 f[3], const fpreal64 x[4])
Definition: UT_PNoise.h:878
static fpreal64 noise4D(fpreal64 const x[4], uint64 const per[4])
Definition: UT_PNoise.h:694
static fpreal32 noise3D(fpreal32 const x[3], uint32 const per[3])
Definition: UT_PNoise.h:262
static void noise3D(v4uf f[3], v4uf const x[3], v4ui const per[3])
Definition: UT_PNoise.h:1190
static void noise3D(fpreal32 f[3], fpreal32 dfdx[3], fpreal32 dfdy[3], fpreal32 dfdz[3], fpreal32 const x[3])
Definition: UT_PNoise.h:310
GLubyte GLubyte GLubyte GLubyte w
Definition: glcorearb.h:857
static void noise4D(fpreal64 f[3], fpreal64 dfdx[3], fpreal64 dfdy[3], fpreal64 dfdz[3], fpreal64 dfdw[3], fpreal64 const x[4])
Definition: UT_PNoise.h:742
static void flownoise2D(fpreal32 f[3], fpreal32 const x[2], uint32 const period[2], fpreal32 const flow)
Definition: UT_PNoise.h:422
static void flownoise2D(v4uf f[3], v4uf const x, v4uf const y, v4ui const px, v4ui const py, v4uf const flow)
Definition: UT_PNoise.h:1269
static void noise2D(fpreal32 f[3], fpreal32 const x[2])
Definition: UT_PNoise.h:282
static void flownoise2D(v4uf f[3], v4uf const x, v4uf const y, v4uf const flow)
Definition: UT_PNoise.h:1247
static void noise4D(fpreal64 &n, fpreal64 dndx[4], const fpreal64 x[4])
Definition: UT_PNoise.h:663
static void flownoise4D(v4uf f[3], v4uf const x[4], v4ui const period[4], v4uf const flow)
Definition: UT_PNoise.h:1289
static fpreal32 flownoise2D(fpreal32 const x, fpreal32 y, uint32 const px, uint32 const py, fpreal32 const flow)
Definition: UT_PNoise.h:373
static void noise1D(v4uf &n, v4uf &dndx, v4uf const x)
Definition: UT_PNoise.h:1062
static fpreal32 noise2D(fpreal32 const x, fpreal32 const y)
Definition: UT_PNoise.h:191
static void noise2D(fpreal64 &n, fpreal64 &dndx, fpreal64 &dndy, fpreal64 const x, fpreal64 const y)
Definition: UT_PNoise.h:647
static void flownoise3D(fpreal64 f[3], fpreal64 const x[3], uint64 const period[3], fpreal64 const flow)
Definition: UT_PNoise.h:855
static void flownoise2D(v4uf f[3], v4uf const x[2], v4ui const period[2], v4uf const flow)
Definition: UT_PNoise.h:1276
static void flownoise4D(fpreal64 f[3], fpreal64 const x[4], fpreal64 const flow)
Definition: UT_PNoise.h:836
static void curlnoise3D4D(fpreal32 f[3], const fpreal32 x[4])
Definition: UT_PNoise.h:451
static void noise3D(fpreal64 f[3], fpreal64 const x[3], uint64 const per[3])
Definition: UT_PNoise.h:763
static void flownoise3D(v4uf f[3], v4uf const x[3], v4uf const flow)
Definition: UT_PNoise.h:1258
static void noise2D(fpreal64 &n, fpreal64 &dndx, fpreal64 &dndy, const fpreal64 x[2])
Definition: UT_PNoise.h:639
static void curlnoise2D3D(fpreal64 f[3], const fpreal64 x[3])
Definition: UT_PNoise.h:870
static void noise3D(fpreal32 &n, fpreal32 dndx[3], const fpreal32 x[3])
Definition: UT_PNoise.h:225
static fpreal64 noise2D(fpreal64 const x, fpreal64 const y, uint64 const px, uint64 const py)
Definition: UT_PNoise.h:684
static void noise1D(fpreal64 &n, fpreal64 &dndx, fpreal64 const x)
Definition: UT_PNoise.h:635
static fpreal32 noise2D(fpreal32 const x[2], uint32 const per[2])
Definition: UT_PNoise.h:253
static v4uf noise3D(v4uf const x[3])
Definition: UT_PNoise.h:1053
static void noise2D(v4uf f[3], v4uf dfdx[3], v4uf dfdy[3], v4uf const x, v4uf y)
Definition: UT_PNoise.h:1158
static void noise4D(fpreal64 &n, fpreal64 &dndx, fpreal64 &dndy, fpreal64 &dndz, fpreal64 &dndw, const fpreal64 x[4])
Definition: UT_PNoise.h:669
static v4uf noise1D(v4uf const x)
Definition: UT_PNoise.h:1041
static void noise2D(fpreal64 f[3], fpreal64 const x[2])
Definition: UT_PNoise.h:709
static void noise1D(fpreal32 f[3], fpreal32 const x, uint32 const px)
Definition: UT_PNoise.h:321
static void noise4D(fpreal32 f[3], fpreal32 const x[4])
Definition: UT_PNoise.h:290
static v4uf flownoise2D(v4uf const x[2], v4ui const per[2], v4uf const flow)
Definition: UT_PNoise.h:1222