$specmap texture: Difference between revisions
Jump to navigation
Jump to search

Risk of Confusion:The game does not support the PBR shader itself, only similar glossy effects.
Bug:If a material with $alphatest applied has a specular, and beneath it, there is another material with the same shader, will cause artifacts under a light source. This bug started occurring after Crowbar Collective fixed the outline artifacts for materials with $alphatest. Example in this video.
Note:env_cascade_light doesn't work with this shader (at least on brush models and world geometry).
Confirm:Is the entity list is full?
MyGamepedia (talk | contribs) No edit summary |
MyGamepedia (talk | contribs) No edit summary |
||
| (40 intermediate revisions by 6 users not shown) | |||
| Line 1: | Line 1: | ||
{{ | {{LanguageBar}} | ||
[[File:NewSpecular. | {{This is a|shader parameter|name=$specmap_texture|game=Black Mesa}} | ||
[[File:NewSpecular=.jpg|thumb|right|New specular shader, example in <code>bs_c3m0d</code>. You can see how the floor reflects the red light source, same with the floodlight.]] | |||
{{ | Shader used on surfaces to give them [[PBR]] style speculars. Works with {{ent|VertexLitGeneric}} and {{ent|LightmappedGeneric}}. This shader ''only'' works with deferred rendering lighting entities, which are using the <code>SpecularMultiplier</code> parameter. | ||
{{ | |||
This shader is mainly used with {{ent|LightmappedGeneric}}, because it is the only option for glossy effects on world geometry and [[bmodel | brush models]]. {{ent|VertexLitGeneric}} is mainly used with {{ent|$phong}} instead, because new specular supports only new lights, while {{ent|$phong}} also supports baked lights and has a lot of parameters, the only exception to this is {{ent|prop_static}}. | |||
{{ModernConfusion|The game does not support the PBR shader itself, only similar glossy effects.}} | |||
{{bug|hidetested=1|If a material with [[$alphatest]] applied has a specular, and beneath it, there is another material with the same shader, will cause artifacts under a light source. This bug started occurring after Crowbar Collective fixed the outline artifacts for materials with [[$alphatest]]. Example in this [https://youtu.be/cb6Fw4rVXXo video].}} | |||
{{note|{{ent|env_cascade_light}} doesn't work with this shader (at least on [[Bmodel|brush models]] and world geometry).}} | |||
{{back | Black Mesa Level Creation}} | {{back | Black Mesa Level Creation}} | ||
==List of entities this shader works with== | |||
* {{ent|NewLight_Point}}, {{ent|NewLight_Spot}} - controlled using <code>SpecularMultiplier</code> keyvalue. | |||
* {{ent|npc_zombie_hev}} - flashlight used by this entity (if enabled). | |||
* {{ent|npc_plantlight}}, {{ent|npc_plantlight_stalker}} - light bulb from plant eye. | |||
* {{ent|player}} - first person flashlight (if enabled). Controlled using {{command|gb_flashlight_SpecMul}}, the default value is 0.8. | |||
* {{ent|env_cascade_light}} - works only with {{ent|VertexLitGeneric}}. | |||
* {{ent|prop_barrel_cactus}} - lighting from this entity. | |||
* {{ent|prop_barrel_cactus_semilarge}} - lighting from this entity. | |||
* {{ent|prop_barrel_interloper}} - lighting from this entity. | |||
* {{ent|prop_barrel_interloper_small}} - lighting from this entity. | |||
* {{ent|bmortar}} - lighting from this entity. | |||
{{Confirm|Is the entity list is full?}} | |||
== Parameters and Effects == | == Parameters and Effects == | ||
{{ | {{MatParamDef|$specmap_texture|texture|Defines a [[specularmap]] texture for the shader. | ||
{{expand|title=An example.| | {{expand|title=An example.| | ||
<br> | <br> | ||
<gallery mode=packed heights= | <gallery mode=packed heights=410px> | ||
File: | File:Bs_fy_basement_floor01_spec=.jpg|An example of [[specularmap]] from {{bmsbs|4}}. | ||
</gallery> | </gallery> | ||
}} | }} | ||
}} | }} | ||
{{ | {{MatParamDef|$specularcolor|RGB matrix|Controls the color and saturation of the specularity. If all three values are the same, the color obtained from deferred rendering light source will be used instead. Also affects specular intensity. | ||
{{expand|title=Examples.| | {{expand|title=Examples.| | ||
<br> | <br> | ||
<gallery mode=packed heights= | <gallery mode=packed heights=290px> | ||
File:1 1 1. | File:1 1 1=.jpg|$specularcolor - 1 1 1. | ||
File:1 0 0. | File:1 0 0=.jpg|$specularcolor - 1 0 0. | ||
File:1 0 1. | File:1 0 1=.jpg|$specularcolor - 1 0 1. | ||
</gallery> | </gallery> | ||
}} | }} | ||
}} | }} | ||
{{ | {{MatParamDef|$specmap_mode|int|Defines style and behaviour for speculars. Only 3 applicable values: 0, 1, and 2. | ||
{{expand|title=Examples.| | {{expand|title=Examples.| | ||
<br> | <br> | ||
<gallery mode=packed heights= | <gallery mode=packed heights=290px> | ||
File:mode 0. | File:mode 0=.jpg|$specmap_mode - 0. Seems to ignore $specmap_texture. | ||
File:mode 1. | File:mode 1=.jpg|$specmap_mode - 1. Seems to use $specmap_texture as glossiness map. | ||
File:mode 2. | File:mode 2=.jpg|$specmap_mode - 2. Seems to use $specmap_texture as tint map. | ||
</gallery> | |||
}} | |||
}} | |||
{{MatParamDef|$speculargloss|float|Defines glossiness. Works differently depending on <code>$specmap_mode</code> value. | |||
{{expand|title=Examples of $specmap_mode - 0.| | |||
<br> | |||
<gallery mode=packed heights=290px> | |||
File:mode 0 10=.jpg|$specmap_mode - 0. $speculargloss - 10 | |||
File:mode 0 100=.jpg|$specmap_mode - 0. $speculargloss - 100 | |||
File:mode 0 500=.jpg|$specmap_mode - 0. $speculargloss - 500 | |||
</gallery> | </gallery> | ||
}} | }} | ||
{{expand|title=Examples of $specmap_mode - 1.| | |||
<br> | |||
<gallery mode=packed heights=290px> | |||
File:mode 1 10=.jpg|$specmap_mode - 1. $speculargloss - 10 | |||
File:mode 1 100=.jpg|$specmap_mode - 1. $speculargloss - 100 | |||
File:mode 1 500=.jpg|$specmap_mode - 1. $speculargloss - 500 | |||
</gallery> | |||
}} | }} | ||
{{expand|title=Examples of $specmap_mode - 2.| | |||
{{expand|title=Examples.| | |||
<br> | <br> | ||
<gallery mode=packed heights= | <gallery mode=packed heights=290px> | ||
File:mode 2 10=.jpg|$specmap_mode - 2. $speculargloss - 10 | |||
File:Mode_2=.jpg|$specmap_mode - 2. $speculargloss - 100 | |||
File:mode 2 500=.jpg|$specmap_mode - 2. $speculargloss - 500 | |||
File:mode 2 10. | |||
File:Mode_2. | |||
File:mode 2 500. | |||
</gallery> | </gallery> | ||
}} | }} | ||
}} | |||
{{MatParamDef|$normalmapalphaenvmapmask|bool|Use the alpha channel of the {{code|$bumpmap}} or {{code|$normalmap}} as a specular mask. {{code|$specmap_texture}} will be used as an additional mask or glossiness mask if {{code|$specmap_mode}} is set. This allows a blendable specular mask on {{code|LightmappedGeneric}}. | |||
}} | |||
{{MatParamDef|$fresnelreflection|float|If an [[$envmap]] is also defined, adds a fresnel effect to specularity. Operates the same as it does on [[$envmap]]. 0 is full effect, 1 is no fresnel. | |||
{{tip|Use a value of ~0.8 for metal, ~0.1 for everything else to adhere to PBR.}} | |||
}} | }} | ||
Example VMT: | |||
{{CodeBlock|<nowiki>"VertexlitGeneric" | |||
{ | |||
{{CodeBlock|<nowiki> | "$basetexture" "models/props_hc/t0a0/generic16" | ||
"$bumpmap" "models/props_hc/t0a0/generic16_normal" | |||
"$surfaceprop" "Metal" | |||
"$specmap_texture" "models/props_hc/t0a0/generic16_spec" | |||
"$specmap_mode" "2" | |||
"$speculargloss" "800" | |||
"$specularcolor" "[ 1 1 1 ]" | |||
} | |||
</nowiki>}} | </nowiki>}} | ||
{{todo|Check to see if parameters such as {{code|$envmapmask}} or {{code|$basealphaenvmapmask}} and others affect new specular lights.}} | |||
== See also == | == See also == | ||
* | * {{ent|$moss_enable}} - moss shader. | ||
* {{ent| | * {{ent|$pomscale}} - parallax occlusion mapping shader. | ||
* {{ent|newLight_Spot}} | * {{ent|Lightmapped_4WayBlend}} - 4 way blend shader. | ||
* {{ent| | * {{ent|$halflambert_gbuffer_off}} - gbuffer's halflambert option. | ||
* {{ent| | * {{ent|newLight_Dir}} - directional sun light with godrays only. | ||
* {{ent| | * {{ent|NewLights_Spawner}} - spawner of deferred point lights. | ||
* [[ | * {{ent|env_lensflare}} - cinematic dynamic lens flare. | ||
* [[Effect flags]] | * {{ent|newLight_Spot}} - spot deferred light entity. | ||
* [https://chetanjags.wordpress.com/2023/07/18/blackmesa-xenengine-part-4-lighting-shadows/ BlackMesa XenEngine: Part 4 – Lighting & Shadows] | * {{ent|newLights_settings}} - entity that changes deferred light settings. | ||
* [https://chetanjags.wordpress.com/2023/07/11/blackmesa-xenengine-part2-how-a-frame-is-rendered/ BlackMesa XenEngine: Part2 – How a Frame is Rendered] | * {{ent|godrays_settings}} - entity that changes godrays settings. | ||
* [https://chetanjags.wordpress.com/2022/06/01/blackmesa-xenengine-part1-a-heavily-modified-source-engine/ BlackMesa XenEngine: Part1 – Heavily Modified Source Engine] | * {{ent|env_cascade_light}} - deferred cascade sun light entity. | ||
* [[New Lights Editor]] - in game deferred lights editor. | |||
* [[Effect flags]] - effects flags, some of them are dynamic light effects. | |||
* [https://chetanjags.wordpress.com/2023/07/18/blackmesa-xenengine-part-4-lighting-shadows/ BlackMesa XenEngine: Part 4 – Lighting & Shadows] - page from Chetan (lead programmer for Black Mesa) about new lights. | |||
* [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 Chetan (lead programmer for Black Mesa) about how a frame is rendered. | |||
* [https://chetanjags.wordpress.com/2022/06/01/blackmesa-xenengine-part1-a-heavily-modified-source-engine/ BlackMesa XenEngine: Part1 – Heavily Modified Source Engine] page from Chetan (lead programmer for Black Mesa) about {{xe|4}}. | |||
Latest revision as of 09:15, 4 November 2025
$specmap_texture is a material shader parameter available in
Black Mesa.
Shader used on surfaces to give them PBR style speculars. Works with VertexLitGeneric and LightmappedGeneric. This shader only works with deferred rendering lighting entities, which are using the SpecularMultiplier parameter.
This shader is mainly used with LightmappedGeneric, because it is the only option for glossy effects on world geometry and brush models. VertexLitGeneric is mainly used with $phong instead, because new specular supports only new lights, while $phong also supports baked lights and has a lot of parameters, the only exception to this is prop_static.
List of entities this shader works with
- NewLight_Point, NewLight_Spot - controlled using
SpecularMultiplierkeyvalue. - npc_zombie_hev - flashlight used by this entity (if enabled).
- npc_plantlight, npc_plantlight_stalker - light bulb from plant eye.
- player - first person flashlight (if enabled). Controlled using
gb_flashlight_SpecMul, the default value is 0.8. - env_cascade_light - works only with VertexLitGeneric.
- prop_barrel_cactus - lighting from this entity.
- prop_barrel_cactus_semilarge - lighting from this entity.
- prop_barrel_interloper - lighting from this entity.
- prop_barrel_interloper_small - lighting from this entity.
- bmortar - lighting from this entity.
Parameters and Effects
Defines a specularmap texture for the shader.
|
|
Defines glossiness. Works differently depending on
$specmap_mode value.
|
|
|
|
|
|
Use the alpha channel of the
$bumpmap or $normalmap as a specular mask. $specmap_texture will be used as an additional mask or glossiness mask if $specmap_mode is set. This allows a blendable specular mask on LightmappedGeneric.Example VMT:
Todo: Check to see if parameters such as
$envmapmask or $basealphaenvmapmask and others affect new specular lights.See also
- $moss_enable - moss shader.
- $pomscale - parallax occlusion mapping shader.
- Lightmapped_4WayBlend - 4 way blend shader.
- $halflambert_gbuffer_off - gbuffer's halflambert option.
- newLight_Dir - directional sun light with godrays only.
- NewLights_Spawner - spawner of deferred point lights.
- env_lensflare - cinematic dynamic lens flare.
- newLight_Spot - spot deferred light entity.
- newLights_settings - entity that changes deferred light settings.
- godrays_settings - entity that changes godrays settings.
- env_cascade_light - deferred cascade sun light entity.
- New Lights Editor - in game deferred lights editor.
- Effect flags - effects flags, some of them are dynamic light effects.
- BlackMesa XenEngine: Part 4 – Lighting & Shadows - page from Chetan (lead programmer for Black Mesa) about new lights.
- BlackMesa XenEngine: Part2 – How a Frame is Rendered - page from Chetan (lead programmer for Black Mesa) about how a frame is rendered.
- BlackMesa XenEngine: Part1 – Heavily Modified Source Engine page from Chetan (lead programmer for Black Mesa) about
Xengine.