UE4官方文档_Light Propagation Volumes_LPV方案

本文介绍光线传播体积(LPV)技术的基本概念与设置方法。包括如何启用LPV、基础场景配置、定向光源设置等关键步骤,并探讨了如何调整外观与性能以适应不同需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

光线传播体积(Light Propagation Volumes)功能仍在开发中,不适用于生产。

lpv_scene.png

启用光线传播体积

将此放入 ConsoleVariables.ini 并启动/重启引擎即可启用此功能。

r.LightPropagationVolume = 1

此时,该控制台变量在运行时无法进行更改。

基础场景设置

  • 添加一个 Mobility 设为 Movable 的定向光源。

  • 添加/调整几何体和光线方向,使一些部分被阴影遮蔽,一些部分接受光照(明亮色彩的材质为佳)。

  • 不要将启用的全局光照 GI 与动态 GI 混淆(两种技术的组合将形成过于明亮的间接光照)。

  • 在定向光源上启用 Affect Dynamic Indirect Lighting

  • 在显示标识中启用 Light Propagation Mode 查看模式,将光线传播体积覆盖的区域进行可视化 (查看下方) 。

  • 添加/改变后期处理体积(应为未束缚),在 LightPropagationVolume 设置中调整“尺寸”,以所需的细节和距离覆盖区域(权衡)。

  • 使用全局照明显示标识启用/禁用 GI。

光线传播体积设置

部分全局设置在后期处理设置中(添加后期处理体积、 设为未束缚并设置适当的优先级):

LPV_settings.png

可在提示文本(鼠标悬停显示)获取设置的更多详情。

将这些设置放置在一个体积中后,可根据摄像机位置使其进行柔和混合 (如在室内环境或树下形成更小的 GI 反射)。

应启用次要遮挡,同样应启用次要反射,因其消耗极低。

调整外观和性能

此技术在低分辨率的体积网格中保存数据。为避免从比体积小的几何体 发生泄漏,需要对注入设置偏差。可在后期处理设置中进行调整:

1.0 1.3 2.0

可通过“LPV Bias Multiplier”调整每个网格体的偏差。

LPV_bias_multiplier.png

为获得更佳的性能,(更少的绘制调用不产生 CPU 消耗, GPU 消耗较低)可在材质中禁用此功能:

LPV_disable_material.png

定向光源设置

出于性能原因,光线传播体积只使用定向光源作为射入光线。此法 在摄像机附近计算出一个所谓的 反射阴影贴图。它和普通的阴影贴图相似 (不透明深度来自灯光透视的 2D 纹理),但拥有额外的材质属性(材质颜色、法线)。对每个点光源 执行此操作的消耗极高。必须在定向光源上拥有正确的设置:

LPV_light_settings.png

启用“Affect Dynamic Indirect Lighting”和“Cast Shadows”, 并将间接光照强度设为 1.0 左右。

查看全局照明

可在显示标识中禁用 LPV(需注意:此操作将同时禁用 Lightmass 计算的 烘焙全局照明):

Global Illumination Disabled

Global Illumination Disabled

Global Illumination Enabled

Global Illumination Enabled

显示光线传播体积

可通过显示标识在视口中显示实际光线传播体积:

LPV_visualize_1.png

拖动滑条查看光线传播体积的展示。

GI 替换材质切换

观察下图中的两个红色方块 - 其中一个反射为绿色(而非红色)。

LPV_bounce_color_override.png

使用新材质表现可获得此效果。

LPV_gi_replace.png

通常而言不需要设置完全不同的颜色,使用较深、较亮、或 细微的颜色调节即可。

其他注意事项

当前应用 LPV 的属性:

  • 每帧计算可生成动态材质/灯光/几何体。

  • 弥散和近似镜面材质交互。

  • 有限的距离(更大的体积(如 2 倍)容易实现,但内存要求和计算可能增加 8 倍)。

  • 世界空间中的固定细节(近景细节较多,远景细节较少为佳)。

  • 不影响半透明度。

  • 光线反射不受贴图影响。

  • 贴图着色功能正常(与应用贴图前在底部应用灯光的烘焙灯光不同)。

  • 需计算着色器(DirectX 11)支持。

  • 为灯光反射支持一个或多个定向光源。

  • 在运行时改变尺寸会出现轻微的穿帮,可随时间消失。

  • 为次要区域设置自发光灯光(当前未加入)。

  • 遮挡(当前未加入)。

  • 遮挡估算的点光源阴影(当前未加入)。

  • 通过几何体体素化形成的次要遮挡,将消耗一定性能换取极佳的精度(当前未加入)。

<think>好的,我现在需要解决用户关于在Synopsys Design Compiler(DC)中禁用常量传播优化而不影响边界优化的问题。首先,我需要理解用户的具体需求。用户希望关闭常量传播(constant propagation),但保留边界优化(boundary optimization)的功能。根据用户提供的引用[1],提到了几个相关的变量和命令,我需要仔细分析这些信息。 首先,用户引用中提到,使用`compile_ultra -no_boundary_optimization`命令会自动将`compile_preserve_subdesign_interfaces`变量设为true。另外,如果在使用`compile_ultra`之前用`set_boundary_optimization`将特定单元或设计的`boundary_optimization`属性设为false,并设置`compile_preserve_subdesign_interfaces`为true,这只能禁止等价和反向等价信息,但不足以禁止常量传播。为了禁用常量传播,需要将`compile_enable_constant_propagation_with_no_boundary_opt`设为false,而默认情况下这个变量是true。 用户的问题是如何正确设置这个变量,同时不影响边界优化。也就是说,用户希望常量传播被禁用,但边界优化仍然保持启用。这时候我需要考虑如何设置变量,以及这些设置之间的相互影响。 根据引用中的信息,首先需要确定在编译过程中如何设置这些变量。可能需要在DC的启动脚本(.synopsys_dc.setup)或者在编译前通过命令设置这些变量。引用[2]提到,DC启动时会自动运行当前目录下的.synopsys_dc.setup文件,所以用户可以将相关设置写在这个文件里,确保每次启动DC时自动应用。 接下来,我需要确定正确的设置步骤。根据引用[1],禁用常量传播需要将`compile_enable_constant_propagation_with_no_boundary_opt`设为false。同时,为了不影响边界优化,可能需要确保`compile_ultra`命令不使用`-no_boundary_optimization`选项,或者正确设置`boundary_optimization`属性。 可能的步骤包括: 1. 在.synopsys_dc.setup文件中设置`compile_enable_constant_propagation_with_no_boundary_opt`为false。 2. 在编译脚本中,避免使用`-no_boundary_optimization`选项,或者确保边界优化相关的属性没有被关闭。 3. 使用`set_boundary_optimization`命令来保持边界优化的开启状态。 同时,需要考虑这些设置对其他优化步骤的影响。例如,关闭常量传播可能导致某些优化无法进行,从而影响综合结果的质量(如面积、时序等)。用户需要了解这种权衡,并根据设计需求决定是否接受这些影响。 另外,需要验证这些步骤是否正确。例如,如果设置了`compile_enable_constant_propagation_with_no_boundary_opt`为false,但边界优化是否仍然有效?可能需要参考Synopsys的官方文档或用户指南来确认这些变量的相互作用,或者通过实际测试来验证设置的效果。 总结,用户需要执行以下步骤: - 在.synopsys_dc.setup文件中设置`compile_enable_constant_propagation_with_no_boundary_opt`为false。 - 确保在编译时没有禁用边界优化,即不使用`-no_boundary_optimization`选项。 - 可能需要使用`set_boundary_optimization`命令来明确启用边界优化。 最后,需要提醒用户注意这些设置对综合结果的影响,建议在应用前进行充分的验证和测试。</think>### 分步操作指南 1. **修改.synopsys_dc.setup文件** 在项目目录的.synopsys_dc.setup文件中添加以下配置: ```tcl set compile_enable_constant_propagation_with_no_boundary_opt false set compile_preserve_subdesign_interfaces true ``` 此设置会全局禁用常量传播,同时保留子设计接口信息[^1][^2]。 2. **编译时避免禁用边界优化** 执行`compile_ultra`时**不要添加**`-no_boundary_optimization`选项,以保留边界优化功能: ```tcl compile_ultra ``` 3. **针对性控制边界优化范围(可选)** 若需对特定模块启用/禁用边界优化,可使用以下命令: ```tcl set_boundary_optimization [get_designs <模块名>] false # 禁用 set_boundary_optimization [get_designs <模块名>] true # 启用 ``` --- ### 影响分析 | 配置项 | 关闭常量传播的影响 | 保留边界优化的作用 | |--------|--------------------|-------------------| | `compile_enable_constant_propagation_with_no_boundary_opt=false` | 防止跨层次常量传播导致接口信号被优化[^1] | 允许工具对模块边界进行逻辑重组以优化时序/面积 | | `compile_preserve_subdesign_interfaces=true` | 强制保持子模块接口信号完整性 | 与边界优化协同工作,避免接口信号意外变化 | --- ### 验证方法 1. **查看综合报告** 检查日志中是否包含`Constant propagation across hierarchy is disabled`确认配置生效。 2. **网表对比** 通过`write -format verilog`导出网表,验证关键接口信号是否保留。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值