docs.unity3d.com
    显示 / 隐藏目录

    密度体积 (Density Volume)

    您可能希望在场景中使用雾效,但全局雾无法自动产生。在这些情况下,可以使用局部雾。要添加局部雾,请使用“密度体积”。密度体积是一种表示为定向包围盒的加法雾效体积。默认情况下,雾是恒定的(均质),但可以通过在 Density Mask Texture 部分下的 Texture 字段中指定密度遮罩 (Density Mask) 3D 纹理来进行更改。目前,HDRP 支持 32x32x32 分辨率的 3D 纹理。

    HDRP 对密度体积进行体素化以提高性能。这会导致两个限制:

    • 密度体积不支持体积阴影 (volumetric shadowing)。如果在光源和表面之间放置一个密度体积,该体积不会降低到达表面的光强度。
    • 密度体积以非常粗略的速率进行体素化,通常沿着摄像机的焦轴仅有 64 或 128 个切片。这可能会导致体积边界出现明显的锯齿现象。如果可能,可以使用密度体积和一些全局雾相结合的方式来隐藏锯齿问题。还可以使用密度遮罩 (Density Mask) 和非零的混合距离 (Blend Distance) 来降低边缘的硬度。

    要创建密度体积,请在层级视图中单击鼠标右键,然后选择 Rendering > Density Volume。或者,也可以使用屏幕顶部的菜单栏,导航到 GameObject > Rendering > Density Volume。

    属性

    属性 描述
    Single Scattering Albedo 设置雾效颜色。体积雾 (Volumetric Fog) 对光照进行着色,因此该雾效会将光散射到此颜色。只会对雾后方或内部的光源发出的光照进行着色。这意味着不会对雾后方或内部的游戏对象反射出去的光照进行着色:随着雾密度的增加,反射的光照只会变暗(逐渐变为黑色)。例如,如果使用红色 Single Scattering Albedo 在雾后面的白墙上发出光照,则雾看起来是红色的。如果在白墙上发出光照并从雾的另一侧观察,则会看到雾使光线变暗,而不会使光线着色为红色。
    Fog Distance 控制雾的基础密度,决定了透过雾可以看到的距离(以米为单位)。在此距离处,雾已吸收并散射 63% 的背景光。
    Size 控制体积尺寸。
    Per Axis Control 启用此属性可以控制每个轴的混合距离,而不是进行全局控制。
    Blend Distance Blend Distance 可以创建从体积内部雾化级别到外部雾化级别的线性淡化。这不是百分比,而是与体积(由 Size 属性定义)边缘开始淡化的位置之间的绝对距离。Unity 将此值的范围钳制为 0 到 Size 属性最低轴值的一半。如果使用 Normal 选项卡,则可以更改名为 Blend Distance 的单浮点值(该值使每个方向都均匀淡化)。如果打开 Advanced 选项卡,每个轴可以使用两个淡化(每个方向对应一个)。例如,在 X 轴上,从左到右可以有一个,从右到左也有一个。将此距离设置为 0 会隐藏淡化,而将此距离设置为 1 会产生淡化。
    Invert Blend 反转淡化方向。将每个轴上的 Blend Distance 设置为最大可能值可以使雾在体积中心保留,而使边缘淡化。反转混合设置会淡化中心而保留边缘。
    Distance Fade Start 距摄像机多远时密度体积开始淡出。当优化具有许多密度体积的场景并使远距离的体积消失时,此属性非常有用。
    Distance Fade End 距摄像机多远时密度体积完全淡出。当优化具有许多密度体积的场景并使远距离的体积消失时,此属性非常有用。
    Density Mask Texture 指定映射到体积内部的 3D 纹理。密度体积仅使用纹理的 Alpha 通道。纹理的值用作密度乘数。纹理值为 0 会产生体积为 0 的密度,而纹理值为 1 会产生原始恒定(均质)体积。
    Scroll Speed 指定密度体积滚动纹理的速度(按每个轴)。如果将每个轴设置为 0,则密度体积不会滚动纹理,因此雾是静态的。
    Tiling 指定纹理在每个轴上的平铺率。例如,将 X 轴分量设置为 2 意味着纹理在体积内部的 X 轴上重复 2 次。

    创建密度遮罩纹理 (Density Mask Texture)

    1. 在自选的图像编辑软件中,准备一个灰度 2D 纹理,其值介于 0 和 1 之间,大小为 1024x32。此大小描述了一个大小为 32x32x32 的 3D 纹理(32 个切片逐个布局)。
    2. 将此纹理导入 Unity 编辑器中,并设置纹理导入设置 (Texture Import Settings):

    2.1.将 Texture Type 设置为 Single Channel。

    2.2.将 Channel 设置为 Alpha。

    2.3.启用 Read/Write Enabled 复选框。

    1. 导航到 Window > Rendering > Density Volume Texture Tool。
    2. 将您的纹理拖放到 Slice Texture 字段中,并将 Texture Slice Size 设置为 32。
    3. 单击 Create 3D Texture,该工具将生成另一种格式的可用作密度遮罩的纹理。
    4. 打开 Density Volume 组件,并将刚刚生成的纹理指定给 Density Mask Texture 部分中的 Texture 字段。
    返回到顶部
    Copyright © 2023 Unity Technologies — 商标和使用条款
    • 法律条款
    • 隐私政策
    • Cookie
    • 不要出售或分享我的个人信息
    • Your Privacy Choices (Cookie Settings)