Files
sanctuary-beta/docs/shader-beta128.md
T
2026-09-17 18:34:55 +02:00

6.3 KiB

SHADER-128 — stabilité, lune et feuillage

Demandes du 17 septembre 2026 : réduire le jitter des bords et à midi, conserver des ombres de blocs nettes et un feuillage nuancé, ajouter une ombre lunaire fine et une transmission irrégulière du feuillage selon son épaisseur. Branche codex/moon-foliage-beta128, socle publié beta.127, Minecraft 26.3 / Java 25.

Résultat

Les faces de voxels reçoivent l'ombre sur une grille fixe ; leur plan est stabilisé au 1/16 de bloc et les faces inclinées conservent leur normale. La carte de profondeur utilise un ancrage par 16 blocs avec alignement de ses texels. Les ombres des blocs restent nettes : le créateur a écarté leur adoucissement après l'essai visuel. Le filtrage est réservé au feuillage. Le soleil continue de se déplacer : ce mouvement naturel peut toujours faire avancer une ombre d'une case. L'objectif est de supprimer les oscillations liées à la caméra, pas de figer le temps.

Entre une élévation solaire de 0,92 et le zénith, l'intensité diminue doucement jusqu'à 25 % de sa valeur habituelle : alpha maximal 0,095 au lieu de 0,38. La lune réutilise la même carte et son angle natif ; alpha maximal 0,10 selon sa phase, nul à la nouvelle lune. Horizon, pluie, portée et brume atténuent les deux lumières. Pas de seconde passe de carte lunaire simultanée.

Les blocs du tag vanilla leaves projettent une couverture probabiliste fixe sur une grille de quart de bloc. Les faces internes restent présentes : plus le rayon traverse de couches, moins il a de chances de passer. Il s'agit d'une approximation statistique de l'épaisseur, pas d'un comptage des feuilles ni d'une lecture des trous de leur texture. Quatre échantillons bilinéaires sur un quart de bloc mélangent cette couverture en nuances, évaluées sur la grille pixélisée. Un masque R8 distingue feuilles et blocs dans la même passe de profondeur, pour garder les silhouettes opaques nettes. Les comparaisons suivent le plan récepteur pour éviter l'auto-ombrage sur les surfaces obliques. Le motif ne dépend ni du temps ni de la caméra et ne demande aucune lecture GPU côté CPU en production. Les budgets du cache restent 96 Mio, quatre sections et 3 ms souples par image. Le feuillage ajoute des faces ; son filtrage utilise seize comparaisons de profondeur et, selon le cas, autant de lectures du masque. Les ombres opaques pleines utilisent le chemin court. Le masque prend 4 Mio à la définition par défaut, 16 Mio au maximum ; aucune promesse de FPS n'est faite.

Réglages existants et libellés FR/EN conservés/actualisés. Les ombres restent optionnelles et désactivées par défaut. Règles, éclairage de gameplay, mondes et génération inchangés. Les limitations de beta.127 concernant les entités, fluides, verre et autres formes non occultantes subsistent.

Vérifications

PixelShadows122ClientChecks, fixture historique étendue, réussit en 1 min 44 s dans un monde neuf plat, graine 122, client natif macOS/OpenGL.

  • Soleil : 920 échantillons de sol ombrés et 63 412 inchangés ; retrait/repose d'un pilier hors écran restitue puis rétablit son ombre.
  • Lune : ombre localisée mesurée ; arrêt des passes à la nouvelle lune.
  • Midi : ombre atténuée et zéro échantillon de transition adoucie sur 65 664 dans la scène de contrôle du contour opaque.
  • Caméra : petits déplacements autour de l'ancien ancrage entier et du nouvel ancrage par 16 blocs, retour au point initial, petites rotations en vue oblique, instants avant/après midi et passage de 5999 à 6001 ticks. Comparaisons d'images avec tolérance de trois niveaux par canal et moins de 1 % d'échantillons changés pour ces petits mouvements.
  • Vue oblique : 19 637 échantillons ombrés, 46 027 inchangés sur le sol blanc.
  • Feuillage : assombrissement moyen mesuré d'environ 18,6 % pour une couche, 31,7 % pour quatre, contre 36,8 % sous une couverture solide. Motif fixe dans le temps ; modification des couches invalide le cache actif.
  • Trois finesses/trois portées, désactivation/libération GPU, préférences persistantes, rechargement des ressources, textes FR/EN et captures inspectés.

Commande native : ./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true -PsanctuaryPixelShadows122ClientTests=true -PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true sous Java 25. Logs : build/shader128-client.log ; captures sous mods/sanctuary/build/run/clientGameTest/screenshots/.

./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest réussit en 2 min 24 s, 126 tâches. Les sources archivées correspondent au ticket. 13 entrées de production diffèrent de beta.127, limitées aux classes du shader, GLSL et libellés FR/EN. Gemmes, sculptures, découvertes, données et règles de jeu restent identiques. Normal et Test embarquent le même JAR ; le template correspond exactement aux ressources exportables. Aucun monde ni fixture de test embarqué. Le serveur GameTest dédié reste exclu conformément au refus antérieur de son EULA. Aucun monde personnel utilisé. Aucun essai Windows/Vulkan revendiqué.

Artefacts vérifiés

Artefact SHA-256
Sanctuary-beta.128.mrpack 84125b18366afde52c8cba4bc7007257b1c3d8b79d413338abe64d0e0ae8feaf
Sanctuary-Test-beta.128.mrpack 6bfb10d8d63875bfb84e813d4f0a9faf5db30902cc0400deda0993c08b86e597
sanctuary-beta.128.jar c54cbae7efaa7059c8fd4d28801087983379958fe34eedff51682d106d649c6a

Publication et synchronisation

Release beta.128 publiée depuis a4e96c0d99c976231d7ca92b1db6bdb6aa7083c6 ; les artefacts immuables ont été retéléchargés et vérifiés. Canal packwiz : eba01726ee132a6e548d129fa7ee04f24c880917. Deux synchronisations isolées puis deux dans l'instance existante Sanctuary Beta ont réussi. Les 923 fichiers personnels suivis, y compris les réglages de shaders, sont conservés. Aucun monde personnel ouvert ; copie préalable dans sanctuary-backups/before-beta.128/. Packs normal/Test et template copiés et vérifiés dans sanctuary-beta/build/.

Reçus locaux : build/shader128-artifact.json, build/shader128-isolated.json, build/shader128-prism.json ; journal : build/shader128-publication.log.