Added HairBlending shader pass;

Added HairBlendingSetting in UTSRenderPassSetting;
Added MaterialType to UTS;
Added MaterialFeature scope to UTS material editor;

Merged HairBlendingPass and HairShadowPass into UTSPass;

Fixed the bug that character box light can not update rotation correctly according to bound light source;
This commit is contained in:
Misaki
2025-01-09 07:58:06 +09:00
parent 9290223624
commit d47641e5e2
18 changed files with 627 additions and 368 deletions

View File

@@ -11,7 +11,7 @@ namespace Misaki.HdrpToon
private static UTSRenderPassSettings _renderSetting;
private static UTSPass _utsPass;
private static UTSHairShadowPass _hairShadowPass;
//private static UTSHairShadowPass _hairShadowPass;
private static UTSOutlinePass _outlinePass;
static UTSRenderPassRegistrar() => RegisterCustomPasses();
@@ -32,22 +32,21 @@ namespace Misaki.HdrpToon
targetDepthBuffer = CustomPass.TargetBuffer.None,
};
_hairShadowPass = new()
{
name = "UTS Hair Shadow Map",
targetColorBuffer = CustomPass.TargetBuffer.None,
targetDepthBuffer = CustomPass.TargetBuffer.None,
};
//_hairShadowPass = new()
//{
// name = "UTS Hair Shadow Map",
// targetColorBuffer = CustomPass.TargetBuffer.None,
// targetDepthBuffer = CustomPass.TargetBuffer.None,
//};
_outlinePass = new()
{
name = "UTS Outline",
targetColorBuffer = CustomPass.TargetBuffer.None,
targetDepthBuffer = CustomPass.TargetBuffer.None,
targetColorBuffer = CustomPass.TargetBuffer.Camera,
targetDepthBuffer = CustomPass.TargetBuffer.Camera,
};
CustomPassVolume.RegisterUniqueGlobalCustomPass(CustomPassInjectionPoint.BeforeRendering, _utsPass);
CustomPassVolume.RegisterUniqueGlobalCustomPass(CustomPassInjectionPoint.AfterOpaqueDepthAndNormal, _hairShadowPass);
CustomPassVolume.RegisterUniqueGlobalCustomPass(CustomPassInjectionPoint.BeforePostProcess, _outlinePass);
NotifyRendererSettingChanged();
@@ -56,23 +55,21 @@ namespace Misaki.HdrpToon
public static void UnregisterGlobalCustomPass()
{
CustomPassVolume.UnregisterGlobalCustomPass(_utsPass);
CustomPassVolume.UnregisterGlobalCustomPass(_hairShadowPass);
CustomPassVolume.UnregisterGlobalCustomPass(_outlinePass);
}
public static void NotifyRendererSettingChanged()
{
if (_hairShadowPass == null || _outlinePass == null)
if (_utsPass == null || _outlinePass == null)
{
return;
}
_hairShadowPass.enabled = _renderSetting.hairShadowSetting.enable;
_hairShadowPass.CurrentShadowQuality = _renderSetting.hairShadowSetting.shadowQuality;
if (!_renderSetting.hairShadowSetting.enable)
{
_hairShadowPass.Release();
}
_utsPass.EnableHairShadow = _renderSetting.hairShadowSetting.enable;
_utsPass.HairShadowQuality = _renderSetting.hairShadowSetting.quality;
_utsPass.EnableHairBlending = _renderSetting.hairBlendingSetting.enable;
_utsPass.HairBlendingQuality = _renderSetting.hairBlendingSetting.quality;
_outlinePass.enabled = _renderSetting.outlineSetting.enable;
}