From 625c30d8bdee4f60c8437dc6004368f685435775 Mon Sep 17 00:00:00 2001 From: faketruth Date: Tue, 25 Oct 2011 18:57:38 +0000 Subject: Using SSE instructions for noise (terrain generation) Unfortunately the noise functions is only like 7% faster, so you won't even notice git-svn-id: http://mc-server.googlecode.com/svn/trunk@9 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/cNoise.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'source/cNoise.h') diff --git a/source/cNoise.h b/source/cNoise.h index 538970da3..9511ab6e4 100644 --- a/source/cNoise.h +++ b/source/cNoise.h @@ -1,5 +1,7 @@ #pragma once +#include + class cNoise { public: @@ -8,6 +10,7 @@ public: float IntNoise( int a_X ) const; float IntNoise2D( int a_X, int a_Y ) const; + __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; float LinearNoise1D( float a_X ) const; @@ -18,6 +21,7 @@ public: float LinearNoise2D( float a_X, float a_Y ) const; float CosineNoise2D( float a_X, float a_Y ) const; float CubicNoise2D( float a_X, float a_Y ) const; + float SSE_CubicNoise2D( float a_X, float a_Y ) const; float CosineNoise3D( float a_X, float a_Y, float a_Z ) const; float CubicNoise3D( float a_X, float a_Y, float a_Z ) const; @@ -25,6 +29,7 @@ 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; + __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; -- cgit v1.2.3