Skip to content

feat: économie d’énergie et FPS dynamiques selon l’activité - #23

Merged
ZyFou merged 1 commit into
developfrom
feat/energy-saving-dynamic-fps
Oct 1, 2026
Merged

ZyFou merged 1 commit into
developfrom
feat/energy-saving-dynamic-fps

Conversation

@ZyFou

@ZyFou ZyFou commented Sep 17, 2026

Copy link
Copy Markdown
Owner

Objectif

Réduire le travail CPU/GPU au repos, y compris sur les GPU Apple Silicon classés high, sans changer la qualité spatiale du terrain. PR indépendante, basée sur develop b40f5c7 ; aucun changement d’upscaling.

Comportement

  • Performance → Energy & Frame Rate : Balanced par défaut, jusqu’à 60 FPS en activité puis 30 FPS après 1,5 s sans interaction. Plafond actif configurable 30/60/90/120.
  • Eco : jusqu’à 30 FPS actif / 24 FPS au repos. Off : cadence historique, avec conservation des corrections de visibilité.
  • Contrôle de cadence avant le tick coûteux (props, streaming, nuages et rendu), reprise immédiate des interactions, pas de double limitation.
  • Exploration, touches maintenues, drag et inertie restent au plafond actif. Boot, compilation, transitions et exports gardent leur orchestration.
  • Le worker respecte désormais visible:false, et les paquets d’entrée visible:true ne réinitialisent plus continuellement l’horloge.
  • Protection contre les adaptations automatiques de qualité provoquées par un faible FPS volontaire ; diagnostics de cadence et sauvegarde des réglages worker sur le thread principal.

Organisation

Extension explicite EnergySavingEngine utilisée par les deux transports. Le gros Engine.js reste inchangé. Extraction à l’identique du contenu existant de PerfSettings vers QualitySettingsContent, avec un petit hôte de contrôles partagé pour permettre de fusionner indépendamment l’autre expérience.

Validation

33 tests Node ciblés exécutés et réussis localement, sur la politique, les cadences 60/90/120/144/165 Hz, l’adaptateur avec moteur simulé, la visibilité, le réveil, les réglages et le nettoyage. Vérification de syntaxe des modules modifiés.

Ajout d’un workflow PR sans déploiement : tests ciblés, npm ci, npm test, npm run build. La suite complète et le build n’ont pas été exécutés localement ; leur résultat CI doit être contrôlé avant fusion. Aucun gain thermique ou énergétique mesuré sur un Mac n’est revendiqué.

Essais manuels

Voir docs/ENERGY_SAVING.md : comparer Off/Balanced/Eco à scène identique, Tile/Infinite/Planet, worker activé et désactivé, idle animé et statique, onglet masqué, reprise, sculpture, exploration et exports.

Limites volontaires

Cette version ne fige pas les animations ambiantes et ne met pas le décor opaque en cache. Les scènes animées restent à 30/24 FPS au repos ; les scènes Tile statiques conservent le rendu à la demande existant. Le callback rAF léger reste enregistré. Pas de fusion automatique.

ZyFou commented Sep 17, 2026

Copy link
Copy Markdown
Owner Author

Validation finale : le workflow Renderer experiments #1 est terminé avec succès pour af941b1. Les tests ciblés, npm test et npm run build sont tous verts. Les mesures de consommation/chauffe et les essais interactifs sur Mac restent à effectuer.

L’expérience d’upscaling est disponible séparément dans #24, issue du même commit de develop. Aucune des deux PR n’a été fusionnée.

@ZyFou
ZyFou merged commit cc421c7 into develop Oct 1, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant