2 * $Logfile: /Freespace2/code/Nebula/Neb.h $
10 * Revision 1.3 2002/05/26 20:22:48 theoddone33
11 * Most of network/ works
13 * Revision 1.2 2002/05/04 04:36:56 theoddone33
14 * More changes, took out a lot of the sound stuff which will bite later but
17 * Revision 1.1.1.1 2002/05/03 03:28:12 root
21 * 16 8/30/99 5:01p Dave
22 * Made d3d do less state changing in the nebula. Use new chat server for
25 * 15 7/29/99 12:05a Dave
26 * Nebula speed optimizations.
28 * 14 7/26/99 10:12a Dave
29 * Upped the max # of nebula backgrounds.
31 * 13 5/24/99 5:45p Dave
32 * Added detail levels to the nebula, with a decent speedup. Split nebula
33 * lightning into its own section.
38 #ifndef _FS2_NEB2_EFFECT_HEADER_FILE
39 #define _FS2_NEB2_EFFECT_HEADER_FILE
41 // --------------------------------------------------------------------------------------------------------
42 // NEBULA DEFINES/VARS
50 // fog near and far values for rendering the background nebula
51 extern float Neb_backg_fog_near;
52 extern float Neb_backg_fog_far;
54 // nebula rendering mode
55 #define NEB2_RENDER_NONE 0 // no rendering
56 #define NEB2_RENDER_POLY 1 // background is the old-school polygons
57 #define NEB2_RENDER_POF 2 // background is the nice pof file
58 #define NEB2_RENDER_LAME 3 // super simple nebula effect
59 extern int Neb2_render_mode;
61 // the AWACS suppresion level for the nebula
62 extern float Neb2_awacs;
64 #define MAX_NEB2_POOFS 6
66 // poof names and flags (for fred)
67 extern char Neb2_poof_filenames[MAX_NEB2_POOFS][MAX_FILENAME_LEN];
68 extern int Neb2_poof_flags;
70 #define MAX_NEB2_BITMAPS 10
72 // pof texture filenames
73 extern char Neb2_bitmap_filenames[MAX_NEB2_BITMAPS][MAX_FILENAME_LEN];
75 // texture to use for this level
76 extern char Neb2_texture_name[MAX_FILENAME_LEN];
78 // how many "slices" are in the current player nebuls
79 extern int Neb2_slices;
82 typedef struct cube_poof {
83 vector pt; // point in space
84 int bmap; // bitmap in space
85 float rot; // rotation angle
86 float rot_speed; // rotation speed
87 float flash; // lightning flash
89 #define MAX_CPTS 5 // should always be <= slices
90 extern cube_poof Neb2_cubes[MAX_CPTS][MAX_CPTS][MAX_CPTS];
93 // --------------------------------------------------------------------------------------------------------
97 // neb2 stuff (specific nebula densities) -----------------------------------
99 // initialize neb2 stuff at game startup
103 void neb2_set_detail_level(int level);
105 // initialize nebula stuff - call from game_post_level_init(), so the mission has been loaded
106 void neb2_level_init();
108 // shutdown nebula stuff
109 void neb2_level_close();
111 // create a nebula object, return objnum of the nebula or -1 on fail
112 // NOTE : in most cases you will want to pass -1.0f for outer_radius. Trust me on this
113 int neb2_create(vector *offset, int num_poofs, float inner_radius, float outer_radius, float max_poof_radius);
115 // delete a nebula object
116 void neb2_delete(object *objp);
118 // call before beginning all rendering
119 void neb2_render_setup(vector *eye_pos, matrix *eye_orient);
121 // renders a nebula object
122 void neb2_render(object *objp);
124 // preprocess the nebula object before simulation
125 void neb2_process_pre(object *objp);
127 // process the nebula object after simulating, but before rendering
128 void neb2_process_post(object *objp);
130 // render the player nebula
131 void neb2_render_player();
133 // call this when the player's viewpoint has changed, this will cause the code to properly reset
134 // the eye's local poofs
135 void neb2_eye_changed();
137 // get near and far fog values based upon object type and rendering mode
138 void neb2_get_fog_values(float *fnear, float *ffar, object *obj);
140 // given a position in space, return a value from 0.0 to 1.0 representing the fog level
141 float neb2_get_fog_intensity(object *obj);
143 // should we not render this object because its obscured by the nebula?
144 int neb2_skip_render(object *objp, float z_depth);
147 float neb2_get_lod_scale(int objnum);
149 // fogging stuff --------------------------------------------------
151 // get the color of the pixel in the small pre-rendered background nebula
152 void neb2_get_pixel(int x, int y, int *r, int *g, int *b);
154 // set the background color
155 void neb2_set_backg_color(int r, int g, int b);
157 // get the color to fog the background color to
158 void neb2_get_backg_color(int *r, int *g, int *b);