ASTROFOX
Plugins

Environnements d'exécution des plugins

Implémentez des plugins Astrofox de type shader, worker canevas et Three.js.

L'environnement d'exécution détermine la façon dont un plugin effectue son rendu et les champs du manifeste qu'il utilise.

Affichage shader#

Un affichage shader produit un nouveau calque à partir d'un fragment shader. Il reçoit la taille du plateau, un temps déterministe, le niveau audio et les éventuelles données FFT demandées.

Les entrées GLSL disponibles sont notamment :

Écrivez la couleur finale dans gl_FragColor. La transparence (canal alpha) est respectée lorsqu'Astrofox compose l'affichage.

Effet shader#

Un effet shader reçoit dans inputTexture la composition rendue jusque-là, ainsi que le temps, le delta et le volume. Il ne reçoit ni données FFT ni données temporelles :

Associez les propriétés du manifeste à des uniforms personnalisés avec l'objet uniforms. Les types valides sont float, int, vec2, vec3, vec4 et color.

Affichage worker#

Un affichage worker exporte par défaut une fonction de fabrique. Il s'exécute sans DOM dans un Web Worker dédié et dessine généralement dans un OffscreenCanvas.

Respectez les règles suivantes :

  • Dérivez l'animation de frame.time et frame.delta, jamais de l'heure système.
  • Initialisez l'aléatoire à partir de frame.seed, qui reste stable pour l'instance du plugin.
  • Redessinez l'intégralité du canevas à chaque image. Le transfert du bitmap vers l'hôte efface le canevas sous-jacent du worker.
  • Libérez les ressources que vous possédez dans dispose().
  • Veillez à ce que les images restent réactives. Un rendu qui prend plus d'environ 3 secondes en aperçu, ou 5 secondes pendant l'exportation, est interrompu et l'instance est marquée comme ne répondant plus.

Affichage worker Three.js#

Demandez la copie de Three.js fournie par Astrofox au lieu de la télécharger ou de l'intégrer à votre bundle :

La fabrique reçoit libraries.three ainsi qu'un renderer partagé, configuré par l'hôte. Créez vos propres scène, caméra, géométrie, matériaux et lumières ; utilisez le moteur de rendu emprunté pour la sortie.

Le moteur de rendu est partagé. Ne le libérez pas et ne modifiez pas de façon permanente sa couleur d'effacement, son espace colorimétrique, son tone mapping, ses ombres, sa cible de rendu, son état de scissor ou ses autres paramètres globaux. Réinitialisez tout état modifié temporairement avant de quitter render().

Commandes de caméra de l'hôte#

Définissez "camera": true sur un affichage worker Three.js pour ajouter les propriétés cameraAzimuth, cameraPolar et cameraDistance et activer l'outil de caméra orbite et travelling du plateau.

Le plugin reste maître de la caméra et de l'éclairage. Astrofox fournit uniquement l'interaction utilisateur et les valeurs de propriétés persistantes.

Les plugins worker ne peuvent pas accéder au réseau, sauf si le manifeste demande l'autorisation network. Même avec cette autorisation, les imports de code exécutable distant restent bloqués ; intégrez dans votre bundle le code exécuté par votre plugin.