Merge remote-tracking branch 'origin/master'

This commit is contained in:
2025-07-25 20:17:12 +08:00
6 changed files with 56 additions and 3 deletions

View File

@@ -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

View File

@@ -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()。
- FCommonStartupLoadingScreenModuleStartupModule()、FPreLoadScreenManager::OnPreLoadScreenManagerCleanUp()绑定OnPreLoadScreenManagerCleanUp()。
- SCommonPreLoadingScreenWidgetLoadingScreen 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

View File

@@ -27,6 +27,11 @@ pix的单步调试需要开启**开发者模式**具体是在window的设置
## 抓帧技巧 ## 抓帧技巧
- [RenderDoc抓帧steam平台](https://zhuanlan.zhihu.com/p/721764908) - [RenderDoc抓帧steam平台](https://zhuanlan.zhihu.com/p/721764908)
- 关闭并行绘制相关命令:
- **r.RHICmdBypass=1**
- **r.MeshDrawCommands.ParallelPassSetup=0**
- **r.MeshDrawCommands.UseCachedCommands=1**
- **r.RDG.ImmediateMode=1**
# UE相关设置 # UE相关设置
开启Renderdoc的PixelDebug功能 开启Renderdoc的PixelDebug功能

View File

@@ -1534,6 +1534,7 @@ void AShaderWorldActor::CollisionCPU()
BPRecomputeScope = BPCollisionRebuildRequest, ColRingCount = CollisionGridMaxRingNumber, LocalActorLocation, LocalOriginLocation, BPRecomputeScope = BPCollisionRebuildRequest, ColRingCount = CollisionGridMaxRingNumber, LocalActorLocation, LocalOriginLocation,
Height0 = HeightOnStart, Bounded = WorldHasBounds_OnRebuild, GBounds = WorldBoundsOnRebuild, Lock = CollisionMeshAccessLock] Height0 = HeightOnStart, Bounded = WorldHasBounds_OnRebuild, GBounds = WorldBoundsOnRebuild, Lock = CollisionMeshAccessLock]
{ {
//CollisionShareable无效则返回
if (!CollData.IsValid()) if (!CollData.IsValid())
{ {
if (Completion.IsValid()) if (Completion.IsValid())
@@ -1542,9 +1543,8 @@ void AShaderWorldActor::CollisionCPU()
} }
FScopeLock CollisionMeshArrayAccess(Lock.Get()); FScopeLock CollisionMeshArrayAccess(Lock.Get());
//Brush相关
double CollisionWidth = CollData->CollisionResolution * (CollData->VerticePerPatch - 1); double CollisionWidth = CollData->CollisionResolution * (CollData->VerticePerPatch - 1);
TMap<FIntVector, FVector> BrushRedraws; TMap<FIntVector, FVector> BrushRedraws;
for (const FBox2d& B : BrushScope) for (const FBox2d& B : BrushScope)
{ {
@@ -1571,7 +1571,6 @@ void AShaderWorldActor::CollisionCPU()
SWorldBounds.Max *= 100.0; SWorldBounds.Max *= 100.0;
TSet<FIntVector> ExternalCollisionsBounds; TSet<FIntVector> ExternalCollisionsBounds;
for (const ShaderWorld::FVisitor& SingleCamLoc : VisitorLocations) for (const ShaderWorld::FVisitor& SingleCamLoc : VisitorLocations)
{ {
if (SingleCamLoc.Bounds.IsValid) if (SingleCamLoc.Bounds.IsValid)
@@ -1583,6 +1582,7 @@ void AShaderWorldActor::CollisionCPU()
CollData->MultipleCamera.Empty(); CollData->MultipleCamera.Empty();
CollData->LocRefs.Empty(); CollData->LocRefs.Empty();
//遍历所有Visitor之后往CollisionShareable中的LocRefs、MultipleCamera添加计算结果。
for (const ShaderWorld::FVisitor& SingleCamLoc : VisitorLocations) for (const ShaderWorld::FVisitor& SingleCamLoc : VisitorLocations)
{ {
if (SingleCamLoc.Bounds.IsValid) if (SingleCamLoc.Bounds.IsValid)
@@ -1689,6 +1689,7 @@ void AShaderWorldActor::CollisionCPU()
WorldBounds.Min *= 100.0; WorldBounds.Min *= 100.0;
WorldBounds.Max *= 100.0; WorldBounds.Max *= 100.0;
//根据ShaderWorld边界来维护UsedCollisionMesh、CollisionMeshData、CollisionMeshToCreate、CollisionMeshToRenameMoveUpdate、GroundCollisionLayout
for (auto& ExternalBounds : ExternalCollisionsBounds) for (auto& ExternalBounds : ExternalCollisionsBounds)
{ {
FIntVector LocMeshInt = ExternalBounds; FIntVector LocMeshInt = ExternalBounds;
@@ -1735,6 +1736,7 @@ void AShaderWorldActor::CollisionCPU()
} }
} }
//根据ShaderWorld MultipleCamera来维护UsedCollisionMesh、CollisionMeshData、CollisionMeshToCreate、CollisionMeshToRenameMoveUpdate、GroundCollisionLayout
for (auto& Elem : CollData->MultipleCamera) for (auto& Elem : CollData->MultipleCamera)
{ {
FIntVector& SingleCam = Elem.Key; FIntVector& SingleCam = Elem.Key;
@@ -1796,6 +1798,7 @@ void AShaderWorldActor::CollisionCPU()
} }
} }
//开始下一轮循环bPreprocessingCollisionUpdate 设置为false
if (Completion.IsValid()) if (Completion.IsValid())
(*Completion.Get()) = false; (*Completion.Get()) = false;
} }

View File

@@ -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/679832250
- [UE5.3] PSO Cache&PreCache 源码阅读(二):https://zhuanlan.zhihu.com/p/681803986 - [UE5.3] PSO Cache&PreCache 源码阅读(二):https://zhuanlan.zhihu.com/p/681803986
- Unreal Engine 5.2 MeshPass拓展:https://zhuanlan.zhihu.com/p/671423486 - Unreal Engine 5.2 MeshPass拓展:https://zhuanlan.zhihu.com/p/671423486
- 优化UE5的PSO卡顿FileCachePreCache和异步PSO https://zhuanlan.zhihu.com/p/1898646962561094034
# 执行链 # 执行链
- FGraphEventArray UPrimitiveComponent::PrecachePSOs() - FGraphEventArray UPrimitiveComponent::PrecachePSOs()
- void UMaterialInterface::InitDefaultMaterials() - void UMaterialInterface::InitDefaultMaterials()

View File

@@ -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 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 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 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) 25. [ ] [_UE5_ Shader Print系统](https://zhuanlan.zhihu.com/p/637929634)
26. [ ] GBufferView实现。 26. [ ] GBufferView实现。
27. [ ] Toon Debug模式可以让美术在材质进行进行简单的光照计算。 27. [ ] Toon Debug模式可以让美术在材质进行进行简单的光照计算。