Source: Simland
/r_speeds
The r_speeds cvar displays rendering information which can be helpful in determining what may be having an effect on fps. The default value is 0 which will not display the r_speeds.
r_speeds 1 displays the following information:
xxx/xxx shaders/surfs xx leafs xxxxx verts xxxxx/xxxxx tris x.xx mtex x.xx dc
The renderer batches up drawsurfaces (map drawsurfaces, such as terrain chunks, walls, floors, model sections; model surfaces like players and weapons, and effect surfaces) into a large array before doing render passes. The "shaders" value is actually how many batches there are. Each batch can require one or more rendering pass. For example, weapon shaders often require two: a diffuse/texture pass to add details and an environment pass to make them shiny.
The "surfs" value indicates the number of drawsurfaces visible.
The "leafs" value indicates the number of BSP leafs that are visible in the scene. A leaf is the final, smallest BSP node which contains actual renderable data.
The most important value, "verts" shows the number of vertexes batched up to be rendered in the shader/batches to be calculated, transformed, lit etc. Ideally, the verts count should be as close to 1024 x the shaders (batches) count. Realistically, it will be difficult to achieve this target due to the amount of unique shader effects that only get rendered once.
The number of triangles visible in the scene is indicated by the "tris" value. Ideally the ratio of tris to verts should be as high as possible since you want to maximize the number of tris compared to the number of verts.
Source: Americans Library.gov
Information on frame rates required for animation.
Source: Return To Castle Wolfenstein & Enemy Territory 4 Newbies
Treat tris and FPS like money. Everything you include in your map comes at a cost. Make sure it's worth it. Be frugal about where you make your players draw tris and lose FPS. There are great maps out there that never get a second look because they are simply unplayable. The benchmarks I used were a steady 76 FPS on my machine and r_speeds less than 20K. Tris and FPS efficiency up front, lets you add in more goodies at the backend.
Source: QERadiant
GL_Showtris/R_Speeds/FrameCounter Toggle
(Based in part on an article by orginal author MD)
The "gl_showtris" and "r_speeds" commands allow you to see the number and location of polygons (surface triangles) in your view.
Showtris draws a white line around each triangle used to create the world when it is a part of a map's potential viewable set (PVS). This is especially effective tool, since it shows the triangle outlines of map areas that are being "seen" by the engine, which are not always just the ones that the player sees.
Depending on your video card, this may work well, or it may not. For some (like the Matrox cards, it comes with a huge performance hit).
This output is one of the more valuable reports you can get on a map. The numbers show you the numbers that can tell you what kind of real visual costs you are encounter. Combined with other commands that turn features like entities, curves, and multi-pass texturing on and off, you can get a realistic idea of where you're having problems.
Here's what those cryptic numbers mean. When r_speeds = 1, the numbers read as follows (where the # sign equals a number)
# / # shaders/surfs # leafs # verts # / # tris #.## mtex #.## dc
# / # shaders/surfs is the number of shaders in view, followec by the number of surfaces in view.
# leafs is how many leaf nodes are potentially visible.
# verts is how many vertexes are in view
# / # tris is the number of trangles drawn by the renderer in a single pass single pass followed by the number of triangles drawn by the renderer with all passes. These are the numbers that are most often implied when someone talks about "r_speeds." If the r_ext_multitexture variable is off, the numbers will reflect a more accurate accounting of the real triangle count (see multi-pass texturing section below).
# .## mtex #.## dc [definition under construction]
There is a tendency for rate of frame display to become a sort of god (or at least a "greatest good") for some players. Their quality of play, whether real or psychological, revolves around how fast their computer is flipping through screen updates. Everything else, to them, is throw away. While the design and complexity of a map can affect this, so can many features that are outside of the designer's control. For that reason, frame rate is not a particularly good way to judge the quality of your map.
The "cg_drawfps 1" command gives you instantaneous frame rate readout.
Use this command string to toggle the three at once. Include the following lines in your Debug Config script:
set r_showtris 0
set r_speeds 0
set cg_drawfps 0
bind "your key" "toggle r_showtris;toggle r_speeds;toggle cg_drawfps"
Lock the PVS Table
(Author: MD)
"PVS" means "potential viewable set." The PVS includes all the polygons that can be seen from a particular location in the map (i.e., where you are standing now). The game engine updates what is visible and what is not as you move through the map. You can stop this updating process, and see just how far the engine can see by moving until you find an area of the world that's not being drawn. Use this to debug views where the frame rate drops below an acceptable level. Go to a place where you get a bad "fps" reading. Execute this command. When the PVS Table is locked, you can walk through the map and see exactly how far your view extends. Surfaces in view will be drawn as normal. Non-seen surfaces will show up as the Hall of Mirrors effect (unless the fast sky or r_clear options are also set). Use the information as a guide for changing what can be seen in a view.
This command string script toggles the use of the PVS table to let you do this. It also toggles on the r_clear option, so instead of Hall of Mirrors the void beyond the world is seen in fashion doll pink.
set r_lockpvs 0 set r_clear 0
bind "your key" vstr lockview set lockview vstr lockview1
set lockview1 "set lockview vstr lockview0;echo PVS Locked;r_lockpvs 1;r_clear 1"
set lockview0 "set lockview vstr lockview1;echo PVS Unlocked;r_lockpvs 0;r_clear 0"