From f8f930a09f4c557e5a79d78c2e64f4be17f7e2b4 Mon Sep 17 00:00:00 2001 From: BlueRose <378100977@qq.com> Date: Wed, 16 Jul 2025 15:22:16 +0800 Subject: [PATCH 1/5] vault backup: 2025-07-16 15:22:16 --- .../RenderFeature/ShaderWorldPlugin/ShaderWorld.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/03-UnrealEngine/Rendering/RenderFeature/ShaderWorldPlugin/ShaderWorld.md b/03-UnrealEngine/Rendering/RenderFeature/ShaderWorldPlugin/ShaderWorld.md index 8e2858b..e609227 100644 --- a/03-UnrealEngine/Rendering/RenderFeature/ShaderWorldPlugin/ShaderWorld.md +++ b/03-UnrealEngine/Rendering/RenderFeature/ShaderWorldPlugin/ShaderWorld.md @@ -1534,6 +1534,7 @@ void AShaderWorldActor::CollisionCPU() BPRecomputeScope = BPCollisionRebuildRequest, ColRingCount = CollisionGridMaxRingNumber, LocalActorLocation, LocalOriginLocation, Height0 = HeightOnStart, Bounded = WorldHasBounds_OnRebuild, GBounds = WorldBoundsOnRebuild, Lock = CollisionMeshAccessLock] { + //CollisionShareable无效则返回 if (!CollData.IsValid()) { if (Completion.IsValid()) @@ -1542,9 +1543,8 @@ void AShaderWorldActor::CollisionCPU() } FScopeLock CollisionMeshArrayAccess(Lock.Get()); - + //Brush相关 double CollisionWidth = CollData->CollisionResolution * (CollData->VerticePerPatch - 1); - TMap BrushRedraws; for (const FBox2d& B : BrushScope) { @@ -1571,7 +1571,6 @@ void AShaderWorldActor::CollisionCPU() SWorldBounds.Max *= 100.0; TSet ExternalCollisionsBounds; - for (const ShaderWorld::FVisitor& SingleCamLoc : VisitorLocations) { if (SingleCamLoc.Bounds.IsValid) @@ -1583,6 +1582,7 @@ void AShaderWorldActor::CollisionCPU() CollData->MultipleCamera.Empty(); CollData->LocRefs.Empty(); + //遍历所有Visitor,之后往CollisionShareable中的LocRefs、MultipleCamera添加计算结果。 for (const ShaderWorld::FVisitor& SingleCamLoc : VisitorLocations) { if (SingleCamLoc.Bounds.IsValid) @@ -1689,6 +1689,7 @@ void AShaderWorldActor::CollisionCPU() WorldBounds.Min *= 100.0; WorldBounds.Max *= 100.0; + //根据ShaderWorld边界,来维护UsedCollisionMesh、CollisionMeshData、CollisionMeshToCreate、CollisionMeshToRenameMoveUpdate、GroundCollisionLayout for (auto& ExternalBounds : ExternalCollisionsBounds) { FIntVector LocMeshInt = ExternalBounds; @@ -1735,6 +1736,7 @@ void AShaderWorldActor::CollisionCPU() } } + //根据ShaderWorld MultipleCamera,来维护UsedCollisionMesh、CollisionMeshData、CollisionMeshToCreate、CollisionMeshToRenameMoveUpdate、GroundCollisionLayout for (auto& Elem : CollData->MultipleCamera) { FIntVector& SingleCam = Elem.Key; @@ -1796,6 +1798,7 @@ void AShaderWorldActor::CollisionCPU() } } + //开始下一轮循环,bPreprocessingCollisionUpdate 设置为false if (Completion.IsValid()) (*Completion.Get()) = false; } From a8f45d24905e3e6dc2df65cfb1863981c8fa1b46 Mon Sep 17 00:00:00 2001 From: BlueRose <378100977@qq.com> Date: Thu, 24 Jul 2025 15:27:13 +0800 Subject: [PATCH 2/5] vault backup: 2025-07-24 15:27:13 --- 03-UnrealEngine/卡通渲染相关资料/卡通渲染开发总览.md | 1 + 1 file changed, 1 insertion(+) diff --git a/03-UnrealEngine/卡通渲染相关资料/卡通渲染开发总览.md b/03-UnrealEngine/卡通渲染相关资料/卡通渲染开发总览.md index 0c9809d..236e225 100644 --- a/03-UnrealEngine/卡通渲染相关资料/卡通渲染开发总览.md +++ b/03-UnrealEngine/卡通渲染相关资料/卡通渲染开发总览.md @@ -188,6 +188,7 @@ rating: ⭐⭐⭐ 1. [ ] https://www.bilibili.com/video/BV1L5kdYFEXc/?spm_id_from=333.1007.tianma.4-1-11.click&vd_source=d47c0bb42f9c72fd7d74562185cee290 2. [ ] 风格化水面资产 https://item.taobao.com/item.htm?id=865360489543&pisk=gLHsX7NMiNb1gB7njFKURXly5Dwb5q9y1iZxqmBNDReTkigKDtQA6-FLJorOMSU2sqNju2VxQRoZRGDIPtWwSCmAh-yvzUJyUcman-Lyk8kOUGq4mNUAurCKv-rjPdNAXcmgnrIFkQlKjZg5RK5YDrKQpor7k-EYW9KQcuaYHPFAJ6E8JrexkSIdJuZ5MZCTHkKQju5OBoeYvMEaVtBtk-KIvyqxnDXQDCZ-fHz1qUDkpeKgJtBxdlNpTcUKrr-4i5TjbyXvy1Zg1coTRtBxKXkPllz9ZMz0QPDbfqvlIRFjTAVoQeBsl20KBSDp8B00QuV-MD-lTPDIQvFsCU1uCX3nd5DOWhqtsqDbQx71hDMb57HTOKx0CDEYdbneq6zidAkL1AT5ZPMiDjPItNTUuboEBWgJ89g0GXkgZA8dC4IyzTz7sJ5fA7XbAz-BAsf0xzPwqJ_edaNTxlTyAH_Gi5E3AmtBAsDg6kqF6HtCWc1..&spm=a21xtw.29178619.product_shelf.74.41727d6dRCDvul 24. [ ] 添加Debug View https://zhuanlan.zhihu.com/p/668782106 + 1. [ ] UE5.5 自定义/扩展缓冲可视化调试功能 https://zhuanlan.zhihu.com/p/16314329507 25. [ ] [_UE5_ Shader Print系统](https://zhuanlan.zhihu.com/p/637929634) 26. [ ] GBufferView实现。 27. [ ] Toon Debug模式,可以让美术在材质进行进行简单的光照计算。 From 2788ffc559f8095545391329f3500bfe26256240 Mon Sep 17 00:00:00 2001 From: BlueRose <378100977@qq.com> Date: Fri, 25 Jul 2025 14:03:09 +0800 Subject: [PATCH 3/5] vault backup: 2025-07-25 14:03:09 --- 03-UnrealEngine/Rendering/Debug/RenderDoc使用技巧.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/03-UnrealEngine/Rendering/Debug/RenderDoc使用技巧.md b/03-UnrealEngine/Rendering/Debug/RenderDoc使用技巧.md index 488a911..8d7e574 100644 --- a/03-UnrealEngine/Rendering/Debug/RenderDoc使用技巧.md +++ b/03-UnrealEngine/Rendering/Debug/RenderDoc使用技巧.md @@ -27,6 +27,11 @@ pix的单步调试需要开启**开发者模式**,具体是在window的设置 ## 抓帧技巧 - [RenderDoc抓帧steam平台](https://zhuanlan.zhihu.com/p/721764908) +- 关闭并行绘制相关命令: + - **r.RHICmdBypass=1** + - **r.MeshDrawCommands.ParallelPassSetup=0** + - **r.MeshDrawCommands.UseCachedCommands=1** + - **r.RDG.ImmediateMode=1** # UE相关设置 开启Renderdoc的PixelDebug功能: From cf108dc66b3318929c5e739c2fd491514530ae66 Mon Sep 17 00:00:00 2001 From: BlueRose <378100977@qq.com> Date: Fri, 25 Jul 2025 16:10:02 +0800 Subject: [PATCH 4/5] vault backup: 2025-07-25 16:10:02 --- 03-UnrealEngine/Gameplay/GAS/其他社区文章.md | 8 +++++ ...UE5 Lyra学习笔记(7)—CommonLoadingScreen.md | 35 +++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 03-UnrealEngine/Gameplay/GAS/其他社区文章.md create mode 100644 03-UnrealEngine/Gameplay/Lyra/UE5 Lyra学习笔记(7)—CommonLoadingScreen.md diff --git a/03-UnrealEngine/Gameplay/GAS/其他社区文章.md b/03-UnrealEngine/Gameplay/GAS/其他社区文章.md new file mode 100644 index 0000000..1adccb8 --- /dev/null +++ b/03-UnrealEngine/Gameplay/GAS/其他社区文章.md @@ -0,0 +1,8 @@ +--- +title: Untitled +date: 2025-07-25 15:39:41 +excerpt: +tags: +rating: ⭐ +--- +- UE4/UE5 GAS共享冷却插件(SharedCoolingAbility) https://zhuanlan.zhihu.com/p/32216887423 \ No newline at end of file diff --git a/03-UnrealEngine/Gameplay/Lyra/UE5 Lyra学习笔记(7)—CommonLoadingScreen.md b/03-UnrealEngine/Gameplay/Lyra/UE5 Lyra学习笔记(7)—CommonLoadingScreen.md new file mode 100644 index 0000000..141da15 --- /dev/null +++ b/03-UnrealEngine/Gameplay/Lyra/UE5 Lyra学习笔记(7)—CommonLoadingScreen.md @@ -0,0 +1,35 @@ +--- +title: Untitled +date: 2025-07-25 14:49:41 +excerpt: +tags: +rating: ⭐ +--- +# 相关CVar参数 +- CommonLoadingScreen.AlwaysShow:总是显示 +- CommonLoadingScreen.LogLoadingScreenReasonEveryFrame +- CommonLoadingScreen.HoldLoadingScreenAdditionalSecs:载入完成后的等待时间。 + +# 相关逻辑 +- ***ULoadingScreenManager***:核心逻辑。 +- UCommonLoadingScreenSettings:各种设置参数。 +- ULoadingProcessTask:继承ILoadingProcessInterface接口,只需覆盖ShouldShowLoadingScreen()。 +- FCommonStartupLoadingScreenModule:StartupModule()、FPreLoadScreenManager::OnPreLoadScreenManagerCleanUp()绑定OnPreLoadScreenManagerCleanUp()。 +- SCommonPreLoadingScreenWidget:LoadingScreen Slate控件。 + +## ULoadingScreenManager(UGameInstanceSubsystem) +- Initialize():绑定PreLoadMapWithContext与PostLoadMapWithWorld委托。 +- Deinitialize():移除BlockInput、移除Widget、移除委托、关闭Tickable。 +- ShouldCreateSubsystem():覆盖接口函数,对于非Server端都会加载LoadingScreen。 +- FTickableGameObject + - Tick():调用**ShouldCreateSubsystem()**,计算TimeUntilNextLogHeartbeatSeconds。 + - GetTickableTickType() + - IsTickable():如果GameInstance有效且拥有游戏窗口就可以进行Tick。 + - GetStatId():STATGROUP_Tickables + - GetTickableGameObjectWorld():GetGameInstance()->GetWorld(); +- RegisterLoadingProcessor():用于坐车任务,在ULoadingProcessTask::CreateLoadingScreenProcessTask()被调用。 +- UnregisterLoadingProcessor():用于卸载任务,在ULoadingProcessTask::Unregister()被调用。 +- **HandlePreLoadMap()**:修改bCurrentlyInLoadMap为true,之后调用UpdateLoadingScreen()。 +- **HandlePostLoadMap()**:修改bCurrentlyInLoadMap为false。 + +### FPreLoadScreenManager \ No newline at end of file From 9ab79648d83983752b24849e62b9ec82a03d386f Mon Sep 17 00:00:00 2001 From: BlueRose <378100977@qq.com> Date: Fri, 25 Jul 2025 17:08:18 +0800 Subject: [PATCH 5/5] vault backup: 2025-07-25 17:08:18 --- .../Rendering/RenderingPipeline/PSO Precache机制笔记.md | 1 + 1 file changed, 1 insertion(+) diff --git a/03-UnrealEngine/Rendering/RenderingPipeline/PSO Precache机制笔记.md b/03-UnrealEngine/Rendering/RenderingPipeline/PSO Precache机制笔记.md index a195510..5304914 100644 --- a/03-UnrealEngine/Rendering/RenderingPipeline/PSO Precache机制笔记.md +++ b/03-UnrealEngine/Rendering/RenderingPipeline/PSO Precache机制笔记.md @@ -9,6 +9,7 @@ rating: ⭐ - [UE5.3] PSO Cache&PreCache 源码阅读:https://zhuanlan.zhihu.com/p/679832250 - [UE5.3] PSO Cache&PreCache 源码阅读(二):https://zhuanlan.zhihu.com/p/681803986 - Unreal Engine 5.2 MeshPass拓展:https://zhuanlan.zhihu.com/p/671423486 +- 优化UE5的PSO卡顿:FileCache,PreCache和异步PSO https://zhuanlan.zhihu.com/p/1898646962561094034 # 执行链 - FGraphEventArray UPrimitiveComponent::PrecachePSOs() - void UMaterialInterface::InitDefaultMaterials()