$phong
< Zh
Jump to navigation
Jump to search
$phong
是一个用于着色器 VertexLitGeneric 的材质着色器 参数,可在所有的 起源 游戏,自从
起源2006 以来中使用。
此参数同样适用于 LightmappedGeneric 和 WorldVertexTransition shaders,并在所有 反恐精英:全球攻势 及以后的游戏中可用(也存在于
之中)。它通过一个纹理控制每个 texel 的强度,提供了
diffuse reflection 的低强度反射以及
specular highlight 的峰值高光。详细说明请参见 Phong materials。

LightmappedGeneric
和 WorldVertexTransition
的 Phong 着色仅在 



LightmappedGeneric
的 Phong 着色在 
$phong <bool>


- 待完善: 记录其他不需要所有Phong参数的游戏(可能包括Portal 2及其更高版本)。
VertexLitGeneric
{
$phong 1
$bumpmap [texture] // 表面的法线贴图
$phongexponent 5 // Phong指数值(任选其一)
$phongexponenttexture [texture] // 控制Phong指数的纹理(任选其一)
$phongboost 1.0 // 高光强度的倍增系数
$phongfresnelranges "[0 0.5 1]" // 控制反射强度的菲涅耳范围设置
}
遮罩

- 使用$selfillumfresnel而不使用$normalmapalphaenvmapmask时,$envmap将使用$basetexture的alpha通道作为遮罩。
- 使用$selfillumfresnel并启用$normalmapalphaenvmapmask时,$envmap将乘以
0.0f
,实际上禁用了该效果! - 当不使用$selfillumfresnel时,$envmap所用的遮罩将是$basetexture的alpha通道,除非也使用了$normalmapalphaenvmapmask。
- 如果使用了$normalmapalphaenvmapmask,则将使用$bumpmap的alpha通道作为Phong遮罩,但使用
$basemapalphaphongmask
或$basemapluminancephongmask
将会覆盖此行为。
Shader(s): VertexLitGeneric
使用$basetexture的alpha通道作为Phong遮罩,而不是
警告:与$normalmapalphaenvmapmask一起使用时,将覆盖$envmap所用的遮罩为$basetexture的alpha通道内容!
警告:
Garry's Mod 如果同时使用$normalmapalphaenvmapmask、$envmap和$basemapalphaphongmask,则
$bumpmap
的alpha通道。



$phong
和$envmap将同时被$basemapalphaphongmask
alpha通道和$normalmapalphaenvmapmask alpha通道遮罩。
Shader(s): VertexLitGeneric
基于
错误:当使用$normalmapalphaenvmapmask时,Basetexture Luminance将替换$envmap的遮罩。 [todo tested in ?]
错误:在
Garry's Mod中不起作用。 [todo tested in ?]
$basetexture
的亮度遮罩Phong强度。



一个全局指数值。覆盖任何存在的指数遮罩。
$phongexponent2
是用于CS:GO 引擎分支中的
WorldVertexTransition
第二材质的参数。
Shader(s): VertexLitGeneric
一个逐像素的指数贴图。在指数贴图中:
- 红色通道: 指数遮罩(高光大小,0-255,其中0表示大高光,255表示小高光。)
- 绿色通道: Albedo色调遮罩(仅当
$phongalbedotint 1
时,0-255,其中0为无色调,255为完全色调。) - 蓝色通道: 无作用。
- Alpha通道: $rimlight遮罩(仅当
$rimmask 1
时。)
注意:
LightmappedGeneric
和WorldVertexTransition
不支持$phongexponenttexture
,您必须使用$phongexponent
代替。
Shader(s): VertexLitGeneric
将
提示:该参数的默认值为
$phongexponenttexture
中的指数乘以该参数的值。
"0.0"
。然而,更合理的默认值应为"149.0"
。
Shader(s): VertexLitGeneric
Shader(s): VertexLitGeneric
即使在GPU等级较低并且
mat_phong
被禁用时,仍强制启用使用Phong的材质的Phong阴影效果。
Shader(s): VertexLitGeneric, Infected
仅用于动态光的漫反射指数。
注意:与$halflambert一起使用会大幅降低其效果。

Shader(s): VertexLitGeneric, Infected
根据区域的红色程度衍生Phong遮罩。仅在禁用变化时有效。
Shader(s): VertexLitGeneric, Infected
用于上述的指数值。
亮度
$phongboost <浮点型 >
Shader(s): VertexLitGeneric, LightmappedGeneric((仅存在于 
Phong亮度系数。较大的值会产生更强烈的高光,适用于金属和玻璃等表面。
请参见Phong Fresnel范围。默认值为
"[0 0.5 1]"
。
注意:如果材质同时启用了
$envmap
和Phong,这些Fresnel范围也会影响$envmap
。注意:如果指定了
phongwarptexture
,它会驱动该纹理的x分量。
Shader(s): VertexLitGeneric
禁用强制的半朗伯阴影效果。
注意:在
CS:GO 引擎分支中,由于


$halflambert
被禁用,此参数实际上被强制启用。
颜色
Shader(s): VertexLitGeneric
通过
$basetexture
的颜色对Phong反射进行染色。染色的程度由$phongexponenttexture
的绿色通道决定。必须指定$phongexponenttexture
才能使$phongalbedotint
生效。
警告:
$phongalbedotint
无法与$phongtint
同时使用,后者会禁用该效果。注意:
$phongalbedotint
通过将$basetexture
的颜色乘以反射实现,而不会使原材质变暗。反射的亮度会因此减弱,因此需在Phong遮罩或使用$phongboost
时加以补偿。注意:即使材质被
$color2
或rendercolor
调整颜色,$phongalbedotint
仍会使用$basetexture
的原始颜色来染色高光。
Shader(s): VertexLitGeneric
Shader(s): VertexLitGeneric
对Phong反射进行颜色染色。
警告:如果同时使用
$phongtint
和$phongalbedotint
,前者会覆盖后者的效果。注意:也会对$rimlight进行染色。
Shader(s): VertexLitGeneric
用于创建虹彩效果,例如在《第二章》的Hunter中体现的效果。
- 高光会与纹理相乘。采样像素的坐标如下:
- x: 1 - (距离高光中心的距离)
- y: 1 - (由Phong Fresnel范围计算的Fresnel分量)
注意:禁用初始的
phongfresnelranges
遮罩

在
反恐精英:全球攻势中使用tile/hr_t/inferno/tile_a的刷子Phong效果。注意阴影区域完全缺乏反射。

刷子着色器参数
Shader(s): LightmappedGeneric, WorldVertexTransition
第一个值控制遮罩中光亮和暗区域之间的对比度,第二个值控制整体亮度。
$phongmaskcontrastbrightness2
是用于WorldVertexTransition
的第二个材质。- 待完善: 找出这两个值的范围。
Shader(s): LightmappedGeneric, WorldVertexTransition
前3个值控制颜色染色,第四个值控制亮度。第四个值可以超过1,但影响的是整个纹理的亮度,而不是仅仅高光。
$phongamount2
是用于WorldVertexTransition
的第二个材质。
Shader(s): LightmappedGeneric, WorldVertexTransition
允许
$basetexture
和/或$basetexture2
为Phong高光染色。控制命令
- mat_phong <布尔值 >
- 禁用或启用Phong阴影。默认值为1。
另请参阅
外部链接
- $Phong on brushes*: The Hacky Way - TF2maps.net上的指南,解释了如何在CS:GO之前的游戏中伪造$Phong对刷子进行渲染。也可用于伪造在Vertex光照下进行点光源处理的静态模型
- SubstancePainter Source Engine Complex Phong Shader - 提供Substance Painter对Source引擎的复杂Phong着色器