Removed the dependency of layer mask of hair shadow caster;
Added HairShadowCaster pass;
This commit is contained in:
@@ -16,7 +16,6 @@ namespace Misaki.HdrpToon
|
||||
{
|
||||
public bool enable;
|
||||
public UTSHairShadowPass.ShadowQuality shadowQuality;
|
||||
public LayerMask shadowCasterLayer;
|
||||
}
|
||||
|
||||
[CreateAssetMenu(fileName = "UTSRenderSetting", menuName = "UTS/RenderSetting")]
|
||||
|
||||
@@ -317,6 +317,7 @@ Shader "HDRP/Toon"
|
||||
_SDFNoseHighlightSmoothRange("SDFNoseHighlightSmoothRange", Range(0.0, 0.1)) = 0.02
|
||||
|
||||
// Hair Shadow
|
||||
[Toggle(_)] _Is_CastHairShadow("Is_CastHairShadow", Float) = 0
|
||||
[Toggle(_)] _Is_ReceiveHairShadow("Is_ReceiveHairShadow", Float) = 0
|
||||
|
||||
_ShadowBias("ShadowBias", Range(0.0, 5.0)) = 0.0
|
||||
@@ -1156,6 +1157,34 @@ Shader "HDRP/Toon"
|
||||
|
||||
ENDHLSL
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Name "HairShadowCaster"
|
||||
Tags{ "LightMode" = "HairShadowCaster" }
|
||||
|
||||
Cull[_CullMode]
|
||||
|
||||
ZClip [_ZClip]
|
||||
ZWrite On
|
||||
ZTest LEqual
|
||||
|
||||
ColorMask 0
|
||||
|
||||
HLSLPROGRAM
|
||||
|
||||
#define SHADERPASS SHADERPASS_SHADOWS
|
||||
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"
|
||||
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/Lit.hlsl"
|
||||
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/ShaderPass/LitDepthPass.hlsl"
|
||||
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Lit/LitData.hlsl"
|
||||
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassDepthOnly.hlsl"
|
||||
|
||||
#pragma vertex Vert
|
||||
#pragma fragment Frag
|
||||
|
||||
ENDHLSL
|
||||
}
|
||||
}
|
||||
|
||||
SubShader
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user