using System.Collections; using System.Collections.Generic; using UnityEngine; [RequireComponent(typeof(Camera))] public class RadiusBlur : MonoBehaviour { static int radius_blur_dataId = Shader.PropertyToID("_RadiusData") ; static int radius_blur_iterationId = Shader.PropertyToID("_RadiusIterationData") ; [SerializeField] public Material radius_material; [SerializeField] public int iteration{ get{ if(radius_material != null) { return (int)radius_material.GetVector(radius_blur_iterationId).x; } return 1; } set{ if(radius_material != null) { float invIteration = 1.0f / value; radius_material.SetVector(radius_blur_iterationId, new Vector2(value, invIteration)); } } } [SerializeField] public Vector3 radius_data{ get{ if(radius_material != null) { return radius_material.GetVector(radius_blur_dataId); } return new Vector3(0.5f, 0.5f, 0.01f); } set{ if(radius_material != null) { radius_material.SetVector(radius_blur_dataId, value); } } } static int RADIUS_BLUR_PASS = 0; private void Awake() { if(radius_material != null) { radius_data = radius_material.GetVector(radius_blur_dataId); iteration = (int)radius_material.GetVector(radius_blur_iterationId).x; } } private void OnRenderImage(RenderTexture src, RenderTexture dest) { if(radius_material) { Graphics.Blit(src, dest, radius_material, RADIUS_BLUR_PASS); } else { Graphics.Blit(src, dest); } } }