/* ==================== CL_InitCGame Should only be called by CL_StartHunkUsers ==================== */ void CL_InitCGame( void ) { const char *info; const char *mapname; int t1, t2; vmInterpret_t interpret; t1 = Sys_Milliseconds(); // put away the console Con_Close(); // find the current mapname info = cl.gameState.stringData + cl.gameState.stringOffsets[ CS_SERVERINFO ]; mapname = Info_ValueForKey( info, "mapname" ); Com_sprintf( cl.mapname, sizeof( cl.mapname ), "maps/%s.bsp", mapname ); // load the dll or bytecode if ( cl_connectedToPureServer != 0 ) { // if sv_pure is set we only allow qvms to be loaded interpret = VMI_COMPILED; } else { interpret = Cvar_VariableValue( "vm_cgame" ); } cgvm = VM_Create( "cgame", CL_CgameSystemCalls, interpret ); if ( !cgvm ) { Com_Error( ERR_DROP, "VM_Create on cgame failed" ); } cls.state = CA_LOADING; // init for this gamestate // use the lastExecutedServerCommand instead of the serverCommandSequence // otherwise server commands sent just before a gamestate are dropped VM_Call( cgvm, CG_INIT, clc.serverMessageSequence, clc.lastExecutedServerCommand, clc.clientNum ); // reset any CVAR_CHEAT cvars registered by cgame if ( !clc.demoplaying && !cl_connectedToCheatServer ) Cvar_SetCheatState(); // we will send a usercmd this frame, which // will cause the server to send us the first snapshot cls.state = CA_PRIMED; t2 = Sys_Milliseconds(); Com_DPrintf( "CL_InitCGame: %5.2f seconds\n", (t2-t1)/1000.0 ); // have the renderer touch all its images, so they are present // on the card even if the driver does deferred loading re.EndRegistration(); // make sure everything is paged in if (!Sys_LowPhysicalMemory()) { Com_TouchMemory(); } // clear anything that got printed Con_ClearNotify (); CL_WriteClientLog( va("`~=-----------------=~`\n MAP: %s \n`~=-----------------=~`\n", mapname ) ); }
void RE_EndRegistration( void ) { R_SyncRenderThread(); if (!Sys_LowPhysicalMemory()) { RB_ShowImages(); } qglClear( GL_COLOR_BUFFER_BIT ); }
/* ==================== CL_InitCGame Should only be called by CL_StartHunkUsers ==================== */ void CL_InitCGame(void) { const char *info; const char *mapname; int t1, t2; t1 = Sys_Milliseconds(); // put away the console Con_Close(); // find the current mapname info = cl.gameState.stringData + cl.gameState.stringOffsets[CS_SERVERINFO]; mapname = Info_ValueForKey(info, "mapname"); Com_sprintf(cl.mapname, sizeof(cl.mapname), "maps/%s.bsp", mapname); // load the dll cgvm = VM_Create("cgame", CL_CgameSystemCalls, VMI_NATIVE); if (!cgvm) { Com_Error(ERR_DROP, "VM_Create on cgame failed"); } cls.state = CA_LOADING; // init for this gamestate // use the lastExecutedServerCommand instead of the serverCommandSequence // otherwise server commands sent just before a gamestate are dropped // bani - added clc.demoplaying, since some mods need this at init time, and drawactiveframe is too late for them VM_Call(cgvm, CG_INIT, clc.serverMessageSequence, clc.lastExecutedServerCommand, clc.clientNum, clc.demoplaying, qtrue); // reset any CVAR_CHEAT cvars registered by cgame if (!clc.demoplaying && !cl_connectedToCheatServer) { Cvar_SetCheatState(); } // we will send a usercmd this frame, which // will cause the server to send us the first snapshot cls.state = CA_PRIMED; t2 = Sys_Milliseconds(); Com_Printf("CL_InitCGame: %5.2f seconds\n", (t2 - t1) / 1000.0); // have the renderer touch all its images, so they are present // on the card even if the driver does deferred loading re.EndRegistration(); // make sure everything is paged in if (!Sys_LowPhysicalMemory()) { Com_TouchMemory(); } // clear anything that got printed Con_ClearNotify(); // update the memory usage file CL_UpdateLevelHunkUsage(); }
/* * @brief Touch all images to make sure they are resident */ void RE_EndRegistration(void) { R_IssuePendingRenderCommands(); if (!Sys_LowPhysicalMemory()) { // RB_ShowImages(); } }
void RE_EndRegistration( void ) { R_SyncRenderThread(); if (!Sys_LowPhysicalMemory()) { #ifndef _XBOX // RB_ShowImages(); #endif } }
/* ==================== CL_InitCGame Should only by called by CL_StartHunkUsers ==================== */ void CL_InitCGame( void ) { const char *info; const char *mapname; int t1, t2; t1 = Sys_Milliseconds(); // put away the console Con_Close(); // find the current mapname info = cl.gameState.stringData + cl.gameState.stringOffsets[ CS_SERVERINFO ]; mapname = Info_ValueForKey( info, "mapname" ); Com_sprintf( cl.mapname, sizeof( cl.mapname ), "maps/%s.bsp", mapname ); cgvm = VM_Create( "cgame", CL_CgameSystemCalls, Cvar_VariableValue( "vm_cgame" ) ); if ( !cgvm ) { Com_Error( ERR_DROP, "VM_Create on cgame failed" ); } cls.state = CA_LOADING; // init for this gamestate // use the lastExecutedServerCommand instead of the serverCommandSequence // otherwise server commands sent just before a gamestate are dropped //bani - added clc.demoplaying, since some mods need this at init time, and drawactiveframe is too late for them VM_Call( cgvm, CG_INIT, clc.serverMessageSequence, clc.lastExecutedServerCommand, clc.clientNum, clc.demoplaying ); // we will send a usercmd this frame, which // will cause the server to send us the first snapshot cls.state = CA_PRIMED; t2 = Sys_Milliseconds(); Com_DPrintf( "CL_InitCGame: %5.2fs\n", ( t2 - t1 ) / 1000.0 ); // have the renderer touch all its images, so they are present // on the card even if the driver does deferred loading re.EndRegistration(); // make sure everything is paged in if ( !Sys_LowPhysicalMemory() ) { Com_TouchMemory(); } // Ridah, update the memory usage file CL_UpdateLevelHunkUsage(); CL_WriteClientLog( va("`~=-----------------=~`\n MAP: %s \n`~=-----------------=~`\n", mapname ) ); // if( cl_autorecord->integer ) { // Cvar_Set( "g_synchronousClients", "1" ); // } }
/* =============== R_Register =============== */ void R_Register( void ) { // // latched and archived variables // r_allowExtensions = Cvar_Get( "r_allowExtensions", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_compressed_textures = Cvar_Get( "r_ext_compress_textures", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_compressed_lightmaps = Cvar_Get( "r_ext_compress_lightmaps", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_preferred_tc_method = Cvar_Get( "r_ext_preferred_tc_method", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_gamma_control = Cvar_Get( "r_ext_gamma_control", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_multitexture = Cvar_Get( "r_ext_multitexture", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_compiled_vertex_array = Cvar_Get( "r_ext_compiled_vertex_array", "1", CVAR_ARCHIVE | CVAR_LATCH); #ifdef __linux__ // broken on linux r_ext_texture_env_add = Cvar_Get( "r_ext_texture_env_add", "0", CVAR_ARCHIVE | CVAR_LATCH); #else r_ext_texture_env_add = Cvar_Get( "r_ext_texture_env_add", "1", CVAR_ARCHIVE | CVAR_LATCH); #endif r_ext_texture_filter_anisotropic = Cvar_Get( "r_ext_texture_filter_anisotropic", "16", CVAR_ARCHIVE ); r_DynamicGlow = Cvar_Get( "r_DynamicGlow", "0", CVAR_ARCHIVE ); r_DynamicGlowPasses = Cvar_Get( "r_DynamicGlowPasses", "5", CVAR_CHEAT ); r_DynamicGlowDelta = Cvar_Get( "r_DynamicGlowDelta", "0.8f", CVAR_CHEAT ); r_DynamicGlowIntensity = Cvar_Get( "r_DynamicGlowIntensity", "1.13f", CVAR_CHEAT ); r_DynamicGlowSoft = Cvar_Get( "r_DynamicGlowSoft", "1", CVAR_CHEAT ); r_DynamicGlowWidth = Cvar_Get( "r_DynamicGlowWidth", "320", CVAR_CHEAT | CVAR_LATCH ); r_DynamicGlowHeight = Cvar_Get( "r_DynamicGlowHeight", "240", CVAR_CHEAT | CVAR_LATCH ); r_picmip = Cvar_Get ("r_picmip", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_colorMipLevels = Cvar_Get ("r_colorMipLevels", "0", CVAR_LATCH ); AssertCvarRange( r_picmip, 0, 16, qtrue ); r_detailTextures = Cvar_Get( "r_detailtextures", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_texturebits = Cvar_Get( "r_texturebits", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_texturebitslm = Cvar_Get( "r_texturebitslm", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_colorbits = Cvar_Get( "r_colorbits", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_stereo = Cvar_Get( "r_stereo", "0", CVAR_ARCHIVE | CVAR_LATCH ); #ifdef __linux__ r_stencilbits = Cvar_Get( "r_stencilbits", "0", CVAR_ARCHIVE | CVAR_LATCH ); #else r_stencilbits = Cvar_Get( "r_stencilbits", "8", CVAR_ARCHIVE | CVAR_LATCH ); #endif r_depthbits = Cvar_Get( "r_depthbits", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_overBrightBits = Cvar_Get ("r_overBrightBits", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_ignorehwgamma = Cvar_Get( "r_ignorehwgamma", "0", CVAR_ARCHIVE | CVAR_LATCH); r_mode = Cvar_Get( "r_mode", "4", CVAR_ARCHIVE | CVAR_LATCH ); r_fullscreen = Cvar_Get( "r_fullscreen", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_customwidth = Cvar_Get( "r_customwidth", "1600", CVAR_ARCHIVE | CVAR_LATCH ); r_customheight = Cvar_Get( "r_customheight", "1024", CVAR_ARCHIVE | CVAR_LATCH ); r_simpleMipMaps = Cvar_Get( "r_simpleMipMaps", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_vertexLight = Cvar_Get( "r_vertexLight", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_uiFullScreen = Cvar_Get( "r_uifullscreen", "0", 0); r_subdivisions = Cvar_Get ("r_subdivisions", "4", CVAR_ARCHIVE | CVAR_LATCH); // // temporary latched variables that can only change over a restart // r_displayRefresh = Cvar_Get( "r_displayRefresh", "0", CVAR_LATCH ); AssertCvarRange( r_displayRefresh, 0, 200, qtrue ); r_fullbright = Cvar_Get ("r_fullbright", "0", CVAR_CHEAT ); r_intensity = Cvar_Get ("r_intensity", "1", CVAR_LATCH ); r_singleShader = Cvar_Get ("r_singleShader", "0", CVAR_CHEAT | CVAR_LATCH ); // // archived variables that can change at any time // r_lodCurveError = Cvar_Get( "r_lodCurveError", "250", CVAR_ARCHIVE ); r_lodbias = Cvar_Get( "r_lodbias", "0", CVAR_ARCHIVE ); r_autolodscalevalue = Cvar_Get( "r_autolodscalevalue", "0", CVAR_ROM ); r_flares = Cvar_Get ("r_flares", "1", CVAR_ARCHIVE ); r_znear = Cvar_Get( "r_znear", "4", CVAR_CHEAT ); AssertCvarRange( r_znear, 0.001f, 200, qtrue ); r_ignoreGLErrors = Cvar_Get( "r_ignoreGLErrors", "1", CVAR_ARCHIVE ); r_fastsky = Cvar_Get( "r_fastsky", "0", CVAR_ARCHIVE ); r_inGameVideo = Cvar_Get( "r_inGameVideo", "1", CVAR_ARCHIVE ); r_drawSun = Cvar_Get( "r_drawSun", "0", CVAR_ARCHIVE ); r_dynamiclight = Cvar_Get( "r_dynamiclight", "1", CVAR_ARCHIVE ); // rjr - removed for hacking r_dlightBacks = Cvar_Get( "r_dlightBacks", "1", CVAR_CHEAT ); r_finish = Cvar_Get ("r_finish", "0", CVAR_ARCHIVE); r_textureMode = Cvar_Get( "r_textureMode", "GL_LINEAR_MIPMAP_NEAREST", CVAR_ARCHIVE ); r_swapInterval = Cvar_Get( "r_swapInterval", "0", CVAR_ARCHIVE ); r_markcount = Cvar_Get( "r_markcount", "100", CVAR_ARCHIVE ); #ifdef __MACOS__ r_gamma = Cvar_Get( "r_gamma", "1.2", CVAR_ARCHIVE ); #else r_gamma = Cvar_Get( "r_gamma", "1", CVAR_ARCHIVE ); #endif r_facePlaneCull = Cvar_Get ("r_facePlaneCull", "1", CVAR_ARCHIVE ); r_cullRoofFaces = Cvar_Get ("r_cullRoofFaces", "0", CVAR_CHEAT ); //attempted smart method of culling out upwards facing surfaces on roofs for automap shots -rww r_roofCullCeilDist = Cvar_Get ("r_roofCullCeilDist", "256", CVAR_CHEAT ); //attempted smart method of culling out upwards facing surfaces on roofs for automap shots -rww r_roofCullFloorDist = Cvar_Get ("r_roofCeilFloorDist", "128", CVAR_CHEAT ); //attempted smart method of culling out upwards facing surfaces on roofs for automap shots -rww r_primitives = Cvar_Get( "r_primitives", "0", CVAR_ARCHIVE ); r_ambientScale = Cvar_Get( "r_ambientScale", "0.6", CVAR_CHEAT ); r_directedScale = Cvar_Get( "r_directedScale", "1", CVAR_CHEAT ); r_autoMap = Cvar_Get( "r_autoMap", "0", CVAR_ARCHIVE ); //automap renderside toggle for debugging -rww r_autoMapBackAlpha = Cvar_Get( "r_autoMapBackAlpha", "0", 0 ); //alpha of automap bg -rww r_autoMapDisable = Cvar_Get( "r_autoMapDisable", "1", 0 ); // // temporary variables that can change at any time // r_showImages = Cvar_Get( "r_showImages", "0", CVAR_CHEAT ); r_debugLight = Cvar_Get( "r_debuglight", "0", CVAR_TEMP ); r_debugSort = Cvar_Get( "r_debugSort", "0", CVAR_CHEAT ); r_dlightStyle = Cvar_Get ("r_dlightStyle", "1", CVAR_TEMP); r_surfaceSprites = Cvar_Get ("r_surfaceSprites", "1", CVAR_TEMP); r_surfaceWeather = Cvar_Get ("r_surfaceWeather", "0", CVAR_TEMP); r_windSpeed = Cvar_Get ("r_windSpeed", "0", 0); r_windAngle = Cvar_Get ("r_windAngle", "0", 0); r_windGust = Cvar_Get ("r_windGust", "0", 0); r_windDampFactor = Cvar_Get ("r_windDampFactor", "0.1", 0); r_windPointForce = Cvar_Get ("r_windPointForce", "0", 0); r_windPointX = Cvar_Get ("r_windPointX", "0", 0); r_windPointY = Cvar_Get ("r_windPointY", "0", 0); r_nocurves = Cvar_Get ("r_nocurves", "0", CVAR_CHEAT ); r_drawworld = Cvar_Get ("r_drawworld", "1", CVAR_CHEAT ); r_drawfog = Cvar_Get ("r_drawfog", "2", CVAR_CHEAT ); r_lightmap = Cvar_Get ("r_lightmap", "0", CVAR_CHEAT ); r_portalOnly = Cvar_Get ("r_portalOnly", "0", CVAR_CHEAT ); r_skipBackEnd = Cvar_Get ("r_skipBackEnd", "0", CVAR_CHEAT); r_measureOverdraw = Cvar_Get( "r_measureOverdraw", "0", CVAR_CHEAT ); r_lodscale = Cvar_Get( "r_lodscale", "5", 0 ); r_norefresh = Cvar_Get ("r_norefresh", "0", CVAR_CHEAT); r_drawentities = Cvar_Get ("r_drawentities", "1", CVAR_CHEAT ); r_ignore = Cvar_Get( "r_ignore", "1", CVAR_CHEAT ); r_nocull = Cvar_Get ("r_nocull", "0", CVAR_CHEAT); r_novis = Cvar_Get ("r_novis", "0", CVAR_CHEAT); r_showcluster = Cvar_Get ("r_showcluster", "0", CVAR_CHEAT); r_speeds = Cvar_Get ("r_speeds", "0", CVAR_CHEAT); r_verbose = Cvar_Get( "r_verbose", "0", CVAR_CHEAT ); r_logFile = Cvar_Get( "r_logFile", "0", CVAR_CHEAT ); r_debugSurface = Cvar_Get ("r_debugSurface", "0", CVAR_CHEAT); r_nobind = Cvar_Get ("r_nobind", "0", CVAR_CHEAT); r_showtris = Cvar_Get ("r_showtris", "0", CVAR_CHEAT); r_showsky = Cvar_Get ("r_showsky", "0", CVAR_CHEAT); r_shownormals = Cvar_Get ("r_shownormals", "0", CVAR_CHEAT); r_clear = Cvar_Get ("r_clear", "0", CVAR_CHEAT); r_offsetFactor = Cvar_Get( "r_offsetfactor", "-1", CVAR_CHEAT ); r_offsetUnits = Cvar_Get( "r_offsetunits", "-2", CVAR_CHEAT ); r_lockpvs = Cvar_Get ("r_lockpvs", "0", CVAR_CHEAT); r_noportals = Cvar_Get ("r_noportals", "0", CVAR_CHEAT); r_shadows = Cvar_Get( "cg_shadows", "1", 0 ); r_shadowRange = Cvar_Get( "r_shadowRange", "1000", 0 ); r_maxpolys = Cvar_Get( "r_maxpolys", va("%d", MAX_POLYS), 0); r_maxpolyverts = Cvar_Get( "r_maxpolyverts", va("%d", MAX_POLYVERTS), 0); /* Ghoul2 Insert Start */ #ifdef _DEBUG r_noPrecacheGLA = Cvar_Get( "r_noPrecacheGLA", "0", CVAR_CHEAT); #endif r_noServerGhoul2 = Cvar_Get( "r_noserverghoul2", "0", CVAR_CHEAT); r_Ghoul2AnimSmooth = Cvar_Get( "r_ghoul2animsmooth", "0.3", 0 ); r_Ghoul2UnSqashAfterSmooth = Cvar_Get( "r_ghoul2unsqashaftersmooth", "1", 0 ); broadsword = Cvar_Get( "broadsword", "0", 0); broadsword_kickbones = Cvar_Get( "broadsword_kickbones", "1", 0); broadsword_kickorigin = Cvar_Get( "broadsword_kickorigin", "1", 0); broadsword_dontstopanim = Cvar_Get( "broadsword_dontstopanim", "0", 0); broadsword_waitforshot = Cvar_Get( "broadsword_waitforshot", "0", 0); broadsword_playflop = Cvar_Get( "broadsword_playflop", "1", 0); broadsword_smallbbox = Cvar_Get( "broadsword_smallbbox", "0", 0); broadsword_extra1 = Cvar_Get( "broadsword_extra1", "0", 0); broadsword_extra2 = Cvar_Get( "broadsword_extra2", "0", 0); broadsword_effcorr = Cvar_Get( "broadsword_effcorr", "1", 0); broadsword_ragtobase = Cvar_Get( "broadsword_ragtobase", "2", 0); broadsword_dircap = Cvar_Get( "broadsword_dircap", "64", 0); /* Ghoul2 Insert End */ extern qboolean Sys_LowPhysicalMemory(); r_modelpoolmegs = Cvar_Get("r_modelpoolmegs", "20", CVAR_ARCHIVE); if (Sys_LowPhysicalMemory() ) { Cvar_Set("r_modelpoolmegs", "0"); } // make sure all the commands added here are also // removed in R_Shutdown #ifndef DEDICATED Cmd_AddCommand( "imagelist", R_ImageList_f ); Cmd_AddCommand( "shaderlist", R_ShaderList_f ); Cmd_AddCommand( "skinlist", R_SkinList_f ); Cmd_AddCommand( "fontlist", R_FontList_f ); Cmd_AddCommand( "screenshot", R_ScreenShot_f ); Cmd_AddCommand( "screenshot_tga", R_ScreenShotTGA_f ); Cmd_AddCommand( "gfxinfo", GfxInfo_f ); Cmd_AddCommand( "r_atihack", R_AtiHackToggle_f ); Cmd_AddCommand( "r_we", R_WorldEffect_f); Cmd_AddCommand( "imagecacheinfo", RE_RegisterImages_Info_f); #endif Cmd_AddCommand( "modellist", R_Modellist_f ); Cmd_AddCommand( "modelist", R_ModeList_f ); Cmd_AddCommand( "modelcacheinfo", RE_RegisterModels_Info_f); }
/* ============= RE_EndRegistration Touch all images to make sure they are resident ============= */ void RE_EndRegistration( void ) { R_SyncRenderThread(); if (!Sys_LowPhysicalMemory()) { RB_ShowImages(); } }
/* =============== R_Register =============== */ void R_Register( void ) { // // latched and archived variables // r_allowExtensions = ri.Cvar_Get( "r_allowExtensions", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_compressed_textures = ri.Cvar_Get( "r_ext_compress_textures", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_compressed_lightmaps = ri.Cvar_Get( "r_ext_compress_lightmaps", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_preferred_tc_method = ri.Cvar_Get( "r_ext_preferred_tc_method", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_gamma_control = ri.Cvar_Get( "r_ext_gamma_control", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_multitexture = ri.Cvar_Get( "r_ext_multitexture", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_compiled_vertex_array = ri.Cvar_Get( "r_ext_compiled_vertex_array", "1", CVAR_ARCHIVE | CVAR_LATCH); #ifdef __linux__ // broken on linux r_ext_texture_env_add = ri.Cvar_Get( "r_ext_texture_env_add", "0", CVAR_ARCHIVE | CVAR_LATCH); #else r_ext_texture_env_add = ri.Cvar_Get( "r_ext_texture_env_add", "1", CVAR_ARCHIVE | CVAR_LATCH); #endif r_ext_texture_filter_anisotropic = ri.Cvar_Get( "r_ext_texture_filter_anisotropic", "1", CVAR_ARCHIVE ); r_picmip = ri.Cvar_Get ("r_picmip", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_colorMipLevels = ri.Cvar_Get ("r_colorMipLevels", "0", CVAR_LATCH ); AssertCvarRange( r_picmip, 0, 16, qtrue ); r_detailTextures = ri.Cvar_Get( "r_detailtextures", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_texturebits = ri.Cvar_Get( "r_texturebits", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_texturebitslm = ri.Cvar_Get( "r_texturebitslm", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_colorbits = ri.Cvar_Get( "r_colorbits", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_stereo = ri.Cvar_Get( "r_stereo", "0", CVAR_ARCHIVE | CVAR_LATCH ); #ifdef __linux__ r_stencilbits = ri.Cvar_Get( "r_stencilbits", "0", CVAR_ARCHIVE | CVAR_LATCH ); #else r_stencilbits = ri.Cvar_Get( "r_stencilbits", "8", CVAR_ARCHIVE | CVAR_LATCH ); #endif r_depthbits = ri.Cvar_Get( "r_depthbits", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_overBrightBits = ri.Cvar_Get ("r_overBrightBits", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ignorehwgamma = ri.Cvar_Get( "r_ignorehwgamma", "0", CVAR_ARCHIVE | CVAR_LATCH); r_mode = ri.Cvar_Get( "r_mode", "3", CVAR_ARCHIVE | CVAR_LATCH ); r_fullscreen = ri.Cvar_Get( "r_fullscreen", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_customwidth = ri.Cvar_Get( "r_customwidth", "1600", CVAR_ARCHIVE | CVAR_LATCH ); r_customheight = ri.Cvar_Get( "r_customheight", "1024", CVAR_ARCHIVE | CVAR_LATCH ); r_customaspect = ri.Cvar_Get( "r_customaspect", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_simpleMipMaps = ri.Cvar_Get( "r_simpleMipMaps", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_vertexLight = ri.Cvar_Get( "r_vertexLight", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_uiFullScreen = ri.Cvar_Get( "r_uifullscreen", "0", 0); r_subdivisions = ri.Cvar_Get ("r_subdivisions", "4", CVAR_ARCHIVE | CVAR_LATCH); #ifdef MACOS_X // Default to using SMP on Mac OS X if we have multiple processors // r_smp = ri.Cvar_Get( "r_smp", Sys_ProcessorCount() > 1 ? "1" : "0", CVAR_ARCHIVE | CVAR_LATCH); #else // r_smp = ri.Cvar_Get( "r_smp", "0", CVAR_ARCHIVE | CVAR_LATCH); #endif r_smp = ri.Cvar_Get( "r_smp", "0", CVAR_ROM); r_ignoreFastPath = ri.Cvar_Get( "r_ignoreFastPath", "1", CVAR_ARCHIVE | CVAR_LATCH ); // // temporary latched variables that can only change over a restart // r_displayRefresh = ri.Cvar_Get( "r_displayRefresh", "0", CVAR_LATCH ); AssertCvarRange( r_displayRefresh, 0, 200, qtrue ); r_fullbright = ri.Cvar_Get ("r_fullbright", "0", CVAR_CHEAT ); r_intensity = ri.Cvar_Get ("r_intensity", "1", CVAR_LATCH ); r_singleShader = ri.Cvar_Get ("r_singleShader", "0", CVAR_CHEAT | CVAR_LATCH ); // // archived variables that can change at any time // r_lodCurveError = ri.Cvar_Get( "r_lodCurveError", "250", CVAR_ARCHIVE ); r_lodbias = ri.Cvar_Get( "r_lodbias", "0", CVAR_ARCHIVE ); r_autolodscalevalue = ri.Cvar_Get( "r_autolodscalevalue", "0", CVAR_ROM ); r_flares = ri.Cvar_Get ("r_flares", "0", CVAR_ARCHIVE ); r_znear = ri.Cvar_Get( "r_znear", "4", CVAR_CHEAT ); AssertCvarRange( r_znear, 0.001f, 200, qtrue ); r_ignoreGLErrors = ri.Cvar_Get( "r_ignoreGLErrors", "1", CVAR_ARCHIVE ); r_fastsky = ri.Cvar_Get( "r_fastsky", "0", CVAR_ARCHIVE ); r_inGameVideo = ri.Cvar_Get( "r_inGameVideo", "1", CVAR_ARCHIVE ); r_drawSun = ri.Cvar_Get( "r_drawSun", "0", CVAR_ARCHIVE ); r_dynamiclight = ri.Cvar_Get( "r_dynamiclight", "1", CVAR_ARCHIVE ); r_dlightBacks = ri.Cvar_Get( "r_dlightBacks", "1", CVAR_ARCHIVE ); r_finish = ri.Cvar_Get ("r_finish", "0", CVAR_ARCHIVE); r_textureMode = ri.Cvar_Get( "r_textureMode", "GL_LINEAR_MIPMAP_NEAREST", CVAR_ARCHIVE ); r_swapInterval = ri.Cvar_Get( "r_swapInterval", "0", CVAR_ARCHIVE ); #ifdef __MACOS__ r_gamma = ri.Cvar_Get( "r_gamma", "1.2", CVAR_ARCHIVE ); #else r_gamma = ri.Cvar_Get( "r_gamma", "1", CVAR_ARCHIVE ); #endif r_facePlaneCull = ri.Cvar_Get ("r_facePlaneCull", "1", CVAR_ARCHIVE ); r_primitives = ri.Cvar_Get( "r_primitives", "0", CVAR_ARCHIVE ); r_ambientScale = ri.Cvar_Get( "r_ambientScale", "0.6", CVAR_CHEAT ); r_directedScale = ri.Cvar_Get( "r_directedScale", "1", CVAR_CHEAT ); // // temporary variables that can change at any time // r_showImages = ri.Cvar_Get( "r_showImages", "0", CVAR_CHEAT ); r_debugLight = ri.Cvar_Get( "r_debuglight", "0", CVAR_TEMP ); r_debugSort = ri.Cvar_Get( "r_debugSort", "0", CVAR_CHEAT ); r_printShaders = ri.Cvar_Get( "r_printShaders", "0", 0 ); r_surfaceSprites = ri.Cvar_Get ("r_surfaceSprites", "1", CVAR_TEMP); r_surfaceWeather = ri.Cvar_Get ("r_surfaceWeather", "0", CVAR_TEMP); r_windSpeed = ri.Cvar_Get ("r_windSpeed", "0", 0); r_windAngle = ri.Cvar_Get ("r_windAngle", "0", 0); r_windGust = ri.Cvar_Get ("r_windGust", "0", 0); r_windDampFactor = ri.Cvar_Get ("r_windDampFactor", "0.1", 0); r_windPointForce = ri.Cvar_Get ("r_windPointForce", "0", 0); r_windPointX = ri.Cvar_Get ("r_windPointX", "0", 0); r_windPointY = ri.Cvar_Get ("r_windPointY", "0", 0); r_nocurves = ri.Cvar_Get ("r_nocurves", "0", CVAR_CHEAT ); r_drawworld = ri.Cvar_Get ("r_drawworld", "1", CVAR_CHEAT ); r_lightmap = ri.Cvar_Get ("r_lightmap", "0", CVAR_CHEAT ); r_portalOnly = ri.Cvar_Get ("r_portalOnly", "0", CVAR_CHEAT ); r_flareSize = ri.Cvar_Get ("r_flareSize", "40", CVAR_CHEAT); r_flareFade = ri.Cvar_Get ("r_flareFade", "7", CVAR_CHEAT); r_showSmp = ri.Cvar_Get ("r_showSmp", "0", CVAR_CHEAT); r_skipBackEnd = ri.Cvar_Get ("r_skipBackEnd", "0", CVAR_CHEAT); r_newDLights = ri.Cvar_Get ("r_newDLights", "0", 0); r_measureOverdraw = ri.Cvar_Get( "r_measureOverdraw", "0", CVAR_CHEAT ); r_lodscale = ri.Cvar_Get( "r_lodscale", "5", 0 ); r_norefresh = ri.Cvar_Get ("r_norefresh", "0", CVAR_CHEAT); r_drawentities = ri.Cvar_Get ("r_drawentities", "1", CVAR_CHEAT ); r_ignore = ri.Cvar_Get( "r_ignore", "1", CVAR_CHEAT ); r_nocull = ri.Cvar_Get ("r_nocull", "0", CVAR_CHEAT); r_novis = ri.Cvar_Get ("r_novis", "0", CVAR_CHEAT); r_showcluster = ri.Cvar_Get ("r_showcluster", "0", CVAR_CHEAT); r_speeds = ri.Cvar_Get ("r_speeds", "0", CVAR_CHEAT); r_verbose = ri.Cvar_Get( "r_verbose", "0", CVAR_CHEAT ); r_logFile = ri.Cvar_Get( "r_logFile", "0", CVAR_CHEAT ); r_debugSurface = ri.Cvar_Get ("r_debugSurface", "0", CVAR_CHEAT); r_nobind = ri.Cvar_Get ("r_nobind", "0", CVAR_CHEAT); r_showtris = ri.Cvar_Get ("r_showtris", "0", CVAR_CHEAT); r_showsky = ri.Cvar_Get ("r_showsky", "0", CVAR_CHEAT); r_shownormals = ri.Cvar_Get ("r_shownormals", "0", CVAR_CHEAT); r_clear = ri.Cvar_Get ("r_clear", "0", CVAR_CHEAT); r_offsetFactor = ri.Cvar_Get( "r_offsetfactor", "-1", CVAR_CHEAT ); r_offsetUnits = ri.Cvar_Get( "r_offsetunits", "-2", CVAR_CHEAT ); r_drawBuffer = ri.Cvar_Get( "r_drawBuffer", "GL_BACK", CVAR_CHEAT ); r_lockpvs = ri.Cvar_Get ("r_lockpvs", "0", CVAR_CHEAT); r_noportals = ri.Cvar_Get ("r_noportals", "0", CVAR_CHEAT); r_shadows = ri.Cvar_Get( "cg_shadows", "1", 0 ); r_maxpolys = ri.Cvar_Get( "r_maxpolys", va("%d", MAX_POLYS), 0); r_maxpolyverts = ri.Cvar_Get( "r_maxpolyverts", va("%d", MAX_POLYVERTS), 0); /* Ghoul2 Insert Start */ r_noServerGhoul2 = ri.Cvar_Get( "r_noserverghoul2", "0", CVAR_CHEAT); r_Ghoul2AnimSmooth = ri.Cvar_Get( "r_ghoul2animsmooth", ".3", 0 ); r_Ghoul2UnSqashAfterSmooth = ri.Cvar_Get( "r_ghoul2unsqashaftersmooth", "1", 0 ); /* Ghoul2 Insert End */ extern qboolean Sys_LowPhysicalMemory(); r_modelpoolmegs = Cvar_Get("r_modelpoolmegs", "10", CVAR_ARCHIVE); if (Sys_LowPhysicalMemory() ) { Cvar_Set("r_modelpoolmegs", "0"); } // make sure all the commands added here are also // removed in R_Shutdown #ifndef DEDICATED ri.Cmd_AddCommand( "imagelist", R_ImageList_f ); ri.Cmd_AddCommand( "shaderlist", R_ShaderList_f ); ri.Cmd_AddCommand( "skinlist", R_SkinList_f ); ri.Cmd_AddCommand( "screenshot", R_ScreenShot_f ); ri.Cmd_AddCommand( "screenshot_tga", R_ScreenShotTGA_f ); ri.Cmd_AddCommand( "gfxinfo", GfxInfo_f ); ri.Cmd_AddCommand("r_we", R_WorldEffect_f); ri.Cmd_AddCommand( "imagecacheinfo", RE_RegisterImages_Info_f); #endif ri.Cmd_AddCommand( "modellist", R_Modellist_f ); ri.Cmd_AddCommand( "modelist", R_ModeList_f ); ri.Cmd_AddCommand( "modelcacheinfo", RE_RegisterModels_Info_f); }
/* ==================== CL_InitCGame Should only be called by CL_StartHunkUsers ==================== */ void CL_InitCGame( void ) { const char *info; const char *mapname; int t1, t2; vmInterpret_t interpret; #ifdef SMOKINGUNS int l; char *at; char blockThis[255]; char *buf; char **tempBuf; int capacity = 40; #endif t1 = Sys_Milliseconds(); // Load language filter #ifdef SMOKINGUNS if( !badWords ) { numWords = 0; buf = Cvar_VariableString( "cg_filterWords" ); if( strlen( buf ) > 0 ) { l = 0; badWords = Z_Malloc( capacity * sizeof( char* ) ); at = buf; while( ( at = strchr( buf, ',' ) ) ) { if( ( l-1 ) > capacity ) // ( l-1 ) because we want to leave room for the last word { tempBuf = Z_Malloc( ( capacity + 40 ) * sizeof( char** ) ); Com_Memcpy( tempBuf, badWords, capacity * sizeof( char** ) ); Z_Free( badWords ); badWords = tempBuf; capacity += 40; } strncpy( blockThis, buf, ( strchr( buf, ',' ) - buf ) ); blockThis[( strchr( buf, ',' ) - buf )] = '\0'; badWords[l] = strdup( blockThis ); buf = at + 1; ++l; } badWords[l] = strdup( buf ); ++l; numWords = l; } else Com_Printf( "No filter loaded.\n" ); } #endif // put away the console Con_Close(); // find the current mapname info = cl.gameState.stringData + cl.gameState.stringOffsets[ CS_SERVERINFO ]; mapname = Info_ValueForKey( info, "mapname" ); Com_sprintf( cl.mapname, sizeof( cl.mapname ), "maps/%s.bsp", mapname ); // load the dll or bytecode if ( cl_connectedToPureServer != 0 ) { // if sv_pure is set we only allow qvms to be loaded interpret = VMI_COMPILED; } else { interpret = Cvar_VariableValue( "vm_cgame" ); } cgvm = VM_Create( "cgame", CL_CgameSystemCalls, interpret ); if ( !cgvm ) { Com_Error( ERR_DROP, "VM_Create on cgame failed" ); } cls.state = CA_LOADING; // init for this gamestate // use the lastExecutedServerCommand instead of the serverCommandSequence // otherwise server commands sent just before a gamestate are dropped VM_Call( cgvm, CG_INIT, clc.serverMessageSequence, clc.lastExecutedServerCommand, clc.clientNum ); // reset any CVAR_CHEAT cvars registered by cgame if ( !clc.demoplaying && !cl_connectedToCheatServer ) Cvar_SetCheatState(); // we will send a usercmd this frame, which // will cause the server to send us the first snapshot cls.state = CA_PRIMED; t2 = Sys_Milliseconds(); Com_Printf( "CL_InitCGame: %5.2f seconds\n", (t2-t1)/1000.0 ); // have the renderer touch all its images, so they are present // on the card even if the driver does deferred loading re.EndRegistration(); // make sure everything is paged in if (!Sys_LowPhysicalMemory()) { Com_TouchMemory(); } // clear anything that got printed Con_ClearNotify (); }
/* ==================== CL_InitCGame Should only be called by CL_StartHunkUsers ==================== */ void CL_InitCGame( void ) { const char *info; const char *mapname; int t1, t2; char backup[ MAX_STRING_CHARS ]; t1 = Sys_Milliseconds(); // find the current mapname info = cl.gameState.stringData + cl.gameState.stringOffsets[ CS_SERVERINFO ]; mapname = Info_ValueForKey( info, "mapname" ); Com_sprintf( cl.mapname, sizeof( cl.mapname ), "maps/%s.bsp", mapname ); // load the dll or bytecode VMType interpret = (VMType)Cvar_VariableValue("vm_cgame"); if(cl_connectedToPureServer) { // if sv_pure is set we only allow qvms to be loaded if(interpret != VMI_COMPILED && interpret != VMI_BYTECODE) interpret = VMI_COMPILED; } cls.cgame = VMFactory::createVM(interpret, "cgame", CL_CgameSystemCalls); if ( !cls.cgame ) { Com_Error( ERR_DROP, "VM_Create on cgame failed" ); } clc.state = CA_LOADING; Cvar_VariableStringBuffer( "cl_voipSendTarget", backup, sizeof( backup ) ); Cvar_Set( "cl_voipSendTarget", "" ); // Probe 1.1 or gpp cgame cls.cgInterface = 0; probingCG = true; cls.cgame->Call( CG_VOIP_STRING ); probingCG = false; Cvar_Set( "cl_voipSendTarget", backup ); if ( ( clc.netchan.alternateProtocol == 2 ) != ( cls.cgInterface == 2 ) ) { Com_Error( ERR_DROP, "%s protocol %i, but a cgame module using the %s interface was found", ( clc.demoplaying ? "Demo was recorded using" : "Server uses" ), ( clc.netchan.alternateProtocol == 0 ? PROTOCOL_VERSION : clc.netchan.alternateProtocol == 1 ? 70 : 69 ), ( cls.cgInterface == 2 ? "1.1" : "non-1.1" ) ); } // init for this gamestate // use the lastExecutedServerCommand instead of the serverCommandSequence // otherwise server commands sent just before a gamestate are dropped cls.cgame->Call( CG_INIT, clc.serverMessageSequence, clc.lastExecutedServerCommand, clc.clientNum ); // reset any CVAR_CHEAT cvars registered by cgame if ( !clc.demoplaying && !cl_connectedToCheatServer ) Cvar_SetCheatState(); // we will send a usercmd this frame, which // will cause the server to send us the first snapshot clc.state = CA_PRIMED; t2 = Sys_Milliseconds(); Com_Printf( "CL_InitCGame: %5.2f seconds\n", (t2-t1)/1000.0 ); // have the renderer touch all its images, so they are present // on the card even if the driver does deferred loading re.EndRegistration(); // make sure everything is paged in if (!Sys_LowPhysicalMemory()) { Com_TouchMemory(); CL_ProtocolSpecificCommandsInit(); } // clear anything that got printed Con_ClearNotify (); }
/* =============== R_Register =============== */ void R_Register( void ) { // // latched and archived variables // r_allowExtensions = Cvar_Get( "r_allowExtensions", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_compressed_textures = Cvar_Get( "r_ext_compress_textures", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_compressed_lightmaps = Cvar_Get( "r_ext_compress_lightmaps", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_preferred_tc_method = Cvar_Get( "r_ext_preferred_tc_method", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_gamma_control = Cvar_Get( "r_ext_gamma_control", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_multitexture = Cvar_Get( "r_ext_multitexture", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_compiled_vertex_array = Cvar_Get( "r_ext_compiled_vertex_array", "1", CVAR_ARCHIVE | CVAR_LATCH); r_ext_texture_env_add = Cvar_Get( "r_ext_texture_env_add", "1", CVAR_ARCHIVE | CVAR_LATCH); r_ext_texture_filter_anisotropic = Cvar_Get( "r_ext_texture_filter_anisotropic", "16", CVAR_ARCHIVE ); r_DynamicGlow = Cvar_Get( "r_DynamicGlow", "0", CVAR_ARCHIVE ); r_DynamicGlowPasses = Cvar_Get( "r_DynamicGlowPasses", "5", CVAR_CHEAT ); r_DynamicGlowDelta = Cvar_Get( "r_DynamicGlowDelta", "0.8f", CVAR_CHEAT ); r_DynamicGlowIntensity = Cvar_Get( "r_DynamicGlowIntensity", "1.13f", CVAR_CHEAT ); r_DynamicGlowSoft = Cvar_Get( "r_DynamicGlowSoft", "1", CVAR_CHEAT ); r_DynamicGlowWidth = Cvar_Get( "r_DynamicGlowWidth", "320", CVAR_CHEAT | CVAR_LATCH ); r_DynamicGlowHeight = Cvar_Get( "r_DynamicGlowHeight", "240", CVAR_CHEAT | CVAR_LATCH ); // Register point sprite stuff here. r_ext_point_parameters = Cvar_Get( "r_ext_point_parameters", "1", CVAR_ARCHIVE ); r_ext_nv_point_sprite = Cvar_Get( "r_ext_nv_point_sprite", "1", CVAR_ARCHIVE ); r_picmip = Cvar_Get ("r_picmip", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_colorMipLevels = Cvar_Get ("r_colorMipLevels", "0", CVAR_LATCH ); AssertCvarRange( r_picmip, 0, 16, qtrue, qfalse ); r_detailTextures = Cvar_Get( "r_detailtextures", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_texturebits = Cvar_Get( "r_texturebits", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_texturebitslm = Cvar_Get( "r_texturebitslm", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_colorbits = Cvar_Get( "r_colorbits", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_stereo = Cvar_Get( "r_stereo", "0", CVAR_ARCHIVE | CVAR_LATCH ); #ifdef __linux__ r_stencilbits = Cvar_Get( "r_stencilbits", "0", CVAR_ARCHIVE | CVAR_LATCH ); #else r_stencilbits = Cvar_Get( "r_stencilbits", "8", CVAR_ARCHIVE | CVAR_LATCH ); #endif r_depthbits = Cvar_Get( "r_depthbits", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_overBrightBits = Cvar_Get ("r_overBrightBits", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_ignorehwgamma = Cvar_Get( "r_ignorehwgamma", "0", CVAR_ARCHIVE | CVAR_LATCH); r_mode = Cvar_Get( "r_mode", "4", CVAR_ARCHIVE | CVAR_LATCH ); r_fullscreen = Cvar_Get( "r_fullscreen", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_customwidth = Cvar_Get( "r_customwidth", "1600", CVAR_ARCHIVE | CVAR_LATCH ); r_customheight = Cvar_Get( "r_customheight", "1024", CVAR_ARCHIVE | CVAR_LATCH ); r_simpleMipMaps = Cvar_Get( "r_simpleMipMaps", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_vertexLight = Cvar_Get( "r_vertexLight", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_subdivisions = Cvar_Get ("r_subdivisions", "4", CVAR_ARCHIVE | CVAR_LATCH); r_intensity = Cvar_Get ("r_intensity", "1", CVAR_LATCH|CVAR_ARCHIVE ); // // temporary latched variables that can only change over a restart // r_displayRefresh = Cvar_Get( "r_displayRefresh", "0", CVAR_LATCH ); AssertCvarRange( r_displayRefresh, 0, 200, qtrue, qfalse ); r_fullbright = Cvar_Get ("r_fullbright", "0", CVAR_CHEAT ); r_singleShader = Cvar_Get ("r_singleShader", "0", CVAR_CHEAT | CVAR_LATCH ); // // archived variables that can change at any time // r_lodCurveError = Cvar_Get( "r_lodCurveError", "250", CVAR_ARCHIVE ); r_lodbias = Cvar_Get( "r_lodbias", "0", CVAR_ARCHIVE ); r_flares = Cvar_Get ("r_flares", "1", CVAR_ARCHIVE ); r_lodscale = Cvar_Get( "r_lodscale", "10", CVAR_ARCHIVE ); #ifdef _XBOX r_znear = Cvar_Get( "r_znear", "2", CVAR_CHEAT ); //lose a lot of precision in the distance #else r_znear = Cvar_Get( "r_znear", "4", CVAR_CHEAT ); //if set any lower, you lose a lot of precision in the distance #endif AssertCvarRange( r_znear, 0.001f, 200, qfalse, qfalse ); r_ignoreGLErrors = Cvar_Get( "r_ignoreGLErrors", "1", CVAR_ARCHIVE ); r_fastsky = Cvar_Get( "r_fastsky", "0", CVAR_ARCHIVE ); r_drawSun = Cvar_Get( "r_drawSun", "0", CVAR_ARCHIVE ); r_dynamiclight = Cvar_Get( "r_dynamiclight", "1", CVAR_ARCHIVE ); r_dlightBacks = Cvar_Get( "r_dlightBacks", "0", CVAR_ARCHIVE ); r_finish = Cvar_Get ("r_finish", "0", CVAR_ARCHIVE); r_textureMode = Cvar_Get( "r_textureMode", "GL_LINEAR_MIPMAP_NEAREST", CVAR_ARCHIVE ); r_swapInterval = Cvar_Get( "r_swapInterval", "0", CVAR_ARCHIVE ); #ifdef __MACOS__ r_gamma = Cvar_Get( "r_gamma", "1.2", CVAR_ARCHIVE ); #else r_gamma = Cvar_Get( "r_gamma", "1", CVAR_ARCHIVE ); #endif r_facePlaneCull = Cvar_Get ("r_facePlaneCull", "1", CVAR_ARCHIVE ); r_dlightStyle = Cvar_Get ("r_dlightStyle", "1", CVAR_TEMP); r_surfaceSprites = Cvar_Get ("r_surfaceSprites", "1", CVAR_TEMP); r_surfaceWeather = Cvar_Get ("r_surfaceWeather", "0", CVAR_TEMP); r_windSpeed = Cvar_Get ("r_windSpeed", "0", 0); r_windAngle = Cvar_Get ("r_windAngle", "0", 0); r_windGust = Cvar_Get ("r_windGust", "0", 0); r_windDampFactor = Cvar_Get ("r_windDampFactor", "0.1", 0); r_windPointForce = Cvar_Get ("r_windPointForce", "0", 0); r_windPointX = Cvar_Get ("r_windPointX", "0", 0); r_windPointY = Cvar_Get ("r_windPointY", "0", 0); r_primitives = Cvar_Get( "r_primitives", "0", CVAR_ARCHIVE ); r_ambientScale = Cvar_Get( "r_ambientScale", "0.5", CVAR_CHEAT ); r_directedScale = Cvar_Get( "r_directedScale", "1", CVAR_CHEAT ); // // temporary variables that can change at any time // r_showImages = Cvar_Get( "r_showImages", "0", CVAR_CHEAT ); r_debugLight = Cvar_Get( "r_debuglight", "0", CVAR_TEMP ); r_debugStyle = Cvar_Get( "r_debugStyle", "-1", CVAR_CHEAT ); r_debugSort = Cvar_Get( "r_debugSort", "0", CVAR_CHEAT ); r_nocurves = Cvar_Get ("r_nocurves", "0", CVAR_CHEAT ); r_drawworld = Cvar_Get ("r_drawworld", "1", CVAR_CHEAT ); r_drawfog = Cvar_Get ("r_drawfog", "2", CVAR_CHEAT ); r_lightmap = Cvar_Get ("r_lightmap", "0", CVAR_CHEAT ); r_portalOnly = Cvar_Get ("r_portalOnly", "0", CVAR_CHEAT ); r_skipBackEnd = Cvar_Get ("r_skipBackEnd", "0", CVAR_CHEAT); r_measureOverdraw = Cvar_Get( "r_measureOverdraw", "0", CVAR_CHEAT ); r_norefresh = Cvar_Get ("r_norefresh", "0", CVAR_CHEAT); r_drawentities = Cvar_Get ("r_drawentities", "1", CVAR_CHEAT ); r_ignore = Cvar_Get( "r_ignore", "1", CVAR_TEMP ); r_nocull = Cvar_Get ("r_nocull", "0", CVAR_CHEAT); r_novis = Cvar_Get ("r_novis", "0", CVAR_CHEAT); r_showcluster = Cvar_Get ("r_showcluster", "0", CVAR_CHEAT); r_speeds = Cvar_Get ("r_speeds", "0", CVAR_CHEAT); r_verbose = Cvar_Get( "r_verbose", "0", CVAR_CHEAT ); r_logFile = Cvar_Get( "r_logFile", "0", CVAR_CHEAT ); r_debugSurface = Cvar_Get ("r_debugSurface", "0", CVAR_CHEAT); r_nobind = Cvar_Get ("r_nobind", "0", CVAR_CHEAT); r_showtris = Cvar_Get ("r_showtris", "0", CVAR_CHEAT); r_showtriscolor = Cvar_Get ("r_showtriscolor", "0", CVAR_ARCHIVE); r_showsky = Cvar_Get ("r_showsky", "0", CVAR_CHEAT); r_shownormals = Cvar_Get ("r_shownormals", "0", CVAR_CHEAT); r_clear = Cvar_Get ("r_clear", "0", CVAR_CHEAT); r_offsetFactor = Cvar_Get( "r_offsetfactor", "-1", CVAR_CHEAT ); r_offsetUnits = Cvar_Get( "r_offsetunits", "-2", CVAR_CHEAT ); r_lockpvs = Cvar_Get ("r_lockpvs", "0", CVAR_CHEAT); r_noportals = Cvar_Get ("r_noportals", "0", CVAR_CHEAT); r_shadows = Cvar_Get( "cg_shadows", "1", 0 ); r_shadowRange = Cvar_Get( "r_shadowRange", "1000", CVAR_ARCHIVE ); #ifdef _XBOX r_hdreffect = Cvar_Get( "r_hdreffect", "0", 0 ); r_sundir_x = Cvar_Get( "r_sundir_x", "0.45", 0 ); r_sundir_y = Cvar_Get( "r_sundir_y", "0.3", 0 ); r_sundir_z = Cvar_Get( "r_sundir_z", "0.9", 0 ); r_hdrbloom = Cvar_Get( "r_hdrbloom", "1.0", 0 ); r_hdrcutoff = Cvar_Get( "r_hdrcutoff", "0.5", 0 ); #endif /* Ghoul2 Insert Start */ r_noGhoul2 = Cvar_Get( "r_noghoul2", "0", CVAR_CHEAT); r_Ghoul2AnimSmooth = Cvar_Get( "r_ghoul2animsmooth", "0.25", 0); r_Ghoul2UnSqash = Cvar_Get( "r_ghoul2unsquash", "1", 0); r_Ghoul2TimeBase = Cvar_Get( "r_ghoul2timebase", "2", 0); r_Ghoul2NoLerp = Cvar_Get( "r_ghoul2nolerp", "0", 0); r_Ghoul2NoBlend = Cvar_Get( "r_ghoul2noblend", "0", 0); r_Ghoul2BlendMultiplier = Cvar_Get( "r_ghoul2blendmultiplier", "1", 0); r_Ghoul2UnSqashAfterSmooth = Cvar_Get( "r_ghoul2unsquashaftersmooth", "1", 0); broadsword = Cvar_Get( "broadsword", "1", 0); broadsword_kickbones = Cvar_Get( "broadsword_kickbones", "1", 0); broadsword_kickorigin = Cvar_Get( "broadsword_kickorigin", "1", 0); broadsword_dontstopanim = Cvar_Get( "broadsword_dontstopanim", "0", 0); broadsword_waitforshot = Cvar_Get( "broadsword_waitforshot", "0", 0); broadsword_playflop = Cvar_Get( "broadsword_playflop", "1", 0); broadsword_smallbbox = Cvar_Get( "broadsword_smallbbox", "0", 0); broadsword_extra1 = Cvar_Get( "broadsword_extra1", "0", 0); broadsword_extra2 = Cvar_Get( "broadsword_extra2", "0", 0); broadsword_effcorr = Cvar_Get( "broadsword_effcorr", "1", 0); broadsword_ragtobase = Cvar_Get( "broadsword_ragtobase", "2", 0); broadsword_dircap = Cvar_Get( "broadsword_dircap", "64", 0); /* Ghoul2 Insert End */ extern qboolean Sys_LowPhysicalMemory(); r_modelpoolmegs = Cvar_Get("r_modelpoolmegs", "20", CVAR_ARCHIVE); if (Sys_LowPhysicalMemory() ) { Cvar_Set("r_modelpoolmegs", "0"); } // make sure all the commands added here are also // removed in R_Shutdown Cmd_AddCommand( "imagelist", R_ImageList_f ); Cmd_AddCommand( "shaderlist", R_ShaderList_f ); Cmd_AddCommand( "skinlist", R_SkinList_f ); Cmd_AddCommand( "fontlist", R_FontList_f ); Cmd_AddCommand( "modellist", R_Modellist_f ); #ifndef _XBOX Cmd_AddCommand( "modelist", R_ModeList_f ); Cmd_AddCommand( "r_atihack", R_AtiHackToggle_f ); #endif Cmd_AddCommand( "screenshot", R_ScreenShot_f ); Cmd_AddCommand( "screenshot_tga", R_ScreenShotTGA_f ); Cmd_AddCommand( "gfxinfo", GfxInfo_f ); Cmd_AddCommand( "r_fogDistance", R_FogDistance_f); Cmd_AddCommand( "r_fogColor", R_FogColor_f); Cmd_AddCommand( "modelcacheinfo", RE_RegisterModels_Info_f); Cmd_AddCommand( "imagecacheinfo", RE_RegisterImages_Info_f); extern void R_WorldEffect_f(void); //TR_WORLDEFFECTS.CPP Cmd_AddCommand( "r_we", R_WorldEffect_f ); extern void R_ReloadFonts_f(void); Cmd_AddCommand( "r_reloadfonts", R_ReloadFonts_f ); // make sure all the commands added above are also // removed in R_Shutdown }
/* =============== R_Register =============== */ void R_Register( void ) { // // latched and archived variables // r_allowExtensions = ri.Cvar_Get( "r_allowExtensions", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_compressed_textures = ri.Cvar_Get( "r_ext_compress_textures", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_compressed_lightmaps = ri.Cvar_Get( "r_ext_compress_lightmaps", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_preferred_tc_method = ri.Cvar_Get( "r_ext_preferred_tc_method", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_gamma_control = ri.Cvar_Get( "r_ext_gamma_control", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_multitexture = ri.Cvar_Get( "r_ext_multitexture", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ext_compiled_vertex_array = ri.Cvar_Get( "r_ext_compiled_vertex_array", "1", CVAR_ARCHIVE | CVAR_LATCH); r_ext_texture_env_add = ri.Cvar_Get( "r_ext_texture_env_add", "1", CVAR_ARCHIVE | CVAR_LATCH); r_ext_texture_filter_anisotropic = ri.Cvar_Get( "r_ext_texture_filter_anisotropic", "1", CVAR_ARCHIVE ); #ifdef _NPATCH r_ati_pn_triangles = ri.Cvar_Get( "r_ati_pn_triangles", "1", CVAR_ARCHIVE | CVAR_LATCH); r_npatches = ri.Cvar_Get( "r_npatches", "3", CVAR_ARCHIVE ); #endif // _NPATCH r_picmip = ri.Cvar_Get ("r_picmip", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_colorMipLevels = ri.Cvar_Get ("r_colorMipLevels", "0", CVAR_LATCH ); AssertCvarRange( r_picmip, 0, 16, qtrue, qfalse ); r_detailTextures = ri.Cvar_Get( "r_detailtextures", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_texturebits = ri.Cvar_Get( "r_texturebits", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_texturebitslm = ri.Cvar_Get( "r_texturebitslm", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_colorbits = ri.Cvar_Get( "r_colorbits", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_stereo = ri.Cvar_Get( "r_stereo", "0", CVAR_ARCHIVE | CVAR_LATCH ); #ifdef __linux__ r_stencilbits = ri.Cvar_Get( "r_stencilbits", "0", CVAR_ARCHIVE | CVAR_LATCH ); #else r_stencilbits = ri.Cvar_Get( "r_stencilbits", "8", CVAR_ARCHIVE | CVAR_LATCH ); #endif r_depthbits = ri.Cvar_Get( "r_depthbits", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_overBrightBits = ri.Cvar_Get ("r_overBrightBits", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_ignorehwgamma = ri.Cvar_Get( "r_ignorehwgamma", "0", CVAR_ARCHIVE | CVAR_LATCH); r_mode = ri.Cvar_Get( "r_mode", "3", CVAR_ARCHIVE | CVAR_LATCH ); r_fullscreen = ri.Cvar_Get( "r_fullscreen", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_customwidth = ri.Cvar_Get( "r_customwidth", "1600", CVAR_ARCHIVE | CVAR_LATCH ); r_customheight = ri.Cvar_Get( "r_customheight", "1024", CVAR_ARCHIVE | CVAR_LATCH ); r_customaspect = ri.Cvar_Get( "r_customaspect", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_simpleMipMaps = ri.Cvar_Get( "r_simpleMipMaps", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_vertexLight = ri.Cvar_Get( "r_vertexLight", "0", CVAR_ARCHIVE | CVAR_LATCH ); r_subdivisions = ri.Cvar_Get ("r_subdivisions", "4", CVAR_ARCHIVE | CVAR_LATCH); // r_smp = ri.Cvar_Get( "r_smp", "0", CVAR_ARCHIVE | CVAR_LATCH); r_smp = ri.Cvar_Get( "r_smp", "0", CVAR_ROM); r_ignoreFastPath = ri.Cvar_Get( "r_ignoreFastPath", "1", CVAR_ARCHIVE | CVAR_LATCH ); r_intensity = ri.Cvar_Get ("r_intensity", "1", CVAR_LATCH|CVAR_ARCHIVE ); // // temporary latched variables that can only change over a restart // r_displayRefresh = ri.Cvar_Get( "r_displayRefresh", "0", CVAR_LATCH ); AssertCvarRange( r_displayRefresh, 0, 200, qtrue, qfalse ); r_fullbright = ri.Cvar_Get ("r_fullbright", "0", CVAR_CHEAT ); r_singleShader = ri.Cvar_Get ("r_singleShader", "0", CVAR_CHEAT | CVAR_LATCH ); // // archived variables that can change at any time // r_lodCurveError = ri.Cvar_Get( "r_lodCurveError", "250", CVAR_ARCHIVE ); r_lodbias = ri.Cvar_Get( "r_lodbias", "0", CVAR_ARCHIVE ); r_flares = ri.Cvar_Get ("r_flares", "1", CVAR_ARCHIVE ); r_lodscale = ri.Cvar_Get( "r_lodscale", "10", CVAR_ARCHIVE ); r_znear = ri.Cvar_Get( "r_znear", "4", CVAR_CHEAT ); //if set any lower, you lose a lot of precision in the distance AssertCvarRange( r_znear, 0.001f, 200, qfalse, qfalse ); r_ignoreGLErrors = ri.Cvar_Get( "r_ignoreGLErrors", "1", CVAR_ARCHIVE ); r_fastsky = ri.Cvar_Get( "r_fastsky", "0", CVAR_ARCHIVE ); r_drawSun = ri.Cvar_Get( "r_drawSun", "0", CVAR_ARCHIVE ); r_dynamiclight = ri.Cvar_Get( "r_dynamiclight", "1", CVAR_ARCHIVE ); r_dlightBacks = ri.Cvar_Get( "r_dlightBacks", "1", CVAR_ARCHIVE ); r_finish = ri.Cvar_Get ("r_finish", "0", CVAR_ARCHIVE); r_textureMode = ri.Cvar_Get( "r_textureMode", "GL_LINEAR_MIPMAP_NEAREST", CVAR_ARCHIVE ); r_swapInterval = ri.Cvar_Get( "r_swapInterval", "0", CVAR_ARCHIVE ); #ifdef __MACOS__ r_gamma = ri.Cvar_Get( "r_gamma", "1.2", CVAR_ARCHIVE ); #else r_gamma = ri.Cvar_Get( "r_gamma", "1", CVAR_ARCHIVE ); #endif r_facePlaneCull = ri.Cvar_Get ("r_facePlaneCull", "1", CVAR_ARCHIVE ); r_surfaceSprites = ri.Cvar_Get ("r_surfaceSprites", "1", CVAR_TEMP); r_surfaceWeather = ri.Cvar_Get ("r_surfaceWeather", "0", CVAR_TEMP); r_windSpeed = ri.Cvar_Get ("r_windSpeed", "0", 0); r_windAngle = ri.Cvar_Get ("r_windAngle", "0", 0); r_windGust = ri.Cvar_Get ("r_windGust", "0", 0); r_windDampFactor = ri.Cvar_Get ("r_windDampFactor", "0.1", 0); r_windPointForce = ri.Cvar_Get ("r_windPointForce", "0", 0); r_windPointX = ri.Cvar_Get ("r_windPointX", "0", 0); r_windPointY = ri.Cvar_Get ("r_windPointY", "0", 0); //r_primitives = ri.Cvar_Get( "r_primitives", "0", CVAR_ARCHIVE ); r_primitives = ri.Cvar_Get( "r_primitives", "2", CVAR_ARCHIVE ); r_ambientScale = ri.Cvar_Get( "r_ambientScale", "0.5", CVAR_CHEAT ); r_directedScale = ri.Cvar_Get( "r_directedScale", "1", CVAR_CHEAT ); // // temporary variables that can change at any time // r_showImages = ri.Cvar_Get( "r_showImages", "0", CVAR_CHEAT ); r_debugLight = ri.Cvar_Get( "r_debuglight", "0", CVAR_TEMP ); r_debugStyle = ri.Cvar_Get( "r_debugStyle", "-1", CVAR_CHEAT ); r_debugSort = ri.Cvar_Get( "r_debugSort", "0", CVAR_CHEAT ); r_printShaders = ri.Cvar_Get( "r_printShaders", "0", 0 ); r_nocurves = ri.Cvar_Get ("r_nocurves", "0", CVAR_CHEAT ); r_drawworld = ri.Cvar_Get ("r_drawworld", "1", CVAR_CHEAT ); r_drawfog = ri.Cvar_Get ("r_drawfog", "1", CVAR_CHEAT ); r_lightmap = ri.Cvar_Get ("r_lightmap", "0", CVAR_CHEAT ); r_portalOnly = ri.Cvar_Get ("r_portalOnly", "0", CVAR_CHEAT ); r_flareSize = ri.Cvar_Get ("r_flareSize", "30", 0); r_flareFade = ri.Cvar_Get ("r_flareFade", "10", 0); r_showSmp = ri.Cvar_Get ("r_showSmp", "0", CVAR_CHEAT); r_skipBackEnd = ri.Cvar_Get ("r_skipBackEnd", "0", CVAR_CHEAT); r_measureOverdraw = ri.Cvar_Get( "r_measureOverdraw", "0", CVAR_CHEAT ); r_norefresh = ri.Cvar_Get ("r_norefresh", "0", CVAR_CHEAT); r_drawentities = ri.Cvar_Get ("r_drawentities", "1", CVAR_CHEAT ); r_ignore = ri.Cvar_Get( "r_ignore", "1", CVAR_TEMP ); r_nocull = ri.Cvar_Get ("r_nocull", "0", CVAR_CHEAT); r_novis = ri.Cvar_Get ("r_novis", "0", CVAR_CHEAT); r_showcluster = ri.Cvar_Get ("r_showcluster", "0", CVAR_CHEAT); r_speeds = ri.Cvar_Get ("r_speeds", "0", CVAR_CHEAT); r_verbose = ri.Cvar_Get( "r_verbose", "0", CVAR_CHEAT ); r_logFile = ri.Cvar_Get( "r_logFile", "0", CVAR_CHEAT ); r_debugSurface = ri.Cvar_Get ("r_debugSurface", "0", CVAR_CHEAT); r_nobind = ri.Cvar_Get ("r_nobind", "0", CVAR_CHEAT); r_showtris = ri.Cvar_Get ("r_showtris", "0", CVAR_CHEAT); r_showtriscolor = ri.Cvar_Get ("r_showtriscolor", "0", CVAR_ARCHIVE); r_showsky = ri.Cvar_Get ("r_showsky", "0", CVAR_CHEAT); r_shownormals = ri.Cvar_Get ("r_shownormals", "0", CVAR_CHEAT); r_clear = ri.Cvar_Get ("r_clear", "0", CVAR_CHEAT); r_offsetFactor = ri.Cvar_Get( "r_offsetfactor", "-1", CVAR_CHEAT ); r_offsetUnits = ri.Cvar_Get( "r_offsetunits", "-2", CVAR_CHEAT ); r_drawBuffer = ri.Cvar_Get( "r_drawBuffer", "GL_BACK", CVAR_CHEAT ); r_lockpvs = ri.Cvar_Get ("r_lockpvs", "0", CVAR_CHEAT); r_noportals = ri.Cvar_Get ("r_noportals", "0", CVAR_CHEAT); r_shadows = ri.Cvar_Get( "cg_shadows", "1", 0 ); r_scissorbroken = ri.Cvar_Get( "r_scissorbroken", "0", 0 ); /* Ghoul2 Insert Start */ r_noGhoul2 = ri.Cvar_Get( "r_noghoul2", "0", CVAR_CHEAT); r_Ghoul2AnimSmooth = ri.Cvar_Get( "r_ghoul2animsmooth", "0.25", 0); r_Ghoul2UnSqash = ri.Cvar_Get( "r_ghoul2unsquash", "1", 0); r_Ghoul2TimeBase = ri.Cvar_Get( "r_ghoul2timebase", "2", 0); r_Ghoul2NoLerp = ri.Cvar_Get( "r_ghoul2nolerp", "0", 0); r_Ghoul2NoBlend = ri.Cvar_Get( "r_ghoul2noblend", "0", 0); r_Ghoul2BlendMultiplier = ri.Cvar_Get( "r_ghoul2blendmultiplier", "1", 0); r_Ghoul2UnSqashAfterSmooth = ri.Cvar_Get( "r_ghoul2unsquashaftersmooth", "1", 0); /* Ghoul2 Insert End */ extern qboolean Sys_LowPhysicalMemory(); r_modelpoolmegs = Cvar_Get("r_modelpoolmegs", "20", CVAR_ARCHIVE); if (Sys_LowPhysicalMemory() ) { Cvar_Set("r_modelpoolmegs", "0"); } // make sure all the commands added here are also // removed in R_Shutdown ri.Cmd_AddCommand( "imagelist", R_ImageList_f ); ri.Cmd_AddCommand( "shaderlist", R_ShaderList_f ); ri.Cmd_AddCommand( "skinlist", R_SkinList_f ); ri.Cmd_AddCommand( "modellist", R_Modellist_f ); ri.Cmd_AddCommand( "modelist", R_ModeList_f ); ri.Cmd_AddCommand( "screenshot", R_ScreenShot_f ); ri.Cmd_AddCommand( "screenshot_tga", R_ScreenShotTGA_f ); ri.Cmd_AddCommand( "gfxinfo", GfxInfo_f ); ri.Cmd_AddCommand( "r_fogDistance", R_FogDistance_f); ri.Cmd_AddCommand( "r_fogColor", R_FogColor_f); ri.Cmd_AddCommand( "modelcacheinfo", RE_RegisterModels_Info_f); ri.Cmd_AddCommand( "imagecacheinfo", RE_RegisterImages_Info_f); // make sure all the commands added above are also // removed in R_Shutdown }
/* ** GLimp_Init ** ** This is the platform specific OpenGL initialization function. It ** is responsible for loading OpenGL, initializing it, setting ** extensions, creating a window of the appropriate size, doing ** fullscreen manipulations, etc. Its overall responsibility is ** to make sure that a functional OpenGL subsystem is operating ** when it returns to the ref. */ void GLimp_Init( void ) { char buf[MAX_STRING_CHARS]; cvar_t *lastValidRenderer = ri.Cvar_Get( "r_lastValidRenderer", "(uninitialized)", CVAR_ARCHIVE ); cvar_t *cv; ri.Printf( PRINT_ALL, "Initializing OpenGL subsystem\n" ); // // check OS version to see if we can do fullscreen display changes // if ( !GLW_CheckOSVersion() ) { ri.Error( ERR_FATAL, "GLimp_Init() - incorrect operating system\n" ); } // save off hInstance and wndproc cv = ri.Cvar_Get( "win_hinstance", "", 0 ); sscanf( cv->string, "%i", (int *)&g_wv.hInstance ); cv = ri.Cvar_Get( "win_wndproc", "", 0 ); sscanf( cv->string, "%i", (int *)&glw_state.wndproc ); r_allowSoftwareGL = ri.Cvar_Get( "r_allowSoftwareGL", "0", CVAR_LATCH ); // load appropriate DLL and initialize subsystem GLW_StartOpenGL(); // get our config strings const char* glstring; glstring = (const char *)qglGetString (GL_VENDOR); if (!glstring) { glstring = "invalid driver"; } Q_strncpyz( glConfig.vendor_string, glstring, sizeof( glConfig.vendor_string ) ); glstring = (const char *)qglGetString (GL_RENDERER); if (!glstring) { glstring = "invalid driver"; } Q_strncpyz( glConfig.renderer_string, glstring, sizeof( glConfig.renderer_string ) ); glstring = (const char *)qglGetString (GL_VERSION); if (!glstring) { glstring = "invalid driver"; } Q_strncpyz( glConfig.version_string, glstring, sizeof( glConfig.version_string ) ); glstring = (const char *)qglGetString (GL_EXTENSIONS); if (!glstring) { glstring = "invalid driver"; } Q_strncpyz( glConfig.extensions_string, glstring, sizeof( glConfig.extensions_string ) ); // OpenGL driver constants qglGetIntegerv( GL_MAX_TEXTURE_SIZE, &glConfig.maxTextureSize ); // stubbed or broken drivers may have reported 0... if ( glConfig.maxTextureSize <= 0 ) { glConfig.maxTextureSize = 0; } GLW_InitExtensions(); // // chipset specific configuration // Q_strncpyz( buf, glConfig.renderer_string, sizeof(buf) ); Q_strlwr( buf ); // // NOTE: if changing cvars, do it within this block. This allows them // to be overridden when testing driver fixes, etc. but only sets // them to their default state when the hardware is first installed/run. // extern qboolean Sys_LowPhysicalMemory(); if ( Q_stricmp( lastValidRenderer->string, glConfig.renderer_string ) ) { if (Sys_LowPhysicalMemory()) { ri.Cvar_Set("s_khz", "11");// this will get called before S_Init } //reset to defaults ri.Cvar_Set( "r_picmip", "1" ); // Savage3D and Savage4 should always have trilinear enabled if ( strstr( buf, "savage3d" ) || strstr( buf, "s3 savage4" ) || strstr( buf, "geforce" )) { ri.Cvar_Set( "r_texturemode", "GL_LINEAR_MIPMAP_LINEAR" ); } else { ri.Cvar_Set( "r_textureMode", "GL_LINEAR_MIPMAP_NEAREST" ); } if ( strstr( buf, "kyro" ) ) { ri.Cvar_Set( "r_ext_texture_filter_anisotropic", "0"); //KYROs have it avail, but suck at it! ri.Cvar_Set( "r_ext_preferred_tc_method", "1"); //(Use DXT1 instead of DXT5 - same quality but much better performance on KYRO) } //this must be a really sucky card! if ( (glConfig.textureCompression == TC_NONE) || (glConfig.maxActiveTextures < 2) || (glConfig.maxTextureSize <= 512) ) { ri.Cvar_Set( "r_picmip", "2"); ri.Cvar_Set( "r_lodbias", "2"); ri.Cvar_Set( "r_detailtextures", "0"); ri.Cvar_Set( "r_colorbits", "16"); ri.Cvar_Set( "r_texturebits", "16"); ri.Cvar_Set( "cg_shadows", "0"); ri.Cvar_Set( "r_mode", "3"); //force 640 } } ri.Cvar_Set( "r_lastValidRenderer", glConfig.renderer_string ); WG_CheckHardwareGamma(); }