Эта статья документации для всего, что использует платформу Source. Нажмите для получения дополнительной информации.

Ru/$envmapmask: Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
m (→‎Дополнительные параметры: Unicodifying, replaced: [[Image: → [[File:)
No edit summary
 
(8 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{langsp}}
{{LanguageBar}}


{{toc-right}}
{{toc-right}}


{{shaderparam:ru|$envmapmask}} Этот параметр определяет зеркальную маску [Specular mask], которая влияет на то, насколько сильно каждый пиксель материала отражает свет от{{ent|$envmap}}. Маска должна быть изображением в градациях серого, в котором полностью отражающие области являются белыми, а полностью матовые области - черными. Для отражения диффузного типа, которое не зависит от<code>$envmap,</code>см.{{ent|$phong}}.
{{this is a|shader parameter|name=$envmapmask}} Этот параметр определяет '''маску бликов''', которая влияет на то, насколько сильно каждый пиксель материала отражает свет от {{ent|$envmap}}. Маска должна быть изображением в градациях серого, в котором полностью отражающие области являются белыми, а полностью матовые области - черными. Для отражения диффузного типа, которое не зависит от<code>$envmap,</code>см.{{ent|$phong}}.
{{bug|suf=:ru|В играх на {{Src07|3}} использование маски $envmapmask, которая не хранится во вложенной подпапке, приведет к сбою загрузки текстуры в игре.}}
{{bug|suf=:ru|В играх на {{src07|2}} использование <code>$envmapmask</code>, которая не хранится во вложенной подпапке, приведет к сбою загрузки текстуры в игре.}}
{{warning|suf=:ru|<code>$envmapmask</code> не будет работать с материалами, использующими [[$bumpmap|карты нормалей]]. Посмотрите [[#Альтернативные_методы]].}}
{{warning|suf=:ru|В большинстве случаев, <code>$envmapmask</code> не будет работать с материалами, использующими {{ent|$bumpmap}}. Смотреть [[#Альтернативные_методы]].
{{note|Исключения:
* '''[[LightmappedReflective]]''' (использует {{ent|$normalmap}})
* {{mapbase|only}} '''[[VertexLitGeneric]]'''
* {{csgo|only}}'''[[LightmappedGeneric]]'''
}} }}
{{warning|<code>$envmapmask</code> не будет работать с материалами, использующими {{ent|$phong}}. По умолчанию envmap будет использовать альфа-канал {{ent|$basetexture}} для маскировки.}}
{{note|Маски бликов традиционно являются чёрно-белыми, однако они могут иметь цвет. В таком случае информация о цвете будет использоваться как потексельная $envmaptint.}}


==Пример синтаксиса VMT==
==Пример синтаксиса VMT==
Line 11: Line 18:
  $envmapmask <текстура>
  $envmapmask <текстура>


  [[VertexLitGeneric]]
  {{L|VertexLitGeneric}}
  {
  {
  [[$envmap]] env_cubemap
  {{L|$envmap}} env_cubemap
  '''$envmapmask "props/tvscreen_test"'''
  '''$envmapmask "props/tvscreen_test"'''
  }
  }


==Дополнительные параметры==
==Дополнительные параметры==
[[File:Scanner mask.jpg|thumb|250px|Зеркальная маска у [[npc_cscanner]].]]
[[File:Scanner mask.jpg|thumb|250px|Маска блика {{L|npc_cscanner}}'а.]]


{{MatParam|$envmapmasktransform|matrix|
{{MatParamDef|$envmapmasktransform|matrix|
: Трансформирует маску зеркальной текстуры.
: Трансформирует текстуру маски бликов.
{{VMT_UVtransform|suf=:ru}}|dx9=1}}
{{VMT_UVtransform|suf=:ru}}|dx9=1}}
{{MatParam|$envmapmaskscale|float|Масштабирует зеркальную маску до заданного значения. Также, выше посмотрите на<code>$envmapmasktransform</code>.|dx8=1}}
{{MatParamDef|$envmapmaskscale|float|Масштабирует маску бликов до заданного значения. Смотреть <code>$envmapmasktransform</code> (выше).|dx8=1}}
{{MatParam|$envmapmaskframe|int|Кадр для начала анимированной зеркальной маски.}}
{{MatParamDef|$envmapmaskframe|int|Кадр для начала анимированной маски бликов.}}
====CS:GO WorldVertexTransition Parameters====
====CS:GO WorldVertexTransition Parameters====
{{MatParam|$envmapmask2|texture|Зеркальная маска для второго слоя {{ent|WorldVertexTransition}}.|only={{csgo}}|shaders=WorldVertexTransition}}
{{MatParamDef|$envmapmask2|texture|Маска бликов для второго слоя {{ent|WorldVertexTransition}}.|only={{csgo}}|shaders=WorldVertexTransition}}
{{MatParam|$envmapmasktransform2|matrix|Трансформация текстуры для <code>$envmapmask2</code>.|only={{csgo}}|shaders=WorldVertexTransition}}
{{MatParamDef|$envmapmasktransform2|matrix|Трансформация текстуры для <code>$envmapmask2</code>.|only={{csgo}}|shaders=WorldVertexTransition}}
{{MatParam|$envmapframe2|int|Кадр для начала анимации <code>$envmapmask2</code>.|only={{csgo}}|shaders=WorldVertexTransition}}
{{MatParamDef|$envmapframe2|int|Кадр для начала анимации <code>$envmapmask2</code>.|only={{csgo}}|shaders=WorldVertexTransition}}


==Альтернативные методы==
==Альтернативные методы==
Rather than creating a whole new texture for a specular mask, you can embed one into the [[alpha channel]] of the {{ent|$basetexture}} or <code>$bumpmap</code>. Model materials with <code>$bumpmap</code> '''must''' do this. Unfortunately, it ''won't'' reduce memory usage.
Вместо создания новой полноценной текстуры для маски бликов, вы можете встроить её в {{L|alpha channel|альфа-канал}} {{ent|$basetexture}} или {{code|$bumpmap}}. Материалы моделей с {{code|$bumpmap}} '''обязаны''' иметь маску бликов в альфа-канале. К сожалению, это ''не'' уменьшит использование памяти.


If you do use these commands, transformations and other such parameters applied to <code>$basetexture / $bumpmap</code> will also apply to the specular mask.
Если вы используете эти команды, то трансформации и другие похожие параметры, применённые к {{code|$basetexture / $bumpmap}}, также будут применяться к маске бликов.


{{MatParam|$basealphaenvmapmask|bool|Use the alpha channel of the <code>$basetexture</code> as the specular mask. {{note|Alpha channels embedded in <code>$basetexture</code> work in reverse. Transparent areas are reflective, opaque areas are matte. This is because, say, a window texture's alpha mask would be mostly black to allow for transparency -- yet that black part of the mask would also be the most reflective part. To avoid having to duplicate a texture file simply to invert the alpha mask, you can use this material parameter instead.}}
{{MatParamDef|$basealphaenvmapmask|bool|Использует альфа-канал {{code|$basetexture}} как маску бликов.}}
: {{note|The alpha channel '''''isn't''''' inverted in the Source 2007 engine for models, but the alpha channel '''''is''''' inverted for brushes!}}}}
{{note|
: {{bug| In CSGO, this parameter breaks materials using $translucent, limiting its usefulness. Use $envmapmask instead.}}
* Маска бликов, встроенная в альфа-канал {{code|$basetexture}} работает наоборот. Прозрачные области являются отражающими, а непрозрачные области являются матовыми. Всё из-за того, что, скажем, альфа маска текстуры окна будет чёрной, по большей части, чтобы сделать её прозрачной, но эта же чёрная часть маски также будет наиболее отражающей частью. Вместо дублирования текстуры, чтобы просто инвертировать альфа маску, вы можете использовать этот параметр материала.
{{MatParam|$normalmapalphaenvmapmask|bool|Use the alpha channel of the <code>$bumpmap</code> as the specular mask.
* Альфа-канал '''''не''''' инвертирован в {{src07|2}} ''и'' {{csgo|2}} для моделей, но альфа-канал '''''инвертирован''''' для объёмов!
: {{note|Will not work if <code>[[$phong|$basemapalphaphongmask]]</code> or <code>[[$phong|$basemapluminancephongmask]]</code> are used.}}}}
* {{l4d2}} автоматически включает этот параметр, если '''$envmap''' присутствует. Непрозрачные области являются отражающими, тогда как прозрачные являются матовыми. Установите значение на {{L|bool|true}}, чтобы инвертировать альфа-канал {{code|$basetexture}}. Это позволяет {{code|{{L|$bumpmap}}}} иметь выделенную маску {{code|{{L|$phong}}}}, когда прозрачность материала не нужна.}}
{{MatParam|$selfillum_envmapmask_alpha|float|Use the alpha channel of the <code>$envmapmask</code> as the {{ent|$selfillum}} mask instead of <code>$basetexture</code>'s alpha. In this event this command replaces <code>$selfillum</code> - do not use both.}}
{{bug|<ul>
{{MatParam|$envmapmaskintintmasktexture|bool|Use the red channel of the {{ent|$tintmasktexture}} as the specular mask.|only={{csgo}}|shaders=VertexLitGeneric}}
<li> В {{csgo}}, этот параметр ломает материалы, использующие {{ent|$translucent}}. Вместо него используйте {{code|$envmapmask}} или {{code|$normalmapalphaenvmapmask}}.<br>
<li> Во всех: {{gmod}}{{src13}}{{tf2}}{{as}}{{csgo}} в шейдерах {{ent|VertexLitGeneric}} ('''Без''' {{ent|$phong}}), {{ent|WorldVertexTransition}} и {{ent|LightmappedGeneric}}, <code>$basealphaenvmapmask</code> не может быть использован с {{ent|$bumpmap}}.<br>
<li> Во всех: {{gmod}}{{src13}}{{tf2}}{{as}}{{csgo}} в шейдерах {{ent|LightmappedGeneric}} и {{ent|WorldVertexTransition}}, <code>$basealphaenvmapmask</code> не может быть использован с {{ent|$selfillum}}, {{ent|$seamless_detail}} или {{ent|$distancealpha}}.<br>
<li> В {{csgo}}, в шейдерах {{ent|LightmappedGeneric}} и {{ent|WorldVertexTransition}}, <code>$basealphaenvmapmask</code> не может быть использован с [[$detail#Parameters and Effects|$detailblendmode]] "9" или {{ent|$envmapanisotropy}}.<br>
<li> В {{csgo}}, в шейдере {{ent|Lightmapped_4WayBlend}}, <code>$basealphaenvmapmask</code> не может быть использован с {{ent|$selfillum}}.
<li> Этот параметр не может быть использован вместе с {{ent|$bumpmap}} в шейдере {{ent|LightmappedGeneric}}
</ul>}}
 
<br>{{MatParamDef|$normalmapalphaenvmapmask|bool|Использует альфа-канал {{code|$bumpmap}} или {{code|$normalmap}} как маску бликов.
{{warning|Using this in combination with {{code|{{L|$phong|$basemapalphaphongmask}}}} or {{code|{{L|$phong|$basemapluminancephongmask}}}} will set the mask used for the {{ent|$envmap}} to be those instead. <br>
'''Существуют некоторые нюансы''' при использовании {{ent|$phong}}. Смотреть его запись для получения дополнительной информации о возможных проблемах..}}
}}
{{bug|
* Во всех: {{gmod}}{{src13}}{{tf2}}{{as}}{{csgo}} в шейдере {{ent|VertexLitGeneric}} ('''Без''' {{ent|$phong}}), <code>$normalmapalphaenvmapmask</code> не может быть использован вместе с [[Glowing_Textures#.24selfillum|$selfillumfresnel]].<br>
:{{note| При использовании <code>$normalmapalphaenvmapmask</code> вместе с {{ent|$phong}} и [[Glowing_Textures#.24selfillum|$selfillumfresnel]] имеются особые нюансы, которые следует учитывать. Смотреть {{ent|$phong}} для большей информации.}}
* В {{csgo}}, в шейдерах {{ent|LightmappedGeneric}} и {{ent|WorldVertexTransition}}, {{code|{{L|$normalmapalphaenvmapmask}}}} не может быть использован вместе с [[$detail#Parameters and Effects|$detailblendmode]] "9" или {{ent|$envmapanisotropy}}.}}<br>
<br>{{MatParamDef|$selfillum_envmapmask_alpha|float|Использует альфа-канал {{code|$envmapmask}} как маску {{ent|$selfillum}}, вместо альфа-канала {{code|$basetexture}}.<br>
: {{bug|Этот параметр заменяет {{code|$selfillum}}. Если используются оба параметра, то это приведёт к ошибке. Материал не отобразится.}}
: {{warning|Только в шейдере {{ent|VertexLitGeneric}} - Учтите, что <code>$envmapmask</code> не работает '''вместе с''' {{ent|$bumpmap}} или {{ent|$phong}}.}}
{{todo|This is not an alternative method to <code>$envmapmask</code> and in fact that parameter is required to use this. <code>Move it to Additional Parameters</code> and pray links on other pages don't break.}}}}
<br>{{MatParamDef|$envmapmaskintintmasktexture|bool|Использует красный канал {{ent|$tintmasktexture}} как маску бликов.|only={{csgo}}|shaders=VertexLitGeneric}}


==Merging Specular Level into Normal Alpha in 3ds Max==
==Merging Specular Level into Normal Alpha in 3ds Max==
Line 48: Line 75:
These steps are automated in the [http://dev.wallworm.com/topic/34/alpha_spec.html Alpha Spec] tool in Wall Worm 2.72+.
These steps are automated in the [http://dev.wallworm.com/topic/34/alpha_spec.html Alpha Spec] tool in Wall Worm 2.72+.


==Также посмотрите==
==Смотреть также==
* [[$basetexture:ru|$basetexture]] - основная текстура
* {{L|$basetexture}} - основная текстура
* [[$envmap]] - карта окружения
* {{L|$envmap}} - (карта окружения)
* [[$phong]] - диффузное отражение
* {{L|$phong}} - (диффузное отражение)
* [[$selfillum]] - самосвечение
* {{L|$selfillum}} - самосвечение
{{ACategory|Shader parameters|e}}
{{ACategory|VMT Reflections}}

Latest revision as of 11:50, 23 August 2025

English (en)Français (fr)Русский (ru)中文 (zh)Translate (Translate)

$envmapmask - это материальный(en) параметр шейдера(en), доступно для всех игр на движке Source Source. Этот параметр определяет маску бликов, которая влияет на то, насколько сильно каждый пиксель материала отражает свет от $envmap. Маска должна быть изображением в градациях серого, в котором полностью отражающие области являются белыми, а полностью матовые области - черными. Для отражения диффузного типа, которое не зависит от$envmap,см.$phong.

Icon-Bug.pngБаг:В играх на Source 2007 Source 2007 использование $envmapmask, которая не хранится во вложенной подпапке, приведет к сбою загрузки текстуры в игре.  [нужно проверить в ?]
Warning.pngПредупреждение:В большинстве случаев, $envmapmask не будет работать с материалами, использующими $bumpmap. Смотреть #Альтернативные_методы.
Note.pngПримечание:Исключения:
Warning.pngПредупреждение:$envmapmask не будет работать с материалами, использующими $phong. По умолчанию envmap будет использовать альфа-канал $basetexture для маскировки.
Note.pngПримечание:Маски бликов традиционно являются чёрно-белыми, однако они могут иметь цвет. В таком случае информация о цвете будет использоваться как потексельная $envmaptint.

Пример синтаксиса VMT

$envmapmask <текстура>
VertexLitGeneric(en)
{
	$envmap(en)			env_cubemap
	$envmapmask		"props/tvscreen_test"
}

Дополнительные параметры

Маска блика npc_cscanner(en)'а.
$envmapmasktransform(en) <matrix(en)> (DX9 SM2)
Трансформирует текстуру маски бликов.
Позиция по умолчанию: center .5 .5 scale 1 1 rotate 0 translate 0 0.
  1. center определяет ценр вращения. Необходим только при использовании rotate.
  2. scale вставляет текстуру в материал заданное количество раз. 2 1 — это 50%-ый масштаб по оси X.
  3. rotate вращает текстуру "против часовой стрелки/по часовой стрелке" в градусах. Принимает любое число, включая негативы.
  4. translate сдвигает текстуру до заданных значений. Значение .5 сдвинет текстуру на 50%.
Note.pngПримечание:Все значения должны быть добавлены!
Icon-Bug.pngБаг:Масштабирование текстуры может вызвать странные проблемы, когда инструмент «Texture Lock» в Hammer фактически не фиксирует текстуру на месте.  [нужно проверить в ?]
Icon-Bug.pngБаг:Вращающиеся текстуры, примененные к брашам, будут вращаться вокруг начала координат карты. Чтобы исправить это, нужно изменить центральное положение в VMT на начало координат браша.  [нужно проверить в ?]
Масштабирует маску бликов до заданного значения. Смотреть $envmapmasktransform (выше).
Кадр для начала анимированной маски бликов.

CS:GO WorldVertexTransition Parameters

$envmapmask2(en) <texture(en)> (только в Counter-Strike: Global Offensive)
Shader(s): WorldVertexTransition
Маска бликов для второго слоя WorldVertexTransition.
$envmapmasktransform2(en) <matrix(en)> (только в Counter-Strike: Global Offensive)
Shader(s): WorldVertexTransition
Трансформация текстуры для $envmapmask2.
$envmapframe2(en) <целое число(en)> (только в Counter-Strike: Global Offensive)
Shader(s): WorldVertexTransition
Кадр для начала анимации $envmapmask2.

Альтернативные методы

Вместо создания новой полноценной текстуры для маски бликов, вы можете встроить её в альфа-канал(en) $basetexture или $bumpmap. Материалы моделей с $bumpmap обязаны иметь маску бликов в альфа-канале. К сожалению, это не уменьшит использование памяти.

Если вы используете эти команды, то трансформации и другие похожие параметры, применённые к $basetexture / $bumpmap, также будут применяться к маске бликов.

Использует альфа-канал $basetexture как маску бликов.
Note.pngПримечание:
  • Маска бликов, встроенная в альфа-канал $basetexture работает наоборот. Прозрачные области являются отражающими, а непрозрачные области являются матовыми. Всё из-за того, что, скажем, альфа маска текстуры окна будет чёрной, по большей части, чтобы сделать её прозрачной, но эта же чёрная часть маски также будет наиболее отражающей частью. Вместо дублирования текстуры, чтобы просто инвертировать альфа маску, вы можете использовать этот параметр материала.
  • Альфа-канал не инвертирован в Source 2007 Source 2007 и Counter-Strike: Global Offensive Counter-Strike: Global Offensive для моделей, но альфа-канал инвертирован для объёмов!
  • Left 4 Dead 2 автоматически включает этот параметр, если $envmap присутствует. Непрозрачные области являются отражающими, тогда как прозрачные являются матовыми. Установите значение на true(en), чтобы инвертировать альфа-канал $basetexture. Это позволяет $bumpmap(en) иметь выделенную маску $phong(en), когда прозрачность материала не нужна.
Icon-Bug.pngБаг:  [нужно проверить в ?]


Использует альфа-канал $bumpmap или $normalmap как маску бликов.
Warning.pngПредупреждение:Using this in combination with $basemapalphaphongmask(en) or $basemapluminancephongmask(en) will set the mask used for the $envmap to be those instead.
Существуют некоторые нюансы при использовании $phong. Смотреть его запись для получения дополнительной информации о возможных проблемах..
Icon-Bug.pngБаг:
Note.pngПримечание: При использовании $normalmapalphaenvmapmask вместе с $phong и $selfillumfresnel имеются особые нюансы, которые следует учитывать. Смотреть $phong для большей информации.



Использует альфа-канал $envmapmask как маску $selfillum, вместо альфа-канала $basetexture.
Icon-Bug.pngБаг:Этот параметр заменяет $selfillum. Если используются оба параметра, то это приведёт к ошибке. Материал не отобразится.  [нужно проверить в ?]
Warning.pngПредупреждение:Только в шейдере VertexLitGeneric - Учтите, что $envmapmask не работает вместе с $bumpmap или $phong.
Нужно сделать: This is not an alternative method to $envmapmask and in fact that parameter is required to use this. Move it to Additional Parameters and pray links on other pages don't break.


Shader(s): VertexLitGeneric
Использует красный канал $tintmasktexture как маску бликов.

Merging Specular Level into Normal Alpha in 3ds Max

To merge a Specular Level map into the Normal Map alpha, you can create a Composite Map node with the normal map in Layer 1 and the specular map in Mask 1. Then right-click the composite map, click Render Map and save this new image to file (remembering to keep the Gamma at 1.0 and using 32 bits per pixel in the save options).

These steps are automated in the Alpha Spec tool in Wall Worm 2.72+.

Смотреть также