Advertisement
Guest User

Untitled

a guest
Apr 11th, 2025
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.79 KB | Source Code | 0 0
  1. public class Feature : ScriptableRendererFeature
  2. {
  3.     private class Pass : ScriptableRenderPass
  4.     {
  5.         private const string PassName = "Effect";
  6.         private Material _material;
  7.  
  8.         public void Init(Material material)
  9.         {
  10.             _material = material;
  11.         }
  12.        
  13.         public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData)
  14.         {
  15.             var resourceData = frameData.Get<UniversalResourceData>();
  16.  
  17.             if (resourceData.isActiveTargetBackBuffer)
  18.             {
  19.                 return;
  20.             }
  21.            
  22.             var source = resourceData.activeColorTexture;
  23.             var destinationDesc = renderGraph.GetTextureDesc(source);
  24.             destinationDesc.name = $"CameraColor-{PassName}";
  25.             destinationDesc.clearBuffer = false;
  26.  
  27.             var destination = renderGraph.CreateTexture(destinationDesc);
  28.  
  29.             var parameters = new RenderGraphUtils.BlitMaterialParameters(source, destination, _material, 0);
  30.            
  31.             renderGraph.AddBlitPass(parameters, PassName);
  32.            
  33.             resourceData.cameraColor = destination;
  34.         }
  35.     }
  36.  
  37.     private Pass _pass;
  38.    
  39.     public RenderPassEvent injectionPoint = RenderPassEvent.AfterRenderingSkybox;
  40.     public Material material;
  41.    
  42.     public override void Create()
  43.     {
  44.         _pass = new Pass
  45.         {
  46.             renderPassEvent = injectionPoint
  47.         };
  48.     }
  49.  
  50.     public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
  51.     {
  52.         if (material == null)
  53.         {
  54.             Debug.LogWarning("no material");
  55.             return;
  56.         }
  57.        
  58.         _pass.Init(material);
  59.         renderer.EnqueuePass(_pass);
  60.     }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement