2025-06-03 10:19:29 +08:00
|
|
|
|
---
|
|
|
|
|
title: Untitled
|
|
|
|
|
date: 2025-06-03 10:19:25
|
|
|
|
|
excerpt:
|
|
|
|
|
tags:
|
|
|
|
|
rating: ⭐
|
|
|
|
|
---
|
2025-06-03 10:50:23 +08:00
|
|
|
|
# 前言
|
|
|
|
|
1. ShaderWorldPCGInterop:
|
|
|
|
|
2. ShaderWorld:
|
2025-06-03 18:24:36 +08:00
|
|
|
|
3. ShaderWorldCore:
|
|
|
|
|
|
|
|
|
|
# ShaderWorld
|
|
|
|
|
- Class
|
|
|
|
|
- Actor
|
|
|
|
|
- ShaderWorldActor.h:[[#AShaderWorldActor]]
|
|
|
|
|
- SWorld.h:[[#ASWorld]]
|
|
|
|
|
|
|
|
|
|
## ASWorld
|
|
|
|
|
## AShaderWorldActor
|
|
|
|
|
|
2025-06-09 15:53:12 +08:00
|
|
|
|
|
2025-06-09 16:42:14 +08:00
|
|
|
|
|
|
|
|
|
## DrawMaterialToRenderTarget
|
|
|
|
|
USWorldSubsystem::DrawMaterialToRenderTarget
|
|
|
|
|
=>
|
|
|
|
|
SWShaderToolBox::DrawMaterial
|
|
|
|
|
=>
|
|
|
|
|
DrawMaterial_CS_RT
|
|
|
|
|
|
|
|
|
|
调用路径:
|
|
|
|
|
- AShaderWorldActor::RetrieveHeightAt(好像没有引用):检索高度
|
|
|
|
|
- AShaderWorldActor::ComputeHeight_Segmented_MapForClipMap
|
|
|
|
|
- AShaderWorldActor::ProcessSegmentedComputation() <- AShaderWorldActor::TerrainAndSpawnablesManagement() <- AShaderWorldActor::Tick()
|
|
|
|
|
- AShaderWorldActor::ComputeHeightMapForClipMap
|
|
|
|
|
- AShaderWorldActor::UpdateClipMap() <- AShaderWorldActor::TerrainAndSpawnablesManagement() <- AShaderWorldActor::Tick()
|
|
|
|
|
- AShaderWorldActor::ComputeDataLayersForClipMap
|
|
|
|
|
- AShaderWorldActor::UpdateClipMap() <- AShaderWorldActor::TerrainAndSpawnablesManagement() <- AShaderWorldActor::Tick()
|
|
|
|
|
- AShaderWorldActor::UpdateCollisionMeshData:更新碰撞模型数据。
|
|
|
|
|
- AShaderWorldActor::CollisionGPU() <- AShaderWorldActor::CollisionManagement() <- AShaderWorldActor::Tick()
|
|
|
|
|
- FSpawnableMesh::UpdateSpawnableData
|
2025-06-09 17:32:09 +08:00
|
|
|
|
- AShaderWorldActor::ProcessSegmentedComputation() <- AShaderWorldActor::TerrainAndSpawnablesManagement() <- AShaderWorldActor::Tick()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Cache机制
|
|
|
|
|
AShaderWorldActor::ProcessSegmentedComputation() <- AShaderWorldActor::TerrainAndSpawnablesManagement() <- AShaderWorldActor::Tick()
|
2025-06-10 14:59:07 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 其他Bug
|
|
|
|
|
CacheMatDyn?
|
|
|
|
|
MatDyn?
|
|
|
|
|
|
|
|
|
|
## SetTextureParameterValue相关逻辑排查
|
|
|
|
|
- AShaderWorldActor中的SetTextureParameterValue
|
|
|
|
|
- ~~ExportCacheInBounds~~
|
|
|
|
|
- ~~AssignHeightMapToDynamicMaterial~~
|
|
|
|
|
- UpdateStaticDataFor
|
|
|
|
|
- ComputeHeight_Segmented_MapForClipMap:似乎会设置
|
|
|
|
|
- UpdateCollisionMeshData
|
|
|
|
|
- InitializeReadBackDependencies
|
|
|
|
|
- InitiateMaterials
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### ComputeHeight_Segmented_MapForClipMap
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### InitiateMaterials
|
|
|
|
|
初始化`TArray<FClipMapMeshElement> Meshes;`的Material、`Producers`
|
|
|
|
|
BeginPlay() -> InitiateWorld() -> InitiateMaterials()
|