Unity Shader - 后处理:油画效果

效果图:

                                                                                    效果对比图(一)

                        效果对比图(二)(这三幅图分别是原图、油画效果、油画效果+亮度、饱和度、对比度)


 

油画风格的渲染:

主要按以下四步来实现效果:
1:调整亮度、饱和度和对比度;
2:对图像进行高斯模糊;
3:对场景中的物体,根据深度法线信息进行描边;
4:进行物体内画笔笔触的模拟;(画笔滤波)
接下来我分别就这四步依次展开说明:


1:调整亮度、饱和度和对比度;

参见:

Unity Shader - 后处理:简单的颜色调整(亮度,饱和度,对比度)


2:对图像进行高斯模糊;

参见:

Unity Shader - 后处理:高斯模糊


3:对场景中的物体,根据深度法线信息进行描边;

参见:

Unity Shader - 后处理:边缘检测实现描边效果

 


4:进行物体内画笔笔触的模拟;(画笔滤波)

模拟笔触:虽然通过模糊,颜色上有一定的水墨扩散的感觉,通过描边可以区分模型的边缘,但图片还是有许多不自然的地方。比如颜色扩散太均匀不想“画”出来的,许多细小的边缘由于太小而形成了“噪点”。所以我们再进行一次滤波来消除这些问题,并模拟画笔的笔触,这里用了一种保留边缘的滤。具体思路是用中心像素作为模板的四个角,然后分别计算中心在四个角时的整个区域的均值和方差,然后取方差最小的区域的均值输出。简化后,只取两个角来计算的,我这里就直接用两个角的来算了。


概述

描述样本值的离散程度,最常用的指标是方差和标准差,它们与前面所说的全距(极差)只使用了两个极值情况不同,它们利用了样本的全部信息去描述数据取值的分散性。

方差:

,其中,x表示样本的平均数,n表示样本的数量,xi表示个体,而s^2就表示方差。

平方差:a²-b²=(a+b)(a-b)。

标准差:标准差=sqrt(((x1-x)^2 +(x2-x)^2 +......(xn-x)^2)/n)。


注意:

1:对于油画效果,加入高斯模糊,没太多视觉改善效果;

2:加入描边效果后,整体效果反而会下降

对比最终效果,舍弃了高斯模糊和描边的处理;


C#代码如下:

//挂在摄像机上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[ExecuteInEditMode]
public class ChineseInkPostEffect : PostEffectBase
{
    /// <summary>
    /// 降分辨率未操作
    /// </summary>
    [Range(0, 5)]
    public int downSample = 1;
    /// <summary>
    /// 高斯模糊采样缩放系数
    /// </summary>
   
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值