40 #include "../../common/tracing.h"
41 #include "../ui/ui_windows.h"
42 #include "../../ports/system.h"
43 #include "../client.h"
116 const size_t maxLength = strlen(msg);
119 for (
int i = 0;
i < maxLength;
i +=
length) {
150 glEnable(GL_SCISSOR_TEST);
152 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
154 glDisable(GL_SCISSOR_TEST);
164 for (i = 0; i < 4; i++) {
182 for (i = 0; i < 4; i++) {
194 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
197 glClear(GL_STENCIL_BUFFER_BIT);
199 glDepthFunc(GL_LEQUAL);
202 glDepthRange(0.0
f, 1.0
f);
225 if (r_locals.
frame > 0xffff)
229 Com_Printf(
"Modified render related cvars\n");
248 #ifndef GL_VERSION_ES_CM_1_0
253 glDrawBuffer(GL_FRONT);
255 glDrawBuffer(GL_BACK);
269 r_texturealphamode->
modified =
false;
274 r_texturesolidmode->
modified =
false;
300 static int lastFrame = 0;
301 int deltaMsec =
cl.
time - lastFrame;
304 r_battlescapeWeather.
update(deltaMsec);
310 glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
358 r_battlescapeWeather.
render();
389 glClear(GL_DEPTH_BUFFER_BIT);
424 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
457 #if SDL_VERSION_ATLEAST(2,0,0)
458 SDL_SetWindowBrightness(
cls.window, g);
460 SDL_SetGamma(g, g, g);
470 #if SDL_VERSION_ATLEAST(2,0,0)
471 SDL_GL_SwapWindow(
cls.window);
473 SDL_GL_SwapBuffers();
478 {
"r_listimages",
R_ImageList_f,
"Show all loaded images on game console"},
481 {
"r_listmodels",
R_ModModellist_f,
"Show all loaded models on game console"},
482 {
"r_strings",
R_Strings_f,
"Print openGL vendor and other strings"},
485 {
nullptr,
nullptr,
nullptr}
493 Com_Printf(
"%s exceeded max supported texture size\n", cvar->
name);
532 int glslVersionMajor, glslVersionMinor;
533 sscanf(cvar->
string,
"%d.%d", &glslVersionMajor, &glslVersionMinor);
566 static void R_UpdateWeather (
const char* cvarName,
const char* oldValue,
const char* newValue,
void*
data)
575 r_weather =
Cvar_Get(
"r_weather",
"0", 0,
"Current battlescape weather effect");
578 r_drawentities =
Cvar_Get(
"r_drawentities",
"1", 0,
"Draw the local entities");
579 r_drawworld =
Cvar_Get(
"r_drawworld",
"1", 0,
"Draw the world brushes");
581 r_nocull =
Cvar_Get(
"r_nocull",
"0", 0,
"Don't perform culling for brushes and entities");
584 r_screenshot_format =
Cvar_Get(
"r_screenshot_format",
"jpg",
CVAR_ARCHIVE,
"png, jpg or tga are valid screenshot formats");
585 r_screenshot_jpeg_quality =
Cvar_Get(
"r_screenshot_jpeg_quality",
"75",
CVAR_ARCHIVE,
"jpeg quality in percent for jpeg screenshots");
589 r_overridematerial =
Cvar_Get(
"r_overridematerial",
"", 0,
"Used to override the material for a map");
591 r_default_hardness =
Cvar_Get(
"r_default_hardness",
"0.2",
CVAR_R_CONTEXT,
"Default specular brightness");
595 r_shadows =
Cvar_Get(
"r_shadows",
"1",
CVAR_ARCHIVE,
"Multiplier for the alpha of the shadows");
596 r_stencilshadows =
Cvar_Get(
"r_stencilshadows",
"0",
CVAR_ARCHIVE,
"Activate or deactivate stencil shadows");
598 r_texturemode =
Cvar_Get(
"r_texturemode",
"GL_LINEAR_MIPMAP_LINEAR",
CVAR_ARCHIVE,
"change the filtering and mipmapping for textures");
601 r_wire =
Cvar_Get(
"r_wire",
"0", 0,
"Draw the scene in wireframe mode");
602 r_showbox =
Cvar_Get(
"r_showbox",
"0",
CVAR_ARCHIVE,
"1=Shows model bounding box, 2=show also the brushes bounding boxes");
609 r_debug_tangents =
Cvar_Get(
"r_debug_tangents",
"0",
CVAR_R_PROGRAMS,
"Draw tangent, bitangent, and normal dotted with light dir as RGB espectively");
613 r_ext_nonpoweroftwo =
Cvar_Get(
"r_ext_nonpoweroftwo",
"1",
CVAR_ARCHIVE,
"Enable or disable the non power of two extension");
614 r_ext_s3tc_compression =
Cvar_Get(
"r_ext_s3tc_compression",
"1",
CVAR_ARCHIVE,
"Also see r_ext_texture_compression");
615 r_intel_hack =
Cvar_Get(
"r_intel_hack",
"1",
CVAR_ARCHIVE,
"Intel cards have no shaders until this is set to 0 - to it to a value > 1 to not limit the max texture resolution");
616 r_vertexbuffers =
Cvar_Get(
"r_vertexbuffers",
"0",
CVAR_ARCHIVE |
CVAR_R_CONTEXT,
"Controls usage of OpenGL Vertex Buffer Objects (VBO) versus legacy vertex arrays.");
620 r_drawbuffer =
Cvar_Get(
"r_drawbuffer",
"GL_BACK");
624 r_warp =
Cvar_Get(
"r_warp",
"1",
CVAR_ARCHIVE,
"Activates or deactivates warping surface rendering");
628 r_hardness =
Cvar_Get(
"r_hardness",
"1.0",
CVAR_ARCHIVE,
"Hardness control for GLSL shaders (specular, bump, ...)");
633 r_particles =
Cvar_Get(
"r_particles",
"1", 0,
"Activate or deactivate particle rendering");
634 r_drawtags =
Cvar_Get(
"r_drawtags",
"0", 0,
"Activate or deactivate tag rendering");
677 if (screenRatio > normRatio) {
681 }
else if (screenRatio < normRatio) {
704 r_ext_texture_compression->
modified =
false;
729 Com_Printf(
"Failed to set video mode %dx%d %s.\n",
731 (newCtx.
fullscreen ?
"fullscreen" :
"windowed"));
754 return (uintptr_t)SDL_GL_GetProcAddress(functionName);
759 const char* s = strstr(functionName,
"###");
764 const char* replace[] = {
"EXT",
"OES",
"ARB"};
767 const size_t replaceNo =
lengthof(replace);
768 for (
size_t i = 0;
i < replaceNo;
i++) {
769 if (
Q_strreplace(functionName,
"###", replace[
i], targetBuf, length)) {
790 #ifdef GL_VERSION_ES_CM_1_0
791 if(strcmp(extension,
"GL_ARB_texture_non_power_of_two") == 0) {
792 extension =
"GL_OES_texture_npot";
795 const char* s = strstr(extension,
"###");
799 const char* replace[] = {
"ARB",
"EXT",
"OES"};
802 const size_t replaceNo =
lengthof(replace);
804 for (i = 0; i < replaceNo; i++) {
805 if (
Q_strreplace(extension,
"###", replace[i], targetBuf, length)) {
821 #ifdef GL_VERSION_ES_CM_1_0
822 if (strcmp(extension,
"GL_ARB_multitexture") == 0 ||
823 strcmp(extension,
"GL_ARB_vertex_buffer_object") == 0) {
825 Com_Printf(
"Overriding %s - it is always present in GLES\n", extension);
832 #define R_CheckGLVersion(max, min) (r_config.glVersionMajor > max || (r_config.glVersionMajor == max && r_config.glVersionMinor >= min))
846 while(*versionNumbers && strchr(
"0123456789", *versionNumbers) ==
nullptr) {
849 if( *versionNumbers )
855 qglActiveTexture =
nullptr;
856 qglClientActiveTexture =
nullptr;
859 qglGenBuffers =
nullptr;
860 qglDeleteBuffers =
nullptr;
861 qglBindBuffer =
nullptr;
862 qglBufferData =
nullptr;
865 qglCreateShader =
nullptr;
866 qglDeleteShader =
nullptr;
867 qglShaderSource =
nullptr;
868 qglCompileShader =
nullptr;
869 qglGetShaderiv =
nullptr;
870 qglGetShaderInfoLog =
nullptr;
871 qglCreateProgram =
nullptr;
872 qglDeleteProgram =
nullptr;
873 qglAttachShader =
nullptr;
874 qglDetachShader =
nullptr;
875 qglLinkProgram =
nullptr;
876 qglUseProgram =
nullptr;
877 qglGetActiveUniform =
nullptr;
878 qglGetProgramiv =
nullptr;
879 qglGetProgramInfoLog =
nullptr;
880 qglGetUniformLocation =
nullptr;
881 qglUniform1i =
nullptr;
882 qglUniform1f =
nullptr;
883 qglUniform1fv =
nullptr;
884 qglUniform2fv =
nullptr;
885 qglUniform3fv =
nullptr;
886 qglUniform4fv =
nullptr;
887 qglGetAttribLocation =
nullptr;
888 qglUniformMatrix4fv =
nullptr;
891 qglEnableVertexAttribArray =
nullptr;
892 qglDisableVertexAttribArray =
nullptr;
893 qglVertexAttribPointer =
nullptr;
896 qglIsRenderbufferEXT =
nullptr;
897 qglBindRenderbufferEXT =
nullptr;
898 qglDeleteRenderbuffersEXT =
nullptr;
899 qglGenRenderbuffersEXT =
nullptr;
900 qglRenderbufferStorageEXT =
nullptr;
901 qglRenderbufferStorageMultisampleEXT =
nullptr;
902 qglGetRenderbufferParameterivEXT =
nullptr;
903 qglIsFramebufferEXT =
nullptr;
904 qglBindFramebufferEXT =
nullptr;
905 qglDeleteFramebuffersEXT =
nullptr;
906 qglGenFramebuffersEXT =
nullptr;
907 qglCheckFramebufferStatusEXT =
nullptr;
908 qglFramebufferTexture1DEXT =
nullptr;
909 qglFramebufferTexture2DEXT =
nullptr;
910 qglFramebufferTexture3DEXT =
nullptr;
911 qglFramebufferRenderbufferEXT =
nullptr;
912 qglGetFramebufferAttachmentParameterivEXT =
nullptr;
913 qglGenerateMipmapEXT =
nullptr;
914 qglDrawBuffers =
nullptr;
922 #ifndef GL_VERSION_ES_CM_1_0
924 if (r_ext_texture_compression->
integer) {
925 Com_Printf(
"using GL_ARB_texture_compression\n");
938 if (r_ext_nonpoweroftwo->
integer) {
939 Com_Printf(
"using GL_ARB_texture_non_power_of_two\n");
943 Com_Printf(
"ignoring GL_ARB_texture_non_power_of_two\n");
956 glGetIntegerv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &r_config.
maxAnisotropic);
978 #ifndef GL_VERSION_ES_CM_1_0
1023 Com_Printf(
"GLSL version guaranteed to be supported by OpenGL implementation postfixed by vender supplied info: %i.%i\n",
1027 Com_Printf(
"GLSL shaders unsupported by OpenGL implementation.\n");
1033 qglBindRenderbufferEXT = (BindRenderbufferEXT_t)
R_GetProcAddressExt(
"glBindRenderbuffer###");
1034 qglDeleteRenderbuffersEXT = (DeleteRenderbuffersEXT_t)
R_GetProcAddressExt(
"glDeleteRenderbuffers###");
1035 qglGenRenderbuffersEXT = (GenRenderbuffersEXT_t)
R_GetProcAddressExt(
"glGenRenderbuffers###");
1036 qglRenderbufferStorageEXT = (RenderbufferStorageEXT_t)
R_GetProcAddressExt(
"glRenderbufferStorage###");
1037 qglRenderbufferStorageMultisampleEXT = (RenderbufferStorageMultisampleEXT_t)
R_GetProcAddressExt(
"glRenderbufferStorageMultisample###");
1038 qglGetRenderbufferParameterivEXT = (GetRenderbufferParameterivEXT_t)
R_GetProcAddressExt(
"glGetRenderbufferParameteriv###");
1040 qglBindFramebufferEXT = (BindFramebufferEXT_t)
R_GetProcAddressExt(
"glBindFramebuffer###");
1041 qglDeleteFramebuffersEXT = (DeleteFramebuffersEXT_t)
R_GetProcAddressExt(
"glDeleteFramebuffers###");
1042 qglGenFramebuffersEXT = (GenFramebuffersEXT_t)
R_GetProcAddressExt(
"glGenFramebuffers###");
1043 qglCheckFramebufferStatusEXT = (CheckFramebufferStatusEXT_t)
R_GetProcAddressExt(
"glCheckFramebufferStatus###");
1044 qglFramebufferTexture1DEXT = (FramebufferTexture1DEXT_t)
R_GetProcAddressExt(
"glFramebufferTexture1D###");
1045 qglFramebufferTexture2DEXT = (FramebufferTexture2DEXT_t)
R_GetProcAddressExt(
"glFramebufferTexture2D###");
1046 qglFramebufferTexture3DEXT = (FramebufferTexture3DEXT_t)
R_GetProcAddressExt(
"glFramebufferTexture3D###");
1047 qglFramebufferRenderbufferEXT = (FramebufferRenderbufferEXT_t)
R_GetProcAddressExt(
"glFramebufferRenderbuffer###");
1048 qglGetFramebufferAttachmentParameterivEXT = (GetFramebufferAttachmentParameterivEXT_t)
R_GetProcAddressExt(
"glGetFramebufferAttachmentParameteriv###");
1051 qglBlitFramebuffer = (BlitFramebuffer_t)
R_GetProcAddress(
"glBlitFramebuffer");
1053 if (qglDeleteRenderbuffersEXT && qglDeleteFramebuffersEXT && qglGenFramebuffersEXT && qglBindFramebufferEXT
1054 && qglFramebufferTexture2DEXT && qglBindRenderbufferEXT && qglRenderbufferStorageEXT && qglCheckFramebufferStatusEXT) {
1055 #ifdef GL_VERSION_ES_CM_1_0
1066 Com_Printf(
"using GL_ARB_framebuffer_object\n");
1071 Com_Printf(
"skipping GL_ARB_framebuffer_object - not every needed extension is supported\n");
1081 Com_Printf(
"Framebuffer objects unsupported by OpenGL implementation.\n");
1100 glGetIntegerv(GL_MAX_LIGHTS, &r_config.
maxLights);
1118 #ifdef GL_VERSION_ES_CM_1_0
1120 Com_Printf(
"max varying floats: %i\n", tmpInteger * 4);
1122 Com_Printf(
"max fragment uniform components: %i\n", tmpInteger * 4);
1124 Com_Printf(
"max vertex uniform components: %i\n", tmpInteger * 4);
1126 glGetIntegerv(GL_MAX_VARYING_FLOATS, &tmpInteger);
1127 Com_Printf(
"max varying floats: %i\n", tmpInteger);
1128 glGetIntegerv(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, &tmpInteger);
1129 Com_Printf(
"max fragment uniform components: %i\n", tmpInteger);
1130 glGetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS, &tmpInteger);
1131 Com_Printf(
"max vertex uniform components: %i\n", tmpInteger);
1160 Com_Printf(
"Using high resolution globe textures as requested.\n");
1163 Com_Printf(
"Warning: high resolution globe textures requested, but could not be found; falling back to medium resolution globe textures.\n");
1165 Com_Printf(
"Using medium resolution globe textures as requested.\n");
1170 Com_Printf(
"Warning: medium resolution globe textures requested, but could not be found; falling back to low resolution globe textures.\n");
1172 Com_Printf(
"Using low resolution globe textures as requested.\n");
1185 sscanf(r_config.
versionString,
"%d.%d.%d ", &maj, &min, &rel);
1187 #ifndef GL_VERSION_ES_CM_1_0
1217 #define INTEL_TEXTURE_RESOLUTION 1024
1225 if (!
Q_strcasecmp((
const char*)glGetString(GL_RENDERER),
"gdi generic"))
1227 "Update your graphic card drivers.");
1229 if (!
Q_strcasecmp((
const char*)glGetString(GL_RENDERER),
"Software Rasterizer"))
1231 "Update your graphic card drivers.");
1234 Com_Printf(
"You might want to activate texture compression if you have visual artifacts.\n");
1237 Com_Printf(
"Disabling shaders for Intel chips - see cvar r_intel_hack\n");
1239 if (r_intel_hack->
integer == 1) {
1259 Cvar_Set(
"r_vendor_non_intel",
"1");
1283 r_config.
vendorString = (
const char*)glGetString(GL_VENDOR);
1285 r_config.
versionString = (
const char*)glGetString(GL_VERSION);
cvar_t * r_screenshot_jpeg_quality
void Com_SetRenderModified(bool modified)
static cvar_t * r_ext_s3tc_compression
void(APIENTRY * EnableVertexAttribArray_t)(GLuint index)
static cvar_t * r_ext_nonpoweroftwo
void(APIENTRY * GetProgramiv_t)(GLuint id, GLenum field, GLuint *dest)
void R_RestartPrograms_f(void)
Reloads the glsl shaders.
void(APIENTRY * GetShaderInfoLog_t)(GLuint id, GLuint maxlen, GLuint *len, GLchar *dest)
static bool R_CvarPostProcess(cvar_t *cvar)
cvar_t * r_overridematerial
void R_DrawParticles(void)
static void R_RegisterImageVars(void)
cvarChangeListener_t * Cvar_RegisterChangeListener(const char *varName, cvarChangeListenerFunc_t listenerFunc)
Registers a listener that is executed each time a cvar changed its value.
#define GL_MAX_RENDERBUFFER_SIZE_EXT
void R_ShutdownFBObjects(void)
Delete all registered framebuffer and render buffer objects, clear memory.
renderer_threadstate_t r_threadstate
void R_DrawOpaqueMeshEntities(entity_t *ents)
void R_AddBspRRef(const mBspModel_t *model, const vec3_t origin, const vec3_t angles, const bool forceVisibility)
Adds bsp render references.
#define GL_MAX_FRAGMENT_UNIFORM_VECTORS
void R_ScreenShot_f(void)
GLint(APIENTRY * GetUniformLocation_t)(GLuint id, const GLchar *name)
light_t staticLights[MAX_STATIC_LIGHTS]
void changeTo(weatherTypes weather)
changes to weather of given type; parameters are randomized
void(APIENTRY * ShaderSource_t)(GLuint id, GLuint count, GLchar **sources, GLuint *len)
cvar_t * r_debug_tangents
bool Cvar_AssertValue(cvar_t *cvar, float minVal, float maxVal, bool shouldBeIntegral)
Checks cvar values.
This is a cvar definition. Cvars can be user modified and used in our menus e.g.
void(APIENTRY * Uniform1fv_t)(GLint location, int count, GLfloat *f)
void(APIENTRY * VertexAttribPointer_t)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer)
model_t * r_mapTiles[MAX_MAPTILES]
The world model(s)
static void R_Strings_f(void)
Prints some OpenGL strings.
void R_FontListCache_f(void)
Console command binding to show the font cache.
void R_DrawEntityEffects(void)
Draws shadow and highlight effects for the entities (actors)
void(APIENTRY * ClientActiveTexture_t)(GLenum texture)
void R_DrawNullEntities(const entity_t *ents)
Draw entities which models couldn't be loaded.
void(APIENTRY * Uniform2fv_t)(GLint location, int count, GLfloat *f)
cvar_t * r_ext_texture_compression
static bool R_CvarCheckMultisample(cvar_t *cvar)
void(APIENTRY * GetShaderiv_t)(GLuint id, GLenum field, GLuint *dest)
static void R_VerifyDriver(void)
Checks whether we have hardware acceleration.
#define GL_MAX_VARYING_VECTORS
GLuint(APIENTRY * CreateShader_t)(GLenum type)
void(APIENTRY * Uniform4fv_t)(GLint location, int count, GLfloat *f)
void R_DrawBspNormals(int tile)
Developer tool for viewing BSP vertex normals. Only Phong interpolated surfaces show their normals wh...
void R_SetDefaultState(void)
void R_RenderMaterialBspRRefs(void)
void(APIENTRY * DisableVertexAttribArray_t)(GLuint index)
local graphics definitions
GLuint(APIENTRY * CreateProgram_t)(void)
void R_RenderAlphaTestBspRRefs(void)
void RotatePointAroundVector(vec3_t dst, const vec3_t dir, const vec3_t point, float degrees)
Rotate a point around a given vector.
void R_ShutdownImages(void)
void R_SetupFrustum(void)
static const char * R_TranslateError(GLenum error)
void Com_Printf(const char *const fmt,...)
const char * rendererString
static bool R_CvarCheckMaxLightmap(cvar_t *cvar)
void R_UpdateDefaultMaterial(const char *cvarName, const char *oldValue, const char *newValue, void *data)
Change listener callback for material value cvars.
static uintptr_t R_GetProcAddressExt(const char *functionName)
#define LIGHTMAP_DEFAULT_PAGE_SIZE
static cvar_t * r_intel_hack
Contains the game screen context, everything that is needed to create the graphic context...
bool Cvar_PendingCvars(int flags)
Checks whether there are pending cvars for the given flags.
#define VectorScale(in, scale, out)
static cvar_t * r_texturealphamode
void R_SphereInit(void)
Creates the spheres we need for rendering the 3d globe.
const GLuint *typedef GLuint *typedef GLenum
int maxVertexTextureImageUnits
void R_TextureMode(const char *string)
void Cmd_TableRemoveList(const cmdList_t *cmdList)
void R_DrawBoundingBoxes(void)
static cvar_t * r_texturesolidmode
static void R_ClearScene(void)
void R_Color(const vec4_t rgba)
Change the color to given value.
void Com_Error(int code, const char *fmt,...)
void(APIENTRY * Uniform1i_t)(GLint location, GLint i)
void R_ImageList_f(void)
Shows all loaded images.
void(APIENTRY * DeleteShader_t)(GLuint id)
entity_t * r_blend_mesh_entities
void R_InitMiscTexture(void)
void R_EnableMultisample(bool enable)
void Sys_Sleep(int milliseconds)
Calls the win32 sleep function.
void R_ClearBspRRefs(void)
void Q_strncpyz(char *dest, const char *src, size_t destsize)
Safe strncpy that ensures a trailing zero.
void AngleVectors(const vec3_t angles, vec3_t forward, vec3_t right, vec3_t up)
Create the rotation matrix in order to rotate something.
#define R_CheckGLVersion(max, min)
#define DotProduct(x, y)
Returns the distance between two 3-dimensional vectors.
static bool R_SearchForVendor(const char *vendor)
Searches vendor and renderer GL strings for the given vendor id.
const char * vendorString
cvar_t * Cvar_Get(const char *var_name, const char *var_value, int flags, const char *desc)
Init or return a cvar.
static bool R_CvarPrograms(cvar_t *cvar)
void R_DrawSpecialEntities(const entity_t *ents)
QGL_EXTERN GLuint GLsizei GLsizei * length
const char * Q_stristr(const char *str, const char *substr)
Checks in case insensitive manner whether str contains substr.
bool R_InitGraphics(const viddefContext_t *context)
Init the SDL window.
void R_InitFBObjects(void)
void R_ModModellist_f(void)
Prints all loaded models.
void(APIENTRY * AttachShader_t)(GLuint prog, GLuint shader)
void R_ResetArrayState(void)
static void R_EnforceVersion(void)
We need at least opengl version 1.2.1.
void(APIENTRY * DetachShader_t)(GLuint prog, GLuint shader)
void R_ShutdownPrograms(void)
light_t dynamicLights[MAX_GL_LIGHTS]
entity_t * r_null_entities
hardwareType_t hardwareType
int gl_compressed_alpha_format
#define GL_SHADING_LANGUAGE_VERSION
#define GL_MAX_TEXTURE_COORDS
void R_GetLevelSurfaceLists(void)
Fills the surface chains for the current worldlevel and hide other levels.
cvar_t * r_stencilshadows
static void R_UpdateVidDef(const viddefContext_t *context)
#define Q_strcasecmp(a, b)
void R_FontShutdown(void)
frees the SDL_ttf fonts
void R_TextureSolidMode(const char *string)
void R_RenderOpaqueBspRRefs(void)
Draw all simple opaque bsp surfaces with multitexture enabled and light enabled.
void(APIENTRY * DeleteProgram_t)(GLuint id)
static cvar_t * r_maxtexres
#define INTEL_TEXTURE_RESOLUTION
static void R_PrintInfo(const char *pre, const char *msg)
static uintptr_t R_GetProcAddress(const char *functionName)
#define GL_MAX_VERTEX_ATTRIBS
#define MAX_ENTITY_LIGHTS
static bool R_CheckExtension(const char *extension)
Checks for an OpenGL extension that was announced via the OpenGL ext string. If the given extension s...
static void R_InitExtensions(void)
Check and load all needed and supported opengl extensions.
#define LIGHTMAP_MAX_PAGE_SIZE
Pseudoinstanced grass generation and rendering.
void R_DrawBlendMeshEntities(entity_t *ents)
void R_UpdateSustainedLights(void)
Updates state of sustained lights; should be called once per frame right before world rendering...
Weather r_battlescapeWeather
void(APIENTRY * UseProgram_t)(GLuint id)
void(APIENTRY * LinkProgram_t)(GLuint id)
void Cvar_Reset(cvar_t *cvar)
Sets the cvar value back to the old value.
GLint(APIENTRY * GetAttribLocation_t)(GLuint id, const GLchar *name)
void(APIENTRY * Uniform1f_t)(GLint location, GLfloat f)
entity_t * r_special_entities
void(APIENTRY * GetActiveUniforms_t)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)
void R_EnableBlend(bool enable)
static bool R_CvarCheckDynamicLights(cvar_t *cvar)
static bool R_CvarGLSLVersionCheck(cvar_t *cvar)
Callback that is called when the r_glsl_version cvar is changed,.
static const cmdList_t r_commands[]
bool Com_IsRenderModified(void)
cvar_t * r_default_hardness
void R_TextureAlphaMode(const char *string)
bool VID_GetModeInfo(int modeIndex, vidmode_t *modeInfo)
entity_t * r_opaque_mesh_entities
void R_AddCorona(const vec3_t org, float radius, const vec3_t color)
void R_GetEntityLists(void)
Primary entry point for drawing all entities.
void(APIENTRY * Uniform3fv_t)(GLint location, int count, GLfloat *f)
#define GL_MAX_VERTEX_UNIFORM_VECTORS
bool Q_strreplace(const char *source, const char *pattern, const char *replace, char *dest, size_t destsize)
Replaces the first occurence of the given pattern in the source string with the given replace string...
void(APIENTRY * ActiveTexture_t)(GLenum texture)
void update(int milliseconds)
Updates weather for the time passed; handles particle creation/removal automatically.
void R_RenderBlendBspRRefs(void)
Draw all translucent bsp surfaces with multitexture enabled and blend enabled.
void R_ShutdownThreads(void)
const char * versionString
static void R_Clear(void)
Clears the screens color and depth buffer.
#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
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.
void UI_InvalidateStack(void)
Invalidate all windows of the current stack.
void R_DrawBloom(void)
handle post-processing bloom
GLsizei const GLvoid * data
void setDefaults(void)
Sets clean weather, but generate some parameters usable for easily changing it into the worse varieti...
cvar_t * Cvar_Set(const char *varName, const char *value,...)
Sets a cvar value.
void R_DrawInitLocal(void)
Loads some textures and init the 3d globe.
void R_RenderBlendWarpBspRRefs(void)
Draw all warped translucent bsp surfaces via warp shader and with blend enabled.
static void R_UpdateWeather(const char *cvarName, const char *oldValue, const char *newValue, void *data)
void(APIENTRY * CompileShader_t)(GLuint id)
static cvar_t * r_texturemode
bool Q_IsPowerOfTwo(int i)
Checks whether i is power of two value.
void Cvar_ClearVars(int flags)
Functions to generate and render spheres.
Weather effects rendering subsystem header file.
cvar_t * r_screenshot_format
void(APIENTRY * UniformMatrix4fv_t)(GLint location, int count, GLboolean transpose, GLfloat *v)
cvar_t * r_default_specular
void Cvar_SetValue(const char *varName, float value)
Expands value to a string and calls Cvar_Set.
const char * extensionsString
static void R_RegisterSystemVars(void)
void R_InitPrograms(void)
void render(void)
Draws weather effects.
bool Cvar_SetCheckFunction(const char *varName, bool(*check)(cvar_t *cvar))
Set a checker function for cvar values.
static cvar_t * r_deluxemap
void R_RenderOpaqueWarpBspRRefs(void)
Draw all warped opaque bsp surfaces via warp shader.
cvar_t * r_dynamic_lights
void R_RenderFlareBspRRefs(void)
void(APIENTRY * GetProgramInfoLog_t)(GLuint id, GLuint maxlen, GLuint *len, GLchar *dest)
void R_EnableFog(bool enable)
static bool R_CvarCheckWeather(cvar_t *cvar)
bool R_ImageExists(const char *pname,...)
void Cmd_TableAddList(const cmdList_t *cmdList)
int gl_compressed_solid_format