Files
sanctuary-beta/docs/shader-beta134.md
T
koka b7cf4bc294
Build Sanctuary / build (push) Canceled after 0s
docs: record beta.134 release and Prism synchronization
2026-09-17 22:56:48 +02:00

6.4 KiB
Raw Permalink Blame History

SHADER-134 — PBR procédural optionnel et herbe SSGI

Demande : ajouter en option des normales calculées à partir des textures actives, avec rugosité des matériaux et reflets orientés. Retour : le SSGI renforcé éclaire artificiellement l'intérieur de l'herbe ; vérifier et corriger ce cas. Branche codex/pbr-beta134, socle beta.133, Minecraft 26.3 / Java 25.

Contrat

PBR initialement OFF, intensité 50 réglable 0100. Cartes de normales à partir des différences de luminance, amplitude limitée ; rugosité/métallicité par famille de blocs, repli rugueux pour les types inconnus. Analyse des ressources actives conservée en cache jusqu'à désactivation ou rechargement ; pas de fichiers écrits dans le pack personnel, pas de GPU readback en production.

Portée 32 blocs, sections visibles construites progressivement. Budget de maillage 24 Mio, atlas de 4 096 matériaux en 16 × 16 avec bordures (1 280 × 1 280 RGBA8, 6,25 Mio), copie RGBA8 de l'image courante et uniformes. Les textures de plus haute résolution sont échantillonnées à 16 × 16 ; première image des textures animées. La couleur et l'animation restent celles de l'atlas natif. Pas de parallax ni de géométrie ajoutée aux blocs ; les motifs clairs peuvent donner un faux relief.

La passe utilise une réponse spéculaire GGX (normales, rugosité, métallicité, Fresnel) et module l'éclairage diffus déjà rendu. Elle ne remplace pas tout le pipeline Minecraft par un moteur PBR physique. Soleil/lune, exposition au ciel et carte d'ombres active limitent les reflets ; pas de reflets miroir, d'environnement SSR, ni de direction locale déduite pour chaque torche. Aucun rendu PBR d'eau, d'entités, d'items ou de modèles spéciaux hors maillage de terrain.

SSGI

Les normales des faces presque axiales sont stabilisées sur leur axe. Deux passes spatiales filtrent la lumière indirecte à demi-résolution, avec rejet des voisins hors du plan du récepteur et interpolation de l'échantillonnage. Les textures de l'image restent nettes. Un tampon RGBA16F supplémentaire à demi-résolution porte le budget des cibles SSGI à environ 8 octets par pixel plein écran (contre 6). Pas d'historique temporel ni de rémanence ajoutés.

Un parcours de 12 blocs a reproduit des bandes sur un mur et un éclaircissement artificiel d'herbe à 35 et 100. Le filtrage seul ne suffisait pas : la collecte réinjectait aussi trop fortement la lumière ambiante neutre. Elle conserve maintenant la composante chromatique de la source, en soustrayant son canal linéaire minimum. L'éclairage ambiant neutre reste celui de Minecraft. Ce réglage vise le transfert de couleur voulu, pas une simulation physique complète du rebond blanc. Les sources hors champ/cachées restent absentes du SSGI ; le résultat peut encore varier lors d'un déplacement important. PBR et SSGI restent indépendants.

Vérification

Test PBR ciblé réussi en 1 min 13 s : relief éclairé/ombré, intensités 20/50/100, soleil matin/soir, cache stable, préférences, OFF/zéro, mouvement infinitésimal, redimensionnement, rechargement et combinaison des effets. Le premier parcours SSGI est conservé comme reproduction ; résultats finaux ci-dessous.

Le parcours corrigé a réussi en 2 min 47 s avec 13 positions réparties sur 12 blocs, à 35 et 100, chaque fois comparées à OFF. Un mob immobile, des brins d'herbe et un mur figurent dans la scène. Retour au point initial sans rémanence. Sur les captures de ce parcours, le maximum du gain vert moyen mesuré dans l'herbe passe sous 9,73 niveaux à 35 et 24,51 à 100. Le test impose ensuite respectivement des limites de 12 et 30 à chaque position. L'essai reproduisant le défaut atteignait notamment 23,68 et 49,20 à l'extrémité droite. Ces mesures décrivent cette scène, pas une garantie d'absence d'artefacts dans tous les mondes ni sur toutes les cartes graphiques.

La suite client complète réussit en 7 min sur macOS / Apple M1 / OpenGL. Elle inclut le parcours latéral et ses seuils de gain, les deux couleurs de rebond, le PBR, les ombres, le feuillage, les cinq précisions, le CTM, les émissifs, le bloom, les préférences et les écrans FR/EN. Log : build/shader134-client-full.log. Le contrôle PBR final réussit en 1 min 19 s : placement/retrait d'un toit, invalidations de lumière/maillage et rendu combiné avec les ombres actives. Les reflets utilisent maintenant la grille des ombres pour leur test de visibilité. Aucun résultat Windows/Vulkan ni mesure de FPS revendiqués.

Construction et artefacts

./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest réussit en 2 min 22 s, 126 tâches. Le serveur GameTest dédié reste exclu conformément au refus EULA antérieur. Log : build/shader134-build.log. Packs normal/Test : même JAR Sanctuary. Sources archivées et template identiques aux sources. Comparaison à beta.133 : 23 entrées de production changées, limitées au rendu, à ses options et points d'appel. Gameplay et gemmes inchangés.

  • Sanctuary-beta.134.mrpack : 10421971 octets, SHA-256 d5bc79acb1d56e7dcf83c976156fdb2fcde80c98e443bde8a6ab312d56887b7f.
  • Sanctuary-Test-beta.134.mrpack : 10440898 octets, SHA-256 04308ebb9adaf76b30a3cbf4fa32ab897e76842803fc8c8411cfa32952d1bdd5.

JAR : a6e69622a5e6629f70dd19b7494ad3b00916bc02169b73635f0e2d563929b7fa.

Comparateur local : build/Shader-beta.134-comparaison.html. Il contient les captures natives PBR OFF/50/100 et le parcours SSGI de 12 blocs OFF/35/100. Le parcours est une succession de positions enregistrées, pas une mesure des FPS.

Livraison

Release beta.134 publiée depuis fc4a0cb68ed2d89163c8e74773976df5bab4f3f1. Canal packwiz 35ec0f6e145002f6367944df5b75e2703958eaef ; 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.134 actif ; les 923 fichiers personnels suivis, dont sauvegardes et préférences, gardent leurs hashes. Copie préalable dans sanctuary-backups/before-beta.134/, aucun monde personnel ouvert.

Packs normal/Test/template et comparateur natif vérifiés également dans sanctuary-beta/build/. Le checkout original garde ses changements préexistants. Reçus locaux ignorés : build/shader134-artifact.json, build/shader134-isolated.json, build/shader134-prism.json, build/shader134-publication.log.