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

    自定义通道 Utils API 用户手册

    模糊

    高斯模糊 (Gaussian Blur)

    高斯模糊函数可用于对具有任意半径和质量(样本数量)的图像进行模糊处理。出于性能原因,可以在下采样通道之后运行模糊内核。这样可以降低模糊效果的资源消耗量,但同时也会降低质量。

    以下是对摄像机颜色缓冲区进行模糊处理的自定义通道示例:

    using UnityEngine;
    using UnityEngine.Rendering.HighDefinition;
    using UnityEngine.Rendering;
    using UnityEngine.Experimental.Rendering;
    
    class GaussianBlur : CustomPass
    {
        RTHandle    halfResTarget;
    
        protected override void Setup(ScriptableRenderContext renderContext, CommandBuffer cmd)
        {
            halfResTarget = RTHandles.Alloc(
                // 注意此处的 * 0.5f。这将分配一个半分辨率目标,从而节省大量内存。
                Vector2.one * 0.5f, TextureXR.slices, dimension: TextureXR.dimension,
                // 由于高斯模糊不需要使用 Alpha,所以此效果使用没有 Alpha 通道的 HDR 纹理格式。
                colorFormat: GraphicsFormat.B10G11R11_UFloatPack32,
                // 创建纹理时,请务必指定有意义的名称,因为这对于调试很有用。
                useDynamicScale: true, name: "Half Res Custom Pass"
            );
        }
    
        protected override void Execute(CustomPassContext ctx)
        {
            // 指定模糊的半径(以像素为单位)。此示例使用 8 像素半径。
            float radius = 8.0f;
            // 指定模糊的精度。这也会影响蓝色的资源消耗量。值 9 很适合实时应用程序。
            int sampleCount = 9;
    
            // 如果有多个不同分辨率的摄像机,这会使这些摄像机之间的模糊效果保持一致。
            radius *= ctx.cameraColorBuffer.rtHandleProperties.rtHandleScale.x;
    
            // 实际的高斯模糊调用。它将当前摄像机的颜色缓冲区指定为源和目标。
            // 这会将半分辨率目标用作模糊通道之间的临时渲染目标。
            // 请注意,高斯模糊函数会在完成时清除半分辨率缓冲区的内容。
            CustomPassUtils.GaussianBlur(
                ctx, ctx.cameraColorBuffer, ctx.cameraColorBuffer, halfResTarget,
                sampleCount, radius, downSample: true
            );
        }
    
        // 释放分配给半分辨率目标的 GPU 内存。这很重要,否则内存会泄漏。
        protected override void Cleanup() => halfResTarget.Release();   
    }
    

    请注意,此示例使用了半分辨率目标 (halfResTarget),因为此示例先处理下采样通道。不过,也可以使用 HDRP 提供的自定义通道缓冲区。即使这不是半分辨率缓冲区,算法也仅使用一半的纹理。

    返回到顶部
    Copyright © 2023 Unity Technologies — 商标和使用条款
    • 法律条款
    • 隐私政策
    • Cookie
    • 不要出售或分享我的个人信息
    • Your Privacy Choices (Cookie Settings)