6.3 KiB
SHADER-129 — arêtes connectées et portées étendues
Demandes du 17 septembre 2026 : highlight optionnel, puis raccordement CTM de
tous les blocs coplanaires, portée indépendante 16–256 blocs, ombres à 128/256,
suppression de l'atténuation au zénith et du réalignement cyclique des ombres.
Branche codex/edge-highlights-beta129, socle beta.128, Minecraft 26.3 / Java 25.
Résultat
Dans Options → Shaders → Sanctuary · Vanilla Light, les reflets sur les arêtes sont désactivés par défaut. L'intensité va de 0 à 100 ; la valeur 30 éclaircit au maximum de 12 %. Leur portée se règle indépendamment des ombres : 16, 32, 64, 128 ou 256 blocs. Les anciens réglages restent conservés.
Le highlight raccorde les surfaces plates, y compris entre matériaux différents, sans dessiner les jonctions intérieures. Il suit les contours visibles du relief, y compris les dalles et escaliers. Il multiplie la couleur existante pour garder les pixels des textures et composer avec les ombres. Ce CTM géométrique utilise la profondeur déjà produite par Minecraft : aucune liste de blocs autorisés, aucun pack CTM à fournir, aucune exploration CPU du volume de 256 blocs. Une cassure/repose modifie le contour dès que le terrain natif est réaffiché.
Le trait proche suit la grille de 1/16 de bloc. À distance, la couverture devient partielle pour limiter le scintillement des traits plus petits qu'un pixel. La portée choisie s'efface progressivement dans son dernier quart et respecte la brume ainsi que la distance de rendu. Une passe plein écran, quatre sondes de profondeur et un tampon uniforme de 176 octets ; aucun retour GPU vers CPU en production. L'arrêt de l'option ou une intensité nulle libèrent ce tampon.
Ce n'est pas un remplacement des textures par des variantes CTM. Le calcul concerne les faces visibles alignées sur la grille : les faces hors écran, les surfaces transparentes absentes de la profondeur et les géométries arbitrairement inclinées ne sont pas reconstruites. À très grande distance, les détails plus petits qu'un pixel peuvent rester imperceptibles. Aucun chargement de chunk forcé, aucune promesse de FPS.
Les ombres proposent les cinq mêmes portées. La carte reste plafonnée à 4096 × 4096 : les grandes distances réduisent sa précision spatiale. Le cache garde ses limites de 96 Mio, quatre sections et 3 ms souples de construction par image ; la réconciliation des chunks est limitée aux ticks et changements de caméra/terrain plutôt qu'à toutes les images.
L'intensité solaire reste pleine au zénith. Les contours opaques restent nets, le filtrage du feuillage et les ombres légères de la lune sont conservés. Le réalignement de la grille lumineuse a lieu au changement d'ancrage de la caméra, avec transfert de phase par texels entiers. La rotation du soleil ne réarrondit plus la projection de l'origine mondiale à chaque image, source de sauts périodiques amplifiés aux grandes coordonnées. Le soleil continue d'avancer ; une ombre pixélisée peut naturellement changer de case. Cette correction ne modifie pas l'horloge serveur ni sa cadence native.
Textes FR/EN. Aucun changement de règles, sauvegardes, génération, gemmes, sculptures ou découvertes.
Vérifications et livraison
Le client natif réussit en 2 min 41 s, dans un monde neuf plat, graine 122, sur macOS / Apple M1 / OpenGL :
- CTM : 596 échantillons éclaircis sur le contour et 65 068 conservés ; les 20 centres et 20 jonctions coplanaires ciblés restent intacts, y compris au changement de matériau. L'intensité 90 produit environ trois fois le gain.
- Ouverture d'un trou : 716 échantillons éclaircis ; la fermeture restitue l'image connectée. Au-delà de 16 blocs, le réglage 16 supprime le contour ; le réglage 64 le rétablit (254 échantillons éclaircis).
- Cinq portées CTM et cinq portées d'ombres, persistance/clamp, migration des anciennes préférences, arrêt/libération, rechargement, caméra et vue oblique avec ombres. Captures françaises/anglaises inspectées ; suppression ensuite d'un préfixe redondant dans le libellé de portée.
- Soleil, lune, nouvelle lune, ombres opaques nettes à midi et transmission du feuillage restent vérifiés. Casters hors écran et retrait/repose actifs.
- 2 000 petits pas solaires aux coordonnées ±100 000 vérifient l'absence de saut de translation de la carte ; changement d'ancrage par texels entiers. La séquence du vrai service realtime suit 294 images : angle avancé de 0,000694 radian, aucun rebond dans les 65 664 échantillons de sol suivis. Sur cette courte séquence, aucune case opaque n'a changé ; cela ne constitue pas une mesure de mouvement visible sur une journée entière.
La fixture initiale capturait parfois le terrain avant la fin de sa construction native : elle attend désormais la réception de toute la plateforme et la fin compilée des sections. Aucun changement de gameplay pour contourner ce problème.
Commande : ./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true -PsanctuaryPixelShadows122ClientTests=true -PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true. Log build/shader129-client.log, captures sous
mods/sanctuary/build/run/clientGameTest/screenshots/.
./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest
réussit en 2 min 17 s, 126 tâches. Une dernière passe d’assemblage intègre
la simplification du libellé de portée (2 min 18 s). Les archives sont vérifiées :
17 entrées de production diffèrent de beta.128, limitées au shader et à ses
interfaces. Même JAR dans normal/Test, sources archivées conformes, ressources
du template exactes, assets des gemmes inchangés. Aucun monde ni test embarqué.
Le serveur GameTest dédié
reste exclu conformément au refus antérieur de son EULA. Aucun monde personnel
utilisé pour les essais, aucun résultat Windows/Vulkan revendiqué.
Archives vérifiées dans build/ et recopiées dans le dossier de livraison
habituel sanctuary-beta/build/ :
- Normal : 10 353 946 octets, SHA-256
2c7735194faab8a699004e69ad543ce6e8fabdebe297b759bffd31fea2dcc2e8. - Test : 10 372 872 octets, SHA-256
cca572ee313d1d7e66ed745bb48bac62490998760d9b7bbfc7a1f6d60c430dce. - JAR Sanctuary :
ca3e2ff4e0717a3a54c1d57478d43aade39d001b71c4eec745d76f010f7def54.
Publication et synchronisation à consigner après leur exécution.