mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-08-20 09:34:42 -05:00
TransparentなOutlineの描画に対応する
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user