$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
用于上述的指数值。
亮度
请参见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 | bool | 禁用或启用Phong阴影。默认值为1。 |
另请参阅
外部链接
- $Phong on brushes*: The Hacky Way - TF2maps.net上的指南,解释了如何在CS:GO之前的游戏中伪造$Phong对刷子进行渲染。也可用于伪造在Vertex光照下进行点光源处理的静态模型
- SubstancePainter Source Engine Complex Phong Shader - 提供Substance Painter对Source引擎的复杂Phong着色器