Zh/VRAD: Difference between revisions
< Zh
Jump to navigation
Jump to search
mNo edit summary |
No edit summary |
||
(28 intermediate revisions by 11 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{LanguageBar}} | ||
{{src topicon}} | |||
{{map compile pipeline|source1}} | |||
| | |||
{{toc-right}} | {{toc-right}} | ||
'''VRAD'''是一个 | '''VRAD'''是一个{{L|command-line|命令行}}工具,它接受已编译的BSP映射并将光照数据嵌入其中。VRAD的静态和预烘焙的光照通过[[Wikipedia:Radiosity (3D computer graphics)|辐射度算法]]在世界空间内进行反弹计算。 | ||
VRAD将进行: | VRAD将进行: | ||
* 生成 | * 生成{{L|lightmap|光照贴图}} | ||
* 生成 | * 生成{{L|Ambient light|环境光}} | ||
* 生成每个对象或每个顶点的 | * 生成每个对象或每个顶点的{{L|prop_static}}和{{L|detail prop|细节道具}}的照明 | ||
VRAD通常是三种编译器中最慢的,它完全使用CPU的计算单元来算辐射度方程。这是非常恐怖的算力消耗。{{L|Lighting optimization|照明优化}}可以提供些许性能上的优化,但确保你的地图没有{{L|leak|泄漏的部分}}。 | |||
{{ | {{tip|如果你正在观察编译对话框,并且发现它看起来好像停留在''<code>9...</code>''这个地方,这是因为 VRAD 在使用 CPU 执行辐射度矩阵方程的求解计算,需要大量时间。}} | ||
{{ | {{warning|在尝试烘焙光照的过程中,VRAD会占用大量的CPU。只有新版{{source2|4}}的 VRAD3 支持 GPU 加速。}} | ||
{{bug|《半条命2:第一章》和求生之路的地图作者如果发现VRAD在编译HDR光照时出现崩溃,那就应该阅读 | {{bug|hidetested=1|《半条命2:第一章》和求生之路的地图作者如果发现VRAD在编译HDR光照时出现崩溃,那就应该阅读{{L|VRAD_HDR_Crash_Fix|VRAD中的HDR崩溃修复}}这篇文章。}} | ||
{{bug|在非求生之路分支的游戏里,没有包含<code>.dx80.vtx</code>文件的<code>.mdl</code>文件将导致VRAD跳过这些道具的光照编译,复制<code>.dx90.vtx</code>文件并将其重命名为<code>.dx80.vtx</code>将会修复此问题。}} | {{bug|hidetested=1|在非求生之路分支的游戏里,没有包含<code>.dx80.vtx</code>文件的<code>.mdl</code>文件将导致VRAD跳过这些道具的光照编译,复制<code>.dx90.vtx</code>文件并将其重命名为<code>.dx80.vtx</code>将会修复此问题。}} | ||
{{bug|此外,具有<code>IDST1</code>开头的<code>.mdl</code>文件将无法被 | {{bug|hidetested=1|此外,具有<code>IDST1</code>开头的<code>.mdl</code>文件将无法被{{L|VBSP}}加载,并且会显示一条错误消息,指出无法加载此道具;这可以通过在十六进制编辑器中将文件头更改为IDST0,或通过在非求生之路分支引擎的{{L|Studiomdl}}程序(如Source 2013)中重新编译该道具来解决。}} | ||
{{bug|从大约5 - | {{bug|hidetested=1|从大约5 - 10年前到2017年10月,VRAD的所有已知副本都有一个共享线程调度的错误,这会导致应用无法利用多个线程,特别是在带有-final参数的室外场景中(尽管CPU使用显示为100%)。不过在SDK 2013已经提供了修复此漏洞的程序,在这里可以找到:[https://github.com/ValveSoftware/source-sdk-2013/pull/436 https://github.com/ValveSoftware/source-sdk-2013/pull/436],编辑的DLL可在此处获得:[http://www.content.tophattwaffle.com/Content/modded_vrad_dll.zip www.content.tophattwaffle.com/Content/modded_vrad_dll.zip]。更新:Valve发布了针对CS:GO的SDK的VRAD的补丁版本。}} | ||
== 语法 == | == 语法 == | ||
Line 31: | Line 31: | ||
"Half-Life 2\bin\vrad.exe" -both -StaticPropLighting sdk_trainstation_01 | "Half-Life 2\bin\vrad.exe" -both -StaticPropLighting sdk_trainstation_01 | ||
这将在prop_static实体的每个顶点细节处生成并嵌入标准和 | 这将在prop_static实体的每个顶点细节处生成并嵌入标准和{{L|HDR|高动态范围}}的光照数据。 | ||
==选项== | ==选项== | ||
通过 | 通过{{L|expert compile mode|专家编译模式}}或批处理文件来结合使用。 | ||
=== 效果 === | === 效果 === | ||
Line 43: | Line 43: | ||
; <code>-hdr</code> | ; <code>-hdr</code> | ||
; <code>-both</code> | ; <code>-both</code> | ||
: 是否编译标准或 | : 是否编译标准或{{L|HDR|高动态范围}}的光照,或两者一起编译。 | ||
: {{ | : {{Note|在{{insurgency}},你需要使用-hdr或-both进行编译才能看到瀑布阴影。}} | ||
;<code>-fast</code> | ;<code>-fast</code> | ||
: 快速和较差的照明。不要随便使用它。 | : 快速和较差的照明。不要随便使用它。 | ||
;<code>-final</code> | ;<code>-final</code> | ||
: 通过花费更多时间发射光照射线来改进 | : 通过花费更多时间发射光照射线来改进{{L|Light environment|light_environment}}和间接光照的质量。 | ||
;<code>-extrasky < | ;<code>-extrasky <{{L|int}}></code> | ||
: 对间接光线和天空环境追踪N倍的光线。{{clr}}(-final等同于-extrasky 16;正常等同于-extrasky 1) | : 对间接光线和天空环境追踪N倍的光线。{{clr}}(-final等同于-extrasky 16;正常等同于-extrasky 1) | ||
;<code>-lights <filename>.rad</code> | ;<code>-lights <filename>.rad</code> | ||
:除了<code>lights.rad</code>和地图指定的光照文件之外,还加载自定义[[#光照文件|光照文件]]。在参数中包含文件扩展名。 | :除了<code>lights.rad</code>和地图指定的光照文件之外,还加载自定义[[#光照文件|光照文件]]。在参数中包含文件扩展名。 | ||
;<code>-bounce < | ;<code>-bounce <{{L|int}}></code> | ||
: 设置光线反弹的最大数量(默认值:100)。 | : 设置光线反弹的最大数量(默认值:100)。 | ||
;<code>-smooth <int></code> | ;<code>-smooth <int></code> | ||
:设置 | :设置{{L|smoothing group|平滑组}}的阈值(以度为单位)(默认值:45)。 | ||
;<code>-luxeldensity < | ;<code>-luxeldensity <{{L|normal}}></code> | ||
:缩小所有像素值。默认(和最大)值为1。 | :缩小所有像素值。默认(和最大)值为1。 | ||
;<code>-softsun < | ;<code>-softsun <{{L|float}}></code> | ||
:将太阳视为多个度数的区域光源。产生柔和的阴影。建议值为0-5,默认为0。与 | :将太阳视为多个度数的区域光源。产生柔和的阴影。建议值为0-5,默认为0。与{{L|Light environment|light_environment}}中的SunSpreadAngle参数相同。 | ||
;<code>-StaticPropLighting</code> | ;<code>-StaticPropLighting</code> | ||
:生成 | :生成{{L|prop_static}}的每个顶点的光照;始终对{{L|light_spot}}实体启用。 在没有法线贴图的道具的情况下禁用{{L|info_lighting}}实体。不支持启用Phong的道具。 | ||
{{ | {{Note|在{{csgo}},为了在你的静态道具上获得适当的照明,你需要用这个命令来运行VRAD。}} | ||
;{{EP2 add|<code>-StaticPropPolys</code>}} | ;{{EP2 add:zh-cn|<code>-StaticPropPolys</code>}} | ||
:以多边形精度执行<code>prop_static</code>的阴影测试。默认使用 | :以多边形精度执行<code>prop_static</code>的阴影测试。默认使用{{L|collision mesh|碰撞网格}}。 | ||
;{{EP2 add|<code>-TextureShadows</code>}} | ;{{EP2 add:zh-cn|<code>-TextureShadows</code>}} | ||
:从[[#光照文件|光照文件]]中指定的与 | :从[[#光照文件|光照文件]]中指定的与{{L|prop_static}}一起使用的模型(非笔刷)的{{L|$translucent}}表面生成光照贴图阴影。通常需要<code>-StaticPropPolys</code>才能起作用。 | ||
:{{ | :{{Note|对于大多数纹理阴影来说,一个表面将需要较低的{{L|lightmap|光照贴图}}比例来识别。}} | ||
}} | }} | ||
Line 76: | Line 76: | ||
;<code>-low</code> | ;<code>-low</code> | ||
:作为低优先级进程运行。 | :作为低优先级进程运行。 | ||
;<code>-threads < | ;<code>-threads <{{L|int}}></code> | ||
: | :设置最大使用的CPU线程数量。最多是16个线程。使用{{L|Increased_Thread_Limit_for_Compile_Tools|修补的vrad_dll}}你可以使用32个线程。 | ||
;<code>-mpi</code> | ;<code>-mpi</code> | ||
:使用 | :使用{{L|Vmpi|VMPI}}分发计算。 | ||
;<code>-mpi_pw < | ;<code>-mpi_pw <{{L|string}}></code> | ||
:使用密码来选择一组特定的VMPI工作人员。 | :使用密码来选择一组特定的VMPI工作人员。 | ||
;<code>-noextra</code> | ;<code>-noextra</code> | ||
:禁用超采样。 | :禁用超采样。 | ||
;<code>-chop <int></code> | ;<code>-chop <int></code> | ||
:用于边缘的反弹补丁的最小数量的 | :用于边缘的反弹补丁的最小数量的{{L|luxel|像素}}宽度。 | ||
;<code>-maxchop <int></code> | ;<code>-maxchop <int></code> | ||
:最粗糙的允许数量的像素宽度的补丁,用于内部表面。 | :最粗糙的允许数量的像素宽度的补丁,用于内部表面。 | ||
Line 91: | Line 91: | ||
:如果地形上有反弹光斑,可以使用此功能。编译将需要更长时间,但它会在更广泛的区域聚集光线。 | :如果地形上有反弹光斑,可以使用此功能。编译将需要更长时间,但它会在更广泛的区域聚集光线。 | ||
;<code>-compressconstant <int></code> | ;<code>-compressconstant <int></code> | ||
:压缩颜色变化小于这么多单位的 | :压缩颜色变化小于这么多单位的{{L|lightmap|光照贴图}}。 | ||
; | ;<code>-StaticPropSampleScale x</code>{{since:zh-cn|{{Csgo}}}} | ||
:调节生成的prop_static的每个顶点的光照。 | :调节生成的prop_static的每个顶点的光照。 | ||
:慢:16(高质量);默认值:4(正常);快速:0.25(低质量) | :慢:16(高质量);默认值:4(正常);快速:0.25(低质量) | ||
:{{ | :{{Note|-final相当于带有参数-StaticPropLightingScale 16。}} | ||
}} | }} | ||
Line 144: | Line 144: | ||
==光照文件== | ==光照文件== | ||
{{moveto|Zh/RAD file}} | |||
光照文件是一种纯文本文件,可用于在编译静态光照时操纵VRAD处理给定 | 光照文件是一种纯文本文件,可用于在编译静态光照时操纵VRAD处理给定{{L|material|材质}}的方式。所有光照文件必须具有.rad文件扩展名,并且必须与{{L|Gameinfo.txt|gameinfo.txt}}位于同一文件夹中。 | ||
这里有: | 这里有: | ||
Line 158: | Line 158: | ||
;<code><material> <red> <green> <blue> <intensity> <hdr_red> <hdr_green> <hdr_blue> <hdr_intensity></code> | ;<code><material> <red> <green> <blue> <intensity> <hdr_red> <hdr_green> <hdr_blue> <hdr_intensity></code> | ||
:当应用到 | :当应用到{{L|brush|笔刷}}表面时,使材质发出指定的光照值(<code>hdr_</code>值是可选的)。纹理比例对最终强度有影响。{{Note|不在文件夹中的材质在名称前必须有斜杠。}} | ||
;<code>noshadow <材质名称></code> | ;<code>noshadow <材质名称></code> | ||
:阻止指定材质投射阴影。 | :阻止指定材质投射阴影。 | ||
Line 169: | Line 169: | ||
:VRAD会始终忽略以这两个标签开始的行(按此顺序)。可用于添加注释或快速禁用某些条目。 | :VRAD会始终忽略以这两个标签开始的行(按此顺序)。可用于添加注释或快速禁用某些条目。 | ||
==另见 == | ==另见== | ||
* | * {{L|Map_Compiling_Theory|地图编译理论}} | ||
* | * {{L|HDR_Lighting_Basics|HDR光照基础}} | ||
* | * {{L|VRAD_HDR_Crash_Fix|VRAD中的HDR崩溃修复}} | ||
* | * {{L|Static Props show up black|静态模型全黑显示}} | ||
{{SDKTools}} | {{SDKTools}} | ||
{{ACategory|Official Source Tools}} | |||
{{ACategory|Source 1 BSP compilers}} |
Latest revision as of 18:49, 14 June 2025
VRAD是一个命令行 工具,它接受已编译的BSP映射并将光照数据嵌入其中。VRAD的静态和预烘焙的光照通过辐射度算法在世界空间内进行反弹计算。
VRAD将进行:
- 生成光照贴图
- 生成环境光
- 生成每个对象或每个顶点的prop_static 和细节道具 的照明
VRAD通常是三种编译器中最慢的,它完全使用CPU的计算单元来算辐射度方程。这是非常恐怖的算力消耗。照明优化 可以提供些许性能上的优化,但确保你的地图没有泄漏的部分 。

9...
这个地方,这是因为 VRAD 在使用 CPU 执行辐射度矩阵方程的求解计算,需要大量时间。



.dx80.vtx
文件的.mdl
文件将导致VRAD跳过这些道具的光照编译,复制.dx90.vtx
文件并将其重命名为.dx80.vtx
将会修复此问题。
语法
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会始终忽略以这两个标签开始的行(按此顺序)。可用于添加注释或快速禁用某些条目。
另见
|