first commit
This commit is contained in:
278
unreal/Content/Blueprints/BP_Supercomputer_Spec.md
Normal file
278
unreal/Content/Blueprints/BP_Supercomputer_Spec.md
Normal file
@@ -0,0 +1,278 @@
|
||||
# BP_Supercomputer TOP500 超算蓝图详细规格
|
||||
|
||||
## 蓝图信息
|
||||
|
||||
| 属性 | 值 |
|
||||
|------|-----|
|
||||
| 蓝图类型 | Actor (BP_DataPoint 子类) |
|
||||
| 父类 | `BP_DataPoint` |
|
||||
| 路径 | `Content/Blueprints/BP_Supercomputer.uasset` |
|
||||
|
||||
## 组件列表
|
||||
|
||||
```
|
||||
BP_Supercomputer (继承自 BP_DataPoint)
|
||||
├── [继承] SceneRoot
|
||||
│ ├── [继承] StaticMesh (球体)
|
||||
│ │ └── Material: M_Supercomputer (红色自发光)
|
||||
│ ├── [继承] NiagaraComponent (光环粒子)
|
||||
│ │ └── NS_Supercomputer_Glow (红色光环)
|
||||
│ ├── [继承] WidgetComponent (标签)
|
||||
│ │ └── User Widget: W_SupercomputerLabel
|
||||
│ ├── [新增] RingMesh (圆环网格)
|
||||
│ │ └── Material: M_Ring_Pulse (脉冲圆环)
|
||||
│ └── [新增] PerformanceText3D (3D 性能文字)
|
||||
│ └── Font: Default
|
||||
```
|
||||
|
||||
## 变量列表 (新增)
|
||||
|
||||
| 变量名 | 类型 | 默认值 | 说明 |
|
||||
|--------|------|--------|------|
|
||||
| `Rmax` | Float | `1682.65` | Rmax 值 (TFLOPS) |
|
||||
| `Rpeak` | Float | `2000.0` | Rpeak 值 (TFLOPS) |
|
||||
| `CoreCount` | Integer | `0` | CPU 核心数 |
|
||||
| `NodeCount` | Integer | `0` | 节点数 |
|
||||
| `Interconnect` | String | `"InfiniBand"` | 互联网络 |
|
||||
| `OperatingSystem` | String | `"Linux"` | 操作系统 |
|
||||
| `Vendor` | String | `"HPE"` | 厂商 |
|
||||
| `Model` | String | `"Expresso"` | 型号 |
|
||||
|
||||
## 函数覆盖 (Override)
|
||||
|
||||
### UpdateLabel (Override)
|
||||
|
||||
```
|
||||
1. [父调用] BP_DataPoint.UpdateLabel()
|
||||
|
||||
2. [获取] W_SupercomputerLabel Widget
|
||||
3. [设置] NameText = Name
|
||||
4. [设置] CountryText = Country
|
||||
5. [设置] PerformanceText = FormatPerformance(Rmax)
|
||||
6. [设置] CoreText = FormatNumber(CoreCount)
|
||||
7. [设置] VendorText = Vendor
|
||||
```
|
||||
|
||||
### UpdateMaterial (Override)
|
||||
|
||||
```
|
||||
1. [获取] StaticMesh.Material
|
||||
2. [设置] BaseColor = (1.0, 0.1, 0.1, 1) 红色
|
||||
3. [设置] EmissiveStrength = 3.0 + (Rmax / 100)
|
||||
4. [计算] PulseSpeed = 0.5 + (Rmax / 1000)
|
||||
5. [设置] PulseSpeed_Material = PulseSpeed
|
||||
```
|
||||
|
||||
### UpdateSize (Override)
|
||||
|
||||
```
|
||||
1. [计算] ScaleFactor = 0.5 + (Rmax / 500)
|
||||
├─ < 100 TFLOPS: 0.5x
|
||||
├─ 100-500 TFLOPS: 1.0x
|
||||
├─ 500-1000 TFLOPS: 1.5x
|
||||
└─ > 1000 TFLOPS: 2.0x
|
||||
|
||||
2. [设置] StaticMesh.SetWorldScale3D(ScaleFactor)
|
||||
```
|
||||
|
||||
## 材质规格
|
||||
|
||||
### M_Supercomputer
|
||||
|
||||
| 参数 | 类型 | 默认值 | 说明 |
|
||||
|------|------|--------|------|
|
||||
| `BaseColor` | Vector3 | (1.0, 0.1, 0.1) | 红色 |
|
||||
| `EmissiveColor` | Vector3 | (1.0, 0.0, 0.0) | 自发光颜色 |
|
||||
| `EmissiveStrength` | Float | `5.0` | 自发光强度 |
|
||||
| `PulseSpeed` | Float | `1.0` | 脉冲速度 |
|
||||
| `PulseIntensity` | Float | `0.3` | 脉冲强度 |
|
||||
| `FresnelPower` | Float | `2.5` | 菲涅尔效果 |
|
||||
|
||||
### M_Ring_Pulse
|
||||
|
||||
| 参数 | 类型 | 默认值 | 说明 |
|
||||
|------|------|--------|------|
|
||||
| `RingColor` | Vector4 | (1.0, 0.2, 0.2, 1.0) | 圆环颜色 |
|
||||
| `RingWidth` | Float | `0.02` | 圆环宽度 |
|
||||
| `PulseSpeed` | Float | `1.0` | 脉冲速度 |
|
||||
| `GlowIntensity` | Float | `10.0` | 发光强度 |
|
||||
|
||||
## 粒子效果 (Niagara)
|
||||
|
||||
### NS_Supercomputer_Glow
|
||||
|
||||
```
|
||||
发射器设置:
|
||||
├─ 发射器类型: 粒子系统
|
||||
├─ 发射模式: 循环
|
||||
├─ 发射速率: 20 粒子/秒
|
||||
├─ 粒子寿命: 2.0 秒
|
||||
└─ 粒子大小: 50 → 200 cm
|
||||
|
||||
颜色渐变:
|
||||
├─ 0%: (1.0, 0.1, 0.1, 0.8) 红色
|
||||
├─ 50%: (1.0, 0.1, 0.1, 0.4)
|
||||
└─ 100%: (1.0, 0.1, 0.1, 0.0)
|
||||
|
||||
渲染:
|
||||
├─ 材质: M_Particle_Glow_Additive
|
||||
└─ 混合模式: Additive
|
||||
```
|
||||
|
||||
## UI 标签 (W_SupercomputerLabel)
|
||||
|
||||
### 组件结构
|
||||
|
||||
```
|
||||
W_SupercomputerLabel
|
||||
├── CanvasPanel
|
||||
│ ├── Background (黑色半透明背景)
|
||||
│ │ └── Size: 300x150
|
||||
│ │ └── Opacity: 0.8
|
||||
│ ├── NameText (名称)
|
||||
│ │ └── Text: "Frontier"
|
||||
│ │ └── Color: 白色
|
||||
│ │ └── Font Size: 18
|
||||
│ ├── CountryText (国家)
|
||||
│ │ └── Text: "🇺🇸 United States"
|
||||
│ │ └── Color: 浅灰色
|
||||
│ │ └── Font Size: 14
|
||||
│ ├── PerformancePanel (性能面板)
|
||||
│ │ ├── RmaxLabel
|
||||
│ │ │ └── Text: "Rmax"
|
||||
│ │ │ └── Color: 浅灰色
|
||||
│ │ ├── RmaxValue
|
||||
│ │ │ └── Text: "1,682.65 TFLOPS"
|
||||
│ │ │ └── Color: 亮红色
|
||||
│ │ │ └── Font Size: 24
|
||||
│ │ │ └── Font Weight: Bold
|
||||
│ │ ├── RpeakLabel
|
||||
│ │ │ └── Text: "Rpeak"
|
||||
│ │ ├── RpeakValue
|
||||
│ │ │ └── Text: "2,000.00 TFLOPS"
|
||||
│ │ │ └── Color: 灰色
|
||||
│ │ └── Font Size: 12
|
||||
│ ├── SpecsPanel (规格面板)
|
||||
│ │ ├── CoresText
|
||||
│ │ │ └── Text: "8,730,112 Cores"
|
||||
│ │ ├── NodesText
|
||||
│ │ │ └── Text: "76,032 Nodes"
|
||||
│ │ ├── InterconnectText
|
||||
│ │ │ └── Text: "InfiniBand HDR"
|
||||
│ │ └── VendorText
|
||||
│ │ └── Text: "HPE"
|
||||
│ └── LineSeparator (分隔线)
|
||||
│ └── Color: 红色
|
||||
```
|
||||
|
||||
## 数据格式
|
||||
|
||||
### 输入数据结构
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "top500_1",
|
||||
"name": "Frontier",
|
||||
"source": "top500",
|
||||
"data_type": "supercomputer",
|
||||
"location": {
|
||||
"latitude": 33.7756,
|
||||
"longitude": -84.3962,
|
||||
"altitude": 0
|
||||
},
|
||||
"country": "US",
|
||||
"city": "Atlanta",
|
||||
"metadata": {
|
||||
"rmax": 1682.65,
|
||||
"rpeak": 2000.00,
|
||||
"cores": 8730112,
|
||||
"nodes": 76032,
|
||||
"interconnect": "InfiniBand HDR",
|
||||
"operating_system": "Linux",
|
||||
"vendor": "HPE",
|
||||
"model": "ExaScale"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 性能格式化函数
|
||||
|
||||
### FormatPerformance (Float TFLOPS) → String
|
||||
|
||||
```
|
||||
如果 TFLOPS >= 1000000:
|
||||
返回 = FString::Printf(TEXT("%.2f EFLOPS"), TFLOPS / 1000000)
|
||||
否则如果 TFLOPS >= 1000:
|
||||
返回 = FString::Printf(TEXT("%.2f PFLOPS"), TFLOPS / 1000)
|
||||
否则:
|
||||
返回 = FString::Printf(TEXT("%.2f TFLOPS"), TFLOPS)
|
||||
```
|
||||
|
||||
### FormatNumber (Integer) → String
|
||||
|
||||
```
|
||||
如果 Number >= 1000000:
|
||||
返回 = FString::Printf(TEXT("%dM"), Number / 1000000)
|
||||
否则如果 Number >= 1000:
|
||||
返回 = FString::Printf(TEXT("%dK"), Number / 1000)
|
||||
否则:
|
||||
返回 = FString::Printf(TEXT("%d"), Number)
|
||||
```
|
||||
|
||||
## TOP500 前 10 名 (测试数据)
|
||||
|
||||
| 排名 | 名称 | 位置 | Rmax (PFLOPS) | 国家 |
|
||||
|------|------|------|---------------|------|
|
||||
| 1 | Frontier | 美国 | 1,682.65 | 🇺🇸 |
|
||||
| 2 | Aurora | 美国 | 1,206.00 | 🇺🇸 |
|
||||
| 3 | Eagle | 美国 | 561.00 | 🇺🇸 |
|
||||
| 4 | MareNostrum5 | 西班牙 | 175.00 | 🇪🇸 |
|
||||
| 5 | LUMI | 芬兰 | 151.90 | 🇫🇮 |
|
||||
| 6 | Leonardo | 意大利 | 148.70 | 🇮🇹 |
|
||||
| 7 | Summit | 美国 | 148.60 | 🇺🇸 |
|
||||
| 8 | Sierra | 美国 | 119.40 | 🇺🇸 |
|
||||
| 9 | Sunway TaihuLight | 中国 | 93.01 | 🇨🇳 |
|
||||
| 10 | Tianhe-2A | 中国 | 61.44 | 🇨🇳 |
|
||||
|
||||
## 交互效果
|
||||
|
||||
### 悬停效果 (OnHover)
|
||||
|
||||
```
|
||||
1. [播放] Niagara Burst (红色粒子)
|
||||
└─ 粒子数量: 30
|
||||
2. [播放] Sound "Hover_Enter"
|
||||
3. [设置] RingMesh.Visible = true
|
||||
4. [播放] Timeline "RingExpand"
|
||||
└─ 持续时间: 0.3秒
|
||||
5. [设置] WidgetPanel.Opacity = 1.0
|
||||
```
|
||||
|
||||
### 点击效果 (OnClick)
|
||||
|
||||
```
|
||||
1. [播放] Sound "Select"
|
||||
2. [播放] Timeline "Pulse"
|
||||
└─ 持续时间: 0.5秒
|
||||
└─ 缩放变化: 1.0x → 1.3x → 1.0x
|
||||
3. [调用] FocusCamera()
|
||||
```
|
||||
|
||||
### 聚焦相机 (FocusCamera)
|
||||
|
||||
```
|
||||
1. [获取] Self.Location → PointLoc
|
||||
2. [获取] BP_GlobeController.Camera
|
||||
3. [计算] CameraOffset = (0, 0, 500000)
|
||||
4. [调用] Camera.SetViewTargetWithBlend(PointLoc + CameraOffset)
|
||||
5. [播放] Camera Shake "Focus"
|
||||
```
|
||||
|
||||
## 颜色方案
|
||||
|
||||
| 性能级别 | 颜色 | RGB | 圆环颜色 |
|
||||
|----------|------|-----|----------|
|
||||
| > 1 EFLOPS | 暗红色 | (0.8, 0, 0) | 脉冲红 |
|
||||
| 500T - 1E | 红色 | (1.0, 0.1, 0.1) | 脉冲橙 |
|
||||
| 100T - 500T | 橙色 | (1.0, 0.4, 0.1) | 脉冲黄 |
|
||||
| < 100T | 黄色 | (1.0, 0.7, 0.1) | 脉冲白 |
|
||||
Reference in New Issue
Block a user