本章节学习目标:

  • 了解后处理技术的实现原理
  • 熟悉后处理操作内容

环境配置:


image-20250215171837415

后处理技术框架

一、处理实现原理

1、实现步骤

  1. 创建一个从帧缓冲区获取图像到后处理中的脚本

image-20250215180606851

脚本代码:

//EasyImageEffect 是一个用于应用图像效果的 MonoBehaviour 脚本。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

// 它在编辑模式下执行,并使用指定的材质对渲染纹理进行处理。
[ExecuteInEditMode()]
public class EasyImageEffect : MonoBehaviour
{
    // 材质对象,包含用于图像效果的 Shader。
    public Material material;
    void Start()
    {
        // 检查材质是否为空,或者材质的着色器是否不被支持
        if (material == null  || !material.shader.isSupported || material.shader == null)
        {
            // 如果条件不满足,禁用此组件以避免错误
            enabled = false;
            return;
        }
    }

    // 渲染图像时调用,将源 RenderTexture 复制到目标 RenderTexture,
    /// 并应用指定的材质效果。
    void OnRenderImage(RenderTexture source, RenderTexture destination)
    {
        // 使用 Graphics.Blit 方法将源 RenderTexture 应用材质后复制到目标 RenderTexture
        Graphics.Blit(source, destination, material, 0);
    }
}
  1. 创建材质赋予给脚本实现相机后处理效果

2、材质实现流程

  1. 实现图片平铺到屏幕(使该shader被屏幕空间采样)

裁剪空间到NDC空间下的计算(获取NDC标准化设备坐标)

image-20250225141647443

  1. 效果实现:直接编辑shader即可。

  2. 使用代码获取材质球中的参数

image-20250225142756347

3、shader实现效果

(1)img内置函数使用方法

image-20250225142818408

(2)亮度、饱和度和对比度实现方法

(3)暗角/晕影实现方法