Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Calico post processing with stencil mask
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine.Rendering;
- [ExecuteInEditMode]
- [ImageEffectAllowedInSceneView]
- public class ScreenMaterial : MonoBehaviour {
- public DepthTextureMode depthMode = DepthTextureMode.None;
- //AfterForwardAlpha will work for most effects
- public CameraEvent RenderOrder = CameraEvent.AfterForwardAlpha;
- public Material effectMaterial;
- private CameraEvent tempCE;
- private CommandBuffer commandBuffer;
- private Camera m_Camera;
- private Camera Cam
- {
- get
- {
- if (m_Camera == null)
- {
- m_Camera = GetComponent<Camera>();
- }
- return m_Camera;
- }
- }
- //Update settings when edited
- private void OnValidate()
- {
- Cam.depthTextureMode = depthMode;
- if ((RenderOrder != tempCE && commandBuffer != null))
- {
- Cam.RemoveCommandBuffer(tempCE, commandBuffer);
- Cam.AddCommandBuffer(RenderOrder, commandBuffer);
- tempCE = RenderOrder;
- }
- else if (RenderOrder != tempCE && effectMaterial != null)
- OnEnable();
- }
- private void OnEnable()
- {
- if (commandBuffer == null && effectMaterial != null)
- {
- commandBuffer = new CommandBuffer();
- commandBuffer.name = "commandBuffer";
- int StencRT = Shader.PropertyToID("_Temp2");
- commandBuffer.GetTemporaryRT(StencRT, -1, -1, 0);
- commandBuffer.SetRenderTarget(color: StencRT, depth: StencRT);
- commandBuffer.ClearRenderTarget(false, true, Color.clear);
- commandBuffer.Blit(BuiltinRenderTextureType.CameraTarget, StencRT);
- commandBuffer.SetGlobalTexture("_MainTex", StencRT);
- commandBuffer.Blit(BuiltinRenderTextureType.CameraTarget, BuiltinRenderTextureType.CameraTarget, effectMaterial);
- Cam.AddCommandBuffer(RenderOrder, commandBuffer);
- }
- }
- private void OnDisable()
- {
- if (commandBuffer != null)
- {
- Cam.RemoveCommandBuffer(RenderOrder, commandBuffer);
- commandBuffer = null;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement