/**************************************************************************** * texture.h * * This file contains defines and variables for the txt*.c files * * from Persistence of Vision(tm) Ray Tracer * Copyright 1996 Persistence of Vision Team *--------------------------------------------------------------------------- * NOTICE: This source code file is provided so that users may experiment * with enhancements to POV-Ray and to port the software to platforms other * than those supported by the POV-Ray Team. There are strict rules under * which you are permitted to use this file. The rules are in the file * named POVLEGAL.DOC which should be distributed with this file. If * POVLEGAL.DOC is not available or for more info please contact the POV-Ray * Team Coordinator by leaving a message in CompuServe's Graphics Developer's * Forum. The latest version of POV-Ray may be found there as well. * * This program is based on the popular DKB raytracer version 2.12. * DKBTrace was originally written by David K. Buck. * DKBTrace Ver 2.0-2.12 were written by David K. Buck & Aaron A. Collins. * *****************************************************************************/ /* NOTE: FRAME.H contains other texture stuff. */ #ifndef TEXTURE_H #define TEXTURE_H #include "pattern.h" #include "warps.h" /***************************************************************************** * Global preprocessor defines ******************************************************************************/ #define RNDMASK 0x7FFF #define RNDMULTIPLIER ((DBL)0.000030518509476) /* * Macro to create random number in the [0; 1] range. */ #define FRAND() ((DBL)POV_RAND()*RNDMULTIPLIER) #define FLOOR(x) ((x) >= 0.0 ? floor(x) : (0.0 - floor(0.0 - (x)) - 1.0)) #define Hash3d(a,b,c) \ hashTable[(int)(hashTable[(int)(hashTable[(int)((a) & 0xfffL)] ^ ((b) & 0xfffL))] ^ ((c) & 0xfffL))] #define Hash2d(a,b) \ hashTable[(int)(hashTable[(int)((a) & 0xfffL)] ^ ((b) & 0xfffL))] #define Hash1d(a,b) \ hashTable[(int)(a) ^ ((b) & 0xfffL)] #define INCRSUM(m,s,x,y,z) \ ((s)*(RTable[m]*0.5 + RTable[m+1]*(x) + RTable[m+2]*(y) + RTable[m+3]*(z))) #define INCRSUMP(mp,s,x,y,z) \ ((s)*((mp[0])*0.5 + (mp[1])*(x) + (mp[2])*(y) + (mp[3])*(z))) /***************************************************************************** * Global typedefs ******************************************************************************/ /***************************************************************************** * Global variables ******************************************************************************/ extern short *hashTable; extern DBL *frequency; /* dmf */ extern unsigned int Number_Of_Waves; /* dmf */ extern VECTOR *Wave_Sources; /* dmf */ /***************************************************************************** * Global functions ******************************************************************************/ void Compute_Colour PARAMS((COLOUR Colour,PIGMENT *Pigment, DBL value)); void Initialize_Noise PARAMS((void)); void Free_Noise_Tables PARAMS((void)); DBL Noise PARAMS((VECTOR EPoint)); void DNoise PARAMS((VECTOR result, VECTOR EPoint)); DBL Turbulence PARAMS((VECTOR EPoint, TURB *Turb)); void DTurbulence PARAMS((VECTOR result, VECTOR EPoint, TURB *Turb)); DBL cycloidal PARAMS((DBL value)); DBL Triangle_Wave PARAMS((DBL value)); void Translate_Textures PARAMS((TEXTURE *Textures, TRANSFORM *Trans)); void Rotate_Textures PARAMS((TEXTURE *Textures, TRANSFORM *Trans)); void Scale_Textures PARAMS((TEXTURE *Textures, TRANSFORM *Trans)); void Transform_Textures PARAMS((TEXTURE *Textures, TRANSFORM *Trans)); void Destroy_Textures PARAMS((TEXTURE *Textures)); void Post_Textures PARAMS((TEXTURE *Textures)); FINISH *Create_Finish PARAMS((void)); FINISH *Copy_Finish PARAMS((FINISH *Old)); TEXTURE *Create_PNF_Texture PARAMS((void)); TEXTURE *Copy_Texture_Pointer PARAMS((TEXTURE *Texture)); TEXTURE *Copy_Textures PARAMS((TEXTURE *Textures)); TEXTURE *Create_Texture PARAMS((void)); int Test_Opacity PARAMS((TEXTURE *Texture)); TURB *Create_Turb PARAMS((void)); int POV_Std_rand PARAMS((void)); void POV_Std_srand PARAMS((int seed)); #endif