using UnityEngine;
|
|
[ExecuteAlways]
|
public class ImageMask : PostEffectsBaseEx
|
{
|
static readonly string shaderName = "lcl/screenEffect/MaskEffect";
|
|
// 遮罩大小
|
[Range(0.01f, 10f), Tooltip("遮罩大小")]
|
public float size = 5.0f;
|
// 边缘模糊程度
|
[Range(0.0001f, 0.1f), Tooltip("边缘模糊程度")]
|
public float edgeBlurLength = 0.05f;
|
// 遮罩中心位置
|
private Vector2 pos = new Vector4(0.5f, 0.5f);
|
|
void OnEnable()
|
{
|
shader = Shader.Find(shaderName);
|
}
|
|
// 渲染屏幕
|
void OnRenderImage(RenderTexture source, RenderTexture destination)
|
{
|
if (material)
|
{
|
// 把鼠标坐标传递给shader
|
material.SetVector("_Pos", pos);
|
// 遮罩大小
|
material.SetFloat("_Size", size);
|
// 模糊程度
|
material.SetFloat("_EdgeBlurLength", edgeBlurLength);
|
// 渲染
|
Graphics.Blit(source, destination, material);
|
}
|
else
|
{
|
Graphics.Blit(source, destination);
|
}
|
}
|
|
// void Update()
|
// {
|
// if (Input.GetMouseButton(0))
|
// {
|
// Vector2 mousePos = Input.mousePosition;
|
// //将mousePos转化为(0,1)区间
|
// pos = new Vector2(mousePos.x / Screen.width, mousePos.y / Screen.height);
|
// }
|
// }
|
}
|