Fracturation massive en temps réel par décomposition convexe volumétrique approximative

De nouvelles techniques de fracturation ont déjà été montrées à la précédente GDC, mais l’équipe PhysX continue, avec une nouvelle démonstration technique montrant des algorithmes de fracturation en temps réel et de simulation de solides, une amélioration de ce qui a été proposé à la GDC 2012. Une article plus technique sera publié dès qu’il est accepté par le SIGGRAPH.

Source : http://physxinfo.com/news/11035/gdc-2013-real-time-dynamic-fracture-with-volumetric-approximate-convex-decompositions/.

Autodesk MassFX supportera les particules

Cette année, un nouveau module est ajouté à MassFX, après mRigids et mCloth : mParticles, un système de simulation de particules, qui sera intégré à 3ds Max 2014. Cette solution est générique et peut être utilisée pour simuler le comportement de divers types d’objets : des particules, des tissus ou des fluides (en ce compris la fumée).

Il s’agit d’une version modifiée d’un plug-in distribué par Orbaz, Particle Flow Tools: Box #2.

Sources : http://physxinfo.com/news/11017/3ds-max-2014-further-improves-massfx-with-mparticles-module/ et http://physxinfo.com/wiki/MassFX.
Voir aussi : http://www.orbaz.com/products/particleflow/box2/ et http://area.autodesk.com/blogs/maxstation/n184-what039s-new-in-3ds-max-2014.

Sortie de Qt Creator 2.7

Un mois et demi après la sortie de Qt Creator 2.7 beta, voici la version finale de l’EDI Qt, avec (comme à l’habitude) une série de nouvelles fonctionnalités, comme un meilleur support de C++11 (de nouveaux mots-clés, la gestion des fermetures – closures – améliorée ; de plus, il considère par défaut les compilateurs comme C++11 s’il ne les reconnaît pas) et des améliorations sur la refactorisation du code (ajout d’accesseurs en lecture et écriture, notamment).

Avec la relativement récente sortie de Qt 5 et de Qt Quick 2, le support de cette technologie d’interfaces déclaratives a été grandement améliorée, notamment dans l’éditeur de code ; le mode designer graphique fonctionne également avec cette version de Qt Quick. Les paquets Qt Creator actuellement disponibles sont compilés avec Qt 4 et ne supportent pas Qt Quick 2 ; le plus simple est d’attendre Qt 5.0.2, qui sera fourni avec la dernière version de Qt Creator compilée avec Qt 5.

BlackBerry 10 se distingue fortement de ses prédécesseurs par la mise en avant d’une API native, Cascades, au lieu d’une API Java. Cette nouvelle API est construite par-dessus Qt (4 pour le moment, 5 bientôt). Il était donc normal d’attendre de la part de l’EDI un certain support. Notamment, une nouvelle page de paramètres propose de générer toutes les informations nécessaires pour les kits depuis un chemin de NDK, tout en aidant à l’enregistrement et à la génération de certificats développeurs et des autres fichiers requis pour déployer une application sur un périphérique BlackBerry. Un éditeur de fichiers BAR (utilisé pour l’apparence et le comportement des applications) fait également son apparition, avec un mode graphique et un mode XML pur.

QMake est l’outil gérant la compilation avec Qt depuis un bon bout de temps. Son successeur, QBS (Qt Building System), fait apparition dans Qt Creator, avec un support expérimental (à activer manuellement, en chargeant le plug-in associé). Notamment, toutes les sources de Qt Creator proposent tant des fichiers de projet pour QMake que pour QBS.

L’EDI est disponible sur la page des téléchargements du Qt Project.

Les prochains processeurs NVIDIA

Le CEO de NVIDIA, Jen-Hsun Huang, après avoir annoncé quelques détails architecturaux sur le futur des Tegra, a ébauché un futur où les technologies de la marque se rejoignent (mobile, desktop et superordinateurs). L’année dernière, l’architecture Kepler pour les GPU a été mise sur le marché, utilisée notamment pour des superordinateurs bien plus efficaces, énergétiquement parlant (voir le top 500 de novembre 2012).

La prochaine génération de GPU, Maxwell, offrira une mémoire virtuelle unifiée, donnant accès à la mémoire des GPU pour les CPU – et vice-versa. La suivante, Volta, tentera d’optimiser les accès à la mémoire sur le GPU, en plaçant les modules de mémoire juste au-dessus des puces de calcul (NVIDIA parle de mémoire empilée – « stacked DRAM ») ; les ingénieurs estiment une vitesse d’un téraoctet par seconde, soit cinquante disques Blu-Ray par seconde.

Planning prévisionnel pour les GPU NVIDIA.

Côté mobile, Logan mixera un processeur Tegra semblable aux actuels avec un GPU Kepler, sur la même puce, dans les mêmes dimensions qu’un Tegra actuel. Parker ajoutera le support d’ARM 64 bits, en plus de passer à un GPU Maxwell.

Planning prévisionnel pour les processeurs NVIDIA Tegra.

Source : http://blogs.nvidia.com/2013/03/nvidia-ceo-updates-nvidias-roadmap/

Kayla : NVIDIA Tegra et GPU Kepler

NVIDIA, producteur historique de cartes graphiques, s’était récemment lancé dans les processeurs ARM, utilisés dans certains appareils mobiles (avec un GPU intégré). Une grande révolution est venue ces dernières années dans le secteur des GPU : leur utilisation pour des calculs non graphiques, fournissant même la plus grosse partie de la puissance de calcul du superordinateur le plus rapide du moment (voir le top 500 de novembre 2012). Il semblait logique de vouloir combiner ces deux aspects – ce sera bientôt chose faite, avec la plateforme Kayla.

Cette plateforme est constituée d’un processeur mobile Tegra avec un GPU NVIDIA (basé sur l’architecture Kepler), pour une puissance de calcul encore jamais atteinte sur mobile. Parmi les technologies supportées, on note CUDA 5 et OpenGL 4.3. De manière très physique, cet ensemble n’est pas particulièrement compact (il convient plus pour des tablettes que pour des smartphones), mais donne un avant-goût des possibilités de Logan, la prochaine génération de processeurs Tegra (qui sera bien plus compacte que Kayla).

Jen-Hsun Huang, CEO de NVIDIA, présentant Kayla.

Avec le support d’OpenGL 4.3, on peut s’attendre à des effets graphiques bien plus avancés que ce que l’on trouve actuellement sur les applications mobiles (avec le support de la tessellation, notamment). CUDA 5 est une plateforme très avancée de GPGPU : on pourrait s’attendre à avoir des applications de reconnaissance (faciale, d’objets, etc.) très rapides et efficaces sur des téléphones. Ainsi, les performances de ces appareils deviennent comparables avec les performances d’un ordinateur plus classique.

Le portage de code ne devrait pas être d’une complexité énorme. NAMD, un logiciel de simulation de dynamique moléculaire, a été porté en deux jours sur cette nouvelle plateforme ; le logiciel de lancer de rayons de NVIDIA, OptiX, a, lui, été porté en une journée à peine.

Source : http://blogs.nvidia.com/2013/03/gpu-computing-comes-to-tegra/

NVIDIA CUDA supporte Python

Python, sacré langage de l’année 2010 par TIOBE, est désormais supporté par NVIDIA CUDA, la technologie de GPGPU (calcul général sur processeur graphique) de NVIDIA. Auparavant, seuls C, C++ et Fortran étaient supportés. Python est un langage bien plus dynamique, flexible, fournissant en général une meilleure productivité (il n’est généralement pas compilé) et loin d’être en perte de vitesse, en plus d’être facile à apprendre.

Ce support émane de NumbaPro, un compilateur Python, basé sur le compilateur libre (sous licence type BSD) LLVM, développé par la société Continuum Analytics. Il a été rendu possible grâce au passage sur cette base de code du compilateur principal de CUDA, NVCC, de plus sous licence libre.

Au vu des fonctionnalités avancées de LLVM, comme la compilation à la volée, les performances ne sont pas sacrifiées. Selon Vijay Pande, professeur à l’université de Stanford, ce support permettra à son équipe de garder la productivité de Python au-delà des prototypes, au lieu de réimplémenter les algorithmes en C ou C++.

Selon Travis Oliphant, cofondateur de Continuum Analytics,

Hundreds of thousands of Python programmers will now be able to leverage GPU accelerators to improve performance on their applications. With NumbaPro, programmers have the best of both worlds: they can take advantage of the flexibility and high productivity of Python with the high performance of NVIDIA GPUs.

Source : http://www.readability.com/read?url=http://nvidianews.nvidia.com/Releases/GPU-Accelerated-Computing-Reaches-Next-Generation-of-Programmers-With-Python-Support-of-NVIDIA-CUDA-950.aspx.

[Android] Avancée du support d’Android dans Qt 5.1

Le portage de Qt sur Android n’est pas neuf : en janvier 2010, un système graphique fonctionnel était rendu public par BogDan Vatra.

Un peu plus d’un an plus tard, en février 2011, Necessitas sortait au grand jour, avec la première version de Qt utilisable sur Android : https://groups.google.com/forum/#!msg/android-qt/IJ7e98XO7Io/_ti9asJPEsAJ. Fin 2012, le projet Necessitas quittait le giron KDE pour passer au Qt Project, avec intégration dans Qt 5 prévue : http://blog.qt.digia.com/blog/2012/11/08/necessitas-android-port-contributed-to-the-qt-project/.

Début 2013, une branche de développement était créée sur le dépôt Git de Qt, qui vient d’être intégrée au tronc commun : le support d’Android sera bel et bien disponible avec Qt 5.1.

Cette première version s’oriente plus vers les développeurs, pour qu’ils lancent et testent de manière aussi facile que possible leurs applications sur Android. Un support plus finalisé sera disponible pour Qt 5.2, avec plus de possibilités pour le déploiement et le support de plus d’API Android.

En pratique ? Une première démo Qt 5 sur un Nexus 4, un Asus Transformer Pad TF300T et un Nexus 7 ; elle montre un grand nombre d’effets graphiques de Qt Quick 2, dont les shaders, les particules, etc., à soixante images par seconde.

L’API de lecteur multimédia de Qt Multimedia est aussi supportée en QML, ici avec un shader par-dessus.

Cette version de Qt supporte aussi le multitouch, notamment utile pour du dessin à la main. Cette vidéo montre aussi les menus natifs.

Qt 5 utilise l’API Android en version 10 (soit Android 2.3.3), c’est-à-dire qu’il est utilisable sur un très grand nombre de périphériques (selon certaines statistiques, cela concerne à peu près tous les périphériques : http://www.developpez.com/actu/52541/Android-4-0-devient-plus-populaire-que-Gingerbread-qui-a-la-peau-dure-Jelly-Bean-enregistre-une-forte-adoption/). Ici, sur un Huawei Y100 :

Qu’est-ce qui est actuellement supporté ? Les applications Qt Widgets et Qt Quick, le lecteur multimédia QML de Qt Multimedia, les capteurs les plus utilisés dans Qt Sensors, les fonctionnalités multiplateformes de Qt (comme les contrôles Qt Quick), le développement et le déploiement d’applications dans Qt Creator 2.7.

D’autres choses sont prévues, comme la distribution de Qt par Ministro (afin de partager les bibliothèques dynamiques entre les applications), ce qui sera la méthode la plus recommandée pour Qt 5.1. Tous les détails sont disponibles sur le wiki du projet (http://qt-project.org/wiki/Qt5ForAndroid).

Source : http://blog.qt.digia.com/blog/2013/03/13/preview-of-qt-5-for-android/.

[iOS] Avancée du support d’iOS dans Qt 5.1

De tout go, Digia annonce que Qt 5.2 supportera iOS, soit vers la fin 2013. Cependant, tous les détails ne sont pas encore décidés (comme ce qui concerne les restriction sur l’App Store ou le support de parties plus anciennes du code de Qt). Qt 5.1, en tout cas, contiendra une première version de ce support, le code a été intégré vendredi dernier.

Tout le développement et le déploiement passe par Xcode. Actuellement, la manière de procéder est la création d’un fichier de projet .pro, qui est exporté en un fichier de projet Xcode par QMake (et réexporté à chaque modification), ce dernier étant alors utilisé dans Xcode. Toute l’édition du code peut évidemment se faire en dehors de cet EDI.

Le style Mac de Qt pour plateformes desktop utilise l’API HITheme d’OS X pour l’affichage d’éléments natifs à l’écran. Cependant, cette API n’a pas d’équivalent sur iOS, créer une classe QiOSStyle comme l’actuelle QMacStyle n’est donc pas possible. Les styles multiplateformes tels que le nouveau Fusion sont cependant disponibles. Tous les efforts sur le style des applications seront portés sur les contrôles intégrés dans Qt Quick 2.

Apple limite fortement les possibilités des applications sur iOS. Notamment, il n’est pas possible d’utiliser un compilateur de type JIT, tel que celui utilisé dans V8 – ce qui signifie qu’il n’y aura pas de Qt Quick 2 sur iOS pour le moment. Ce problème est bien connu et une solution est à l’étude.

Actuellement, déjà quelques modules fonctionnent correctement : les widgets, les graphics view, Qt Quick 1, OpenGL, les éléments tactiles et d’orientation.

Application Qt Quick 1 sur iPad.

Pour tester cette première ébauche, il est nécessaire d’avoir Xcode installé (avec les certificats et le périphérique configurés). Ensuite, cloner qtbase

git clone git://gitorious.org/qt/qtbase.git qtbase-ios
 cd qtbase-ios/

et le compiler (soit pour le périphérique, soit pour le simulateur).

./configure -xplatform unsupported/macx-ios-clang -developer-build -nomake examples -nomake tests -release [-sdk iphonesimulator]
 make

Récupérer une démo et l’ouvrir dans Xcode :

git clone git://github.com/msorvig/qt-ios-demo.git
 cd qt-ios-demo
 ../qtbase-ios/bin/qmake
 open qt-ios-demo.xcodeproj

Source : http://blog.qt.digia.com/blog/2013/03/05/qt-for-ios-preview/

PhysX 3 sera disponible sur la prochaine PlayStation 4

Peu après l’annonce de la PlayStation 4 par Sony, on apprend qu’une solution de moteur physique sera bien disponible de la part de NVIDIA pour cette nouvelle plateforme (à moins qu’un moteur d’intelligence artificielle ou d’animation soit bientôt annoncé, mais cela semble très peu probable). Ainsi, le PhysX SDK est d’ores et déjà disponible pour les développeurs enregistrés, selon des sources proches de l’industrie.

Une chose probablement très étonnante est que cette plateforme sera supportée… alors que tous les processeurs seront signés AMD, tant le CPU que le GPU. Ce dernier supporte bien évidemment des technologies de GPGPU, comme le montre une démo live, utilisant le moteur Havok et une accélération GPU d’une simulation d’un million de particules.

Du public a émergé une opinion : PhysX trouvera-t-il une place dans les consoles de prochaine génération et sera donc rapidement abandonné ? La page officielle de Sony sur la PlayStation 4 présentant les outils déjà disponibles pour la plateforme tend à prouver le contraire.

Il n’est pas encore sûr que l’accélération GPU sera disponible (peut-être partiellement ?) sur cette plateforme ; par contre, PhysX y sera et ne sera pas abandonné de si tôt.

Sources : http://www.scei.co.jp/ps4_tm/index.html et http://physxinfo.com/news/10531/nvidia-is-continuing-to-be-a-partner-for-physics-middleware-on-playstation-4/

Qt et Windows (Phone) 8

Windows 8 RT

Windows 8 est sorti récemment, avec une nouvelle plateforme de développement : le Windows Runtime. Le système fournit alors deux modes : classique, semblable à celui de Windows 7 (au menu Démarrer près) ; moderne, anciennement Metro, une interface prévue pour les tablettes et autres smartphones. Les applications pour ce deuxième mode sont construites avec une nouvelle API, Windows Runtime, très semblable à celle de Windows Phone 8.

Le travail de recherche autour de l’utilisation de Qt dans un contexte RT ont été lancées par Andrew Knight (Digia). Les résultats sont d’ores et déjà visibles dans la branche winrt du dépôt qtbase. Avec quelques modifications de Kamil TrzciÅ„ski et la sortie de Qt 5.0, il serait temps de faire décoller ce port de Qt, une manière de compléter l’offre multiplateforme du framework (déjà fournie en ce qui concerne les plateformes mobiles, avec des ports pour Android et iOS, les systèmes mobiles les plus répandus, capitalisant pas loin de nonante pour cent des smartphone vendus).

État du port

Ce port se focalise actuellement sur le cÅ“ur de Qt (le module Qt Core). Les widgets ne seront probablement pas supportés dans le futur proche, étant donné que les développeurs préfèrent dépenser leur énergie sur des manières plus adaptées à l’environnement RT de créer des interfaces graphiques (forcément plus dynamiques), comme Qt Quick.

De même, il est probable que l’élément WebView de QML sera implémenté sur le moteur IE 10, au lieu d’utiliser WebKit 2 (comme pour le reste de Qt). Cela pourrait amener quelques problèmes de compatibilité des applications (IE 10 n’utilisant pas le même moteur de rendu), cependant.

La première étape sera d’afficher de simples fenêtres à l’écran. Ensuite, il est prévu de porter ANGLE, afin d’obtenir le support d’OpenGL ES 2.0, requis pour QML 2.

Vu que le projet est encore actuellement dans ses premières étapes, il n’est pas prévu qu’il soit intégré pour Qt 5.1, plus probablement quelque chose pour Qt 5.2.

Un plug-in pour Qt Creator est aussi en cours de développement, mais il est bien moins avancé : https://gitorious.org/~aknight/qt-creator/aknights-qt-creator.

Windows Phone 8

La situation semble plus simple, puisque tous les modules essentiels de Qt compilent – malgré des fonctionnalités manquantes, à cause de la non-implémentation des détails spécifiques à la plateforme, cela fonctionne bien. En effet, les API disponibles à WinRT sont plus restreintes que celles disponibles sur Windows Phone 8. Notamment, tout le côté réseau doit être réimplémenté presque de zéro, Winsock2 n’étant pas disponible.

La compilation utilise Visual Studio 2012, avec la chaîne de compilation ARM et de nouvelles spécifications pour QMake côté Qt. La procédure complète est plus compliquée qu’une compilation croisée plus standard de Qt, plus expérimentale (c’est le moins qu’on puisse dire), à cause du manque de maturité du port : http://ayufan.eu/2013/02/qt5-and-windows-phone-8/.

Sources

http://blog.qt.digia.com/blog/2013/02/15/port-to-windows-runtime-kick-started/, http://ayufan.eu/2013/02/qt5-and-windows-phone-8/, http://qt-project.org/wiki/WinRT