# LIGHT-139 — Lumières colorées Socle beta.138 + vérification Vulkan `9d84a02`, Minecraft 26.3 / Java 25. Branche `codex/colored-lights-beta139`, livraison beta.139. ## Contrat Option locale « Lumières colorées » avec intensité. Les vrais blocs émetteurs teintent discrètement leurs environs, y compris hors champ. Torches/lanternes, lave et feu chauds ; sources des âmes bleues ; redstone active rouge ; froglights par variante ; sources Sanctuary selon leur texture/matière. Les blocs éteints n'émettent pas. Le bloom et les inclusions émissives des minerais restent indépendants ; aucune lumière de gameplay n'est ajoutée. Propagation RGB dans un volume local de blocs chargés, obstacles et formes natives, construction répartie entre les images, cache des couleurs de matériaux. Aucun chargement forcé de chunk, accès aux mondes personnels, changement de sauvegarde, réseau ou règles serveur. ## Réalisation Dans les options du shader : « Lumières colorées », désactivées initialement, et une intensité de 0 à 100 %, réglée à 35 %. Zéro ou OFF libère les ressources. Les préférences existantes sont conservées. Libellés et aides FR/EN. Les familles vanilla demandées ont une palette dédiée. Les autres émetteurs, y compris ceux de Sanctuary, utilisent la couleur des pixels lumineux de leurs textures de modèle, calculée puis mise en cache. Ce repli suit les packs de ressources ; les palettes dédiées vanilla restent constantes. Une texture illisible ou sans pixels exploitables utilise du blanc. Les blocs purement émissifs du bloom, sans émission lumineuse native, ne deviennent pas des lampes. Le champ couvre un cube de 64 blocs de côté autour de la caméra. Une marge de 14 blocs réserve la propagation aux sources présentes dans le volume ; le rendu s'atténue progressivement sur 4 blocs à sa périphérie. C'est donc un effet de proximité, pas une illumination de tous les chunks visibles. Les formes et l'opacité natives règlent le passage de la lumière. Les canaux utilisent des maxima indépendants, sans addition illimitée des sources superposées. Le calcul CPU est réparti avec un budget visé de 2 ms par image, plus les allocations et chargements ponctuels de matériaux ; aucun chiffre de FPS n'est garanti. Un monde immobile réutilise son champ. Les changements rapides et les déplacements peuvent présenter un bref retard, le temps de publier un champ complet. Aucun chargement forcé de chunk. Une texture 512 × 512 contient le champ. La passe GPU teinte les surfaces visibles, atténue l'effet au soleil et dans le brouillard, puis laisse agir le SSGI et le bloom. Les sources tenues, entités, particules et le rendu sous l'eau/lave ne sont pas couverts par cette option. ## Vérifications Essais client natifs réussis dans des mondes neufs (graine 122) sur Apple M1 : - OpenGL 4.1 Metal : **1 min 46 s**, `build/colored139-opengl.log`. - Vulkan / MoltenVK 1.4.2, profondeur 0–1 et transparence améliorée : **1 min 30 s**, `build/colored139-vulkan.log`. Les deux journaux contiennent `COLORED139_PASS` et le backend réellement actif. Torche et torche des âmes hors champ, trois froglights, pierre lumineuse dont la couleur vient de sa texture, intensité 35/100, cache statique, déplacement et retour de caméra, mur fermé puis ouvert, lampe redstone allumée puis éteinte, retrait de source, rechargement des ressources et OFF/zéro vérifiés. Les préférences persistantes et les libellés FR/EN sont contrôlés ; une dernière capture active conjointement PBR, SSGI, bloom, ombres, highlights et rayons. Les sommes d'écart entre OFF et 35 % sont presque identiques entre backends : torche 2 025 577 / 2 025 576 ; âmes 964 200 / 964 201. Il s'agit de mesures sur les pixels de cette scène, pas d'un indice de performance. Comparatif autonome : `build/Shader-beta.139-comparaison.html`. Pas de validation du pilote Vulkan Windows de l'utilisateur revendiquée. Le test fige uniquement le scintillement vanilla des torches afin de comparer les images ; cette sonde est exclue du JAR distribué. Aucun monde personnel ouvert. ## Diagnostic des essais La première comparaison de stabilité détectait le scintillement natif de la lightmap des torches, même avec un champ coloré inchangé. La sonde de test stabilise ce seul facteur ; aucune désactivation de scintillement en production. La pièce d'essai est désormais construite après le chargement de ses chunks, et l'absence de lumière du ciel est vérifiée avant les captures. ## Construction et archives `./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/shader139-build.log`. La comparaison à beta.138 trouve **13 entrées de production** modifiées, limitées au shader, à son menu et aux aides FR/EN. Les sondes de test sont absentes du JAR distribué. Sources, archives normale/Test et template complets vérifiés ; textures des gemmes et clé de Steve conservées à l'identique. Reçu local : `build/shader139-artifact.json`. JAR SHA-256 : `7b958f6576adbabb2b1af589b866cb52b1a65600ea2fa505b05dd283f8d595df`. - `Sanctuary-beta.139.mrpack` : 10450317 octets ; SHA-256 `13f3a283c260876d28ce0c6504615b4a8f4d575906badfbb2b39558f312e9fbb`. - `Sanctuary-Test-beta.139.mrpack` : 10469244 octets ; SHA-256 `c1e0b684dc2650950a0925c4625ef5eb4b78fb5f1c5680f5e302550424fa6d81`. ## Publication et instance [Release beta.139](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.139) publiée depuis `dc33ffa54697f61cd8f579235e7cebdbf0765f7c`, tag exact `beta.139`. Canal packwiz : `9f10167b6acfece9c045573580e186aa72bc91dc`. Deux synchronisations isolées puis deux synchronisations de la même instance Prism réussissent. Un seul JAR Sanctuary beta.139 actif, empreinte identique à l'archive vérifiée ; les **923 fichiers personnels suivis** conservent leurs empreintes. Sauvegarde des fichiers gérés dans `sanctuary-backups/before-beta.139/`. Aucun monde personnel ouvert. Reçus : `build/shader139-isolated.json`, `build/shader139-prism.json`.