下载 App
终于把bug修好了,就是后效的原因
反馈单:帕鲁足球(TapTap 小游戏 app_id 916877)Android 真机排查记录
统一环境信息:OPPO PKC110 ·Android API 21 ·GLES 3.1 ·2376×1080(logic=792×360,dpr=3)·引擎资源版本 1.0.29 会话日志(2026-09-10 00:24)
(1) P0: 内 BloomHDR 系后效的 ES3.1 预编译变体 link 失败 → 真机 3D 全黑shadercache_essl.pak
现象:默认渲染路径尾部的 bloom 后效 quad 在移动 GLES 上 program link 失败,Viewport 渲出的 3D 全黑(UI 层正常),桌面端同工程完全正常。
证据(log1.log:460-461):
bgfx invalid shader => .../bgfx/src/renderer_gl.cpp:5084
glLinkProgram error:0:L0007 Fragment shader uses a varying vTexCoord that has not been declared in the vertex shader.
(第二条同位置报 )vScreenPos
定位:报错紧跟 (log1.log:444-451)之后;这些是 (20758 条目)命中的预编译 ES3.1 变体——顶点着色器与片元着色器的 varying 声明不配对,疑似 pak 打包时 VS/PS 变体组合错位。Loaded pixel shader BloomHDR(BRIGHT*/COMBINE* DISABLE_TONEMAPPINGS)/apk/UrhoXRes/shadercache_runtime/shadercache_essl.pak
游戏侧临时绕过(已上线):运行时克隆 ,按类型禁用全部后效 + 相关 SCENEPASS,双端拉平无后效管线。副作用:失去 sRGB 编码 pass,整体压暗 ~pow(2.2),只能用线性曝光补偿追平,无法还原明暗曲线。GetDefaultRenderPath()CMD_QUAD
请求:修复 中 BloomHDR(及同链 quad shader)的 ES3.1 变体并回归验证移动真机;修复后我们会回退绕过代码。shadercache_essl.pak
(2) P1:资产 uuid 含 / 时 Android 下载器必现 HTTP 404+/
现象:预加载组 8 个文件全部 404,加载步骤报 (不阻塞进游戏但弹错误)。Download failed: 8 file(s) (HTTP error 404)
证据(log1.log:180-200):失败 URL 全部含裸 ,如
、。uuid 为标准 base64(含 ),URL 未做 percent-encoding( 在 query 语义下被解析为空格),或 CDN 按 查找 miss。+assets/ofEzIqhG6nlmWSD4V+n2Rw-beb58c49.xmlassets/+rrgK8sG7Vz60OLtzbNN3g-7aa4df3c.xml+/+%2B
游戏侧临时绕过:重写受影响 15 个 的 uuid 为纯字母数字,真机验证 404 消失。.meta
请求(二选一或都做):下载器对 URL path 段做正确的 percent-encoding;构建/发布管线生成 uuid 时改用 base64url 或限定字母数字字符集。该问题对所有使用 Tripo 系资产(uuid 随机含 +)的项目都存在,非个案。
(3) P2: 在无切线 mesh 上移动 GLES 程序建立失败 → 模型静默不渲染Techniques/DiffNormal.xml
现象:Tripo 生成的 MDL(无切线/副切线)+ DiffNormal 材质,真机上模型完全不画(表现为“透明”),无任何指向材质/技术 的明确报错;桌面正常。
游戏侧临时绕过:移动端克隆材质换 (保留漫反射贴图,法线本就不存在)。Techniques/PBR/PBRDiff.xml
请求/建议:a) 无切线几何 + 法线映射 technique 时给出可定位的 WARNING(现在是静默 program 失败);b) 或引擎侧自动降级为无 normal 路径。另请确认 Tripo 导入管线为何不生成切线——若官方承诺 DiffNormal 需自备切线,文档层面注明即可。
(4) 建议类:renderpath 按命令索引裁剪缺乏稳定契约
现象:游戏侧做管线裁剪时,headless(77 条命令)与桌面运行时(78 条)命令表不一致,基于枚举/索引的过滤在多环境间反复被击穿;禁用某 pass 后其引用的 RT 断供,存活命令每帧刷 ERROR(非 setup 期一次性报错)。depth_bufferCould not find resource depth_buffer
请求/建议:官方若预期项目做 renderpath 裁剪,建议提供受支持的裁剪 API(按 pass 名禁用+自动依赖清理),或至少明确文档化“命令表随平台/构建差异”这一约束;RT 缺失引用建议在 SetViewport 时一次性校验报错,而非每帧刷。


