$phong
You can help by updating the translation.
Also, please make sure the article complies with the alternate languages guide.
$phong - это параметр материала шейдера, доступно для всех игр на движке
Source начиная с
Source 2006.
Он также доступен в таких шейдерах как: LightmappedGeneric и WorldVertexTransition во всех играх начиная с
Counter-Strike: Global Offensive(также в ![]()
![]()
). С маской, которая по-тексельно управляет его яркостью, фонг, при низкой яркости, даёт
рассеянные отражения, а при самой высокой яркости -
зеркальные блики. Более полное объяснение вы можете прочитать здесь: Материалы Фонга.
Синтаксис
$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 <texture>
- Для работы Фонга требуется маска. Альфа-канал карты нормалей работает как маска Фонга по умолчанию.
- $basemapalphaphongmask <булева переменная> (Во всех играх начиная с
)
- Shader(s): VertexLitGeneric
- Использует альфа-канал $basetexture как маску Фонга, вместо альфа-канала
$bumpmap.
Предупреждение: Используя этот параметр вместе с $normalmapalphaenvmapmask перекроет маску используемую для $envmap, и сделает её содержимым альфа-канала $basetexture!
Предупреждение: В
Garry's Mod используя этот параметр вместе с $normalmapalphaenvmapmask и $envmap отображения в $envmap и $phongбудут замаскированы как альфа-каналом$basemapalphaphongmask, так и альфа-каналом $normalmapalphaenvmapmask.
- $basemapluminancephongmask <булева переменная> (Во всех играх начиная с
)
- Shader(s): VertexLitGeneric
- Маскирует силу фонга основываясь на яркости
$basetexture.
Баг:Basetexture Luminance заменит маску используемую для $envmap, если $normalmapalphaenvmapmask уже используется. [нужно проверить в ?]
Баг:Не работает в
Garry's Mod. [нужно проверить в ?]
- $phongexponent and $phongexponent2 <целое число>
- Общее значение экспоненты. Перекрывает маску экспоненты, если она присутствует.
$phongexponent2предназначен для второго материалаWorldVertexTransitionв
CS:GO engine branch.
- $phongexponenttexture <texture>
- Shader(s): VertexLitGeneric
- По-тексельная карта экспоненты. В карте экспоненты хранятся:
- Красный канал: Маска экспоненты (размер блика, значение варьируется от 0 до 255, 0 - большой блик, 255 - маленький.)
- Зелёный канал: Маска оттенка альбедо (работает только если
$phongalbedotint 1, значение варьируется от 0 до 255, 0 - нет оттенка, 255 - полный оттенок.) - Синий канал: Ничего.
- Альфа-канал: Маска $rimlight (работает только если
$rimmask 1.)
Примечание: Затенения LightmappedGenericиWorldVertexTransitionне поддерживают$phongexponenttexture. Вместо этого используйте$phongexponent.
- $phongexponentfactor <число с плавающей запятой> (только в

)
- Shader(s): VertexLitGeneric
- Multiply the exponent from the
$phongexponenttextureby this amount.
Совет: По умолчанию значение этого параметра "0.0". Однако, более разумным значением по умолчанию было бы"149.0"
- $invertphongmask <булева переменная> (Во всех играх начиная с
)
- Shader(s): VertexLitGeneric
- Инвертирует значения маски Фонга.
Подтвердить: Is this the case for all branches?
- $forcephong <булева переменная> (Во всех играх начиная с
)
- Shader(s): VertexLitGeneric
- Заставляет работать затенение фонга на материалах использующих его, даже на низких уровнях видеокарты, когда
mat_phongотключён.
- $diffuseexp <число с плавающей запятой> (только в

)
- Shader(s): VertexLitGeneric, Infected
- Diffuse exponent used for dynamic lights only.
Примечание: При использовании этого параметра с $halflambert сильно снизит его эффект.
- $shinyblood <целое число> (только в

)
- Shader(s): VertexLitGeneric, Infected
- Derive phong mask from areas that are more red than others. Only when variation is disabled.
- $shinybloodexponent <целое число> (только в

)
- Shader(s): VertexLitGeneric, Infected
- Экспонента для параметра выше.
Яркость
- $phongboost <число с плавающей запятой>
- Shader(s): VertexLitGeneric, LightmappedGeneric((только в
)) - Коэффициент яркости фонга. Чем выше значение, тем ярче блик. Полезен для таких поверхностей как металл и стекло.
Совет: A phong boost of zero is visually identical to no phong, and can be used to work around certain shader parameter combinations that require phong (ex $lightwarptexture).
- $phongfresnelranges <matrix>
- Shader(s): VertexLitGeneric, LightmappedGeneric((только в
)) - См.Диапазоны Фонга по Френелю. Значения по умолчанию:
"[0 0.5 1]".
Примечание: Эти диапазоны френеля также влияют и на $envmap, если он и Фонг включены в материале.
Примечание: drives the x component of a phongwarptexture if specified.
- $phongdisablehalflambert <булева переменная> (Во всех играх начиная с
) (также в
,
)
- Shader(s): VertexLitGeneric
- Отключает принудительное half-lambertian затенение на материалах Фонга.
Примечание: Фактически, этот параметр принудительно включён в
CS:GO engine branch, из-за того что параметр $halflambertбыл полностью отключён.
Совет: В играх, где этого параметра нет, можно сымитировать этот эффект используя параметр $lightwarptextureвместе с этой текстурой.
Цвета
- $phongalbedotint <булева переменная> (Во всех играх начиная с
)
- Shader(s): VertexLitGeneric
-
Окрашивает блик цветом
$basetexture. Количество окраски определяется зелёным каналом$phongexponenttexture.$phongexponenttextureдолжен быть указан, чтобы$phongalbedotintмог заработать.
Предупреждение: $phongalbedotintне может быть использован вместе с$phongtint. Последний параметр отключит эффект.
Примечание: $phongalbedotintработает путём умножения$basetextureна отражение, при это не затемняя альбедо. В результате блик станет тусклее, поэтому учтите это в вашей маске фонга или с помощью$phongboost.
Примечание: $phongalbedotintокрасит блики оригинальным цветом$basetexture, даже когда материал окрашен используя$color2илиrendercolor.
- $phongalbedoboost <число с плавающей запятой> (Во всех играх начиная с
) (также в
)
- Shader(s): VertexLitGeneric
- Phong albedo overbrightening factor. Диапазон: 0-255.
Примечание: Этот параметр умножит окрас применяемый к фонгу от $phongalbedotint.
- $phongtint <КЗС матрица> (Во всех играх начиная с
)
- Shader(s): VertexLitGeneric
- Оттенок цвета отражения Фонга.
Предупреждение: Этот параметр перекроет $phongalbedotint, если используются оба.
Примечание: Также окрашивает $rimlight
- $phongwarptexture <texture> (Во всех играх начиная с
)
- Shader(s): VertexLitGeneric
-
Используется для создания эффекта переливчатости, как показано на Охотниках из Второго Эпизода.
- 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 Fresnel ranges)
Примечание: Disables the initial phongfresnelranges masking
Баг:Не работает в
Left 4 Dead 2. [нужно проверить в ?]
Параметры Phong-затенения на брашах
WorldVertexTransition в
- $phongmaskcontrastbrightness and $phongmaskcontrastbrightness2 <вектор данных2>
- Shader(s): LightmappedGeneric, WorldVertexTransition
- Первое значение контролирует уровень контраста между светлыми и тёмными областями в маске, а второе значение контролирует общую яркость.
$phongmaskcontrastbrightness2предназначен для второго материалаWorldVertexTransition.- Нужно сделать: Узнать диапазон обоих значений.
- $phongamount and $phongamount2 <вектор данных4>
- Shader(s): LightmappedGeneric, WorldVertexTransition
- Первые три значения контролируют оттенок цвета, а четвёртое значение управляет яркостью. Четвёртое значение может быть больше 1, но в таком случае оно повлияет на яркость всей текстуры, а не только блика.
$phongamount2предназначен для второго материалаWorldVertexTransition.
- $phongbasetint and $phongbasetint2 <число с плавающей запятой>
- Shader(s): LightmappedGeneric, WorldVertexTransition
- Позволяет
$basetextureи/или$basetexture2окрасить цвет блика.
Оригинальный VMT: tile/hr_t/inferno/tile_a.vmt из Counter-Strike: Global Offensive
"lightmappedgeneric"
{
"$basetexture" "tile/hr_t/inferno/tile_a"
"$bumpmap" "tile/hr_t/inferno/tile_a_normals"
"$surfaceprop" "tile"
"$normalmapalphaenvmapmask" "1"
"$envmap" "env_cubemap"
"$envmaptint" "[.6 .6 .6]"
"$detail" "detail/plaster_detail_01"
"$detailscale" "[5 5]"
"$detailblendfactor" ".4"
"$envmaplightscale" "1"
"$phong" "1"
"$phongexponent" "80.0"
"$phongmaskcontrastbrightness" "[2 .7]"
"$phongamount" "[1 1 1 1]"
}
Консольные Команды
| Cvar / команда |
Параметры или значение по умолчанию |
Величины | Получаемый результат |
|---|---|---|---|
| mat_phong | 1 | bool | Отключает или включает Phong-затенение. |
Примечания
LightmappedGeneric и WorldVertexTransition доступен только в LightmappedGeneric также доступно и в $phongdisablehalflambert(Во всех играх начиная с Смотреть также
- Материалы Фонга
- $envmap (карта окружения)
- $lightwarptexture
- $rimlight
Дополнительные ссылки
A comprehensive YouTube video on how phong materials work in Source- $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