Sample texture grain for sculptures and preserve worn models (beta.117)
Build Sanctuary / build (push) Canceled after 0s

This commit is contained in:
koka
2026-09-17 12:18:10 +02:00
parent 5c666a4ebc
commit 0f1efdec83
13 changed files with 303 additions and 33 deletions
+96
View File
@@ -0,0 +1,96 @@
# beta.117 — Grain des textures et sculptures en chapeau
Ticket sur `codex/sculpture-texture-grain-beta117`, Minecraft 26.3.
En beta.116, une couleur du modèle source était associée à une seule nuance
de matière. Un modèle uni restait donc uni malgré les pixels différents de la
texture. La sélection utilise maintenant les textures des faces du modèle de
bloc, avec leurs propres teintes du pack actif. Un échantillonnage de pixels
répartit leurs couleurs exactes dans les voxels, sans couleur interpolée.
## Coût et comportement
Au maximum 32 matériaux de faces et 16 × 16 échantillons par matériau sont lus,
puis ramenés à la palette existante de 256 entrées. Les répétitions conservent
la fréquence des nuances. Les pixels transparents sont écartés ; les textures
animées utilisent la première image. Les blocs sans texture lisible gardent
le repli antérieur sur la texture représentative, puis la couleur de carte.
La sélection d'une nuance utilise un mélange entier déterministe des coordonnées
de chaque voxel. Un modèle uni utilise toute la palette ; un modèle ombré
utilise des plages de nuances qui suivent ses zones claires et sombres.
Ce grain est un transfert de palette, pas une projection UV conservant les
motifs ou les veinures du bloc. Les voxels restent opaques.
Le calcul utilise Java standard et les modèles/textures déjà chargés par
Minecraft, sans bibliothèque supplémentaire. Aucun calcul de matière dans
le rendu par image. Le client ne rééchantillonne qu'au changement de matière
ou de ressources ; une rotation réutilise la palette. Le serveur conserve
le modèle recoloré pour les fabrications suivantes avec la même sélection.
## Chapeaux et données
Le système de blocs portés retirait `BLOCK_ENTITY_DATA` des objets pour isoler
les inventaires des coffres et fourneaux. Sur une sculpture, ce composant est
la géométrie elle-même : le slot contenait encore un objet, devenu invisible.
Les sculptures conservent désormais ce composant à l'équipement et au retrait.
Si une ancienne sculpture équipée a perdu ce composant, mais que sa session
de chapeau possède encore le modèle, il est restauré depuis cette donnée
serveur. La restauration ne fabrique aucune géométrie manquante. Les objets
déjà retirés et dépourvus de toute copie du modèle ne sont pas reconstructibles
par ce correctif. Les règles de contenu des coffres restent inchangées.
Identifiants, schéma 1 des sculptures, structure des accessoires et paquet
de sélection inchangés. Les couleurs déjà sauvegardées restent intactes.
Les deux côtés utilisent beta.117 pour le même calcul de prévisualisation et
de fabrication. Aucun monde personnel ouvert ni migration de sauvegarde.
## Vérifications
Le scénario client natif complet passe en 2 min 1 s sur macOS avec serveur
intégré, monde plat jetable de graine 116. Il reprend le scénario beta.116
avec un GLB entièrement uni, plus les régressions de l'atelier 106/111/112/113 :
- 1 207 objets-blocs échantillonnés, huit fabrications payées avec aperçu
identique au résultat serveur, consommation exacte d'un bloc.
- Répartition 25 % / 75 % de deux couleurs de texture sur un modèle uni,
aucune couleur inventée, conservation des zones claires et sombres.
- Couleurs réellement présentes dans les textures natives des faces, avec
plusieurs matériaux d'une bûche ; grain présent sur pierre, bois et minerai.
- Motif indépendant de l'ordre des voxels, stable et sauvegardé ; rechargement
des ressources, palette bornée, inventaire plein et sélections périmées.
- Vrais clics des slots hotbar/chapeau, conservation exacte des composants
et du nom personnalisé, icône et modèle porté visibles, retrait/rééquipement.
- Restauration d'un objet privé de sa géométrie depuis une ancienne session
équipée, puis sauvegarde et reconnexion du client avec le chapeau intact.
- Pose, bord visé, orientation, casse/repose, reconnexion sans fichier source,
menus FR/EN et génération du plan du Métabli inchangés.
Mesure indicative après échauffement, modèle maximal de 4 096 voxels,
101 applications sur le Mac de développement : médiane **0,283 ms**, p95
**0,971 ms**. Ce n'est pas une garantie de temps sur d'autres machines ; le
calcul n'est exécuté ni chaque image ni à chaque objet fabriqué identique.
Marqueurs `SCULPTURE117_GRAIN_PASS`, `SCULPTURE117_HAT_PASS`,
`SCULPTURE117_HAT_RECONNECT_PASS`, `SCULPTURE116_PASS` dans
`build/sculpture117-final-client.log`. Captures relues dans
`build/sculpture117-evidence/`. Pas d'essai Windows ou LAN. Le GameTest dédié
reste exclu selon le refus antérieur de son EULA.
`check build assemblePack assembleTestPack -x :sanctuary:runGameTest` réussit
en **3 min 7 s**, 125 tâches dont 105 exécutées. JAR sources concordants,
versions, contenu et intégrité des deux archives vérifiés. La comparaison
avec beta.116 limite les changements de production au calcul des matières,
à son cache dans le menu et au traitement des sculptures en chapeau.
Les modèles de test et classes de GameTest sont absents de la livraison.
- `Sanctuary-beta.117.mrpack` : 10191137 octets, SHA-256
`adbe5a40bbd050ebc84ff8aca61a7a3643dcf25ec8f2ac59b91561e48275cbbb`.
- `Sanctuary-Test-beta.117.mrpack` : 10210059 octets, SHA-256
`0dacb12b30bde66c647871101a4f4c6b0b58e7ceb29f7743398f8a569b958a6e`.
- JAR Sanctuary :
`1ce63f97f17c6098f3c86c6753f9b912bce39d88e05ba240423c38bdc97307ee`.
Reçu : `build/sculpture117-artifact.json`. Publication et synchronisation
finales en cours.