Как сделать PBR-текстурпак для Vibrant Visuals и шейдеров
PBR-текстурпак даёт блокам больше, чем цвета: насколько они блестят, какие части металлические, какие светятся и насколько рельефными они выглядят на свету. Vibrant Visuals в Minecraft Bedrock читает эти карты из наборов текстур, а в Java их читают PBR-шейдеры для Iris и OptiFine в формате labPBR. Texture Pack Maker делает и то и другое прямо в браузере из твоих текстур, с быстрыми материалами вроде металла, стекла и светящихся точек руды.
Что делают карты
Каждый пиксель текстуры получает несколько дополнительных чисел. Вкладка «Материал» называет их по тому, что ты видишь, а таблица показывает, куда каждое попадает в файлах:
| В редакторе | Что делает | Java (labPBR) | Bedrock (набор текстур) |
|---|---|---|---|
| Блеск | Гладкие поверхности дают чёткие блики и отражения, шершавые выглядят матовыми. | _s красный: гладкость | MER синий: шероховатость |
| Металл | Металл отражает небо своим цветом, как железо или золото. | _s зелёный: 230–255 | MER красный: металличность |
| Свечение | Излучает свет даже ночью, как светокамень или самоцветы в руде. | _s альфа: 0–254 | MER зелёный: свечение |
| Просвет | Сквозь тонкие части проходит свет, как сквозь листья. | _s синий: 65–255 | MERS альфа (только Vibrant Visuals) |
| Рельеф | Свет и тень показывают бугры и вмятины на плоской грани. | _n красный и зелёный, высота в альфе | Карта нормалей |
Без материала текстура выглядит как обычно. В Java цветная текстура остаётся на месте, а карты лежат рядом с ней.
Шаг за шагом
- Открой Texture Pack Maker и создай пак для Java или Bedrock или открой тот, что у тебя уже есть.
- Выбери текстуру блока или предмета, например алмазную руду, и открой вкладку «Материал» рядом с «Вид».
- Выбери быстрый материал, например Металл, Стекло или Светящиеся точки. Освещённый 3D-блок покажет его под движущимся солнцем.
- Настрой Блеск, Металл, Свечение и Просвет для всей текстуры или добавь часть (яркие по цвету, светлые или тёмные пиксели, нужные цвета или выделенную область) со своими значениями.
- Включи Рельеф из цветов и выбери силу, затем через Применить к похожим текстурам дай тот же материал всем рудам, доскам или брёвнам.
- Нажми Экспорт. Java получит
_n.pngи_s.pngрядом с каждой текстурой, Bedrock — наборы текстур и возможностьpbr.
Светящиеся точки руды и другие части
Часть даёт некоторым пикселям свои значения. Яркие по цвету пиксели находят самоцветы руды среди серого камня, Светлые пиксели — свет лампы, Пиксели нужных цветов — ровно те цвета, на которые ты нажмёшь, а Выделенная область — прямоугольник, нарисованный инструментом выделения. Маленькая картинка показывает, какие пиксели входят в часть.
Применить к похожим текстурам копирует материал на другие стороны того же блока и на каждую текстуру, название которой кончается или начинается тем же словом: все текстуры *_ore, все oak_* и так далее. Каждая сохраняет свои цвета, так что части и рельеф следуют её пикселям.
Java: карты labPBR для шейдеров
Своего PBR в Java нет: его рисует шейдерпак в Iris или OptiFine. Редактор записывает две карты labPBR рядом с каждой текстурой, например assets/minecraft/textures/block/stone_n.png и stone_s.png (до 1.13 — textures/blocks/), того же размера, что и экспортируемая текстура. Гладкость — перцептивная (1 минус шероховатость), неметаллы получают F0 около 4 %, а пиксель без свечения имеет альфу 255, чтобы картинки без альфы никогда не светились.
Включи шейдер, который читает карты labPBR; в его настройках это часто называется labPBR или поддержкой наборов ресурсов, а силу отражений и свечения выбирает сам шейдер. Шейдеры из конструктора шейдеров этого сайта пока не используют эти карты.
Bedrock: наборы текстур для Vibrant Visuals
Bedrock читает набор текстур рядом с цветной текстурой. Светящиеся точки и рельеф — это картинки:
{
"format_version": "1.16.100",
"minecraft:texture_set": {
"color": "diamond_ore",
"metalness_emissive_roughness": "diamond_ore_mer",
"normal": "diamond_ore_normal"
}
}Одному значению для всей текстуры картинка не нужна:
{
"format_version": "1.16.100",
"minecraft:texture_set": {
"color": "iron_block",
"metalness_emissive_roughness": [255, 0, 70]
}
}Просвет — четвёртый канал metalness_emissive_roughness_subsurface (формат 1.21.30, только Vibrant Visuals); он записывается в TGA, чтобы альфа осталась как есть. Набор текстур может ссылаться только на картинки из того же пака, поэтому редактор кладёт в пак и цветную текстуру, даже если ты её не рисовал. Пак объявляет возможность pbr, без которой Vibrant Visuals остаётся выключенным:
{
"format_version": 2,
"header": {
"min_engine_version": [1, 21, 120],
…
},
"modules": [ … ],
"capabilities": ["pbr"]
}У игры есть свои наборы текстур для большинства блоков. С Vibrant Visuals набор игры показал бы её цветную текстуру вместо твоей, поэтому каждая текстура, которую ты меняешь без материала, получает в паке копию набора из игры. Настройки Vibrant Visuals.
Открыть пак с PBR-картами
Открой пак для Java с картами labPBR или пак для Bedrock с наборами текстур, и их карты появятся на вкладке «Материал» своих текстур. Они экспортируются точно такими, какими были, пока ты не изменишь этот материал.
Частые вопросы
Нужна ли видеокарта RTX?
Нет. Vibrant Visuals работает на многих ПК, консолях и новых телефонах, а labPBR-шейдеры — на большинстве видеокарт, которые тянут шейдеры. Старый режим трассировки лучей в Bedrock читает те же наборы текстур, кроме материалов с просветом: они используют слой, который читает только Vibrant Visuals.
Почему мой пак в игре выглядит так же?
Bedrock: выбери в графическом режиме «Яркие виз. эффекты» (Vibrant Visuals) и поставь пак на самый верх глобальных ресурсов. Java: включи шейдер с поддержкой labPBR и проверь его настройку материалов или наборов ресурсов. Без этого Minecraft показывает только цвета.
Работают ли материалы на предметах и мобах?
Да, в Vibrant Visuals и в большинстве labPBR-шейдеров. Редактор всегда записывает карты нормалей, а не карты высот, потому что Vibrant Visuals не умеет применять карты высот к предметам.
Почему металл лучше ставить на 0 или 100?
Настоящие вещи либо металлические, либо нет, и labPBR, и Vibrant Visuals считают каждый пиксель чем-то одним. Промежуточные значения выглядят серыми и тусклыми. Чтобы камень блестел, подними блеск, а металл оставь на 0.