
纹理缩放器
兼容低端显卡的高清纹理压缩优化模组。
Texture Scaler — 在低限制 GPU 上杜绝字体损坏和图集崩溃。
问题所在
某些 GPU 报告的最大纹理尺寸(GL_MAX_TEXTURE_SIZE)相对较小:AMD RX 580 和大多数 Intel 集成显卡报告为 16384,较老的集成显卡仅为 8192。当资源包或其他模组提供的方块或物品纹理为 1024–4096 px 时,Minecraft 的方块图集——即容纳所有方块纹理的单张图集——将无法拼接:
java.lang.RuntimeException: Requested atlas size 32768 exceeds maximum 16384
net.minecraft.client.renderer.texture.StitcherException
资源重载被中止。字体纹理(包括所有 CJK 字形)永远不会加载:所有文本渲染为空方块,游戏通常随后不久即崩溃。
本模组的作用
Texture Scaler 在启动时读取你的 GPU 限制,并在加载时通过运行时覆盖资源包,仅对会溢出图集的纹理进行降采样:
- 不会修改任何内容。 不编辑或替换任何模组 jar、资源包或磁盘文件。覆盖包位于所有其他包之上,仅为需要降采样的纹理提供降采样副本。
- 按比例降采样,保持宽高比,双线性过滤。
- 自动阈值:
cap = clamp(GL_MAX_TEXTURE_SIZE / 32, 256, 2048)—— NVIDIA(限制 32768)上为 1024,AMD RX 580 / Intel UHD(16384)上为 512,较老的集成显卡(8192)上为 256。可手动覆盖。 - 模型 UV 安全: 会检测通过绝对像素 UV(
texture_size)引用纹理的模型 JSON,并跳过这些纹理,因此不会出现渲染错位。 - 对启动友好: 结果按每次重载缓存在内存中,并缓存到磁盘(键 = 路径 + 原始尺寸 + 上限),带有持久化的尺寸清单和重载间的增量重新检查。即使在非常大的模组包上,典型开销也只有 2–3 秒。
要求
- Minecraft 1.20.1,Forge 47+
- Java 17
- 仅客户端。 在服务器上安装毫无作用——服务器不渲染纹理。
配置
config/texturescaler-client.toml:
| 选项 | 含义 |
|---|---|
enabled |
总开关(默认 true) |
capOverride |
以像素为单位强制设置像素上限;0 = 自动(默认) |
capDivisor / capMin / capMax |
自动公式的参数 |
diskCacheEnabled |
将降采样结果缓存到磁盘(默认 true) |
cacheDir |
缓存目录 |
skipNamespaces |
保持不变的命名空间(默认 ["minecraft", "texturescaler"]) |
extraTextureDirs |
为方块图集提供纹理的额外目录(例如 ["blocks"]) |
debugLog |
详细日志(默认 false) |
缓存位于 .minecraft/texturescaler/cache/。更新模组后,或者如果你怀疑某个条目已过期,只需删除该文件夹——它会在下次启动时自动重建(之后的首次启动会较慢)。
注意事项
- 本模组是为当前会失败的机器构建的。在限制较大的 GPU 上,自动上限为 1024,因此 2048/4096 px 的纹理仍会被降采样;如果你希望在此类设备上保持完整质量,请提高
capOverride(例如2048)或设置enabled = false。 - 如果你的日志中包含
StitcherException或Requested atlas size ... exceeds maximum,那正是本模组所修复的故障。 - 欢迎提交错误报告——请附上
latest.log和你的 GPU 型号。
许可证与源码
依据 Mozilla Public License 2.0 授权。源代码和问题追踪器:请参见本项目页面上的链接。
(AI 翻译)
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。