Skip to content

Instantly share code, notes, and snippets.

@wonkee-kim
Created August 11, 2020 00:33
Show Gist options
  • Save wonkee-kim/ddab321c4c3d88fc699d20f1cc7d2b51 to your computer and use it in GitHub Desktop.
Save wonkee-kim/ddab321c4c3d88fc699d20f1cc7d2b51 to your computer and use it in GitHub Desktop.

Revisions

  1. wonkee-kim created this gist Aug 11, 2020.
    53 changes: 53 additions & 0 deletions MyRendererFeature.cs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,53 @@
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.Rendering;
    using UnityEngine.Rendering.Universal;

    namespace UnityEngine.Experimental.Rendering.Universal {
    public class MyRendererFeature : ScriptableRendererFeature {

    [System.Serializable]
    public class Settings {

    public bool isEnabled = true;
    [Range(0, 1)] public float intensity = 0.5f;

    public RenderPassEvent renderPassEvent = RenderPassEvent.AfterRenderingTransparents;

    public Target target = Target.Camera;
    public Material blitMaterial = null;
    public string textureId = "_BlitPassTexture";
    }

    public enum Target {
    Camera,
    Texture
    }

    public Settings settings = new Settings();
    RenderTargetHandle m_renderTargetTexture;

    MyRenderPass myRenderPass;

    public override void Create() {
    myRenderPass = new MyRenderPass(this.name, settings.renderPassEvent, settings.blitMaterial);
    m_renderTargetTexture.Init(settings.textureId);
    }

    public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) {

    if(!settings.isEnabled || settings.intensity <= 0 || settings.blitMaterial == null)
    return;

    settings.blitMaterial.SetFloat("_Intensity", settings.intensity);

    RenderTargetIdentifier src = renderer.cameraColorTarget;
    RenderTargetHandle dest = (settings.target == Target.Camera) ? RenderTargetHandle.CameraTarget : m_renderTargetTexture;
    myRenderPass.Setup(src, dest);

    renderer.EnqueuePass(myRenderPass);
    }
    }

    }