Removed the dependency of layer mask of hair shadow caster;

Added HairShadowCaster pass;
This commit is contained in:
Misaki
2025-01-08 23:09:55 +09:00
parent a7a9ad16b5
commit 968b83870f
9 changed files with 97 additions and 146 deletions

View File

@@ -108,13 +108,12 @@ namespace Misaki.HdrpToon
depthState = new DepthState(true, CompareFunction.LessEqual),
};
var result = new RendererListDesc(HDShaderPassNames.s_DepthForwardOnlyName, ctx.cullingResults, ctx.hdCamera.camera)
var result = new RendererListDesc(UtsShaderPassName.hairShadowCasterPassId, ctx.cullingResults, ctx.hdCamera.camera)
{
renderQueueRange = GetRenderQueueRange(RenderQueueType.All),
sortingCriteria = SortingCriteria.CommonOpaque,
excludeObjectMotionVectors = false,
stateBlock = stateBlock,
layerMask = layerMask,
};
CoreUtils.DrawRendererList(ctx.renderContext, ctx.cmd, ctx.renderContext.CreateRendererList(result));

View File

@@ -7,8 +7,6 @@ namespace Misaki.HdrpToon
[HideInInspector]
internal class UTSOutlinePass : DrawRenderersCustomPass
{
private ShaderTagId outlineTag = new("Outline");
protected override void Execute(CustomPassContext ctx)
{
var utsRenderer = ctx.hdCamera.volumeStack.GetComponent<UTSRenderer>();
@@ -33,7 +31,7 @@ namespace Misaki.HdrpToon
};
var renderConfig = HDUtils.GetRendererConfiguration(false, false);
var result = new UnityEngine.Rendering.RendererUtils.RendererListDesc(outlineTag, ctx.cullingResults, ctx.hdCamera.camera)
var result = new UnityEngine.Rendering.RendererUtils.RendererListDesc(UtsShaderPassName.outlinePassId, ctx.cullingResults, ctx.hdCamera.camera)
{
rendererConfiguration = renderConfig,
renderQueueRange = GetRenderQueueRange(RenderQueueType.All),

View File

@@ -35,7 +35,6 @@ namespace Misaki.HdrpToon
_hairShadowPass = new()
{
name = "UTS Hair Shadow Map",
layerMask = _renderSetting.hairShadowSetting.shadowCasterLayer,
targetColorBuffer = CustomPass.TargetBuffer.None,
targetDepthBuffer = CustomPass.TargetBuffer.None,
};
@@ -47,9 +46,9 @@ namespace Misaki.HdrpToon
targetDepthBuffer = CustomPass.TargetBuffer.None,
};
CustomPassVolume.RegisterGlobalCustomPass(CustomPassInjectionPoint.BeforeRendering, _utsPass);
CustomPassVolume.RegisterGlobalCustomPass(CustomPassInjectionPoint.AfterOpaqueDepthAndNormal, _hairShadowPass);
CustomPassVolume.RegisterGlobalCustomPass(CustomPassInjectionPoint.BeforePostProcess, _outlinePass);
CustomPassVolume.RegisterUniqueGlobalCustomPass(CustomPassInjectionPoint.BeforeRendering, _utsPass);
CustomPassVolume.RegisterUniqueGlobalCustomPass(CustomPassInjectionPoint.AfterOpaqueDepthAndNormal, _hairShadowPass);
CustomPassVolume.RegisterUniqueGlobalCustomPass(CustomPassInjectionPoint.BeforePostProcess, _outlinePass);
NotifyRendererSettingChanged();
}
@@ -68,7 +67,6 @@ namespace Misaki.HdrpToon
return;
}
_hairShadowPass.layerMask = _renderSetting.hairShadowSetting.shadowCasterLayer;
_hairShadowPass.enabled = _renderSetting.hairShadowSetting.enable;
_hairShadowPass.CurrentShadowQuality = _renderSetting.hairShadowSetting.shadowQuality;
if (!_renderSetting.hairShadowSetting.enable)