一键导入
minemap-compressed-texture-runtime
MineMap 压缩纹理运行时排查。适用于 KTX2、Basis、CRN、DDS/DXT、压缩纹理 mip 层级、WebGL1/WebGL2 纹理兼容、摩尔纹、黑纹理、TextureLoader 压缩资源,以及 S3M/glTF 压缩纹理问题定位。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
MineMap 压缩纹理运行时排查。适用于 KTX2、Basis、CRN、DDS/DXT、压缩纹理 mip 层级、WebGL1/WebGL2 纹理兼容、摩尔纹、黑纹理、TextureLoader 压缩资源,以及 S3M/glTF 压缩纹理问题定位。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
MineMap 3D 公告板(Billboard)专题。覆盖 BillboardMaterial / BillboardGeometry / BillboardInstance 动画、拾取高亮、动态纹理更新与轨迹对象联动;不与 DOM 覆盖物 Marker 混淆。
MineMap 云与大气渲染链。用于启用体积云(多层 CloudLayer)、单片实例化云(map.cloudCollection)、大气散射与太阳 / 天空辐照度,重点说明主分支公开参数与禁用字段。
MineMap 事件订阅模型、图层事件代理、once/off 管理、矢量与三维对象拾取。
MineMap 热力图(heatmap)专题。用于二维 / 三维热力图、贴地热力、聚合权重、热力色阶与 3D 显示模式,重点说明 paint/layout 参数边界与典型失败场景。
MineMap KML 数据源。用于加载 KML / KMZ 文件,解析 LineStyle / IconStyle / LabelStyle / PolyStyle 等样式继承,并把 KML 属性映射为 line / circle / fill / symbol 派生图层。
MineMap 材质与着色规范。覆盖 `StandardMaterial`、`PhongMaterial`、`PhysicalMaterial`、`LambertMaterial`、`PolylineMaterial` 等主流材质的选型与调参。
| name | minemap-compressed-texture-runtime |
| description | MineMap 压缩纹理运行时排查。适用于 KTX2、Basis、CRN、DDS/DXT、压缩纹理 mip 层级、WebGL1/WebGL2 纹理兼容、摩尔纹、黑纹理、TextureLoader 压缩资源,以及 S3M/glTF 压缩纹理问题定位。 |
压缩纹理通常由加载器创建,业务代码不应把它当普通图片手动拼装。排查渲染异常时,先看纹理来源和运行路径,再改材质:
const texture = minemap.TextureLoader.load({
url: "./assets/model-texture.ktx2"
});
如果模型出现远处摩尔纹、黑纹理、只显示 level 0 清晰度等问题,优先确认压缩纹理是否带完整 mip 链,以及是否触发 WebGL1 的 NPOT 限制。
当前压缩纹理路径主要落在:
source/webgl/context/CompressedTexture.jssource/third-party/loaders.gl/textures/src/lib/parsers/parse-basis.jssource/third-party/loaders.gl/gltf/src/lib/parsers/parse-gltf.jssource/third-party/s3m/S3MParser/S3ModelParser.jssource/third-party/s3m/S3MTiles/Core/CRNTranscoder.js不要把 KTX2/Basis/CRN 当成 PNG/JPEG。它们携带 GPU 格式、mip 层级和转码约束。
近期源码专门处理 KTX2 多级解析,用来降低摩尔纹并避免非法 mip 上传。
CompressedTexture 的关键规则是:
1x1,保留压缩 mip 链。这样可以避免不完整压缩 mip 链在采样时导致黑纹理或 INVALID_VALUE 上传错误。
WebGL1 对 NPOT 纹理更严格。非二次幂纹理如果还要求 mipmap filter,需要:
wrapS 与 wrapT 降为 CLAMP_TO_EDGELINEAR 或 NEARESTlevels 设为 1只在 WebGL1 复现的问题,先查 NPOT 尺寸和 sampler filter,不要直接归因到材质 shader。
S3M 的 CRN 解码使用 CRNTranscoder,并依赖 WASM 资源。修改 S3M 材质代码前,先确认:
window.minemapCDN 指向包含 CRN 转码资源的 CDN。S3MTilesLayer.update(...) 已经通过 CRNTranscoder.wasmReady 门控。S3M parser 会把 DXT、WebP、CRN、KTX2、CRN_DXT5 等压缩类型映射到内部像素格式。这个映射应留在 parser 层,不要在业务代码里复制一套。
摩尔纹:
CompressedTexture._analyzeProvidedMipChain(...) 是否会接受该链。黑纹理:
compressedTexImage2D / compressedTexSubImage2D 附近 WebGL 错误。模糊:
useMipmap、levels、minFilter 和纹理尺寸。source/webgl/context/CompressedTexture.jssource/third-party/loaders.gl/textures/src/lib/parsers/parse-basis.jssource/third-party/loaders.gl/textures/dist/basis-worker.jssource/third-party/loaders.gl/gltf/src/lib/parsers/parse-gltf.jssource/third-party/s3m/S3MTiles/Core/CRNTranscoder.jssource/third-party/s3m/S3MParser/S3ModelParser.jsminemap-material-system-and-shadingminemap-performance-and-backendminemap-s3m-tilesminemap-model-runtime-debug