Spelunx Cavern SDK
 
Loading...
Searching...
No Matches
DirectCanvasRenderPass.cs
Go to the documentation of this file.
1using UnityEngine;
2using UnityEngine.Rendering;
3using UnityEngine.Rendering.RenderGraphModule;
4using UnityEngine.Rendering.RenderGraphModule.Util;
5using UnityEngine.Rendering.Universal;
6
7namespace Spelunx
8{
9 // Todo: Execute to game view in edit mode?
10 public class DirectCanvasRenderPass : ScriptableRenderPass
11 {
12 private Material blitMaterial;
13
14 public DirectCanvasRenderPass(Material blitMaterial)
15 {
16 this.blitMaterial = blitMaterial;
17 this.requiresIntermediateTexture = true;
18 this.renderPassEvent = RenderPassEvent.AfterRendering;
19 }
20
21 public void SetMaterial(Material material)
22 {
23 blitMaterial = material;
24 }
25
26 public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData)
27 {
28 const string name = "DirectCanvasRenderPass";
29
30 // Get source.
31 var resourceData = frameData.Get<UniversalResourceData>();
32 if (resourceData.isActiveTargetBackBuffer) { return; }
33 var source = resourceData.activeColorTexture;
34
35 // Get destination.
36 var destinationDesc = renderGraph.GetTextureDesc(source);
37 destinationDesc.name = name;
38 destinationDesc.clearBuffer = false;
39 TextureHandle destination = renderGraph.CreateTexture(destinationDesc);
40
41 // Add blit pass.
42 RenderGraphUtils.BlitMaterialParameters para = new(source, destination, blitMaterial, 0);
43 renderGraph.AddBlitPass(para, passName: name);
44
45 resourceData.cameraColor = destination;
46 }
47 }
48}
void SetMaterial(Material material)
override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData)
DirectCanvasRenderPass(Material blitMaterial)