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);
}
}
|