Created
June 19, 2019 08:13
-
-
Save phi-lira/99a349385e31cb2c456f3b1cd25f1698 to your computer and use it in GitHub Desktop.
Custom Render Feature script template to be added to a LWRP Renderer. Drag 'n Drop this script to your project, write the desired rendering code. It now it's available to be added to a LWRP renderer by clicking on the + icon under renderer features in the Renderer inspector.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using UnityEngine; | |
using UnityEngine.Rendering; | |
using UnityEngine.Rendering.LWRP; | |
public class CustomRenderPassFeature : ScriptableRendererFeature | |
{ | |
class CustomRenderPass : ScriptableRenderPass | |
{ | |
// This method is called before executing the render pass. | |
// It can be used to configure render targets and their clear state. Also to create temporary render target textures. | |
// When empty this render pass will render to the active camera render target. | |
// You should never call CommandBuffer.SetRenderTarget. Instead call <c>ConfigureTarget</c> and <c>ConfigureClear</c>. | |
// The render pipeline will ensure target setup and clearing happens in an performance manner. | |
public override void Configure(CommandBuffer cmd, RenderTextureDescriptor cameraTextureDescriptor) | |
{ | |
} | |
// Here you can implement the rendering logic. | |
// Use <c>ScriptableRenderContext</c> to issue drawing commands or execute command buffers | |
// https://docs.unity3d.com/ScriptReference/Rendering.ScriptableRenderContext.html | |
// You don't have to call ScriptableRenderContext.submit, the render pipeline will call it at specific points in the pipeline. | |
public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) | |
{ | |
} | |
/// Cleanup any allocated resources that were created during the execution of this render pass. | |
public override void FrameCleanup(CommandBuffer cmd) | |
{ | |
} | |
} | |
CustomRenderPass m_ScriptablePass; | |
public override void Create() | |
{ | |
m_ScriptablePass = new CustomRenderPass(); | |
// Configures where the render pass should be injected. | |
m_ScriptablePass.renderPassEvent = RenderPassEvent.AfterRenderingOpaques; | |
} | |
// Here you can inject one or multiple render passes in the renderer. | |
// This method is called when setting up the renderer once per-camera. | |
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) | |
{ | |
renderer.EnqueuePass(m_ScriptablePass); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment