107 lines
6.1 KiB
Markdown
107 lines
6.1 KiB
Markdown
# SHADER-132 — diffusion locale SSGI expérimentale
|
||
|
||
Demande : légère teinte diffusée des surfaces voisines, sans reflets miroir
|
||
ni shader d'eau. Branche `codex/ssgi-beta132`, socle beta.131, Minecraft 26.3 /
|
||
Java 25. Aucun changement de génération, sauvegarde ou lumière serveur.
|
||
|
||
## Résultat
|
||
|
||
**Options → Shaders → SSGI · couleurs diffusées** active un rebond diffus
|
||
local. L'effet expérimental est initialement OFF, avec une intensité préparée
|
||
à **35 %** ; le curseur propose 0–100. À zéro ou OFF, ses cibles et uniformes
|
||
GPU sont libérés. Les autres effets et leurs préférences sont conservés.
|
||
|
||
La couleur d'une surface visible peut teinter les surfaces proches qui lui
|
||
font face. Le calcul porte à **2,5 blocs** du récepteur et s'estompe entre
|
||
24 et 32 blocs de la caméra. Il utilise une copie de la couleur native après
|
||
les ombres, avec la profondeur et des normales reconstruites. Le premier
|
||
obstacle arrête chaque rayon, même si son épaisseur empêche de retenir une
|
||
intersection. Les plans coplanaires ne s'éclairent pas eux-mêmes.
|
||
|
||
Douze directions hémisphériques fixes, au maximum dix étapes par rayon,
|
||
sont évaluées à demi-résolution en largeur et hauteur. La reconstruction
|
||
plein écran est guidée par la profondeur pour conserver les silhouettes et
|
||
les détails des textures. Le cœur des émissifs, le highlight et le bloom
|
||
sont composés ensuite : pas de halo réinjecté dans le rebond ni de boucle
|
||
de rétroaction d'une image sur l'autre. Aucune lecture GPU vers CPU ni
|
||
recherche de chunks en production. Pas de bruit temporel ou d'historique.
|
||
|
||
Deux cibles, RGBA8 plein écran et RGBA16 flottant à demi-résolution, soit
|
||
environ six octets par pixel de l'écran, plus 176 octets d'uniformes par
|
||
segment du tampon natif. Redimensionnement, arrêt, déconnexion et
|
||
rechargement libèrent/recréent les ressources possédées. Ce budget n'est
|
||
pas une garantie de FPS ; le SSGI coûte davantage qu'un simple réglage de
|
||
colorimétrie.
|
||
|
||
## Limites de cette version
|
||
|
||
L'estimation utilise seulement la couleur et la profondeur visibles. Les
|
||
blocs hors champ ou cachés n'apportent pas leur couleur. Le résultat peut
|
||
changer lorsqu'ils entrent ou sortent de l'image ; une atténuation près
|
||
des bords limite la coupure. Les surfaces transparentes absentes de la
|
||
profondeur ne sont pas reconstruites. Petits objets et intersections plus
|
||
minces que l'échantillonnage peuvent manquer. Il s'agit d'une approximation
|
||
diffuse locale, pas d'une simulation complète d'éclairage global ni de
|
||
reflets spéculaires. Aucune modification de l'eau et aucune source hors
|
||
champ déduite ou générée.
|
||
|
||
## Vérifications
|
||
|
||
Test ciblé natif réussi en **1 min** sur macOS / Apple M1 / OpenGL, nouveau
|
||
monde plat de graine 122. À intensité 90, les échantillons du sol blanc
|
||
montrent un gain rouge cumulé de 8 968 contre 20 bleu devant le mur rouge,
|
||
puis 9 168 bleu contre 23 rouge devant le mur bleu. Le sol seul est inchangé.
|
||
OFF/zéro restituent l'image de base et libèrent les cibles ; intensité 20
|
||
réduit le gain. Changer la couleur du mur complètement occulté laisse
|
||
l'image inchangée. Rechargement, caméra fixe, mouvement infinitésimal et
|
||
retour à la caméra d'origine passent, sans accumulation de couleur.
|
||
|
||
Deux ajustements de fixture ont précédé ce résultat : inclure dans les
|
||
mesures le blanc légèrement bleuté par l'éclairage natif, et formater les
|
||
petits angles de `/tp` en décimal car la commande refuse la notation
|
||
scientifique. Aucun comportement du jeu modifié pour ces corrections.
|
||
|
||
Log ciblé : `build/shader132-client-ssgi.log`. La suite complète réussit en
|
||
**4 min 18 s** et vérifie aussi une fenêtre 961 × 541, le retour à sa taille
|
||
initiale, le SSGI avec ombres/highlight/bloom/émissifs actifs, ainsi que
|
||
l'arrêt global du shader. Les captures françaises et anglaises passent.
|
||
Les contrôles précédents des cinq précisions, ombres, lune, feuillage, CTM,
|
||
bloom et émissifs restent réussis. Log : `build/shader132-client-full.log`.
|
||
|
||
Commandes : `./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true
|
||
-PsanctuaryPixelShadows122ClientTests=true -PsanctuaryClientNoVsync=true
|
||
-PsanctuaryQuickTests=true`. Pour le test ciblé, remplacer la propriété
|
||
PixelShadows par `-PsanctuarySsgi132ClientTests=true`.
|
||
|
||
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
|
||
réussit en **2 min 25 s**, 126 tâches. Les packs normal/Test contiennent le
|
||
même JAR ; sources archivées et template de ressources correspondent aux
|
||
sources. Comparaison avec beta.131 : **11 entrées de production** modifiées,
|
||
limitées au SSGI, à ses options et à ses points d'appel. Gameplay et textures
|
||
des gemmes inchangés, aucun monde ni test embarqué. Aucun résultat
|
||
Windows/Vulkan revendiqué.
|
||
Le serveur GameTest dédié reste exclu conformément au refus antérieur de
|
||
son EULA. Les captures panoramiques et les milieux de brume sous l'eau/lave
|
||
ou neige poudreuse suspendent cette passe, comme les autres effets de
|
||
profondeur Sanctuary.
|
||
|
||
## Livraison
|
||
|
||
- `Sanctuary-beta.132.mrpack` : 10394026 octets, SHA-256 `a7c0823e00f36925919645e32e7792242ec1d01015b41bee5b4f6285b9fc533d`.
|
||
- `Sanctuary-Test-beta.132.mrpack` : 10412949 octets, SHA-256 `9bc30a7d6d5834f9323f15f0c39d3f49d200e1a97d739266ab373c9e1ba4a8fd`.
|
||
|
||
JAR : `83eb2d091a7acd85eaa8b3b6a00a40ea483f9eeb2a30c033bdf68b4d717c5142`.
|
||
|
||
Archives vérifiées recopiées dans `sanctuary-beta/build/`. [Release beta.132](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.132)
|
||
publiée depuis `7e21781a9a08c669c7d6b65653bd9d408887689c`. Canal packwiz
|
||
`9edaaedc0205c525ecce9de66b5ca7827c56c28f` ; téléchargements publics vérifiés par SHA-256.
|
||
Deux synchronisations isolées, puis deux dans la même instance **Sanctuary Beta**,
|
||
réussissent. Un seul JAR beta.132 actif ; les **923 fichiers personnels suivis**,
|
||
dont sauvegardes et préférences de shaders, gardent leurs hashes. Sauvegarde
|
||
préalable `sanctuary-backups/before-beta.132/` ; aucun monde personnel ouvert.
|
||
Le checkout original conserve ses changements préexistants.
|
||
|
||
Reçus locaux ignorés : `build/shader132-artifact.json`,
|
||
`build/shader132-isolated.json`, `build/shader132-prism.json`,
|
||
`build/shader132-publication.log`.
|