// Unexplained crashes? Try changing mat_queue_mode to `-1'.
// ----------------------------------------------------------------------------
// Comanglia' frames config inspired by chris, designed to get you a large performance boost
// v1.8beta | 18 December 2015 | https://dl.dropboxusercontent.com/u/92187841/gfx.cfg
// ----------------------------------------------------------------------------
// Launch options:
// You don't have to remove -dxlevel from the launch options after the first launch!
//
// Fullscreen: -dxlevel 81 -full -w WIDTH -h HEIGHT -console -novid
// Windowed: -dxlevel 81 -sw -w WIDTH -h HEIGHT -console -noborder -novid
// -useforcedmparms -noforcemaccel -noforcemspd // All of these are outdated and don't matter anymore
//
// DX Levels
// -dxlevel 80, -dxlevel 81, -dxlevel 90, -dxlevel 91, -dxlevel 95, -dxlevel 98
// if you can use -dxlevel 81 USE IT your fps will be significantly more stable, some Nvidia users may experience a weird strobing effect
// (some series of outdated nvidia drivers remove this affect)
// ----------------------------------------------------------------------------

// ----------------------------------------------------------------------------
// FPS cap
// ----------------------------------------------------------------------------
// The primary benefit of an FPS cap is to make the FPS more stable, other than
// that, it doesn't do a lot. A moderate, consistent framerate is much more
// desirable than a variable but sometimes high framerate. A common
// misconception is that if any more frames are generated than your monitor can
// display, they are useless. This is wrong -- frames are used for much more
// than mere display, and affect the way the game feels well past your
// refresh rate.
// ----------------------------------------------------------------------------
cl_showfps 0 // Turning this FPS meter on actually decreases fps by about 3%-4%
fps_max 225 // fps caps on PCs that consistently meet that cap causes horrible input lag when attempting to turn/aim
//fps_max 132 // I'm leaving this in here though because some PCs (usually laptops) tend to overheat and have microstutters without frame caps.
sv_cheats 0

// ----------------------------------------------------------------------------
// Net settings
// ----------------------------------------------------------------------------
// Whilst net settings perhaps aren't an integral part of an FPS config, they
// are a fact of life in competitive TF2, and as such, they are included here.
//
// A common question I am asked -- what defines whether a good connection is
// good or bad? Mostly personal preference. If you're not willing to make the
// choice, try both and see which is better for you.
//
// Generally, meeting both of the following conditions would classify it as a
// good connection:
//
// - Ping of <80 to the average server you join
// - Generally no/negligible choke/loss (can be checked with `net_graph')
//
// There's some pretty good documentation on this here:
// http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
//
// Uncomment (remove the `//' from) one of the groups if you want to use them.
// ----------------------------------------------------------------------------

cl_cmdrate 100
cl_updaterate 10000000000
cl_interp 0
cl_interp_ratio 0
cl_lagcompensation 1
cl_pred_optimize 2
cl_smooth 0
cl_smoothtime .01
rate 100000

// Good connection
//cl_cmdrate 67 // The tricks to get 1.4ms lerp are placebo you're still forced to .0152
//cl_interp .033 // change to whatever you like for certain classes projectiles/popping uber/flames = .0152 hitscan = .031 on bad connections = .062
//cl_interp_ratio 1
//cl_lagcompensation 1
//cl_pred_optimize 2
//cl_smooth 0
//cl_smoothtime 0.01
//cl_updaterate 67 // The tricks to get 1.4ms lerp are placebo you're still forced to .0152
//rate 60000 // anything above 62,000 is completely useless, anything above 48,000ish is useless in HL

// Competitive connection // Very few servers will have these settings
//cl_cmdrate 128
//cl_interp .007 // this will likely have to be user defined .007 should be roughly the lowest interp, hit scan might do well at .0152 for this
//cl_interp_ratio 1
//cl_lagcompensation 1
//cl_pred_optimize 2
//cl_smooth 0
//cl_smoothtime 0.01
//cl_updaterate 128
//rate 90000 // With higher tick rates you have more bandwidth being used

// Bad connection
//cl_cmdrate 40
//cl_interp 0
//cl_interp_ratio 2
//cl_lagcompensation 1
//cl_pred_optimize 2
//cl_smooth 0
//cl_smoothtime 0.01
//cl_updaterate 40
//rate 35000

// ----------------------------------------------------------------------------
// Sprays
// ----------------------------------------------------------------------------
// Bear in mind that these are disabled on war servers due to `sv_pure 2'
// anyway, so if you play competitive TF2, this won't help you.
// ----------------------------------------------------------------------------

// Disable sprays
cl_playerspraydisable 1
r_spray_lifetime 0

// Enable sprays -- uncomment this section if you want these settings
//cl_playerspraydisable 0
//r_spray_lifetime 2

// ----------------------------------------------------------------------------
// Shadows
// ----------------------------------------------------------------------------

// Disable shadows
r_shadowmaxrendered 0
r_shadowrendertotexture 0
r_shadows 0
nb_shadow_dist 0

// Enable shadows -- I highly recommend keeping them off if you're frequently near or below the refresh rate of your monitor as you'll lose about 15-20% of your framerate
//mat_shadowstate 1
//r_shadowmaxrendered 11
//r_shadowrendertotexture 1 // Non-blobby shadows. Sometimes turned on by
// competitive TF2 players to see opponents standing
// near the other side of a wall. You may see some
// performance loss from setting this to `1'.
//r_shadows 1
//nb_shadow_dist 400

// ----------------------------------------------------------------------------
// Facial features
// ----------------------------------------------------------------------------

// Disable facial features
r_eyes 0
r_flex 0
r_lod 2
r_rootlod 2
r_teeth 0
r_eyemove 0
r_eyeshift_x 0
r_eyeshift_y 0
r_eyeshift_z 0
r_eyesize 0
blink_duration 0

// Enable facial features -- turning them on lowers framerate by 5ish%
//r_eyes 1
//r_flex 1
//r_lod 1 // Needs to be set to 1, otherwise they will still be disabled.
//r_rootlod 1
//r_teeth 1

// ----------------------------------------------------------------------------
// Ragdolls
// ----------------------------------------------------------------------------
// You will have reduced performance on deaths which produce ragdolls.
// ----------------------------------------------------------------------------

// Disable ragdolls
cl_ragdoll_fade_time 0
cl_ragdoll_forcefade 1
cl_ragdoll_physics_enable 0
g_ragdoll_fadespeed 0
g_ragdoll_lvfadespeed 0
ragdoll_sleepaftertime 0

// Enable ragdolls -- lowers by 10ish%
//cl_ragdoll_fade_time 15
//cl_ragdoll_forcefade 0
//cl_ragdoll_physics_enable 1
//g_ragdoll_fadespeed 600
//g_ragdoll_lvfadespeed 100
//ragdoll_sleepaftertime "5.0f"

// ----------------------------------------------------------------------------
// Gibs
// ----------------------------------------------------------------------------
// You will have reduced performance on deaths which produce gibs.
// ----------------------------------------------------------------------------

// Disable gibs
cl_phys_props_enable 0
cl_phys_props_max 0
props_break_max_pieces 0
r_propsmaxdist 1
violence_agibs 0
violence_hgibs 0

// Enable gibs -- 6-7% less framerate
//cl_phys_props_enable 1
//cl_phys_props_max 128
//props_break_max_pieces -1
//r_propsmaxdist 1000
//violence_agibs 1
//violence_hgibs 1

// ----------------------------------------------------------------------------
// Graphical
// ----------------------------------------------------------------------------
// Now we come to the main brunt of the config. You probably don't want to mess
// with this.
// ----------------------------------------------------------------------------
prop_active_gib_limit 0
props_break_max_pieces_perframe 0
fov_desired 90
cl_hud_playerclass_use_playermodel 0 // adds another hud element -3% frames
mat_phong 0 // some people don't like this on I prefer it on for sniper though
cl_muzzleflash_dlight_1st 0
cl_detaildist 0
cl_detailfade 0
cl_drawmonitors 0
cl_ejectbrass 0
cl_jiggle_bone_framerate_cutoff 0 // Turns off jigglebones
cl_new_impact_effects 0
cl_show_splashes 0
cl_rumblescale 0
cl_showhelp 0
cl_showpluginmessages 0
cl_debugrumble 0
func_break_max_pieces 0
glow_outline_effect_enable 0 // Cart glow effect.
lod_transitiondist 0
//mat_antialias 1 // apparently having this in config can break the mumble overlay for some users
mat_bumpmap 0 // Controls bumpmapping. Setting this to 0 on dx9 will cause
// a strange `shine' effect to appear on all players. - Chris
// In the past I wasn't able to prove that disabling this was significant,
// it effects fps by about 1% after several checks - Comanglia
mat_colcorrection_disableentities 1
mat_colorcorrection 0
mat_disable_bloom 1
mat_disable_fancy_blending 1
mat_disable_lightwarp 1
mat_envmapsize 8
mat_envmaptgasize 8
mat_filterlightmaps 1
mat_filtertextures 1
mat_forceaniso 1
mat_hdr_level 0
mat_autoexposure_max 0
mat_autoexposure_min 0
mat_bloomscale 0
mat_bloom_scalefactor_scalar 0
mat_debug_postprocessing_effects 0
mat_debugdepth 0
mat_disable_bloom 1
mat_postprocessing_combine 0
mat_non_hdr_bloom_scalefactor 0
mat_bufferprimitives 1
mat_compressedtextures 1
mat_forcemanagedtextureintohardware 0
mat_framebuffercopyoverlaysize 0
mat_hdr_enabled 0
mat_hdr_manual_tonemap_rate 0
mat_mipmaptextures 0 // ***
mat_non_hdr_bloom_scalefactor 0
mat_showlightmappage -1
mat_softwarelighting 0
mat_software_aa_blur_one_pixel_lines 0
mat_software_aa_edge_threshold 9
mat_software_aa_quality 0// was 9
mat_software_aa_strength 0
mat_software_aa_strength_vgui 0
mat_software_aa_tap_offset 0
mat_software_aa_quality 0
mat_texture_limit -1
mat_use_compressed_hdr_textures 0
mem_max_heapsize 2048
mod_forcedata 1
mod_forcetouchdata 1
mat_max_worldmesh_vertices 512
mat_monitorgamma 2.2 // Controls brightness, try 1.8 to make it brighter or 2.2
// to get it darker. Only works in fullscreen.
mat_parallaxmap 0
mat_picmip 0 // Higher = more mipmapping. Without `sv_cheats 1', you're looking
// at a range from -1 to 2, -1 being the best quality, 2 being the
// worst. - Doesn't really matter much what you set this too if you're cpu bound
mat_reducefillrate 1
mat_reduceparticles 1
mat_specular 1 // Controls specularity. Setting this to 0 will make ubers
// non-shiny, and will remove some specular effects from in-game
// entities which support it. - Setting this to 0 while trilinear is off lowers framerate for reasons I don't understand
mat_trilinear 1
mat_viewportscale 1 // Almost no performance gain from viewport upscaling.
mat_viewportupscale 1
mat_wateroverlaysize 1
mp_decals 9 // - Just keep this below 60ish and you shouldn't notice much different at all maybe .5 average fps for every 30-40 decals
r_3dsky 0
r_ambientboost 0
r_ambientfactor 0
r_ambientmin 0
r_cheapwaterend 1
r_cheapwaterstart 1
r_decals 9
r_maxmodeldecal 9
r_decalstaticprops 0
r_decal_cullsize 15
r_drawdetailprops 0
r_drawmodeldecals 0
r_drawflecks 0
r_dynamic 0
r_flashlightdepthtexture 0
r_forcewaterleaf 1
r_lightaverage 0
r_maxnewsamples 0
r_maxsampledist 1
r_bloomtintb 0
r_bloomtintexponent 0
r_bloomtintg 0
r_bloomtintr 0
r_occlusion 1
r_pixelfog 1
r_propsmaxdist 0
r_renderoverlayfragment 0
r_staticprop_lod 4
r_waterdrawreflection 0
r_waterdrawrefraction 1
r_waterforceexpensive 0
r_waterforcereflectentities 0
r_drawtracers_firstperson 0 // should give a small fps boost in 1st person
r_dopixelvisibility 0
r_drawbatchdecals 0
r_hunkalloclightmaps 0
r_lightcache_zbuffercache 0
r_PhysPropStaticLighting 0
rope_averagelight 0
rope_collide 0
rope_rendersolid 0
rope_shake 0
rope_smooth 0
rope_subdiv 0
rope_wind_dist 0
tf_particles_disable_weather 1 // Disable weather effects on maps supporting
// it, for example, setting this to `1'
// disables rain effects on *_sawmill.
tracer_extra 0
violence_ablood 1 // framerates on -most- pcs are higher with these on
violence_hblood 1
mat_motion_blur_enabled 0 // just incase anyone has this added before loading my cfg
mat_motion_blur_forward_enabled 0
mat_motion_blur_strength 0
r_worldlightmin 0.0001
r_worldlights 0
mp_usehwmmodels -1
mp_usehwmvcds -1

// ----------------------------------------------------------------------------
// Misc
// ----------------------------------------------------------------------------
in_usekeyboardsampletime 0
mat_clipz 1 // FX card users should set this to 0
mat_forcehardwaresync 0
mat_levelflush 1
m_rawinput 1 // Turn on raw mouse input. Commented out by default due to
// silly incompatibility with the Xfire overlay. You should use
// it if you can! - WHO USES XFIRE ANYMORE?
mat_vsync 0 // Turn off vsync to avoid nasty I/O latency.
r_fastzreject -1 // Values >1 enable a fast Z rejection algorithm, to be
// performed on the GPU (as opposed to on the CPU). The
// value `-1' autodetects hardware support for this
// feature, which is safer than forcing it.

ai_expression_optimization 1
fast_fogvolume 1
host_thread_mode 0 // Not exactly stable
mod_load_anims_async 1
mod_load_mesh_async 1
mod_load_vcollide_async 1
con_enable 1
con_filter_enable 1
con_filter_text_out particle
datacachesize 256

// ----------------------------------------------------------------------------
// Sound
// ----------------------------------------------------------------------------
// I'd be hesitant to say that you would see a great deal of performance
// improvement from lowering the sound quality, but in my experience as a
// competitive TF2 player, lowering the sound quality makes determination of
// directionality and distance that much easier. You may see a small FPS gain
// with these settings, or you may not, either way will likely have a
// negligible effect on performance.
// ----------------------------------------------------------------------------
dsp_enhance_stereo 0
dsp_slow_cpu 1
snd_async_fullyasync 1 // Having the sound run fully asynchronous has been
// helpful in the past, as it seems to (for whatever
// reason) reduce the number of TDRs experienced during
// gameplay. There's some pretty good information on
// TDRs (nerds only) here:
// http://forums.nvidia.com/index.php?showtopic=65161
snd_pitchquality 0
snd_spatialize_roundrobin 1
snd_mixahead .05 // Delay in sound from weapons below .05 has been known to be unstable

// ----------------------------------------------------------------------------
// Threading
// ----------------------------------------------------------------------------
mat_queue_mode 2 // mat_queue mode is another frequently asked about cvar, it
// defines the threading method to be used by the material
// system. It has been unstable to use in the past, but
// nowadays it's generally okay.
//
// Here are the possible values:
// -2 legacy default
// -1 default
// 0 synchronous single thread
// 1 queued single thread
// 2 queued multithreaded
//
// If you have problems with the value `2', try setting it to
// `-1'.
//
// As an aside, there are quite a few bugs in the demo system
// that occur when mat_queue_mode is set to a value that is
// not `-1'. If you intend to do work with the demo system,
// maybe you should change this.
//
//After immense testing I've found that default works perfectly
//fine with setting your Thread usage. It automatically set me
//to 2 every time. I'd say it's safer and likely less buggy to
//leave this at -1 than it is at 2.
//
//As a side not I've noticed micro stutters with mat_queue_mode 2
//at 1000+ fps where mat_queue_mode 1 did not stutter at 1000+ fps

cl_threaded_bone_setup 1 // WARNING if you don't have a Quad-Core CPU or better you SHOULD NOT LEAVE THIS ON
cl_threaded_client_leaf_system 0 // DO NOT ENABLE cause crashes to desktop within 4-5 minutes of gameplay 4/18 2014
r_queued_decals 0 // lessens the impact of higher decal limits.
r_queued_ropes 1
r_queued_post_processing 0 // kind of pointless because it's disabled above but if you do like post processing effects keeping this on should lessen the impact on framerate
r_threaded_client_shadow_manager 1
r_threaded_particles 1
r_threaded_renderables 1

// ----------------------------------------------------------------------------
// HUD
// ----------------------------------------------------------------------------
hud_saytext_time 10 //Default is 12 and measured in seconds, this is the amount of time chat stays on your screen
voice_enable 1 //Default is 1, This is the voice chat in the game 1 = on, 0 = off
hud_deathnotice_time 5 // Default is 6, This the the death notices that usually appear at the top right of the screen
hud_achievement_glowtime 0 // Default is 2.5, not 100% what this is about a 1.5% fps boost.
hud_achievement_count 0 //Default is 8, Max number of achievements that can be shown on the HUD
hud_achievement_tracker 0 // Default is 1, Show or hide the achievement tracker

// ----------------------------------------------------------------------------
// Test Shit
// ----------------------------------------------------------------------------
cl_localnetworkbackdoor 1 //Network optimizations for Singleplayer, disabling has about a 1-2% fps boost
cl_cloud_settings 0 // I believe this disables cloud syncing of CFGs but not 100% sure
//cl_notifications_show_ingame 0 // Pretty sure this disables Trade/Duel Notifications
sys_minidumpspewlines 500 // Basically the number of lines saved to a log file from console. No FPS boost but 15% lower FPS variance
tf_scoreboard_ping_as_text 1

// ----------------------------------------------------------------------------
// Misc
// ----------------------------------------------------------------------------
cl_ask_blacklist_opt_out "1"
cl_ask_favorite_opt_out "1"
sb_dontshow_maxplayer_warning "1"
tf_explanations_backpackpanel "1"
tf_explanations_charinfo_armory_panel "1"
tf_explanations_charinfopanel "1"
tf_explanations_craftingpanel "1"
tf_explanations_discardpanel "1"
tf_explanations_store "1"
tf_training_has_prompted_for_forums "1"
tf_training_has_prompted_for_loadout "1"
tf_training_has_prompted_for_offline_practice "1"
tf_training_has_prompted_for_options "1"
tf_training_has_prompted_for_training "1"
//net_graph 1 // keeping this on actually lowers your framerate by 3-6% depending on the level of net_graph you have it at
// net_graph 1,2,3,4,5
hud_fastswitch 1
sv_forcepreload 1

volume 0.1
sv_allow_point_servercommand always
bind "0" "slot10"
bind "1" "slot1"
bind "2" "slot2"
bind "3" "slot3"
bind "4" "slot4"
bind "5" "slot5"
bind "6" "slot6"
bind "7" "slot7"
bind "8" "slot8"
bind "9" "slot9"
bind "a" "+showscores"
bind \ "+duck"
bind "b" "+voicerecord"
bind "c" "voice_menu_3"
bind "d" "+back"

bind "e" "+forward"
bind "g" "+use_action_slot_item"
bind "h" "+inspect"
bind "f" "+moveright"
bind "i" "showmapinfo"
bind "j" "cl_trigger_first_notification"
bind "k" "cl_decline_first_notification"
bind "l" "dropitem"
bind "m" "open_charinfo_direct"
bind "n" "open_charinfo_backpack"
bind "p" "vr_reset_home_pos"
bind "q" "voicemenu 0 0"
bind "r" "slot2"
bind "s" "+moveleft"

bind "t" "impulse 201"
bind "u" "say_team"
bind "v" "lastdisguise"
bind "w" "slot1"

bind "x" "voice_menu_2"
bind "y" "say"
bind "z" "voice_menu_1"
bind "'" "+moveup"
bind "`" "toggleconsole"
bind "," "changeclass"
bind "." "changeteam"
bind "/" "+movedown"
bind "-" "disguiseteam"
bind "SPACE" "+crouchjump"
bind "TAB" "+showscores"
bind "ESCAPE" "cancelselect"
bind "INS" "+klook"
bind "END" "centerview"
bind "PGUP" "+lookup"
bind "PGDN" "+lookdown"
bind "PAUSE" "pause"
bind "SHIFT" "+duck"
bind "ALT" "+showscores"
bind "CTRL" "+taunt"
bind "F1" "+showroundinfo"
bind "F3" "askconnect_accept"
bind "F5" "screenshot"
bind "F6" "save_replay"
bind "F7" "abuse_report_queue"
bind "F9" "vr_toggle"
bind "F10" "quit prompt"
bind "F12" "replay_togglereplaytips"
bind "MOUSE1" "+attack"
bind "MOUSE2" "+attack2"
bind "MOUSE3" "+attack3"
bind "MWHEELUP" "+jump"
bind "MWHEELDOWN" "+jump"
// CROUCH JUMP SCRIPT
alias +crouchjump "+jump; +duck"
alias -crouchjump "-duck; -jump"
bind "space" "+crouchjump"
echo "Crouch Jump Loaded Properly."
bind j "ds_record"
bind k "ds_stop"
bind o "ds_mark"
bind KP_RIGHTARROW "exec DefaultConfigs.cfg; r_drawviewmodel 1"

hud_combattext_batching_window 1
// ----------------------------------------------------------------------------
// Print to console
// ----------------------------------------------------------------------------
echo "---------------------------------------------------------"
echo "Comanglia' frames config loaded. Inspired by Chris config"
echo "---------------------------------------------------------"