通过深度纹理计算运动模糊

学shader也有一段时间了 好久没有发博了后面会把中间学习的一些成果 包括效果和源码整理一下发出来 不是很喜欢解释很多 我会写很多注释 有什么问题欢迎评论区讨论

具体思路

计算深度值 然后得出每个顶点的ndc坐标

通过视角,投影的逆矩阵计算出每个顶点的世界坐标

计算上一帧和当前帧的顶点位置通过视角投影矩阵得出ndc坐标下的位置差

位置差相当于速度对它的相邻像素采样,去平均后得到一个模糊的效果

C#代码直接挂摄像机上 所以只有摄像机运动时才会有用 如果是物体运动就会出错

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;

public class MotionBlurWithDepth : PostEffectsBase
{
   
    public Shader Motionshader;
    private Material motionMaterial = null;

    public Material material {
   
        get {
   
            motionMaterial = CheckShaderAndCreateMaterial(Motionshader,motionMaterial);
            return motionMaterial;
        }
    }
    [Range(0f, 1f)]
    public float blurSize = 0.5f;
    private Camera myCamera;
    public Camera _camera {
   
        get {
   
            if (myCamera == null)
                myCamera = GetComponent<Camera>(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值