Profiler
The Profiler tab is the third tab in the Developer UI menu. Its main purpose is dynamically debugging different aspects of the map and the engine, showing the exact budget and usage. Additionally, a .txt report can be generated, containing every event that happened in a specified period of time. The menus of this tab are useful for optimizing maps, game events and material usage.
It consists of 8 windows - Texture Budget Per-Frame, Texture Budget Global, Misc Graphics Stats, VProf Budget, VProf Report Generator, VProf Counters, VProf Tree and VProf UI.
Texture Budget Per-Frame
Texture Budget Per-Frame shows how much of the GPU memory is used by the textures right now in-game. There are many different graphs, each of which showing precise information about the buffer usage of various renderables. This menu is useful for searching for frame drops and various optimizations.
The graphs automatically update each frame, so it is easy to check for differences in various parts of the map, for frame holes as example.
There is a total of 27 graphs:
Totalshows the total amount of GPU usage as a histogramRenderTargetsshows the memory usage taken by render targets.DepthBuffershows the memory usage taken by the depth buffer.Constant Buffersshows the memory usage taken by updating constant buffers.Constant Buffers GPU Uploadshows the memory usage taken by sending and receiving constant buffers from GPU.Other Vertsshows the memory usage taken by any other verticles.Other Texturesshows the memory usage taken by any other textures textures.CubeMap Texturesshows the memory usage taken by cubemap textures.Constant Buffershows the memory usage taken by lightmaps.Constant Buffershows the memory amount taken by buffered textures.VGUI texturesshows the memory usage taken by VGUI elements.Decal texturesshows the memory usage taken by decals and overlays.Unaccounted texturesshows memory usage taken by missing textures.World texturesshows the memory usage taken by textures used on world geometry.StatisProp texturesshows the memory usage taken by textures used on static models.Model Vertsshows memory usage taken by model verticles.Model texturesshows the memory usage taken by textures used on dynamic and physics models.Precachedshows the memory amount taken by precached textures.SkyBox texturesshows the memory usage taken by skybox textures (applies to 3D skybox as well)World Vertsshows the memory usage taken by world verticles.Particle texturesshows the memory usage taken by particles.Lighting Vertsshows the memory usage taken by lighting verticles.Structured Buffers GPU Uploadshows how much space individual buffers take before being sent to the GPU.Structured Buffersshows how much space buffers take overall.RV Structured Buffersshows the memory usage taken by updating raw sctructured buffers.Static Indicesshows the memory usage taken by static indices.ClientEffect texturesshows the memory usage taken by screen effects (lens circle, hints, etc).
Texture Budget Global
Texture Budget Global shows how much of the GPU memory is precached overall when loading a map. There are many different graphs, and each shows precise information about the memory usage of various renderables. This menu is useful when optimizing texture usage, and when writing minimal requirements.
There is a total of 27 graphs. Their names, functionality and positions in the menu are identical to the Texture Budget Per-Frame menu.
Misc Graphics Tab
Misc Graphics Tab is a small menu that shows the amount of calls sent to the GPU every frame. Values in the menu update each frame.
There are 10 values in the menu:
Update Constant Buffershows the amount of calls telling to update constant buffers.vertex shader changeshows the amount of calls telling to update model textures.pixel shader changeshows the amount of calls telling to update brush textures.DrawIndexedPrimitiveshows the amount of calls telling to draw primitives.numPrimitivesshows the total amount of primitives drawn.DrawCallsshows the amount of calls telling GPU to draw something.compute shader changeshows the amount of calls telling to update shaders.push build viewshows the amount of calls telling to push the build view.max build viewshows the amount of build views.Update Structured Buffershows the amount of updates of the structured buffer. Should always be 4.
VProf Budget
VProf Budget shows how much time the GPU takes to render different parts of the game, in milliseconds. The engine freezes each time it needs to redraw something, so this menu basically tells what exactly causes the game to lag. If something takes longer than 5 milliseconds, consider optimizing that!
When having Historgam enabled, do not oversize the window! Developer UI can only have a certain amount of graphs drawn at the same time, drawing too many of them overflows the buffer and crashes the game!
There are 54 graphs total:
Unaccountedshows the amount of time it takes to draw unaccounted textures.Sleepshows the amount of time the engine intentionally slept.World Renderingshows the amount of time it takes to draw world geometry.Displacement Renderingshows the amount of time it takes to draw displacements.Gameshows the amount of time it takes to draw the game.Playershows the amount of time it takes to draw the playermodel and/or the visibility rays.NPCsshows the amount of time it takes to draw NPCs.Server Animationshows the amount of time it takes to draw server-side model animations.Client Animationshows the amount of time it takes to draw client-side model animations.Physicsshows the amount of time it takes to draw vphysics interactions.Static Prop Renderingshows the amount of time it takes to draw static props.Other Model Renderingshows the amount of time it takes to draw non-static props.Fast Path Model Renderingshows the amount of time it takes to calculate the fastest path for rending each dynamic model.Light Cacheshows the amount of time it takes to cache lights.Brush Model Renderingshows the amount of time it takes to render brush entities.Shadow Renderingshows the amount of time it takes to render cheap dynamic shadows.Detail Prop Renderingshows the amount of time it takes to draw detail props.Particle/Effect Renderingshows the amount of time it takes to draw particles and other particle-like effects (sparks, bullet shots, etc).Ropesshows the amount of time it takes to draw ropes.Dynamic Light Renderingis obsolete, supposed to draw render-to-texture shadows, but those were removed.Networkingshows the amount of time it takes to connect to the network.Soundshows the amount of time it takes to get information about the sounds playing.VGUIshows the amount of time it takes to draw VGUI elements.FileSystemshows the amount of time it takes to draw the filesystem, if any is on-screen.Predictionshows the amount of time it takes to draw physics prediction, if the debug tool is enabled.Interpolationshows the amount of time it takes to interpolate.Swap Bulletsshows the amount of time it takes to swap the bullets.Occlusionshows the amount of time it takes to draw basic occlusion. Not to be confused with the new dynamic AO.Overlaysshows the amount of time it takes to draw decals and overlays.Toolsshows the amount of time it takes to draw the engine tools (-tools launch option)Texture Cacheshows the amount of time it takes to cache textures (always shows 0 ms)Replayshows the amount of time it takes to draw the replay of CS:GO demos. What a leftover!Script Systemshows the amount of time it takes to calculate the AS rendering script system.VGUI Simulateshows the amount of time it takes to simulate VGUI elements on-screen (for hints).Client Simulationshows the amount of time it takes to calculate the client-side rendering calculations.Particle Simulationshows the amount of time it takes to calculate the particles.CViewRender::Rendershows the amount of time it takes to render the player view.World Render Setupshows the amount of time it takes to set up the player view.SetupRenderablesListshows the amount of time it takes to set up renderables.DrawPortalsUsingStencilsshows the amount of time it takes to render portals using stencils.Flashlight Shadowsshows the amount of time it takes to render player's flashlight (impulse 103).Fast Path Brush Renderingshows the amount of time it takes to calculate the fastest path for rending each dynamic brush.DrawEarlyZPortalsshows the amount of time it takes to calculate the relative view position between the player and the portal.PortalGhostsshows the amount of time it takes to draw the portal ghosts.DrawSimplePortalMeshshows the amount of time it takes to draw the simple mesh in the portal view.XeGTAOshows the amount of time it takes to draw the new XeGT Ambient Occlusion.DrawTranslucentEntitiesshows the amount of time it takes to draw translucent entities.Cvar Findshows the amount of time it takes to find a cvar.ChromeHTMLshows the amount of time it takes to draw the HTML web-page, if any is visible.Paintblobshows the amount of time it takes to draw a paint blob.GameInstructorshows the amount of time it takes to draw on-screen hints.Inputshows the amount of time it takes to calculate inputs received.Steamshows the amount of time it takes to render the Steam overlay.paintshows the amount of time it takes to draw paint.CBaseEntity::EmitSoundshows the amount of time it takes to calculate the visual ambiance of the sound.
VProf Report Generator
VProf Report Generator allows players to record all the events from above and save them as a text file. It has filters to list the result by specific criterias.
The menu has the following functionality:
Start Recordingstarts the recording. All the events are stored in RAM until the recording stops.Stop Recordingstops the recording.Generate Reportwrites all the values from RAM to the text file and opens the VProf Generated Report window.Save To Filesaves the text file.Output Pathis the output path of the text file.
The menu has the following filters:
Budget Groupis a dropdown filter, allows to select a specific budget filter from the VProf Budget list.Summarylists the events as a summary of all the data.Hierarchylists the events taking into account the hierarchy.List by Timelists the events by their dateList By Time (< Children)lists the events by their date excluding children in hierarchyList by Avg Timelists the events by the average time they took.List by Avg Time (< Children)lists the events by the average time they took excluding children in hierarchyList by Peak Timelists the events from the longest to the shortest.List by Avg Time (< Children)lists the events from the longest to the shortest excluding children in hierarchyList by Peak Over Avglists the events from the longest to the shortest, ignoring average time if events have the same execution timeList Top Items Onlylists only the top items, ignoring minor events
VProf Generated Report
Generate Report button opens an after-report window called VProf Generated Report that contains the reported file. The menu contains the generated report, a text entry to change the name of the text file, the Copy and the Save File buttons.
VProf Counters
VProf Counters window contains values that represent various details about rendering and GPU usage. Average Developer UI user shouldn't need this information, it is more for internal usage of the engine and how it handles various stuff.
VProf Tree
VProf Tree allows developers to record specific engine events for a specified period of time, allowing them to see... what? what will they find there? more numbers? for what?
Pressing Stop Recording button without pressing Start Recording beforehand starts recording with no way to stop it!
This window contains the list of all the events that exist in the engine, and the following buttons:
Start Recordingbegins recording engine events.Stop Recordingstops recording engine events.
VProf UI
VProf UI is an ultimate window containing VProf Tree, VProf Counters, VProf Budget and VProf Generated Report in a single window, allowing developers to quickly switch between them using the top menu.











