summaryrefslogtreecommitdiff
path: root/Thronefall_1_0/Decompile/CustomPostProcess.cs
blob: 6b88bfc8558dc409f9b6f2453768810171f0b7ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
using System;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;

public class CustomPostProcess : ScriptableRendererFeature
{
	private class CustomRenderPass : ScriptableRenderPass
	{
		public RenderTargetIdentifier source;

		private Material mat;

		private RenderTargetHandle tempRenderTargetHandle;

		public CustomRenderPass(Material _mat)
		{
			mat = _mat;
			tempRenderTargetHandle.Init("_TemporaryColorTexture");
		}

		public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderingData)
		{
		}

		public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
		{
			CommandBuffer commandBuffer = CommandBufferPool.Get();
			commandBuffer.GetTemporaryRT(tempRenderTargetHandle.id, renderingData.cameraData.cameraTargetDescriptor);
			Blit(commandBuffer, source, tempRenderTargetHandle.Identifier(), mat);
			Blit(commandBuffer, tempRenderTargetHandle.Identifier(), source);
			context.ExecuteCommandBuffer(commandBuffer);
			CommandBufferPool.Release(commandBuffer);
		}

		public override void OnCameraCleanup(CommandBuffer cmd)
		{
		}
	}

	[Serializable]
	public class Settings
	{
		public Material material;
	}

	private CustomRenderPass m_ScriptablePass;

	public Settings settings;

	public override void Create()
	{
		m_ScriptablePass = new CustomRenderPass(settings.material);
		m_ScriptablePass.renderPassEvent = RenderPassEvent.BeforeRenderingPostProcessing;
	}

	public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
	{
		m_ScriptablePass.source = renderer.cameraColorTarget;
		renderer.EnqueuePass(m_ScriptablePass);
	}
}