这篇条目有关 Source引擎。如需详情,点击这里。

$translucent

From Valve Developer Community
< Zh
Jump to navigation Jump to search
English (en)Español (es)Français (fr)中文 (zh)Translate (Translate)
Info content.png
This page needs to be translated.
This page either contains information that is only partially or incorrectly translated, or there isn't a translation yet.
If this page cannot be translated for some reason, or is left untranslated for an extended period of time after this notice is posted, the page should be requested to be deleted.
Also, please make sure the article tries to comply with the alternate languages guide.

$translucent是一个材质(en)着色器(en)参数,可在所有的 起源 起源 游戏中使用。

指定材质应该是部分透明的。Alpha通道(en)被用来根据$basetexture的每个像素决定透明度。

任何使用$translucent材质的对象不会影响VIS(en),并且NPC可以从任何角度透过它看到。然而,Visleaves 确实会影响透明材质的Alpha排序。

Note.png注意:启用透明性会完全禁用投影纹理所产生的阴影。可以将纹理的不透明部分和透明部分分离,或者改用$alphatest

VMT语法示例

$translucent <布尔值(en)>
LightmappedGeneric(en)
{
	$basetexture glass\window001a
	$translucent 1
}

额外参数

将材质的颜色值添加到现有图像,而不是执行乘法。这意味着材质总是会使世界变亮。对于像体积尘埃、光精灵等效果,这非常有用。

注意事项

闪烁和反向深度

透明材质有时会导致材质闪烁,或者与附近表面产生排序问题。在这些情况下,考虑使用$alphatest代替$translucent。虽然这会显著降低质量,但通常可以解决问题,并且绘制速度更快。与透明材质不同,Alpha测试还会投射手电筒阴影。

Translucent2p.png

与允许不同透明度的$translucent不同,Alpha测试不允许——纹理的部分要么完全显示,要么完全隐藏。$alphatestreference是一个常规参数,控制透明度遮罩的过滤(使用较低的值如.01会产生更模糊的边缘,而值为.99会非常锐利)。由于Alpha测试比$translucent成本更低,可以用来实现类似于$translucent参数材质的效果,同时降低开销。使用$allowalphatocoverage将启用Alpha测试纹理的抗锯齿,使其边缘更加柔和。当启用$allowAlphaToCoverage时,$alphatestreference将被忽略,并不会影响纹理外观,但仍会影响投影纹理的模板(例如手电筒)。

Note.png注意:$allowAlphaToCoverage的效果只有在用户启用MSAA时才会可见。
Tip.png提示:非细节世界生成刷上的笔刷纹理使用BSP树(en)来改善Alpha排序,从而减少此类错误的可能性。除非必要,避免将简单的透明笔刷绑定到func_detail(en);它们无论如何都不会影响VIS。

与其他效果的兼容性

某些着色器参数[哪些参数?]会禁用透明性。如果无法正常工作,可以逐一注释掉材质的其他部分,找出冲突的原因。

已知的冲突包括:

  • $selfillum,因为它需要Alpha遮罩来决定发光效果,并“占用”了透明度。同样,即使用$selfillummask作为单独的纹理也无法解决问题。
  • $blendtintbybasealpha,在模型上使用时。它使用Alpha遮罩来决定着色的程度,也会“占用”透明度。

滤镜边界

Wikipedia icon 纹理过滤会将邻近像素混合在一起,即使其中一些像素是完全透明的。如果Alpha值突然下降与颜色值的下降重叠,可能会产生不需要的轮廓效果。当Alpha通道(en)降到零时,您可能会遇到此问题,并停止看到像素。

一个不需要的滤镜边界。

为了解决这个问题,可以简单地将图像的颜色稍微延伸到Alpha通道下降的区域之外。这可以通过复制透明层并将其涂抹到相关区域来轻松实现。

修复滤镜边界。
Note.png注意:此过程称为扩展,同时也有助于正确生成Mipmaps。

(对于旧版本GIMP(en)的用户,当图层合并时,程序会自动移除Alpha值为零的像素的颜色信息。作为一种解决方法,可以将这些像素的Alpha值设置为1。

从GIMP 2.8.14开始,Alpha值为0的像素在保存为TGA格式时保留其颜色信息。

Tip.png提示:对于从金源 金源移植的内容: xwad(en)会自动为任何包含{前缀的转换的WAD(en)纹理,任何标记为AlphaTest的转换的SPR(en)精灵,以及使用-transparent标志转换的松散BMP(en)纹理生成适当的透明像素。

参见