Initial commit
This commit is contained in:
58
Torque/SDK/engine/editor/terraformerNoise.h
Normal file
58
Torque/SDK/engine/editor/terraformerNoise.h
Normal file
@@ -0,0 +1,58 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Torque Game Engine
|
||||
// Copyright (C) GarageGames.com, Inc.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifndef _TERRAFORMER_NOISE_H_
|
||||
#define _TERRAFORMER_NOISE_H_
|
||||
|
||||
|
||||
#ifndef _PLATFORM_H_
|
||||
#include "platform/platform.h"
|
||||
#endif
|
||||
#ifndef _MMATH_H_
|
||||
#include "math/mMath.h"
|
||||
#endif
|
||||
#ifndef _MRANDOM_H_
|
||||
#include "math/mRandom.h"
|
||||
#endif
|
||||
|
||||
struct Heightfield;
|
||||
|
||||
class Noise2D
|
||||
{
|
||||
private:
|
||||
enum Constants {
|
||||
SIZE = 0x100,
|
||||
SIZE_MASK = 0x0ff
|
||||
};
|
||||
S32 mPermutation[SIZE + SIZE + 2];
|
||||
F32 mGradient[SIZE + SIZE + 2][2];
|
||||
|
||||
U32 mSeed;
|
||||
|
||||
MRandom mRandom;
|
||||
|
||||
F32 lerp(F32 t, F32 a, F32 b);
|
||||
F32 curve(F32 t);
|
||||
void setup(F32 t, S32 &b0, S32 &b1, F32 &r0, F32 &r1);
|
||||
F32 dot(const F32 *q, F32 rx, F32 ry);
|
||||
void normalize(F32 v[2]);
|
||||
|
||||
|
||||
public:
|
||||
Noise2D();
|
||||
~Noise2D();
|
||||
|
||||
void setSeed(U32 seed);
|
||||
U32 getSeed();
|
||||
|
||||
F32 getValue(F32 u, F32 v, S32 interval);
|
||||
void fBm(Heightfield *dst, U32 size, U32 interval, F32 h, F32 octave=5.0f);
|
||||
void rigidMultiFractal(Heightfield *dst, Heightfield *signal, U32 size, U32 interval, F32 h, F32 octave=5.0f);
|
||||
F32 turbulence(F32 x, F32 y, F32 freq);
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif // _H_TERRAFORMER_NOISE_
|
||||
Reference in New Issue
Block a user