Unity Shader学习:SSAA超采样抗锯齿
抗锯齿Shader网上看了下没看到比较好的直接能用的,只能自己搜搜随便撸了一个,实现不一定特别好,有需要的话可以用用看。
SSAA超采样抗锯齿主要思路:利用Sobel算子做卷积算出哪些像素处在颜色变化的边缘,再使用周边采样算法进行插值模糊。
C#部分:
//屏幕后处理基类
using UnityEngine;
using System.Collections;
//非运行时也触发效果
[ExecuteInEditMode]
//屏幕后处理特效一般都需要绑定在摄像机上
[RequireComponent(typeof(Camera))]
//提供一个后处理的基类,主要功能在于直接通过Inspector面板拖入shader,生成shader对应的材质
public class PostEffectBase : MonoBehaviour
{
//Inspector面板上直接拖入
public Shader shader = null;
private Material _material = null;
public Material _Material
{
get
{
if (_material == null)
_material = GenerateMaterial(shader);
return _material;
}
}
//根据shader创建用于屏幕特效的材质
protected Material GenerateMaterial(Shader shader)
{
if (shader == null)
return null;
//需要判断shader是否支持
if (shader.isSupported == false)
return null;
Material material = new Material(shader);
material.hideFlags = HideFlags.DontSave;
if (material)
return material;
return null;
}
}
//SSAA抗锯齿后处理
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[ExecuteInEditMode]
public class SSAAPostEffect : PostEffectBase {
/// <summary>
/