高动态范围光照基础(HDR)
Contents
总览
在.BSP里,起源引擎支持2种独立设置的光源地图,一种是HDR (高动态范围),另一种是 LDR (低动态范围)。LDR照明来源于HL2。在LDR光源下,我们经常得在黑暗区域补充额外的点和贴图光源才能让那些区域可见。现在有了HDR,我们可以简单的使用自动曝光来改善大多数黑暗区域,而不需要“假”的光源了。唯一的缺陷就是要拥有2种设置的光源地图的话,会增加.BSP的大小,有些情况下也许会超过2倍。
一张HDR地图的基础编译
要让HDR立刻工作最简单的方法就是使用最新的Vrad 重新编译已存在的地图。
如果你使用Hammer里的编译器,编译带HDR的地图是非常简单的:
- 在Hammer编辑器里打开.VMF文件。
- 在文件菜单里选择运行地图(Run Map) 。
- 将BSP,VIS,和RAD的选项设置为正常(Normal)。
- 在RAD部分, 选中HDR复选框。
- 点击OK开始地图编译。
- 注意:当启用HDR的时候,你会注意到在编译日志窗口里VRAD会运行2次,这是正常的。VRAD需要分别为HDR和LDR构建光源。
HDR下VRAD的命令行参数
如果你不使用Hammer内建的编译器,你可以在命令行下使用VRAD 与下列的命令:-both
,-ldr
,-hdr
,和-final
。现在一个.BSP文件可以包含LDR和HDR两种设置的光源贴图。如果都要添加的话在VRAD 加上命令-both
。如果你只想要LDR的话添加-ldr
参数,只想要HDR的话添加-hdr
参数。这个版本添加的另一个新命令-final
是通过花费更多的CPU时间发射光线来改进天空光源和非直接光源的质量。
-final
参数会大幅度增加VRAD的编译时间,所以它主要的目的还是用来进行最终的地图编译。这个选项对质量影响最大的是减少那些通常由存在于室内空间的light_environment
造成的光照伪影。在起源引擎上运行HDR
起源引擎可以运行在HDR和LDR模式。如果一个地图已经被编译为带HDR光源贴图的地图,并且游戏的视频设置里的HDR已经启用,在地图载入后HDR就会被自动启用。由于所创建的HDR和LDR光源贴图是分开的,cubemaps必须为HDR和LDR模式分别编译。
HDR也可以通过命令行来启用或禁用,当运行游戏的时候使用下列的命令:
+mat_hdr_enabled 0/1
- 设置为0就是LDR,设置为1则是启用HDR。如果在一个地图已经载入的情况下更改更改这个值的话,地图的光源地图会被重新载入。
+mat_hdr_level 0/1/2
- 设置为0就是没有HDR,1的话在HDR地图就只有LDR和bloom,2的话在HDR地图就是完整的HDR和bloom。
在启用HDR的情况下启动游戏
要在运行游戏的时候强制启用HDR和bloom,通过以下其中的一种方法添加+mat_hdr_enabled 1 +mat_hdr_level 2
参数:
- 在Hammer运行地图(Run Map)对话框,添加命令到额外的游戏参数(Additional game parameters)。
- 在Steam游戏窗口右击游戏并选择属性(Properties'),点击设置启动选项...(Set launch options...) 然后添加命令到对话框里。
- 在你的桌面创建一个快捷方式指向游戏,之后添加命令到Windows属性对话框。
- 如果你使用一个.BAT批处理文件来运行引擎,添加命令到你的批处理文件
构建HDR和LDR的cubemaps
对于一个HDR地图,你需要运行HDR和LDR模式的buildcubemaps
来正确构建cubemaps :
- 在启用Vrad 的HDR选项的情况下编译你的地图。
- 在游戏里载入地图。引擎应该会默认为地图的HDR版本。如果你禁用了HDR,在控制台键入
mat_hdr_enabled 1
来启用HDR。 - 在控制台 键入
buildcubemaps
来构建HDR的cubemaps。 - 键入
mat_hdr_enabled 0
来切换到LDR模式(这会花点时间来重新载入光照地图)。 - 键入
buildcubemaps
来构建LDR的cubemaps
每次编译完地图之后都得做这件事,否则cubemaps将不会正确出现。
选择一个HDR天空盒
另一件可以简单改进HDR效果的事就是选择一个“HDR天空盒”。
要在Hammer里选择一个HDR天空盒:
- 从地图菜单(Map menu) 里选择地图属性(Map properties)。
- 在天空盒贴图名(Skybox Texture Name)区域里输入一个HDR天空盒名字(例如
sky_example_hdr
)。查看天空列表 获取所有可用的天空盒列表。 - 使用新的天空盒重新编译地图。
SDK范例里的范例地图sdk_hdr_example.vmf
包括这个文档所需的实体。
想要知道如何创建新的HDR天空盒,看看HDR天空盒的创建 .
参见
HDR光照设置 - 更多关于如何自定义HDR设置的信息。