Main Page | Class Hierarchy | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

tr_noise.c File Reference

#include "tr_local.h"

Include dependency graph for tr_noise.c:

Include dependency graph

Go to the source code of this file.

Defines

#define INDEX(x, y, z, t)   VAL( x + VAL( y + VAL( z + VAL( t ) ) ) )
#define LERP(a, b, w)   ( a * ( 1.0f - w ) + b * w )
#define NOISE_MASK   ( NOISE_SIZE - 1 )
#define NOISE_SIZE   256
#define VAL(a)   s_noise_perm[ ( a ) & ( NOISE_MASK )]

Functions

float GetNoiseValue (int x, int y, int z, int t)
float R_NoiseGet4f (float x, float y, float z, float t)
void R_NoiseInit (void)

Variables

int s_noise_perm [NOISE_SIZE]
float s_noise_table [NOISE_SIZE]


Define Documentation

#define INDEX x,
y,
z,
t   )     VAL( x + VAL( y + VAL( z + VAL( t ) ) ) )
 

Definition at line 29 of file tr_noise.c.

Referenced by GetNoiseValue().

#define LERP a,
b,
w   )     ( a * ( 1.0f - w ) + b * w )
 

Definition at line 34 of file tr_noise.c.

Referenced by R_NoiseGet4f().

#define NOISE_MASK   ( NOISE_SIZE - 1 )
 

Definition at line 26 of file tr_noise.c.

#define NOISE_SIZE   256
 

Definition at line 25 of file tr_noise.c.

#define VAL  )     s_noise_perm[ ( a ) & ( NOISE_MASK )]
 

Definition at line 28 of file tr_noise.c.


Function Documentation

float GetNoiseValue int  x,
int  y,
int  z,
int  t
[static]
 

Definition at line 36 of file tr_noise.c.

References INDEX, s_noise_table, t, x, y, and z.

Referenced by R_NoiseGet4f().

00037 {
00038     int index = INDEX( ( int ) x, ( int ) y, ( int ) z, ( int ) t );
00039 
00040     return s_noise_table[index];
00041 }

float R_NoiseGet4f float  x,
float  y,
float  z,
float  t
 

Definition at line 56 of file tr_noise.c.

References floor(), GetNoiseValue(), i, LERP, t, value, x, y, and z.

Referenced by RB_CalcDeformNormals(), and RB_CalcWaveColor().

00057 {
00058     int i;
00059     int ix, iy, iz, it;
00060     float fx, fy, fz, ft;
00061     float front[4];
00062     float back[4];
00063     float fvalue, bvalue, value[2], finalvalue;
00064 
00065     ix = ( int ) floor( x );
00066     fx = x - ix;
00067     iy = ( int ) floor( y );
00068     fy = y - iy;
00069     iz = ( int ) floor( z );
00070     fz = z - iz;
00071     it = ( int ) floor( t );
00072     ft = t - it;
00073 
00074     for ( i = 0; i < 2; i++ )
00075     {
00076         front[0] = GetNoiseValue( ix, iy, iz, it + i );
00077         front[1] = GetNoiseValue( ix+1, iy, iz, it + i );
00078         front[2] = GetNoiseValue( ix, iy+1, iz, it + i );
00079         front[3] = GetNoiseValue( ix+1, iy+1, iz, it + i );
00080 
00081         back[0] = GetNoiseValue( ix, iy, iz + 1, it + i );
00082         back[1] = GetNoiseValue( ix+1, iy, iz + 1, it + i );
00083         back[2] = GetNoiseValue( ix, iy+1, iz + 1, it + i );
00084         back[3] = GetNoiseValue( ix+1, iy+1, iz + 1, it + i );
00085 
00086         fvalue = LERP( LERP( front[0], front[1], fx ), LERP( front[2], front[3], fx ), fy );
00087         bvalue = LERP( LERP( back[0], back[1], fx ), LERP( back[2], back[3], fx ), fy );
00088 
00089         value[i] = LERP( fvalue, bvalue, fz );
00090     }
00091 
00092     finalvalue = LERP( value[0], value[1], ft );
00093 
00094     return finalvalue;
00095 }

Here is the call graph for this function:

void R_NoiseInit void   ) 
 

Definition at line 43 of file tr_noise.c.

References i, rand(), RAND_MAX, s_noise_perm, s_noise_table, and srand().

Referenced by R_Init().

00044 {
00045     int i;
00046 
00047     srand( 1001 );
00048 
00049     for ( i = 0; i < NOISE_SIZE; i++ )
00050     {
00051         s_noise_table[i] = ( float ) ( ( ( rand() / ( float ) RAND_MAX ) * 2.0 - 1.0 ) );
00052         s_noise_perm[i] = ( unsigned char ) ( rand() / ( float ) RAND_MAX * 255 );
00053     }
00054 }

Here is the call graph for this function:


Variable Documentation

int s_noise_perm[NOISE_SIZE] [static]
 

Definition at line 32 of file tr_noise.c.

Referenced by R_NoiseInit().

float s_noise_table[NOISE_SIZE] [static]
 

Definition at line 31 of file tr_noise.c.

Referenced by GetNoiseValue(), and R_NoiseInit().


Generated on Thu Aug 25 15:18:48 2005 for Quake III Arena by  doxygen 1.3.9.1