纹理图集
纹理图集(又称精灵表)是包含多个小型纹理的复合图像。使用图集能减少游戏加载的纹理数量,从而提升性能并降低触及纹理上限的风险。例如,地形纹理图集会将所有方块纹理整合为一张大纹理,而非单独加载每个方块纹理。
若图集包含过多子纹理,Minecraft会自动降低图集内纹理的分辨率直至全部容纳。
下图展示的是Minecraft根据Vanilla RP/textures/item_texture.json文件生成的物品纹理图集局部示例。完整图集还包含更多纹理,其中不乏自定义物品纹理!

填充间距
注意到书本纹理间的拉伸像素了吗?这被称为填充间距,能有效防止图形渲染异常!
图集列表
旗帜图集
atlas.banner
- 包含旗帜类纹理,包括旗帜图案和不祥旗帜纹理
- 该图集的纹理列表不可修改
物品图集
atlas.items
- 包含物品纹理,含装备槽占位符、镶饰盔甲和盾牌纹理
- 可通过
item_texture.json文件添加纹理
盾牌图集
atlas.shield
- 包含盾牌上的旗帜图案纹理
- 该图集的纹理列表不可修改
地形图集
atlas.terrain
- 包含方块纹理(含翻页动画效果的纹理)
- 默认启用mipmapping和填充间距
- 可通过
terrain_texture.json文件添加纹理
Mipmapping技术
Minecraft运用mipmap技术来降低远离摄像机时纹理的分辨率,既能减少远处纹理的锯齿现象,又能提升运行效率。
Mip层级
纹理图集的mip层级数由num_mip_levels参数决定。每个mip层级会使纹理分辨率减半。
默认情况下,atlas.terrain中的方块纹理设有4个mip层级:
{
"resource_pack_name": "vanilla",
"texture_name": "atlas.terrain",
"num_mip_levels": 4,
...
}以16×16纹理为例,将生成如下分级纹理:




效果对比


填充间距
填充间距是指纹理周围用于防止渲染不精确导致纹理相互渗透的拉伸区域。通过padding参数可调整填充宽度,其值必须满足
默认每个方块纹理有8纹理单元的填充:

纹理配置
通过短名称键值对定义纹理图集中的区域引用:
{
"texture_data": {
"wiki:texture_shortname": {
"additive": false, // 可选,默认为false
"textures": [
{
"path": "textures/path/to/texture",
"quad": false, // 可选,默认为false
"tint_color": "#ffffff", // 可选
"overlay_color": "#ffffff" // 可选
}
]
}
}
}路径参数
指向资源包根目录下文件的相对路径字符串(无需包含扩展名),支持格式:
.texture_set.json(需启用pbr功能).tga.png.jpg.jpeg
非正方形纹理会被拉伸为正方形,多帧纹理仅首帧会被载入图集。
染色效果
原版应用
原版使用tint_color为睡莲纹理施加绿色染色效果:


染色算法
(假设颜色通道值为0-1的浮点数)
- 纹理单元颜色通道(
, , )与染色颜色( , , )相乘 - 保留纹理单元的alpha通道(
)
叠加染色
类似tint_color但会丢弃纹理的alpha通道,转而用其值决定染色强度:
- 即使原纹理含透明度,结果也将完全不透明
- 对不透明纹理效果等同于
tint_color
原版应用
原版使用该技术仅染色草方块侧面的草皮部分,而保留泥土本色:



透明像素警告
多数图像编辑器不会保存alpha值为0的像素的RGB值。若需保留未染色区域,必须确保这些值被保存。GIMP中的设置方法:

叠加算法
(假设颜色通道值为0-1的浮点数)
- 纹理单元颜色通道与染色颜色相乘
- 根据(1 - alpha)值混合原始颜色
- 最终alpha强制为1
叠加模式
additive参数可将多个纹理叠加合成新纹理,透明像素会完全覆盖下层。overlay_color仅当置于首个纹理条目时生效,且会影响所有叠加层。
象限模式
quad参数决定是否仅显示纹理左上象限。该参数仅改变短名称对应的图集区域,完整纹理仍会被载入图集。除布尔值外,也可用数字表示(0为false,非0为true)。
附加参数
default_leather_color:十六进制字符串- 设置未染色皮革盔甲默认颜色
default_leather_horse_armor_color:十六进制字符串- 设置未染色皮革马铠默认颜色
{
"default_leather_color": "#ffffff",
"default_leather_horse_armor_color": "#ffffff"
}贡献者
编辑 纹理图集本页面上的文本和图像内容根据 知识共享署名 4.0 国际许可协议
本页中的代码示例根据 MIT 许可证
