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] 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; }