Newxog volume: Difference between revisions
MyGamepedia (talk | contribs) (Gifs don't work without this.) |
MyGamepedia (talk | contribs) No edit summary |
||
(17 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{this is a|brush entity|name=newxog_volume|game=Black Mesa}} This is xog (Xen Fog) volume, brush entity that creates a fog transition, making spaces appear deeper than they are. | ||
{{CDA|CNewXogVolume|CBaseTrigger|CBaseToggle|CBaseEntity|}} | |||
[[File:Newxog_volume_picture1.png|thumb|right|510px|Xog volume example.]] | |||
[[File:Tools_xogvolume.png|thumb|right|170px|The texture that use level designers to mark this entity.]] | |||
{{note|This entity have [[trigger_once]] functions but they are not in [[FGD]] and never work.}} | |||
{{tip|Use <code>tools/tools_xogvolume</code> texture for your xog volumes to quickly distinguish them from triggers while level creation.}} | |||
{{tip|In addition to using this entity as a fog in certain areas, it is also great for use for [[func_water_analog]], since [[func_water_analog]] haven't itown fog in it's volume.}} | |||
{{important|This entity doesn't affects optimization, this entity for visual effects only.}} | |||
{{important|This brush entity uses [[Bounding_box|bbox]] brush volume to render and not brush volume itself. | |||
{{expand|title=An example.| | |||
<br> | |||
<gallery mode=packed heights=210px> | |||
File:XogVolume1.png |Xog brush volume in [[Hammer]]. | |||
File:XogVolume2.png |Xog in the game. | |||
</gallery> | |||
}} | |||
}} | |||
{{todo|Rework page and replace .gif files with video links.}} | |||
==Keyvalues== | ==Keyvalues== | ||
{{KV|Enabled|intn=Enabled|Choices| | {{KV|Enabled|intn=Enabled|Choices| | ||
Determines is this entity enabled or disabled on spawn. | Determines is this entity enabled or disabled on spawn. | ||
*0: Enabled | *0: Enabled | ||
Line 7: | Line 26: | ||
}} | }} | ||
{{KV|Shape Type|intn=xogtype|Choices| | {{KV|Shape Type|intn=xogtype|Choices| | ||
Shape type to use. You can use [[Bounding_box|BBOX]] or [https://en.wikipedia.org/wiki/Ellipsoid Ellipsoid]. | |||
*0:0: LocalVolume BBOX | *0:0: LocalVolume BBOX | ||
*1:1: LocalVolume Ellipsoid | *1:1: LocalVolume Ellipsoid | ||
Line 19: | Line 38: | ||
}} | }} | ||
{{KV|colorMode|intn=colormode|Choices| | {{KV|colorMode|intn=colormode|Choices| | ||
This is [[FGD]] leftover from {{ent|newxog_global}}. This feature doesn't work for this entity.}} | |||
}} | |||
{{KV|Texture name Grad Texture|intn=texname|string| | {{KV|Texture name Grad Texture|intn=texname|string| | ||
This is [[FGD]] leftover from {{ent|newxog_global}}. This feature doesn't work for this entity. | |||
}} | }} | ||
{{KV|colorTop|intn=colortop|color255| | {{KV|colorTop|intn=colortop|color255| | ||
Xog top color. This is the main color of xog that uses if <code>Enable Height Blend</code> | Xog top color. This is the main color of xog that uses if <code>Enable Height Blend</code> property is disabled. | ||
}} | }} | ||
{{expand|title=Examples| | {{expand|title=Examples| | ||
Line 61: | Line 76: | ||
</gallery> | </gallery> | ||
}} | }} | ||
{{bug|Numbers lower than 1 cause xog graphics issues. | {{bug|hidetested=1|Numbers lower than 1 cause xog graphics issues. | ||
{{expand|title=Bug examples| | {{expand|title=Bug examples| | ||
<br> | <br> | ||
Line 81: | Line 96: | ||
</gallery> | </gallery> | ||
}} | }} | ||
{{bug|Numbers lower than 1 cause xog graphics issues. | {{bug|hidetested=1|Numbers lower than 1 cause xog graphics issues. | ||
{{expand|title=Bug examples| | {{expand|title=Bug examples| | ||
<br> | <br> | ||
Line 91: | Line 106: | ||
}} | }} | ||
{{note|The difference in values of distStart and distEnd should be not too big, otherwise the fog will be unsmooth.}} | {{note|The difference in values of distStart and distEnd should be not too big, otherwise the fog will be unsmooth.}} | ||
{{KV|distDensity|intn=distdensity|float| | {{KV|distDensity|intn=distdensity|float| | ||
Density of xog entity, only values from 0 to 1 works. | Density of xog entity, only values from 0 to 1 works. | ||
}} | }} | ||
Line 101: | Line 116: | ||
</gallery> | </gallery> | ||
}} | }} | ||
{{KV|opacityOffsetTop|intn=opacityoffsettop|float| | {{KV|opacityOffsetTop|intn=opacityoffsettop|float| | ||
Offsets top color of xog. | Offsets top color of xog. | ||
}} | }} | ||
Line 112: | Line 127: | ||
</gallery> | </gallery> | ||
}} | }} | ||
{{KV|opacityOffsetBottom|intn=opacityoffsetbottom|float| | {{KV|opacityOffsetBottom|intn=opacityoffsetbottom|float| | ||
Offsets bottom color of xog. | Offsets bottom color of xog. | ||
}} | }} | ||
Line 123: | Line 138: | ||
</gallery> | </gallery> | ||
}} | }} | ||
{{KV|htZStart|intn=htzstart|float| | {{KV|htZStart|intn=htzstart|float| | ||
Height that xog starts rendering at. | Height that xog starts rendering at. | ||
}} | }} | ||
Line 134: | Line 149: | ||
</gallery> | </gallery> | ||
}} | }} | ||
{{KV|htZEnd|intn=htzend|float| | {{KV|htZEnd|intn=htzend|float| | ||
Height that xog stops rendering at. | Height that xog stops rendering at. | ||
}} | }} | ||
Line 145: | Line 160: | ||
</gallery> | </gallery> | ||
}} | }} | ||
{{KV|htZColStart|intn=htzcolstart|float| | {{KV|htZColStart|intn=htzcolstart|float| | ||
Height that xog color starts rendering at. Results depend on <code>htZColEnd</code> value. | Height that xog color starts rendering at. Results depend on <code>htZColEnd</code> value. | ||
}} | }} | ||
Line 156: | Line 171: | ||
</gallery> | </gallery> | ||
}} | }} | ||
{{KV|htZColEnd|intn=htzcolend|float| | {{KV|htZColEnd|intn=htzcolend|float| | ||
Height that xog color stops rendering at. Results depend on <code>htZColStart</code> value. | Height that xog color stops rendering at. Results depend on <code>htZColStart</code> value. | ||
}} | }} | ||
Line 168: | Line 183: | ||
}} | }} | ||
{{KV|noise1ScrollSpeed|intn=noise1scrollspeed|vector| | {{KV|noise1ScrollSpeed|intn=noise1scrollspeed|vector| | ||
Layer one, speed at which noise moves | Layer one, speed at which noise moves through xog volume (X Y Z). | ||
}} | }} | ||
{{expand|title=Examples| | {{expand|title=Examples| | ||
<br> | <br> | ||
<gallery mode= | <gallery mode=packed heights=290px widths=320px> | ||
File:noise1ScrollSpeed1_n.gif|noise1ScrollSpeed - 1 0 0. | File:noise1ScrollSpeed1_n.gif| frame |noise1ScrollSpeed - 1 0 0. | ||
File:noise1ScrollSpeed2_n.gif|noise1ScrollSpeed - 0 1 0. | File:noise1ScrollSpeed2_n.gif| frame |noise1ScrollSpeed - 0 1 0. | ||
File:noise1ScrollSpeed3_n.gif|noise1ScrollSpeed - 0 0 1. | File:noise1ScrollSpeed3_n.gif| frame |noise1ScrollSpeed - 0 0 1. | ||
</gallery> | </gallery> | ||
}} | }} | ||
{{KV|noise1Tiling|intn=noise1tiling|vector| | {{KV|noise1Tiling|intn=noise1tiling|vector| | ||
Layer one, tiling speed at which noise moves | Layer one, tiling speed at which noise moves through xog volume (X Y Z). | ||
}} | }} | ||
{{expand|title=Examples| | {{expand|title=Examples| | ||
Line 190: | Line 205: | ||
}} | }} | ||
{{KV|noise2ScrollSpeed|intn=noise2scrollspeed|vector| | {{KV|noise2ScrollSpeed|intn=noise2scrollspeed|vector| | ||
Layer two, speed at which noise moves | Layer two, speed at which noise moves through xog volume (X Y Z). | ||
}} | }} | ||
{{expand|title=Examples| | {{expand|title=Examples| | ||
<br> | <br> | ||
<gallery mode= | <gallery mode=packed heights=290px widths=520px> | ||
File:noise2ScrollSpeed1_n.gif|noise2ScrollSpeed - 1 0 0. | File:noise2ScrollSpeed1_n.gif| frame |noise2ScrollSpeed - 1 0 0. | ||
File:noise2ScrollSpeed2_n.gif|noise2ScrollSpeed - 0 1 0. | File:noise2ScrollSpeed2_n.gif| frame |noise2ScrollSpeed - 0 1 0. | ||
File:noise2ScrollSpeed3_n.gif|noise2ScrollSpeed - 0 0 1. | File:noise2ScrollSpeed3_n.gif| frame |noise2ScrollSpeed - 0 0 1. | ||
</gallery> | </gallery> | ||
}} | }} | ||
Line 233: | Line 248: | ||
</gallery> | </gallery> | ||
}} | }} | ||
{{KV|Enable Height Blend|intn=enablevol_height|choices| | {{KV|Enable Height Blend|intn=enablevol_height|choices| | ||
Determines bottom color and blending is disabled or enabled. | Determines bottom color and blending is disabled or enabled. | ||
*0: Disabled | *0: Disabled | ||
Line 245: | Line 260: | ||
</gallery> | </gallery> | ||
}} | }} | ||
==Inputs== | ==Inputs== | ||
{{ | {{I|TurnOn|param=void|Turn xog on.}} | ||
{{ | {{I|TurnOff|param=void|Turn xog off.}} | ||
{{I | {{I|Toggle|param=void|Toggle the xog between on and off stages.}} | ||
= | |||
== | ==Bugs/Limitations== | ||
====Xog incorrect work with [[$translucent]]==== | ====Xog incorrect work with [[$translucent]]==== | ||
Xog all time fully rendering through everything with [[material]] [[shader]] parameter [[$translucent]]. This happen because of game can't tell the depth of scene because of the transparency. | Xog all time fully rendering through everything with [[material]] [[shader]] parameter [[$translucent]]. This happen because of game can't tell the depth of scene because of the transparency. | ||
Line 284: | Line 290: | ||
---- | ---- | ||
====Xog incorrect work with [[$alphatestreference]] and [[$allowalphatocoverage]]==== | ====Xog incorrect work with [[$alphatestreference]] and [[$allowalphatocoverage]]==== | ||
[[$alphatestreference]] is a [[material]] [[shader]] parameter that specifies the threshold alpha channel value at which the surface should be transparent instead of opaque, default "0.5". [[$allowalphatocoverage]] creates translucent steps based on alpha values. Both have one and same problems with | [[$alphatestreference]] is a [[material]] [[shader]] parameter that specifies the threshold alpha channel value at which the surface should be transparent instead of opaque, default "0.5". [[$allowalphatocoverage]] creates translucent steps based on alpha values. Both have one and same problems with gbuffer. | ||
For examples used this texture with this alpha channel. | For examples used this texture with this alpha channel. | ||
<br> | <br> | ||
<gallery mode=nolines heights= | <gallery mode=nolines heights=500px widths=520px> | ||
File:C_ATSC_D.jpg| Diffuse texture. | File:C_ATSC_D.jpg| Diffuse texture. | ||
File:C_ATSC_A.jpg| Alpha channel. | File:C_ATSC_A.jpg| Alpha channel. | ||
</gallery> | </gallery> | ||
Here xog placed behind wall with the texture. We can see the circle part of that have alpha channel part which is invisible due to $alphatest, with enabled xog we see that the invisible part doesn't show through itself | Here xog placed behind wall with the texture. We can see the circle part of that have alpha channel part which is invisible due to $alphatest, with enabled xog we see that the invisible part doesn't show through itself xog. | ||
<br> | <br> | ||
<gallery mode=nolines heights= | <gallery mode=nolines heights=500px widths=520px> | ||
File:x_ODSL_1_С.jpg| Xog volume disabled. | File:x_ODSL_1_С.jpg| Xog volume disabled. | ||
File:x_ODSL_2_С.jpg| Xog volume enabled. | File:x_ODSL_2_С.jpg| Xog volume enabled. | ||
Line 299: | Line 305: | ||
If use very low numbers you will see resualts like in the pictures. | If use very low numbers you will see resualts like in the pictures. | ||
<br> | <br> | ||
<gallery mode=nolines heights= | <gallery mode=nolines heights=500px widths=520px> | ||
File:xCCCC_11.jpg|Xog volume disabled. | File:xCCCC_11.jpg|Xog volume disabled. | ||
File:x_CCCC_12.jpg|Xog volume enabled. | File:x_CCCC_12.jpg|Xog volume enabled. | ||
Line 306: | Line 312: | ||
You can't escape this problem, only minimize effect with <code>$alphatestreference 0.1</code> or if paint alpha correct channel. | You can't escape this problem, only minimize effect with <code>$alphatestreference 0.1</code> or if paint alpha correct channel. | ||
---- | ---- | ||
====Motion blur blurring viewmodel xog layer==== | ====Motion blur blurring viewmodel xog layer==== | ||
For some reason <code>Motion blur</code> blurring viewmodel xog layer, you can notice this when you just rotate camera. This issue happen even if xog behind other objects. | For some reason <code>Motion blur</code> blurring viewmodel xog layer, you can notice this when you just rotate camera. This issue happen even if xog behind other objects. | ||
Line 317: | Line 324: | ||
If you don't use <code>Full Screen</code> - xog will incorrectly applying to screen. | If you don't use <code>Full Screen</code> - xog will incorrectly applying to screen. | ||
<br> | <br> | ||
<gallery mode= | <gallery mode=packed heights=250px widths=320px> | ||
File: XIWWT.gif|An example. | File: XIWWT.gif| frame |An example. | ||
</gallery> | </gallery> | ||
---- | ---- | ||
Line 331: | Line 338: | ||
Unlike deferred lighting, xog doesn't refract by refract shader, also fully draw through. | Unlike deferred lighting, xog doesn't refract by refract shader, also fully draw through. | ||
<br> | <br> | ||
<gallery mode= | <gallery mode=packed heights=350px widths=320px> | ||
File:AnXodexample.gif|An example. | File:AnXodexample.gif| frame |An example. | ||
</gallery> | </gallery> | ||
If model with refraction behind wall with refraction - this cause issues like this. | If model with refraction behind wall with refraction - this cause issues like this. | ||
Line 345: | Line 352: | ||
</gallery> | </gallery> | ||
---- | ---- | ||
== | |||
== See also == | |||
{{ | * [[Xog Editor]] - the console-based xog editor. | ||
* {{ent|newxog_global}} - global xog, similar to {{ent|env_fog_controller}}. | |||
* {{ent|newxog_settings}} - entity that can change xog settings. | |||
* {{ent|env_fog_controller}} | |||
* {{ent|fog_volume}} | |||
---- | * [[Fog tutorial]] | ||
* [[Fog Basics]] | |||
* [[Dust, Fog, & Smoke]] | |||
* [[color_correction|Color Correction]] | |||
* {{ent|color_correction}} (entity) | |||
* [https://chetanjags.wordpress.com/2023/07/11/blackmesa-xenengine-part2-how-a-frame-is-rendered/ BlackMesa XenEngine: Part2 – How a Frame is Rendered] (page from Black Mesa developer about how a frame rendered and xog.) | |||
* [https://chetanjags.wordpress.com/2022/06/01/blackmesa-xenengine-part1-a-heavily-modified-source-engine/ BlackMesa XenEngine: Part1 – Heavily Modified Source Engine] (page from Black Mesa developer about Black Mesa engine, better known as [[Xengine]]) | |||
Latest revision as of 06:34, 27 May 2025
newxog_volume
is a brush entity available in Black Mesa. This is xog (Xen Fog) volume, brush entity that creates a fog transition, making spaces appear deeper than they are.
![]() |
---|
CNewXogVolume |


tools/tools_xogvolume
texture for your xog volumes to quickly distinguish them from triggers while level creation.


|
Keyvalues
- Enabled (Enabled) <choices>
- Determines is this entity enabled or disabled on spawn.
- 0: Enabled
- 1: Disabled
- 0:0: LocalVolume BBOX
- 1:1: LocalVolume Ellipsoid
|
- colorMode (colormode) <choices>
- This is FGD leftover from newxog_global. This feature doesn't work for this entity.
- Texture name Grad Texture (texname) <string>
- This is FGD leftover from newxog_global. This feature doesn't work for this entity.
- colorTop (colortop) <color255>
- Xog top color. This is the main color of xog that uses if
Enable Height Blend
property is disabled.
|

- colorBottom (colorbottom) <color255>
- Xog bottom color. Requires enabled
Enable Height Blend
to be working.
|
- distStart (diststart) <float>
- distStart
Xog start draw distance.
|

|
- distEnd (distend) <float>
- distEnd
Xog end draw distance.
|

|

- distDensity (distdensity) <float>
- Density of xog entity, only values from 0 to 1 works.
|
- opacityOffsetTop (opacityoffsettop) <float>
- Offsets top color of xog.
|
- opacityOffsetBottom (opacityoffsetbottom) <float>
- Offsets bottom color of xog.
|
- htZStart (htzstart) <float>
- Height that xog starts rendering at.
|
- htZEnd (htzend) <float>
- Height that xog stops rendering at.
|
- htZColStart (htzcolstart) <float>
- Height that xog color starts rendering at. Results depend on
htZColEnd
value.
|
- htZColEnd (htzcolend) <float>
- Height that xog color stops rendering at. Results depend on
htZColStart
value.
|
- noise1ScrollSpeed (noise1scrollspeed) <vector>
- Layer one, speed at which noise moves through xog volume (X Y Z).
|
- noise1Tiling (noise1tiling) <vector>
- Layer one, tiling speed at which noise moves through xog volume (X Y Z).
|
- noise2ScrollSpeed (noise2scrollspeed) <vector>
- Layer two, speed at which noise moves through xog volume (X Y Z).
|
- noise2Tiling (noise2tiling) <vector>
- Layer two, tiling speed at which noise moves trough xog volume (X Y Z).
|
- noiseContrast (noisecontrast) <float>
- Contrast of xog.
|
- noiseMultiplier (noisemultiplier) <float>
- Multiplier of xog.
|
- Enable Height Blend (enablevol_height) <choices>
- Determines bottom color and blending is disabled or enabled.
- 0: Disabled
- 1: Enabled
|
Inputs
- TurnOn <void>
- Turn xog on.
- TurnOff <void>
- Turn xog off.
- Toggle <void>
- Toggle the xog between on and off stages.
Bugs/Limitations
Xog incorrect work with $translucent
Xog all time fully rendering through everything with material shader parameter $translucent. This happen because of game can't tell the depth of scene because of the transparency.
No $translucent. Behind the wall placed xog volume and some models with small room.
With $translucent. Now player see everything, but only what in xog.
Similar issue happen if use $alphatestreference incorrectly.
This problem also applies to brushes which not have $translucent, but which parented to brushes that have this parameter. Similar will happen if brush with $translucent is part of your brush entity. Same will happen if you use overlays/decals on brushes with $translucent.
Metal speaker is overlay that use $alphatest, but xog fully visible anyway, because overlay pasted on the transparency window.
This issues does not happen if replace LightmappedGeneric to ShatteredGlass or UnlitGeneric, so, you can use one of them for glass or transparency surfaces when it's needed.
In some cases use $alphatest if it'll give similar to $translucent resualts.
Xog incorrect work with $alphatestreference and $allowalphatocoverage
$alphatestreference is a material shader parameter that specifies the threshold alpha channel value at which the surface should be transparent instead of opaque, default "0.5". $allowalphatocoverage creates translucent steps based on alpha values. Both have one and same problems with gbuffer.
For examples used this texture with this alpha channel.
Here xog placed behind wall with the texture. We can see the circle part of that have alpha channel part which is invisible due to $alphatest, with enabled xog we see that the invisible part doesn't show through itself xog.
If use very low numbers you will see resualts like in the pictures.
You can't escape this problem, only minimize effect with $alphatestreference 0.1
or if paint alpha correct channel.
Motion blur blurring viewmodel xog layer
For some reason Motion blur
blurring viewmodel xog layer, you can notice this when you just rotate camera. This issue happen even if xog behind other objects.
Xog incorrect work with -tools
If you don't use Full Screen
- xog will incorrectly applying to screen.
Xog volume doesn't work with 3D Skybox
Don't use xog volumes in your 3D skyboxes, none of them will work at all.
Xog doesn't refract by refract shader and fully draw through
Unlike deferred lighting, xog doesn't refract by refract shader, also fully draw through.
If model with refraction behind wall with refraction - this cause issues like this.
Similar issue with cloak material shader parameter.
An example with npc_human_assassin.
See also
- Xog Editor - the console-based xog editor.
- newxog_global - global xog, similar to env_fog_controller.
- newxog_settings - entity that can change xog settings.
- env_fog_controller
- fog_volume
- Fog tutorial
- Fog Basics
- Dust, Fog, & Smoke
- Color Correction
- color_correction (entity)
- BlackMesa XenEngine: Part2 – How a Frame is Rendered (page from Black Mesa developer about how a frame rendered and xog.)
- BlackMesa XenEngine: Part1 – Heavily Modified Source Engine (page from Black Mesa developer about Black Mesa engine, better known as Xengine)