Partager via


Introduction aux jeux de textures

Minecraft prend en charge un pipeline de rendu physique (PBR) (par exemple, utilisé pour le Ray Tracing). Il utilise d’autres données de texture, en plus de la «couleur», ce qui permet des visuels plus riches et plus réalistes. En utilisant le PBR, vous pouvez avoir des couches pour les différentes réflexions spéculaires, l’émissivité, les cartes normales, et plus encore, ce qui va au-delà du pipeline de couleur classique pour Vanilla Minecraft. Les ensembles de textures ont été ajoutés comme une fonctionnalité permettant de définir plusieurs couches PBR pour une ressource de texture. Les jeux de textures sont gérés par des fichiers json.

Calques

Un fichier texture_set.json peut spécifier plusieurs calques. Les calques sont des références à des ressources d’images de texture. Ils peuvent également être définis en JSON comme des valeurs pour des valeurs solides uniformes comme alternative à la référence à des images de texture dans un pack.

Couleur

  • Il s’agit d’une image RVB à 3 canaux (alpha uniforme de 1.0 par défaut), d’une image RGBA à 4canaux ou d’un tableau de 4 valeurs pour une couleur uniforme avec alpha.
  • C’est la seule couche requise.
  • C’est le seul calque utilisé par le pipeline Classique.
  • Il y a généralement un éclairage intégré dans l’image couleur.

Normal

  • Il s’agit d’une image de carte normale à 3canaux (ou à 4canaux quand le 4e canal est ignoré).
  • Ce calque et le calque heightmap ne doivent pas être définis en même temps dans un seul jeu de textures.

Carte de hauteur

  • Image de calque à 1 canal ou une valeur unique dans le fichier JSON pour une carte de hauteur uniforme.
  • Ce calque et le calque normal ne doivent pas être définis en même temps dans un seul jeu de textures.

Metalness_emissive_roughness

  • Il s’agit d’une image à 3canaux (ou à 4canaux où le 4e canal est ignoré) ou d’un tableau à 3valeurs pour une valeur MER uniforme.
  • Les images RVB associent le rouge à la métallisation, le vert à l’émissivité et le bleu à la rugosité.

Spécification de valeurs uniformes

Au lieu de référencer une image de texture pour un calque Texture Set, les valeurs peuvent être spécifiées dans le fichier *texture_set.json, ce qui équivaut effectivement à référencer une image de texture remplie uniformément avec cette valeur ou ces valeurs pour les canaux respectifs.

Les valeurs dans le fichier json peuvent être spécifiées dans l’un des formats suivants:

  • Plage numérique de 0 à 255, ou comme un vecteur de tels entiers pour un calque multicanal.
  • Hexadécimal RGB ou ARGB pour 3 ou 4 canaux, ou comme 2 chiffres hexadécimaux pour un calque monocanal.

Exemples de fichiers *.texture_set.json

Notes

Les valeurs des calques d’un fichier JSON Texture Set peuvent inclure un mélange de références à des textures d’images, de valeurs hexadécimales et numériques.

{
  "format_version": "1.16.100",
  "minecraft:texture_set": {
    "color": [ 180, 140, 190, 255 ],
    "metalness_emissive_roughness": "#FBA34C",
    "normal": "grass_carried_normal"
  }
}

Cet exemple utilise des images référencées qui existent dans le même dossier. Il utilise une carte normale et une carte MER.

{
  "format_version": "1.16.100",
  "minecraft:texture_set": {
    "color": "grass_carried",
    "metalness_emissive_roughness": "grass_carried_mer",
    "heightmap": "grass_carried_heightmap"
  }
}

Vous pouvez également spécifier les valeurs des textures en utilisant des valeurs numériques ou hexadécimales.

{
  "format_version": "1.16.100",
  "minecraft:texture_set": {
    "color": [ 180, 135, 190, 170 ],
    "metalness_emissive_roughness": [ 130, 135, 140 ]
  }
}

Invalid *.texture_set.json

Si un jeu de textures n’est pas valide, le message CONTENT_ERROR est enregistré et le jeu de textures n’est pas utilisé. Un jeu de textures n’est pas valide si:

  • Les données JSON ne peuvent pas être analysées, ou ne correspondent pas au schéma du jeu de textures.
  • Le calque de couleur n’est pas spécifié. Il faut avoir un calque de couleur dans le fichier .texture_set.json.
  • Les calques Heightmap et Normal sont tous deux définis.
  • Une texture référencée n’existe pas dans le même pack de ressources ou la texture référencée ne peut pas être analysée.
  • Un calque est défini avec un nombre inattendu de canaux:
    • Dans le cas de calques spécifiés avec des images référencées: Color, MER et Normal prennent en charge les images à 3 ou 4 canaux ; heightmap ne prend en charge que les images à un seul canal.
    • Dans le cas de calques spécifiés avec des valeurs numériques ou hexadécimales: Color prend en charge les valeurs à 4 canaux, MER prend en charge les valeurs à 3 canaux,

Comportement de la pile de ressources

  • Les définitions d’ensembles de textures ne peuvent référencer que les images qui existent dans le même pack de ressources que la définition.
  • Les images de texture dans les packs de ressources de priorité supérieure ne remplacent pas la référence d’un jeu de textures à une texture dans son propre pack.
  • Dans la pile de packs de ressources, les définitions de jeux de textures pour la même ressource de texture ne sont pas fusionnées. La définition du jeu de textures du pack ayant la priorité la plus élevée remplacera celle du pack ayant la priorité la plus faible.

Référencement des ressources de texture

Si vous avez des références d’images en double, la priorité des extensions de fichier est la suivante: .tga > .png > .jpg > .jpeg.

Par exemple: si grass.png et grass.tga existent tous deux dans le dossier, grass.tga est choisi. Ceci s’applique également à d’autres fichiers gérés par des données, comme actor json référençant une ressource de texture.

Schéma Json du jeu de textures

{
  version "format_version"
  object "minecraft:texture_set"
  {
      color "color" : opt // Fill RGBA channels of a textureset layer with the specified values in an array or hex string
      string "color" : opt // The texture name of a textureset layer
      string "normal" : opt // The texture name of a textureset layer
      string "heightmap" : opt // The texture name of a textureset layer
      color "metalness_emissive_roughness" : opt // Fill RGB channels of a textureset layer with the specified values in an array or hex string
      string "metalness_emissive_roughness" : opt // The texture name of a textureset layer
  }
}