From 27aefe0a64a75a24fc98760747fa0e646781daec Mon Sep 17 00:00:00 2001 From: BlueRose <378100977@qq.com> Date: Sun, 19 Apr 2026 20:50:55 +0800 Subject: [PATCH] vault backup: 2026-04-19 20:50:55 --- .../AI/AI Agent/NeoX/H78 暴力优化修复统计.md | 0 07-Other/AI/AI Agent/NeoX/H78 暴力优化结论.md | 187 +++ .../NeoX/H78优化记录Raw/GIt&SVN简报.md | 1313 +++++++++++++++++ 3 files changed, 1500 insertions(+) delete mode 100644 07-Other/AI/AI Agent/NeoX/H78 暴力优化修复统计.md create mode 100644 07-Other/AI/AI Agent/NeoX/H78 暴力优化结论.md create mode 100644 07-Other/AI/AI Agent/NeoX/H78优化记录Raw/GIt&SVN简报.md diff --git a/07-Other/AI/AI Agent/NeoX/H78 暴力优化修复统计.md b/07-Other/AI/AI Agent/NeoX/H78 暴力优化修复统计.md deleted file mode 100644 index e69de29..0000000 diff --git a/07-Other/AI/AI Agent/NeoX/H78 暴力优化结论.md b/07-Other/AI/AI Agent/NeoX/H78 暴力优化结论.md new file mode 100644 index 0000000..974e09f --- /dev/null +++ b/07-Other/AI/AI Agent/NeoX/H78 暴力优化结论.md @@ -0,0 +1,187 @@ +# 前言 + + + +## 相关变化 +### 2.1 场景渲染设置(张子涵,写入 .scn/.postprocess 文件) + +49 个场景被统一修改了渲染参数,这些参数**写死在场景文件中**,不随画质档位变化。 + +| 渲染功能 | 变更内容 | 影响面 | 变化幅度 | +|---|---|---|---| +| **泛光 (Bloom)** | Quality: High → **Low** | 全部 49 场景 | 品质降一档 | +| **抗锯齿 (TAA)** | Quality: High → **Low**,关闭 Bicubic 采样 | 全部 49 场景 | 品质降一档 + 采样退化 | +| **环境遮蔽 (SSAO)** | 关闭滤波、关闭全分辨率 | 全部 49 场景 | 边缘噪点增加 | +| **景深 (DOF)** | 模式 Bokeh → Gaussian,多个场景直接关闭 | 7-11 场景 | 虚化效果消失或退化 | +| **镜头光晕** | 直接关闭 | 22 场景 | 完全失去镜头感 | +| **自动曝光** | 关闭 | 主农场等场景 | 亮暗切换不再自适应 | +| **半透明阴影** | 关闭 | 主农场等场景 | 树叶/玻璃不投影 | + +### 2.2 全局阴影(张子涵,写入 GlobalRenderComponentsConfig.xml) + +| 参数 | 旧值 | 新值 | 变化幅度 | +|---|---|---|---| +| CSM 贴图分辨率 | 2048 | **1024** | 减半(像素量降 75%) | +| CSM 级联层数 | 4 级 | **1 级** | 从 4 级联减为单级联 | +| 软阴影等级 | Max | **High** | 降一档 | +| 场景 CastShadow | True | **False** | 大部分场景静态物体**不再投射阴影** | + +### 2.3 LOD 策略(张子涵,修改 .lod2 文件) + +33 个 LOD 配置文件(覆盖 44 个场景模型)的切换阈值被大幅提升: + +| 指标 | 变化 | +|---|---| +| LOD 切换阈值 | 普遍提升 **6-7 倍** | +| 最远级别行为 | 从"显示最低精度网格"改为**完全剔除(不渲染)** | +| 影响模型类别 | 树木、灌木、杂草、石头、建筑、装饰物 | +| 影响最大场景 | NongChang_003(主农场,12+ 模型)、neighbor01/H(邻居,13 模型) | + +### 2.4 顶点压缩(张子涵,修改 .mesh + neox.xml) + +- **6,935 个骨骼网格文件**全量开启顶点压缩 +- neox.xml 全局启用 `CompressedVertexDataEnable` + `EnableVAT` + +### 2.5 贴图压缩(程侃,修改贴图源文件) + +| 指标 | 数值 | +|---|---| +| 涉及贴图数 | **1,888 个** | +| 总大小变化 | 4,852 MB → **433 MB**(减少 **91.1%**) | +| 分辨率降低的文件 | **1,876 / 1,888**(99.4%) | +| 缩小 2 倍 | 649 个(34.6%) | +| 缩小 4 倍 | 428 个(22.8%) | +| **缩小 16 倍以上** | **528 个(28.1%)** | +| 被压到 32×32(≈纯色) | 387 个(20.5%) | +| 法线/ORM 贴图清零 | 数十个 NPC 和场景贴图从 12 MB → 3 KB | + +注:此提交标注为"**测试**贴图压缩"。 + +### 2.6 脚本层画质分档(程侃,修改 SceneRenderHelper.py 等) + +新建高/中/低三档画质系统: + +| 功能 | HIGH | MEDIUM | LOW | +|---|---|---|---| +| 渲染管线 | Forward | Deferred | Deferred | +| 渲染分辨率 | 100% | 70%(像素量 49%) | **50%(像素量 25%)** | +| SSR | 场景默认 | 强制关 | 强制关 | +| SSAO | 场景默认 | 强制开 | **强制关** | +| Bloom/DOF/TAA | 场景默认 | 场景默认 | **全部强制关** | +| LOD 偏移 | 0 | 0 | **+1(降一级)** | +| 阴影 | 开 | 开 | **关** | + +### 2.7 材质合批(程侃,SVN r3306) + +- fork 了约 **7,200 个模型引用**的 GIM 文件,消除 CustomMaterialFiles 造成的合批阻断 +- 覆盖 38 个场景,目标是减少 DrawCall + +--- + +## 三、两人优化叠加后的综合结果 + +两层优化不是"取其一"的关系,而是**逐层累加**。最终移动端画面是场景文件中的降级设置 + 脚本层的动态控制**同时作用**的结果。 + +### 3.1 叠加链路 + +``` +原始画质(PC 编辑器,美术调校基准) + │ + ├─ 第 1 层:张子涵 场景文件降级(写死) + │ Bloom High→Low, TAA High→Low, SSAO 滤波关, DOF 关, 镜头光晕关 + │ CSM 2048→1024, 4级→1级, 大部分场景 CastShadow=False + │ LOD 阈值提升 6-7x, 最远级剔除 + │ 6935 mesh 顶点压缩 + │ + ├─ 第 2 层:程侃 贴图源文件压缩 + │ 1888 贴图分辨率降低, 91% 空间节省 + │ 28% 贴图缩小 16 倍以上, NPC 法线图清零 + │ + ├─ 第 3 层:程侃 脚本层动态降级 + │ MEDIUM: 分辨率 70%, SSR 关, 管线切 Deferred + │ LOW: 分辨率 50%, Bloom/DOF/TAA/SSAO/阴影全关, LOD+1 + │ + └─ 第 4 层:打包管线 ASTC 压缩 + ASTC 8×8 (2 bpp) + level=0 最低编码质量 + 无 Mipmap +``` + +### 3.2 各档位实际效果 + +| 环节 | PC 编辑器(HIGH + 原始资源) | 移动端 MEDIUM(策划体验包) | 移动端 LOW(仅 GM 可达) | +|---|---|---|---| +| **泛光** | High 品质 | Low 品质(场景写死) | **关闭** | +| **抗锯齿** | High TAA + YCoCg + Bicubic | Low TAA(场景写死) | **关闭** | +| **景深** | 开(Bokeh) | 关/Gaussian(场景写死) | **关闭** | +| **SSAO** | 有滤波、全分辨率 | 无滤波、半分辨率 + 强制开 | **关闭** | +| **阴影** | 4级联 2048 + 场景投影 | 1级联 1024 + 场景不投影 | **完全关闭** | +| **SSR** | 场景默认 | 强制关 | 强制关 | +| **渲染分辨率** | 100% | **70%**(像素量 49%) | **50%**(像素量 25%) | +| **LOD** | 正常阈值 | 阈值提升 6-7x | 阈值提升 6-7x **+ 再降一级** | +| **贴图** | 原始分辨率 | 降 2-64 倍(ASTC 8×8 再压一轮) | 同 MEDIUM | +| **顶点** | 原始 | 压缩 | 压缩 | +| **镜头光晕** | 开 | 关(场景写死) | 关 | +| **自动曝光** | 开 | 关(场景写死) | 关 | + +### 3.3 叠加效果量化 + +以移动端 MEDIUM 档(策划体验包的默认档位)为例,相比 PC 编辑器的累计劣化: + +| 维度 | 劣化程度 | 说明 | +|---|---|---| +| **有效像素量** | 降至 **~49%** | 分辨率 0.7 × 0.7 | +| **贴图精度** | 降至 **~9%** | 91% 源文件压缩 + ASTC 8×8 运行时再压 | +| **阴影面积** | 降至 **~6%** | 分辨率减半×级联从 4 降到 1×场景不投影 | +| **后处理效果** | 大幅缩水 | Bloom/TAA 从 High 降到 Low,DOF/光晕/自动曝光关闭 | +| **模型精度** | 更早切换低模 | LOD 阈值提升 6-7x,远处植被直接剔除 | + +--- + +## 四、移动端效果差的根因分析 +**核心问题不是某个 bug,而是多层降级无节制地叠加,且缺少分层控制机制。** + +### 4.1 架构缺陷:无设备适配,只有一刀切 +代码库中**不存在任何基于设备性能的自动画质选择逻辑**: + +- 无 GPU benchmarking / 设备评分 +- 无按机型分级的白名单/黑名单 +- 无运行时帧率自适应 +- `game3d.get_platform()` 在画质逻辑中被注释掉 + +策划体验包(pub_design)硬编码为 MEDIUM,不区分旗舰机和低端机。**骁龙 8 Gen 3 和骁龙 660 跑完全相同的画质配置。** + +### 4.2 场景文件降级无法按档位恢复 +张子涵的场景降级(Bloom Low、TAA Low、SSAO 滤波关、DOF 关等)是**直接写入 .scn 文件**的。程侃的脚本层画质系统中,HIGH 档对这些功能设为"场景默认"(`mActive=False`),意味着即使在 HIGH 档,美术原始的 High 品质设置也已经不存在了。 + +**场景文件被改前的美术基准已经永久丢失**(除非从 SVN 回退)。 + +### 4.3 贴图压缩过于激进且不分层 +- 28% 的贴图被缩小 16 倍以上,30% 被压到 32×32 +- NPC 角色的法线贴图从 2048×2048 缩到 32×32,表面凹凸细节**完全丢失** +- 场景核心贴图(草地、树皮、岩石)从 4096 降到 64,**近看全是糊的** +- 贴图压缩对所有画质档位一视同仁,HIGH 档也用压缩后的贴图 + +### 4.4 打包管线进一步劣化 +ASTC 8×8(2 bpp)+ 最低编码质量(level=0)+ 无 Mipmap 的打包配置,在已经降过分辨率的贴图上**再做一轮有损压缩**: + +- 8×8 块大小会在法线贴图和渐变色上产生可见块状伪影 +- level=0 意味着编码器不做质量搜索,实际质量比 8×8 理论上限更差 +- 无 Mipmap 导致远处物体贴图闪烁、GPU 缓存效率低下 + +### 4.5 为什么旗舰机也差 +旗舰手机(如 iPhone 16 Pro / 骁龙 8 Gen 3)的 GPU 性能足以支撑远高于当前配置的渲染质量,但: +1. **不识别设备能力** — 没有高/中/低端设备的分级逻辑,旗舰机和千元机跑同一套配置 +2. **策划体验包默认 MEDIUM** — 即便 GPU 完全有余力跑 HIGH + 原始分辨率贴图,脚本直接把它按在 MEDIUM +3. **场景降级不可恢复** — 即使手动切到 HIGH,场景文件中 Bloom/TAA 已经是 Low,恢复不到美术基准 +4. **贴图已在源头被压** — 无论什么画质档位,GPU 拿到的都是降过分辨率 + ASTC 8×8 双重压缩后的贴图 + +简言之:**优化措施假设了所有设备都是低端机,但实际上旗舰机有巨大的性能冗余没有被利用。** + +--- + +## 五、建议方向 +1. **建立设备分级机制**:根据 GPU 型号/benchmark 分出至少旗舰/中端/低端三个设备层级,高端设备使用完整渲染配置 +2. **分离场景美术基准与移动端降级**:场景文件保留美术原始设置,移动端降级通过脚本层覆盖实现,而非直接修改源文件 +3. **贴图分层管理**:源文件保留原始分辨率,按设备层级在打包时选择不同的缩放比例,而非一刀切压缩 +4. **打包参数优化**:对法线贴图使用更高质量的 ASTC 块大小(如 4×4 或 5×5),开启 Mipmap 生成 +5. **LOD 策略精细化**:按模型重要性分级设置 LOD 阈值,主角/NPC/建筑用保守阈值,远景散件用激进阈值 +6. **分辨率问题很大**:建议上FSR2,NeoX有这个玩意的改进方案。 diff --git a/07-Other/AI/AI Agent/NeoX/H78优化记录Raw/GIt&SVN简报.md b/07-Other/AI/AI Agent/NeoX/H78优化记录Raw/GIt&SVN简报.md new file mode 100644 index 0000000..99f151a --- /dev/null +++ b/07-Other/AI/AI Agent/NeoX/H78优化记录Raw/GIt&SVN简报.md @@ -0,0 +1,1313 @@ +--- +title: 未命名 1 +date: 2026-04-19 17:14:40 +excerpt: +tags: +rating: ⭐ +status: inprogress +destination: +share: false +obsidianUIMode: source +--- +D:\Notes\BlueRoseNote_New\07-Other\AI\AI Agent\NeoX\H78优化记录Raw\GIt&SVN简报.md +# 指定文件的最开始与最终变化 +通过SVN检查以下文件第一个Commit与最后一个Commit之间的变化,请详细列出 +1. ./neox.xml +2. ./res/scene/ 下所有Scn的渲染相关设置变化以及同名PostProcess文件的变化。 +3. ./res/GlobalRenderComponentsConfig.xml + +## 综合趋势 +1. **性能全面降档**:Bloom/TAA High→Low, 关闭 SSAO 滤波和全分辨率, DOF Bokeh→Gaussian, 关闭 Lensflare — 针对移动端的后处理降级 +2. **阴影系统统一化**:全局 CSM 2048→1024 / 4级→1级,49 个场景统一新增 CSMSceneSetting (距离40, 指数3) +3. **室内场景 VVGI 引入**:9 个室内场景新增体素全局光照 + 实时方向灯 + 面光源,从烘焙光照转向实时 GI +4. **室内场景重构**:room/LivestockRoom 等移除室外大气/云雾配置,改为纯室内照明方案 +5. **矿洞场景整改**:天空 Legacy→SkyBox(紫色调)、DOF 降级、Lensflare 关闭 +6. **顶点压缩全局化**:neox.xml 开启 CompressedVertexDataEnable + EnableVAT +7. **脚本加载重构**:从 npk 打包加载切换为离散文件加载,脚本根目录变更 +## 1. neox.xml 变化(r10 → r4001) + +| 设置项 | 旧值 (r10) | 新值 (HEAD) | 说明 | +|--------|-----------|-------------|------| +| EnableRectLighting | (不存在) | `true` | 新增:开启矩形光源支持 | +| EnableVAT | (不存在) | `True` | 新增:开启顶点动画纹理 (VAT) | +| CompressedVertexDataEnable | (不存在) | `True` | 新增:开启顶点数据压缩 | +| nxjobsystem WorkerMax | (不存在) | `1` | 新增:限制 Job System 工作线程为 1 | +| 脚本加载 root | `%WORK_DIR%\script` | `%WORK_DIR%\farm_script\client` | 脚本根目录从 script 改为 farm_script/client | +| 脚本 loader name | `npk` | `discrete` | 从 npk 打包加载改为离散文件加载 | +| Text/ 兜底 loader | 存在(opener="os", root=Text/, npk loader) | **删除** | 移除了 Text/ 加密脚本的兜底加载器 | + +--- +## 2. res/scene/ 下 Scn 渲染设置变化 + +### 批量变化(多场景统一调整) +#### BloomComponent + +| 设置路径 | 旧值 | 新值 | 涉及场景数 | 说明 | +|---|---|---|---|---| +| BloomComponent/Quality | High | **Low** | 全部 49 场景 | 泛光品质全面降级 | +| BloomComponent/EnableAntiFlickering | 0 | **1** | 全部 49 场景 | 开启抗闪烁 | + +其中 8 个场景(Room_01、beach01、farm、lunlunroom、map_01、resident01、town02、room)原先 ViewRenderComponentConfig0 为空节点,HEAD 新增了完整的 BloomComponent + SSAOComponent + TAAComponent 配置。 + +#### SSAOComponent + +| 设置路径 | 旧值 | 新值 | 涉及场景数 | +|---|---|---|---| +| SSAOComponent/UseFilter | 1 | **0** | 全部 49 场景 | +| SSAOComponent/UseFullResolution | 1 | **0** | 15 场景(矿洞系列 + mine_treasure_floor5) | +#### TAAComponent + +| 设置路径 | 旧值 | 新值 | 涉及场景数 | +|---|---|---|---| +| TAAComponent/TaaQuality | High | **Low** | 全部 49 场景 | +| TAAComponent/EnableBicubic | 1 | **0** | 全部 49 场景 | +| TAAComponent/EnableYCoCg | 1 | **(删除)** | 部分场景(NongChang_003、kuangdong_B01-B04/B06、room) | + +#### CSMSceneSetting(新增) + +| 设置路径 | 新值 | 涉及场景数 | +|---|---|---| +| CSMSceneSetting (整个节点) | CSMDebugMode=0, CustomShadowMode=0, ShadowDistance=**40**, DistributionExponent=**3** | 全部 49 场景 | + +所有场景统一新增级联阴影贴图配置,参数完全一致。 + +#### LensflareComponent + +| 设置路径 | 旧值 | 新值 | 涉及场景数 | +|---|---|---|---| +| LensflareComponent/Enable | 1 | **0** | 约 22 场景 | + +涉及:KuangDong_002/003, L_SmallTown, XLG006, kuangdong_A01-A06, A04_dark, A05_dark, kuangdong_B01-B06, NongChang_003, mine_treasure_floor5。 + +#### Cloud/Lighting/LuminanceScale + +| 设置路径 | 旧值 | 新值 | 涉及场景数 | +|---|---|---|---| +| Cloud/Lighting/LuminanceScale | 1.0,1.0,1.0,1.0 | **(删除)** | 30+ 场景 | + +#### 矿洞系列 DOFComponent(Bokeh → Gaussian) + +| 设置路径 | 旧值 | 新值 | 涉及场景数 | +|---|---|---|---| +| DOFComponent/Mode | Bokeh | **Gaussian** | 7 场景 | +| DOFComponent/NearEnd | 100 | **10** | 7 场景 | +| DOFComponent/FarBegin | 500 | **0** | 7 场景 | +| DOFComponent/FarEnd | 600 | **150** | 7 场景 | + +涉及:KuangDong_002, kuangdong_A01-A06。 + +#### 矿洞天空切换 + +| 设置路径 | 旧值 | 新值 | 涉及场景数 | +|---|---|---|---| +| SkyAtmosphereComponent/Type | Legacy | **SkyBox** | 12 场景 | +| SkyBox/GimPath | builtin\models\sky\skybox.gim | **temp/sky/skybox.gim** | 12 场景 | +| SkyColor | 浮点线性色值 | **134,111,219,255**(紫色调) | 12 场景 | + +涉及:kuangdong_A01-A06, A04_dark, A05_dark, kuangdong_B01-B06, room。 + +#### 室内场景:新增方向灯 + +8 个室内场景从空 Folders 结构改为新增完整 direction_light 方向灯配置: +ForestRoom, LivestockRoom, beach01_house01, hospitalroom, ironroom, seedroom, woodroom, room。 + +| 设置路径 | 旧值 | 新值 | 涉及场景数 | +|---|---|---|---| +| SceneLightSettings/HasRectLight | False | **True** | 8 场景 | +| SceneLightSettings/CastShadow | False | **True** | 7 场景 | + +#### 室内场景:新增 VVGIComponent(体素全局光照) + +| 场景 | Enabled | IndirectIntensity | LocalLightGIScale | VVGISceneDistance | 其他 | +|---|---|---|---|---|---| +| ForestRoom | 1 | 1.0 | 1.0 | 120 | - | +| beach01_house01 | 1 | 1.0 | 1.0 | 120 | - | +| hospitalroom | 1 | 1.0 | 1.0 | 120 | - | +| seedroom | 1 | 1.0 | 1.0 | 120 | - | +| woodroom | 1 | 1.0 | 1.0 | 120 | - | +| Workshop01 | 1 | 1.0 | 1.0 | (默认) | - | +| **ironroom** | 1 | **3.0** | **6.0** | 120 | 高强度 VVGI | +| LivestockRoom | 1 | 1.0 | 1.0 | 60 | CacheUpdateSpeed=5, SkyLightLeaking=0 | +| **room** | 1 | 1.0 | **2.0** | 60 | CacheUpdateSpeed=3, SkyLightLeaking=0 | + +### 单场景独有变化 + +#### LivestockRoom.scn + +| 设置路径 | 旧值 | 新值 | +|---|---|---| +| BloomComponent/BloomThreshold | 0.500000 | **-1.000000** | +| BloomComponent/BloomIntensity | 5.000000 | **4.000000** | +| BloomComponent/BloomSizeScale | 4.000000 | **2.000000** | +| SSAOComponent/Type | HBAO | **GTAO** | +| SSAOComponent/Intensity | 1.000000 | **2.000000** | +| SSAOComponent/Radius | 1.000000 | **2.000000** | +| HeightFogComponent | (完整配置) | **(整个删除)** | + +#### NongChang_003.scn + +| 设置路径 | 旧值 | 新值 | +|---|---|---| +| BloomComponent/BloomIntensity | 5.010000 | **5.000000** | +| ColorGrading/LUTWeight | 1.000000 | **0.800000** | +| ColorGrading/ColorSaturation (w) | 1.000000 | **0.900000** | +| DOFComponent/Enabled | 1 | **0** | +| ExposureComponent/UsePreExposition | 1 | **0** | +| PipelineComponent_ShadowCast | (不存在) | CastSemiTransparentShadow=**0** | +| DirectionalLight/ShadowNormalBias | 0.000000 | **0.500000** | +| DirectionalLight/Diffuse Color | 白 (1,1,1,1) | 暖白 (1,0.949,0.882,1) | + +#### SeaSide.scn + +| 设置路径 | 旧值 | 新值 | +|---|---|---| +| ColorGrading/ColorSaturation (w) | 1.000000 | **0.900000** | +| SSAOComponent/Intensity | 1.000000 | **0.500000** | +| DirectionalLight/Intensity | 8.000000 | **6.000000** | + +#### Town03.scn + +| 设置路径 | 旧值 | 新值 | +|---|---|---| +| ColorGrading/LUTWeight | 1.000000 | **0.400000** | +| ColorGrading/ColorSaturation (w) | 1.000000 | **0.900000** | +| DOFComponent/Enabled | 1 | **0** | +| DOFComponent/FarEnd | 320.000000 | **150.000000** | +| SSAOComponent/Intensity | 1.000000 | **0.500000** | +| DirectionalLight/ue4IndirectLightingIntensity | 0.000000 | **1.000000** | + +#### Workshop01.scn + +| 设置路径 | 旧值 | 新值 | +|---|---|---| +| DirectionalLight/Position | 8.068,1.526,17.193 | **-8.525,1.526,17.693** | +| DirectionalLight/Direction | -0.108,-0.674,-0.731 | **-0.250,-0.674,-0.695** | +| DirectionalLight/ShadowAlpha | 1.000000 | **0.500000** | +| DirectionalLight/SpecularScale | 1.000000 | **0.000000** | +| DirectionalLight/Intensity | 5.000000 | **3.000000** | + +#### mount01.scn + +| 设置路径 | 旧值 | 新值 | +|---|---|---| +| ColorGrading/LUTWeight | 1.000000 | **0.500000** | +| ColorGrading/ColorSaturation (w) | 1.000000 | **0.920000** | +| DOFComponent/Enabled | 1 | **0** | +| SSAOComponent/Intensity | 1.000000 | **0.500000** | +| SSAOComponent/Radius | 0.500000 | **0.300000** | + +#### neighbor01.scn + +| 设置路径 | 旧值 | 新值 | +|---|---|---| +| ColorGrading/ColorSaturation (w) | 1.000000 | **0.900000** | +| DOFComponent/Enabled | 1 | **0** | +| SSAOComponent/Intensity | 1.000000 | **0.500000** | + +#### room.scn(变动最复杂) + +| 设置路径 | 旧值 | 新值 | +|---|---|---| +| BloomComponent/BloomThreshold | 0.500000 | **-1.000000** | +| BloomComponent/BloomIntensity | 5.000000 | **1.500000** | +| BloomComponent/BloomSizeScale | 4.000000 | **2.000000** | +| 新增 Film | - | Slope=0.88, Toe=0.55, Shoulder=0.26, WhiteClip=0.04 | +| 新增 ColorGrading | - | LUT=scene/room_VVGI/RGBTable16x1_H78.png, LUTWeight=0.8 | +| 新增 ExposureComponent | - | FixedExposure, Compensation=-0.2 | +| SSAOComponent/Intensity | 1.000000 | **2.000000** | +| SSAOComponent/Radius | 1.000000 | **2.000000** | +| 新增 SSRComponent | - | Enabled=0, Quality=High | +| 新增 SunShaftComponent | - | Enable=0(预设未启用) | +| 新增 PipelineComponent_ShadowCast | - | CastSemiTransparentShadow=0 | +| 新增 SuperResolutionComponent | - | Sharpness=100 | +| HeightFogComponent/Type | LegacyHeightFog | **None** | +| SkyAtmosphereComponent/Type | Legacy | **SkyBox** | +| Planet/Cloud 节点 | (完整配置) | **(整体删除)** | +| 新增方向灯 direction_light | - | Intensity=3.5, SpecularScale=0, ShadowAlpha=0.6 | + +--- + +## 2b. res/scene/ 下 PostProcess 文件变化 + +共 **55 个 .postprocess 文件**有变更,其中 50 个有实际参数变化,5 个仅格式重排无参数变更。 + +### 批量变化 + +#### CSMSceneSetting(新增,49 个场景) + +同 .scn 文件一致:CSMDebugMode=0, CustomShadowMode=0, ShadowDistance=**40**, DistributionExponent=**3**。 + +#### BloomComponent(26 个场景) + +- **19 个场景**:Quality High→**Low**, EnableAntiFlickering 0→**1** +- **7 个场景**(Room_01, beach01, farm, lunlunroom, map_01, resident01, town02):从无到有新增完整 Low 品质 Bloom 配置 + +#### TAAComponent(26 个场景) + +- **19 个场景**:TaaQuality High→**Low**, EnableBicubic 1→**0** +- **7 个场景**:从无到有新增完整 Low 品质 TAA 配置 +- MINE_B02-B04, MINE_B06 额外新增/修改顶层 TaaQuality + +#### SSAOComponent(26 个场景) + +- **19 个场景**:UseFilter 1→**0**,其中 8 个矿洞场景同时 UseFullResolution 1→**0** +- **7 个场景**:从无到有新增完整 SSAO 配置(HBAO, UseFilter=0, UseFullResolution=0) + +#### DOFComponent(11 个场景) + +| 设置路径 | 旧值 | 新值 | 涉及场景 | +|---|---|---|---| +| Mode | Bokeh | **Gaussian** | 8-9 个矿洞场景 | +| FarEnd | 600.0 | **150.0** | 同上 | +| NearEnd | 24/100 | **10** | 同上 | +| FarBegin | 36/500/20 | **0** | 11 个场景 | +| Enabled | 1 | **0** | Shenshu01, Workshop01, mineA01 | + +#### LensflareComponent + +| 设置路径 | 旧值 | 新值 | 涉及场景数 | +|---|---|---|---| +| Enable | 1 | **0** | 8 场景(KuangDong_003, kuangdong_B01-B06, mine_treasure_floor5) | + +#### VVGIComponent(10 个场景新增) + +与 .scn 中的 VVGI 配置一致。额外: +- **Town03**:GIMethodType=**TraceWorldProbe**, IndirectIntensity=**2.0**, LocalLightGIScale=**2.0** +- **ironroom**:IndirectIntensity=**3.0**, LocalLightGIScale=**6.0**(全项目最高) + +#### LuminanceScale 移除 + +| 设置路径 | 旧值 | 新值 | 涉及场景数 | +|---|---|---|---| +| 顶层 LuminanceScale | 1.0,1.0,1.0,1.0 | **(删除)** | 21 场景 | + +### 单场景独有变化 + +#### room.postprocess(变动最大,约 142 处变更) + +**新增组件**: + +| 新增组件 | 关键参数 | +|---|---| +| ColorGrading | LUT=scene/room_VVGI/RGBTable16x1_H78.png, LUTWeight=0.8 | +| ExposureComponent | FixedExposure, Compensation=-0.2 | +| Film(色调映射) | Slope=0.88, Toe=0.55, Shoulder=0.26, WhiteClip=0.04 | +| DOFComponent | Gaussian, Enabled=0, FarEnd=150 | +| SunShaftComponent | Enable=0(预设未启用) | +| SSRComponent | Enabled=0, Quality=High | +| SuperResolutionComponent | Sharpness=100 | +| PipelineComponent_ShadowCast | CastSemiTransparentShadow=0 | + +**移除内容**:整个 SkyAtmosphereComponent/Cloud 节点(约 40+ 参数)、HeightFog 所有子节点。 +从完整室外天气/大气配置重构为纯室内场景。 + +#### LivestockRoom.postprocess + +HeightFogComponent 整体移除(ExpHeightFog、LegacyHeightFog、FogCulling 全部清除),新增 VVGI。 + + +--- + +## 3. GlobalRenderComponentsConfig.xml 变化(r10 → r3165) + +| 设置项 | 旧值 (r10) | 新值 (r3165) | 说明 | +|--------|-----------|-------------|------| +| EditorBuildPriority | Val="Disable" | **(删除)** | 移除编辑器构建优先级设置 | +| EnableIB | Val="1" | **(删除)** | 移除 Instance Batching 开关 | +| MaterialCommonComponent | (不存在) | **(新增空节点)** | 新增材质公共组件 | +| CSM PerLayerResolution | **2048** | **1024** | 阴影贴图分辨率减半 | +| CSM LayerCount | **4** | **1** | 级联层数从 4 降到 1 | +| SoftShadowLevel | **Max** | **High** | 软阴影品质降低 | + + +# 相关影响 + +## 张子涵各提交具体变化 + +### r3164 — NongChang_003 后处理降级(首次试点) +**文件**: `res/scene/NongChang_003.scn`(1 个文件) + +| 参数 | 变更前 | 变更后 | 说明 | +|---|---|---|---| +| Bloom Quality | High | **Low** | 泛光质量降级 | +| BloomIntensity | 5.010 | 5.000 | 微调 | +| DOF Enabled | 1 | **0** | 关闭景深 | +| UsePreExposition | 1 | **0** | 关闭自动曝光 | +| Lensflare Enable | 1 | **0** | 关闭镜头光晕 | +| SSAO UseFilter | 1 | **0** | 关闭 SSAO 滤波 | +| TAA Quality | High | **Low** | TAA 降级 | +| TAA EnableYCoCg | 1 | **0** | 关闭 YCoCg 色彩空间转换 | +| TAA EnableBicubic | 1 | **0** | 关闭双三次采样 | +新增节点: +- `PipelineComponent_ShadowCast` → CastSemiTransparentShadow=**0**(关闭半透明阴影投射) +- `CSMSceneSetting` → ShadowDistance=**30**, DistributionExponent=**2**(新增场景级 CSM 控制) + +--- +### r3165 — GlobalRenderComponentsConfig.xml 全局阴影降级 +**文件**: `res/GlobalRenderComponentsConfig.xml`(1 个文件) + +| 参数 | 变更前 | 变更后 | 说明 | +| ---------------------- | ---- | -------- | ------------ | +| CSM PerLayerResolution | 2048 | **1024** | 阴影贴图分辨率减半 | +| CSM LayerCount | 4 | **1** | 级联层级从 4 降到 1 | +| SoftShadowLevel | Max | **High** | 软阴影精度降低 | +**影响**:全局生效,所有场景的阴影质量直接受影响。单级联 + 1024 分辨率在远处阴影边缘可能出现明显锯齿。 + +--- + +### r3180 — NongChang_003 参数微调 +**文件**: `res/scene/NongChang_003.scn`(1 个文件) + +| 参数 | 变更前 | 变更后 | 说明 | +|---|---|---|---| +| TAA EnableYCoCg | 0 | **1** | 恢复 YCoCg(r3164 关掉后又开回来) | +| CSM ShadowDistance | 30 | **35** | 阴影距离增加 | +| CSM DistributionExponent | 2 | **3** | 阴影分布更向近处集中 | +新增节点: +- `CenariusVegetation` → UseGlobalConfig=true, GlobalConfigPath=`scene/NongChang_003_content/cenarius.cfg`(植被全局配置接入) + +--- +### r3248 — 全场景统一移动端设置(最大批量) +**文件**: 约 **42 个 .scn + 42 个 .postprocess** + 2 个 .scnex,覆盖几乎所有游戏场景 + +涉及场景(示例):ForestRoom, KuangDong_002/003, L_SmallTown, LivestockRoom, NongChang_003, SeaSide, Shenshu01, Store_01, Town03, Workshop01, XLG006, beach01_house01, coop01-04, hospitalroom, ironroom, kuangdong_A01-A06, kuangdong_A04/A05_dark, kuangdong_B01-B06, map, mineA01, mine_treasure_floor5, mount01, neighbor01, neighborH, room, seedroom, woodroom + +**统一施加的渲染设置变化**(以 NongChang_003.scn 为代表): + +| 参数 | 变更前 | 变更后 | 说明 | +|---|---|---|---| +| Bloom EnableAntiFlickering | 0 | **1** | 开启抗闪烁 | +| TAA EnableYCoCg | 存在 | **删除** | 移除该配置项 | +| TAA AntiFlicker | 0.750 | **0.880** | 增加抗闪烁强度 | +| **CastShadow** | **True** | **False** | **关闭场景级阴影投射** | +| CSM ShadowDistance | 35 | **40** | 阴影距离微增 | +新增节点: +- `LodPerViewSettings` → LodTransitionDuration=**500ms**, UseFixedLodLevel=0(LOD 过渡动画 500ms) + +**postprocess 文件**:同步使用编辑器重保存,格式统一化(XML 重排版),实际参数值与 scn 中的对应设置一致。 + +--- +### r3261 — 补充更多场景的阴影/后处理分级 +**文件**: 约 **50 个 .scn + 50 个 .postprocess** + 若干 .scnex + +相比 r3248 **新增覆盖的场景**:farm, beach01, lunlunroom, resident01, town02, map_01, Room_01, coop01-03(.scnex) + +变更模式与 r3248 一致(编辑器整体重保存,统一后处理/阴影设置)。注意此提交是全文件重写 diff。 + +--- +### r3268 — 遗漏场景补充上传 +**文件**: 32 个文件 — MINE_B01-B06.postprocess + 部分 scn/scnex + +**新覆盖的场景**:MINE_B01-B06(矿洞 B 系列 postprocess)、Workshop01, beach01, farm, kuangdong_B01-B06, lunlunroom, map_01, resident01, town02, Room_01 的 scn/scnex 补充调整。 + +--- +### r3440 — 场景模型 LOD 参数优化(移动端适配) +**文件**: **133 个文件** — 46 .gim + 33 .lod2 + 31 .mtg + 12 .mesh + 11 .mtl + +**LOD 阈值大幅提升**(以 SM_Weed02 为例): + +| LOD Level | 变更前 LevelParam | 变更后 LevelParam | 倍数 | +|---|---|---|---| +| Level0 (最高) | 0.1015 | **0.6000** | ~6x | +| Level1 | 0.0424 | **0.3000** | ~7x | +| Level2 | 0.0176 | **0.1000** | ~6x | +| Level3 (最低) | 0(显示最低LOD) | **0(LODType=2 → 完全剔除)** | 消失 | + +新增属性: +- `SimplifierType="0"` +- `LODType="0"` (Level0-2), `LODType="2"` (Level3,完全剔除) + +**涉及模型类别**: +- 植被:杂草(Weed)、灌木(Bush)、草地(Grass/FoliageGrass) +- 树木:Maple(枫树)、Oak(橡树)、Pine(松树)、CherryBlossom(樱花)、PineThin +- 地形散件:石头(Rock/Stone/Boulder/LimeStone)、树桩(Stump)、树枝(Twig)、大圆木(LargeLog) +- 建筑:House_Online、House_Player、TimberShop、WorkShopBefore +- 铁匠铺模型:Forge-4_Gradient + +**材质文件**同步变更:新增 `ShaderMacro`(ALPHA_TEST_ENABLE、TWO_SIDED、ALPHA_BLEND_ENABLE 显式声明)和 `RenderTechs`(DeferredGBuffer、ForwardOpaque、PreZ 等渲染通道声明)。 + +--- +### r3598 — Weed LOD 微调 +**文件**: 5 个文件 — SM_Weed02/03/04 的 .lod2 和 .gim + +在 r3440 基础上进一步微调杂草的 LOD 参数和网格数据。 + +--- +### r3978 — Mesh 顶点压缩 +**文件**: **6935 个 .mesh 文件**(二进制格式,无法查看具体数值变化) + +对项目中几乎所有骨骼网格文件执行顶点压缩。涉及目录: +- `ANGRY_MESH/`(花卉、灌木、蘑菇等自然物) +- `Marketplace/`(各种场景资产包) +- `ProjectCoral/`(主场景资产) +- `Characters/`(角色模型) +- `Scenes/`(场景专用网格) +- 以及其他所有包含 .mesh 的资源目录 + +--- +### LOD影响场景 +张子涵 r3440 + r3598 修改了 33 个 `.lod2` 文件的 LOD 配置。以下列出所有模型的具体 LevelParam 变化,以及被哪些 `.scn` 场景文件引用。 + +**LODType 说明**:`0` = 显示对应 LOD 网格,`2` = 完全剔除(不渲染) + +#### 全部模型 LOD 参数变化明细(r3440) + +##### 草地/杂草类 + +| 模型 | Level | 旧值 | 新值 | LODType | 备注 | +|---|---|---|---|---|---| +| **SM_FoliageGrass_Merge** | L0 | 0.1045 | **0.6000** | 0 | 从 4 级缩减为 3 级 | +| | L1 | 0.0527 | **0.1000** | 0 | | +| | L2 | 0.0151 | **0.0000** | **2** | 剔除 | +| | L3 | 0 | *(删除)* | - | | +| **SM_grass_bush** | L0 | 0 (仅1级) | **0.2000** | 0 | 从 1 级扩展为 2 级 | +| | L1 | *(无)* | **0.0000** | **2** | 新增剔除级 | +| **SM_grass1_Out** | L0 | 0.1058 | **0.6000** | 0 | | +| | L1 | 0.0458 | **0.3000** | 0 | | +| | L2 | 0.0316 | **0.1000** | 0 | | +| | L3 | 0 | **0.0000** | **2** | 原显示→剔除 | +| **SM_Weed02** (Debris) | L0 | 0.1015 | **0.6000** | 0 | | +| | L1 | 0.0424 | **0.3000** | 0 | | +| | L2 | 0.0176 | **0.1000** | 0 | | +| | L3 | 0 | **0.0000** | **2** | 原显示→剔除 | +| **SM_Weed03** (Debris) | L0 | 0.3991 | **0.6000** | 0 | | +| | L1 | 0.1758 | **0.3000** | 0 | | +| | L2 | 0.0940 | **0.1000** | 0 | | +| | L3 | 0 | **0.0000** | **2** | 原显示→剔除 | +| **SM_Weed04** (Debris) | L0 | 0.1015 | **0.6000** | 0 | | +| | L1 | 0.0424 | **0.3000** | 0 | | +| | L2 | 0.0176 | **0.1000** | 0 | | +| | L3 | 0 | **0.0000** | **2** | 原显示→剔除 | +| **SM_Weed03** (Foliage) | L0 | 0.2677 | **0.6000** | 0 | | +| | L1 | 0.0608 | **0.3000** | 0 | | +| | L2 | 0.0338 | **0.1000** | 0 | | +| | L3 | 0 | **0.0000** | **2** | 原显示→剔除 | +| **SM_Weed05** (Foliage) | L0 | 0.5268 | **0.6000** | 0 | | +| | L1 | 0.1423 | **0.3000** | 0 | | +| | L2 | 0.1136 | **0.1000** | 0 | | +| | L3 | 0 | **0.0000** | **2** | 原显示→剔除 | + +##### 灌木类 + +| 模型 | Level | 旧值 | 新值 | LODType | +|---|---|---|---|---| +| **SM_BushBig_02** | L0 | 0.0568 | **0.4000** | 0 | +| | L1 | 0.0206 | **0.2000** | 0 | +| | L2 | 0.0109 | **0.1000** | 0 | +| | L3 | 0 | **0.0000** | 0 (保留) | + +##### 树木类 + +| 模型 | Level | 旧值 | 新值 | LODType | +|---|---|---|---|---| +| **SM_TreeCherryBlossom01** | L0 | 0.1107 | **0.6000** | 0 | +| | L1 | 0.0756 | **0.4500** | 0 | +| | L2 | 0.0531 | **0.1500** | 0 | +| | L3 | 0 | **0.0000** | 0 (保留) | +| **SM_TreeCherryBlossom02** | L0 | 0.1093 | **0.6000** | 0 | +| | L1 | 0.0747 | **0.3000** | 0 | +| | L2 | 0.0524 | **0.1000** | 0 | +| | L3 | 0 | **0.0000** | 0 (保留) | +| **SM_TreeMaple01** | L0 | 0.3037 | **0.6000** | 0 | +| | L1 | 0.0615 | **0.3000** | 0 | +| | L2 | 0.0600 | **0.1000** | 0 | +| | L3 | 0 | **0.0000** | 0 (保留) | +| **SM_TreeOak01_S03** | L0 | 0.3476 | **0.6000** | 0 | +| | L1 | 0.0445 | **0.3000** | 0 | +| | L2 | 0.0393 | **0.1000** | 0 | +| | L3 | 0 | **0.0000** | 0 (保留) | +| **SM_TreePine01_S03** | L0 | 0.3315 | **0.6000** | 0 | +| | L1 | 0.0519 | **0.4500** | 0 | +| | L2 | 0.0205 | **0.1500** | 0 | +| | L3 | 0 | **0.0000** | 0 (保留) | +| **SM_TreePineThin01** | L0 | 0.1472 | **0.6000** | 0 | +| | L1 | 0.0690 | **0.3000** | 0 | +| | L2 | 0.0397 | **0.1000** | 0 | +| | L3 | 0 | **0.0000** | 0 (保留) | + +##### 石头/岩石类 + +| 模型 | Level | 旧值 | 新值 | LODType | +|---|---|---|---|---| +| **SM_stone_b** | L0 | 0.8986 | **0.6000** | 0 | +| | L1 | 0.3777 | **0.3000** | 0 | +| | L2 | 0.1570 | **0.1000** | 0 | +| | L3 | 0 | **0.0000** | 0 (保留) | +| **SM_stone_e** | L0 | 0.8062 | **0.6000** | 0 | +| | L1 | 0.3216 | **0.3000** | 0 | +| | L2 | 0.0989 | **0.1000** | 0 | +| | L3 | 0 | **0.0000** | 0 (保留) | +| **SM_stone_g** | L0 | 0.5608 | **0.8000** | 0 | +| | L1 | 0.2017 | **0.5000** | 0 | +| | L2 | 0.0656 | **0.2000** | 0 | +| | L3 | 0 | **0.0000** | 0 (保留) | +| **SM_Rock_Large_01** | L0 | 1.4285 | **0.6000** | 0 | +| | L1 | 1.4284 | **0.3000** | 0 | +| | L2 | 0.9183 | **0.1000** | 0 | +| | L3 | 0 | **0.0000** | 0 (保留) | +| **SM_Rock03** | L0 | 0.0863 | **0.1500** | 0 | +| | L1 | 0.0440 | **0.1000** | 0 | +| | L2 | 0.0138 | **0.0500** | 0 | +| | L3 | 0 | **0.0000** | **2** (剔除) | +| **SM_LimeStoneSmall01** | L0 | 0.9692 | **0.6000** | 0 | +| | L1 | 0.3713 | **0.3000** | 0 | +| | L2 | 0.1610 | **0.1000** | 0 | +| | L3 | 0 | **0.0000** | 0 (保留) | +| **Boulder_B_04** | L0 | 0.1400 | **0.3000** | 0 | +| | L1 | 0.0728 | **0.1000** | 0 | +| | L2 | 0.0448 | **0.0000** | **2** (剔除) | +| | L3 | 0 | *(删除)* | - | +| **Boulder_B_14** | L0 | 0.3857 | **0.3000** | 0 | +| | L1 | 0.1868 | **0.1500** | 0 | +| | L2 | 0.0882 | **0.1000** | 0 | +| | L3 | 0 | **0.0000** | **2** (剔除) | + +##### 宝石矿 + +| 模型 | Level | 旧值 | 新值 | LODType | +|---|---|---|---|---| +| **SM_precious_stone_03** | L0 | 0.6359 | **0.6000** | 0 | +| | L1 | 0.1307 | **0.3000** | 0 | +| | L2 | 0.0561 | **0.1000** | 0 | +| | L3 | 0 | **0.0000** | **2** (剔除) | + +##### 地形散件类 + +| 模型 | Level | 旧值 | 新值 | LODType | +|---|---|---|---|---| +| **SK_LargeLog01** | L0 | 1.1604 | **0.6000** | 0 | +| | L1 | 0.4129 | **0.3000** | 0 | +| | L2 | 0.1716 | **0.1000** | 0 | +| | L3 | 0 | **0.0000** | **2** (剔除) | +| **SM_Stump02** | L0 | 1.0460 | **0.6000** | 0 | +| | L1 | 0.4173 | **0.3000** | 0 | +| | L2 | 0.1609 | **0.1000** | 0 | +| | L3 | 0 | **0.0000** | **2** (剔除) | +| **SM_Twig03** | L0 | 0.1849 | **0.6000** | 0 | +| | L1 | 0.0801 | **0.3000** | 0 | +| | L2 | 0.0343 | **0.1000** | 0 | +| | L3 | 0 | **0.0000** | **2** (剔除) | + +##### 建筑类 + +| 模型 | Level | 旧值 | 新值 | LODType | +|---|---|---|---|---| +| **SM_House_Online** | L0 | 1.2367 | **1.2000** | 0 | +| | L1 | 0.4566 | **0.8000** | 0 | +| | L2 | 0.1645 | **0.3000** | 0 | +| | L3 | 0 | **0.0000** | 0 (保留) | +| **SM_House_Player** | L0 | 1.1742 | **1.2000** | 0 | +| | L1 | 0.4390 | **0.8000** | 0 | +| | L2 | 0.1581 | **0.3000** | 0 | +| | L3 | 0 | **0.0000** | 0 (保留) | +| **SM_TimberShop_01** | L0 | 0.8152 | **1.2000** | 0 | +| | L1 | 0.3298 | **0.8000** | 0 | +| | L2 | 0.1186 | **0.3000** | 0 | +| | L3 | 0 | **0.0000** | 0 (保留) | + +##### 铁匠铺 + +| 模型 | Level | 旧值 | 新值 | LODType | 备注 | +|---|---|---|---|---|---| +| **Forge-4_Gradient_0** | L0 | 0.8639 | **0.0000** | 0 | 从 4 级缩减为 1 级(仅保留最高LOD) | +| | L1 | 0.3321 | *(删除)* | - | | +| | L2 | 0.2073 | *(删除)* | - | | +| | L3 | 0 | *(删除)* | - | | + +##### 装饰物 + +| 模型 | Level | 旧值 | 新值 | LODType | +|---|---|---|---|---| +| **comm_obj_0040n** | L0 | 0.0689 | **0.4000** | 0 | +| | L1 | 0.0390 | **0.2000** | 0 | +| | L2 | 0.0256 | **0.1200** | 0 | +| | L3 | 0 | **0.0000** | 0 (保留) | +| **comm_obj_0041n** | L0 | 0.0393 | **0.4000** | 0 | +| | L1 | 0.0209 | **0.2000** | 0 | +| | L2 | 0.0140 | **0.1200** | 0 | +| | L3 | 0 | **0.0000** | 0 (保留) | + +##### r3598 追加调整(Weed LOD 回调) + +r3598 在 r3440 基础上将 Debris/Weed 系列的 LOD 阈值**下调了一半**: + +| 模型 | Level | r3440 值 | **r3598 最终值** | +|---|---|---|---| +| **SM_Weed02** (Debris) | L0 | 0.6000 | **0.3000** | +| | L1 | 0.3000 | **0.1500** | +| | L2 | 0.1000 | **0.0500** | +| | L3 | 0 (剔除) | 0 (剔除,不变) | +| **SM_Weed03** (Debris) | L0 | 0.6000 | **0.3000** | +| | L1 | 0.3000 | **0.1500** | +| | L2 | 0.1000 | **0.0500** | +| | L3 | 0 (剔除) | 0 (剔除,不变) | +| **SM_Weed04** (Debris) | L0 | 0.6000 | **0.3000** | +| | L1 | 0.3000 | **0.1500** | +| | L2 | 0.1000 | **0.0500** | +| | L3 | 0 (剔除) | 0 (剔除,不变) | + +> 说明:r3598 将 Debris/Weed 的 LOD 阈值从 r3440 的统一 0.6/0.3/0.1 下调为 0.3/0.15/0.05,意味着杂草需要在更近距离才会降级,避免了肉眼可见的 pop-in。但 Foliage/Weeds 目录下的 SM_Weed03/05 未做此回调。 + +#### 场景直接引用的模型(22 个模型 → 命中 22 个场景) + +##### 石头类(场景分布最广) + +| 模型 | 引用场景 | 场景数 | +|---|---|---| +| SM_stone_b | KuangDong_002/003, NongChang_003, XLG006, kuangdong_A01-A06, A04/A05_dark, kuangdong_B01-B06, mine_treasure_floor5 | **19** | +| SM_stone_e | KuangDong_002/003, L_SmallTown, NongChang_003, XLG006, kuangdong_A01-A06, A04/A05_dark, kuangdong_B01-B06, mine_treasure_floor5, neighbor01, neighborH | **22** | +| SM_stone_g | KuangDong_002/003, L_SmallTown, NongChang_003, XLG006, kuangdong_A01-A06, A04/A05_dark, kuangdong_B01-B06, mine_treasure_floor5 | **20** | +| SM_Rock_Large_01 | NongChang_003, XLG006, mount01 | 3 | +| SM_LimeStoneSmall01 | SeaSide, Shenshu01, Town03, map, map_01, mount01 | 6 | + +##### 树木类 + +| 模型 | 引用场景 | 场景数 | +|---|---|---| +| SM_TreeOak01_S03 | NongChang_003, SeaSide, Shenshu01, Town03, map, mineA01, mount01, neighbor01, neighborH | **9** | +| SM_TreeMaple01 | NongChang_003, SeaSide, Town03, map, neighbor01, neighborH | 6 | +| SM_TreeCherryBlossom02 | NongChang_003, Shenshu01, Town03, map, neighbor01, neighborH | 6 | +| SM_TreeCherryBlossom01 | NongChang_003, Shenshu01, mount01 | 3 | +| SM_TreePine01_S03 | NongChang_003, mount01, neighbor01, neighborH | 4 | +| SM_TreePineThin01 | NongChang_003, map, map_01 | 3 | +| SK_TreePine01_S04_03 | Shenshu01, mineA01 | 2 | +| SK_TreeOak01_S03_04 | neighbor01 | 1 | + +##### 灌木/杂草类 + +| 模型 | 引用场景 | 场景数 | +|---|---|---| +| SM_BushBig_02 | NongChang_003, SeaSide, Shenshu01, Town03, map, mineA01, mount01, neighbor01, neighborH | **9** | +| SM_Weed03 | neighbor01, neighborH | 2 | +| SM_Weed04 | neighbor01, neighborH | 2 | +| SM_Weed05 | neighbor01, neighborH | 2 | + +##### 地形散件 + +| 模型 | 引用场景 | 场景数 | +|---|---|---| +| SM_Stump02 | neighbor01, neighborH | 2 | +| SK_LargeLog01 | NongChang_003 | 1 | + +##### 建筑 + +| 模型 | 引用场景 | 场景数 | +|---|---|---| +| SM_House_Player | L_SmallTown, NongChang_003, XLG006, beach01, farm | 5 | +| SM_House_Online | L_SmallTown, XLG006, beach01, farm | 4 | +| SM_TimberShop_01 | Town03, map | 2 | + +##### 其他 + +| 模型 | 引用场景 | 场景数 | +|---|---|---| +| comm_obj_0040n | NongChang_003, Town03, neighbor01, neighborH | 4 | +| comm_obj_0041n | NongChang_003, neighbor01, neighborH | 3 | + +#### 关键结论 + +1. **NongChang_003(主农场)和 neighbor01/neighborH(邻居场景)受影响最大**,超过 12 个模型的 LOD 阈值被调整 +2. **石头类模型(stone_b/e/g)影响面最广**,覆盖 19-22 个场景(几乎所有室外场景 + 全部矿洞) +3. **SM_BushBig_02 和 SM_TreeOak01_S03 各覆盖 9 个场景**,是植被中影响面最大的 +4. **建筑模型(House_Player/Online)影响 4-5 个场景**,玩家房屋在多个场景可见 +5. **约一半模型(22/44)不在 .scn 中直接引用**,通过 UE Actor 管线或 Cenarius 植被系统加载,但 LOD 设置同样生效 +6. **矿洞系列 18 个场景虽数量多,但仅引用石头类模型**,LOD 影响相对可控 +### 综合影响评估 + +#### 1. 后处理画质降级(r3164 → r3248 → r3261 → r3268) + +| 功能 | 变化 | 性能收益 | 画质代价 | +|---|---|---|---| +| Bloom | High → Low | 减少 bloom 下采样/模糊 pass 数 | 泛光边缘更粗糙 | +| DOF | 开 → 关 | 省掉整个景深 pass | 失去远近虚化效果 | +| 自动曝光 | 开 → 关 | 省掉直方图计算 | 亮暗场景切换时不再自动适应 | +| 镜头光晕 | 开 → 关 | 省掉 lensflare 计算 | 太阳方向失去镜头感 | +| TAA | High → Low, 去掉 YCoCg/Bicubic | 减少每帧 TAA 采样和重投影开销 | 抗锯齿质量下降,可能出现更多闪烁 | +| SSAO 滤波 | 开 → 关 | 省掉 SSAO 模糊 pass | AO 边缘更硬/有噪点 | +| 半透明阴影 | 开 → 关 | 减少 shadowmap 渲染对象数 | 半透明物体(树叶、玻璃等)不再投射阴影 | + +**注意**:这些降级是写死在场景文件里的,不随画质档位变化。后续脚本层的画质分档系统(程侃 Git 提交)会在此基础上叠加动态控制。 + +#### 2. 阴影系统大幅简化(r3165 + r3248) + +- **全局 CSM**:分辨率减半(2048→1024)+ 级联层数从 4 降到 1 +- **场景级 CastShadow=False**:大部分场景关闭了静态物体阴影投射 +- 综合效果:**场景级静态物体基本不投射阴影,仅保留可能由脚本动态控制的角色阴影** +- 风险:低画质下如果脚本层也关阴影,场景将完全没有阴影;中高画质下需要脚本层重新开启 + +#### 3. LOD 策略激进化(r3440 + r3598) + +- LOD 切换阈值提升 **~6-7 倍**,模型在更近的距离就切换到低精度版本 +- 最远级别改为 **完全剔除**(LODType=2),而非显示最低 LOD 网格 +- LOD 过渡时间 500ms +- 涉及 **全场景主要自然物体和建筑模型** +- 风险:中近距离可能出现 **LOD pop-in**(模型突然切换为低精度),尤其在快速移动相机时明显 + +#### 4. 顶点压缩(r3978) + +- **6935 个 .mesh 文件**全量压缩 +- 减少 GPU 顶点缓冲区内存占用和带宽消耗 +- 风险:极端情况下可能引入微小顶点位置精度误差(通常肉眼不可见);若压缩格式与某些 shader 不兼容可能出现渲染异常 + +#### 5. 时间线与依赖关系 + +``` +4/3 r3164 ─ NongChang 试点后处理降级 +4/3 r3165 ─ 全局 CSM 降级(影响所有场景) +4/3 r3180 ─ NongChang 参数回调(YCoCg 恢复、阴影距离调大) +4/3 r3248 ─ 全场景批量设置(最大影响面) +4/3 r3261 ─ 补充更多场景 +4/3 r3268 ─ 遗漏场景补充 +4/7 r3440 ─ LOD 参数移动端适配(133 文件) +4/8 r3598 ─ Weed LOD 微调 +4/10 r3978 ─ Mesh 顶点压缩(6935 文件) +``` + +张子涵的优化工作路线:**后处理降级(4/3) → 阴影简化(4/3) → LOD 激进化(4/7-4/8) → 顶点压缩(4/10)**,配合程侃同期的脚本层画质分档系统和贴图压缩,共同构成移动端性能优化方案。 + + + + +## 程侃代码影响 + +### 提交前基线状态(aa9e6b12 之前) + +只有两档:HIGH(0) / LOW(1)。`GlobalData.graphic_level` 默认 HIGH。 + +| 功能 | HIGH | LOW | +|------|------|-----| +| 管线 | Forward | Deferred | +| 分辨率 | 1.0 | 0.7 | +| SSR | 场景默认(mActive=False) | 强制关闭 | +| SSAO | 场景默认(mActive=False) | 强制开启(Type=2) | +| 阴影 | 不控制 | 不控制 | +| Bloom/DOF/TAA | 不控制 | 不控制 | +| LOD | 不控制 | 不控制 | + +--- + +### aa9e6b12 — 高中低三档 + 低档关阴影 + +- 新增 `MEDIUM = 1`,LOW 从 1 变为 2 +- **HIGH 变成"最干净"**:SSR/SSAO 全部 `mActive=False`(不覆盖场景默认,场景文件里美术配什么就是什么) +- **MEDIUM 继承了原 LOW 的配置**:Deferred 管线、0.7 分辨率、SSR 关、SSAO 开(Type=2+Filter) +- **LOW 新增**:关闭主光源阴影 (`light.enable_shadow = False`) +- 管线判断逻辑反转:原来 LOW=Deferred / HIGH=Forward,现在 HIGH=Forward / MEDIUM+LOW=Deferred + +--- + +### 8951e2e9 — pub_design 默认中画质 + 后处理细分 + 低档 0.5 分辨率 + +- **`IS_DESIGN_TEST and IS_RELEASE` 时默认 MEDIUM** — 策划体验包强制走中画质 +- **LOW 分辨率从 0.7 降至 0.5** — 像素量仅为原生的 25% +- **三档后处理细分**: + +| 后处理 | HIGH | MEDIUM | LOW | +|--------|------|--------|-----| +| Bloom | mActive=False(场景默认) | mActive=False(场景默认) | **强制关闭** | +| DOF | mActive=False(场景默认) | mActive=False(场景默认) | **强制关闭** | +| TAA | mActive=False(场景默认) | mActive=False(场景默认) | **强制关闭** | + +--- + +### da9a031b — LOD 偏移 + 三档显式 LOD 配置 + +- HIGH/MEDIUM: `mLodBias = 0`(正常 LOD 级别) +- **LOW: `mLodBias = 1`** — LOD 往下偏移一级,模型在相同距离显示更低精度版本 +- 三档都显式设置 `mLodPerViewSettingsConfig.mActive = True`,保证幂等(避免切换画质后 LOD 状态残留) + +--- + +### c2ccbeb8 — GM 重构(纯架构,渲染逻辑等价) + +- 将 `refresh_default_render_config()` 拆分为 `_FEATURE_LEVEL_MAP`(数据表)+ 每功能独立 `_apply_xxx`(执行函数) +- 数据映射与之前完全一致,只是结构化 +- 新增 `GMGraphic.py` 虚拟文件夹,可在 GM 面板中单独切换每个渲染功能(管线/分辨率/SSR/SSAO/Bloom/DOF/TAA/LOD/阴影) +- 后处理功能引入三态语义:`None`=场景默认、`True`=脚本强制开、`False`=脚本强制关 + +--- + +### 最终三档画质对比(当前状态) + +| 功能 | HIGH | MEDIUM | LOW | +|------|------|--------|-----| +| **管线** | Forward | Deferred | Deferred | +| **分辨率** | 1.0 (100%) | 0.7 (70%) | **0.5 (50%)** | +| **SSR** | 场景默认 | 强制关 | 强制关 | +| **SSAO** | 场景默认 | **强制开**(Type=2+Filter) | 强制关 | +| **Bloom** | 场景默认 | 场景默认 | 强制关 | +| **DOF** | 场景默认 | 场景默认 | 强制关 | +| **TAA** | 场景默认 | 场景默认 | 强制关 | +| **LOD Bias** | 0 | 0 | **+1** | +| **阴影** | 开 | 开 | **关** | +### 画质切换逻辑 + +**没有平台级自动档位选择。** 整个脚本仓库中不存在基于设备性能、GPU 能力或平台类型的自动画质选择逻辑。 + +#### `graphic_level` 的三个写入点(全代码库仅此三处) + +**1) 模块默认值 — `GlobalData.py:69`** + +```python +graphic_level: int = GraphicLevel.HIGH +``` + +所有环境的起始值都是 HIGH。 + +**2) 唯一的自动降级 — `demo.py:30-33`** + +```python +def _init_graphic_level(): + if version_config.IS_DESIGN_TEST and version_config.IS_RELEASE: + GlobalData.graphic_level = GraphicLevel.MEDIUM +``` + +在 `demo.init()` 启动流程中调用(line 196)。仅当两个标志同时为 True 时降为 MEDIUM。 + +**3) GM 手动切换(仅调试用)— `GMCommandHandle.py:571`** + +```python +GlobalData.graphic_level = levels[next_index] # 循环 HIGH→MEDIUM→LOW→HIGH +``` + +#### 各包类型对应的画质等级 + +`version_config.py` 在本地源码中默认 `IS_DESIGN_TEST=False, IS_RELEASE=False`。打包时由 `pack_farm.py` 的 `modify_version_config()` 方法物理覆写此文件,打包完成后 `git reset --hard` 恢复。 + +| 包类型 | IS_DESIGN_TEST | IS_RELEASE | 画质等级 | +|--------|----------------|------------|----------| +| 本地开发 / PC 编辑器 | False | False | **HIGH** | +| inner_design_demo | True | False | **HIGH**(条件不满足,and 短路) | +| **pub_design_demo** | **True** | **True** | **MEDIUM** | +| inner_trunk_demo | False | False | **HIGH** | +| pub_trunk_demo | False | False | **HIGH** | + +#### LOW 永远不会被自动触发 + +`GraphicLevel.LOW` 没有任何自动触发路径。不存在任何条件(包类型、平台、设备性能)会自动将画质设为 LOW。LOW 只能通过 GM 面板手动切换到达。 + +#### 不存在的逻辑 + +以下机制在整个代码库中完全不存在: + +- **设备性能检测** — 无 GPU benchmarking、device score、device tier +- **平台判断选画质** — `is_mobile()`(`client_utils.py:82`)和 `game3d.get_platform()` 只用于输入处理和 FPS 设置,从未参与画质决策。`SceneRenderHelper` 中原有的 `# platform = game3d.get_platform()` 已被注释掉 +- **设备白名单/黑名单** — 无按机型分级逻辑 +- **运行时性能自适应** — 无根据帧率动态调整画质的逻辑 + +#### 完整流程图 + +``` +构建时: + pack_farm.py 根据 --is_design_test / --is_release 参数覆写 version_config.py + pub_design_demo => IS_DESIGN_TEST=True, IS_RELEASE=True + +启动 (demo.init): + _init_graphic_level() + IS_DESIGN_TEST and IS_RELEASE? => graphic_level = MEDIUM + 否则 => 保持 HIGH(GlobalData 默认值) + +场景加载 (Space.on_scene_view_changed): + refresh_default_render_config() + 读取 GlobalData.graphic_level + set_feature_states_from_level(level) => 填充 graphic_feature_states 字典 + apply_all_features() => 逐个调用 _apply_* 函数: + _apply_pipeline() -- forward vs deferred + _apply_resolution() -- render.set_redirect_scale(scale)(全代码库唯一调用点) + _apply_ssr() -- SSR 三态 + _apply_ssao() -- SSAO 三态 + _apply_bloom() -- Bloom 三态 + _apply_dof() -- DOF 三态 + _apply_taa() -- TAA 三态 + _apply_lod_bias() -- LOD 偏移值 + _apply_shadow() -- 阴影开关 + +运行时调试: + GM "渲染" 指令 => 循环切换 graphic_level => 重新应用全部功能 + GM "画质控制" 虚拟文件夹 => 单独切换各功能(绕过等级预设) +``` + +--- + +### 为什么移动端渲染比 PC 编辑器差很多 + +核心原因不是某个功能有 bug,而是**画质等级选择逻辑本身在做分层降质**。 + +#### 1. 默认画质等级的差异是根因 + +- `GlobalData.graphic_level` 默认值 = `GraphicLevel.HIGH`(`GlobalData.py:69`) +- **PC 编辑器** / 开发者本地 → `IS_DESIGN_TEST=False, IS_RELEASE=False` → **默认 HIGH** +- **策划体验包**(pub_design)→ `IS_DESIGN_TEST=True, IS_RELEASE=True` → `_init_graphic_level()` **强制降为 MEDIUM**(`demo.py:32`) +- 没有基于设备性能的自动选档逻辑(`game3d.get_platform()` 被注释掉了) + +#### 2. HIGH → MEDIUM 的差距已经很大 + +| 差异项 | 效果影响 | +|--------|----------| +| Forward → Deferred | 光照模型不同,Deferred 在移动端可能丢失前向渲染特有的透明/半透效果 | +| 分辨率 1.0 → 0.7 | 像素量直接降到 49%(0.7×0.7),画面明显模糊 | +| SSR 场景默认 → 强制关 | 水面、地板反射完全消失 | +| SSAO 场景默认 → 强制开 | 这个反而是"加了",但在低分辨率 Deferred 管线下效果有限 | + +#### 3. LOW 是全面劣化 + +- 分辨率 50%(像素量仅 25%) +- Bloom/DOF/TAA 全关 — 无泛光、无景深、无抗锯齿 +- 阴影关闭 — 场景完全没有阴影 +- LOD +1 — 模型更粗糙 +- SSAO 也关了 — 无环境遮蔽 + +#### 4. "场景默认" vs "脚本强制" 的机制陷阱 + +HIGH 档对 SSR/SSAO/Bloom/DOF/TAA 都设 `mActive=False`,意思是**不覆盖场景默认设置**。美术在编辑器里调好的场景渲染参数会完整生效。 + +MEDIUM/LOW 档用 `mActive=True` + `mEnabled=True/False` **强制覆盖了场景级别的后处理配置**。 + +结论:**美术在编辑器里精心调好的场景渲染参数,只在 HIGH 档下能完整体现**。MEDIUM/LOW 的脚本会强制覆盖场景设置。 + +#### 5. 与张子涵 SVN 提交的叠加效应 + +张子涵在场景文件层面已经做了一轮降级(Bloom High→Low, TAA High→Low, SSAO UseFilter关闭, DOF Bokeh→Gaussian等)。程侃的脚本层画质分档系统在此基础上**再叠加动态控制**: + +- HIGH 档:场景文件已降级的设置生效(Bloom Low + TAA Low + ...) +- MEDIUM 档:SSR 强制关 + SSAO 强制开(覆盖场景设置)+ 0.7 分辨率 + Deferred 管线 +- LOW 档:在 MEDIUM 基础上再关 Bloom/DOF/TAA/SSAO/阴影 + 0.5 分辨率 + LOD+1 + +两层降级叠加后,移动端(MEDIUM/LOW)相比 PC 编辑器(HIGH + 原始场景设置)的差距非常显著。 + +#### 6. 时间线 + +``` +4/7 aa9e6b12 ─ 三档画质 + 低档关阴影 +4/8 8951e2e9 ─ pub_design 默认中画质 + 后处理细分 + 低档 0.5 分辨率 +4/8 da9a031b ─ LOD 偏移 + 三档幂等 +4/14 c2ccbeb8 ─ GM 重构(架构优化,逻辑等价) +``` + +与张子涵 SVN 优化(4/3 场景降级 → 4/7 LOD → 4/10 顶点压缩)同步推进,共同构成移动端性能优化的**场景层 + 脚本层**双重方案。 + +# 贴图压缩影响 +已完成全量分析并写入 # 贴图压缩影响 章节。核心发现: + - 1888 个贴图,4852 MB → 433 MB,整体压缩 91.1% + - 71% 文件压缩到原始 25% 以下 — 非常激进 + - 大量法线/ORM 贴图被替换为纯色占位图(12 MB → 3 KB),尤其是赵晴等 NPC 角色和多种场景资产,细节完全丢失 + - 按类别:NPC 角色压缩率最高(93.8%),动物最极端(95.3%) + - 单文件最大节省:T_OakTree_Bark_01_A.png,21.7 MB → 63 KB + - 提交标注为"测试贴图压缩",属实验性质 + +## 总览 + +| 指标 | 值 | +|---|---| +| 涉及文件数 | **1888** | +| 压缩前总大小 | **4,852.2 MB** | +| 压缩后总大小 | **433.3 MB** | +| 节省空间 | **4,418.8 MB** | +| 整体压缩率 | **91.1%**(压缩后仅为原始的 8.9%) | + +## 按资源类别统计 + +| 类别 | 文件数 | 压缩前 | 压缩后 | 节省 | 压缩率 | +|---|---|---|---|---|---| +| UE场景资产 | 895 | 2,384.8 MB | 181.4 MB | 2,203.3 MB | 92.4% | +| 场景 | 233 | 767.7 MB | 81.6 MB | 686.1 MB | 89.4% | +| NPC角色 | 63 | 540.5 MB | 33.8 MB | 506.7 MB | **93.8%** | +| 道具 | 317 | 389.7 MB | 57.3 MB | 332.4 MB | 85.3% | +| AIGC食材 | 51 | 238.0 MB | 23.6 MB | 214.4 MB | 90.1% | +| UI | 185 | 181.6 MB | 18.5 MB | 163.1 MB | 89.8% | +| 玩家角色 | 70 | 159.0 MB | 20.9 MB | 138.0 MB | 86.8% | +| UE角色资产 | 35 | 112.0 MB | 11.5 MB | 100.5 MB | 89.8% | +| 动物 | 19 | 69.5 MB | 3.3 MB | 66.3 MB | **95.3%** | +| 道具模型 | 9 | 7.7 MB | 1.2 MB | 6.5 MB | 83.9% | +| 特效 | 11 | 1.8 MB | 0.2 MB | 1.6 MB | 89.8% | + +## 按贴图类型统计 + +| 贴图类型 | 文件数 | 压缩前 | 压缩后 | 节省 | 压缩率 | +|---|---|---|---|---|---| +| Other(无明确后缀) | 727 | 1,803.7 MB | 125.4 MB | 1,678.3 MB | **93.0%** | +| BaseColor(_D/_B/_BaseColor) | 531 | 1,316.5 MB | 149.7 MB | 1,166.8 MB | 88.6% | +| Normal(_N/_Normal) | 298 | 1,202.9 MB | 115.9 MB | 1,086.9 MB | 90.4% | +| ORM(_ORM/_MRO/_Roughness) | 297 | 481.3 MB | 37.4 MB | 443.9 MB | 92.2% | +| Mask | 11 | 27.7 MB | 1.1 MB | 26.6 MB | **96.0%** | +| Emissive | 21 | 19.5 MB | 3.8 MB | 15.7 MB | 80.5% | +| HeightMap | 3 | 0.6 MB | 0.04 MB | 0.6 MB | 99.4% | + +## 按文件格式统计 + +| 格式 | 文件数 | 压缩前 | 压缩后 | 节省 | 压缩率 | +|---|---|---|---|---|---| +| .png | 1,770 | 3,853.0 MB | 358.6 MB | 3,494.4 MB | 90.7% | +| .tga | 117 | 998.7 MB | 74.7 MB | 924.0 MB | 92.5% | +| .jpg | 1 | 0.5 MB | 0.05 MB | 0.4 MB | 90.2% | + +## 压缩率分布 + +| 压缩后/原始 比例 | 文件数 | 占比 | 说明 | +|---|---|---|---| +| 0-25%(压缩超过 75%) | **1,341** | **71.0%** | 绝大多数文件压缩极度激进 | +| 25-50% | 495 | 26.2% | | +| 50-75% | 39 | 2.1% | | +| 75-90% | 0 | 0% | | +| 90-100%(几乎不变) | 12 | 0.6% | | +| >100%(变大) | 1 | 0.1% | T_NongChang_LandscapeWeight_001.png | + +**71% 的文件压缩到原始大小的 25% 以下**,说明大量贴图被降低分辨率或使用了更激进的压缩参数。 + +## 压缩最极端的文件(几乎归零) + +以下文件从数 MB 压缩到几百字节甚至不足 100 字节,说明被替换为**纯色/空白占位图**: + +| 原大小 | 新大小 | 比率 | 类别 | 文件 | +|---|---|---|---|---| +| 16.0 MB | 4 KB | 0.000x | 动物 | T_White.tga(×2) | +| 12.0 MB | 3 KB | 0.000x | NPC角色 | T_ZhaoQing 系列法线/ORM(10 个文件) | +| 12.0 MB | 3 KB | 0.000x | 道具 | T_PackagingMachine_01_N/ORM.tga, T_Barn_01_N.tga 等 | +| 12.6 MB | 3 KB | 0.000x | 动物 | T_SmallChicken_01_N.tga | +| 12.6 MB | 2.5 KB | 0.000x | UE场景资产 | T_Default_N.png | +| 10.8 MB | 1.1 KB | 0.000x | UE场景资产 | T_Cliff_Large_C/N/R.png | +| 7.2 MB | 0.7 KB | 0.000x | UE场景资产 | T_DirtTile_R.png | +| 5.0 MB | 1.1 KB | 0.000x | UI | T_concrete_BaseColor.png | +| 3.2 MB | 0.7 KB | 0.000x | UI | T_wallpaper_A_Normal.png(×2) | + +这些文件很可能是将**未使用或临时占位的大尺寸贴图**替换为 1×1 或极小分辨率的占位图。 + +## 节省空间最大的单文件 Top 20 + +| 节省 | 原大小 | 新大小 | 比率 | 类别 | 文件 | +|---|---|---|---|---|---| +| 21.6 MB | 21.7 MB | 63 KB | 0.003x | UE场景资产 | T_OakTree_Bark_01_A.png | +| 20.2 MB | 20.5 MB | 289 KB | 0.014x | 场景/UE资产 | T_RockClassic_BC_N.PNG / T_RockSpire_N.png(×4) | +| 19.8 MB | 19.9 MB | 103 KB | 0.005x | UE场景资产 | T_Grass1_BC_NeoX.png | +| 19.7 MB | 20.6 MB | 965 KB | 0.047x | UE场景资产 | T_OakTree_Bark_01_RMA.png(×2) | +| 19.6 MB | 20.0 MB | 361 KB | 0.018x | 场景 | T_BigTree1_D.png | +| 18.9 MB | 19.0 MB | 64 KB | 0.003x | UE场景资产 | T_AMStatue_ME_01_A.png | +| 18.9 MB | 19.9 MB | 1.0 MB | 0.051x | UE场景资产 | T_TableSet01_RMA.png | +| 18.8 MB | 19.1 MB | 333 KB | 0.017x | UE场景资产 | T_DirtTile_N.png | +| 18.4 MB | 18.5 MB | 101 KB | 0.005x | 场景/UE资产 | T_Grass1_BC.PNG/png(×3) | +| 18.4 MB | 19.8 MB | 1.4 MB | 0.072x | 场景 | Grass_Normal.png | +| 18.3 MB | 23.5 MB | 5.3 MB | 0.225x | UE场景资产 | T_TableSet01_BC.png | +| 17.5 MB | 18.3 MB | 788 KB | 0.043x | 场景 | T_WacomTablet_MRO.png | +| 16.9 MB | 17.9 MB | 936 KB | 0.052x | UE场景资产 | T_PineBark_02_N.png(×2) | + +## 涉及目录分布(Top 20) + +| 目录 | 文件数 | 类别 | +|---|---|---| +| StylizedProvencal/Textures | 54 | 场景植被/建筑贴图 | +| Indoor/Grocery/Textures | 48 | 室内杂货店贴图 | +| House/Textures | 42 | 房屋贴图 | +| Marketplace/StylizedProvencal | 41 | 同上(另一路径) | +| AIGC/Source/Ingredient/NoPlate | 28 | AIGC 生成的食材贴图 | +| NPC/ZhaoQing/textures | 28 | 赵晴 NPC 全套贴图 | +| AIGC/Source/Food | 25 | AIGC 生成的食物贴图 | +| Interact/Textures | 24 | 可交互物件贴图 | +| PlayerRoom/Textures | 24 | 玩家房间贴图 | +| FarmCrops/Textures | 24 | 农作物贴图 | +| DreamscapeMountains/Stones/Rocks | 24 | 山地石头贴图 | +| LiTieShan/Textures | 22 | 李铁山 NPC 贴图 | +| Trees/Textures (×2路径) | 21+21 | 树木贴图 | +| Buildings/Textures | 19 | 建筑贴图 | +| KEKOSTropicalBeach | 17 | 热带海滩贴图 | +| Rocks | 16 | 岩石贴图 | +| WuQiDian/Textures | 16 | 武器店 NPC 贴图 | +| MeadowEnvironment/Props | 15 | 草地环境道具贴图 | + +## 涉及的 NPC 角色 + +| NPC | 文件数 | 贴图类型 | +|---|---|---| +| 赵晴 (ZhaoQing) | 28 | 全套:法线、ORM、BaseColor(8套服装) | +| 李铁山 (LiTieShan) | 8 | 武器店系列贴图 | +| 梁秀兰 (LiangXiuLan) | 5 | Body/Cloth/Hair 材质 | +| 赵兰 (ZhaoLan) | 5 | Body/Cloth/Hair 材质 | +| 陈丽华 (ChenLiHua) | 4 | Body/Cloth/Hair/Item 材质 | +| 杜伦 (DuLun) | 6 | Body/Cloth/Hair (materials+textures 双目录) | +| 张海潮 (ZhangHaiChao) | 3 | Body/Cloth/Hair 材质 | +| 梁萌 (LiangMeng) | 3 | B/Normal/RM 贴图 | +| 草帽姐 (CaoMaoJie) | 5 | 帽子/兔子玩具/蟹笼等 | + +## 涉及的动物 + +| 动物 | 文件数 | +|---|---| +| 羊驼 (Alpaca + Alpaca_Small) | 4 | +| 小鸡 (Chick/Chicken/Chicken_01/Chicken_Old/Hen) | 10 | +| 狗 (Dog) | 2 | +| 其他(T_White.tga 等通用贴图) | 3 | + +## 分辨率变化(全量 1888 文件) +### 缩放倍数分布 + +| 缩小倍数 | 文件数 | 占比 | 像素缩减 | 说明 | +|---|---|---|---|---| +| **2x**(如 2048→1024) | **649** | **34.6%** | 75% | 最常见,相对温和 | +| **4x**(如 2048→512) | **428** | **22.8%** | 93.75% | | +| **8x**(如 2048→256) | 266 | 14.2% | 98.4% | | +| **16x**(如 2048→128, 512→32) | 232 | 12.4% | 99.6% | 激进 | +| **32x**(如 1024→32) | 147 | 7.8% | 99.9% | 极度激进 | +| **64x**(如 2048→32, 4096→64) | 149 | 7.9% | 99.98% | 几乎清零 | + +> 约 **28%(528 个文件)被缩小 16 倍以上**,即从常规贴图变成了极小图(32px-128px),基本等同于纯色占位。 + + +### 压缩后分辨率分布 + +| 新分辨率 | 文件数 | 占比 | 说明 | +|---|---|---|---| +| 256×256 | 417 | 22.1% | 最常见目标分辨率 | +| **32×32** | **387** | **20.5%** | **第二多 — 大量贴图被压到 32px** | +| 128×128 | 300 | 15.9% | | +| 512×512 | 295 | 15.6% | | +| 1024×1024 | 231 | 12.2% | | +| **64×64** | **172** | **9.1%** | | +| 2048×2048 | 34 | 1.8% | 仅 4096→2048 和少数不变 | +| 其他 | 52 | 2.8% | | + +> **20.5% 的文件(387 个)被压到 32×32**,加上 64×64(172 个),意味着**近 30% 的贴图在视觉上等同于纯色方块**。 + +### 极端案例 + +| 文件 | 旧分辨率 | 新分辨率 | 缩放 | 旧大小 | 新大小 | +|---|---|---|---|---|---| +| T_White.tga(×2) | 2048×2048 | 32×32 | 64x | 16.0 MB | 4 KB | +| 赵晴法线/ORM 系列(10 文件) | 2048×2048 | 32×32 | 64x | 12.0 MB | 3 KB | +| T_Default_N.png | 2048×2048 | 32×32 | 64x | 12.6 MB | 2.5 KB | +| T_Cliff_Large_C/N/R.png | 2048×2048 | 32×32 | 64x | 7-11 MB | 1-1.4 KB | +| T_OakTree_Bark_01_A.png | 4096×4096 | 64×64 | 64x | 21.7 MB | 63 KB | +| T_Grass1_BC.png(×3) | 4096×4096 | 64×64 | 64x | 18.5 MB | 103 KB | +| 8192×4096 地形贴图(×2) | 8192×4096 | 512×256 | 16x | — | — | + +## 关键结论 + +1. **压缩极度激进**:91.1% 的空间节省,71% 文件被压缩到原尺寸 25% 以下 +2. **99.4% 的文件被降低分辨率**:1876/1888 文件分辨率下降 +3. **近 30% 贴图等同纯色**:387 个文件被压到 32×32,172 个到 64×64,视觉上已无纹理细节 +4. **最常见的操作是缩小 2 倍(649 文件)和 4 倍(428 文件)**,但仍有 528 个文件被缩小 16 倍以上 +5. **大量贴图被替换为占位图**:数十个文件从 10+ MB 缩减为几 KB,尤其是法线贴图和 ORM 贴图 +3. **覆盖面极广**:NPC 角色(7+个)、动物、场景、UI、特效、AIGC 食材全部涉及 +4. **NPC 法线图清零风险最高**:赵晴等角色的法线/ORM 贴图从 12 MB 压到 3 KB,意味着角色表面细节(凹凸、金属度、粗糙度)完全丢失 +5. **场景大面积贴图(草地、树皮、岩石)压缩比也极高**:T_Grass1_BC 从 18.5 MB → 103 KB,T_OakTree_Bark 从 21.7 MB → 63 KB +6. **仅 1 个文件变大**:NongChang 地表权重图,属正常更新 +7. **此提交标注为"测试贴图压缩"**:说明是实验性质,但如果直接上线将严重影响画面质量 + +# 打包设置相关 +当前项目没有自定义的 build_settings.json(Cook_Content 目录下不存在),所以完全使用 default_pack_settings.json 的默认值: + + ┌─────────────┬───────────────┬────────────────────────┐ + │ 参数 │ 默认值 │ 含义 │ + ├─────────────┼───────────────┼────────────────────────┤ + │ ASTC 块大小 │ ASTC_RGBA_8x8 │ ~2 bpp,中等质量 │ + ├─────────────┼───────────────┼────────────────────────┤ + │ 编码质量 │ level: 0 │ fastest — 最低编码努力 │ + ├─────────────┼───────────────┼────────────────────────┤ + │ Mipmap │ false │ 不生成 │ + └─────────────┴───────────────┴────────────────────────┘ + + 实际执行的压缩命令等价于: +```bash + nximagep.exe astcenc -i -pfd ASTC_RGBA_8x8 -format ktx -level 0 + -filter bilinear -profile ldr_srgb -swizzle rgba -threads 0 -force -o +``` + + 注意:代码中 pfd 的 fallback 默认值写的是 ASTC_RGBA_4x4(builder.py:2099),但 JSON 配置文件明确写了 ASTC_RGBA_8x8,实际走的是 JSON 值。 + + ASTC 8x8 意味着什么 + + ┌────────┬──────────┬──────────┬──────────────────────┐ + │ 块大小 │ 比特率 │ 像素量比 │ 质量描述 │ + ├────────┼──────────┼──────────┼──────────────────────┤ + │ 4x4 │ 8.00 bpp │ 基准 │ 最高,接近原始 │ + ├────────┼──────────┼──────────┼──────────────────────┤ + │ 6x6 │ 3.56 bpp │ 44% │ 高质量 │ + ├────────┼──────────┼──────────┼──────────────────────┤ + │ 8x8 │ 2.00 bpp │ 25% │ 中等,细节有可见损失 │ + ├────────┼──────────┼──────────┼──────────────────────┤ + │ 10x10 │ 1.28 bpp │ 16% │ 低质量 │ + ├────────┼──────────┼──────────┼──────────────────────┤ + │ 12x12 │ 0.89 bpp │ 11% │ 最低 │ + └────────┴──────────┴──────────┴──────────────────────┘ + + 8x8 比 4x4 的数据量少 75%,对高频细节(法线贴图、文字纹理、渐变色)会出现可见的块状伪影。加上 level=0(最差编码搜索),实际质量比 8x8 + 理论上限还要差一些。 + + Mipmap 不开启 + + "mipmap": false — 构建管线不会生成 mipmap 链。 + + 这意味着: + - 如果源贴图本身带 mipmap(如 DDS 格式),ASTC 重编码后 mipmap 是否保留取决于 nximagep 工具的行为(可能丢失) + - 如果源贴图不带 mipmap(如 PNG/TGA),输出一定没有 mipmap + - 没有 mipmap 会导致:远处物体贴图闪烁(aliasing)、GPU 缓存命中率下降、带宽浪费 + +# 相关Commit +- SVN + - 张子涵 + - **r3164** (2026-04-03 11:16:25 +0800) — nongchang后处理设置优化分级 + - **r3165** (2026-04-03 11:17:21 +0800) — 全局阴影设置优化分级 + - **r3180** (2026-04-03 11:45:59 +0800) — (无提交信息) + - **r3248** (2026-04-03 16:50:52 +0800) — 游戏内所有场景都使用了移动端阴影和后处理设置 + - **r3261** (2026-04-03 17:34:03 +0800) — 场景阴影和后处理效果分级批量设置 + - **r3268** (2026-04-03 17:57:18 +0800) — 后处理和阴影设置上传 + - **r3440** (2026-04-07 17:39:33 +0800) — nongchang场景模型lod参数优化适配移动端 + - **r3598** (2026-04-08 14:58:05 +0800) — 调整weed的lod + - **r3978** (2026-04-10 11:11:47 +0800) — mesh顶点压缩后上传 + - 程侃 + - SVN + - **r3306** (2026-04-03 23:03:14 +0800) — refs #1363 全场景材质覆盖合批优化:fork gim 消除 CustomMaterialFiles 合批阻断,覆盖 38 个场景约 7200 个模型引用 + - **r3319** (2026-04-06 23:06:54 +0800) — refs #1363 【4月测试需求】程序-性能优化-测试贴图压缩 + - `/newdemo/farm/games/trunk/res/ue_export_common/CaravanSandwitch/MaterialLibrary/Common/` (M:12, 共 12 文件) + - `/newdemo/farm/games/trunk/res/ue_export_common/UnpackAessets/CaravanSandwitch/MaterialLibrary/Common/` (M:9, 共 9 文件) + - `/newdemo/farm/games/trunk/res/Character/NPC/LiTieShan/materials/` (M:8, 共 8 文件) + - `/newdemo/farm/games/trunk/res/Model/scene/Battery/Tex/` (M:6, 共 6 文件) + - `/newdemo/farm/games/trunk/res/ue_export_common/ProjectCoral/Art/Buildings/Ambient/BathHouse/HotSpring/Textures/` (M:6, 共 6 文件) + - `/newdemo/farm/games/trunk/res/ue_export_common/ProjectCoral/Art/Buildings/Ambient/SacredTree/SacredTreeLake/` (M:6, 共 6 文件) + - `/newdemo/farm/games/trunk/res/Character/NPC/LiangXiuLan/materials/` (M:5, 共 5 文件) + - `/newdemo/farm/games/trunk/res/Character/NPC/ZhaoLan/materials/` (M:5, 共 5 文件) + - `/newdemo/farm/games/trunk/res/ue_export_common/Materials/Scene/Landscape/Tex/` (M:5, 共 5 文件) + - `/newdemo/farm/games/trunk/res/ue_export_common/ProjectCoral/Art/Buildings/Ambient/Materials/` (M:5, 共 5 文件) + - `/newdemo/farm/games/trunk/res/Character/NPC/ChenLiHua/materials/` (M:4, 共 4 文件) + - `/newdemo/farm/games/trunk/res/effect/texture/mask/` (M:4, 共 4 文件) + - `/newdemo/farm/games/trunk/res/ue_export_common/BlazingHighlands/Environment/Village/Materials/` (M:4, 共 4 文件) + - `/newdemo/farm/games/trunk/res/ue_export_common/Characters/girl/Textures/V2/` (M:4, 共 4 文件) + - `/newdemo/farm/games/trunk/res/ue_export_common/Marketplace/BlazingHighlands/Environment/Village/Materials/` (M:4, 共 4 文件) + - `/newdemo/farm/games/trunk/res/ue_export_common/ProjectCoral/Art/Buildings/Ambient/SacredTree/` (M:4, 共 4 文件) + - `/newdemo/farm/games/trunk/res/Character/NPC/DuLun/materials/` (M:3, 共 3 文件) + - `/newdemo/farm/games/trunk/res/Character/NPC/ZhangHaiChao/materials/` (M:3, 共 3 文件) + - `/newdemo/farm/games/trunk/res/ue_export_common/ProjectCoral/Art/Buildings/Ambient/Carpenter/WoodStack/` (M:3, 共 3 文件) + - `/newdemo/farm/games/trunk/res/ue_export_common/ProjectCoral/Art/Buildings/Ambient/Coral_Inn/Textures/` (M:3, 共 3 文件) + - *(另有 60 文件变更在其他目录)* + - **r3417** (2026-04-07 16:56:50 +0800) — refs #1363 【4月测试需求】程序-性能优化-测试贴图压缩-回退ui + - Git + - `aa9e6b12` (2026-04-07) refs #1363 画质档位改为高中低三挡,低档关闭阴影 + - `client/consts/const_graphic.py` + - `client/debug/GMCommandHandle.py` + - `client/helper/SceneRenderHelper.py` + - `da9a031b` (2026-04-08) refs #1363 低画质LOD偏移+1,三档画质显式设置LOD配置保证幂等 + - `client/helper/SceneRenderHelper.py` + - `8951e2e9` (2026-04-08) refs #1363 pub_design包默认中画质,三档后处理细分(bloom/dof/taa),低档分辨率降至0.5 + - `client/demo.py` + - `client/helper/SceneRenderHelper.py` + - `c2ccbeb8` (2026-04-14) refs #0 画质控制GM重构:每个渲染功能独立开关+虚拟文件夹,保留原渲染指令 + - `client/debug/GMCommandHandle.py` + - `client/debug/gm_modules/GMGraphic.py` + - `client/debug/gm_modules/__init__.py` + - `client/helper/SceneRenderHelper.py` +# AI提示词 +## 张子涵 +## 程侃代码分析 +仔细分析./script/的git仓库中的以下提交会对渲染效果产生什么样的影响?并且告诉会为什么移动平台的渲染效果会比PC编辑器中差那么多?是不是有什么劣化逻辑导致移动端的渲染设置比PC低很多? +- `aa9e6b12` (2026-04-07) refs #1363 画质档位改为高中低三挡,低档关闭阴影 + - `client/consts/const_graphic.py` + - `client/debug/GMCommandHandle.py` + - `client/helper/SceneRenderHelper.py` +- `da9a031b` (2026-04-08) refs #1363 低画质LOD偏移+1,三档画质显式设置LOD配置保证幂等 + - `client/helper/SceneRenderHelper.py` +- `8951e2e9` (2026-04-08) refs #1363 pub_design包默认中画质,三档后处理细分(bloom/dof/taa),低档分辨率降至0.5 + - `client/demo.py` + - `client/helper/SceneRenderHelper.py` +- `c2ccbeb8` (2026-04-14) refs #0 画质控制GM重构:每个渲染功能独立开关+虚拟文件夹,保留原渲染指令 + - `client/debug/GMCommandHandle.py` + - `client/debug/gm_modules/GMGraphic.py` + - `client/debug/gm_modules/__init__.py` + - `client/helper/SceneRenderHelper.py` \ No newline at end of file