TransparentなOutlineの描画に対応する

This commit is contained in:
notargs
2023-05-09 15:50:18 +09:00
parent 9f69277163
commit bc7337ca0d
2 changed files with 16 additions and 6 deletions

View File

@@ -1,23 +1,24 @@
#if MTOON_URP
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
namespace VRMShaders.VRM10.MToon10.Runtime
{
public sealed class MToonOutlineRenderFeature : ScriptableRendererFeature
{
private MToonOutlineRenderPass _pass;
private MToonOutlineRenderPass _opaquePass;
private MToonOutlineRenderPass _transparentPass;
public override void Create()
{
_pass = new MToonOutlineRenderPass
{
renderPassEvent = RenderPassEvent.AfterRenderingOpaques
};
_opaquePass = new MToonOutlineRenderPass(RenderPassEvent.AfterRenderingOpaques, RenderQueueRange.opaque);
_transparentPass = new MToonOutlineRenderPass(RenderPassEvent.BeforeRenderingTransparents, RenderQueueRange.transparent);
}
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
{
renderer.EnqueuePass(_pass);
renderer.EnqueuePass(_opaquePass);
renderer.EnqueuePass(_transparentPass);
}
}
}

View File

@@ -9,6 +9,14 @@ namespace VRMShaders.VRM10.MToon10.Runtime
private const string ProfilerTag = nameof(MToonOutlineRenderPass);
private readonly ProfilingSampler _profilingSampler = new ProfilingSampler(ProfilerTag);
private readonly RenderQueueRange _renderQueueRange;
public MToonOutlineRenderPass(RenderPassEvent renderPassEvent, RenderQueueRange renderQueueRange)
{
_renderQueueRange = renderQueueRange;
this.renderPassEvent = renderPassEvent;
}
public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
{
var cmd = CommandBufferPool.Get();
@@ -27,6 +35,7 @@ namespace VRMShaders.VRM10.MToon10.Runtime
PerObjectData.ShadowMask
};
var filteringSettings = FilteringSettings.defaultValue;
filteringSettings.renderQueueRange = _renderQueueRange;
var renderStateBlock = new RenderStateBlock(RenderStateMask.Nothing);
context.DrawRenderers(renderingData.cullResults, ref drawingSettings, ref filteringSettings,
ref renderStateBlock);