Suite

Est-il possible de toujours placer les couches de symboles au-dessus ?

Est-il possible de toujours placer les couches de symboles au-dessus ?


Est-il possible de toujours placer les symboles au-dessus, même si le calque avec le symbole est dessiné sous un autre calque ?

Exemple : Mon ordre de calque est le suivant :

Rues (en haut)
Immeubles
Utilisation du sol (en bas)

La couche Buildings a des symboles centroïdes. Mais ceux-ci sont dessinés sous les calques des rues :


Vous pouvez soit

  1. dupliquer la couche des bâtiments, une fois en bas pour le polygone, une en haut pour le symbole, ou
  2. créer des étiquettes de symboles. Les étiquettes sont toujours au top. VoirÉtiquettes | Contexte | Forme = SVG

Cela ne fonctionnera pas à 100 % du temps, mais cela améliorera quelque peu la situation. Vous pouvez définir Topmost = true dans le gestionnaire de l'événement Window.Deactivated :

L'événement Deactivated sera appelé chaque fois que votre application perd le focus (souvent lorsqu'une autre application demande à être Topmost ) et donc cela réinitialisera votre application après cela.

Essayez cette solution de MSDN, cela devrait fonctionner pour vous. Dans l'événement activé par la fenêtre, ajoutez le code suivant :

dans DeActivated Event, ajoutez le code suivant

Aucune des solutions ci-dessus pour moi n'a fonctionné, alors voici ce que j'ai fini par faire. Cela a parfaitement fonctionné pour moi.

Fondamentalement, pour le garder au sommet, il vous suffit de définir l'événement de perte de focus pour le faire revenir en haut.

Si vous souhaitez que votre application reste au top de TOUT (y compris l'interface de démarrage de Windows 8, anciennement connue sous le nom de "Metro"), vous pouvez spécifier UiAccess="True" dans votre fichier manifeste. Ceci est généralement utilisé par les applications d'accessibilité telles que les claviers à l'écran.

De mémoire, vous devez faire 3 choses

  1. Demande UiAccess="True"
  2. Signez le fichier exe de votre application avec un certificat reconnu. J'ai obtenu un certificat de signature de code gratuit de Certum car mon projet est Open Source.
  3. Installez votre application dans un "emplacement de confiance", qui dans mon cas était le répertoire des fichiers du programme. Il n'y a pas de définition officielle de « lieu de confiance » que j'ai pu trouver.

J'ai donc rencontré la même exigence récemment. Il semble que la réponse la mieux notée ainsi que la seconde n'aient pas fonctionné correctement pour moi. J'ai trouvé une solution qui semble fonctionner parfaitement et adhère quelque peu aux meilleures pratiques utilisant MVVM.

L'utilisation de ce qui suit force la fenêtre vers le haut et ne s'efface jamais lors du changement comme les autres solutions.

Étape 1 : j'ai créé une classe de gestionnaire d'état simple pour ma fenêtre cliente principale. J'ai utilisé INotifyPropertyChanged pour garder la propriété synchronisée lors de l'utilisation d'une liaison directe avec ma fenêtre. (très important)

Étape 2.1 : Ajout de ma classe de gestionnaire d'état à mon ViewModel. (MVVM)

Étape 2.2 : définissez ensuite votre contexte de données de fenêtre sur votre modèle de vue.

Étape 3 : Ajoutez votre liaison de données à votre fenêtre.

Vous pouvez donc maintenant gérer l'état de votre fenêtre à l'aide de l'objet gestionnaire d'état initialisé dans le modèle de vue. Vous pouvez appeler SetTop() depuis votre gestionnaire d'état pour le faire avancer, ou UnSetTop() pour l'arrêter. J'espère que cela aidera tous ceux qui cherchent à faire de même.


13 réponses 13

Form.TopMost fonctionnera à moins que l'autre programme ne crée les fenêtres les plus hautes.

Il n'y a aucun moyen de créer une fenêtre qui n'est pas couverte par les nouvelles fenêtres les plus hautes d'un autre processus. Raymond Chen a expliqué pourquoi.

Je cherchais à faire de mon application WinForms "Toujours au top" mais le réglage "TopMost" n'a rien fait pour moi. Je savais que c'était possible parce que WinAmp le fait (avec une foule d'autres applications).

Ce que j'ai fait, c'est appeler "user32.dll". Je n'ai eu aucun scrupule à le faire et cela fonctionne très bien. C'est une option, de toute façon.

Tout d'abord, importez l'espace de noms suivant :

Ajoutez quelques variables à votre déclaration de classe :

Ajouter un prototype pour la fonction user32.dll :

Ensuite, dans votre code (j'ai ajouté l'appel dans Form_Load()), ajoutez l'appel :

Si par "devenir fou", vous entendez que chaque fenêtre continue de voler le focus de l'autre, TopMost ne résoudra pas le problème.

Cela affichera la forme « enfant » sans qu'elle ne vole la mise au point. Le formulaire enfant restera également au-dessus de son parent même si le parent est activé ou focalisé. Ce code ne fonctionne facilement que si vous avez créé une instance du formulaire enfant à partir du formulaire propriétaire. Sinon, vous devrez peut-être définir le propriétaire à l'aide de l'API.

J'ai eu un laps de temps de 5 minutes et j'ai oublié de spécifier le formulaire en entier comme ceci :

Mais ce que je voulais vraiment, c'était ÇA !

Définissez la propriété .TopMost du formulaire sur true.

Vous ne voulez probablement pas le laisser ainsi tout le temps : définissez-le lorsque votre processus externe démarre et remettez-le en place lorsqu'il se termine.

J'ai résolu ce problème en créant une icône de la barre d'état système dotée d'une option d'annulation.

Le code suivant permet à la fenêtre de rester toujours en haut et de la rendre sans cadre.

Quelle est l'autre application dont vous essayez de supprimer la visibilité ? Avez-vous étudié d'autres moyens d'obtenir l'effet souhaité ? Veuillez le faire avant de soumettre vos utilisateurs à un comportement aussi malhonnête que celui que vous décrivez : ce que vous essayez de faire ressemble plutôt à ce que font certains sites coquins avec les fenêtres de navigateur.

Essayez au moins de respecter la règle de la moindre surprise. Les utilisateurs s'attendent à pouvoir déterminer eux-mêmes l'ordre z de la plupart des applications. Vous ne savez pas ce qui est le plus important pour eux, donc si vous changez quelque chose, vous devriez vous concentrer sur pousser l'autre application derrière tout plutôt que de promouvoir la vôtre.

C'est bien sûr plus délicat, car Windows n'a pas de gestionnaire de fenêtres particulièrement sophistiqué. Deux approches s'imposent :


Seules les fenêtres de niveau supérieur peuvent être créées en couches. Avec votre approche, vous créez une fenêtre enfant dans la fenêtre du bureau, elle ne peut donc pas être superposée.

Il serait peut-être préférable d'essayer d'expliquer ce que vous entendez par "coller"/"épingler" une fenêtre sur le bureau. Je suppose que vous voulez définir la fenêtre à une position particulière sur le bureau et la garder toujours là, mais il doit y avoir quelque chose de plus qui me manque. Sinon, pourquoi le simple positionnement de la fenêtre à des coordonnées particulières sur l'écran ne fonctionnerait-il pas pour vous ?


Quelles sont les meilleures applications de messagerie cryptée ?

Dans cette section, je vais examiner un groupe d'applications de messagerie qui offrent une protection chiffrée de bout en bout pour vos messages.

Vous en connaissez probablement quelques-uns et les utilisez peut-être déjà. Mais je parie aussi que vous apprendrez quelques choses sur chaque application au fur et à mesure que nous les examinerons.

Messages Apple (iOS, watchOS et macOS)

Bien que je n'inclue normalement pas cette application, car elle n'est disponible que sur les appareils iOS, watchOS et macOS, le grand nombre de ces appareils en cours d'utilisation justifie son inclusion dans cette rafle.

En outre, de nombreux utilisateurs d'iPhone, iPad, Apple Watch et Mac peuvent ne pas réaliser à quel point Messages protège leurs sessions de messagerie.

L'application Apple Messages utilise iMessage, le service de messagerie sécurisé d'Apple, qui fournit un cryptage de bout en bout pour les messages des utilisateurs envoyés via l'application Messages.

L'application utilise l'identifiant Apple des utilisateurs Apple, qui est également utilisé pour l'App Store, la messagerie électronique, iCloud et plus encore. Le service utilise le cryptage de bout en bout intégré à iCloud pour sécuriser les messages des utilisateurs d'iMessage.

Les messages et les pièces jointes qui sont envoyés et reçus via l'application Messages sont protégés par un cryptage de bout en bout, et personne d'autre que l'expéditeur et le destinataire ne peut y accéder.

Même Apple ne peut pas déchiffrer les données. (Cela a provoqué des conflits juridiques avec les organismes fédéraux chargés de l'application des lois qui ont tenté de forcer Apple à « déverrouiller » des messages sur des appareils utilisés par des criminels et des terroristes.)

La capture d'écran ci-dessous est une représentation simplifiée de la façon dont le système d'Apple protège les sessions iMessage. Pour un aperçu plus détaillé de la façon dont tout cela fonctionne, je vous suggère fortement de télécharger la dernière version du guide de sécurité iOS d'Apple (PDF) .

Veuillez noter que le cryptage de bout en bout ne va que jusqu'aux messages qui restent dans le jardin clos d'Apple iMessage.

Bien que les utilisateurs de l'application Message puissent envoyer facilement et de manière transparente des messages texte SMS aux utilisateurs d'autres appareils, tels que les appareils Android, les messages ne sont pas protégés par un cryptage de bout en bout, car La messagerie SMS n'offre pas la même sécurité cryptée qu'iMessage.

L'application Apple Messages est préinstallée sur tous les appareils iOS, watchOS et macOS.

​Signal (Android, iOS, macOS, Windows et Linux)

Signal est une application de messagerie cryptée disponible pour les plateformes Android, iOS, Windows, macOS et Linux.

Les utilisateurs peuvent utiliser l'application pour envoyer des messages à des individus et à des groupes. Ils peuvent également envoyer des fichiers, des notes vocales, des images et des vidéos, ainsi que passer des appels vocaux et vidéo via l'application. Toutes les communications sont sécurisées via un cryptage de bout en bout.

Signal utilise une plate-forme indépendante de bout en bout, transportant les informations à travers sa propre infrastructure. Le cryptage de l'application est basé sur le protocole OTR et utilise AES-256, Curve25519 et HMAC-SHA256.

L'application est gratuite et est Open source, permettant à toute partie d'auditer et de vérifier le code de l'application pour s'assurer que le code n'offre aucun accès de porte dérobée à qui que ce soit, comme les types d'application de la loi « les terroristes gagneront sans accès ».

L'application utilise un mot de passe d'application et un bloqueur qui empêche le grattage d'écran. Les utilisateurs peuvent contrôler quels types de données sont autorisés à être envoyés et reçus via des connexions Wi-Fi ou cellulaires. Toutes les parties doivent installer l'application sur leur appareil pour participer à des conversations en tête-à-tête ou en groupe.

Pour plus d'informations sur Signal ou pour télécharger l'application Signal pour votre appareil, visitez le site Web de Signal .

​WhatsApp (Plateformes les plus populaires)

WhatsApp est une application de messagerie gratuite et sécurisée disponible pour les appareils Android, iOS, Windows Phone et Nokia S40.

Bien qu'il existe des clients WhatsApp disponibles pour les plates-formes Windows et macOS, ainsi qu'une version basée sur un navigateur Web, ils nécessitent qu'un appareil exécutant l'application mobile soit présent pour se synchroniser avec le client de bureau. Les appels audio ou vidéo ne sont pas autorisés à partir des clients de bureau ou Web.

Les utilisateurs qui se méfient de Facebook et de leur protection de la vie privée - ou de leur absence - doivent prendre note que WhatsApp a été acquis par le réseau social en février 2014.

Facebook exploite les données de ses utilisateurs à des fins publicitaires, vous pouvez donc vous attendre à une sorte d'opération d'extraction similaire pour WhatsApp, bien qu'aucune exploitation de ce type n'ait jamais été confirmée.

La messagerie WhatsApp est protégée par un cryptage de bout en bout sur toutes les plateformes, incorporant le même protocole de cryptage utilisé dans Signal, que nous avons examiné dans la sous-section précédente. Les utilisateurs peuvent vérifier les clés de chacun et peuvent être avertis si la clé d'un autre utilisateur change.

En plus de la messagerie texte, la plate-forme WhatsApp permet également de passer et de recevoir des appels vocaux et vidéo, des images et d'autres documents. Les utilisateurs peuvent également envoyer leur emplacement actuel s'ils le souhaitent. Toutes les données sont encapsulées dans un cryptage de bout en bout.

Alors que WhatsApp est disponible à l'international, le service est actuellement bloqué en Chine et a, à un moment ou à un autre, été temporairement interdit dans d'autres pays, dont l'Iran, la Turquie et le Brésil.

Pour plus d'informations sur WhatsApp ou pour télécharger l'application WhatsApp pour votre appareil, visitez le site Web de WhatsApp .

​Wickr Me – Private Messenger (Plateformes les plus populaires)

L'application de messagerie instantanée Wickr Me propose un cryptage de bout en bout pour les messages de leurs utilisateurs, qui peut inclure des messages dont le contenu expire, des photos, des vidéos et d'autres types de pièces jointes. L'application est disponible pour les appareils Android, iOS, Mac, Windows et Linux.

L'application Wickr Me permet aux utilisateurs de définir un délai d'expiration pour leurs messages cryptés, qui peuvent être synchronisés sur plusieurs appareils, tels que leur téléphone portable, leur tablette ou leur ordinateur de bureau.

Toutes les communications sont chiffrées localement sur chaque appareil, à l'aide d'une nouvelle clé générée pour chaque nouveau message. Cela signifie que personne en dehors des utilisateurs de Wickr dans la conversation n'a les clés nécessaires pour déchiffrer la conversation.

Les conversations Wickr Me peuvent être menées en tête-à-tête ou en groupe. Aucun numéro de téléphone ou adresse e-mail n'est requis pour s'inscrire à Wickr Me, et le carnet d'adresses de l'utilisateur reste privé et n'est pas stocké sur les serveurs Wickr. Wickr le dit ne stocke aucune métadonnée associés aux communications de ses utilisateurs.

Wickr utilise plusieurs couches de cryptage pour sécuriser les données et les messages. Les noms d'utilisateur, les ID d'application et les ID d'appareil sont hachés avec plusieurs tours de SHA256 salé, et les données sont chiffrées avec AES256. En d'autres termes, vos informations sont en sécurité.

Chaque message a une nouvelle clé de cryptage, qui est supprimé dès qu'un message est déchiffré. Tous les mots de passe et hachages de mots de passe restent sur l'appareil et tout le contenu de l'utilisateur est complètement effacé de l'appareil après son expiration.

Pour plus d'informations sur Wickr Me, ou pour télécharger l'application Wickr Me pour votre appareil, visitez le site Web Wickr .


6 réponses 6

J'avais l'impression que ce qui suit avait déjà été testé par d'autres, notamment sur la base de certains commentaires. Mais mes tests montrent que ces deux méthodes fonctionnent effectivement au niveau de la base de données, même lors de la connexion via .NET SqlClient . Ceux-ci ont été testés et vérifiés par d'autres.

Vous pouvez définir le paramètre de configuration du serveur d'options utilisateur sur ce qu'il est actuellement au niveau du bit OU avec 64 (la valeur pour ARITHABORT ). Si vous n'utilisez pas l'OR au niveau du bit ( | ) mais effectuez à la place une affectation directe ( = ), vous effacerez toutes les autres options existantes déjà activées.

Au niveau de la base de données

Cela peut être défini par base de données via ALTER DATABASE SET :


En savoir plus En savoir plus

Ces ressources fournissent plus d'informations sur cette condition ou les symptômes associés. Les ressources approfondies contiennent un langage médical et scientifique qui peut être difficile à comprendre. Vous voudrez peut-être revoir ces ressources avec un professionnel de la santé.

Où commencer

  • Genetics Home Reference (GHR) contient des informations sur le syndrome de délétion du chromosome 1p36. Ce site Web est maintenu par la Bibliothèque nationale de médecine.
  • Unique est une source d'information et de soutien pour les familles et les personnes touchées par des troubles chromosomiques rares. Cliquez sur le lien pour afficher des informations sur le syndrome de délétion du chromosome 1p36.

Informations détaillées

  • GeneReviews fournit des articles en texte intégral, rédigés par des experts et évalués par des pairs, décrivant l'application des tests génétiques au diagnostic, à la gestion et au conseil génétique des patients atteints de maladies héréditaires spécifiques.
  • L'Initiative Monarch rassemble des données sur cette maladie provenant d'humains et d'autres espèces pour aider les médecins et les chercheurs biomédicaux. Les outils de Monarch sont conçus pour faciliter la comparaison des signes et symptômes (phénotypes) de différentes maladies et découvrir des caractéristiques communes. Cette initiative est une collaboration entre plusieurs institutions universitaires à travers le monde et est financée par les National Institutes of Health. Visitez le site Web pour explorer la biologie de cette condition.
  • L'héritage mendélien en ligne chez l'homme (OMIM) est un catalogue de gènes humains et de troubles génétiques. Chaque entrée a un résumé des articles médicaux connexes. Il s'adresse aux professionnels de la santé et aux chercheurs. L'OMIM est géré par la faculté de médecine de l'Université Johns Hopkins.
  • Orphanet est un portail européen de référence pour l'information sur les maladies rares et les médicaments orphelins. L'accès à cette base de données est gratuite.
  • PubMed est une base de données interrogeable de la littérature médicale et répertorie les articles de revues traitant du syndrome de délétion du chromosome 1p36. Cliquez sur le lien pour afficher un exemple de recherche sur ce sujet.

Organigramme

206 articles • 1.564.130 visites

914 centres de connaissances • 1 million de membres

Bienvenue dans le centre de connaissances “Organization Chart” :

  • Résumé
  • Groupe d'Intérêt Spécial
  • Forum
  • Les meilleures pratiques
  • Conseils d'experts
  • Sources d'informations

Veuillez vous inscrire maintenant. C'est gratuit.

Qu'est-ce qu'un organigramme ? La description

Chaque organisation a à la fois un une structure organisationnelle formelle et informelle. Voici des exemples de structures organisationnelles :

  • Structure hiérarchique (typique pour la petite organisation entrepreneuriale)
  • Structure du personnel de ligne
  • Structure fonctionnelle ou départementale (basé sur la fonction, les produits/services, le type de client, la région géographique)

Structure matricielle (double ligne hiérarchique)

Ces structures formelles d'organisations peuvent être représentées sous la forme d'un organigramme. Parfois aussi appelé organigramme, organigramme, organigramme, ou alors organigramme. Il montre graphiquement l'autorité hiérarchique, les rôles et responsabilités, les fonctions et les relations au sein d'une organisation. Pour un nouvel employé, l'organigramme permet de comprendre ce qui doit se passer au sein de l'entreprise. (La structure informelle représente ce qui se passe réellement au sein de l'organisation.)

De nombreuses personnes ont souligné les faiblesses et les limites des organigrammes. D'autres ont inventé une gamme vertigineuse de mots à la mode pour catégoriser les organisations, y compris les organisations en réseau, les organisations transnationales, les organisations front-back, les organisations sans frontières, les organisations apprenantes, les organisations virtuelles et les réseaux sociaux.

Néanmoins, la conception organisationnelle continue d'être l'une des demandes importantes et difficiles de la direction, car elle influence et interconnecte la stratégie commerciale et d'entreprise, le marketing, la prise de décision, la communication, la finance et l'investissement, et le leadership au sein de toute organisation. Et les organigrammes continueront de jouer un rôle majeur dans ce processus, même s'ils peuvent sembler très différents des formes arborescentes traditionnelles du passé. Tout simplement parce que les gens peuvent absorber plus rapidement les informations lorsqu'elles sont présentées de manière graphique.

Origine de l'organigramme. Histoire

Il n'est pas improbable que les anciens Égyptiens aient déjà documenté leurs méthodes d'organisation de la division du travail pour leurs projets de travaux publics massifs d'une manière ou d'une autre. Cependant, le premier véritable organigramme a probablement été créé en 1854 par Daniel McCallum, surintendant de la compagnie ferroviaire New York and Erie. McCallum était responsable de la création d'une ligne de près de 500 milles s'étendant de Jersey City en passant par la Pennsylvanie et New York jusqu'aux rives des Grands Lacs.

McCallum a noté que "toutes choses étant égales par ailleurs, une longue route devrait être exploitée pour un coût par mile moins élevé qu'une courte". Mais les choses n'étaient pas égales. Les fonctions essentielles d'une compagnie de chemin de fer - coordonner la livraison du fret et des personnes, réparer les voitures et les voies, surveiller la position des trains - étaient beaucoup plus compliquées sur 500 milles que sur 50 milles. Sans une organisation efficace, des kilomètres supplémentaires de voies rendaient les chemins de fer plus coûteux à exploiter. McCallum a développé l'organigramme, qui selon l'écrivain Henry Varnum Poor ressemblait à un arbre. Ses racines représentaient le président et le conseil d'administration. Ses branches étaient les cinq divisions opérationnelles et les départements passagers et fret. Ses feuilles indiquaient les divers agents locaux de billetterie et de fret, équipages et contremaîtres, etc.

Historiquement, l'organigramme est un symbole de l'évolution de l'industrie occidentale d'une nature fondamentalement personnelle à des entreprises dans lesquelles la création de capacités organisationnelles est devenue une condition préalable à la survie.

Utilisation de l'organigramme. Applications

  • Définir les rôles et les responsabilités de tout le personnel au sein de l'organisation.
  • Établir une structure hiérarchique d'autorité, de pouvoir et, par conséquent, de prise de décision.
  • Établir des canaux de communication et des flux d'informations, en incorporant une chaîne de commandement avec des règles et réglementations spécifiques relatives aux procédures de signalement et aux méthodes de responsabilisation.
  • Établir des mécanismes de contrôle, tels que le degré de centralisation et l'étendue du contrôle. Comparez : Centralisation et Décentralisation.
  • Établir des stratégies de coordination des pratiques de travail.
  • Mise en place de processus décisionnels.
  • Établir des fonctions et des tâches opérationnelles spécifiques.

Création d'un organigramme. Traiter

Robert Simons (Levers of Organization Design, 2005) suggère qu'il existe quatre tensions ou leviers principaux sous-jacents à toute conception organisationnelle :

Stratégie (la structure suit la stratégie) contre Structure (la conception de l'organisation influence les stratégies futures)

Responsabilité (pour les objectifs d'aujourd'hui) versus Adaptabilité (aux changements futurs)

Échelles (hiérarchies verticales) contre Anneaux (réseaux horizontaux)

Intérêt personnel (individuel) par rapport à la réussite de la mission (département, unité commerciale, société).

Points forts de l'organigramme. Avantages

  • Transparent et prévisible. Aide à comprendre ce qui doit se passer au sein de l'entreprise.
  • Fournit un aperçu rapide de la hiérarchie formelle d'une organisation.
  • Qui est responsable de quoi. Qui rend compte à qui.

Limites des organigrammes. Désavantages

  • Statique et inflexible. Les organisations changent et passent par des phases de croissance.
  • N'aide pas beaucoup à comprendre ce qui se passe réellement au sein de l'organisation informelle. En réalité, l'organisation se comporte souvent de manière assez chaotique et suit des mécanismes complexes de conjectures et d'amplification (Core Group Theory).
  • Les organigrammes traditionnels ne peuvent pas faire face à l'évolution des frontières des entreprises en raison de l'externalisation, des technologies de l'information, des alliances stratégiques et de l'économie de réseau.

Livre : Robert Simons - Les leviers du design organisationnel

Groupe d'Intérêt Spécial

Organigramme Groupe d'Intérêt Spécial.


Groupe d'Intérêt Spécial (765 membres)


After Effects et performances d'ampli. Partie 18 : Le rendu multi-images est ici

La fin la plus appropriée possible pour cette série sur « After Effects and Performance » est une interview de Sean Jenkin, qui dirige l'équipe « Performance » pour After Effects, au siège d'Adobe à Seattle. Sean, Senior Engineering Manager pour Adobe, s'est assis pour une interview complète sur tout ce qui concerne les « performances », et elle était si complète que j'ai dû la diviser en deux articles. (c'est la partie 2 !)

Si vous avez manqué la première partie, il est logique de prendre quelques minutes et de vous rattraper. Nous avons commencé notre discussion en examinant le sujet des « Performances » en général, et ce qu'Adobe a fait pour mettre After Effects à jour.

Le rendu multi-images a été publié pour les tests bêta en mars de cette année. Si vous avez un abonnement Creative Cloud, vous pouvez télécharger la version bêta dès maintenant et l'essayer. Des rendus plus rapides gratuitement !

Mais maintenant, il est temps de passer aux choses sérieuses. Il y a quelques mois, Adobe a annoncé quelque chose que les utilisateurs d'After Effects attendaient depuis de nombreuses années : la possibilité pour After Effects d'utiliser plus efficacement les processeurs multicœurs. Alors que l'annonce officielle concernait spécifiquement le test bêta du "rendu multi-images", il y a bien plus que des rendus plus rapides.

Le rendu multi-images, en soi, est une nouvelle fonctionnalité qui permet à After Effects d'utiliser plusieurs cœurs de processeur pour rendre plusieurs images simultanément. Au début, cela peut sembler très similaire à l'ancienne (et obsolète) fonctionnalité connue sous le nom de « Rendu simultané de plusieurs images ». L'ancienne fonctionnalité RMFS a été analysée en profondeur dans la partie 8 de cette série, mais la version courte est qu'il s'agissait d'un hack intelligent. RMFS exécutait essentiellement plusieurs copies d'After Effects sur la même machine, chaque version d'arrière-plan restituant des images individuelles.

Pour certains projets, sur du matériel adapté, cela pouvait être très efficace – mais la mise en œuvre technique était relativement grossière. Chaque version d'After Effects exécutée en arrière-plan devait charger sa propre copie du projet. Si le projet était volumineux, cela pouvait prendre beaucoup de temps et avoir plusieurs copies de l'application After Effects en mémoire était un gaspillage de RAM qui aurait pu être utilisé pour le rendu. En pratique, RMFS était imprévisible, instable et pouvait facilement entraîner des rendus plus lents que s'il était désactivé. Comme je l'ai détaillé dans la partie 8, RMFS n'a jamais fonctionné correctement pour moi, et j'étais heureux quand Adobe a supprimé la fonctionnalité de la version 13.5.

Bien que le "rendu multi-images" puisse sembler être la même chose, l'implémentation technique sous-jacente est totalement nouvelle. Mais ce qui est encore plus important, c'est que le travail effectué pour activer le "rendu multi-images" a jeté les bases de toutes sortes d'améliorations futures des performances. Cela signifie pour les utilisateurs d'After Effects que le "rendu multi-images" est peut-être la dernière fonctionnalité à faire les gros titres, mais ce n'est que la première d'une série de nouvelles fonctionnalités qui visent toutes à améliorer les performances.

Les 18 derniers mois de travail de l'équipe de performances d'After Effects ont jeté les bases de toute une gamme de nouvelles fonctionnalités que les utilisateurs d'AE du monde entier commencent à remarquer !

Il n'y a personne de mieux pour nous faire découvrir le « Rendu multi-images » que Sean Jenkin, responsable de l'équipe « Performances » chez Adobe.
Reprenons donc notre interview là où nous nous sommes arrêtés…

CHRIS : Alors probablement la question que vous attendiez qu'on vous pose. Que pouvez-vous nous dire sur la nouvelle fonctionnalité de rendu multi-images ?

SEAN : Il y a quelques années, nous avons pris du recul et nous avons dit : OK, si nous devons penser aux performances de rendu, alors sur quoi nous concentrons-nous ? Investissons-nous de nombreuses années-hommes pour que After Effects fonctionne pleinement sur le GPU ? Et si nous le faisions, quelles en sont les conséquences négatives ? Vous savez, qu'arrive-t-il au texte? Qu'advient-il de l'échelle des compositions? Parce qu'il n'y a pas beaucoup de VRAM en circulation. Existe-t-il une solution pour une composition de 30 000 par 30 000 pixels sur un GPU ? Que faudrait-il ? Avons-nous les ressources?

Il y a eu toute cette discussion de ce côté-là, puis il y a eu toute une discussion sur OK, eh bien, nous n'utilisons pas beaucoup de threads CPU, et cela laisse probablement une quantité importante de performances sur la table. Pourrions-nous donc examiner ces deux scénarios?

Et donc nous avons commencé à suivre la route du GPU et nous avons commencé à porter des effets, des transformations et des modes de fusion, et nous avons également commencé à regarder à quoi cela ressemblerait si nous pouvions obtenir le rendu de plusieurs images simultanément.

Ce que nous avons trouvé dans nos tests, et ce qui existe maintenant avec les tests bêta dans le monde réel, et en interne sur des machines haut de gamme, c'est que nous envisageons des rendus 3x, peut-être 4x plus rapides sur des projets compliqués. Le rendu sera trois ou quatre fois plus rapide. Sur les machines haut de gamme, nous pensons qu'il y a encore un peu plus que nous pouvons en tirer.

Le travail fondamental, dont nous avons parlé un tas de fois jusqu'à présent (voir partie 17), sécurisait le thread de pipeline de rendu principal. Cela impliquait quelques millions de lignes de code, 35 projets différents, tous fonctionnant de manière à être thread-safe. Ainsi, nous pouvons maintenant avoir plusieurs images rendues en même temps sans qu'une image n'affecte négativement une autre image.

Nous l'avons fait fonctionner dans la version bêta d'After Effects, et vous pouvez donc voir l'effet du rendu multi-images dans la file d'attente de rendu. Au cours des prochaines semaines ou des prochains mois, cette même fonctionnalité commencera à fonctionner dans les aperçus RAM, donc lorsque vous appuyez sur la barre d'espace, elle commencera à rendre plusieurs images. Le but est de se rapprocher du temps réel.

Les premiers tests bêta du rendu multi-images ont limité l'utilisation du processeur à 3 cœurs, mais la toute dernière version bêta peut en utiliser davantage si votre système dispose de suffisamment de ressources

Si votre composition affiche actuellement un aperçu à 1 image par seconde, en ce moment avec la version bêta, nous n'allons probablement atteindre que 3 ou 4 images, mais vous savez, c'est certainement mieux qu'une image.

Mais si vous avez une composition qui rend un aperçu à six ou sept images par seconde, vous vous approchez peut-être du temps réel, et cela fait une énorme différence en termes de compréhension de vos animations, ainsi que de la sortie finale de quoi que ce soit. vous essayez de construire.

Cela impliquait quelques millions de lignes de code, 35 projets différents, tous fonctionnant de manière à être thread-safe.

-Sean Jenkin

Ensuite, il y a un tas de choses que nous allons pouvoir activer à l'avenir, comme la prise en charge d'Adobe Media Encoder. Lorsque Media Encoder va effectuer le rendu d'un projet After Effects, nous pourrons prendre en charge le rendu de plusieurs images simultanément, ce qui accélérera la sortie de votre composition.

Cela fonctionnera également avec Premiere Pro, donc lorsque vous prenez un modèle d'animation graphique intégré dans After Effects et que vous l'intégrez dans Premiere Pro, Premiere Pro répondra à After Effects et rendra plusieurs images simultanément, ce qui accélérera ces modèles d'animation graphique. .

Une autre chose à laquelle nous avons en quelque sorte fait allusion, est-ce que nous pouvons faire quand After Effects est inactif ? Pouvons-nous faire d'autres choses maintenant pour aider à préparer les compositions afin qu'elles soient rendues, ou au moins prêtes à être rendues plus rapidement ? Par exemple, pendant que nous avons cette conversation, j'aurais pu pré-render une composition et être ensuite prêt à travailler beaucoup plus rapidement lorsque je reviendrai à After Effects.

Une autre chose qui est super excitante est les notifications de file d'attente de rendu. À l'aide des applications Creative Cloud Desktop et Mobile, vous pouvez recevoir des notifications lorsque vos tâches de file d'attente de rendu sont terminées. Cela fonctionne même avec votre montre associée. Vous saurez que le rendu est terminé, ou s'il y a une erreur qui s'est produite.

L'interface utilisateur de la file d'attente de rendu est également en cours de mise à jour. Nous avons fait une partie de cela, la section d'information supérieure, mais nous y travaillons davantage en ce moment pour rendre cela plus efficace et plus simple à comprendre et à utiliser pour les gens.

La file d'attente de rendu est en cours de refonte pour inclure des informations supplémentaires sur les rendus multi-images. Encore une fois, les abonnés CC peuvent télécharger la version bêta dès maintenant et l'essayer par vous-mêmes.

Il y a d'autres choses que nous examinons, autour du profilage, et nous n'en avons pas trop parlé, mais j'ai été un utilisateur d'After Effects bien avant d'être responsable de l'ingénierie pour After Effects. Et je finis souvent, comme beaucoup de designers, à me voir confier un projet, à l'ouvrir, à n'avoir aucune idée de ce qui se passe, puis à essayer de comprendre pourquoi c'est si lent. Nous passons tous à cliquer sur les globes oculaires, à afficher des calques et à essayer d'activer et de désactiver les choses, n'est-ce pas ?

C'est une perte ridicule de tout notre temps, et nous devrions donc pouvoir faire apparaître une colonne qui vous montre : ce sont les couches qui sont lentes et c'est pourquoi elles sont lentes, et voici les choses que vous pourrait faire pour améliorer les choses. Et puis vous pouvez faire un choix, ou nous pouvons dire hé, pourquoi ne pas utiliser cela par procuration ? Ou pourquoi ne pré-compilez-vous pas ceci, puis pré-rendez-vous cela?

Nous passons tous à cliquer sur les globes oculaires, à afficher des calques et à essayer d'activer et de désactiver les choses, n'est-ce pas ?

Alors maintenant que nous avons rompu et sécurisé notre thread de pipeline de rendu, voyons si nous pouvons réellement créer des choses comme un profileur de composition. Et puis, comment prendre toutes ces informations et donner aux utilisateurs des éléments d'action qu'ils peuvent réellement prendre…

Donc, c'est là que le rendu multi-images est en quelque sorte le mot englobant, mais nous parlons vraiment de ce que nous pouvons faire maintenant qu'After Effects est beaucoup plus sûr pour les threads? Et comment tirer parti des machines à 16, 32, 64 cœurs… et il y a l'AMD 3990X à 128 cœurs ?

Si nous pouvons accéder à tous ces cœurs, non seulement nous pouvons rendre vos rendus ultra-rapides, mais nous pouvons en faire beaucoup plus en même temps. C'est vraiment ce que nous essayons de réaliser ici. C'est un projet énorme, non seulement pour nous en interne, mais pour les développeurs tiers qui créent des plugins. Ils avaient un modèle logiciel avec lequel ils travaillaient depuis 15 ou 20 ans. If we are making them rethink their entire model, we still need to keep After Effects working with the old versions of the plugins to some degree.

But as they migrate and make their plugins support multi-frame rendering, it’s unlocking the performance that maybe has been stuck, because it’s been After Effects that’s the cause of it being stuck. For example, if we think of an effect where the developer has done a really good job of porting it to run on the GPU. Those effects are still using the GPU really well, but while the GPU is busy, we could be doing a whole lot of other render steps on the CPUs, and rendering other frames rather than it all being stuck, one thing behind each other.

That will take us to a stage where we’re like, oh the GPU is going great, the CPU is doing this thing, and we’re writing to disk with this frame, and all of those things are happening concurrently.

Suddenly it makes you feel really good that you spent a whole bunch of money on your machine but also, you’re actually getting results a lot faster.

CHRIS: Can you detail how much more sophisticated the new multi-frame rendering feature is than the older render multiple frames simultaneously feature?

SEAN: I can do my best to try and explain that. So, in the old world, you could pick a number of background instances of After Effects that would start up. And then After Effects would try and split the composition into a certain set of frames and then it would pass those off to render on those background instances.

That certainly had a lot of benefits and things like Render Garden today is doing something similar to that.

The problem that you run into is that one instance of After Effects requires a certain amount of RAM to start up and has certain expectations that it’s the only application of After Effects running. If you start two or three or four or ten or more of those, you’re now having to use RAM that should be used for rendering, just to host the After Effects instances.

Each instance of After Effects doesn’t know about the other instances of After Effects, and so if an effect was using memory in a strange or unique way, or writing to files to disk, the effect may have no idea that it’s overwriting another instance of itself.

The old RMFS worked well for outputting file sequences, but the overhead of trying to take a QuickTime file, distributing frames across multiple background instances, and then merging all those back together was complicated at the very least.

So with the old system, the Render Multiple Frames Simultaneously feature, there’s all these sort of weird architectural things going on so you’re not getting the most out of your system.

My understanding from talking to the team over the last few years, is that a lot of people oversubscribed their system. They would find the setting for the number of background instances and they would set it to 16, but the machine could never handle 16, and so they’re actually getting worse rendering performance than normal rendering. If they took the time to figure it out then maybe they could get better performance, but the vast majority of people either didn’t know how to, or they just didn’t use it. (this problem was discussed at length in part 8 – Chris)

So as we went to build the new multi-frame rendering, we wanted to make sure that only a single instance of After Effects was running. Any plugin thinks there’s just one After Effects, and there’s only one instance of me running. And we’re doing all of the work to make sure that the same instance of an effect can be run concurrently over lots of different frames. The developers have to do some work to make it thread safe, but effectively MFR is transparent to the effects.

The big thing from an After Effects perspective is that now we can see all of those concurrent renders happening, and so we can actually start to do more intelligent things like – oh, you know what – when we started to do 4 frames at the same time instead of three, the GPU started to run out of VRAM and we’re actually running slower than we were. So, we can scale back to three concurrent frames. Or- there’s spare CPU cores, so we could actually probably go to 9,10, 11, or 12 frames concurrently. We can actually make those decisions dynamically and our goal, by the time we ship MFR, is that every single machine in the world will get the best performance for their After Effects render. We’ll be paying attention to their hardware, and their compositions, and dynamically adjusting what we’re actually doing.

There’s a lot more that we think we can do there. As we finish out this work, just to make that entire experience better, we want to add options so users can tell After Effects: I want to be able to do email or I want to be able to work in C4D while I’m rendering in the background, and then we can make intelligent decisions about rendering performance rather than taking over your entire machine. Fundamentally, we now just have a much better idea of what’s happening and After Effects can optimize for the hardware and the composition as opposed to you as a user having to try and figure it out every single time you go to render.

CHRIS: All of it makes perfect sense, especially the bit about needing backwards compatibility with plugins and what it means for developers. When I interviewed the software developers a couple of articles ago, that was a recurring theme – Adobe just can’t change the API with every release because they rely on that third party market.

So if you are going to make a big sweeping change to the API, one limitation that’s been in After Effects since day one is a 2 gigabyte frame size limit. That’s something that I’m starting to run into now I’m doing all my work in 32 bit, and I’m working with larger and larger composition sizes. If you’re going to overhaul or introduce a new API, will we finally see the two GB frame limit lifted? Is there a reason that it’s still there?

SEAN: Fundamentally, it’s because it’s a 32-bit number that’s storing some of those things. You’ll find other limitations like that, such as a UI panel can’t be more than 30,000 pixels high or wide. There’s a number of those fundamental things that have existed and haven’t been fixed because they impact so few people. Up until now that it hasn’t been an issue.

But as compositions get more complex as we move to 4K, 8K and beyond, those are things that we do have to think about. Is there an immediate plan to change that 2 gig limit? Not immediately, but it’s on us to be listening to people’s needs for that. So, if there’s you and other people that are affected then let us know – I’m hitting this limit – then we’ll have to figure that out. It might mean that a bunch of effects need to be updated to support a change there.

CHRIS: Yes, I’d assumed something like that.

SEAN: We do have the ability to version certain API’s so we can say OK, look if you’ve got an effect and it’s going to do this, that’s version one of the API. But you need to use version two to support a different sized composition limit, or something like that.

CHRIS: With multi-frame rendering there’s an underlying philosophical approach of farming out separate frames to different CPU cores. Have you considered, or is there a team looking at, say, a tile-based renderer where instead of multiple CPU cores rendering different frames you’ve got multiple CPU cores rendering different parts of the same frame?

SEAN: Yeah, so there’s actually two different investigations going along. There is an early investigation in doing tile rendering, to see how much further we can push the GPU to larger composition sizes, but that’s still pretty early on.

The other piece is: How do we take an individual frame and render it across multiple threads? Right now, we’re rendering multiple frames, and each thread has one frame to render. That’s the core philosophy of multi-frame rendering, it’s lots of threads, but each one of those threads only has one frame.

Then there is the sort of inverse version of that which is one frame has multiple threads. And that is something that we have spent a lot of time internally thinking about. We couldn’t work on it until this first version of Multi-Frame rendering was complete. It’s taken all this time to get the code thread safe.

The next step is, when you go to render an After Effects composition, we build what we call a render tree in the background. This process takes all the layers and all of the effects and all the transforms, all the masks, everything that makes up the After Effects composition and actually breaks it up into a tree, or something that looks like a node-based system, in the back end. And then we traverse that tree to be able to say OK, well we need a square and then we need to transform that and then we need to apply an effect to that, whatever it takes to output that final composition frame.

How can we break that render tree up so that we can say OK, this portion can be safely done on one thread and this portion will be done on another thread, and then how do we merge all of those pieces back together? Our early estimates show that we might be able to improve performance 50% if we can make that system work. I wouldn’t quote me on that, because it’s very, very early on.

We don’t know if we’re actually going to end up prioritizing that as work, but that’s the sort of two angles for tile-based rendering, and then also breaking up a single frame into its renderable nodes.

CHRIS: One recurring theme in my article series is bottlenecks, when you have system bottlenecks causing slowness that’s not After Effects’ fault. I’ve personally sat next to designers using a $12,000 machine and they’re reading ProRes files off a USB 2 hard drive and things like that. Is there a way that After Effects can tell that? I’ve freelanced at studios with multiple employees and they talk about “the server”, and “the server” is a consumer grade Synology which is battling away trying to keep up with a room full of artists.

Is there a way that After Effects can say – Hey, it’s not my fault, you know, the USB drive or the network server is the problem?

SEAN: So today – no. By the time we’re finished with multi-frame rendering, then quite possibly. That has been one of the core things that we need to be able to analyze – compositions and hardware resources, and then optimize for that. We need to be watching CPU, RAM, VRAM, disk throughput, all of those sorts of things and so our goal here is to figure out a way to take that information and surface it to you so that AE could tell you that it’s using 100% CPU and maybe you should get a faster CPU. Or AE is running out of RAM about 3/4 of the way through a render. Maybe you should get more RAM, and then that will let the render complete, and also be faster.

So, we’re going to have all of these key points of data, and what we’re now trying to figure out is how do we present that in a way that a user can take action on that. System throughput, network speed, disk speed, all of those things we can get access to.

But then you know there’s that additional step of ‘How do we tell users what’s happening?’ so they can make a good choice.

CHRIS: You’ve mentioned a few times about the potential for After Effects to do stuff in the background. In terms of my personal workflows, I’m a huge fan of pre-rendering, I pre-render a lot, whenever I can. I use BG renderer and I tend to do it manually. I do sometimes use proxies, but I often find myself doing it manually because I have to say I don’t find the proxy system always intuitive, and it’s a bit limited. So this is an example of an area where performance isn’t a specific hardware or engineering challenge, it’s more of a workflow tied to the user interface.

From Adobe’s perspective, how do you separate performance feature requests that need engineering solutions to those that are actually a user interface issue, trying to make something easier for the user?

SEAN: It is the crux of many conversations every week, which is what are we prioritizing, how do we prioritize it, who we prioritizing for? Some of it’s just fundamental architecture and engineering.

For example, if we know that that pre-comp is slow and you’re working on something else in AE, and that pre-comp is not being touched, we could go and render that in the background. At least get it to the disk cache for you, and so the next time you go to playback, that’s already done. You don’t have to think about proxying it or pre rendering , it’s already down on disk and it’s usable.

That’s one example of the types of things we’re trying to now think about, about how we can do that, something we haven’t been able to do in the past.

The workflow situation where we AE detects that this comp is complex, but we see layers 11 through 50 could probably be made faster. Do you want us to do that for you? That could be something else that we start to think about. It’s going to take time to do that render, but maybe you’re OK with that and AE spins that off in the background. You continue to work and it’s just ready when it’s ready.

So yeah, those are things we definitely want to start to think about taking advantage of.

CHRIS: One thing I haven’t mentioned is the disk cache. I’ve got a high speed NVMe disk cache, but is using a disk cache a bit like using the older Render Multiple Frames Simultaneously feature, where if it’s too big or too small then rendering ends up slower than it would be without it? Or is it always a good thing?

SEAN: At this point it’s always a good thing. If we do have to start clearing out the disk cache, that’s going to slow things down to some degree. But if it’s on a fast drive and it’s large, that’s great, yeah.

Honestly, in a lot of our internal testing that we do right now, we turn the disk cache off so that we’re not having to purge the disk all the time for our tests. It’s funny when I turn it back on I’m like, oh, this is even faster! It’s one of those things where you stop using the disk cache and you just get used to it, and then you turn it on and it’s like, oh it’s actually better.

One of the things we’re trying to talk through internally, just hypothetically, is what would happen if we didn’t have a RAM cache? If we saw that you had an NVMe drive and it was always fast enough to get frames from the disk up into the display pipeline, do we need a RAM cache? Because the ram cache has that sort of issue where if you can run out of RAM cache, then you can’t cache the entire composition.

But if we can fit everything on the disk, and if we can get it off the disk fast enough, then do we need it in RAM? That could be a user preference one day or something like that, where we’re always just writing directly to the disk cache and reading from it. The disk cache is an interesting thing, and it’s probably got more potential value than we’re using it for right now, it’s probably one of the issues that we need to deal with.

When you think about what’s going on in the gaming world, what Xbox and PlayStation have been able to do in terms of streaming frames, or loading content off the SSD fast enough to get it into memory and rendered, then we should be able to start thinking about taking advantage of those techniques too.

CHRIS: I know that when people start talking about performance, for some of them it just means a hardware recommendation. I assume Adobe is hardware agnostic, but are there technical differences between, say Intel and AMD which the end user may or may not be aware of?

SEAN: We’ve tried to be hardware agnostic, and often will defer optimizing some bit of code because we don’t want to be faster on only a particular piece of hardware. The Apple Silicon hardware is something we’re going to spend more time on, as we make After Effects work on it, and making it work with the systems that are on that chip – whether it’s machine learning or the neural network or video encoding or anything like that, we want to take advantage of that hardware when it’s there.

It’s been more of – After Effects is a generic solution that needs to work on Mac and Windows, all the sorts of flavors on each OS, and we want it to be consistent. So, we haven’t spent the time to do that – to optimize for specific hardware. That said, we are starting to shift. I mentioned this on the Puget Systems interview, but the AMD Threadripper CPUs have a different caching structure to Intels. Every four or eight cores has a different cache, whereas on the Intel side it’s one cache shared across all of those CPUs. Both of the architectures have benefits and drawbacks. But if we can optimize when we’re on an AMD Threadripper and we’re working on frames 1 through 8, and that’s all going to be on one CPU block, cores 1 through 8, we can put all of the data into that cache and not spread it around.

It’s probably a mental and paradigm shift that we’re starting to work through to be like, OK, you know an Afterburner card in a Mac – how do we take advantage of that so that we get Prores decodes and encodes faster? These sorts of things we’re now starting to think more and more about.

After Effects is a generic solution that needs to work on Mac and Windows, all the sorts of flavors on each OS, and we want it to be consistent.

CHRIS: It’s obviously been a huge undertaking just to get the multi-frame rendering implemented. Have you looked beyond that to things like overhauling watch folders and implementing a built-in Adobe render farm?

SEAN: I haven’t, there might be other people who are thinking about it, but I certainly haven’t at this point now.

CHRIS: Because there’s a point at which a render farm is a next logical step. You can give people hardware advice for a specific system, and you can talk about GPUs and so on, but there’s a point at which you’ve spent as much money as you can to get performance out of one box. The next step is to just build a render farm, and obviously there are people who cater for that, like Thinkbox with Deadline and so on. But I also do a lot of regular work for a studio that still relies on the old After Effects watch folders and that is a bit painful. I don’t think watch folders have been touched for 25 years.

SEAN: Sounds about right. I’m not going to say people aren’t thinking about it, whether it’s Adobe Media Encoder and thinking about how that extends.

An obvious extension is rendering in an AWS or an Azure cluster or something like that. Imagine if you could host licenses of After Effects up there, and you could split your project and then have multi-frame rendering on top of that. Could you take a 12 minute single frame render, throw it to the cloud and have that render in 20 seconds? I think that’s a bit of a dream for me to see that happen one day. But I can’t confirm anything is happening right now.

Right now, we’re going to finish what we’ve started with Multi-Frame Rendering.

CHRIS: What actually is the difference between AE, AE without a GUI, and aerender?

(NB. This might seem like an unusual question. But for 3rd party developers who’ve written tools to assist with After Effects rendering, including BG Renderer, Render Garden and Render Boss, there are different technical options for background rendering.)

SEAN: There’s actually 3, maybe 4 different versions of the After Effects renderer. There’s After Effects that you run that has a UI. There is a way to run that version of After Effects where the UI doesn’t appear. Then there’s another thing called aerender, which is what people generally use to render from the command line. Internally we have another thing called AE Command, which may one day replace aerender but we haven’t had time to finish it. Then there is something we call AElib, which is basically the communication between Premiere Pro and After Effects when you’re doing motion graphics template sharing.

All of those run in various ways, they all end up calling the same code, but there are various entry points.

CHRIS: I think one of the big advantages of aerender is that it very explicitly says on the Adobe website that it doesn’t require an additional license. Once you’ve got your CC subscription for After Effects, it’s very generous, you can run as many render farm nodes as you want, but I was wondering whether running the GUI less version of AE has that same freedom or whether you’re using up one of your two licenses.

SEAN: You’ll still be using your licenses there it’s just not presenting the UI.

CHRIS: Just looking back over my notes, one of the big things in my series was talking about bottlenecks and throughput and bandwidth. Probably bandwidth because that’s what After Effects does. It’s streaming, you know “all of the pixels all the time…”

SEAN: All the pixels all the time, yeah.

CHRIS: Does that reliance on bandwidth translate to some hardware you can add to your system? Like if you’re planning on building an Intel system, should you wait a month for a PCI 4 motherboard? Is that gonna help? Personally, I always advocate for SSD’s and fast NVMe drives. Do you have anything to add just on the topic of bandwidth and After Effects?

(NB. At the time I interviewed Sean, Intel motherboards with PCIe v4 hadn’t been released yet. It’s possible that by the time you’re reading this, Intel PCIe v4 motherboards have become available – Chris)

SEAN: Yes, there are use cases right now where it is possible to saturate the PCI bus, that’s PCI version 3. PCI 4 is a little bit harder to saturate, but as we add more and more threads, and if that involves transferring data to the GPU to run certain effects processing, that bus is certainly going to be more and more busy. I don’t think we’ve got a situation where we’ve been able to saturate a PCI 4 bus at this point.

So that would be one piece of advice- if you are looking to buy a system in the next six months, I would say hold on for a couple more months. If you can wait for the point where you can test the shipping version of multi-frame rendering, you can see exactly what its demands are.

We’re working with Puget Systems, and the Dells and HP’s and other OEMs to update their configurations and recommended specs. In the past it has been an Intel CPU with 8 gig of RAM, maybe 2 gig of GPU VRAM. That’s no longer going to be enough to really take advantage of multi-frame rendering to the extent you want to. Soon you’re going to be looking at 16 to 32 cores, and you’re going to be looking at 64, 128 gig of RAM, and you’re going to want to get as much video RAM as you possibly can.

Puget Systems, makers of high-end workstations that are specifically tailored for graphics professionals, interviewed Sean about Multi-Frame Rendering. That’s Sean on the right. You can watch the interview over at YouTube.

We’re going to come out with some guidelines, such as for this spec machine, here’s the performance improvement we saw. Then you can make a choice as a consumer to say, OK, well, I’ve got $3000 to spend. This is going to be the best machine that we can come up with. Or if I’ve got $10,000, here’s what we can go with.

The CPU clock speed is still going to be super important. A little less important than it has been in the past, because we can have more cores going, but at the same time it is going to have to be some sort of balance there.

CHRIS: When I was interviewing the third-party software developers, a few of them had some great quotes. One of them was talking about how sometimes software development just takes as long as it takes. He mentioned a quote “It takes nine months to have a baby, no matter how many women you’ve assigned.”

SEAN: The mythical man month!

CHRIS: Yes! What parts of After Effects, specifically talking from your experience at Adobe, just takes as long as it takes? i.e. What can’t be sped up by just hiring a bunch of programmers?

SEAN: I think one of the things that people lose sight on is After Effects being part of Adobe, and being part of the Creative Cloud Suite. And so there are a lot of things that a lot of customers probably don’t care about that we still have to do. You know the home screen? That, for instance, is a thing that every Creative Cloud product has. Would we, if we were After Effects and only After Effects, have spent time building a home screen? I don’t know and it’s hard to say, but that’s an initiative that is part of the Creative Cloud suite. There are things as you plug into Creative Cloud, whether it’s language support or it’s installation or versioning or synchronizing preferences or talking to back end systems. And there’s a lot of stuff that no-one has any clue that we have to do, and we have to spend a lot of time doing that.

So that’s one thing that sort of waylays us from fancy features that really make a difference.

Another piece is – Yeah, we’re working in an organization with 400 other engineers, and so when you make a change, if it’s in a shared piece of code, you might be affecting Premiere Pro and Audition and Prelude and whatever other products are in the codebase and so you, as the developer, using our entire infrastructure, have to spin up builds of all of those products and make sure that everything is still working with your changes. Even changing one line of code could cause you four or five hours of building different products, and then testing those products.

We have moved to a model where we don’t check in code until our testers have run that code and tested the product. So, it might take a day for someone to implement something, and then we might spend a week testing it and then it gets checked in. Then it goes into the beta process and then we have, days to months where it’s in our community and we’re getting feedback on it. We might have to iterate multiple times.

So, it’s just being part of a larger organization, and one with a 27-year-old code base. Now you know there is legacy code in there. When people first come to work on After Effects, it may be code that no one’s ever seen in their entire coding career because we’re going back that far. And I have had the privilege of touching code that was written in 1995 and being like – oops, I don’t want to break this. I know that this code is used throughout the app, and you’ve just got to be very careful as you touch it.

CHRIS: OK, so when I wrote up a list of notes for our interview, I had two questions which I thought you probably get asked a lot. The first one, which I know many users have asked, is ‘why can’t After Effects use the Premiere engine?’, and you’ve answered that in great detail, thanks. (see part 17 – Chris)

So I think it’s time to finish off with the second one. And while this might not be as common as the Premiere question, I’ll admit I’ve spent a very long time pondering this, and I know I’m not the only After Effects user to do so.

Has it ever been discussed to just draw a line under After Effects as it is – freezing it and calling is something like After Effects Classic. Then starting again from scratch, rewriting it from the ground up and calling it After Effects Pro?

SEAN: I mean, has there been a conversation like that? Yeah, absolutely. I believe you’ve asked other people how long would it take to rewrite After Effects if we were going to start again. We internally refer to that as “What is After Effects.Next?”

But we also ask ourselves: if we decided to do that, then what would be the first three things we would go on to build, and would they look any different than they look today?

And that’s a question that we haven’t found a strong enough answer to go off and do it yet.

We’ve talked about things like – What would it look like in the mobile space? Is there a reason to have After Effects running on a mobile device? It’s hard to know. That’s a topic that we want to talk about, but we’re not sure that people want to make motion graphics at pro quality levels sitting on an iPad. Maybe they do and we just don’t know it yet.

Or is there a simplified version of After Effects? I’m not going to say “After Effects Express” or something like that, but is there a simplified version to make that easier? Maybe, but should we just simplify the UI and keep the current version of After Effects and just make it easier to start with for a user? Maybe that’s the right approach to that option.

So yes, conversations like that happen every time we have a manager offsite for After Effects, but we don’t have a compelling reason to do it right now.

One recent reason for asking this question though occurred as we have thought about Apple Silicon. Do we just port After Effects as it runs on the Mac today to work on M1/Apple Silicon natively? Or are there things that we’ve held onto from a legacy standpoint that we should end of life? Then we could make the Apple Silicon version a little bit more streamlined… but the answer is pretty much no. We’re going to port it, that’s what people expect After Effects to do, and as much as we can make work, we will make work.

“What’s after After Effects” is an older article of mine, looking at animation features and UI issues

CHRIS: I’ve spent a lot of time thinking about this sort of stuff, you know, what happens after After Effects?

First of all, I see After Effects being defined by the fact that it’s timeline based and layer based, so for me that’s what After Effects est. It’s never going to be a node based compositor. Anyone who asks for nodes, you just say go use Nuke, or Fusion. There’s no reason to make After Effects node based.

Then you ask something like – OK, so we have a timeline, because After Effects is timeline based, and we have layers, because After Effects uses layers. After Effects EST layers in a timeline. But how do you mix 2D and 3D layers in a timeline? Because at the moment I hate binning. I think that it’s quirky. It takes years to understand. So mixing 2D and 3D layers in a timeline is a fundamental UI problem to be solved.

(NB. If you haven’t heard the term before, “binning” refers to the way groups of 3D layers are rendered seperately and combined with 2D layers – Chris)

And then you’ve got annoying inconsistencies like the coordinate systems. This is a real pain, especially when you get into script writing. Layers are anchored from their top left, with Y inverted. But then you have shape layers, which are centered around 0. But then you also have 3D layers, which default to being centered around composition space. So you have three different coordinate systems in the one app.

So I just sit there and think – a lot of the big problems with After Effects are actually to do with the user interface. I think if anyone was going to rewrite After Effects, the difficult issue isn’t GPU rendering, or tile-based renderers, it’s not talking about multi-core support, or Open CL versus CUDA or something like that. Those problems have logical solutions.

The hard part is what do you actually want the interface to look like? Like how do you mix 2D and 3D layers, while retaining the core identity of what After Effects est? Because if you make everything 3D then the timeline/layer system breaks, and all of a sudden After Effects is just another 3D app. So then the problem becomes – how do you make After Effects “After Effects”, without it becoming a Cinema 4D clone?

But then if you don’t make everything 3D, and you keep the distinction between 2D and 3D layers, then how do you work with them, differentiate them, layer them with blending modes? And I don’t have answers for that. I guess if I did I’d be a UI designer, and I’d be a software designer.

It’s the same problem with expressions. How do you make expressions easy for a user? Because even now something as simple as keyframing the amount of wiggle, well you still need to know what you’re doing. It shouldn’t be as hard as it is.

So I just think that the biggest problems and the hardest part to change is the user interface. I think if anyone ever wants to replace After Effects or rewrite After Effects from scratch, you don’t worry about the technical side of it, you’ve got to solve interface problems. No one has done it yet, I mean.

I’m just commenting on this because there are so many users out there who just want GPU rendering, or are saying hey, why don’t Adobe rewrite it from scratch. But my opinion is that I don’t think that GPU rendering is the hard part. There’s other stuff to fix first. Stuff like rigging and physics. How do you mix forward kinematics with inverse kinematics – you want a character to pick up a piece of text and hand it off to another character? Or mixing physics with keyframes. Or how do you toggle parenting on and off. How do you mix expressions and keyframes – how do you make it easy, you know?

SEAN: Yeah, After Effects for a long time has been built by engineers and not by designers. But over the last couple of years, we have grown our design team from basically half a person to 3 ½ people.

The problem space of how you mix 2D and 3D is something that’s actually being deeply looked at right now, and that may fundamentally change some of the way we think about binning, or not binning things, and those sorts of questions I think are important for you to keep raising because we’re listening to that. There is stuff happening, it’s early. It’s hard to talk about too much right now because we’re still trying to figure out what that all means.

But you know, the UI is certainly something… we’re conscious of it being too hard for beginners. It’s still too hard for a lot of people who know what they’re doing. There’s a lot of stuff that’s just sort of hidden away, and we need to stop thinking like engineers and start thinking like designers and users of the product to make this the best possible thing we can.

My response to all this is that you’re not wrong on any of it, and these are areas that we want to address.

CHRIS: Brilliant. Thanks so much for your time and willingness to talk about everything.

Creative Cloud subscribers can download and test out multi-frame rendering RIGHT NOW!

Something I think about a lot is what users expect when they buy new hardware. If you spend $1,000 to upgrade your GPU, then what do you expect from render times? Rendering twice as fast, 25% faster, more or less? Common benchmarks for 3D games can often show relatively modest frame rate increases between old and new GPUs, and CPUs can be even less. From this perspective, the ability to have After Effects render a composition twice as fast just by downloading a Beta version – for free – is incredibly exciting. As as we’ve just heard, this is only the beginning. As the After Effects Performance Team continue their work, the improvements in performance that we’ll see from software updates could well outpace any improvements that rely on expensive hardware.

Looking for the Beta to try for yourselves? Look in the Creative Cloud app for the test-tube icon. That’s the Beta symbol.

I hope that readers who’ve made it this far through the series are grateful to Sean, and the After Effects team, for their help in this series on “After Effects and Performance”.

Overall, it’s clear that After Effects is in good hands and judging from the huge progress that the Performance team have made in only 18 months, we have a lot to look forward to in the future.

This is part 18 in a long-running series on After Effects and Performance. Have you read the others? They’re really good and really long too:

Part 2: What After Effects actually does

Part 3: It’s numbers, all the way down

Part 8: Multiprocessing (kinda, sorta)

Part 17: Interview with Sean Jenkin, Part 1

And of course, if you liked this series then I have over ten years worth of After Effects articles to go through. Some of them are really long too!

Shop with

Filmtools

Filmmakers go-to destination for pre-production, production & post production equipment!


Planetary Atmospheres

Earth is not the only world with an atmosphere. All of the planets - and even a few moons - in our solar system have atmospheres. Some have clouds, wind, rain and powerful storms. Recently scientists have also begun to get glimpses of atmospheres of planets in other solar systems.

Each of the planets in our solar system has an uniquely structured atmosphere. The atmosphere of Mercury is extremely thin and is not very different from the vacuum of space. All four giant planets in our solar system - Jupiter, Saturn, Uranus and Neptune - have very thick, deep atmospheres. The smaller, rocky planets - Earth, Venus and Mars - have much thinner atmospheres hovering above their solid surfaces. The atmospheres on moons in our solar sytem are typically quite thin. Saturn's moon Titan is an exception - air pressure at the surface of Titan is higher than on Earth! Of the five officially recognized dwarf planets, Pluto has a thin, seasonal atmosphere containing nitrogen, methane and carbon monoxide, and Ceres may have an extremely thin atmosphere of water vapor. But only Earth's atmosphere has the layered structure that allows enough light energy to enter and be trapped for warmth, but also shields us from too much harmful radiation. This important balance is necessary to maintain life on Earth.