UnityShader开发之径向模糊(可调节中心点 、 可调整中心点周围有一圈不模糊)

UnityShader开发之径向模糊(可调节中心点 、 可调整中心点周围有一圈不模糊)


原图:

在这里插入图片描述

1. 无模糊开始半径

1.1 算法

(1)求得当前像素坐标与模糊中心点的坐标相减求得的带有大小的方向向量
(2)取得方向向量上的值,将方向向量切分为整数倍份(例如10份),分别取得当模糊中心点加上每份方向向量后取得的坐标所对应的颜色值,累加起来。(取小于方向向量的等分是为了将内部的颜色发散出去,如果需要聚焦,即缩小,则取倍数于其方向向量上的颜色值
(3)除于切分成的数量,取到的就是当前像素点的值

1.2 代码

1.2.1 C#端

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

[ExecuteInEditMode]//在编辑器模式下也运行
[RequireComponent(typeof(Camera))]//必须有Camera组件
public class RadiaBlur  :MonoBehaviour{

    public Shader RadiaBlurShader;
    public Material RadiaBlurMaterial;

    [Range(1,100)]
    public float Level = 10;

    [Range(0, 1)]
    public float CenterX = 0.5f;

    [Range(0, 1)]
    public float CenterY = 0.5f;

    private void Awake()
    {
        RadiaBlurMaterial = new Material(RadiaBlurShader);
    }

    void OnRenderImage(RenderTexture src, RenderTexture dest)
    {
        if (RadiaBlurMaterial != null)
        {
            RadiaBlurMaterial.SetFloat("_Level", Level);
            RadiaBlurMaterial.SetFloat("_CenterX", CenterX);
            RadiaBlurMaterial.SetFloat("_CenterY", Cen
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值