Une texture normale n'a que de la couleur. Un ensemble de textures (texture set) ajoute des couches supplémentaires qui indiquent à Vibrant Visuals et au ray tracing comment la surface réagit à la lumière : est-ce du métal, est-ce que ça brille, est-ce rugueux ou poli, est-ce en relief ? On appelle ça le PBR (physically based rendering, rendu physiquement réaliste).
Sur cette page, tu vas faire briller le bloc de rubis comme une gemme polie, avec une douce lueur intérieure.
Les fichiers
L'ensemble de textures se place juste à côté de la texture qu'il améliore, avec le même nom :
RP/
textures/
blocks/
ruby_block.png
ruby_block.texture_set.json
ruby_block_mer.png
ruby_block_normal.pngContrairement aux autres pages de cette section, il n'y a rien à appliquer. Le jeu trouve ruby_block.texture_set.json parce qu'il est à côté de ruby_block.png, et l'utilise partout où cette texture apparaît.
Le fichier d'ensemble de textures
{
"format_version": "1.16.100",
"minecraft:texture_set": {
"color": "ruby_block",
"metalness_emissive_roughness": "ruby_block_mer",
"normal": "ruby_block_normal"
}
}Chaque couche est le nom d'une image du même dossier, sans l'extension du fichier.
Les couches
| Couche | Obligatoire | Ce qu'elle contient |
|---|---|---|
color | Oui | La texture normale : RGB, ou RGBA avec transparence. Le rendu classique n'utilise que celle-ci. |
metalness_emissive_roughness | Non | La carte MER. Trois canaux, voir plus bas. |
metalness_emissive_roughness_subsurface | Non | La carte MERS : MER plus un quatrième canal pour la diffusion sous la surface. À utiliser à la place de MER. |
normal | Non | Une normal map : simule de petites bosses et des creux avec des couleurs RGB. |
heightmap | Non | Une carte des reliefs en niveaux de gris : le blanc est haut, le noir est bas. Plus simple qu'une normal map. |
Tu peux utiliser normal ou heightmap, jamais les deux.
La carte MER
Une seule image, où chaque canal de couleur veut dire quelque chose de différent :
| Canal | Signifie | 0 (noir) | 255 (plein) |
|---|---|---|---|
| Rouge | Métallique | Pas du métal, comme la pierre ou le bois | Du métal brut, comme l'or |
| Vert | Émissif | Ne brille pas | Brille fort |
| Bleu | Rugosité | Lisse comme un miroir | Complètement rugueux et mat |
| Alpha (MERS seulement) | Diffusion sous la surface | La lumière reste en surface | La lumière traverse un peu, comme les feuilles ou la peau |
Pour le rubis : rouge proche de 0 (une gemme n'est pas du métal), vert autour de 40 pour une légère lueur, et bleu autour de 30 pour un éclat poli.
Dessine-la sur la même grille
Les images MER, normal et heightmap correspondent pixel pour pixel à la texture de couleur. Peins-les à la même taille (16x16 pour un bloc) pour que les parties brillantes et lumineuses tombent pile sur les couleurs.
Une seule valeur pour toute la texture
Si tout le bloc est fait du même matériau, passe-toi de l'image supplémentaire et écris les valeurs dans le JSON :
{
"format_version": "1.16.100",
"minecraft:texture_set": {
"color": "ruby_block",
"metalness_emissive_roughness": [0, 40, 30]
}
}Les nombres vont de 0 à 255. Tu peux aussi utiliser l'hexadécimal : "#00281E" pour le même MER. Une color uniforme prend quatre valeurs (rouge, vert, bleu, alpha), et une heightmap uniforme en prend une.
Les règles qui cassent un ensemble de textures
Si l'une de ces conditions est vraie, le jeu ignore l'ensemble de textures et écrit une erreur dans le journal de contenu :
- Il n'y a pas de couche
color. normaletheightmapsont toutes les deux définies.- Une couche pointe vers une image qui n'est pas dans le même pack de ressources.
- Une image n'a pas le bon nombre de canaux.
color, MER etnormalont besoin de 3 ou 4 canaux,heightmapen a besoin d'un seul.
Si une image du même nom existe en plusieurs formats, le jeu choisit d'abord .tga, puis .png, puis .jpg, puis .jpeg.
Les ensembles de textures de deux packs ne sont jamais fusionnés. Le pack placé plus haut dans la liste remplace tout l'ensemble.
Le jeu vanilla utilise MERS
Les blocs vanilla utilisent metalness_emissive_roughness_subsurface avec une format_version de 1.21.30, et des images .tga pour que le canal alpha contienne la diffusion sous la surface. Copie-en un depuis les bedrock samples pour voir un exemple qui marche.
Aucun changement en jeu ?
Les ensembles de textures ne s'affichent qu'avec Vibrant Visuals ou le ray tracing activé. Si le rendu reste plat, ajoute la bonne capacité dans le manifest.json de ton pack de ressources : "capabilities": ["pbr"] pour Vibrant Visuals, ou "raytraced" pour le ray tracing.