切换主武器

This commit is contained in:
SoulliesOfficial
2025-12-23 19:47:06 -05:00
parent eaa688c7a9
commit 2a2aa728d5
275 changed files with 12579 additions and 2770 deletions

View File

@@ -26,40 +26,34 @@ namespace SLSFramework.Rendering.PostProcessing
.Where(c => c.InjectionPoint == CustomPostProcessInjectionPoint.AfterTransparent)
.OrderBy(c => c.OrderInInjectionPoint)
.ToList();
afterTransparentPass =
new ScriptablePostProcessorPass("Custom PostProcessor - after Transparent", afterTransparentPostProcessors)
{
renderPassEvent = RenderPassEvent.AfterRenderingTransparents
};
afterTransparentPass = new ScriptablePostProcessorPass("Custom PostProcessor - after Transparent", afterTransparentPostProcessors)
{
renderPassEvent = RenderPassEvent.AfterRenderingTransparents
};
var beforePostProcessPostProcessors = postProcessorVolumes
.Where(c => c.InjectionPoint == CustomPostProcessInjectionPoint.BeforePostProcess)
.OrderBy(c => c.OrderInInjectionPoint)
.ToList();
beforePostProcessPass =
new ScriptablePostProcessorPass("Custom PostProcessor - before PostProcessing", beforePostProcessPostProcessors)
{
renderPassEvent = RenderPassEvent.BeforeRenderingPostProcessing
};
beforePostProcessPass = new ScriptablePostProcessorPass("Custom PostProcessor - before PostProcessing", beforePostProcessPostProcessors)
{
renderPassEvent = RenderPassEvent.BeforeRenderingPostProcessing
};
var afterPostProcessPostProcessors = postProcessorVolumes
.Where(c => c.InjectionPoint == CustomPostProcessInjectionPoint.AfterPostProcess)
.OrderBy(c => c.OrderInInjectionPoint)
.ToList();
afterPostProcessPass =
new ScriptablePostProcessorPass("Custom PostProcessor - after PostProcessing", afterPostProcessPostProcessors)
{
renderPassEvent = RenderPassEvent.AfterRenderingPostProcessing
};
afterPostProcessPass = new ScriptablePostProcessorPass("Custom PostProcessor - after PostProcessing", afterPostProcessPostProcessors)
{
renderPassEvent = RenderPassEvent.AfterRenderingPostProcessing
};
}
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
{
// 只有在相机开启后处理时才执行
if (renderingData.cameraData.postProcessEnabled)
{
// 关键点:将 renderingData 传递给 Pass 的 Setup 方法
// 这样我们就能把数据缓存下来给 RenderGraph 使用了
if (afterTransparentPass.Setup(ref renderingData))
{
afterTransparentPass.ConfigureInput(ScriptableRenderPassInput.Color);
@@ -82,21 +76,19 @@ namespace SLSFramework.Rendering.PostProcessing
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
if (disposing)
{
if (postProcessorVolumes != null)
{
foreach (var item in postProcessorVolumes)
{
item.Dispose();
}
}
// 关键点:调用 Pass 的清理函数,销毁缓存池中的材质
afterTransparentPass?.Cleanup();
beforePostProcessPass?.Cleanup();
afterPostProcessPass?.Cleanup();
afterTransparentPass = null;
beforePostProcessPass = null;
afterPostProcessPass = null;
postProcessorVolumes = null;
}
base.Dispose(disposing);
}
}
}