Guest User

Unity First Person Objects

a guest
Oct 16th, 2017
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.53 KB | None | 0 0
  1. /// <summary>
  2. /// Component which renders object on top of all other object.
  3. /// </summary>
  4. public class FirstPersonEffect : MonoBehaviour
  5. {
  6.     public Camera Camera;
  7.  
  8.     public Material DepthClearMaterial;
  9.  
  10.     List<Renderer> m_renderers = new List<Renderer>();
  11.     CommandBuffer m_cmdBuffer;
  12.  
  13.     private void OnEnable()
  14.     {
  15.         m_cmdBuffer = new CommandBuffer();
  16.         Camera.AddCommandBuffer(CameraEvent.AfterGBuffer, m_cmdBuffer);
  17.         UpdateCommandBuffer();
  18.     }
  19.  
  20.     private void OnDisable()
  21.     {
  22.         Camera.RemoveCommandBuffer(CameraEvent.AfterGBuffer, m_cmdBuffer);
  23.         m_cmdBuffer.Dispose();
  24.     }
  25.  
  26.     private void OnTransformChildrenChanged()
  27.     {
  28.         UpdateCommandBuffer();
  29.     }
  30.  
  31.     private void UpdateCommandBuffer()
  32.     {
  33.         m_cmdBuffer.Clear();
  34.  
  35.         GetComponentsInChildren(m_renderers);
  36.  
  37.         // Render first with DepthClear material
  38.         foreach (var rend in m_renderers)
  39.         {
  40.             for (int i = 0; i < rend.materials.Length; i++)
  41.             {
  42.                 m_cmdBuffer.DrawRenderer(rend, DepthClearMaterial, i);
  43.             }
  44.         }
  45.  
  46.         // Then render with it's material
  47.         foreach (var rend in m_renderers)
  48.         {
  49.             for (int i = 0; i < rend.materials.Length; i++)
  50.             {
  51.                 var material = rend.materials[i];
  52.                 int pass = material.FindPass("DEFERRED");
  53.                 m_cmdBuffer.DrawRenderer(rend, material, i, pass != -1 ? pass : 0);
  54.             }
  55.         }
  56.     }
  57. }
Add Comment
Please, Sign In to add comment