VRAD/zh

From Valve Developer Community
< VRAD(Redirected from Vrad:zh-cn)
Jump to: navigation, search

VRAD是一个命令行工具,它接受已编译的BSP映射并将光照数据嵌入其中。VRAD的静态和预烘焙的光照通过辐射度算法在世界空间内进行反弹计算。

VRAD将进行:

VRAD通常是三种编译器中最慢的,它完全使用CPU的计算单元来算辐射度方程。这是非常恐怖的算力消耗。照明优化可以提供些许性能上的优化,但确保你的地图没有泄漏的部分

Tip.png提示:如果你正在观察编译对话框,并且发现它看起来好像停留在9...这个地方,这是因为VRAD在使用CPU执行光线追踪反弹计算,需要大量时间。
Warning.png警告:在尝试烘焙光照的过程中,VRAD会占用大量的CPU。截止至起源2 起源2的第三版VRAD,仍不支持 GPU 加速。
Icon-Bug.png错误:《半条命2:第一章》和求生之路的地图作者如果发现VRAD在编译HDR光照时出现崩溃,那就应该阅读VRAD中的HDR崩溃修复这篇文章。
Icon-Bug.png错误:在非求生之路分支的游戏里,没有包含.dx80.vtx文件的.mdl文件将导致VRAD跳过这些道具的光照编译,复制.dx90.vtx文件并将其重命名为.dx80.vtx将会修复此问题。
Icon-Bug.png错误:此外,具有IDST1开头的.mdl文件将无法被VBSP加载,并且会显示一条错误消息,指出无法加载此道具;这可以通过在十六进制编辑器中将文件头更改为IDST0,或通过在非求生之路分支引擎的Studiomdl程序(如Source 2013)中重新编译该道具来解决。
Icon-Bug.png错误:从大约5 - 10年前到2017年10月,VRAD的所有已知副本都有一个共享线程调度的错误,这会导致应用无法利用多个线程,特别是在带有-final参数的室外场景中(尽管CPU使用显示为100%)。不过在SDK 2013已经提供了修复此漏洞的程序,在这里可以找到:https://github.com/ValveSoftware/source-sdk-2013/pull/436,编辑的DLL可在此处获得:www.content.tophattwaffle.com/Content/modded_vrad_dll.zip。更新:Valve发布了针对CS:GO的SDK的VRAD的补丁版本。

语法

vrad [选项...] <bsp文件>

例如:

"Half-Life 2\bin\vrad.exe" -both -StaticPropLighting sdk_trainstation_01

这将在prop_static实体的每个顶点细节处生成并嵌入标准和高动态范围的光照数据。

选项

通过专家编译模式或批处理文件来结合使用。

效果

-ldr
-hdr
-both
是否编译标准或高动态范围的光照,或两者一起编译。
Note.png注意:Insurgency,你需要使用-hdr或-both进行编译才能看到瀑布阴影。
-fast
快速和较差的照明。不要随便使用它。
-final
通过花费更多时间发射光照射线来改进light_environment和间接光照的质量。
-extrasky <int>
对间接光线和天空环境追踪N倍的光线。
(-final等同于-extrasky 16;正常等同于-extrasky 1)
-lights <filename>.rad
除了lights.rad和地图指定的光照文件之外,还加载自定义光照文件。在参数中包含文件扩展名。
-bounce <int>
设置光线反弹的最大数量(默认值:100)。
-smooth <int>
设置平滑组的阈值(以度为单位)(默认值:45)。
-luxeldensity <normal>
缩小所有像素值。默认(和最大)值为1。
-softsun <float>
将太阳视为多个度数的区域光源。产生柔和的阴影。建议值为0-5,默认为0。与light_environment中的SunSpreadAngle参数相同。
-StaticPropLighting
生成prop_static的每个顶点的光照;始终对light_spot实体启用。 在没有法线贴图的道具的情况下禁用info_lighting实体。不支持启用Phong的道具。
Note.png注意:反恐精英:全球攻势,为了在你的静态道具上获得适当的照明,你需要用这个命令来运行VRAD。

-StaticPropPolys (存在于自 半衰期2:第二章 以来)

以多边形精度执行prop_static的阴影测试。默认使用碰撞网格

-TextureShadows (存在于自 半衰期2:第二章 以来)

光照文件中指定的与prop_static一起使用的模型(非笔刷)的$translucent表面生成光照贴图阴影。通常需要-StaticPropPolys才能起作用。
Note.png注意:对于大多数纹理阴影来说,一个表面将需要较低的光照贴图比例来识别。

性能

-low
作为低优先级进程运行。
-threads <int>
设置最大使用的CPU线程数量。最多是16个线程。使用修补的vrad_dll你可以使用32个线程。
-mpi
使用VMPI分发计算。
-mpi_pw <string>
使用密码来选择一组特定的VMPI工作人员。
-noextra
禁用超采样。
-chop <int>
用于边缘的反弹补丁的最小数量的像素宽度。
-maxchop <int>
最粗糙的允许数量的像素宽度的补丁,用于内部表面。
-LargeDispSampleRadius
如果地形上有反弹光斑,可以使用此功能。编译将需要更长时间,但它会在更广泛的区域聚集光线。
-compressconstant <int>
压缩颜色变化小于这么多单位的光照贴图
-StaticPropSampleScale x(存在于自 反恐精英:全球攻势 以来)
调节生成的prop_static的每个顶点的光照。
慢:16(高质量);默认值:4(正常);快速:0.25(低质量)
Note.png注意:-final相当于带有参数-StaticPropLightingScale 16。

调试

-rederrors
当“一个发光像素没有样本”是发出红光。
-vproject <directory>
-game <directory>
覆盖VPROJECT环境变量。
-v
-verbose
打开详细输出。
-novconfig
不要在vproject错误上显示图形用户界面。
-dump
转储补丁以调试文件。
-dumpnormals
将法线写入.txt调试文件。
-debugextra
将调试数据置于光照贴图中以可视化超级采样。
-dlightmap
强制直射照明到不同的光照贴图而不是光线传递。
-stoponexit
等待退出按键。
-nodetaillight
不要点亮细节道具。
-centersamples
移动样品中心。
-loghash
将样本哈希表记录到samplehash.txt。
-onlydetail
只有光照细节道具和每片叶子的照明。
-maxdispsamplesize #
设置最大位移样本大小(默认值:512)。
-FullMinidump
在崩溃时写入大型小型转储。
-OnlyStaticProps
仅执行直接的静态道具照明。
-StaticPropNormals
当照明静态道具时,只显示它们的法向矢量。
-noskyboxrecurse
关闭递归到3d天空盒(世界上的天空盒阴影)。
-nossprops
全局禁用静态道具上的自我阴影。

光照文件

光照文件是一种纯文本文件,可用于在编译静态光照时操纵VRAD处理给定材质的方式。所有光照文件必须具有.rad文件扩展名,并且必须与gameinfo.txt位于同一文件夹中。

这里有:

  1. lights.rad,全局文件。
  2. 自动加载的地图光照文件,使用<map name>.rad格式。该文件必须放在与<map name>.vmf相同的文件夹中。
  3. 可以使用-lights参数添加任意数量的其他光照文件

规则

Lights文件执行这些功能,每行一个规则:

<material> <red> <green> <blue> <intensity> <hdr_red> <hdr_green> <hdr_blue> <hdr_intensity>
当应用到笔刷表面时,使材质发出指定的光照值(hdr_值是可选的)。纹理比例对最终强度有影响。
Note.png注意:不在文件夹中的材质在名称前必须有斜杠。
noshadow <材质名称>
阻止指定材质投射阴影。
forcetextureshadow <模型路径>.mdl
使用-TextureShadows运行VRAD时,为模型启用半透明阴影测试。路径相对于模型文件夹。
ldr:
hdr:
制定任何规则的前缀仅适用于LDR或HDR照明。
hdr:ldr:
VRAD会始终忽略以这两个标签开始的行(按此顺序)。可用于添加注释或快速禁用某些条目。

另见