# beta.026 — affichage Demeure sans recalcul par image Ticket sur `codex/demeure-map-performance-beta026`. ## Diagnostic et contrat La couche Demeure parcourait ses chunks puis les 256 blocs de chaque chunk visible à chaque image. Chaque bloc connu produisait un rectangle GUI distinct, y compris quand rien ne changeait. Le nombre de dessins dépendait donc de la surface explorée visible ; le bouton Demeure désactivait ce travail. La correction prépare une texture transparente de 1 024 × 1 024 pixels, alignée sur celle du terrain. Son rendu demande un seul dessin. Seuls les chunks dont les pixels connus ou la couleur Demeure changent sont repeints. Déplacer ou zoomer transforme l’image existante ; changer la fenêtre de chunks la reprojette. Les lots réseau identiques ne doivent provoquer ni effacement, ni nouvel envoi de texture au GPU. Une empreinte absente du lot suivant doit disparaître. Demeure reste activé par défaut. Ses règles serveur, contributions, scores, dates et sauvegardes restent inchangés. Aucun format de sauvegarde ou protocole ne change, aucun chunk n’est généré ou modifié par ce ticket. Les zones inconnues et le vide restent transparents, le changement de vue/dimension et la révocation des droits effacent également la couche Demeure. Les textures sont libérées à la fermeture de l’écran. Mémoire supplémentaire bornée : 4 Mio de pixels côté CPU et une texture RGBA8 de 4 Mio côté GPU. ## Vérifications et limites Mesure native avant/après avec une même surface de 256 chunks de laboratoire, en comptant les rectangles, les transferts de textures et le temps CPU de soumission de la couche. Cas fixes, déplacement maintenu, couche masquée/réactivée, lots identiques et modifiés, brouillard, permissions, redimensionnement et fermeture. Les mesures de soumission ne sont pas une promesse de FPS sur chaque machine. `./gradlew check build assemblePack -PsanctuaryClientTests=true -PsanctuaryMapPerfClientTests=true -PsanctuaryFocusedTests=progression,map,demeure` réussit : **9 tests natifs serveur**, contrôles de contrats, compilation du parcours graphique et assemblage du pack. Journal : `build/atlas026-check.log`. Le parcours graphique préparé s’exécute avec : ```sh ./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \ -PsanctuaryMapPerfClientTests=true ``` Il **reste à exécuter sur une session macOS déverrouillée**. Les essais de référence ont été interrompus au démarrage graphique, avant les mesures ; `IOConsoleLocked` était vrai. Aucun gain chiffré de FPS, temps CPU mesuré ou résultat graphique n’est revendiqué pour cette livraison. Le code Atlas de référence a été contrôlé identique au JAR beta.025 et conservé dans `build/atlas026-before.class` pour une comparaison ultérieure ; les autres contrôles serveur ne dépendent pas de l’affichage. La couche réutilise les mêmes couleurs et alpha par pixel : 0 pour l’inconnu et le vide, `0xA0` au bord des chunks, `0x25` à l’intérieur. Un changement de métadonnées sans changement de couleur met à jour le survol sans repeindre. Les paquets terrain et Demeure sont appariés dans l’ordre déjà garanti par `AtlasService.reply` ; le résumé Demeure, même vide, clôt son lot terrain. Le lot en attente est borné à 16 chunks et annulé au changement de requête. ## Artefact local [Sanctuary-beta.026.mrpack](../build/Sanctuary-beta.026.mrpack), **4 766 675 octets**. SHA-256 : `f564aabbee977d48e8f3d0d2ea4178b23b18f33f42110ab0dba733f2ae008fbb`. Reçu : `build/atlas026-artifact.json`. ZIP, version, 1 253 classes Sanctuary, absence de tests embarqués et identité des JAR Demeure/JEI vérifiés. Seule la classe de l’écran Atlas diffère dans le code compilé Sanctuary par rapport à beta.025 ; les classes du module Demeure sont identiques. L’export beta.025 conserve son empreinte. Aucun canal, instance Prism ou monde personnel n’a été modifié.