107 lines
6.3 KiB
Markdown
107 lines
6.3 KiB
Markdown
# 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](https://git.botsu.net/koka/sanctuary-beta/releases/tag/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`.
|