diff --git a/docs/lighting/clustered/clustered_light_inspector.md b/docs/lighting/clustered/clustered_light_inspector.md index bc26d1fb..7f23c913 100644 --- a/docs/lighting/clustered/clustered_light_inspector.md +++ b/docs/lighting/clustered/clustered_light_inspector.md @@ -7,23 +7,23 @@ features: # Clustered Light Inspector -Clustered Light Inspector is a menu where you can control `light_rt` entities in real time in-game. There are various options that give almost a full control over the entity. You can control all the default light options, such as `Constant`, `Linear`, `Quadratic`, `0% Intensity Falloff`, `50% Intensity Falloff`, `Minimum Brightness Threshold`, `Override Radius` and `Light Scale`, as well as `Color` using the color palette, `Shadow Scale`, `Near Z`, light's `Pattern` and entity's position in the map. +Clustered Light Inspector is a menu where you can control `light_rt` entities in real time in-game. There are various options that give almost a full control over the entity. You can control all the default light options, such as `Constant`, `Linear`, `Quadratic`, `0% Intensity Falloff`, `50% Intensity Falloff`, `Minimum Brightness Threshold`, `Override Radius`, `Light Scale`, `Volumetric Light Scale` and `Volumetric Density`, as well as `Color` using the color palette, `Shadow Scale`, `Near Z`, light's `Pattern` and entity's position in the map. + +There are additional debugging and finding options. "Show Light Bounds" is relevant for `light_rt` and shows bounds of the light as a sphere. "Show Light Cone" is relevant for `light_rt_spot` and shows bounds of the light spot. "Show Only in Radius" will only display clustered lights in a specified radius. Additionally, you can toggle the specular reflection, the direct dynamic lighting, volumetrics coming from the light and this light's shadows. ## Enabling The Inspector -In P2:CE, you can enable the Clustered Lighting Inspector UI using the `devui_show light_editor` console command. +In P2:CE, you can enable the Clustered Lighting Inspector UI using the `devui_show light_editor` console command, or by using the `devui_menu_toggle` command and selecting `Clustered Light Inspector` menu in the `Graphics` tab. ![Developer UI](images/devui3.png) -There are additional debugging and finding options. "Show Light Bounds" is relevant for `light_rt` and shows bounds of the light as a sphere. "Show Light Cone" is relevant for `light_rt_spot` and shows bounds of the light spot. "Show Only in Radius" will only display clustered lights in a specified radius. - -> [!TIP] -> Position bars are scrollable! - * Top: Clustered Light Inspector * Middle: Clustered Light Inspector with the selected light's properties tweaked * Bottom: Clustered Light Inspector with the selected light's position edited using XYZ bars +> [!TIP] +> Position and angle bars are scrollable! + ![Clustered Light Inspector](images/clustered_ui1.png) ![Clustered Light Inspector](images/clustered_ui2.png) diff --git a/docs/lighting/clustered/images/clustered_ui1.png b/docs/lighting/clustered/images/clustered_ui1.png index 755b9afc..c6bc8181 100644 Binary files a/docs/lighting/clustered/images/clustered_ui1.png and b/docs/lighting/clustered/images/clustered_ui1.png differ diff --git a/docs/lighting/clustered/images/clustered_ui2.png b/docs/lighting/clustered/images/clustered_ui2.png index 7c7fb742..59eb76b3 100644 Binary files a/docs/lighting/clustered/images/clustered_ui2.png and b/docs/lighting/clustered/images/clustered_ui2.png differ diff --git a/docs/lighting/clustered/images/clustered_ui3.png b/docs/lighting/clustered/images/clustered_ui3.png index 3e6a64f8..2dedb021 100644 Binary files a/docs/lighting/clustered/images/clustered_ui3.png and b/docs/lighting/clustered/images/clustered_ui3.png differ diff --git a/docs/lighting/clustered/images/devui3.png b/docs/lighting/clustered/images/devui3.png index 6ef04ad0..dfcff9c8 100644 Binary files a/docs/lighting/clustered/images/devui3.png and b/docs/lighting/clustered/images/devui3.png differ diff --git a/docs/lighting/clustered/images/volumetrics.png b/docs/lighting/clustered/images/volumetrics.png new file mode 100644 index 00000000..afaa5a35 Binary files /dev/null and b/docs/lighting/clustered/images/volumetrics.png differ diff --git a/docs/lighting/clustered/quick_start.md b/docs/lighting/clustered/quick_start.md index 8390d423..6c1beb5c 100644 --- a/docs/lighting/clustered/quick_start.md +++ b/docs/lighting/clustered/quick_start.md @@ -40,7 +40,6 @@ features: 3. Set "Direct Light Mode" to "Static Only" 4. Set "Indirect Light Mode" to "Static Only" 5. Set "50 percent falloff distance" and "0 percent falloff distance" KeyValues to adjust the look and feel -6. For best results, use PBR textures with appropriate MRAOs and normal maps ![Keyvalues](images/properties_static.png) @@ -51,7 +50,6 @@ features: 3. Set "Direct Light Mode" to "None" 4. Set "Indirect Light Mode" to "Static Only" 5. Set "50 percent falloff distance" and "0 percent falloff distance" KeyValues to adjust the look and feel -6. For best results, use PBR textures with appropriate MRAOs and normal maps ![Keyvalues](images/properties_indirect.png) diff --git a/docs/lighting/clustered/what_is.md b/docs/lighting/clustered/what_is.md index 777d42a8..cbb0696a 100644 --- a/docs/lighting/clustered/what_is.md +++ b/docs/lighting/clustered/what_is.md @@ -128,11 +128,18 @@ You can control the size of the shadow map by changing the "Initial Shadow Size" > [!WARNING] > When increasing the outer angle of `light_rt_spot`, note that the edges of the spot will have sharper shadows than the center. This is important since setting up a `light_rt_spot` with a high shadow size and a high outer angle will produce low-quality shadows in the center while still taking up a huge piece of shadow atlas. Consider using `env_projectedtexture` or `env_cascade_light` (when imitating sunlight) in scenarios like these. +## Volumetrics +Clustered lighting supports volumetric lighting. More about volumetric lighting and how it works on [the page about volumetric lighting.](/lighting/volumetrics/intro) + ## Light Cookies Light cookies, also known as cookie textures, are supported by clustered lights (`light_rt` and `light_rt_spot`). They can be used to apply a pattern to a light, controlling its shape and brightness. If you're not familiar with the concept of light cookies, imagine them like putting a piece of paper over a flashlight. If you were to cut out a shape from the paper, it would allow light to pass through, projecting a specific shape. Light cookies also have a similar effect to projected textures (`env_projectedtexture`). In Hammer, light cookies can be added to a light using the "Cookie Texture Name" and "Cookie Texture Frame" properties. When looking at lights through the Light Inspector, the texture can be set under "Pattern". +Volumetric lighting also works with light cookies. + +![Volumetrics & light cookies](images/volumetrics.png) + ## Console commands There are some clustered-related console commands that give a more precise control over clustered shadows. diff --git a/docs/lighting/volumetrics/images/basic_volumetric.gif b/docs/lighting/volumetrics/images/basic_volumetric.gif new file mode 100644 index 00000000..54f37f30 Binary files /dev/null and b/docs/lighting/volumetrics/images/basic_volumetric.gif differ diff --git a/docs/lighting/volumetrics/images/clustered_light_inspector_volumetric.jpg b/docs/lighting/volumetrics/images/clustered_light_inspector_volumetric.jpg new file mode 100644 index 00000000..cc619dc5 Binary files /dev/null and b/docs/lighting/volumetrics/images/clustered_light_inspector_volumetric.jpg differ diff --git a/docs/lighting/volumetrics/images/fog_inspector.png b/docs/lighting/volumetrics/images/fog_inspector.png new file mode 100644 index 00000000..684abe25 Binary files /dev/null and b/docs/lighting/volumetrics/images/fog_inspector.png differ diff --git a/docs/lighting/volumetrics/images/graphics_vol-menu.png b/docs/lighting/volumetrics/images/graphics_vol-menu.png new file mode 100644 index 00000000..d1db48e4 Binary files /dev/null and b/docs/lighting/volumetrics/images/graphics_vol-menu.png differ diff --git a/docs/lighting/volumetrics/images/graphics_vol.png b/docs/lighting/volumetrics/images/graphics_vol.png new file mode 100644 index 00000000..0be4fecd Binary files /dev/null and b/docs/lighting/volumetrics/images/graphics_vol.png differ diff --git a/docs/lighting/volumetrics/images/light_rt_kv.png b/docs/lighting/volumetrics/images/light_rt_kv.png new file mode 100644 index 00000000..05dbfd3b Binary files /dev/null and b/docs/lighting/volumetrics/images/light_rt_kv.png differ diff --git a/docs/lighting/volumetrics/images/obb_volume_changetexture.jpg b/docs/lighting/volumetrics/images/obb_volume_changetexture.jpg new file mode 100644 index 00000000..53e6eb79 Binary files /dev/null and b/docs/lighting/volumetrics/images/obb_volume_changetexture.jpg differ diff --git a/docs/lighting/volumetrics/images/obb_volumefog_csm_interact_workaround.jpg b/docs/lighting/volumetrics/images/obb_volumefog_csm_interact_workaround.jpg new file mode 100644 index 00000000..897ba519 Binary files /dev/null and b/docs/lighting/volumetrics/images/obb_volumefog_csm_interact_workaround.jpg differ diff --git a/docs/lighting/volumetrics/images/obb_volumefog_cube.jpg b/docs/lighting/volumetrics/images/obb_volumefog_cube.jpg new file mode 100644 index 00000000..34c1afbb Binary files /dev/null and b/docs/lighting/volumetrics/images/obb_volumefog_cube.jpg differ diff --git a/docs/lighting/volumetrics/images/obb_volumefog_sphere.jpg b/docs/lighting/volumetrics/images/obb_volumefog_sphere.jpg new file mode 100644 index 00000000..c4a131e3 Binary files /dev/null and b/docs/lighting/volumetrics/images/obb_volumefog_sphere.jpg differ diff --git a/docs/lighting/volumetrics/images/ptex_vol.gif b/docs/lighting/volumetrics/images/ptex_vol.gif new file mode 100644 index 00000000..13d8beb0 Binary files /dev/null and b/docs/lighting/volumetrics/images/ptex_vol.gif differ diff --git a/docs/lighting/volumetrics/images/shadowed_flag.png b/docs/lighting/volumetrics/images/shadowed_flag.png new file mode 100644 index 00000000..eb9fdc25 Binary files /dev/null and b/docs/lighting/volumetrics/images/shadowed_flag.png differ diff --git a/docs/lighting/volumetrics/images/vol_occlusion.png b/docs/lighting/volumetrics/images/vol_occlusion.png new file mode 100644 index 00000000..9d479341 Binary files /dev/null and b/docs/lighting/volumetrics/images/vol_occlusion.png differ diff --git a/docs/lighting/volumetrics/images/vol_playershadow.png b/docs/lighting/volumetrics/images/vol_playershadow.png new file mode 100644 index 00000000..4a61914f Binary files /dev/null and b/docs/lighting/volumetrics/images/vol_playershadow.png differ diff --git a/docs/lighting/volumetrics/images/volumetrics.png b/docs/lighting/volumetrics/images/volumetrics.png new file mode 100644 index 00000000..afaa5a35 Binary files /dev/null and b/docs/lighting/volumetrics/images/volumetrics.png differ diff --git a/docs/lighting/volumetrics/intro.md b/docs/lighting/volumetrics/intro.md new file mode 100644 index 00000000..9f18faf1 --- /dev/null +++ b/docs/lighting/volumetrics/intro.md @@ -0,0 +1,101 @@ +--- +title: "Introducing Volumetrics" +weight: 10 +features: + - USE_CLUSTERED +--- + +> [!NOTE] +> This page is work in progress. Please be patient! +> TODO fill me. + +# Volumetric Lighting + +Volumetric Lighting is a rendering effect that simulates light rays scattering in the air. +It allows light to have an occlusion effect, meaning objects can block the light, creating realistic shadows inside the volume. + +![Volumetrics](images/basic_volumetric.gif) + +> [!NOTE] +> Player model interacts with volumetric lighting, even in the first person view. + +![Volumetrical Player Shadow](images/vol_playershadow.png) + +## The Setup + +There are 3 KeyValues in `light_rt` and `light_rt_spot` entities: `Volumetric Light Mode` **`Volumetric Density`** and **`Volumetric Light Scale`**: + +* `Volumetric Light Mode` toggles the volumetric lighting for this entity, can be set to either *None* or *Dynamic Only*. +* `Volumetric density` is a floating number between 0 and 1, where 1 is fully opaque and 0 is completely invisible. +* `Volumetric Light Scale` is a floating number that scales the color of the volumetric lighting casted by this entity, it is not recommended to set higher than 1. + +`env_projectexture`, except for `Enable Volumetrics`, have only volumetric-related KeyValue - `Volumetric Intensity`, which is identical to `Volumetric Density`. But unlike all the other entities that produce volumetrics, projected texture volumetrics work with WebM videos. + +## Light Cookies and WebM support + +Volumetrics support light cookies from `light_rt`, `light_rt_spot` and `env_projectedtexture`, as well as WebM videos from `env_projectedtexture` entity. The volumetrics casted by the lights that use light cookies and WebM videos will update and show up correctly. + +![WebM Volumetrics](images/ptex_vol.gif) + +## Volumetrical Fog + +In addition to individual volumetrics for the Clustered lights, there is a point entity called `obb_fogvolume`. It allows you to place a volumetric fog in your map. It can have a different shape, color and density, but most importantly, **it projects volumetrical rays of the lights that intercept it**. Simply put, this ... + +#### KeyValues: +* The width +* The height +* The depth of the fog +* the color of the "emissive" +* the color of the "scaterring" +* a `Spheroid` KeyValue +* the KeyValue `Texture Name` +* the X and Y axes of the custom texture slices. + +> TODO: replace the keyvalues above with the actual keyvalues with propper grammar. + +`obb_volumefog` is cubic by default. There is a `Spheroid` KeyValue to make the fog spherical. + +![OBB_VolumeFog Cube](images/obb_volumefog_cube.jpg) + +![OBB_VolumeFog Sphere](images/obb_volumefog_sphere.jpg) + +The shape of `obb_fogvolume`'s volumetric fog can be changed with the "Texture Name" KeyValue. The texture should be ... This kind of texture can be made in ... + +The X and Y axes of the 3D-to-2D texture slices can be changed via (KEYVALUES). + +![OBB_VolumeFog with a custom texture](images/obb_volume_changetexture.jpg) + +All the `obb_fogvolume`'s KeyValues can be changed in realtime in-game using the Clustered Volumetrics Inspector. + +![Clustered Volumetric Inspector](images/fog_inspector.png) + +## Global Volumetrical Fog + +To set up the volumetric fog for the whole map, you can use the 'Clustered Volumetrics Inspector' in the Developer UI menu. You can enable the Clustered Volumetrics Inspector UI using the `devui_show vol_editor` console command, or by using the `devui_menu_toggle` command and selecting `Clustered Volumetrics Inspector` menu in the `Graphics` tab. + +Clustered Volumetrics Inspector allows setting the volumetrical value for all clustered lights globally, allowing to preview the new volumetric lighting on the maps that were compiled before the update. It does that by applying a pseudo-`obb_fogvolume` that covers the whole map, values of which are controlled by this menu. + +![CVI](images/graphics_vol.png) + +**Clustered Volumetrics Inspector has the following list of values:** + +* `Show Volume Bounds` - if an `obb_fogvolume` entity is present, it will show its bounds as a white box. +* `Show Only in Radius` will only show `obb_fogvolume` entities in a specified radius. This only affects the `obb_fogvolume` list below. +* `Default Fog Emissive Color` sets the emissive fog color for the whole map. Appears on top of the regular fog created by `env_fog_controller`, works similarly. +* `Default Fog Density` sets the density of the fog for the whole map, similarly to the `env_fog_controller`'s fog density. +* `Default Fog Scattering Color` sets the color for the volumetric rays that are casted by CSM and Clustered lighting. Useful only in maps that were compiled before the update. +* `Default Fog Phase` changes the starting / ending point of the volumetric rays. Only values from -1 to 1 are accepted. Default is 0 - no changes. Value of 0.5 cuts the volumetric rays in half, value of -0.5 makes only the ending half of the rays appear. + +![CVI Menu](images/graphics_vol-menu.png) + +If you specify an `obb_fogvolume` entity in the fogvolume list, the following properties will be able to be changed: +* `Position` of the fog entity, with the value being the center of the fog; +* `Angles` of the fog entity; +* `Half Size` of the fog, which is split into width, length and height; +* `Spheroid Volume`, which determines whether the fog should be drawn as a cube or as a sphere; +* `Fog Density`; +* `Emissive Color`, which is the color of the fog itself; +* `Scattering color`, which is the color of the volumetric rays that go through the fog's volume; +* `Fog Phase`, which is similar to the `Default Fog Phase` except it is applied individually to this `obb_fogvolume`. + +![Clustered Volumetric Inspector](images/fog_inspector.png) diff --git a/docs/lighting/volumetrics/meta.json b/docs/lighting/volumetrics/meta.json new file mode 100644 index 00000000..761c3935 --- /dev/null +++ b/docs/lighting/volumetrics/meta.json @@ -0,0 +1,3 @@ +{ + "title": "Volumetrics" +} diff --git a/docs/lighting/volumetrics/quick_setup.md b/docs/lighting/volumetrics/quick_setup.md new file mode 100644 index 00000000..c7de68db --- /dev/null +++ b/docs/lighting/volumetrics/quick_setup.md @@ -0,0 +1,66 @@ +--- +title: Quick Setup +weight: 20 +features: + - USE_CLUSTERED +--- + +# Quick Setup + +You can set up volumetrics in 3 different ways: +1. By using the corresponding KeyValues in `light_rt`, `light_rt_spot` and `env_projectedtexture`; +2. By using `obb_fogvolume` that defines volumetric rays specifically for the fog volume it produces; +3. Through the [Clustered Volumetric Inspector](/misc/devui/categories/graphics#clustered-volumetrics-inspector) in the Developer UI menu. + +### Using KeyValues: + +**For Light_rt and light_rt_spot** +1. Add a light_rt or light_rt_spot entity +2. Set the "Volumetric Light Scale" KeyValue to some value between 0.1 and 1.0 +3. Set the "Volumetric Density" KeyValue to some value between 0.1 and 1.0 +4. Make sure the "Shadowed" flag is **checked** +5. Compile the map. The volumetrics should appear. + +> [!NOTE] +> It is *not* necessary to have the "Shadowed" flag enabled for the volumetrics to appear. + +![light_rt KV](images/light_rt_kv.png) + +**For env_projectexture** + +1. Add an env_projectexture entity +2. Set the "Enable Volumetrics" KeyValue to Yes +3. Set the "Volumetric Intensity" KeyValue to some value between 0.1 and 1.0 +4. Compile the map. The volumetrics should appear. + +> PHOTO FOR env_projectedtexture + +### Using `obb_fogvolume`: + +1. Add an obb_fogvolume entity +2. Set the KeyValue to some value +3. Set the KeyValue to some value +3. Set the KeyValue to some value +3. Set the KeyValue to some value +3. Set the KeyValue to some value +3. Set the KeyValue to some value +3. Set the KeyValue to some value +3. Set the KeyValue to some value +3. Set the KeyValue to some value +4. Compile the map. The volumetric cloud should appear + +> PHOTO FOR obb_fogvolume + +### Using Clustered Volumetric Inspector: + +You can configure and change the volumetric Lighting settings on the maps. +You can disable and enable it. +You can also change the Volumetric density and the light scale. + +![Clustered Volumetric Inspector](images/clustered_light_inspector_volumetric.jpg) + +# How to make it work for Cascade Shadow Mapping + +Currently, there are no KeyValues to enable volumetrics in `env_cascade_light` entity. However, there are two ways to make them appear - by using `obb_fogvolume` entity, or through the [Clustered Volumetric Inspector](/misc/devui/graphics). + +![Volumetric effect of the Cascade Shadow Mapping](images/obb_volumefog_csm_interact_workaround.jpg) diff --git a/docs/lighting/volumetrics/troubleshooting.md b/docs/lighting/volumetrics/troubleshooting.md new file mode 100644 index 00000000..4508c6f1 --- /dev/null +++ b/docs/lighting/volumetrics/troubleshooting.md @@ -0,0 +1,24 @@ +--- +title: Troubleshooting +weight: 30 +features: + - USE_CLUSTERED +--- + +# Troubleshooting + +### The volumetrics don't show up! + +Skill issue. + +### The volumetrics are too intense! + +Same issue. + +### My Volumetrics are broken and corrupt! + +We fucked all the AMD GPUs in the ASS! Go buy an nvidia, we don't care. + +### How do I get to use it? I don't have P2CE + +Dude... ugh. Just shut up. Open beta in 2 months. diff --git a/docs/misc/devui/categories/debug.md b/docs/misc/devui/categories/debug.md new file mode 100644 index 00000000..a725e66e --- /dev/null +++ b/docs/misc/devui/categories/debug.md @@ -0,0 +1,44 @@ +--- +title: Debug +weight: 80 +--- + +# \*deep breath\* + +The last, eighth tab, is the default ImGUI debugging window. TBF I shouldn't be covering it, it's a default debugging menu after all. But hey, someone's gotta do it, otherwise there will be a whole undocumented tab and some random kid is gonna complain about that. + +![Debug](images/debug.png) + +It consists of... quite a lot of things. I'd say, *too many* things to cover for an unpaid volunteer like me. + +![Debug menu](images/debug_menu.png) + +> There is also a metrics menu that wasn't there before. I made a screenshot but it's on you to document it. + +So there are 8 dropdown menus: **Help**, **Configuration**, **Window options**, and other dropdowns that are related to ImGUI debugging. + +**** + +# Help + +This dropdown menu is a README about the debugging window. It explains what it contains, where each stuff is and how to work with it. + +![Debug Help menu](images/debug_menu_help.png) + +**** + +# Configuration + +Flags that can be toggled, manually or when setting up ImGUI. + +![Debug Config menu](images/debug_menu_cfg.png) + +**** + +# Window options + +Window options. They do not extend to other windows and are not saved when closing the menu. Most of them are purely visual. + +![Debug Window options menu](images/debug_menu_options.png) + +**** diff --git a/docs/misc/devui/categories/game.md b/docs/misc/devui/categories/game.md new file mode 100644 index 00000000..513207c0 --- /dev/null +++ b/docs/misc/devui/categories/game.md @@ -0,0 +1,96 @@ +--- +title: Game +weight: 50 +--- + +# Game + +The Game tab is the fifth tab in the Developer UI menu. It contains different menus, covering game events, animations, player camera and sounds. + +![The Game tab](images/game.png) + +It consists of 5 window - **Game Events Debugger**, **Server Anim Debug**, **Stick Cam Debug UI**, **Client Anim Debug** and **Sound Emitter System Debug**. + +**** + +## Game Events Debugger + +Explanation + +### Event Definitions + +Explanation + +Values: +* Value + +![Game Events Debugger](images/game_event.png) + +### Event Log + +Explanation + +Values: +* Value + +![Game Event Log](images/game_event_log.png) + +**** + +## Server Anim Debug + +Explanation + +![Server Anim Debug](images/game_animsv.png) + +Values: +* Value + +![Server Anim Debug menu](images/game_animsv-menu.png) + +**** + +## Client Anim Debug + +Identical to the Server Anim Debug menu, except it hooks up on the client side. + +![Client Anim Debug](images/game_animcl.png) + +**** + +## Stick Cam Debug UI + +Explanation + +Values: +* Value + +![Server Anim Debug](images/game_cam.png) + +**** + +## Sound Emitter System Debug + +Explanation + +![Server Anim Debug](images/game_sound.png) + +### Sound List + +Explanation + +Values: +* Value + +![Server Anim Debug](images/game_sound-menu.png) + +### Sound Scripts + +Explanation + +Values: +* Value + +![Server Anim Debug](images/game_soundscr-menu.png) + +**** diff --git a/docs/misc/devui/categories/graphics.md b/docs/misc/devui/categories/graphics.md new file mode 100644 index 00000000..bbd932b6 --- /dev/null +++ b/docs/misc/devui/categories/graphics.md @@ -0,0 +1,194 @@ +--- +title: Graphics +weight: 20 +--- + +# Graphics + +The graphics tab is the most popular among all the other tab in the Developer UI, mainly because of its functionality. It contains everything needed to debug lighting, post processing effects and graphics in general. + +![Graphics tab](images/graphics.png) + +It consists of six windows - **Fog Config**, **[Clustered Light Inspector](/lighting/clustered/clustered_light_inspector)**, **Clustered Volumetrics Inspector**, **CSM Config**, **Post Processing** and **SoftBody Debug**. + +**** + +## Fog Config + +Fog Config allows to override the fog (if enabled) and set the custom fog values. Each value is presented as a slider, so changing, for example, fog radius is easy and visually convinient. Both general and skybox fogs can be overriden and changed. This menu is great for setting up fogs, as you can tweak it in realtime in-game easily. + +![Fog Config](images/graphics_fog2.png) + +**Fog Config has the following list of values:** + +* `Fog Override` overrides the existing fog. Without this enabled, you will not be able to change the fog using the Fog Config. +* `Enable Fog` enables the overriden fog. Unchecking this will turn off the fog, even if there is an active `env_fog_controller` in the map. +* `Enable Skybox` enables the skybox fog. +* `Max Density` is the density of the fog, from 0.0 to 100.0 (not 0.0 to 1.0 like in Hammer Editor!) +* `Far Z` changes the distance after which nothing will be rendered (player will not see anything further). It is recommended not to touch this slider. + +There are 3 values that are duplicated for the regular fog and the skybox fog: +* `Start` is a slider which sets the distance where the fog starts. +* `End` is a slider which sets the distance where the fog becomes completely opaque. +* `Color` is an RGB value which sets the color of the fog. + +![Fog Config Menu](images/graphics_fog.png) + +**** + +## Clustered Volumetrics Inspector + +Clustered Volumetrics Inspector allows setting the volumetrical value for all clustered lights globally, allowing to preview the new volumetric lighting on the maps that were compiled before the update. It does that by applying a pseudo-`obb_fogvolume` that covers the whole map, values of which are controlled by this menu. + +![CVI](images/graphics_vol.png) + +**Clustered Volumetrics Inspector has the following list of values:** + +* `Show Volume Bounds` - if an `obb_fogvolume` entity is present, it will show its bounds as a white box. +* `Show Only in Radius` will only show `obb_fogvolume` entities in a specified radius. This only affects the `obb_fogvolume` list below. +* `Default Fog Emissive Color` sets the emissive fog color for the whole map. Appears on top of the regular fog created by `env_fog_controller`, works similarly. +* `Default Fog Density` sets the density of the fog for the whole map, similarly to the `env_fog_controller`'s fog density. +* `Default Fog Scattering Color` sets the color for the volumetric rays that are casted by CSM and Clustered lighting. Useful only in maps that were compiled before the update. +* `Default Fog Phase` changes the starting / ending point of the volumetric rays. Only values from -1 to 1 are accepted. Default is 0 - no changes. Value of 0.5 cuts the volumetric rays in half, value of -0.5 makes only the ending half of the rays appear. + +![CVI Menu](images/graphics_vol-menu.png) + +If an `obb_fogvolume` entity is specified in the fogvolume list, the following properties will be able to be changed: +* `Position` of the fog entity, with the value being the center of the fog; +* `Angles` of the fog entity; +* `Half Size` of the fog, which is split into width, length and height; +* `Spheroid Volume`, which determines whether the fog should be drawn as a cube or as a sphere; +* `Fog Density`; +* `Emissive Color`, which is the color of the fog itself; +* `Scattering color`, which is the color of the volumetric rays that go through the fog's volume; +* `Fog Phase`, which is similar to the `Default Fog Phase` except it is applied individually to this `obb_fogvolume`. + +![CVI Fog Editor](images/graphics_vol_fog.png) + +**** + +## Cascade Shadow Mapping Config + +CSM Config allows toggling and changing the rotation of the light casted by `env_cascade_light`, as well as capturing the current "sharpness" of all the shadows produced by this entity *(the way CSM works is that, the closer the shadows are to the player, the sharper they get)* and changing the shadow distance. + +> [!BUG] +> +> DEVS PLEASE NOTICE! +> +> .gif images cannot be previewed. They hold the first frame. + +![CSM Config](images/graphics_csm.gif) + +The menu has the following values: +* `CSM Enabled` toggles the CSM, if present; +* `Max Shadow Dist` changes the shadow distance, higher values are blurier; +* `Capture State` / `Clear State` captures and clears the state of each shadow produced; +* `Rotation Override` toggles the ability to change the `env_cascade_light` entity's angles by using the `X`, `Y` and `Z` bars below. + +![CSM Config Menu](images/graphics_csm.png) + +**** + +## Post Processing + +This menu controls post-processing options, similarly to `env_tonemap_controller`, but without needing to spawn and give inputs to one. All the values are present as sliders, allowing a precuse and convenient change of all the post-processing options. + +**There are 3 submenus present:** + +### Depth of Field + +Depth of Field menu allows setting the DoF effect - blurring the view after a certain distance, or before a certain distance. This cinematic effect recreates how the human eye focuses - focusing on objects that are far away makes the objects that are close to the eye blur, and counterwise. + +The menu has the following values: +* `DoF Override` overrides the current DoF values, if those were set +* `Slider Range` changes the maximum range for the sliders below; +* `Near Blur Depth` changes the minimum distance of the near blur effect *(blur will be applied to objects if they are this close to the player)* +* `Near Focus Depth` changes the maximum distance of the near blur effect +* `Far Focus Depth` changes the maximum distance of the far blur effect *(blur will be applied to objects if they are this far from the player)* +* `Far Blur Depth` changes the minimum distance of the far blur effect +* `Near Blur Radius` changes the intensity of the near blur effect +* `Far Blur Radius` changes the intensity of the far blur effect +* `DoF Quality` changes the method used for DoF effect. 0 means no DoF, 1 is default, 2 is pretty much identical. +* `Copy Settings` copies all the DoF settings to the clipboard as console commands. + +> [!NOTE] +> Example of the output of the `Copy Settings` button: +> +> `mat_dof_override 0;mat_dof_near_blur_depth 168.099;mat_dof_near_focus_depth 277.157;mat_dof_far_focus_depth 271.157;mat_dof_far_blur_depth 1000.0;mat_dof_near_blur_radius 10.0;mat_dof_far_blur_radius 5.0;mat_dof_quality 1;` + +* `Copy All Settings` copies all the settings related to Motion Blur effect. + +> [!NOTE] +> Example of the output of the `Copy All Settings` button: +> +> `mat_motion_blur_enabled 1;mat_motion_blur_forward_enabled 1;mat_motion_blur_falling_min 8;mat_motion_blur_falling_max 20.0;mat_motion_blur_falling_intensity 1.0;mat_motion_blur_roll_intensity 1.0;mat_motion_blur_rotation_intensity 1.0;mat_motion_blur_strength 1.0;` + +![Post Processing DOF](images/graphics_pp_dof.png) +![Post Processing DOF](images/graphics_pp_dof-menu.png) + +### Motion Blur + +Motion Blur menu allows controlling the motion blur effect. There are two types of Motion Blurs. The first one is applied upon camera movement, smoothing the image. The second one is applied upon player movement, blurring the edges of the screen when the player moves fast. + +The menu has the following values: +* `Blur Enabled` enables and overrides the Motion Blur effect that is applied on camera movement. +* `Blur Forward Enabled` enables and overrides the Motion Blur effect that on player movement. +* `Blur Falling Min` sets the minimum value at which the player movement Motion Blur will start to appear. +* `Blur Falling Min` sets the maximum value at which the player movement Motion Blur will be fully visible. +* `Blur Falling Intensity` sets the intensity of the effect. High values make the edges appear extremely blurry. +* `Blur Roll Intensity` sets the intensity of the roll effect for the Motion Effect used for camera movement. +* `Blur Rotation Intensity` changes the intensity of the effect. +* `Blur Strenght` sets the strenght (lenght) of the blur. +* `Copy Settings` copies all the Motion Blur settings to the clipboard as console commands. + +> [!NOTE] +> Example of the output of the `Copy Settings` button: +> +> `mat_motion_blur_enabled 1;mat_motion_blur_forward_enabled 1;mat_motion_blur_falling_min 0;mat_motion_blur_falling_max 0.529;mat_motion_blur_falling_intensity 0;mat_motion_blur_roll_intensity 1.058;mat_motion_blur_rotation_intensity 1.587;mat_motion_blur_strength 1.851;` + +* `Copy All Settings` is identical to the `Copy Settings` button. + +High values create unrealistic blur. + +![Post Processing Motion Blur](images/graphics_pp_mb-menu.png) + +### Bloom + +Bloom menu allows to control the bloom effect, which brightens the edges of bright pixels, creating a cinematic shine effect. Additionaly, this menu allows to control the Autoexposure effect, which brightens / darkens the overall image based on where the player is looking (also know as the HDR effect). + +The menu has the following values: +* `Force Bloom` overrides the bloom effect. +* `Disable Bloom` disables the bloom completely. +* `Bloom Scale` scales the bloom effect. +* `Bloom Scalefactor Scalar` scales the scale of the bloom effect. +* `Bloom Rate` sets the time it takes for the bloom changes to occur. Values are accepted from 0 to 1, where 1 is exactly a second. +* `Autoexposure Max` sets the maximum brightness for the autoexposure effect. +* `Autoexposure Max Multiplier` scales the maximum brightness value for the autoexposure effect. +* `Autoexposure Min` sets the minimum brightness for the autoexposure effect. +* `Uncap Autoexposure` uncaps autoexposure, making everything appear bright. +* `Accelerate Exposure Down` sets the acceleration percentage for the autoexposure to darken. Higher values make the autoexposure effect disappear faster. +* `Copy Settings` copies all the Bloom & Autoexposure settings to the clipboard as console commands. + +> [!NOTE] +> Example of the output of the `Copy Settings` button: +> +> `mat_bloomscale 0.827;mat_bloomamount_rate 1;mat_dynamic_tonemapping 1;mat_autoexposure_max 0.837;mat_autoexposure_max_multiplier 0.899;mat_autoexposure_min 0.196;mat_show_histogram 0;mat_hdr_uncapexposure 0;mat_force_bloom 0;mat_accelerate_adjust_exposure_down 6.719;mat_non_hdr_bloom_scalefactor .3;mat_bloom_scalefactor_scalar 0.826;` + +* `Copy All Settings` copies all the settings related to Motion Blur effect. + +![Post Processing Bloom](images/graphics_pp_bloom.png) +![Post Processing Bloom Menu](images/graphics_pp_bloom-menu.png) + +**** + +## SoftBody Debug + +SoftBody Debug helps with debugging models that use the new cloth system. + +SoftBody is a system that allows models to have cloth-like parts. It simulates cloth physics and softbody physics on the model. To make a model compile as a cloth / softbody object, add `$cloth` to the model's .qc file before compiling it. + +![SoftBody Debug on cloth model](images/graphics_soft2.png) + +![SoftBody Debug Menu](images/graphics_soft.png) + +**** diff --git a/docs/misc/devui/categories/images/debug.png b/docs/misc/devui/categories/images/debug.png new file mode 100644 index 00000000..c3e5e74f Binary files /dev/null and b/docs/misc/devui/categories/images/debug.png differ diff --git a/docs/misc/devui/categories/images/debug_menu.png b/docs/misc/devui/categories/images/debug_menu.png new file mode 100644 index 00000000..27c9f431 Binary files /dev/null and b/docs/misc/devui/categories/images/debug_menu.png differ diff --git a/docs/misc/devui/categories/images/debug_menu_cfg.png b/docs/misc/devui/categories/images/debug_menu_cfg.png new file mode 100644 index 00000000..8e3e9c39 Binary files /dev/null and b/docs/misc/devui/categories/images/debug_menu_cfg.png differ diff --git a/docs/misc/devui/categories/images/debug_menu_help.png b/docs/misc/devui/categories/images/debug_menu_help.png new file mode 100644 index 00000000..036fdce3 Binary files /dev/null and b/docs/misc/devui/categories/images/debug_menu_help.png differ diff --git a/docs/misc/devui/categories/images/debug_menu_options.png b/docs/misc/devui/categories/images/debug_menu_options.png new file mode 100644 index 00000000..7874bc52 Binary files /dev/null and b/docs/misc/devui/categories/images/debug_menu_options.png differ diff --git a/docs/misc/devui/categories/images/debug_metr.png b/docs/misc/devui/categories/images/debug_metr.png new file mode 100644 index 00000000..7d170a84 Binary files /dev/null and b/docs/misc/devui/categories/images/debug_metr.png differ diff --git a/docs/misc/devui/categories/images/devui.png b/docs/misc/devui/categories/images/devui.png new file mode 100644 index 00000000..c1673b28 Binary files /dev/null and b/docs/misc/devui/categories/images/devui.png differ diff --git a/docs/misc/devui/categories/images/game.png b/docs/misc/devui/categories/images/game.png new file mode 100644 index 00000000..c4fe896f Binary files /dev/null and b/docs/misc/devui/categories/images/game.png differ diff --git a/docs/misc/devui/categories/images/game_animcl.png b/docs/misc/devui/categories/images/game_animcl.png new file mode 100644 index 00000000..89f2c1cf Binary files /dev/null and b/docs/misc/devui/categories/images/game_animcl.png differ diff --git a/docs/misc/devui/categories/images/game_animsv-menu.png b/docs/misc/devui/categories/images/game_animsv-menu.png new file mode 100644 index 00000000..a3cd433f Binary files /dev/null and b/docs/misc/devui/categories/images/game_animsv-menu.png differ diff --git a/docs/misc/devui/categories/images/game_animsv.png b/docs/misc/devui/categories/images/game_animsv.png new file mode 100644 index 00000000..f7cd88c1 Binary files /dev/null and b/docs/misc/devui/categories/images/game_animsv.png differ diff --git a/docs/misc/devui/categories/images/game_cam.png b/docs/misc/devui/categories/images/game_cam.png new file mode 100644 index 00000000..77d9ceb0 Binary files /dev/null and b/docs/misc/devui/categories/images/game_cam.png differ diff --git a/docs/misc/devui/categories/images/game_event.png b/docs/misc/devui/categories/images/game_event.png new file mode 100644 index 00000000..6803fb21 Binary files /dev/null and b/docs/misc/devui/categories/images/game_event.png differ diff --git a/docs/misc/devui/categories/images/game_event_log.png b/docs/misc/devui/categories/images/game_event_log.png new file mode 100644 index 00000000..d801bdca Binary files /dev/null and b/docs/misc/devui/categories/images/game_event_log.png differ diff --git a/docs/misc/devui/categories/images/game_sound-menu.png b/docs/misc/devui/categories/images/game_sound-menu.png new file mode 100644 index 00000000..c0ae5452 Binary files /dev/null and b/docs/misc/devui/categories/images/game_sound-menu.png differ diff --git a/docs/misc/devui/categories/images/game_sound.png b/docs/misc/devui/categories/images/game_sound.png new file mode 100644 index 00000000..5b22be69 Binary files /dev/null and b/docs/misc/devui/categories/images/game_sound.png differ diff --git a/docs/misc/devui/categories/images/game_soundscr-menu.png b/docs/misc/devui/categories/images/game_soundscr-menu.png new file mode 100644 index 00000000..42fecbed Binary files /dev/null and b/docs/misc/devui/categories/images/game_soundscr-menu.png differ diff --git a/docs/misc/devui/categories/images/graphics.png b/docs/misc/devui/categories/images/graphics.png new file mode 100644 index 00000000..4321b51b Binary files /dev/null and b/docs/misc/devui/categories/images/graphics.png differ diff --git a/docs/misc/devui/categories/images/graphics_csm.gif b/docs/misc/devui/categories/images/graphics_csm.gif new file mode 100644 index 00000000..217a7fdb Binary files /dev/null and b/docs/misc/devui/categories/images/graphics_csm.gif differ diff --git a/docs/misc/devui/categories/images/graphics_csm.png b/docs/misc/devui/categories/images/graphics_csm.png new file mode 100644 index 00000000..b98c76cb Binary files /dev/null and b/docs/misc/devui/categories/images/graphics_csm.png differ diff --git a/docs/misc/devui/categories/images/graphics_fog.png b/docs/misc/devui/categories/images/graphics_fog.png new file mode 100644 index 00000000..43bfb276 Binary files /dev/null and b/docs/misc/devui/categories/images/graphics_fog.png differ diff --git a/docs/misc/devui/categories/images/graphics_fog2.png b/docs/misc/devui/categories/images/graphics_fog2.png new file mode 100644 index 00000000..690be285 Binary files /dev/null and b/docs/misc/devui/categories/images/graphics_fog2.png differ diff --git a/docs/misc/devui/categories/images/graphics_pp_bloom-menu.png b/docs/misc/devui/categories/images/graphics_pp_bloom-menu.png new file mode 100644 index 00000000..cc0137c4 Binary files /dev/null and b/docs/misc/devui/categories/images/graphics_pp_bloom-menu.png differ diff --git a/docs/misc/devui/categories/images/graphics_pp_bloom.png b/docs/misc/devui/categories/images/graphics_pp_bloom.png new file mode 100644 index 00000000..fd40435d Binary files /dev/null and b/docs/misc/devui/categories/images/graphics_pp_bloom.png differ diff --git a/docs/misc/devui/categories/images/graphics_pp_dof-menu.png b/docs/misc/devui/categories/images/graphics_pp_dof-menu.png new file mode 100644 index 00000000..15a6b063 Binary files /dev/null and b/docs/misc/devui/categories/images/graphics_pp_dof-menu.png differ diff --git a/docs/misc/devui/categories/images/graphics_pp_mb-menu.png b/docs/misc/devui/categories/images/graphics_pp_mb-menu.png new file mode 100644 index 00000000..9513e6c5 Binary files /dev/null and b/docs/misc/devui/categories/images/graphics_pp_mb-menu.png differ diff --git a/docs/misc/devui/categories/images/graphics_soft.png b/docs/misc/devui/categories/images/graphics_soft.png new file mode 100644 index 00000000..baf55358 Binary files /dev/null and b/docs/misc/devui/categories/images/graphics_soft.png differ diff --git a/docs/misc/devui/categories/images/graphics_soft2.png b/docs/misc/devui/categories/images/graphics_soft2.png new file mode 100644 index 00000000..f82212cb Binary files /dev/null and b/docs/misc/devui/categories/images/graphics_soft2.png differ diff --git a/docs/misc/devui/categories/images/graphics_vol-menu.png b/docs/misc/devui/categories/images/graphics_vol-menu.png new file mode 100644 index 00000000..2e127eba Binary files /dev/null and b/docs/misc/devui/categories/images/graphics_vol-menu.png differ diff --git a/docs/misc/devui/categories/images/graphics_vol.png b/docs/misc/devui/categories/images/graphics_vol.png new file mode 100644 index 00000000..007988e7 Binary files /dev/null and b/docs/misc/devui/categories/images/graphics_vol.png differ diff --git a/docs/misc/devui/categories/images/graphics_vol_fog.png b/docs/misc/devui/categories/images/graphics_vol_fog.png new file mode 100644 index 00000000..684abe25 Binary files /dev/null and b/docs/misc/devui/categories/images/graphics_vol_fog.png differ diff --git a/docs/misc/devui/categories/images/map.png b/docs/misc/devui/categories/images/map.png new file mode 100644 index 00000000..e9395cd8 Binary files /dev/null and b/docs/misc/devui/categories/images/map.png differ diff --git a/docs/misc/devui/categories/images/matinsp_menu.png b/docs/misc/devui/categories/images/matinsp_menu.png new file mode 100644 index 00000000..8f03a7ed Binary files /dev/null and b/docs/misc/devui/categories/images/matinsp_menu.png differ diff --git a/docs/misc/devui/categories/images/matinsp_properties.png b/docs/misc/devui/categories/images/matinsp_properties.png new file mode 100644 index 00000000..d65be088 Binary files /dev/null and b/docs/misc/devui/categories/images/matinsp_properties.png differ diff --git a/docs/misc/devui/categories/images/prof_all.png b/docs/misc/devui/categories/images/prof_all.png new file mode 100644 index 00000000..4d3d1b48 Binary files /dev/null and b/docs/misc/devui/categories/images/prof_all.png differ diff --git a/docs/misc/devui/categories/images/prof_misc.png b/docs/misc/devui/categories/images/prof_misc.png new file mode 100644 index 00000000..887934e1 Binary files /dev/null and b/docs/misc/devui/categories/images/prof_misc.png differ diff --git a/docs/misc/devui/categories/images/prof_tbudget1-menu.png b/docs/misc/devui/categories/images/prof_tbudget1-menu.png new file mode 100644 index 00000000..067a5900 Binary files /dev/null and b/docs/misc/devui/categories/images/prof_tbudget1-menu.png differ diff --git a/docs/misc/devui/categories/images/prof_tbudget1.png b/docs/misc/devui/categories/images/prof_tbudget1.png new file mode 100644 index 00000000..05ea74a3 Binary files /dev/null and b/docs/misc/devui/categories/images/prof_tbudget1.png differ diff --git a/docs/misc/devui/categories/images/prof_tbudget2.png b/docs/misc/devui/categories/images/prof_tbudget2.png new file mode 100644 index 00000000..8cbf0c25 Binary files /dev/null and b/docs/misc/devui/categories/images/prof_tbudget2.png differ diff --git a/docs/misc/devui/categories/images/prof_tbudgetglob-menu.png b/docs/misc/devui/categories/images/prof_tbudgetglob-menu.png new file mode 100644 index 00000000..7c41c4ff Binary files /dev/null and b/docs/misc/devui/categories/images/prof_tbudgetglob-menu.png differ diff --git a/docs/misc/devui/categories/images/prof_tbudgetglob.png b/docs/misc/devui/categories/images/prof_tbudgetglob.png new file mode 100644 index 00000000..b8072461 Binary files /dev/null and b/docs/misc/devui/categories/images/prof_tbudgetglob.png differ diff --git a/docs/misc/devui/categories/images/prof_vbudget.png b/docs/misc/devui/categories/images/prof_vbudget.png new file mode 100644 index 00000000..bffa881d Binary files /dev/null and b/docs/misc/devui/categories/images/prof_vbudget.png differ diff --git a/docs/misc/devui/categories/images/prof_vcount-menu.png b/docs/misc/devui/categories/images/prof_vcount-menu.png new file mode 100644 index 00000000..6e1091df Binary files /dev/null and b/docs/misc/devui/categories/images/prof_vcount-menu.png differ diff --git a/docs/misc/devui/categories/images/prof_vcount.png b/docs/misc/devui/categories/images/prof_vcount.png new file mode 100644 index 00000000..b2c39539 Binary files /dev/null and b/docs/misc/devui/categories/images/prof_vcount.png differ diff --git a/docs/misc/devui/categories/images/prof_vreport.png b/docs/misc/devui/categories/images/prof_vreport.png new file mode 100644 index 00000000..67cc99ff Binary files /dev/null and b/docs/misc/devui/categories/images/prof_vreport.png differ diff --git a/docs/misc/devui/categories/images/prof_vreport_gen.png b/docs/misc/devui/categories/images/prof_vreport_gen.png new file mode 100644 index 00000000..b11542a9 Binary files /dev/null and b/docs/misc/devui/categories/images/prof_vreport_gen.png differ diff --git a/docs/misc/devui/categories/images/prof_vtree-menu.png b/docs/misc/devui/categories/images/prof_vtree-menu.png new file mode 100644 index 00000000..45ae829b Binary files /dev/null and b/docs/misc/devui/categories/images/prof_vtree-menu.png differ diff --git a/docs/misc/devui/categories/images/prof_vtree.png b/docs/misc/devui/categories/images/prof_vtree.png new file mode 100644 index 00000000..e3a67fff Binary files /dev/null and b/docs/misc/devui/categories/images/prof_vtree.png differ diff --git a/docs/misc/devui/categories/images/prof_vui.png b/docs/misc/devui/categories/images/prof_vui.png new file mode 100644 index 00000000..b5968152 Binary files /dev/null and b/docs/misc/devui/categories/images/prof_vui.png differ diff --git a/docs/misc/devui/categories/images/profiler.png b/docs/misc/devui/categories/images/profiler.png new file mode 100644 index 00000000..b9b0902a Binary files /dev/null and b/docs/misc/devui/categories/images/profiler.png differ diff --git a/docs/misc/devui/categories/images/script.png b/docs/misc/devui/categories/images/script.png new file mode 100644 index 00000000..1e8598f6 Binary files /dev/null and b/docs/misc/devui/categories/images/script.png differ diff --git a/docs/misc/devui/categories/images/script_consoles.png b/docs/misc/devui/categories/images/script_consoles.png new file mode 100644 index 00000000..38ad09f1 Binary files /dev/null and b/docs/misc/devui/categories/images/script_consoles.png differ diff --git a/docs/misc/devui/categories/images/script_modules.png b/docs/misc/devui/categories/images/script_modules.png new file mode 100644 index 00000000..b27f3a9e Binary files /dev/null and b/docs/misc/devui/categories/images/script_modules.png differ diff --git a/docs/misc/devui/categories/images/script_modules2.png b/docs/misc/devui/categories/images/script_modules2.png new file mode 100644 index 00000000..3d7a3f5a Binary files /dev/null and b/docs/misc/devui/categories/images/script_modules2.png differ diff --git a/docs/misc/devui/categories/images/script_output.png b/docs/misc/devui/categories/images/script_output.png new file mode 100644 index 00000000..ae7c92a2 Binary files /dev/null and b/docs/misc/devui/categories/images/script_output.png differ diff --git a/docs/misc/devui/categories/images/sets.png b/docs/misc/devui/categories/images/sets.png new file mode 100644 index 00000000..03e7c30f Binary files /dev/null and b/docs/misc/devui/categories/images/sets.png differ diff --git a/docs/misc/devui/categories/images/sets_theme1.png b/docs/misc/devui/categories/images/sets_theme1.png new file mode 100644 index 00000000..96b00da9 Binary files /dev/null and b/docs/misc/devui/categories/images/sets_theme1.png differ diff --git a/docs/misc/devui/categories/images/sets_theme2.png b/docs/misc/devui/categories/images/sets_theme2.png new file mode 100644 index 00000000..e469285e Binary files /dev/null and b/docs/misc/devui/categories/images/sets_theme2.png differ diff --git a/docs/misc/devui/categories/images/sets_theme3.png b/docs/misc/devui/categories/images/sets_theme3.png new file mode 100644 index 00000000..56ff6a7d Binary files /dev/null and b/docs/misc/devui/categories/images/sets_theme3.png differ diff --git a/docs/misc/devui/categories/images/windows.png b/docs/misc/devui/categories/images/windows.png new file mode 100644 index 00000000..2d0288a9 Binary files /dev/null and b/docs/misc/devui/categories/images/windows.png differ diff --git a/docs/misc/devui/categories/images/windows_addonlist.png b/docs/misc/devui/categories/images/windows_addonlist.png new file mode 100644 index 00000000..f7a03396 Binary files /dev/null and b/docs/misc/devui/categories/images/windows_addonlist.png differ diff --git a/docs/misc/devui/categories/images/windows_dm.png b/docs/misc/devui/categories/images/windows_dm.png new file mode 100644 index 00000000..a0e59782 Binary files /dev/null and b/docs/misc/devui/categories/images/windows_dm.png differ diff --git a/docs/misc/devui/categories/images/windows_dm_ai1.png b/docs/misc/devui/categories/images/windows_dm_ai1.png new file mode 100644 index 00000000..7ebcfa59 Binary files /dev/null and b/docs/misc/devui/categories/images/windows_dm_ai1.png differ diff --git a/docs/misc/devui/categories/images/windows_dm_ai2.png b/docs/misc/devui/categories/images/windows_dm_ai2.png new file mode 100644 index 00000000..dd057e24 Binary files /dev/null and b/docs/misc/devui/categories/images/windows_dm_ai2.png differ diff --git a/docs/misc/devui/categories/images/windows_dm_ent1.png b/docs/misc/devui/categories/images/windows_dm_ent1.png new file mode 100644 index 00000000..8eab21ed Binary files /dev/null and b/docs/misc/devui/categories/images/windows_dm_ent1.png differ diff --git a/docs/misc/devui/categories/images/windows_dm_ent2.png b/docs/misc/devui/categories/images/windows_dm_ent2.png new file mode 100644 index 00000000..97204c86 Binary files /dev/null and b/docs/misc/devui/categories/images/windows_dm_ent2.png differ diff --git a/docs/misc/devui/categories/images/windows_dm_matsys.png b/docs/misc/devui/categories/images/windows_dm_matsys.png new file mode 100644 index 00000000..3381b6d0 Binary files /dev/null and b/docs/misc/devui/categories/images/windows_dm_matsys.png differ diff --git a/docs/misc/devui/categories/images/windows_dm_matsys_depth.png b/docs/misc/devui/categories/images/windows_dm_matsys_depth.png new file mode 100644 index 00000000..eed8f6f0 Binary files /dev/null and b/docs/misc/devui/categories/images/windows_dm_matsys_depth.png differ diff --git a/docs/misc/devui/categories/images/windows_dm_matsys_fb2.png b/docs/misc/devui/categories/images/windows_dm_matsys_fb2.png new file mode 100644 index 00000000..c82abb0e Binary files /dev/null and b/docs/misc/devui/categories/images/windows_dm_matsys_fb2.png differ diff --git a/docs/misc/devui/categories/images/windows_dm_matsys_luxels.png b/docs/misc/devui/categories/images/windows_dm_matsys_luxels.png new file mode 100644 index 00000000..48ffdc05 Binary files /dev/null and b/docs/misc/devui/categories/images/windows_dm_matsys_luxels.png differ diff --git a/docs/misc/devui/categories/images/windows_dm_matsys_n.png b/docs/misc/devui/categories/images/windows_dm_matsys_n.png new file mode 100644 index 00000000..0621c780 Binary files /dev/null and b/docs/misc/devui/categories/images/windows_dm_matsys_n.png differ diff --git a/docs/misc/devui/categories/images/windows_dm_matsys_vis.png b/docs/misc/devui/categories/images/windows_dm_matsys_vis.png new file mode 100644 index 00000000..ec75afdd Binary files /dev/null and b/docs/misc/devui/categories/images/windows_dm_matsys_vis.png differ diff --git a/docs/misc/devui/categories/images/windows_dm_matsys_wf.png b/docs/misc/devui/categories/images/windows_dm_matsys_wf.png new file mode 100644 index 00000000..35bcfce3 Binary files /dev/null and b/docs/misc/devui/categories/images/windows_dm_matsys_wf.png differ diff --git a/docs/misc/devui/categories/images/windows_dm_perf.png b/docs/misc/devui/categories/images/windows_dm_perf.png new file mode 100644 index 00000000..bb85d4a6 Binary files /dev/null and b/docs/misc/devui/categories/images/windows_dm_perf.png differ diff --git a/docs/misc/devui/categories/images/windows_dm_render.png b/docs/misc/devui/categories/images/windows_dm_render.png new file mode 100644 index 00000000..667a14db Binary files /dev/null and b/docs/misc/devui/categories/images/windows_dm_render.png differ diff --git a/docs/misc/devui/categories/map.md b/docs/misc/devui/categories/map.md new file mode 100644 index 00000000..5ab4f5c0 --- /dev/null +++ b/docs/misc/devui/categories/map.md @@ -0,0 +1,27 @@ +--- +title: Map +weight: 40 +--- + +# Why this tab only has one menu? This thing could've had so much potential! +# Entity list, amount of this and that, time spent on server, ent_fire simplifier, etc, etc! +# Just add that! + +So, this tab is... uhh... hmm... welp... so useful! + +![Map Tab](images/map.png) + +This tab consists of only one menu - **Material Inspector.** + +## Material Inspector + +This menu is actualy sick ngl. It allows setting material parameters in realtime in-game. I mean, what? Why I've never seen it before??? + +![Material Inspector](images/matinsp_properties.png) + +Values: +* Value + +![Material Inspector Menu](images/matinsp_menu.png) + + diff --git a/docs/misc/devui/categories/meta.json b/docs/misc/devui/categories/meta.json new file mode 100644 index 00000000..a34c8f29 --- /dev/null +++ b/docs/misc/devui/categories/meta.json @@ -0,0 +1,3 @@ +{ + "title": "Categories" +} diff --git a/docs/misc/devui/categories/profiler.md b/docs/misc/devui/categories/profiler.md new file mode 100644 index 00000000..8cde2733 --- /dev/null +++ b/docs/misc/devui/categories/profiler.md @@ -0,0 +1,232 @@ +--- +title: Profiler +weight: 30 +--- + +> There are 2 screenshots - one showing texture budget with the whole map visible, and the second showing the corner. TOTAL GRAPH MUST BE SHOWN BIGGER. The difference is huge. + +> In the budgets, show that the values are map-specific. Also don't forget to describe each of them. + +# 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 optimising maps, materials and game events. + +![All the menus of the Profiler tab](images/prof_all.png) + +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 Bugdet 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 optimisations. + +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. + +![Texture Budget Per-Frame when looking at a heavy map](images/prof_tbudget1.png) + +![Texture Budget Per-Frame when looking at a wall](images/prof_tbudget2.png) + +There is a total of 27 graphs: +* `Total` shows the total amount of GPU usage as a histograph +* `RenderTargets` shows ... +* `DepthBuffer` shows ... +* `Constant Buffers` shows ... +* `Constant Buffers GPU Upload` shows ... +* `Other Verts` shows ... +* `Other Textures` shows ... +* `CubeMap Textures` shows the memory usage taken by cubemap textures. +* `Constant Buffer` shows the memory usage taken by lightmaps. +* `Constant Buffer` shows the memory amount taken by buffered textures. +* `VGUI textures` shows the memory usage taken by VGUI elements. +* `Decal textures` shows the memory usage taken by decals and overlays. +* `Unaccounted textures` shows memory usage taken by ... +* `World textures` shows the memory usage taken by textures used on world geometry. +* `StatisProp textures` shows the memory usage taken by textures used on static models. +* `Model Verts` shows memory usage taken by ... +* `Model textures` shows the memory usage taken by textures used on dynamic and physics models. +* `Precached` shows the memory amount taken by precached textures. +* `SkyBox textures` shows the memory usage taken by skybox textures (applies to 3D skybox as well) +* `World Verts` shows ... +* `Particle textures` shows the memory usage taken by particles. +* `Lighting Verts` shows ... +* `Structured Buffers GPU Upload` shows how much space individual buffers take before being sent to the GPU. +* `Structured Buffers` shows how much space buffers take overall. +* `RV Structured Buffers` shows ... +* `Static Indices` shows ... +* `ClientEffect textures` shows the memory usage taken by screen effects (lens circle, hints, etc) + +![Texture Budget Per-Frame menu](images/prof_tbudget1-menu.png) + +**** + +## Texture Budget Global + +Texture Bugdet 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 optimising texture usage, and when writing minimal requirements. + +![Texture Budget Global](images/prof_tbudgetglob.png) + +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 Buffer` shows ... +* `vertex shader change` shows the amount of calls telling to update model textures. +* `pixel shader change` shows the amount of calls telling to update brush textures. +* `DrawIndexedPrimitive` shows ... +* `numPrimitives` shows the total amount of ... +* `DrawCalls` shows the amount of calls telling GPU to draw something. +* `compute shader change` shows ... +* `push build view` shows ... +* `max build view` shows ... +* `Update Structured Buffer` shows the amount of updates of the structured buffer. Always 4. + +![Misc Graphics Tab](images/prof_misc.png) + +**** + +## 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 optimising that! + +> [!CAUTION] +> 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 is a total of- HOW MANY??? HOLY SHIT +* `Unaccounted` shows the amount of time it takes to draw unaccounted textures. +* `Sleep` shows ... +* `World Rendering` shows the amount of time it takes to draw world geometry. +* `Displacement Rendering` shows the amount of time it takes to draw displacements. +* `Game` shows the amount of time it takes to draw ... +* `Player` shows the amount of time it takes to draw the playermodel and/or the visibility rays. +* `NPCs` shows the amount of time it takes to draw NPCs. +* `Server Animation` shows the amount of time it takes to draw server-side model animations. +* `Client Animation` shows the amount of time it takes to draw client-side model animations. +* `Physics` shows the amount of time it takes to draw vphysics interactions. +* `Static Prop Rendering` shows the amount of time it takes to draw static props. +* `Other Model Rendering` shows the amount of time it takes to draw non-static props. +* `Fast Path Model Rendering` shows the amount of time it takes to draw ... +* `Light Cache` shows the amount of time it takes to cache lights. +* `Brush Model Rendering` shows the amount of time it takes to render brush entities. +* `Shadow Rendering` shows the amount of time it takes to render shadows *(WHICH ONES??? 0.004 MS)* +* `Detail Prop Rendering` shows the amount of time it takes to draw detail props. +* `Particle/Effect Rendering` shows the amount of time it takes to draw particles and other particle-like effects (sparks, bullet shots, etc). +* `Ropes` shows the amount of time it takes to draw ropes. +* `Dynamic Light Rendering` is obsolete, supposed to draw render-to-texture shadows, but those were removed. +* `Networking` shows the amount of time it takes to ... +* `Sound` shows the amount of time it takes to ... +* `VGUI` shows the amount of time it takes to draw VGUI elements. +* `FileSystem` shows the amount of time it takes to draw the filesystem, if any is on-screen. +* `Prediction` shows the amount of time it takes to draw physics prediction, if the debug tool is enabled. +* `Interpolation` shows the amount of time it takes to ... +* `Swap Bullets` shows the amount of time it takes to ... +* `Occlusion` shows the amount of time it takes to ... *(NOT XeGTAO!!)* +* `Overlays` shows the amount of time it takes to draw decals and overlays. +* `Tools` shows the amount of time it takes to draw the engine tools (-tools launch option) +* `Texture Cache` shows the amount of time it takes to cache textures (always shows 0 ms) +* `Replay` shows the amount of time it takes to draw the replay of CS:GO demos. What a leftover! +* `Script System` shows the amount of time it takes to calculate the AS rendering script system. +* `VGUI Simulate` shows the amount of time it takes to simulate VGUI elements on-screen (for hints). +* `Client Simulation` shows the amount of time it takes to calculate the client-side rendering calculations. +* `Particle Simulation` shows the amount of time it takes to calculate the particles. +* `CViewRender::Render` shows the amount of time it takes to ... +* `World Render Setup` shows the amount of time it takes to ... +* `SetupRenderablesList` shows the amount of time it takes to ... +* `DrawPortalsUsingStencils` shows the amount of time it takes to ... +* `Flashlight Shadows` shows the amount of time it takes to render player's flashlight (impulse 103) +* `Fast Path Brush Rendering` shows the amount of time it takes to ... *(ABSURDLY HEAVY!!! >15 MS)* +* `DrawEarlyZPortals` shows the amount of time it takes to calculate the relative view posisiton between the player and the portal. +* `PortalGhosts` shows the amount of time it takes to draw the portal ghosts. +* `DrawSimplePortalMesh` shows the amount of time it takes to draw the simple mesh in the portal view. +* `XeGTAO` shows the amount of time it takes to draw the new XeGT Ambient Occlusion. +* `DrawTranslucentEntities` shows the amount of time it takes to draw translucent entities. +* `Cvar Find` shows the amount of time it takes to ... +* `ChromeHTML` shows the amount of time it takes to draw the HTML web-page, if any is visible. +* `Paintblob` shows the amount of time it takes to draw a paint blob. +* `GameInstructor` shows the amount of time it takes to draw ... *(i genuenly forgor, are those hints or smth else)* +* `Input` shows the amount of time it takes to ... +* `Steam` shows the amount of time it takes to render the Steam overlay. +* `paint` shows the amount of time it takes to draw paint. +* `CBaseEntity::EmitSound` shows the amount of time it takes to calculate the visual ambiance of the sound. + +![VProf Budget](images/prof_vbudget.png) + +**** + +## 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 Recording` starts the recording. All the events are stored in RAM until the recording stops. +* `Stop Recording` stops the recording. +* `Generate Report` writes all the values from RAM to the text file and opens the VProf Generated Report window. +* `Save To File` saves the text file. +* `Output Path` is the output path of the text file. + +The menu has the following filters: + +* `Budget Group` is a dropdown filter, allows to select a specific budget filter from the VProf Budget list. +* `Summary` ... +* `Hierarchy` ... +* `List by Time` lists the events by their date +* `List By Time (< Children)` ... +* `List by Avg Time` lists the events by the average time they took. +* `List by Avg Time (< Children)` ... +* `List by Peak Time` lists the events from the longest to the shortest. +* `List by Avg Time (< Children)` ... +* `List by Peak Over Avg` ... +* `List Top Items Only` lists only the top items, ignoring minor events + +![VProf Report Generator](images/prof_vreport.png) + +### 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 Generated Report](images/prof_vreport_gen.png) + +**** + +## 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 Counters](images/prof_vcount.png) + +![VProf Counters Menu](images/prof_vcount-menu.png) + +**** + +## 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? + +> [!BUG] +> Pressing `Stop Recording` button without pressing `Start Recording` beforehand starts recording with no way to stop it. Eventually the numbers overfill the RAM! + +![VProf Tree](images/prof_vtree.png) + +This window contains the list of all the events, and the following buttons: +* `Start Recording` begins recording engine events. +* `Stop Recording` stops recording engine events. + +![VProf Tree menu](images/prof_vtree-menu.png) + +**** + +## 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. + +![VProf Tree](images/prof_vui.png) + +**** diff --git a/docs/misc/devui/categories/scripting.md b/docs/misc/devui/categories/scripting.md new file mode 100644 index 00000000..74edd692 --- /dev/null +++ b/docs/misc/devui/categories/scripting.md @@ -0,0 +1,44 @@ +--- +title: Scripting +weight: 60 +--- + +After a deep research, it turned out this whole category is related to Angelscript. + +You cannot do anything vscript-ish with it. + +ㅤ + +ㅤ + +ㅤ + +ㅤ + +ㅤ + +ㅤ + +ㅤ + +ㅤ + +ㅤ + +ㅤ + +ㅤ + +ㅤ + +ㅤ + +ㅤ + +ㅤ + +ㅤ + +ㅤ + +Well too bad. diff --git a/docs/misc/devui/categories/settings.md b/docs/misc/devui/categories/settings.md new file mode 100644 index 00000000..ffecec94 --- /dev/null +++ b/docs/misc/devui/categories/settings.md @@ -0,0 +1,40 @@ +--- +title: Settings +weight: 70 +--- + +# Settings + +The Settings tab is the seventh tab in the Developer UI menu. It has settings related to the Developer UI itself, such as custom themes and utilities. + +![Settings](images/sets.png) + +It consists of one window and two buttons - **Themes**, **Right Click Toggles Cursor** and **Reload Theme**. + +**** + +# Themes + +There are three pre-made themes avaliable. + +> Add text showing which is which. Probably in the top-right corner. + +![DevUI Theme 1](images/sets_theme1.png) +![DevUI Theme 2](images/sets_theme2.png) +![DevUI Theme 3](images/sets_theme3.png) + +Additionally, you can make your own themes. See [the custom theme format for ImGui](/misc/devui/devui-themes) + +**** + +# Buttons + +### Right Click Toggles Cursor + +Toggles the cursor when right-clicking with the Developer UI menu enabled. Made for ... + +### Reload Theme + +Reloads the theme if any changes were made. + +**** diff --git a/docs/misc/devui/categories/windows.md b/docs/misc/devui/categories/windows.md new file mode 100644 index 00000000..bf4ee11f --- /dev/null +++ b/docs/misc/devui/categories/windows.md @@ -0,0 +1,214 @@ +--- +title: Windows +weight: 10 +--- + +> Redo `images/windows.png` + +# Windows + +The Windows tab is the first tab in the Developer UI menu. It contains various options that control different parts of the engine, from material properties to NPC behaviours. Being very useful for debugging entities and rendering, it has proven to be a great replacement for the basic console commands, making debugging faster and easier. + +It consists of two windows - **Addon List** and **Debug Menu**. + +![Volumetrics & light cookies](images/windows.png) + +**** + +## Addon List + +The Addon List window shows all the addons that are installed, with their name, workshop ID and absolute local path. It also shows which addons are currently mounted and which are not. + +Additionally, you can mount and unmount addons by checking / unchecking addons, and then applying changes using the button at the bottom of the menu. + +![Addon List](images/windows_addonlist.png) + +**** + +## Debug Menu + +The Debug Menu is made to improve the debugging by reducing the amount of console usage. The menu intends to replaces commands with buttons and checkmarks that are easier and more convinient to use than console ConVars. + +The debug menu consists of 5 tabs: Perfomance, MatSys, Renderer, Entities and AI. + +### Perfomance + +The first tab has basic buttons - show host speed, FPS counter and player's position with angles. + +![Debug Menu](images/windows_dm.png) + +### MatSys + +The second menu has options related to rendering and debugging objects, brushes, prop models, lightfaces, visleafs and more. + +![MatSys](images/windows_dm_matsys.png) + +In P2CE, you can set `mat_fullbright` to 2. This draws all texture white, allowing to see exactly what lights add to the scene. + +* `mat_bufferprimitives` enables world geometry buffering. Does not draw anything on-screen, barely affects anything. + +* `mat_wireframe` draws light-blue lines on edges of each model visible and pink lines on edhes of each brush with additional diagonal lines indicating faces. Use this caution, as it may cause lag when used in huge areas with lots of entities / brushes visible. + +* `mat_luxels` shows lightmaps of each lightmapped face. Each square is a light pixel. Only relevant to bakes lighting, where bigger lightmaps creates sharper shadows. Non-lightmapped faces (i.e. fizzlers) are drawn completely blue. + +* `mat_drawflat` disables normals on textures that have them, making them appear "flat". Not relevant for PBR shader. + +* `mat_leafvis` draws the visleaf the player is currently in. + +* `mat_normals` highlights normals of each face of models with tiny blue lines, and adds XYZ lines to each corner of brushes. + +* `mat_reversedepth` undraws everything, including world geometry, so basically it holds the frame the option was checked. If SSAO is enabled, a lens circle appears after some time. The image blurs when moving the camera. + +Screenshots, showing each of the settings, are added below. + +1. Map with `mat_fullbright` set to 2. +2. Map with `mat_wireframe` checked. +2. Map with `mat_luxels` checked. +4. Map with `mat_leafvis` checked. +5. Map with `mat_normals` checked. +6. Map with `mat_reversedepth` checked. + +![MatSys Fullbright](images/windows_dm_matsys_fb2.png) +![MatSys Wireframe](images/windows_dm_matsys_wf.png) +![MatSys Luxels](images/windows_dm_matsys_luxels.png) +![MatSys Visleafs](images/windows_dm_matsys_vis.png) +![MatSys Normals](images/windows_dm_matsys_n.png) +![MatSys Reverse Depth](images/windows_dm_matsys_depth.png) + +### Renderer + +The third menu consists of options related to drawing different parts of the engine. + +* `Draw Skybox` toggles the skybox. 3D skybox will disappear and 2D skybox will appear black. + +* `Draw VGUI` toggles the legacy VGUI. Obsolete since both P2CE and Momentum Mod use Panorama instead of VGUI. + +* `Draw Panorama` toggles Panorama, therefore toggling the pause menu, all the screen elements except the crosshair, and `panorama_screen` entities. + +* `Draw World` toggles the visibility of all brush entities and world geometry. + +* `Draw Entities` toggles the visibility of all point entities. + +* `Draw Viewmodel` toggles the visibility of the viewmodel. + +* `Draw Static Props` toggles the visibility of static props. + +* `Draw Detail Props` toggles the visibility of detail props mentioned in the .vbsp file inside the map. + +* `Draw Model Light Origin` draws green Xs at models' light origins and additionally draws 4 grey lines to each corner of models' bounding boxes. + +* `Draw Light Info` draws sprites in each light of the map. The sprites can be seen through world geometry. + +* `Draw Decals` toggles decals and overlays. + +* `Draw Brush Models` toggles the visibility of brushes that use models in any way. + +* `Draw Area Portals` toggles all the area portals in the map. + +* `Draw Beams` toggles beams created by `env_laser`, `env_beam` and `beam_spotlight` entities. + +* `Draw Ropes` toggles `move_rope` and `keyframe_rope` entities. + +* `Draw Sprites` toggles sprites. + +* `Draw Particles` toggles particles. + +* `Draw Rain` toggles the visibility of rain particles. + +* `Draw Water Surface` toggles water visibility. WHen inside the water, only the fog is seen. + +* `Draw VPhysics objects` toggles the visibility of objects that use VPhysics for collisions. + +* `Draw Portal Frustum` cannot be enabled as of now. It probably draws the debug lines for cameras used in portals. + +### Entities + +The fourth menu contains buttons that draw information about the entity the player is looking at. + +![Entities tab](images/windows_dm_ent1.png) + +* `Show Debug Information` displays the debug information of the entity as if the `ent_text` command was used. + +* `Show Name` displays the targetname of the entity. + +* `Show Bounding Box` shows the bounding box of the entity by drawing 8 pink lines on its edges and 4 tiny green cubes on the bottom corners of the bounding box. + +* `Show Messages` shows messages output by this entity. + +* `Pauses` freezes the entity. + +* `Pivot` draws the pivot point of the entity. + +> [!NOTE] +> `developer 1` is required to see the effects of this menu. + +![Entities tab used on an entity](images/windows_dm_ent2.png) + +### AI + +The last, fifth menu utilizes control over the NPC entity the player is looking at. + +![AI menu](images/windows_dm_ai1.png) + +> [!WARNING] +> +> DEVELOPERS, PLEASE NOTICE! +> +> Most of the buttons that have descriptions don't work. I filled the descriptions based on the command names. Some commands don't have descriptions on the wiki, some are not documented at all. +> +> I'm afraid of only one thing - "wiki says this, but it doesn't work" situations will massively appear. And who is to blame? +> +> Things should not be done like this. + + +* `ai_disable` bypasses all AI logic routines and puts all NPCs into their idle animations. + +* `ai_resume` resumes normal processing if the NPC is stepping through tasks. + +* `ai_stop` completely disables AI for the NPC. + +* `noclip` enables noclip for the player. + +* `god` enables godmode for the player. + +* `notarget` makes enemies ignore player. + +#### `NPC Commands` dropdown contains the following: + +* `Enemies` outputs this NPC's current entities. + +* `Go` tells the NPC to continue following its path. + +* `Go Random` tells the NPC to go in a random direction. + +* `Route` outputs this NPC's current route to their goal. + +* `Select` "selects" the NPC by drawing a dark red box around its bounding box. + +* `Destroy` removes the NPC. + +* `Visibility` tries to call a missing command called `npc_visibility`. + +* `Tasks` outputs this NPC's current tasks (rush, cover, heal player, etc.) + +* `Combat` sets this NPC to its combat mode. + +* `Focus` tells this NPC to focus on the target. + +#### `Node Graph` dropdown contains the following: + +* `Nodes` displays this NPC's current nodes + +* `Next Hull` tells the NPC to move to the next cover position. + +* `Show Hull` shows this NPC's current cover position. + +* `Show Connect` shows connection of this NPC. + +* `Show Visibility` shows visibility of this NPC. + +* `Show Graph Connect` shows graph connections of this NPC. + +![AI](images/windows_dm_ai2.png) + +**** diff --git a/docs/modding/formats/devui-themes.md b/docs/misc/devui/devui-themes.md similarity index 100% rename from docs/modding/formats/devui-themes.md rename to docs/misc/devui/devui-themes.md diff --git a/docs/misc/devui/intro.md b/docs/misc/devui/intro.md new file mode 100644 index 00000000..c2262867 --- /dev/null +++ b/docs/misc/devui/intro.md @@ -0,0 +1,17 @@ +--- +title: Introduction +weight: 0 +--- + +# Developer UI + +### What is it and why it is so peak? + +Well first off, this page is not finished. yet + +**** + +> In all the pics, zoom the dev ui windows. They are so small that on the screenshots they will be invisible. On some of them, showing changed values is NEEDED so yeah pls do that. + +> Mention that the map is Gentle Hum. + diff --git a/docs/misc/devui/meta.json b/docs/misc/devui/meta.json new file mode 100644 index 00000000..168b9650 --- /dev/null +++ b/docs/misc/devui/meta.json @@ -0,0 +1,4 @@ +{ + "title": "Developer UI", + "weight": 0 +} diff --git a/docs/misc/p2ce-changelogs/2026-03-18.md b/docs/misc/p2ce-changelogs/2026-03-18.md new file mode 100644 index 00000000..8babcc4f --- /dev/null +++ b/docs/misc/p2ce-changelogs/2026-03-18.md @@ -0,0 +1,179 @@ +# Portal 2: Community Edition - March 18th, 2026 Update + +## Additions (17) +- Added 360 video export to `startmovie` +- Added a `sound` KV to `env_spark` to change the spark sound +- Added ability to configure the filter used for floor buttons +- Added Controller LED coloring by last shot portal (stolen from Portal 2) +- Added ConVar `cl_portal_use_old_fizzle_effects` for using old Portal 1 style portal fizzle effects +- Added `-debug_dynamic_mounts` to debug Steam dynamic mounts +- Added enabled field to particle operators to toggle operator on/off +- Added new customization option to show Conversion Gel on cubes. This is also available as an `info_portal_gamerules` keyvalue for mapmakers +- Added `OnFizzled` output to `prop_portal` +- Added `OnPressedCube` / `OnPressedPlayer` to floor buttons +- Added `player_weapons_removed` & `player_equipped` game events +- Added `sv_force_upgrade_weighted_cube` ConVar, to force the new models, allowing always seeing paint at the cost of backwards compatibility. This is intended for situations like default levels that are known not to check for specific models +- Added texture flag to fully ignore `mat_picmip` (NOLOD only ignores `mat_picmip` when ConVar is positive) at 2^18 +- All paintable props now have `OnPainted` and `OnUnpainted` outputs +- Floor buttons will now use the second hitbox set, if present to configure the trigger bounds +- `prop_monster_box` now has gel overlays like regular cubes. It also has a new keyvalue to determine whether it should use the partially broken paint behaviour like in base Portal 2, or behave the same as regular cubes +- `prop_physics_paintable` can specify which skins to swap to in order to use gel overlays + +## Fixes (25) +- Allowed .dat files to be included in addons +- Fixed a crash if entity filters are evaluated on dead entities +- Fixed a crash in some cases when cubes are pulled out of the way of a laser +- Fixed an issue where scenes inside `scenes.image` files would not be properly precached, which resulted in their associated audio files being unable to play +- Fixed crash with ragdolls +- Fixed crash with the netconsole +- Fixed `cvar_defaults.cfg` not properly overriding ConVars marked with FCVAR_REPLICATED +- Fixed `host_map_mount_order_detection` not prioritizing custom asset paths in some cases +- Fixed issues with map name handling for `trigger_changelevel` and `point_changelevel` +- Fixed local splitscreen +- Fixed misspelled KV on `snd_op_occlusion`: `occlusio_db_loss` is now `occlusion_db_loss` (old KV still works though) +- Fixed painted cubes not displaying adhesion gel skins +- Fixed pellets produced by `fire_energy_ball` not hurting players +- Fixed rare crash when using `point_template` under some circumstances +- Fixed save screenshots containing garbage +- Fixed saves not working properly on Linux, due to a file system bug +- Fixed splitscreen mode not rendering correctly +- Fixed `sv_alternateticks` being forced off on Linux. Apparently it's even doing this in Portal 2 +- Fixed `sv_schrodinger_emit_sound` +- Fixed the game not responding to `SIGINT` +- Fixed WebM video export +- Make `env_global`'s GetCounter input usable +- Preserve bodygroups (frankenturret heads, etc) when fizzling objects +- Properly clear `env_global` counters when initially created +- VTF textures below `v7.5` are no longer allowed to set `v7.5`-specific flags to guard against flags from TF2 being set + +## Improvements (18) +- Cloth no longer simulates while the game is paused by default +- `cl_portal_use_new_dissolve` and `fx_new_sparks` no longer require cheats to be enabled +- Console input autocomplete suggestions now include fuzzy matches +- Entity filters will no longer crash if chained in an infinite loop +- `env_spark` entities can now override `fx_new_sparks` to use new or old sparks +- Exposed the following debug ConVars: `snd_occlusion_pos_override`, `snd_occlusion_material_override`, `snd_occlusion_visualize`, `snd_occlusion_visualize_filter`, `snd_occlusion_indirect_radius`, `snd_occlusion_indirect_min`, `snd_occlusion_indirect_max`, `snd_occlusion_collide_min_distance` +- `fps_max_menu` is now also respected while in game with opened menu +- High Energy Pellets will now obey damage filters on the player +- Lightboard KeyValues definitions file no longer needs to exist for the game to boot +- Made `sv_gravity` affect cloth +- Marked `hud_fastswitch` as archive +- Marked `r_portal_light_intensity` as archived +- Marked `sv_portal_legacy_compat`, `sv_enableholdrotation`, `mv_uncrouch_on_jump`, `mv_duckjump`, and `mv_bhop` ConVars as executable by maps +- Move rumble to Steam input +- Removed devonly flag from `net_fakelag` +- Removed `soundsystem.dll` +- Reworked how `prop_weighted_cube` functions. Every cube type has its own model, with identical skin layout. Cube type has been split into `behavior` and `shape` fields, allowing things like a spherical reflection cube. These new models dynamically tint, allowing showing all gel types as well as matching the configured colors +- Schrödinger cubes now emit `SchrodingerCube.Music` for music + +## AngelScript (27) +- `util::TraceLine` can now take `array` as ent to ignore +- `util::TraceLinePortal` can now take `array` as ent to ignore +- Added (cl|sv)_scriptsystem_dump_lsp commands to game +- Added `CBaseEntity::GetGroundEntity` `CBaseEntity::IsOnGround` `CBaseAnimating::IsOnFire` +- Added `EHandle<>` template type to AS +- Added `scriptsystem_dump` (and _json/_lsp) variant commands to Hammer +- Added access masks to angelscript bindings. This will prevent client/server functions from being called in the wrong places +- Added bindings for `AngleVectors` +- Added ConVar change callback support to scriptsystem +- Added KV and output support for script classes +- Added parameter names to a lot of AS functions/methods +- Applied access masks to attributes. ServerCommand/ClientCommand are only available in their respective domains +- Entities in AS can now be casted +- Entity outputs now have `Init` and `Get` methods +- Exposed `CBaseEntity::KeyValues` methods to AS +- Exposed more base entity classes to AS (only a stub for now) +- Fixed AngelScript malformed attribute error displaying 'Entity' attribute name instead of the real name in some cases +- Fixed AS debugger not working +- Fixed casting in AS +- Fixed issue where `CommandArgs@` in custom commands had to be non-const. It now requires const +- Fixed Scriptsystem in Hammer not being able to load any scripts +- Refactored script loading. Each search path will now load `sv_init.as` `cl_init.as` and `init.as` and define `SERVER` and `CLIENT` to differentiate where the modules are to be loaded +- Scriptsystem debugger now works properly +- Scriptsystem dumps now contain global funcdefs +- Scriptsystem json dumps now use AS method names +- Scriptsystem lsp dumps now doesn't duplicate methods from parent classes +- Scriptsystem's `string.toInt` and `string.toUInt` can now convert numbers from any base + +## Graphics (21) +- Added `$emissiontransform` to PBR, to apply transform to the emission texture specifically +- Added `nearz` property to clustered light entities +- Added `sv_reloadmaterialsonmapload` ConVar that controls material reload behavior when loading map, can improve map load times when disabled +- Added DoSSAO function to viewpostprocess +- Added light cookies to `light_rt` entities +- Added various ConVars to control AO +- Doubled cookie atlas size, allowing 4 times the texture data to be allocated before exhaustion +- Fixed `r_ssao` breaking cubemap building +- Fixed `SetLightScale` on clustered lights not changing the light intensity +- Fixed cookied lights only displaying cookies when shadowed +- Fixed crashes when using some material proxies on non-standard stuff +- Fixed flashlight and `env_projectedtexture` shadows being 4x larger per-dimension than their pre-clustered equivalents +- Fixed lightmappedgeneric ssbump detail textures not working properly +- Fixed multi-frame texture cookies only ever displaying the first frame +- Fixed SSAO crashing game in some cases +- Fixed sun specular not blending with lightmaps properly on PBR textures +- Increased default clustered shadow budget from 6 to 12 +- Light cookies now correctly use the light entity orientation +- PBR materials with manually specified `$envmap` will no longer be overridden to use `env_cubemap` +- Rate limited the clustered atlas allocator warning to 1 message per second +- Replaced general clustered light modes with independent lighting component modes + +## Panorama (5) +- Added `SettingsEnumBitField` Panorama control +- Added `WeaponEquipped` and `WeaponsDropped` Panorama events +- Fixed `SettingsSlider` `invert` not working correctly when the slider is set to display a percentage +- Fixed crash with the video settings screen when an incorrect panel type is used for the setting dropdowns +- Fixed Panorama rendertargets being invalidated when `mat_picmip` is changed + +## Tools (41) +- `devui_auto_scale` will now use the smallest window dimension to calculate scale factor +- Added "Paste Special Again" context menu option in Hammer, which will use the last saved Paste Special options in the session without a prompt +- Added `-EnvCubemapNotForcedForPBR` parameter to VBSP, for mappers that need PBR materials with handmade envmaps +- Added `-help`/`-?` to StudioMDL +- Added `-nowinerenderfix` to disable rerendering Hammer views on each frame in Wine +- Added a "Use Native File Browser" option in Hammer, to allow using Qt file dialogs and vice versa +- Added an ImGui game events debugger +- Added an in-game cloth/softbody debugger +- Added an in-game ImGui material inspector/rudimentary editor +- Added ConVar `devui_auto_scale` which, when enabled, automatically scales DevUI to match the reference resolution of 1920x1080, like Panorama +- Added displays thickness of ropes and cables in Hammer +- Added manual inputs to clustered light inspector +- Added mdl2dmx, a very basic static prop decompiler +- Added Near Z property slider to clustered light inspector +- Added position/angle inputs to clustered light inspector +- Added script module info DevUI panel +- Added support for custom fonts in DevUI themes. FontScaleDpi, FontScaleMain, FontScaleBase control font size. Font property controls the actual font and is a path like `resource/MyFont.ttf` +- Added support for Hammer++ rectangle map hotspot definitions +- Added vtex config flag "ignorepicmip" to control setting the IGNORE_PICMIP flag in the compiled VTF +- Allow `bool`/`boolean` to be interchangably for FGD IO and KV definitions +- Displacement tools now edit continuously without needing to move mouse +- Entity report dialog can now be sorted +- Fixed `devui_auto_scale` not performing any scaling +- Fixed `devui_auto_scale` turning text into a blurry mess below 1080p +- Fixed a crash in Hammer when copy-pasting brushes +- Fixed a crash when removing/changing loaded FGDs in Hammer +- Fixed copy+paste in ImGui windows +- Fixed ImGui looking blurry due to autoscaling +- Fixed Paste Special entity name prefix field not retaining its value across multiple different invocations of the dialog +- Fixed StudioMDL trying to run `md` on Linux to create the output dir. It now runs `mkdir -p` +- Hammer now does not spam warning about unknown detail object types +- Hammer prints more FGD errors when something goes wrong +- Hammer's Discord Rich Presence no longer shares map name by default +- Model browser getting sometimes getting stuck +- Removed `-winecompat` from Hammer, fixes will be applied when Wine is detected automatically +- Removed zlib and libxml2 dependencies from StudioMDL on Linux +- Shift+F1 keybind will now toggle the DevUI menu instead of failing to open a nonexistent VGUI window +- The `-noao` VRAD parameter now sets `LVLFLAGS_DISABLE_BAKED_AO` +- Updated VRAD help text +- VRAD AO is now DISABLED by default and can be enabled by passing `-ao`. XeGTAO should be preferred for VRAD baked AO +- When using the eyedropper tool, Hammer will prompt to name entities if they did not have one already + +## VScript (8) +- `prop_weighted_cube` now has `GetCubeBehavior()`, `GetCubeShape()`, `GetLaser()`, `IsEmissionLocked()`, `IsPressingButton()` and `GetPaint()` VScript functions. `GetCubeType()` *was removed*, use behavior/shape instead or a model check +- Added `CBasePortal::IsActive` +- Added `vscript_script_max_exec_time` to control max allowed script execution time. Use with caution +- Fixed a crash in VScript when calling `CreateEntityByName` on a non-existing class +- Fixed rare crash from VScript while converting some values to string +- Fixed VScript crash related to saving tables that reference themselves +- VScript `TraceLineEx` can now take an array of entities to ignore +- VScript `TracePortalLine` can now take an array of entities to ignore