Ru/$phong: Difference between revisions
Churkinator (talk | contribs) No edit summary |
Churkinator (talk | contribs) No edit summary |
||
Line 2: | Line 2: | ||
{{Update translation}} | {{Update translation}} | ||
{{this is a|shader parameter|name=$phong|since=Source 2006|shader=VertexLitGeneric}} | {{this is a|shader parameter|name=$phong|since=Source 2006|shader=VertexLitGeneric}} | ||
[[File:Alyx phong closeup.jpg|thumb|200px| | [[File:Alyx phong closeup.jpg|thumb|200px|Фонг наделяет кожу, губы и головную повязку Аликс бликами.]] | ||
It is also available on the {{code|[[LightmappedGeneric]]}} and {{code|[[WorldVertexTransition]]}} shaders in all games since {{csgo|4}}{{also|{{gmod}}{{xengine}}{{mapbase}}}}. It provides {{w|diffuse reflection|icon=hide}}s at low intensity and {{w|specular highlight|icon=hide}}s at apex intensity, masked by a texture which control per-texel its intensity. Для полного объяснения смотреть [[Phong materials|материалы Фонга]]. | |||
{{Note|Затенение Фонга для <code>LightmappedGeneric</code> и <code>WorldVertexTransition</code> доступен только в {{csgobranch}}{{strata}}. It requires the material to be lit by the sunlight from a {{ent|env_cascade_light}} entity to work properly and uses the dynamic shadows generated by it as a mask on top of the traditional phong masking. ({{Strata|since}} {{ent|env_projectedtexture}} также влияет на примитивы с включённым фонгом) | |||
{{bug*|{{gmod|4}} reads lighting direction for brush phong from {{ent|env_sun}}; карты с нескольким количеством солнц могут иметь не совсем точные отражения фонга на примитивах.}}}} | |||
{{Note|Затенение Фонга для <code>LightmappedGeneric</code> также доступно и в {{mapbase|4}}, но в нём оно реализовано по другому.}} | |||
== | ==Синтаксис== | ||
$phong <{{L|bool}}> | $phong <{{L|bool}}> | ||
{{note|Все параметры в примере ниже должны быть указаны в материале, иначе затенение Фонга не появится вовсе, исключением является {{insurgency|4}}.}} | |||
:{{todo|Другие игры, которые не требуют присутствия всех параметров фонга в материале (Скорее всего Portal 2 и дальше)}} | |||
<syntaxhighlight lang=php> | <syntaxhighlight lang=php> | ||
VertexLitGeneric | VertexLitGeneric | ||
Line 16: | Line 19: | ||
$phong 1 | $phong 1 | ||
$bumpmap [ | $bumpmap [текстура] | ||
$phongexponent 5 // либо это | $phongexponent 5 // либо это | ||
$phongexponenttexture [ | $phongexponenttexture [текстура] // либо это | ||
$phongboost 1.0 | $phongboost 1.0 | ||
$phongfresnelranges "[0 0.5 1]" | $phongfresnelranges "[0 0.5 1]" | ||
Line 25: | Line 28: | ||
== Параметры шейдера == | == Параметры шейдера == | ||
=== Маски === | |||
{{warning|Имеются некоторые нюансы касаемо {{ent|$normalmapalphaenvmapmask}} и [[Glowing_Textures#.24selfillum|$selfillumfresnel]], когда используется {{ent|$phong}}!}} | |||
* Используя [[Glowing_Textures#.24selfillum|$selfillumfresnel]] '''без''' {{ent|$normalmapalphaenvmapmask}} вынудит {{ent|$envmap}} использовать альфа-канал {{ent|$basetexture}} как маску. | |||
* Используя [[Glowing_Textures#.24selfillum|$selfillumfresnel]] '''вместе с''' {{ent|$normalmapalphaenvmapmask}} умножит {{ent|$envmap}} на <code>0.0f</code>, тем самым отключив эффект! | |||
* Когда [[Glowing_Textures#.24selfillum|$selfillumfresnel]] '''не''' используется, то маска, используемая для {{ent|$envmap}} будет альфа-каналом {{ent|$basetexture}} '''до тех пор''' пока не будет использован {{ent|$normalmapalphaenvmapmask}}. | |||
* '''Если''' {{ent|$normalmapalphaenvmapmask}} используется, то альфа-канал {{ent|$bumpmap}} будет использоваться как маска Фонга. Используя <code>$basemapalphaphongmask</code> или <code>$basemapluminancephongmask</code> перекроет этот параметр. | |||
<br> | |||
{{MatParam|$bumpmap|texture|Для работы Фонга требуется маска. [[alpha channel|Альфа-канал]] [[$bumpmap|карты нормалей]] работает как маска Фонга по умолчанию.}} | |||
{{MatParam|$basemapalphaphongmask|bool|Использует [[alpha channel|альфа-канал]] {{ent|$basetexture}} как маску Фонга, вместо [[alpha channel|альфа-канала]] <code>$bumpmap</code>. | |||
{{warning|Используя этот параметр вместе с {{ent|$normalmapalphaenvmapmask}} перекроет маску используемую для {{ent|$envmap}}, и сделает её содержимым альфа-канала {{ent|$basetexture}}!}} | |||
{{warning|В {{gmod|4}} используя этот параметр вместе с {{ent|$normalmapalphaenvmapmask}} и {{ent|$envmap}} отображения в {{ent|$envmap}} и '''<code>$phong</code>''' будут замаскированы как альфа-каналом '''<code>$basemapalphaphongmask</code>''', так и альфа-каналом {{ent|$normalmapalphaenvmapmask}}.}} |since={{src07}}|shaders=VertexLitGeneric}} | |||
{{MatParam|$basemapluminancephongmask|bool|Маскирует силу фонга основываясь на яркости <code>$basetexture</code>. | |||
{{bug|Basetexture Luminance заменит маску используемую для {{ent|$envmap}}, '''если''' {{ent|$normalmapalphaenvmapmask}} уже используется.}} | |||
{{bug|Не работает в {{gmod|4}}.}} | |||
|not={{gmod}}|since={{l4d}}|shaders=VertexLitGeneric}} | |||
{{MatParam|$phongexponent|and=$phongexponent2|int|Общее значение [[Phong materials#Phong mask and exponent texture|экспоненты]]. Перекрывает маску экспоненты, если она присутствует. | |||
: <code>$phongexponent2</code> предназначен для второго материала <code>WorldVertexTransition</code> в {{csgobranch|4}}.}} | |||
{{MatParam|$phongexponenttexture|texture|По-тексельная карта экспоненты. В карте экспоненты хранятся: | |||
:* '''Красный канал:''' Маска экспоненты (размер блика, значение варьируется от 0 до 255, 0 - большой блик, 255 - маленький.) | |||
:* '''Зелёный канал:''' Маска оттенка альбедо (работает только если <code>$phongalbedotint 1</code>, значение варьируется от 0 до 255, 0 - нет оттенка, 255 - полный оттенок.) | |||
:* '''Синий канал:''' Ничего. | |||
:* '''Альфа-канал:''' Маска {{ent|$rimlight}} (работает только если '''<code>$rimmask 1</code>'''.) | |||
:{{Note|Затенения <code>LightmappedGeneric</code> и <code>WorldVertexTransition</code> не поддерживают <code>$phongexponenttexture</code>. Вместо этого используйте <code>$phongexponent</code>.}}|shaders=VertexLitGeneric}} | |||
{{MatParam|$phongexponentfactor|float|Multiply the exponent from the <code>$phongexponenttexture</code> by this amount. {{tip| По умолчанию значение этого параметра <code>"0.0"</code>. Однако, более разумным значением по умолчанию было бы <code>"149.0"</code>}}|only={{src13mp}}{{tf2}}|shaders=VertexLitGeneric}} | |||
{{MatParam|$invertphongmask|bool|Инвертирует значения маски Фонга. | |||
{{bug|In {{as}}s and {{src13}}s Shadercode, using this parameter will invert the mask used for {{ent|$envmap}}, not the one used for <code>$phong</code>! }} | |||
{{confirm| Is this the case for all branches?}} | |||
|since={{src07}}|shaders=VertexLitGeneric}} | |||
{{MatParam|$forcephong|bool|Заставляет работать затенение фонга на материалах использующих его, даже на низких уровнях видеокарты, когда <code>mat_phong</code> отключён.|since={{portal2}}|shaders=VertexLitGeneric}} | |||
{{MatParam|$diffuseexp|float|Diffuse exponent used for dynamic lights only. | |||
{{note|При использовании этого параметра с {{ent|$halflambert}} сильно снизит его эффект.}}|only={{L4ds}}|shaders=VertexLitGeneric, Infected}} | |||
{{MatParam|$shinyblood|int|Derive phong mask from areas that are more red than others. Only when variation is disabled.|only={{L4ds}}|shaders=VertexLitGeneric, Infected}} | |||
{{MatParam|$shinybloodexponent|int|Экспонента для параметра выше.|only={{L4ds}}|shaders=VertexLitGeneric, Infected}} | |||
=== | === Яркость === | ||
{{MatParam|$phongboost|float|Коэффициент яркости фонга. Чем выше значение, тем ярче блик. Полезен для таких поверхностей как металл и стекло.|shaders=VertexLitGeneric, LightmappedGeneric({{mapbase|only}})}} | |||
{{MatParam|$phongfresnelranges|matrix|Смотреть [[Phong materials#Phong Fresnel ranges|Диапазоны Фонга по Френелю]]. Значения по умолчанию: <code>"[0 0.5 1]"</code>. | |||
:{{note|Эти диапазоны френеля также влияют и на <code>$envmap</code>, если он и Фонг включены в материале.}} | |||
:{{note| drives the x component of a phongwarptexture if specified.}}|shaders=VertexLitGeneric, LightmappedGeneric({{mapbase|only}})}} | |||
{{MatParam|$phongdisablehalflambert|bool|Отключает принудительное [[$halflambert|half-lambertian]] затенение на материалах Фонга. {{note|This parameter is effectively forced on in {{csgobranch|4}} due to <code>$halflambert</code> being disabled.}}|since={{as}}|also={{gmod}},{{Mapbase}}|shaders=VertexLitGeneric}} | |||
=== Цвета === | |||
{{MatParam|$phongalbedotint|bool|Окрашивает блик цветом <code>$basetexture</code>. Количество окраски определяется зелёным каналом <code>$phongexponenttexture</code>. <code>$phongexponenttexture</code> должен быть указан, чтобы <code>$phongalbedotint</code> мог заработать. | |||
: {{Warning|<code>$phongalbedotint</code> не может быть использован вместе с <code>$phongtint</code>. Последний параметр отключит эффект.}} | |||
: {{Note|<code>$phongalbedotint</code> работает путём умножения <code>$basetexture</code> на отражение, при это не затемняя альбедо. В результате блик станет тусклее, поэтому учтите это в вашей маске фонга или с помощью <code>$phongboost</code>.}} | |||
: {{Note|<code>$phongalbedotint</code> окрасит блики оригинальным цветом <code>$basetexture</code>, даже когда материал окрашен используя <code>$color2</code> или <code>rendercolor.</code>}}|since={{src07}}|shaders=VertexLitGeneric}} | |||
: | [[File:Albedotint example.jpg|thumb|200px|Пример, демонстрирующий как AlbedoTint отображается на модели.]] | ||
{{MatParam|$phongalbedoboost|float|Phong albedo overbrightening factor. Диапазон: 0-255. | |||
: {{note| Этот параметр умножит окрас применяемый к фонгу от $phongalbedotint.}} | |||
: {{bug| Этот параметр не работает при использовании [[$detail]]. }}|since={{csgo}}|also={{gmod}}|shaders=VertexLitGeneric}} | |||
[[File:Phongwarp example.png|thumb|200px|Охотник без и со своей <code>$phongwarptexture</code>.]] | |||
{{MatParam|$phongtint|RGB matrix|Оттенок цвета отражения Фонга. | |||
: | : {{Warning|Этот параметр перекроет <code>$phongalbedotint</code>, если используются оба.}} | ||
: {{note| Также окрашивает {{ent|$rimlight}}}}|since={{src07}}|shaders=VertexLitGeneric}} | |||
: | [[File:Phongwarp_coordinate_guide.png|thumb|200px|Разбор $phongwarptexture на составляющие: рассчитанные координаты, текстура и результат.]] | ||
{{MatParam|$phongwarptexture|texture|Используется для создания эффекта переливчатости, как показано на [[npc_hunter|Охотниках]] из Второго Эпизода. | |||
: The highlight is multiplied with a texture. The coordinates of the sampled pixel are as follows: | |||
: {{ | :x: 1 - (distance to the center of the highlight) | ||
:y: 1 - (fresnel component as computed by [[Phong materials#Phong Fresnel ranges|Phong Fresnel ranges]]) | |||
: {{ | : {{note|Disables the initial phongfresnelranges masking}} | ||
: {{bug|Не работает в {{l4d2|4}}.}}|since={{src07}}|shaders=VertexLitGeneric}} | |||
: {{ | [[File:Brush_phong.jpg|thumb|200px|Фонг на примитиве в {{csgo|2}} с использованием tile/hr_t/inferno/tile_a. Заметьте полное отсутствие отражения в затемнённой области.]] | ||
=== | ===Параметры затенения на примитивах{{csgobranch|only}}{{also|{{gmod}}}} === | ||
{{MatParam|$phongmaskcontrastbrightness|and=$phongmaskcontrastbrightness2|vector2|Первое значение контролирует уровень контраста между светлыми и тёмными областями в маске, а второе значение контролирует общую яркость. | |||
: <code>$phongmaskcontrastbrightness2</code> предназначен для второго материала <code>WorldVertexTransition</code>. | |||
: {{todo|Узнать диапазон обоих значений.}}|shaders=LightmappedGeneric, WorldVertexTransition}} | |||
{{MatParam|$phongamount|and=$phongamount2|vector4|Первые три значения контролируют оттенок цвета, а четвёртое значение управляет яркостью. Четвёртое значение может быть больше 1, но в таком случае оно повлияет на яркость всей текстуры, а не только блика. | |||
: <code>$phongamount2</code> предназначен для второго материала <code>WorldVertexTransition</code>.|shaders=LightmappedGeneric, WorldVertexTransition}} | |||
{{MatParam|$phongbasetint|and=$phongbasetint2|float|Позволяет <code>$basetexture</code> и/или <code>$basetexture2</code> окрасить цвет блика.|shaders=LightmappedGeneric, WorldVertexTransition}} | |||
== Консольные команды == | |||
{{IO|mat_phong|param=bool|Отключает или включает затенение Фонга. Значение по умолчанию: 1.}} | |||
: | |||
== | == Смотреть также == | ||
* [[Phong materials]] | |||
* {{L|$envmap}} (карта окружения) | |||
* {{L|$envmap}} ( | |||
* {{L|$lightwarptexture}} | * {{L|$lightwarptexture}} | ||
* {{L|$rimlight}} | * {{L|$rimlight}} | ||
== Дополнительные ссылки == | |||
* [https://tf2maps.net/threads/phong-on-brushes-the-hacky-way.26765 $Phong on brushes*: The Hacky Way] - A TF2maps.net guide on how to fake $Phong on brushes for games prior to CS:GO. Can also be used to fake phong on [[prop_static|static props]] which are lit per-vertex, without falling back to lower-quality point lighting on the main prop | |||
*[https://share.substance3d.com/libraries/6595 SubstancePainter Source Engine Complex Phong Shader] | |||
[[Category:Shader parameters|p]][[Category:VMT Lighting]] | |||
[[Category:Material System]] |
Revision as of 04:40, 26 October 2024

You can help by updating the translation.
Also, please make sure the article complies with the alternate languages guide.
$phong
- это материальный параметр шейдера , доступно для всех игр на движке Source начиная с
Source 2006.
It is also available on the LightmappedGeneric and WorldVertexTransition shaders in all games since Counter-Strike: Global Offensive(также в
). It provides
diffuse reflections at low intensity and
specular highlights at apex intensity, masked by a texture which control per-texel its intensity. Для полного объяснения смотреть материалы Фонга.

LightmappedGeneric
и WorldVertexTransition
доступен только в 





LightmappedGeneric
также доступно и в 
Синтаксис
$phong <bool >


- Нужно сделать: Другие игры, которые не требуют присутствия всех параметров фонга в материале (Скорее всего Portal 2 и дальше)
VertexLitGeneric
{
$phong 1
$bumpmap [текстура]
$phongexponent 5 // либо это
$phongexponenttexture [текстура] // либо это
$phongboost 1.0
$phongfresnelranges "[0 0.5 1]"
}
Параметры шейдера
Маски

- Используя $selfillumfresnel без $normalmapalphaenvmapmask вынудит $envmap использовать альфа-канал $basetexture как маску.
- Используя $selfillumfresnel вместе с $normalmapalphaenvmapmask умножит $envmap на
0.0f
, тем самым отключив эффект! - Когда $selfillumfresnel не используется, то маска, используемая для $envmap будет альфа-каналом $basetexture до тех пор пока не будет использован $normalmapalphaenvmapmask.
- Если $normalmapalphaenvmapmask используется, то альфа-канал $bumpmap будет использоваться как маска Фонга. Используя
$basemapalphaphongmask
или$basemapluminancephongmask
перекроет этот параметр.
$bumpmap
$basemapalphaphongmask
$basemapluminancephongmask
$phongexponent
$phongexponenttexture
$phongexponentfactor
$invertphongmask
$forcephong
$diffuseexp
$shinyblood
$shinybloodexponent
Яркость
$phongboost
$phongfresnelranges
$phongdisablehalflambert
Цвета


Параметры затенения на примитивах(только в
)(также в
)
$phongmaskcontrastbrightness
$phongamount
$phongbasetint
Консольные команды
- mat_phong <булева переменная >
- Отключает или включает затенение Фонга. Значение по умолчанию: 1.
Смотреть также
- Phong materials
- $envmap (карта окружения)
- $lightwarptexture
- $rimlight
Дополнительные ссылки
- $Phong on brushes*: The Hacky Way - A TF2maps.net guide on how to fake $Phong on brushes for games prior to CS:GO. Can also be used to fake phong on static props which are lit per-vertex, without falling back to lower-quality point lighting on the main prop
- SubstancePainter Source Engine Complex Phong Shader