114 lines
3.4 KiB
C#
114 lines
3.4 KiB
C#
using System;
|
|
using UnityEngine;
|
|
using UnityEngine.Rendering;
|
|
|
|
namespace EPOOutline
|
|
{
|
|
public class BasicCommandBufferWrapper : CommandBufferWrapper, IUnderlyingBufferProvider, IDisposable
|
|
{
|
|
private CommandBuffer buffer;
|
|
|
|
private static RenderTargetIdentifier ConvertToRTI(RTHandle handle)
|
|
{
|
|
return handle.rt != null ? handle.rt : handle.nameID;
|
|
}
|
|
|
|
public BasicCommandBufferWrapper(CommandBuffer buffer)
|
|
{
|
|
this.buffer = buffer;
|
|
}
|
|
|
|
public CommandBuffer UnderlyingBuffer => buffer;
|
|
|
|
public void SetCommandBuffer(CommandBuffer buffer)
|
|
{
|
|
this.buffer = buffer;
|
|
}
|
|
|
|
public override void Clear()
|
|
{
|
|
buffer?.Clear();
|
|
}
|
|
|
|
public override void SetGlobalInt(int hash, int value)
|
|
{
|
|
buffer.SetGlobalInt(hash, value);
|
|
}
|
|
|
|
public override void SetGlobalFloat(int hash, float value)
|
|
{
|
|
buffer.SetGlobalFloat(hash, value);
|
|
}
|
|
|
|
public override void SetGlobalVector(int hash, Vector4 value)
|
|
{
|
|
buffer.SetGlobalVector(hash, value);
|
|
}
|
|
|
|
public override void SetGlobalColor(int hash, Color color)
|
|
{
|
|
buffer.SetGlobalColor(hash, color);
|
|
}
|
|
|
|
public override void SetGlobalTexture(int hash, RTHandle texture)
|
|
{
|
|
buffer.SetGlobalTexture(hash, ConvertToRTI(texture));
|
|
}
|
|
|
|
public override void SetRenderTarget(RTHandle color, int slice)
|
|
{
|
|
var target = new RenderTargetIdentifier(ConvertToRTI(color), 0, CubemapFace.Unknown, slice);
|
|
buffer.SetRenderTarget(target);
|
|
}
|
|
|
|
public override void SetRenderTarget(RTHandle color, RTHandle depth, int slice)
|
|
{
|
|
var colorRTI = new RenderTargetIdentifier(ConvertToRTI(color), 0, CubemapFace.Unknown, slice);
|
|
var depthRTI = new RenderTargetIdentifier(ConvertToRTI(depth), 0, CubemapFace.Unknown, slice);
|
|
|
|
buffer.SetRenderTarget(colorRTI, depthRTI);
|
|
}
|
|
|
|
public override void SetViewport(Rect rect)
|
|
{
|
|
buffer.SetViewport(rect);
|
|
}
|
|
|
|
public override void DisableShaderKeyword(string keyword)
|
|
{
|
|
buffer.DisableKeyword(GlobalKeyword.Create(keyword));
|
|
}
|
|
|
|
public override void EnableShaderKeyword(string keyword)
|
|
{
|
|
buffer.EnableKeyword(GlobalKeyword.Create(keyword));
|
|
}
|
|
|
|
public override void ClearRenderTarget(bool depth, bool clr, Color clearColor)
|
|
{
|
|
buffer.ClearRenderTarget(depth, clr, clearColor);
|
|
}
|
|
|
|
public override void DrawRenderer(Renderer target, Material material, int submesh)
|
|
{
|
|
buffer.DrawRenderer(target, material, submesh);
|
|
}
|
|
|
|
public override void DrawMeshInstanced(Mesh mesh, int submesh, Material material, int pass, Matrix4x4[] matrices, int countToDraw,
|
|
MaterialPropertyBlock block)
|
|
{
|
|
buffer.DrawMeshInstanced(mesh, submesh, material, pass, matrices, countToDraw, block);
|
|
}
|
|
|
|
public override void DrawMesh(Mesh mesh, Matrix4x4 matrix, Material material, int submesh, int pass)
|
|
{
|
|
buffer.DrawMesh(mesh, matrix, material, submesh, pass);
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
buffer?.Dispose();
|
|
buffer = null;
|
|
}
|
|
}
|
|
} |