]> de.git.xonotic.org Git - xonotic/darkplaces.git/blob - gl_rmisc.c
some whitespace changes
[xonotic/darkplaces.git] / gl_rmisc.c
1 /*
2 Copyright (C) 1996-1997 Id Software, Inc.
3
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License
6 as published by the Free Software Foundation; either version 2
7 of the License, or (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
12
13 See the GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18
19 */
20 // r_misc.c
21
22 #include "quakedef.h"
23
24
25 /*
26 ===============
27 R_Envmap_f
28
29 Grab six views for environment mapping tests
30 ===============
31 */
32 void R_Envmap_f (void)
33 {
34         byte    buffer[256*256*4];
35
36         if (!r_render.value)
37                 return;
38
39         glDrawBuffer  (GL_FRONT);
40         glReadBuffer  (GL_FRONT);
41         envmap = true;
42
43         r_refdef.vrect.x = 0;
44         r_refdef.vrect.y = 0;
45         r_refdef.vrect.width = 256;
46         r_refdef.vrect.height = 256;
47
48         r_refdef.viewangles[0] = 0;
49         r_refdef.viewangles[1] = 0;
50         r_refdef.viewangles[2] = 0;
51         GL_BeginRendering (&glx, &gly, &glwidth, &glheight);
52         R_RenderView ();
53         glReadPixels (0, 0, 256, 256, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
54         COM_WriteFile ("env0.rgb", buffer, sizeof(buffer));             
55
56         r_refdef.viewangles[1] = 90;
57         GL_BeginRendering (&glx, &gly, &glwidth, &glheight);
58         R_RenderView ();
59         glReadPixels (0, 0, 256, 256, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
60         COM_WriteFile ("env1.rgb", buffer, sizeof(buffer));             
61
62         r_refdef.viewangles[1] = 180;
63         GL_BeginRendering (&glx, &gly, &glwidth, &glheight);
64         R_RenderView ();
65         glReadPixels (0, 0, 256, 256, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
66         COM_WriteFile ("env2.rgb", buffer, sizeof(buffer));             
67
68         r_refdef.viewangles[1] = 270;
69         GL_BeginRendering (&glx, &gly, &glwidth, &glheight);
70         R_RenderView ();
71         glReadPixels (0, 0, 256, 256, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
72         COM_WriteFile ("env3.rgb", buffer, sizeof(buffer));             
73
74         r_refdef.viewangles[0] = -90;
75         r_refdef.viewangles[1] = 0;
76         GL_BeginRendering (&glx, &gly, &glwidth, &glheight);
77         R_RenderView ();
78         glReadPixels (0, 0, 256, 256, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
79         COM_WriteFile ("env4.rgb", buffer, sizeof(buffer));             
80
81         r_refdef.viewangles[0] = 90;
82         r_refdef.viewangles[1] = 0;
83         GL_BeginRendering (&glx, &gly, &glwidth, &glheight);
84         R_RenderView ();
85         glReadPixels (0, 0, 256, 256, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
86         COM_WriteFile ("env5.rgb", buffer, sizeof(buffer));             
87
88         envmap = false;
89         glDrawBuffer  (GL_BACK);
90         glReadBuffer  (GL_BACK);
91         GL_EndRendering ();
92 }
93
94 void R_InitParticles (void);
95
96 void gl_misc_start()
97 {
98 }
99
100 void gl_misc_shutdown()
101 {
102 }
103
104 void gl_misc_newmap()
105 {
106 }
107
108 /*
109 ===============
110 R_Init
111 ===============
112 */
113 void GL_Misc_Init (void)
114 {       
115         Cmd_AddCommand ("envmap", R_Envmap_f);  
116         Cmd_AddCommand ("timerefresh", R_TimeRefresh_f);        
117
118         R_RegisterModule("GL_Misc", gl_misc_start, gl_misc_shutdown, gl_misc_newmap);
119 }
120
121 void R_ClearParticles (void);
122 void GL_BuildLightmaps (void);
123
124 /*
125 ===============
126 R_NewMap
127 ===============
128 */
129 void SHOWLMP_clear();
130 void R_NewMap (void)
131 {
132         int             i;
133         
134         for (i=0 ; i<256 ; i++)
135                 d_lightstylevalue[i] = 264;             // normal light value
136
137         memset (&r_worldentity, 0, sizeof(r_worldentity));
138         r_worldentity.render.model = cl.worldmodel;
139         currententity = &r_worldentity;
140
141         r_viewleaf = NULL;
142         R_Modules_NewMap();
143
144         GL_BuildLightmaps ();
145
146         // identify sky texture
147         skytexturenum = -1;
148         for (i=0 ; i<cl.worldmodel->numtextures ; i++)
149         {
150                 if (!cl.worldmodel->textures[i])
151                         continue;
152                 if (!strncmp(cl.worldmodel->textures[i]->name,"sky",3) )
153                         skytexturenum = i;
154         }
155         SHOWLMP_clear();
156 }
157
158
159 /*
160 ====================
161 R_TimeRefresh_f
162
163 For program optimization
164 ====================
165 */
166 qboolean intimerefresh = 0;
167 void R_TimeRefresh_f (void)
168 {
169         int                     i;
170         float           start, stop, time;
171
172         intimerefresh = 1;
173         start = Sys_DoubleTime ();
174         for (i = 0;i < 128;i++)
175         {
176                 r_refdef.viewangles[0] = 0;
177                 r_refdef.viewangles[1] = i/128.0*360.0;
178                 r_refdef.viewangles[2] = 0;
179                 SCR_UpdateScreen();
180         }
181
182         stop = Sys_DoubleTime ();
183         intimerefresh = 0;
184         time = stop-start;
185         Con_Printf ("%f seconds (%f fps)\n", time, 128/time);
186 }
187
188