HDR光照设置
译者:桃李果树(百度ID)
概述
本文解释了一些可用于HDR光照的高级技术。有关标准HDR方法的说明,请阅读HDR光照基础 。
添加一个自定义的env_tonemap_controller
我们的示例地图还包含演示HDR效果的实体。第一个需要放置的实体是env_tonemap_controller,该实体可以控制地图中的HDR设置,并允许我们覆盖默认的HDR值。继续并将其命名为tonemap
。
现在我们可以通过几种方法来触发这个实体,在这里我们展示了一个用于在进入地图时修改设置的logic_auto实体。在env_tonemap_controller
上的有用的输入是:
SetAutoExposureMax
- 设置曝光即将出现的最亮程度。
SetAutoExposureMin
- 设置曝光即将出现的最暗程度。
SetBloomScale
- 设置在地图上的光晕效果的比例。
重要提示
如果该地图使用env_tonemap_controller,则不能直接使用用于更改HDR参数的控制台命令。相反,env_tonemap_controller
实体输入必须被触发才能更改设置。这可以通过标准的输入与输出 或者使用ent_fire
命令来完成,其命令格式如下:
ent_fire <env_tonemap_controller name> <input name> <new value>
例如,如果env_tonemap_controller
被命名为tonemap_global
,则可以使用以下命令:
ent_fire tonemap_global SetBloomScale 3 ent_fire tonemap_global SetAutoExposureMax 6 ent_fire tonemap_global SetAutoExposureMin .8
添加可触发的env_tonemap_controller
env_tonemap_controller也可以用trigger_multiple触发。在这里,我们看到一个触发器,当玩家进入房屋时会改变HDR值。先声明一下这只是单人游戏,因为如果这些数值发生变化,他们会在全局意义上影响所有玩家。
env_tonemap_controller
会影响所有客户端,因此以这种方式触发它们通常仅适用于单人游戏。为LDR和HDR模式添加不同的光照数值
使用lights.rad
的所有实体灯光和纹理灯光都可以包含两组用于 LDR + HDR 的光照。一般来说,由于一些原因,HDR光照值需要比LDR值略低。首先HDR具有自动曝光功能,可以补偿较暗的区域并使空间变亮。其次,光晕效果有过度照亮某些表面的倾向,因此调低亮度值也有助于这方面的工作。
环境光照
以下是使用HDR设置的light_environment实体的屏幕截图。BrightnessHDR
和AmbientHDR
的默认值是(-1, -1, -1, 1)
,这意味着使用与LDR相同的设置。要更改HDR值,只需在这些字段中输入新值。
HDR纹理光照
控制“纹理”光照值的lights.rad文件也允许独立的HDR设置。上面突出显示的数字显示了第二组4个数字如何应用于HDR值(红,绿,蓝,亮度),如果未输入第二组数字,vrad默认会使用LDR设置。
其他光照
其他类型的光源(包括light和light_spot)也具有HDR值。你可以按照为light_environment实体设置灯光的相同方式为这些灯光设置HDR值。
更多HDR控制台命令
以下是控制台 可用于动态修改引擎中HDR设置的命令列表。
mat_dynamic_tonemapping 0/1
(默认值 1)
- 启用或禁用动态(自动)HDR色调映射。
mat_autoexposure_max 0-20
(默认值 2)
- 设置即将到达的最亮(最大)曝光度。在大多数情况下其数值不应超过20。
mat_autoexposure_min 0-20
(default .5)
- 其中0是即将到达的最暗(最小)曝光度。在大多数情况下其数值不应超过20。其典型值小于1。
mat_hdr_tonemapscale 0-20
- 适用于
mat_dynamic_tonemapping
设置为0(关闭)的情况。设置一个明确的曝光值。在大多数情况下其数值不应超过20。
mat_disablebloom 0/1
(default 1)
- 禁用光晕效果。
mat_bloomscale 0-16
(default 1)
- 设置HDR光晕效果的次数(比例)。较高的值等于更多的光晕效果。在大多数情况下其数值不应超过16。