|
|
- 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);
- }
- }
- }
|