【add】主入口初始化
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user