# SHADER-136 — Lens flare rectangulaire doux Demande : ajouter un lens flare avec des rectangles dégradés, exclusivement pour le soleil et la lune. Socle beta.135, branche `codex/lens-flare-beta136`. Minecraft 26.3 / Java 25. Aucun changement de gameplay ou de monde. ## Contrat Effet activé initialement à **30 %**, intensité réglable 0–100, indépendant du halo de bloom. Rectangles translucides aux bords doux, suivant la position de l'astre à l'écran. La visibilité provient de l'image émissive céleste native, avant les blocs : les murs masquent l'effet, les sources de terrain ne le déclenchent pas. L'astre sortant du champ doit s'atténuer sans sauter sur le bord opposé. Pas d'historique, ni lecture GPU vers le CPU, ni texture générée sur disque. ## Rendu et budget Trois rectangles à dégradé doux par astre : un halo horizontal près de sa position et deux reflets plus petits le long de l'axe passant par le centre de l'écran. Teinte solaire chaude, lunaire légèrement bleue. Intégration de la lumière réellement dessinée par le ciel natif ; phases de lune conservées. Atténuation aux bords de l'écran et à l'horizon, sans projection derrière la caméra. Le masque céleste est mesuré avant l'ajout des émissifs de terrain. Réduction vers une texture 2 × 1 RGBA16F (512 échantillons au maximum au total), puis une passe de composition avec deux lectures de cette texture et des dégradés analytiques. La cible d'émission plein écran existante est réutilisée. Quand seul le flare fonctionne, aucun maillage d'émissif de terrain ni tampon de flou n'est construit. OFF et zéro libèrent la cible du flare ; les autres effets gardent leur autonomie. ## Vérification Le scénario client natif réussit en **1 min 52 s** sur macOS / Apple M1 / OpenGL. Soleil OFF/30/80, lune et nouvelle lune, mur occultant, source hors champ, glowstone exclue, image statique, redimensionnement et rechargement des ressources. Le flare reste actif sans bloom ; OFF/zéro libèrent ses ressources. Préférences vierges, partielles, personnalisées, bornage et libellés FR/EN vérifiés. Les contrôles existants du bloom et des minerais émissifs passent également. Log : `build/shader136-client-final.log`, marqueurs `EMISSIVE131_PASS` et `LENS_FLARE136_PASS`. Les captures natives restent dans le dossier de tests ; comparatif autonome `build/Shader-beta.136-comparaison.html` (soleil OFF/30/80 et lune OFF/30). Une première tentative s'est arrêtée sur l'attente d'un angle de caméra : Minecraft normalise 180° en −180°. Le scénario utilise maintenant un angle canonique ; ce changement concerne uniquement le test. ## Limites Effet optique en espace écran : il s'atténue quand l'astre quitte le champ et à l'horizon. Le masque natif du ciel contrôle l'occultation ; la lune reste volontairement beaucoup plus discrète. Le brouillard de submersion suspend l'effet comme le bloom existant. Aucun essai Windows/Vulkan ni mesure de FPS revendiqués. ## Construction et archives `./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest` réussit en **2 min 29 s**, 126 tâches. Le serveur GameTest dédié reste exclu conformément au refus EULA antérieur. Log : `build/shader136-build.log`. Comparaison à beta.135 : **9 entrées de production** modifiées, uniquement le rendu, ses préférences et ses libellés. Gameplay et textures des gemmes strictement conservés. JAR normal/Test identique, sources et template vérifiés. Reçu local : `build/shader136-artifact.json`. - `Sanctuary-beta.136.mrpack` : 10424821 octets ; SHA-256 `808006bf2b0cb3fe63d3e16ae3a0003d27ad0b7e793a3a05f25b5d73ae88bc8d`. - `Sanctuary-Test-beta.136.mrpack` : 10443744 octets ; SHA-256 `70f593ad16d1f4fd4305b276ce2727a63f87bcb84df45e55840c1427a314a1eb`. JAR : `086afede22903f8988889f6085631451f65d6d55c2e4c81f249d2234698e68e5`. ## Livraison [Release beta.136](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.136) publiée depuis `71296a9cfb0f6b1a6e6f0c48145f3cc432c8afd0`. Canal packwiz `dd5b545a7cfbb957f2c70e9dc17034b44caef98f` ; 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.136 actif ; les **923 fichiers personnels suivis**, dont sauvegardes et préférences, gardent leurs hashes. Copie préalable dans `sanctuary-backups/before-beta.136/`, aucun monde personnel ouvert. Packs normal/Test/template et comparatif natif également vérifiés dans `sanctuary-beta/build/`. Le checkout original garde ses changements préexistants. Reçus locaux ignorés : `build/shader136-artifact.json`, `build/shader136-isolated.json`, `build/shader136-prism.json`, `build/shader136-publication.log`.