From c35db25269ea9549b996cd18c65b05a9f8d43387 Mon Sep 17 00:00:00 2001 From: faketruth Date: Mon, 26 Dec 2011 02:13:40 +0000 Subject: Made some functions in cChunk and cNoise inline, this should significantly increase chunk generation speed git-svn-id: http://mc-server.googlecode.com/svn/trunk@115 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/cNoise.h | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) (limited to 'source/cNoise.h') diff --git a/source/cNoise.h b/source/cNoise.h index 9511ab6e4..d4da677f3 100644 --- a/source/cNoise.h +++ b/source/cNoise.h @@ -1,6 +1,19 @@ #pragma once -#include +// Some settings +#define NOISE_USE_INLINE 1 +#define NOISE_USE_SSE 0 + +// Do not touch +#if NOISE_USE_INLINE +# define __NOISE_INLINE__ inline +#else +# define __NOISE_INLINE__ +#endif + +#if NOISE_USE_SSE +# include +#endif class cNoise { @@ -8,10 +21,13 @@ public: cNoise( unsigned int a_Seed ); ~cNoise(); - float IntNoise( int a_X ) const; - float IntNoise2D( int a_X, int a_Y ) const; +#if NOISE_USE_SSE __m128 SSE_IntNoise2D( int a_X1, int a_Y1, int a_X2, int a_Y2, int a_X3, int a_Y3, int a_X4, int a_Y4 ) const; - float IntNoise3D( int a_X, int a_Y, int a_Z ) const; +#endif + + __NOISE_INLINE__ float IntNoise( int a_X ) const; + __NOISE_INLINE__ float IntNoise2D( int a_X, int a_Y ) const; + __NOISE_INLINE__ float IntNoise3D( int a_X, int a_Y, int a_Z ) const; float LinearNoise1D( float a_X ) const; float CosineNoise1D( float a_X ) const; @@ -28,11 +44,17 @@ public: void SetSeed( unsigned int a_Seed ) { m_Seed = a_Seed; } private: - float CubicInterpolate( float a_A, float a_B, float a_C, float a_D, float a_Pct ) const; + __NOISE_INLINE__ float CubicInterpolate( float a_A, float a_B, float a_C, float a_D, float a_Pct ) const; + __NOISE_INLINE__ float CosineInterpolate( float a_A, float a_B, float a_Pct ) const; + __NOISE_INLINE__ float LinearInterpolate( float a_A, float a_B, float a_Pct ) const; + +#if NOISE_USE_SSE __m128 CubicInterpolate4( const __m128 & a_A, const __m128 & a_B, const __m128 & a_C, const __m128 & a_D, float a_Pct ) const; - float CosineInterpolate( float a_A, float a_B, float a_Pct ) const; - float LinearInterpolate( float a_A, float a_B, float a_Pct ) const; +#endif unsigned int m_Seed; }; +#if NOISE_USE_INLINE +# include "cNoise.inc" +#endif -- cgit v1.2.3