Add connected edge highlights and stable shadow projection for beta.129
Build Sanctuary / build (push) Canceled after 0s

This commit is contained in:
koka
2026-09-17 19:11:11 +02:00
parent 6502883cc4
commit 35103a7ea8
18 changed files with 754 additions and 64 deletions
+109
View File
@@ -0,0 +1,109 @@
# 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 16256 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 dassemblage 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.