VRAD
< Zh
VRAD是一个命令行 工具,它接受已编译的BSP映射并将光照数据嵌入其中。VRAD的静态和预烘焙的光照通过辐射度算法在世界空间内进行反弹计算。
VRAD将进行:
- 生成光照贴图
- 生成环境光
- 生成每个对象或每个顶点的prop_static 和细节道具 的照明
VRAD通常是三种编译器中最慢的,它完全使用CPU的计算单元来算辐射度方程。这是非常恐怖的算力消耗。照明优化 可以提供些许性能上的优化,但确保你的地图没有泄漏的部分 。
提示:如果你正在观察编译对话框,并且发现它看起来好像停留在
9...
这个地方,这是因为 VRAD 在使用 CPU 执行辐射度矩阵方程的求解计算,需要大量时间。警告:在尝试烘焙光照的过程中,VRAD会占用大量的CPU。截止至 起源2的第三版VRAD,仍不支持 GPU 加速。
错误:《半条命2:第一章》和求生之路的地图作者如果发现VRAD在编译HDR光照时出现崩溃,那就应该阅读VRAD中的HDR崩溃修复 这篇文章。 [todo tested in?]
错误:在非求生之路分支的游戏里,没有包含
.dx80.vtx
文件的.mdl
文件将导致VRAD跳过这些道具的光照编译,复制.dx90.vtx
文件并将其重命名为.dx80.vtx
将会修复此问题。 [todo tested in?]错误:从大约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的补丁版本。 [todo tested in?]
语法
vrad [选项...] <bsp文件>
例如:
"Half-Life 2\bin\vrad.exe" -both -StaticPropLighting sdk_trainstation_01
这将在prop_static实体的每个顶点细节处生成并嵌入标准和高动态范围 的光照数据。
选项
通过专家编译模式 或批处理文件来结合使用。
效果
-ldr
-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的道具。
- 以多边形精度执行
prop_static
的阴影测试。默认使用碰撞网格 。
- 从光照文件中指定的与prop_static 一起使用的模型(非笔刷)的$translucent 表面生成光照贴图阴影。通常需要
-StaticPropPolys
才能起作用。 - 注意:对于大多数纹理阴影来说,一个表面将需要较低的光照贴图 比例来识别。
性能
-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(低质量)
- 注意:-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 位于同一文件夹中。
这里有:
lights.rad
,全局文件。- 自动加载的地图光照文件,使用
<map name>.rad
格式。该文件必须放在与<map name>.vmf
相同的文件夹中。 - 可以使用
-lights
参数添加任意数量的其他光照文件。
规则
Lights文件执行这些功能,每行一个规则:
<material> <red> <green> <blue> <intensity> <hdr_red> <hdr_green> <hdr_blue> <hdr_intensity>
- 当应用到笔刷 表面时,使材质发出指定的光照值(
hdr_
值是可选的)。纹理比例对最终强度有影响。注意:不在文件夹中的材质在名称前必须有斜杠。 noshadow <材质名称>
- 阻止指定材质投射阴影。
forcetextureshadow <模型路径>.mdl
- 使用
-TextureShadows
运行VRAD时,为模型启用半透明阴影测试。路径相对于模型文件夹。 ldr:
hdr:
- 制定任何规则的前缀仅适用于LDR或HDR照明。
hdr:ldr:
- VRAD会始终忽略以这两个标签开始的行(按此顺序)。可用于添加注释或快速禁用某些条目。
另见
|