UFO: Alien Invasion
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
r_local.h
Go to the documentation of this file.
1 
6 /*
7 All original material Copyright (C) 2002-2020 UFO: Alien Invasion.
8 
9 This program is free software; you can redistribute it and/or
10 modify it under the terms of the GNU General Public License
11 as published by the Free Software Foundation; either version 2
12 of the License, or (at your option) any later version.
13 
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 
18 See the GNU General Public License for more details.
19 
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23 
24 */
25 
26 #pragma once
27 
28 #include "../../common/common.h"
29 #include "../../common/qfiles.h"
30 #include "../cl_renderer.h"
31 #include "../cl_video.h"
32 
33 #include "r_gl.h"
34 #include "r_state.h"
35 #include "r_array.h"
36 #include "r_material.h"
37 #include "r_image.h"
38 #include "r_model.h"
39 #include "r_thread.h"
40 #include "r_framebuffer.h"
41 #include "r_lightmap.h"
42 #include "r_corona.h"
43 #include "r_flare.h"
44 
45 #define MIN_GL_CONSTANT_ATTENUATION 0.01
46 
47 void R_DrawSurfaces(const mBspSurfaces_t* surfs, glElementIndex_t* indexPtr);
48 void R_DrawMaterialSurfaces(const mBspSurfaces_t* surfs, glElementIndex_t* indexPtr);
49 
50 void R_SetSurfaceBumpMappingParameters(const mBspSurface_t* surf, const image_t* normalMap, const image_t* specularMap);
51 
52 /*==================================================== */
53 
54 extern cvar_t* r_drawworld;
55 extern cvar_t* r_drawentities;
56 extern cvar_t* r_nocull;
57 extern cvar_t* r_isometric;
58 extern cvar_t* r_anisotropic;
59 extern cvar_t* r_texture_lod; /* lod_bias */
60 extern cvar_t* r_materials;
66 extern cvar_t* r_lightmap;
67 extern cvar_t* r_debug_normals;
68 extern cvar_t* r_debug_tangents;
69 extern cvar_t* r_debug_lights;
71 extern cvar_t* r_checkerror;
72 extern cvar_t* r_particles;
73 extern cvar_t* r_showbox;
74 extern cvar_t* r_shadows;
75 extern cvar_t* r_stencilshadows;
76 extern cvar_t* r_drawbuffer;
77 extern cvar_t* r_driver;
78 extern cvar_t* r_swapinterval;
79 extern cvar_t* r_multisample;
80 extern cvar_t* r_threads;
81 extern cvar_t* r_wire;
82 extern cvar_t* r_vertexbuffers;
83 extern cvar_t* r_maxlightmap;
84 extern cvar_t* r_warp;
85 extern cvar_t* r_programs;
86 extern cvar_t* r_glsl_version;
87 extern cvar_t* r_postprocess;
88 extern cvar_t* r_shownormals;
89 extern cvar_t* r_bumpmap;
90 extern cvar_t* r_specular;
91 extern cvar_t* r_hardness;
92 extern cvar_t* r_parallax;
93 extern cvar_t* r_fog;
94 extern cvar_t* r_flares;
95 extern cvar_t* r_coronas;
96 extern cvar_t* r_dynamic_lights;
97 extern cvar_t* r_drawtags;
98 
99 /* private renderer variables */
100 typedef struct rlocals_s {
101  /* view origin angle vectors */
105 
106  /* for box culling */
108 
109  int frame;
110  int tracenum;
111 
112  float world_matrix[16];
113 
119 } rlocals_t;
120 
121 extern rlocals_t r_locals;
122 
123 bool R_CullMeshModel(const entity_t* e);
124 
126 void R_DrawBspNormals(int tile);
127 bool R_CullBspModel(const entity_t* e);
128 bool R_CullSphere(const vec3_t centre, const float radius, const unsigned int clipflags);
129 void R_GetLevelSurfaceLists(void);
130 void R_GetEntityLists(void);
131 void R_DrawInitLocal(void);
132 void R_DrawParticles(void);
133 void R_SetupFrustum(void);
134 
135 void R_ClearBspRRefs(void);
136 void R_AddBspRRef(const mBspModel_t* model, const vec3_t origin, const vec3_t angles, const bool forceVisibility);
137 void R_RenderOpaqueBspRRefs(void);
138 void R_RenderOpaqueWarpBspRRefs(void);
139 void R_RenderAlphaTestBspRRefs(void);
140 void R_RenderMaterialBspRRefs(void);
141 void R_RenderFlareBspRRefs(void);
142 void R_RenderBlendBspRRefs(void);
143 void R_RenderBlendWarpBspRRefs(void);
144 
145 
146 typedef enum {
153 
155 typedef struct {
156  const char* rendererString;
157  const char* vendorString;
158  const char* versionString;
159  const char* extensionsString;
160 
163 
166 
177 
178  char lodDir[8];
179 
181 
182  bool hwgamma;
183 
184  int32_t maxAnisotropic;
188 
191 
194 
198  bool lod_bias;
199 
203 } rconfig_t;
204 
205 extern rconfig_t r_config;
206 
207 /*
208 ====================================================================
209 IMPLEMENTATION SPECIFIC FUNCTIONS
210 ====================================================================
211 */
212 
213 bool Rimp_Init(void);
214 void Rimp_Shutdown(void);
215 bool R_InitGraphics(const viddefContext_t* context);
int maxDrawBuffers
Definition: r_local.h:173
int gl_solid_format
Definition: r_local.h:189
cvar_t * r_particles
Definition: r_particle.cpp:32
int gl_filter_max
Definition: r_local.h:196
cvar_t * r_bumpmap
Definition: r_main.cpp:103
cvar_t * r_maxlightmap
Definition: r_main.cpp:101
void R_DrawModelParticle(modelInfo_t *mi)
Renders a particle model for the battlescape.
Definition: r_mesh.cpp:397
void R_DrawParticles(void)
Definition: r_particle.cpp:266
void R_ClearBspRRefs(void)
Definition: r_bsp.cpp:311
int maxVertexBufferSize
Definition: r_local.h:171
cvar_t * r_screenshot_jpeg_quality
Definition: r_main.cpp:67
int maxVertexAttribs
Definition: r_local.h:170
cvar_t * r_coronas
Definition: r_main.cpp:109
cvar_t * r_vertexbuffers
Definition: r_main.cpp:94
cvar_t * r_drawtags
Definition: r_main.cpp:110
cvar_t * r_default_specular
Definition: r_main.cpp:82
void R_RenderAlphaTestBspRRefs(void)
Definition: r_bsp.cpp:436
int maxTextureCoords
Definition: r_local.h:169
void R_RenderOpaqueWarpBspRRefs(void)
Draw all warped opaque bsp surfaces via warp shader.
Definition: r_bsp.cpp:426
cvar_t * r_texture_lod
Definition: r_main.cpp:65
This is a cvar definition. Cvars can be user modified and used in our menus e.g.
Definition: cvar.h:71
cvar_t * r_threads
Definition: r_main.cpp:93
int maxColorAttachments
Definition: r_local.h:175
cvar_t * r_driver
Definition: r_main.cpp:86
voidpf uLong int origin
Definition: ioapi.h:45
bool drawBuffers
Definition: r_local.h:187
cvar_t * r_programs
Definition: r_main.cpp:97
surfaces are assigned to arrays based on their primary rendering type and then sorted by world textur...
void R_RenderOpaqueBspRRefs(void)
Draw all simple opaque bsp surfaces with multitexture enabled and light enabled.
Definition: r_bsp.cpp:410
const model_t * bufferMapTile
this is the currently handled bsp model
Definition: r_local.h:118
bool R_CullBspModel(const entity_t *e)
Returns true if the specified entity is completely culled by the view frustum, false otherwise...
Definition: r_bsp.cpp:108
int tracenum
Definition: r_local.h:110
cvar_t * r_dynamic_lights
Definition: r_main.cpp:96
cvar_t * r_screenshot_format
Definition: r_main.cpp:66
GL config stuff.
Definition: r_local.h:155
int glVersionMinor
Definition: r_local.h:162
int maxRenderbufferSize
Definition: r_local.h:174
const char * rendererString
Definition: r_local.h:156
rconfig_t r_config
Definition: r_main.cpp:47
cvar_t * r_shadows
Definition: r_main.cpp:87
cvar_t * r_postprocess
Definition: r_main.cpp:100
Contains the game screen context, everything that is needed to create the graphic context...
Definition: cl_video.h:43
void R_DrawInitLocal(void)
Loads some textures and init the 3d globe.
Definition: r_draw.cpp:83
bool hwgamma
Definition: r_local.h:182
void Rimp_Shutdown(void)
Definition: r_sdl.cpp:282
int maxVertexTextureImageUnits
Definition: r_local.h:176
void R_DrawMaterialSurfaces(const mBspSurfaces_t *surfs, glElementIndex_t *indexPtr)
Iterates the specified surfaces list, updating materials as they are encountered, and rendering all v...
Definition: r_material.cpp:399
cvar_t * r_drawentities
Definition: r_main.cpp:60
bool frameBufferObject
Definition: r_local.h:186
int glslVersionMajor
Definition: r_local.h:164
void R_GetLevelSurfaceLists(void)
Fills the surface chains for the current worldlevel and hide other levels.
Definition: r_bsp.cpp:281
void R_SetSurfaceBumpMappingParameters(const mBspSurface_t *surf, const image_t *normalMap, const image_t *specularMap)
Definition: r_surface.cpp:32
int videoMemory
Definition: r_local.h:180
cvar_t * r_checkerror
Definition: r_main.cpp:84
cvar_t * r_multisample
Definition: r_main.cpp:90
lightmap definitions
void R_RenderBlendWarpBspRRefs(void)
Draw all warped translucent bsp surfaces via warp shader and with blend enabled.
Definition: r_bsp.cpp:475
cvar_t * r_stencilshadows
Definition: r_main.cpp:88
void R_RenderFlareBspRRefs(void)
Definition: r_bsp.cpp:454
cvar_t * r_ext_texture_compression
Definition: r_main.cpp:73
int maxTextureUnits
Definition: r_local.h:168
float world_matrix[16]
Definition: r_local.h:112
cvar_t * r_default_hardness
Definition: r_main.cpp:83
cvar_t * r_flares
Definition: r_main.cpp:108
const char * vendorString
Definition: r_local.h:157
cvar_t * r_showbox
Definition: r_main.cpp:92
cvar_t * r_drawworld
Definition: r_main.cpp:61
rlocals_t r_locals
Definition: r_main.cpp:49
int frame
Definition: r_local.h:109
struct rlocals_s rlocals_t
bool R_InitGraphics(const viddefContext_t *context)
Init the SDL window.
Definition: r_sdl.cpp:218
hardwareType_t hardwareType
Definition: r_local.h:202
GLuint glElementIndex_t
Definition: r_gl.h:57
int gl_compressed_alpha_format
Definition: r_local.h:193
vec3_t up
Definition: r_local.h:102
void R_GetEntityLists(void)
Primary entry point for drawing all entities.
Definition: r_entity.cpp:625
bool nonPowerOfTwo
Definition: r_local.h:200
int maxLights
Definition: r_local.h:172
int maxTextureSize
Definition: r_local.h:167
cvar_t * r_wire
Definition: r_main.cpp:91
hardwareType_t
Definition: r_local.h:146
cvar_t * r_hardness
Definition: r_main.cpp:105
cvar_t * r_glsl_version
The GLSL version being used (not necessarily a supported version by the OpenGL implementation). Stored as a c-string and integer.
Definition: r_main.cpp:99
cvar_t * r_overridematerial
Definition: r_main.cpp:81
void R_SetupFrustum(void)
Definition: r_main.cpp:137
bool anisotropic
Definition: r_local.h:185
cvar_t * r_lightmap
Definition: r_main.cpp:68
cvar_t * r_parallax
Definition: r_main.cpp:106
int gl_filter_min
Definition: r_local.h:195
bool lod_bias
Definition: r_local.h:198
cvar_t * r_shownormals
Definition: r_main.cpp:102
void R_RenderMaterialBspRRefs(void)
Definition: r_bsp.cpp:449
cvar_t * r_swapinterval
Definition: r_main.cpp:89
bool Rimp_Init(void)
Definition: r_sdl.cpp:72
int gl_alpha_format
Definition: r_local.h:190
vec3_t forward
Definition: r_local.h:103
cvar_t * r_debug_lights
Definition: r_main.cpp:71
cvar_t * r_drawbuffer
Definition: r_main.cpp:85
cvar_t * r_isometric
Definition: r_main.cpp:63
cvar_t * r_materials
Definition: r_main.cpp:80
cBspPlane_t frustum[4]
Definition: r_local.h:107
void R_DrawSurfaces(const mBspSurfaces_t *surfs, glElementIndex_t *indexPtr)
General surface drawing function, that draw the surface chains.
Definition: r_surface.cpp:98
brush model
vec_t vec3_t[3]
Definition: ufotypes.h:39
const char * versionString
Definition: r_local.h:158
vec3_t right
Definition: r_local.h:104
int32_t maxAnisotropic
Definition: r_local.h:184
cvar_t * r_anisotropic
Definition: r_main.cpp:64
cvar_t * r_nocull
Definition: r_main.cpp:62
Brush model header file.
int glVersionMajor
Definition: r_local.h:161
int glslVersionMinor
Definition: r_local.h:165
bool R_CullMeshModel(const entity_t *e)
Checks whether a model is visible in the current scene.
Definition: r_mesh.cpp:446
cvar_t * r_specular
Definition: r_main.cpp:104
void R_RenderBlendBspRRefs(void)
Draw all translucent bsp surfaces with multitexture enabled and blend enabled.
Definition: r_bsp.cpp:462
const char * extensionsString
Definition: r_local.h:159
void R_DrawBspNormals(int tile)
Developer tool for viewing BSP vertex normals. Only Phong interpolated surfaces show their normals wh...
Definition: r_bsp.cpp:134
cvar_t * r_fog
Definition: r_main.cpp:107
plane_t structure
Definition: typedefs.h:20
void R_AddBspRRef(const mBspModel_t *model, const vec3_t origin, const vec3_t angles, const bool forceVisibility)
Adds bsp render references.
Definition: r_bsp.cpp:324
cvar_t * r_debug_tangents
Definition: r_main.cpp:70
cvar_t * r_warp
Definition: r_main.cpp:95
bool R_CullSphere(const vec3_t centre, const float radius, const unsigned int clipflags)
Performs a spherical frustum check.
Definition: r_bsp.cpp:83
int gl_compressed_solid_format
Definition: r_local.h:192
cvar_t * r_debug_normals
Definition: r_main.cpp:69
Header file for the render material subsystem.
OpenGL bindings.